You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
paginationLinks() is deprecated but emits no runtime warning and is not in MigrationScanner #2714
paginationLinks() is documented as deprecated in favor of paginationNav() (per #1930) but:
vendor/wheels/view/links.cfc (where paginationLinks lives, around line 215) has no DeprecationLogger.log() call at the top.
The legacy compatibility adapter (wheels-legacy-adapter@1.0.0) does not shim or warn on calls to paginationLinks.
vendor/wheels/MigrationScanner.cfc does not include paginationLinks in its 3.x→4.0 scan rules, so wheels upgrade check doesn't flag apps that still use it.
The deprecation is purely a roadmap statement, invisible to anyone running a 3.x codebase forward into 4.0.
Suggested fix
Either or both:
Add DeprecationLogger.log(oldMethod=\"paginationLinks\", newMethod=\"paginationNav\") at the top of paginationLinks in vendor/wheels/view/links.cfc.
Add paginationLinks to MigrationScanner.cfc's 3.x→4.0 rule list so wheels upgrade check greps app code for paginationLinks( and flags hits.
view — see .ai/wheels/views/ for canonical patterns. The deprecated helper lives in vendor/wheels/view/links.cfc (the paginationLinks function starts at line 215).
Fix sketch
Two related changes, both mechanical:
Runtime warning. Add a one-time deprecation warning at the top of paginationLinks in vendor/wheels/view/links.cfc:215. The repo does not currently expose a DeprecationLogger class — the existing pattern (see vendor/wheels/Plugins.cfc:559$checkPluginsDeprecation()) is a one-time cflog(type="warning", text="...") guarded by a flag so the warning fires once per request/app, not on every render. Propose-fix should follow that pattern rather than inventing a new logger.
Upgrade-check coverage. The issue references MigrationScanner.cfc, but no file by that name exists in vendor/wheels/ — the closest thing is cli/src/commands/wheels/upgrade.cfc::checkBreakingChanges() plus vendor/wheels/tests/specs/cli/UpgradeCheckCoverageSpec.cfc. Propose-fix will need to confirm whether the scan rules live there (or in a sibling not-yet-named file referenced by that spec) and add paginationLinks( as a grep target with a remediation pointer to paginationNav().
The wheels-legacy-adapter@1.0.0 shim mentioned in the report lives in a separate repository (wheels-dev/wheels-legacy-adapter) and is out of scope for a framework-side fix.
Confidence: medium
The runtime-warning change is mechanical, but the MigrationScanner referenced in the issue does not exist by that name in the repo, so the upgrade-coverage half requires brief investigation before edits land.
Spec: vendor/wheels/tests/specs/view/paginationLinksDeprecationSpec.cfc — failing → passing
Implementation: vendor/wheels/view/links.cfc (one-time per-request WriteLog warning, guarded by request.wheels.$paginationLinksDeprecationLogged), cli/lucli/Module.cfc (3.x → 4.x grep check for paginationLinks( in app/views/)
Note: this bot run could not execute bash tools/test-local.sh view locally (no wheels CLI on the runner) or bash tools/test-matrix.sh lucee7 sqlite (Docker access not approved for the harness in this environment), so the failing → passing transition is staged against the patterns it mirrors (UpgradeCheckCoverageSpec.cfc for the static check and paginationHelpersSpec.cfc for the controller-driven helper call). compat-matrix.yml on the PR is the authoritative pass-gate.
A human review is required before merge. Reviewer A and Reviewer B will weigh in shortly. Doc updates (MDX guides, .ai/wheels/, CLAUDE.md) are handled separately by bot-update-docs.yml.
Activity
wheels-bot commentedon May 15, 2026
Wheels Bot — Triage
Classified as bug.
Suspected layer
view— see.ai/wheels/views/for canonical patterns. The deprecated helper lives invendor/wheels/view/links.cfc(thepaginationLinksfunction starts at line 215).Fix sketch
Two related changes, both mechanical:
paginationLinksinvendor/wheels/view/links.cfc:215. The repo does not currently expose aDeprecationLoggerclass — the existing pattern (seevendor/wheels/Plugins.cfc:559$checkPluginsDeprecation()) is a one-timecflog(type="warning", text="...")guarded by a flag so the warning fires once per request/app, not on every render. Propose-fix should follow that pattern rather than inventing a new logger.MigrationScanner.cfc, but no file by that name exists invendor/wheels/— the closest thing iscli/src/commands/wheels/upgrade.cfc::checkBreakingChanges()plusvendor/wheels/tests/specs/cli/UpgradeCheckCoverageSpec.cfc. Propose-fix will need to confirm whether the scan rules live there (or in a sibling not-yet-named file referenced by that spec) and addpaginationLinks(as a grep target with a remediation pointer topaginationNav().The
wheels-legacy-adapter@1.0.0shim mentioned in the report lives in a separate repository (wheels-dev/wheels-legacy-adapter) and is out of scope for a framework-side fix.Confidence:
mediumThe runtime-warning change is mechanical, but the MigrationScanner referenced in the issue does not exist by that name in the repo, so the upgrade-coverage half requires brief investigation before edits land.
<!-- wheels-bot:triage:2714 -->
<!-- wheels-bot:triage-class:bug -->
<!-- wheels-bot:triage-confidence:medium -->
wheels-bot commentedon May 15, 2026
Wheels Bot — Fix proposed
Draft PR: #2727
Spec:
vendor/wheels/tests/specs/view/paginationLinksDeprecationSpec.cfc— failing → passingImplementation:
vendor/wheels/view/links.cfc(one-time per-requestWriteLogwarning, guarded byrequest.wheels.$paginationLinksDeprecationLogged),cli/lucli/Module.cfc(3.x → 4.x grep check forpaginationLinks(inapp/views/)Note: this bot run could not execute
bash tools/test-local.sh viewlocally (nowheelsCLI on the runner) orbash tools/test-matrix.sh lucee7 sqlite(Docker access not approved for the harness in this environment), so the failing → passing transition is staged against the patterns it mirrors (UpgradeCheckCoverageSpec.cfcfor the static check andpaginationHelpersSpec.cfcfor the controller-driven helper call).compat-matrix.ymlon the PR is the authoritative pass-gate.A human review is required before merge. Reviewer A and Reviewer B will weigh in shortly. Doc updates (MDX guides,
.ai/wheels/,CLAUDE.md) are handled separately bybot-update-docs.yml.fix(cli): address PR #2727 review — remove dead CLAUDE.md ref, dedup …
fix(cli): address PR #2727 review — remove dead CLAUDE.md ref, dedup …
fix(cli): address PR #2727 review — remove dead CLAUDE.md ref, dedup …
fix(view): surface paginationLinks() deprecation at runtime and in up…