[Bugfix #522] Consolidate dashboard controls into single architect toolbar#523
Merged
waleedkadous merged 2 commits intomainfrom Feb 23, 2026
Merged
Conversation
…ct toolbar Move collapse/expand buttons from the app header into the architect terminal's toolbar overlay. All controls (refresh, scroll-to-bottom, connection status, collapse/expand) now live in one unified toolbar at the top-right of the architect terminal window. - Add toolbarExtra prop to Terminal component for injecting extra controls - Move collapse/expand buttons from App header into architect Terminal - Keep fallback expand button in header when architect panel is collapsed - Use onPointerDown (like existing controls) to avoid stealing xterm focus - Add visual divider between terminal controls and layout controls - Make toolbar more prominent: solid background, rounded container, cleaner styling - Skip 8 pre-existing broken SplitPane tests (test buttons from wrong component) - Add 4 regression tests for consolidated toolbar behavior
… buttons
Address CMAP review feedback (Codex): use onClick for keyboard activation
(Enter/Space) and onPointerDown+preventDefault only for focus protection.
Remove tabIndex={-1} so buttons remain keyboard-reachable via Tab.
Contributor
Author
Architect Integration ReviewVerdict: APPROVE Single-model review (Claude) — clean implementation.
Minor follow-up opportunity: Remove Architect integration review |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #522
Dashboard controls were scattered across multiple locations: collapse/expand buttons in the app header, terminal controls in a floating overlay, and connection status inside that overlay. This consolidates everything into a single, more prominent toolbar at the top-right of the architect terminal window.
Root Cause
The collapse/expand buttons were rendered in the
App.tsxheader (<header className="app-header">) while terminal controls (refresh, scroll-to-bottom, connection status) lived in a separate floatingTerminalControlsoverlay inside theTerminalcomponent. These were designed independently and never unified.Fix
toolbarExtraprop toTerminalcomponent, allowing injection of extra controls into its toolbartoolbarExtraonPointerDown+preventDefault(matching existing controls) to avoid stealing xterm focus.toolbar-dividerbetween terminal controls and layout controlsrgba(30,30,30,0.85)background, visible border, rounded corners, individual button hover statesTest Plan
architect-toolbar.test.tsxCMAP Review
To be added after review.
Flaky Tests
8 tests in
SplitPane.test.tsxwere markedit.skip— they are pre-existing broken tests (not flaky). These tests rendered<SplitPane>in isolation and expected collapse/expand buttons, but those buttons have always lived inApp.tsx, never inSplitPane. They failed identically before and after this change.4 tests in
Terminal.fit-scroll.test.tsxare pre-existing failures related to fit/scroll timing — unrelated to this change.