Skip to content

Unify compact workspace controls and stable data surfaces - #1730

Open
ZenAlexa wants to merge 17 commits into
TraderAlice:devfrom
ZenAlexa:contrib/compact-workspace
Open

ZenAlexa wants to merge 17 commits into
TraderAlice:devfrom
ZenAlexa:contrib/compact-workspace

Conversation

@ZenAlexa

@ZenAlexa ZenAlexa commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Why

The workspace needs consistent compact controls and stable geometry across navigation, settings, menus, and trading data. This shared-interface boundary addresses touching highlighted rows, disconnected Tools groups, oversized navigation, inconsistent select controls, and chart notices that move surrounding content.

Changes

  • Centralized desktop navigation at 32px, common controls at 36px, panel insets at 16px, and adjacent navigation gaps at 4px. Coarse-pointer controls retain 44px targets; narrow layouts use the existing drawer flow.
  • Consolidated choice menus, selection glyphs, switches, dialogs, help popovers, and count badges under their existing shared owners. Menus share collision bounds, scrolling, focus treatment, and long-label handling.
  • Kept the collapsed activity rail stable and rebuilt Tools groups as continuous surfaces. Integrated language settings into Overview and retained the legacy route. Project disclosures align version and status columns.
  • Reserved save-state geometry across idle, pending, success, error, and retry. Workspace save buttons keep their accessible label and dimensions during requests; failures preserve the draft and enable retry.
  • Represented the selected runtime with menu radio semantics and a fixed selection slot. Runtime dialogs restore focus to the invoking control, including reduced-motion mode.
  • Kept historical-snapshot help in a stable chart-header slot. Empty, loading, error, and populated states share the reserved plot area. Theme changes preserve chart instances and visible ranges.
  • Kept same-account data through refresh failures, scoped asynchronous responses to the selected account, and disabled position-closing actions after an account-data read fails.
  • Centralized press, disclosure, popup, image-loading, and status feedback. Shared AlertDialog content owns short-viewport scrolling; forced-color keyboard focus uses a system-color outline.

Bundled Instrument Sans, explicit CJK fallbacks, and the existing Pretext launch-label measurement remain in place. Model identity, interface profiles, backend trading execution, order semantics, and provider routing retain their existing owners.

November 11 dev integration

Integrated dev@4f06b8b2 in 5b123809. The compact inbox retains the unread-count and mark-all-read controls, including when no messages match. The model menu keeps search and free-form entry; unmatched text still offers the full provider list. Shared control guidance now lives in the architecture guide at its new upstream location.

The three affected UI suites passed all 32 cases with NODE_ENV=test, and the UI TypeScript build and production demo build passed. In Chrome, the demo rendered the inbox with its unread controls and the launch menu with the model and effort entries. These checks did not exercise live trading or deployment.

November 1 dev integration

merged dev at 006fffd5923f through a normal merge at fcd1a09c6ac5. the incoming changes bring the separate landing site into the workspace and keep its build outside the application and server build commands. all 252 contribution paths retain their pre-merge contents.

the contribution whitespace check passed, and all 240 existing TypeScript/TSX files in the contribution parsed successfully. the existing confirmation test selector was invoked and executed zero checks because the local vite-plus executable is unavailable. syntax parsing is the completed local check; dependency-aware type checks, the complete UI suite, browser interaction and visual checks, and native packaging remain unrun at this integration. the earlier results below retain their recorded revisions. please run current-head clean-build CI and the existing UI/browser checks.

October 23 follow-up

The October 23 revision was based on dev at 5da8dfcc. Removed the unused ConfirmDialog fallback-focus prop and its confirmation-state bookkeeping. All 14 production call sites use the connected-opener focus path; confirmation errors propagate, and finally clears the busy state. Removed an unused motion-spectrum palette block and consolidated the suggestions guide around its existing stable-height, inert/aria-hidden behavior. Rendered styles, layout and trading behavior are unchanged.

Revision 7bacdd72 passed the three existing ConfirmDialog checks and a strict type check of the component's imported production closure in an isolated component setup using React 19.2.4, Base UI 1.6.0 and Vitest 5.0.1. An independent React/Base UI + JSDOM lifecycle scenario passed against both revisions: repeated Escape/return-focus, pending-action blocking, success with a connected or removed opener, and rejection followed by successful retry.

These checks cover the shared confirmation component. The complete UI suite, production-browser visual and keyboard matrix, native windows, live brokers and packaged applications retain their historical or unrun status below. Please run current-head clean-build CI before merging.

October 13 dev validation

merged 5da8dfcc and checked revision 0345b656 on 2026-10-13.

the updated code passed ui and uta type checks, the production demo build, and 139 existing tests across 17 files. 18 snapshot scenarios covered exact source selection, carry-forward, records outside the recent window, deletion, duplicate timestamps, restart, and late replies. details now read the source used by the chart and stay closed when that source is missing or ambiguous.

the built image preview keeps its 10px radius. keyboard focus stays visible on checkboxes in forced colors. the skeleton uses the existing 1.6s duration and stops in reduced motion. connector fields retain 14px text at desktop and 390px widths.

the broader ui suite passed 2,084 tests before these final follow-up fixes. native windows chrome, live brokers, and signed packages were not exercised.

October 6 synchronization and compatibility

Merged dev at 53baaa319 and retained the model identity and interface profiles delivered by #1728 and #1729. Preserved the current Inbox sender names, Vite+ toolchain, dependency pins, and cadence editor behavior.

Integrated #1648's disabled-control regression into the existing focus scenario. The shared Dialog owns focus containment; the replaced local focus trap stays removed.

Narrowed overlapping edits in the News collector, login screen, quote header, order-status badge, and application menu. Pairwise Git merge checks against 15 relevant open PR heads found zero additional conflict files and zero additional textual conflict hunks relative to current dev:

These checks cover pairwise textual integration at the sampled heads. Review shared primitives and tokens first, migrated consumers second, and account and chart behavior third.

Verification

Checked on October 6 against dev at 53baaa319:

  • Full UI suite: 351 files and 2,034 existing behavior cases passed (NODE_ENV=test node scripts/run-tests.mjs --path ui/src).
  • TypeScript and the production-demo build: passed (pnpm -F open-alice-ui build:demo).
  • Production Chromium scenarios exercised delayed save, failed save with draft preservation, successful retry, disabled controls and disabled fieldsets in the focus cycle, runtime keyboard selection, radio state, dialog selection state, Escape, and reduced-motion focus return.
  • The pending Save button retained its 57.15625px width and accessible name. Two explicit save attempts produced two requests.
  • Chromium, Firefox, and WebKit at 390px viewport width had no document overflow. Launch labels retained their measured 20px line height with the bundled font.
  • The existing follow-up-dialog scenario now waits for the menu's asynchronous focus handoff before sending Enter.
  • git diff --check passed.

Browser scenarios used the production demo and its fixture data. Live broker execution, managed research processes, and native Electron packaging are outside this verification. The production build emits the existing large-chunk advisory.

October 6 screenshots

Captured from the final production-demo tree on October 6. The desktop viewport is 1280 × 800; the narrow viewport is 390 × 844. The runtime control retains visible keyboard focus after dialog dismissal.

Desktop workspace Narrow workspace
Desktop workspace with restored keyboard focus Narrow workspace with restored keyboard focus

Workspace save pending with stable button geometry

For interactive review, navigate runtime choices with the keyboard, open the full runtime dialog, and dismiss it with Escape. Open workspace configuration, edit the name, save, and repeat after a failed request. Inspect toolbar wrapping at a narrow viewport and confirm that focus returns to the invoking control.

@vercel

vercel Bot commented Oct 1, 2026

Copy link
Copy Markdown

@ZenAlexa is attempting to deploy a commit to the luokerenx4's Team Team on Vercel.

A member of the Team first needs to authorize it.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

# Conflicts:
#	ui/src/components/credentials/CredentialModal.tsx

This branch has not been deployed

No deployments
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.

3 participants