Files
endorphin-tessera-gui/docs/ui-workspace-audit.md
T

6.6 KiB

Window workspace requirement audit — 2026-10-24

This audit follows the full conversation, including later corrections. Implementation completion and native evidence are different columns. No claim is made that Chrome was personally measured.

Requirement Implementation Evidence / limits
One top row with native macOS controls Transparent/full-size native title bar; reserved control space; 44 px tab strip Actual Retina macOS windows viewed; native close/minimize/fullscreen controls retained
Continuous left/top chrome One neutral background; 56 px left rail; inset content panel Actual main and detached windows viewed; no Tools label or rail launchers
Larger symmetric round tabs, softer active state Common capsule bounds, measured glyph centering, no hard active stroke Native settled UI viewed; hover and selected use the same bounds
+ and startup default page One startup request guarded against duplicate resume; + release-inside; Cmd/Ctrl+T Immediately after restart: pages().count = 1. Two native Cmd+T actions produced three tabs
New-tab motion, filled and unfilled 200 ms cubic ease; new width grows from zero; existing bounds and + interpolate; scalar-only animation data Real native new/close/fill operations completed; settled compression/overflow viewed. No frame-by-frame recording or Chrome timing comparison
Overflow and scrolling Separate + reservation; arrows, edge dwell and hit bounds share tab viewport Native overflow reached; + in overflow increased VM count 7 → 8. Dragging out of + kept count at 7
Close/activate/reorder/migrate/detach Ordinary managed Page methods retained; animated hit bounds and drag anchors use current visual bounds Native close and drag-out to Endor Window 2 succeeded. API detach/move-back preserved Page 1:135:0. Native cross-window drop, dwell and mixed-DPI were not re-run in this final build
Four developer tools separated Independent Page instances; Console/Sources/Network/Settings modules and separate per-view state Earlier native top-level Sources/Console activation and read-only copy/paste verified; no nested navigation remains
Four tools not default or permanently placed No Tools menu, rail buttons or new-page tool directory; existing API/shortcut retained Final default surfaces viewed without tool entries
Source reading/selection/copy Grapheme-boundary selection, no gutter in copy, select-all/copy, Shift navigation, drag edge scrolling Native single-line drag/copy/paste verified earlier in this change. Final keyboard copy was re-run after the chrome-focus fix: drag-copy matched the complete selected line; four Shift+Right operations copied the expected four characters; select-all copied multiline source without a gutter. Drag edge behavior compiled; exhaustive combinations remain untested
Clicking Console output must not jump to prompt/end Input hit region restricted to actual prompt rows Native reading/copy path verified earlier; no input hit over transcript-only area
Default page reflects Endor Objects, code and UI share identity; persistence/model connections explicitly described as work in progress Referenced chats read: 01a16819-28c3-7ce0-9423-0ffaa19402ce and 01a1689b-77d8-75a2-ba9e-b2fa3dce654e; actual native start surface viewed
Sensible source organization Runtime/API tests separated; four page view modules; shared painter/selection; native tool Page factory; motion module All-target Clippy compiled production and test sources. Runtime host reduced from ~7000 to ~1380 lines
Protect existing work examples/README.md and examples/workspace.endor excluded; vendor/Aster untouched git status checked before staging
Verification restrictions fmt, all-target Clippy -D warnings, release build and manual native/API checks No cargo test, smoke script, Docker, dependency test install or CI polling

Reference boundaries

The user's Chrome/Codex reference images supplied the single-row controls, capsules and continuous left/top chrome. The Obsidian reading-view reference informed restrained contrast and pane separation.

The actual tools refused access to both Codex and Terminal. The available in-app browser exposes page content, not Chrome's native tab strip. No personal Chrome window/profile was operated. A Chromium source search was supplementary research, not an animation test; fetching the selected source page failed. Therefore the requested isolated Chrome comparison remains unverified.

Manual request correction

One placement probe used unsupported == syntax and returned a parse error before execution. It was replaced with direct returned object-identity checks. Both the detached-window Page and moved-back Page returned 1:135:0. The failed expression is not counted as passing evidence.

Remaining verification

Isolated Chrome timing/shape comparison, frame-by-frame animation capture, fresh native cross-window drop/dwell on the final build, mixed-DPI cross-screen interaction and exhaustive keyboard/source-selection combinations remain without new runtime evidence. These are not silently marked passed. The shipped Page lifetime/GC model was preserved; no new persistence or AI backend is claimed.

Final focus regression fix

Final native retesting found a real regression: title-strip mouse events cleared the active editor focus. Window activation performed before automated key events exposed the same behavior. Chrome mouse presses now preserve content focus; developer pane hit testing ignores points outside the pane; frame publication updates the keyboard route according to the active Page. No source, tab geometry or selection state is logged by the shipped build.

After the fix, direct system clipboard comparisons (without printing clipboard contents) confirmed selected-line equality (28 characters), Shift+Right selection equality (4 characters), and multiline select-all with no line-number gutter. The temporary Sources Page was closed afterwards. All-target Clippy, formatting and release building passed again.

Local delivery state

Implementation commits: 3220544 (runtime test-source separation), 656522e (managed workspace/chrome implementation), d3165b1 (behavior and requirement audit), followed by the chrome-focus fix commit. A push to origin/main was attempted once and rejected by automatic approval review because explicit authorization for this default-branch remote mutation was required. No alternative push route was attempted. The remote remains unchanged pending the user's approval.