Skip to content

fix(view): drop top nav from welcome + error pages, debug footer is the only chrome#2406

Merged
bpamiri merged 1 commit into
developfrom
claude/header-bar-cleanup
May 1, 2026
Merged

fix(view): drop top nav from welcome + error pages, debug footer is the only chrome#2406
bpamiri merged 1 commit into
developfrom
claude/header-bar-cleanup

Conversation

@bpamiri

@bpamiri bpamiri commented May 1, 2026

Copy link
Copy Markdown
Collaborator

Summary

Wheels' dev-mode chrome had two competing surfaces on the welcome page (`/` after `wheels new`) and on error pages:

  1. Top nav bar — Wheels-branded, with Info/Routes/API/Guides/Tests/Migrator/Packages/Plugins tabs. Rendered via `_header.cfm` (welcome) and `_header_simple.cfm` (errors).
  2. Debug footer — fixed-position bar at the bottom of every dev-mode page. Rendered via `vendor/wheels/events/onrequestend/debug.cfm`.

Both led to the same set of internal admin pages, so they were redundant. Worse, the top bar shifted content while the debug bar (collapsible, fixed-bottom) is unobtrusive. Pick one — the debug footer.

The debug footer's "Links" panel already exposes every nav target the top bar offered (`wheelsInfo`, `wheelsRoutes`, `wheelsApiDocs`, `wheelsGuides`, `testbox`, `wheelsMigrator`, `wheelsPackageList`, `wheelsPlugins`), so removing the top nav loses no functionality.

Changes

  • `_header_simple.cfm` (used by error pages via `EventMethods.cfc:101`): drop the `<div class="ui pointing fluid eight item menu stackable">` nav block (lines 76–100, ~25 lines including all the SVG icons inline). Keep doctype, head, dark-theme styles, body open, and the content container div.

  • `congratulations.cfm` (welcome page): switch from `_header.cfm` / `_footer.cfm` (rich nav + GUI JavaScript the welcome page doesn't need) to the slimmed `_header_simple.cfm` / `_footer_simple.cfm`. Same dark theme + CSS variables the page already uses; no top nav.

What this PR doesn't change

  • Framework admin pages (`/wheels/info`, `/wheels/routes`, `/wheels/api`, `/wheels/guides`, `/wheels/migrator`, `/wheels/packages`, `/wheels/plugins`) still include the rich `_header.cfm`. Navigating between admin pages IS the point of those tools — the top nav is functional context there. Only the welcome page and error pages get the slimmed treatment.

  • The debug footer itself is unchanged. It's emitted from the user app's `Application.cfc` (template at `cli/lucli/templates/app/public/Application.cfc:245`) which calls `$includeAndOutput(template = "/wheels/events/onrequestend/debug.cfm")`. New apps generated by `wheels new` get this wiring automatically.

Verification

  • Local test suite: 3384 SQLite tests pass (zero regressions).
  • Welcome page rendered: 1MB output, top-nav block absent (`grep -c 'class="ui pointing fluid'` → 0), `wheels-hero` content present (11 occurrences). All hero copy / CLI guidance / route info still renders.
  • Visual baselines: `web/tests/visual-baselines/` covers the static doc sites only (api/blog/guides/landing/packages), not the framework's runtime pages. No visual-regression CI risk.

Test plan

  • Local SQLite suite green
  • Manual curl of welcome page confirms top nav gone, content intact
  • CI green
  • Manual verification on a fresh `wheels new` app — both welcome page and an intentional error page should show only the debug footer (no top nav), with the debug footer fully wired (links panel, params, timing, etc.)

🤖 Generated with Claude Code

…he only chrome

The framework dev-mode chrome had two competing surfaces showing on the
welcome page (`/` after `wheels new`) and on error pages: a Wheels-branded
top nav with Info/Routes/API/Guides/Tests/Migrator/Packages/Plugins tabs
(via `_header.cfm` and `_header_simple.cfm`), and a fixed-position debug
bar at the bottom of every dev-mode page (via
`vendor/wheels/events/onrequestend/debug.cfm`). Both led to the same
internal admin pages, so they were redundant — and the top bar shifted
content while the debug bar (collapsible, fixed-bottom) is unobtrusive.

Pick one chrome: the debug footer. The footer's "Links" panel already
exposes every nav target the top bar offered (`wheelsInfo`, `wheelsRoutes`,
`wheelsApiDocs`, `wheelsGuides`, `testbox`, `wheelsMigrator`,
`wheelsPackageList`, `wheelsPlugins`), so removing the top nav loses no
functionality.

Changes:

  - `_header_simple.cfm` (used by error pages via `EventMethods.cfc:101`):
    drop the `<div class="ui pointing fluid eight item menu stackable">`
    nav block. Keep doctype, head, dark-theme styles, body open, and the
    content container div.

  - `congratulations.cfm` (welcome page): switch from `_header.cfm` /
    `_footer.cfm` (which include the rich top nav and a bunch of GUI
    JavaScript the welcome page doesn't need) to the slimmed
    `_header_simple.cfm` / `_footer_simple.cfm`. Same dark theme + CSS
    variables the page already uses; no top nav.

The framework's own admin pages (`/wheels/info`, `/wheels/routes`, etc.)
still include the rich `_header.cfm` because navigating between admin
pages IS the point of those tools — the top nav is functional context
there. Only the welcome page and error pages get the slimmed treatment.

Visual baselines (`web/tests/visual-baselines/`) cover the static doc
sites only (api/blog/guides/landing/packages), not the framework's
runtime pages. So no visual-regression CI risk.

Tests: 3384 SQLite tests still pass (zero regressions). Manually verified
the welcome page renders without the top nav while preserving all
hero/CLI/guidance content.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bpamiri
bpamiri merged commit 6b430e1 into develop May 1, 2026
3 checks passed
@bpamiri
bpamiri deleted the claude/header-bar-cleanup branch May 1, 2026 20:27
bpamiri added a commit that referenced this pull request May 5, 2026
The top navigation in _header.cfm duplicated links already provided by
the debug bar emitted at onrequestend (System Info / Routes / API /
Guides / Migrator / Packages / Plugins). Drop the nav include to
eliminate the duplicate surface.

Public.cfc handlers <cfinclude> their views directly without going
through renderView, so request.wheels.showDebugInformation never
flipped on /wheels/info, /wheels/routes, etc. — the bar wouldn't
have appeared even after dropping the top nav. Opt into the bar
from both _header.cfm and _header_simple.cfm so any view using
either layout self-arms the debug footer.

Extends the pattern from #2406 (welcome + error pages) to the rest
of the dev-tools admin pages.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant