Skip to content

UI revamp Phase 1: new sidebar (Home · Track · Receipts · Ask), icon rail, avatar menu, new URLs - #91

Open
coderconnoisseur wants to merge 10 commits into
ui-revamp/phase0-foundationsfrom
ui-revamp/phase1-shell
Open

coderconnoisseur wants to merge 10 commits into
ui-revamp/phase0-foundationsfrom
ui-revamp/phase1-shell

Conversation

@coderconnoisseur

Copy link
Copy Markdown
Owner

UI revamp Phase 1: the new app shell. Stacked on #89 (Phase 0), so this PR's base is ui-revamp/phase0-foundations. Retarget it to refactor once #89 merges.
Spec: docs/superpowers/specs/2026-10-20-ui-revamp-design.md §3. Plan: docs/superpowers/plans/2026-10-20-ui-revamp-phase1-shell.md.

What changes

  • Sidebar. It now reads Home · Track (Spending, Bills & subscriptions) · Receipts & statements (badge = receipts waiting for review) · Ask Lumen (Ctrl/⌘+K). The old "Workspace", "Compare", "Review (test)" and the tagline are gone.

  • Icon rail. Ctrl/⌘+B collapses the sidebar to a 56px strip of icons with tooltips. The choice is remembered and already applied on the first paint after a reload. Both shortcuts are ignored while you're typing.

  • Top-right avatar menu. Settings, API keys (/settings#keys) and Log out. The sidebar is now navigation only.

  • New URLs, with the old ones redirecting (307):

    Old New
    /dashboard /home
    /analytics (query string kept), /ai-analytics /spending
    /chatbot /ask
    /documents /receipts
    /import /receipts?tab=import
    /review /receipts?tab=review
    /upload /home?upload=1

    Middleware now protects all the new routes, including /settings. Until Phase 5, Spending, Bills and Receipts reuse the old pages' content.

  • The rest of the Ask Lumen shift bug. html, body { overflow-x: hidden } made <body> its own scroll container. On Ask Lumen that gave it a 15px scrollbar, which disappeared whenever a menu opened. It's now overflow-x: clip. This one-line change in globals.css is worth keeping even if this PR is reworked.

  • All app pages stay static on Vercel. The collapsed state is read on the client, because the sidebar only renders there, and the Receipts tabs read ?tab on the client.

Checks

npm run test:e2e: 31/31 pass (Chromium). A new e2e/fixtures.ts signIn(page) fakes a session and stubs the backend. The tests cover:

  • the 8 redirects and auth on the new routes
  • the sidebar items, the badge, and the badge updating after a review decision
  • the 56px rail with tooltips, and the rail already showing on the first render after a reload
  • Ctrl+K, and shortcuts ignored while typing
  • the avatar menu's actions, and that it doesn't move the page (24/24 on repeat)
  • log out, and <body> never being its own scroll container
  • the mobile sheet closing when you tap a link

tsc, lint and build are clean, and every app route is static (○).

Rulings worth a look

  • Log out keeps its existing behaviour and goes to the landing page (/), not /login.
  • /spending temporarily stacks the old Analytics and AI Insights pages. The calendar and reminders also appear on /bills.
  • Deferred minors are logged in the spec's §12 backlog: a count-only review endpoint, Ctrl+K with Caps Lock, an overflow-x: clip fallback for iOS Safari 15 and older, and a longer sidebar cookie.

Manual check (no backend here)

  • Phone width: open the sidebar sheet, tap a link, and check the sheet closes.
  • Firefox: open the avatar menu on Ask Lumen and check the chat doesn't move.

@vercel

vercel Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
lumen Ready Ready Preview Oct 20, 2026 5:32am UTC

This branch was successfully deployed

1 active deployment
Preview — 589c2a75 Deployed Oct 20, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant