Home

mweinbach / agent-coworker

publicmweinbach/agent-coworker
Overview Code History Branches Pull requestsIssuesInsights
main
HomeOverview Code PRsIssues

feat(desktop): add adaptive workspace shell (#277)

2 months ago

e429301
Authored
Max Weinbach7/13/2026, 2:44:19 AM
* style: format codex app server resolver test

* feat(desktop): add adaptive workspace layout

Protect the primary workspace with responsive rail sizing, overlay drawers, compact toolbars, and container-aware product surfaces. Preserve live sidebar and Canvas state across layout tiers and cover the new accessibility and resize contracts.

* fix(desktop): improve adaptive surface accessibility

* test(desktop): verify adaptive product surfaces

* fix(desktop): address adaptive shell review feedback

* refactor(desktop): import element width ref type

* fix(desktop): preserve compact research drafts

* fix(desktop): restore focus after rail toggles

* fix(desktop): retain canvas chrome after resize

* fix(desktop): retain context toggle with canvas

* fix: stabilize platform and shutdown tests

* fix(desktop): separate streaming render metrics

* fix(desktop): coordinate adaptive rail overlays

* test(desktop): exercise programmatic rail switching

* test(desktop): align programmatic focus expectations

* fix(desktop): address final adaptive shell feedback

* test(desktop): cover settings rail shortcut

* fix(desktop): keep overlay settings navigation opaque

* fix(desktop): use solid settings overlay surface

* fix(desktop): keep automatic canvas overlays exclusive

* fix(desktop): track canvas overlay ownership

* fix(desktop): preserve canvas overlay ownership

* fix(desktop): release dismissed canvas overlay ownership

* fix(desktop): restore focus when rails become inline

* fix(desktop): clear canvas overlay ownership on close

* fix(desktop): preserve dismissed canvas overlays

Parent7433ef6

97 files changed
  • apps/desktop/electron/main.ts+2−0
  • apps/desktop/electron/qualityGateMain.ts+4−0
  • apps/desktop/electron/services/windowState.ts+5−4
  • apps/desktop/quality-gates/assertions.ts+58−4
  • apps/desktop/quality-gates/mentionGeometry.ts+3−2
  • apps/desktop/quality-gates/runtime.ts+22−3
  • apps/desktop/quality-gates/snapshots/canvas-markdown-dark-linux.png——
apps/desktop/quality-gates/snapshots/canvas-markdown-forced-colors-linux.png
—
—
  • apps/desktop/quality-gates/snapshots/canvas-markdown-light-linux.png——
  • apps/desktop/quality-gates/snapshots/canvas-markdown-live-switch-dark-linux.png——
  • apps/desktop/quality-gates/snapshots/canvas-spreadsheet-dark-linux.png——
  • apps/desktop/quality-gates/snapshots/canvas-spreadsheet-forced-colors-linux.png——
  • apps/desktop/quality-gates/snapshots/canvas-spreadsheet-light-linux.png——
  • apps/desktop/quality-gates/snapshots/first-launch-dark-1024-linux.png——
  • apps/desktop/quality-gates/snapshots/first-paint-dark-1024-linux.png——
  • apps/desktop/quality-gates/snapshots/first-paint-light-1024-linux.png——
  • apps/desktop/quality-gates/snapshots/first-paint-system-1024-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-1024-dark-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-1024-forced-colors-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-1024-light-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-1024-reduced-motion-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-1240-dark-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-1240-forced-colors-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-1240-light-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-1240-reduced-motion-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-640-dark-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-640-forced-colors-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-640-light-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-640-reduced-motion-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-800-dark-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-800-forced-colors-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-800-light-linux.png——
  • apps/desktop/quality-gates/snapshots/shipping-chat-800-reduced-motion-linux.png——
  • apps/desktop/quality-gates/specs/adaptive-surfaces.pw.ts+112−0
  • apps/desktop/quality-gates/specs/assertions.pw.ts+71−0
  • apps/desktop/quality-gates/specs/journeys.pw.ts+62−3
  • apps/desktop/quality-gates/specs/performance.pw.ts+2−0
  • apps/desktop/quality-gates/specs/visual.pw.ts+6−0
  • apps/desktop/src/App.tsx+231−47
  • apps/desktop/src/components/ui/dialog.tsx+1−0
  • apps/desktop/src/components/ui/dropdown-menu.tsx+1−0
  • apps/desktop/src/components/ui/popover.tsx+1−0
  • apps/desktop/src/components/ui/select.tsx+1−0
  • apps/desktop/src/lib/adaptiveLayout.ts+139−0
  • apps/desktop/src/lib/desktopRailCommands.ts+14−0
  • apps/desktop/src/lib/useAdaptiveLayout.ts+61−0
  • apps/desktop/src/lib/useElementWidth.ts+25−0
  • apps/desktop/src/styles.css+13−15
  • apps/desktop/src/styles/platform/darwin.css+1−1
  • apps/desktop/src/styles/platform/linux.css+1−1
  • apps/desktop/src/styles/platform/win32.css+1−1
  • apps/desktop/src/ui/Canvas.tsx+2−2
  • apps/desktop/src/ui/CommandPalette.tsx+4−5
  • apps/desktop/src/ui/ContextSidebar.tsx+10−2
  • apps/desktop/src/ui/OverlayStack.tsx+11−0
  • apps/desktop/src/ui/PptxPreview.tsx+34−11
  • apps/desktop/src/ui/ResearchView.tsx+77−12
  • apps/desktop/src/ui/UniverSpreadsheetCanvas.tsx+5−2
  • apps/desktop/src/ui/file-explorer/WorkspaceFileExplorer.tsx+20−21
  • apps/desktop/src/ui/layout/AdaptiveRailSurface.tsx+186−0
  • apps/desktop/src/ui/layout/AppTopBar.tsx+78−13
  • apps/desktop/src/ui/layout/ContextSidebarResizer.tsx+38−13
  • apps/desktop/src/ui/layout/PlatformTopBarChrome.tsx+1−0
  • apps/desktop/src/ui/layout/SidebarCollapseControl.tsx+3−1
  • apps/desktop/src/ui/layout/SidebarResizer.tsx+26−11
  • apps/desktop/src/ui/markdown/DesktopMarkdown.tsx+3−1
  • apps/desktop/src/ui/research/ResearchDetailPane.tsx+3−30
  • apps/desktop/src/ui/settings/SettingsPrimitives.tsx+1−1
  • apps/desktop/src/ui/settings/SettingsShell.tsx+103−24
  • apps/desktop/src/ui/settings/pages/ProvidersPage.tsx+3−3
  • apps/desktop/src/ui/tasks/NewTaskLanding.tsx+2−2
  • apps/desktop/src/ui/tasks/taskPresentation.ts+2−2
  • apps/desktop/test/adaptive-layout.test.ts+129−0
  • apps/desktop/test/adaptive-rail-surface.test.tsx+324−0
  • apps/desktop/test/app-jsonrpc-disposal.test.tsx+7−18
  • apps/desktop/test/app-notifications-window-modes.test.tsx+39−0
  • apps/desktop/test/app-topbar.test.tsx+50−0
  • apps/desktop/test/canvas-window-lifecycle.test.tsx+377−5
  • apps/desktop/test/context-sidebar.test.tsx+38−0
  • apps/desktop/test/main-process-startup.test.ts+12−0
  • apps/desktop/test/platform-top-bar-chrome.test.tsx+2−1
  • apps/desktop/test/presentation-preview-safety.test.tsx+90−0
  • apps/desktop/test/providers-page.test.ts+2−0
  • apps/desktop/test/research-detail-pane.test.tsx+8−0
  • apps/desktop/test/research-view-layout.test.tsx+152−0
  • apps/desktop/test/settings-primitives.test.tsx+11−1
  • apps/desktop/test/settings-shell.test.ts+28−0
  • apps/desktop/test/sidebar-resizer.test.tsx+29−0
  • apps/desktop/test/task-presentation.test.ts+23−0
  • apps/desktop/test/use-adaptive-layout.test.tsx+68−0
  • apps/desktop/test/window-state.test.ts+24−0
  • apps/desktop/test/workspace-file-explorer-ui.test.tsx+36−0
  • docs/assets/desktop-product.png——
  • src/platform/host.ts+5−0
  • src/platform/index.ts+7−1
  • src/providers/codexAppServerResolver.ts+10−6
  • test/providers/codex-app-server-resolver.test.ts+53−44