Repository navigation
UI Component Rewrite - #529
Merged
Merged
Conversation
Owner
Author
|
Superseded by #533, which merged the tested combined UI component/modal foundation and follow-up interaction-boundary fixes into main. |
Owner
Author
Juliusolsson05
force-pushed
the
refactor/ui-component-rewrite
branch
from
July 16, 2026 11:59
9c955c0 to
3db88b2
Compare
Juliusolsson05
marked this pull request as ready for review
July 16, 2026 12:01
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\n\n- establish as the locally owned shared primitive boundary, following shadcn/ui naming while preserving Agent Code semantic tokens and dense visual language\n- add shared , , , , and primitives plus and a reviewed \n- migrate app-wide feature and provider modals to the Radix-backed dialog contract for portals, focus trapping and restoration, Escape handling, outside interaction, and accessible titles and descriptions\n- add an explicit DOM interaction-ownership contract that gates background typing, paste, Enter submission, workspace shortcuts, native menu commands, and native dictation starts\n- scope provider condition keyboard handling to the focused tile and close the remaining focus and shortcut ownership races\n- document the component boundary, exceptions, and anti-overengineering rules in \n\n## Latest-main integration\n\nThis branch is rebased directly onto current at .\n\n- preserved the lightweight closed-state command palette added on main while moving its open surface to the shared dialog primitive\n- blocked native-menu command dispatch whenever another app-owned interaction surface is active\n- audited the Workflow UI added after this branch diverged and migrated its ordinary Cancel, Resume, and Retry actions to the shared button primitive\n- intentionally kept workflow tabs, disclosures, and activity rows feature-native because they are specialized navigation widgets rather than generic actions\n\n## Why\n\nThe previous modal family reimplemented different subsets of focus, Escape, backdrop, accessibility, and input suppression. A visually open surface could still send typing, paste, Enter, shortcuts, native menu commands, or dictation into an agent behind it.\n\nThe rewrite separates those contracts: dialog primitives own browser dialog behavior, global input ingress queries one synchronous ownership marker, and pane-local condition strips handle keys only inside their focused pane. Feature business logic and layout remain in their feature or provider folders.\n\n## Verification\n\n-
RUN v4.1.7 /Users/juliusolsson/Desktop/Development/agent-code/.worktrees/ui-component-rewrite
❯ |unit| packages/workflow-mcp/test/processOwnedProviderHost.test.ts (5 tests | 1 failed) 5315ms
× pins a private Codex home and copies authentication before spawning the attempt 1883ms
❯ |unit| packages/claude-code-headless/src/transcript/JsonlTailer.test.ts (2 tests | 1 failed) 3251ms
× a second tailer on the same path survives the first one closing 3022ms
Test Files 2 failed | 127 passed | 1 skipped (130)
Tests 2 failed | 789 passed | 5 skipped (796)
Start at 14:00:18
Duration 43.83s (transform 64.41s, setup 4.23s, import 117.60s, tests 79.32s, environment 10.30s): 129 files passed, 1 skipped; 791 tests passed, 5 skipped\n-
vite v5.4.21 building SSR bundle for production...
transforming...
✓ 498 modules transformed.
rendering chunks...
out/main/workflowProviderHost.js 0.60 kB
out/main/chunks/workerMessages-BTrzPYRU.js 0.93 kB
out/main/chunks/sessionIndex-D9sZmXUd.js 15.25 kB
out/main/workflowWorker.js 20.07 kB
out/main/chunks/fileWorkflowStore-Dw10IvSj.js 127.34 kB
out/main/index.js 1,597.05 kB
✓ built in 4.23s
vite v5.4.21 building SSR bundle for production...
transforming...
✓ 31 modules transformed.
rendering chunks...
out/preload/index.mjs 25.40 kB
✓ built in 80ms
vite v5.4.21 building for production...
transforming...
✓ 2255 modules transformed.
rendering chunks...
../../out/renderer/index.html 1.50 kB
../../out/renderer/assets/codicon-DCmgc-ay.ttf 80.34 kB
../../out/renderer/assets/editor.worker-ZSx8gsAZ.js 503.10 kB
../../out/renderer/assets/json.worker-CYJeM0Vc.js 802.53 kB
../../out/renderer/assets/html.worker-CLkxC0C0.js 1,200.21 kB
../../out/renderer/assets/css.worker-rtSqh8pb.js 1,829.45 kB
../../out/renderer/assets/ts.worker-BEz7rTSH.js 12,093.58 kB
../../out/renderer/assets/editor-DjMEC8bx.css 190.45 kB
../../out/renderer/assets/index-CSQLwXOB.css 244.37 kB
../../out/renderer/assets/azcli-BXM2IlsQ.js 1.69 kB
../../out/renderer/assets/javascript-DVendiHg.js 1.72 kB
../../out/renderer/assets/ini-x6GHxt7E.js 2.05 kB
../../out/renderer/assets/csp-C2AJIiui.js 2.09 kB
../../out/renderer/assets/scheme-CnrVPi0g.js 2.74 kB
../../out/renderer/assets/bat-CXk6R9i1.js 3.04 kB
../../out/renderer/assets/flow9-D8e8abbC.js 3.14 kB
../../out/renderer/assets/sb-NjH6_omD.js 3.20 kB
../../out/renderer/assets/pla-CsZTrHnY.js 3.26 kB
../../out/renderer/assets/dockerfile-CmPC2DZV.js 3.40 kB
../../out/renderer/assets/pascaligo-Cmaorwot.js 3.63 kB
../../out/renderer/assets/bicep-BF8AAygK.js 3.81 kB
../../out/renderer/assets/lua-DRbkEJ__.js 3.81 kB
../../out/renderer/assets/objective-c-Bsf9Adr2.js 3.86 kB
../../out/renderer/assets/cameligo-nP5XeB7Z.js 3.89 kB
../../out/renderer/assets/xml-CWAbYb4t.js 4.01 kB
../../out/renderer/assets/graphql-BAUBdV83.js 4.15 kB
../../out/renderer/assets/lexon-CS1RGqME.js 4.19 kB
../../out/renderer/assets/typespec-D3BaxOKL.js 4.26 kB
../../out/renderer/assets/sparql-BwgSs7wE.js 4.32 kB
../../out/renderer/assets/mips-CaM-c8sw.js 4.52 kB
../../out/renderer/assets/m3-DYNA-e-5.js 4.54 kB
../../out/renderer/assets/sophia-Z6PHlxcE.js 4.65 kB
../../out/renderer/assets/shell-nZFhZCI1.js 4.87 kB
../../out/renderer/assets/go-Co3voQ1F.js 4.88 kB
../../out/renderer/assets/fsharp-b9EwJ6OO.js 4.89 kB
../../out/renderer/assets/pascal-DLtAU0x_.js 5.10 kB
../../out/renderer/assets/r-Hxn2SnYa.js 5.18 kB
../../out/renderer/assets/less-BQjbkuJA.js 5.38 kB
../../out/renderer/assets/tcl-CF3tYq1H.js 5.43 kB
../../out/renderer/assets/qsharp-BD7c0_xf.js 5.53 kB
../../out/renderer/assets/cypher-CLz3A125.js 5.54 kB
../../out/renderer/assets/java-BqOgBITW.js 5.54 kB
../../out/renderer/assets/hcl-BgDEIw1l.js 5.59 kB
../../out/renderer/assets/kotlin-D1TiZq8i.js 5.63 kB
../../out/renderer/assets/redis-yl8TqW_z.js 5.63 kB
../../out/renderer/assets/restructuredtext-C45krjdV.js 5.71 kB
../../out/renderer/assets/powershell-BLZmOKjF.js 5.77 kB
../../out/renderer/assets/coffee-CY60ZdVX.js 5.90 kB
../../out/renderer/assets/liquid-DEjJNEjh.js 6.33 kB
../../out/renderer/assets/css-Dc1e6frd.js 6.49 kB
../../out/renderer/assets/rust-C2rcm8y9.js 6.66 kB
../../out/renderer/assets/apex-DG5IjXEF.js 6.77 kB
../../out/renderer/assets/dart-BdL3T2qP.js 6.87 kB
../../out/renderer/assets/markdown-C1LDbTIq.js 7.03 kB
../../out/renderer/assets/yaml-CtyMVnnI.js 7.04 kB
../../out/renderer/assets/mdx-DLv_Yjll.js 7.17 kB
../../out/renderer/assets/msdax-Dkw0rKnc.js 7.33 kB
../../out/renderer/assets/csharp-B3nfFqjg.js 7.36 kB
../../out/renderer/assets/swift-pEk5NNOh.js 7.56 kB
../../out/renderer/assets/python-C6CXzHxv.js 7.66 kB
../../out/renderer/assets/ecl-BRZtCkhn.js 8.32 kB
../../out/renderer/assets/cpp-BteEkr-J.js 8.60 kB
../../out/renderer/assets/pug-KZRE8PkR.js 8.65 kB
../../out/renderer/assets/vb-dhxRY2dE.js 8.71 kB
../../out/renderer/assets/html-BMUM55SO.js 8.81 kB
../../out/renderer/assets/typescript-B4LDETZn.js 9.15 kB
../../out/renderer/assets/scss-Dsuw-lBL.js 9.45 kB
../../out/renderer/assets/wgsl-CaHBWX8o.js 10.14 kB
../../out/renderer/assets/st-BG4-BhrP.js 10.53 kB
../../out/renderer/assets/twig-CHKK6meg.js 10.64 kB
../../out/renderer/assets/julia-CFXRrAu4.js 10.87 kB
../../out/renderer/assets/scala-BjP-ReDi.js 11.08 kB
../../out/renderer/assets/handlebars-CBn_rkh-.js 11.59 kB
../../out/renderer/assets/systemverilog-Bn-PPJj.js 12.01 kB
../../out/renderer/assets/php-NQU4bmpL.js 12.87 kB
../../out/renderer/assets/protobuf-Dg-80f8u.js 13.06 kB
../../out/renderer/assets/perl-BPi58r3D.js 13.20 kB
../../out/renderer/assets/clojure-BQC0MhrY.js 14.33 kB
../../out/renderer/assets/razor-Dxn0NGx4.js 14.52 kB
../../out/renderer/assets/ruby-Bvv4DQ04.js 15.70 kB
../../out/renderer/assets/sql-Dl7Picx6.js 15.94 kB
../../out/renderer/assets/mysql--o_yUUHh.js 16.54 kB
../../out/renderer/assets/redshift-Bf-JYjU.js 16.71 kB
../../out/renderer/assets/pgsql-BYfQsqS2.js 18.63 kB
../../out/renderer/assets/elixir-DST-1xVL.js 19.12 kB
../../out/renderer/assets/postiats-BEsqrLND.js 19.69 kB
../../out/renderer/assets/powerquery-B2m3ADxD.js 22.03 kB
../../out/renderer/assets/abap-C1iBNFz_.js 23.36 kB
../../out/renderer/assets/solidity-DLTEqBGt.js 26.41 kB
../../out/renderer/assets/tsMode-ClExUbaU.js 43.25 kB
../../out/renderer/assets/freemarker2-BX3ik6EJ.js 43.38 kB
../../out/renderer/assets/cssMode-1yABIVuE.js 68.93 kB
../../out/renderer/assets/htmlMode-ssxS2Ohi.js 69.94 kB
../../out/renderer/assets/jsonMode-Cxp6TKAm.js 91.76 kB
../../out/renderer/assets/DebugSurfacesImpl-z8Aab-38.js 102.23 kB
../../out/renderer/assets/index-M0vBRYHM.js 4,582.67 kB
../../out/renderer/assets/editor.main-CUncnaxs.js 6,352.09 kB
✓ built in 46.42s
[build-hotkey-helper] built universal helper at /Users/juliusolsson/Desktop/Development/agent-code/.worktrees/ui-component-rewrite/out/main/runtime/hotkey-helper/AgentCodeDictationHotkeyHelper\n-
vite v5.4.21 building for production...
transforming...
✓ 688 modules transformed.
rendering chunks...
computing gzip size...
../../out/remote-client/index.html 0.67 kB │ gzip: 0.40 kB
../../out/remote-client/assets/index-B8QXqjKk.css 88.93 kB │ gzip: 15.02 kB
../../out/remote-client/assets/index-Bw9Xh_PH.js 1,529.12 kB │ gzip: 489.33 kB
✓ built in 4.56s\n- \n- production dependency audit matches current main exactly: 5 moderate and 3 high advisories, with no advisory introduced by the UI dependencies\n