Skip to content

feat(renderer): full-width shell topbar; retire per-view topbars and review dashboard#195

Merged
yyovil merged 2 commits into
aoagents:mainfrom
yyovil:feat/shell-topbar
Jun 12, 2026
Merged

feat(renderer): full-width shell topbar; retire per-view topbars and review dashboard#195
yyovil merged 2 commits into
aoagents:mainfrom
yyovil:feat/shell-topbar

Conversation

@yyovil

@yyovil yyovil commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator

What

The shell now owns a single full-width ShellTopbar (project crumb, status pill, history arrows, kanban/inspector toggles) with the sidebar pinned below it (top-14), replacing the per-view Topbar/DashboardTopbar pair. Board pages get a lightweight DashboardSubhead. The standalone review dashboard and its /review(s) routes are removed — review state lives on the PR board.

This is an approved divergence from the AO reference (which keeps a full-height sidebar with the header beside it), recorded in DESIGN.md: the sidebar's right border now stops at the header instead of cutting through the macOS traffic-light strip. Traffic lights are re-centered on the 56px header row (trafficLightPosition y=20).

Session-view hardening (rrp v4)

  • Inspector defaultSize is re-derived per panel mount: navigating orchestrator → worker keeps SessionView mounted while the inspector panel remounts, and the old once-per-view useState left the new panel desynced from the store. The imperative expand/collapse effect also drops hasInspector from its deps so it can't race rrp's panel registration ("Panel constraints not found for Panel inspector", which unwound the route). Supersedes fix(renderer): stabilize onResize ref to prevent rrp constraint race #193, which wrapped onResize in useCallback — that narrower fix doesn't cover the mount-commit race or the feedback loop below.
  • onResize writes back to the store only while the separator is actively dragged (data-separator="active"): rrp derives sizes from observed DOM layout, so the flex-grow collapse animation fired onResize with transient sizes, turning the imperative collapse into a feedback loop (the toggle button looked dead).
  • findProjectOrchestrator now skips terminated orchestrators, so the topbar offers Spawn instead of navigating into a dead zellij session's instant "[process exited]".
  • The inspector resize handle gets a visible 1px divider at rest (accent on hover/drag).
  • Playwright specs for the titlebar history arrows and the inspector toggle; test-results/ gitignored.

The notification-stub removal from #190 is carried into ShellTopbar (no dead bell button).

Testing

  • tsc --noEmit + vitest suite green (120 tests)
  • backend untouched

🤖 Generated with Claude Code

…review dashboard

The shell now owns a single full-width ShellTopbar (status pill, history
arrows, kanban/inspector toggles) with the sidebar pinned below it,
replacing the per-view Topbar/DashboardTopbar pair; board pages get a
lightweight DashboardSubhead. The standalone review dashboard and its
/review(s) routes are removed — review state lives on the PR board.
Approved divergence from the AO reference (full-height sidebar) recorded
in DESIGN.md; macOS traffic lights re-centered on the 56px header row.

Also hardens the session view around rrp v4:
- inspector defaultSize re-derived per panel mount (orchestrator → worker
  navigation kept SessionView mounted while the panel remounted), and the
  imperative expand/collapse effect no longer races panel registration
- onResize writes gated on data-separator="active" so flex-grow
  transition frames can't bounce the store (dead-looking toggle button)
- findProjectOrchestrator skips terminated orchestrators so the topbar
  offers Spawn instead of attaching to a dead zellij session
- inspector resize handle gets a visible 1px divider at rest
- playwright specs for history arrows + inspector toggle; test-results/
  gitignored

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yyovil has reached the 50-review limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yyovil has reached the 50-review limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@yyovil yyovil merged commit 09c16e5 into aoagents:main Jun 12, 2026
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