Mockup: sessions UI (session manager, inventory, detach/exit, multi-device size) #104

Open
opened 2026-10-08 13:17:39 +00:00 by kayg · 5 comments
Owner

Mockup of the multiplexer session UI (D121, D127, D178, D183) behind ?proto=sessions on the canvas preview, built in apps/tracer + packages/ui against the test double (no backend). Scenes: session manager popover, attach with motion, close-to-detached toast, end-session confirm, sidebar inventory with open/detached/exited markers, exited final screen with Run again/Dismiss, split right/down new shell, multi-device 'Sized for ' badge, palette entry, mobile canvas row action. Branch proto-sessions from demo-preview f56aebe. Backend: #99, #100. Never closed by the job.

Mockup of the multiplexer session UI (D121, D127, D178, D183) behind ?proto=sessions on the canvas preview, built in apps/tracer + packages/ui against the test double (no backend). Scenes: session manager popover, attach with motion, close-to-detached toast, end-session confirm, sidebar inventory with open/detached/exited markers, exited final screen with Run again/Dismiss, split right/down new shell, multi-device 'Sized for <device>' badge, palette entry, mobile canvas row action. Branch proto-sessions from demo-preview f56aebe. Backend: #99, #100. Never closed by the job.
Author
Owner

Start: branch proto-sessions, base demo-preview f56aebe. Plan: new src/sessions-prototype.ts, fixtures in the test double, small hooks in canvas.ts, main.ts and mock-server, preview unit sessions-preview on 10.69.69.125:47561.

Start: branch proto-sessions, base demo-preview f56aebe. Plan: new src/sessions-prototype.ts, fixtures in the test double, small hooks in canvas.ts, main.ts and mock-server, preview unit sessions-preview on 10.69.69.125:47561.
Author
Owner

Finish: branch proto-sessions, head 43fb289 (base f56aebe). Preview http://10.69.69.125:47561/?mock=1&proto=sessions (unit sessions-preview; build with INFRATERNAL_SESSIONS_MOCKUP=1). Gate: tsc ok; tracer bun tests 20 pass; protocol tsc ok; bundle transfer 300508/307200 gzip (baseline 299732); 18 browser specs pass (apps/tracer/test/sessions-prototype.spec.ts). scripts/verify fast: fmt/clippy/cargo-deny/static builds PASS; Rust 'test' stage failed once on infraternal-server recovery_subscription_updates_every_signed_in_socket under load 22 and passes alone (unrelated to this diff). Perf: attach 2.3 ms median, open 2.9 ms, split 11.3 ms, frames p99 16.8 ms. Signed-in check: 2 tabs, 1.6 Mbps/300 ms, 12 s, no 401. Captures: apps/tracer/captures/proto-sessions (40).

Finish: branch proto-sessions, head 43fb289 (base f56aebe). Preview http://10.69.69.125:47561/?mock=1&proto=sessions (unit sessions-preview; build with INFRATERNAL_SESSIONS_MOCKUP=1). Gate: tsc ok; tracer bun tests 20 pass; protocol tsc ok; bundle transfer 300508/307200 gzip (baseline 299732); 18 browser specs pass (apps/tracer/test/sessions-prototype.spec.ts). scripts/verify fast: fmt/clippy/cargo-deny/static builds PASS; Rust 'test' stage failed once on infraternal-server recovery_subscription_updates_every_signed_in_socket under load 22 and passes alone (unrelated to this diff). Perf: attach 2.3 ms median, open 2.9 ms, split 11.3 ms, frames p99 16.8 ms. Signed-in check: 2 tabs, 1.6 Mbps/300 ms, 12 s, no 401. Captures: apps/tracer/captures/proto-sessions (40).
Author
Owner

Port to the canvas: branch canvas-sessions, head 6dd7ea2 (base canvas-design db7b5a8, dev 4ab8ffc merged). scripts/verify fast exit 0 (Rust all PASS, tracer tsc, bun tests, build, budget, protocol tests). Browser: 54 specs pass (sessions-canvas 18 + clusters), canvas/add-host/frames/memory pass. Deferred canvas chunk 47,175 -> 54,327 B gzip: limit raised to 58 KiB (owner to approve). Ghost-text crops in captures/canvas-sessions/ghost-text-*: clean at 1x, edge band legible at 3x (shared material, not edited).

Port to the canvas: branch canvas-sessions, head 6dd7ea2 (base canvas-design db7b5a8, dev 4ab8ffc merged). scripts/verify fast exit 0 (Rust all PASS, tracer tsc, bun tests, build, budget, protocol tests). Browser: 54 specs pass (sessions-canvas 18 + clusters), canvas/add-host/frames/memory pass. Deferred canvas chunk 47,175 -> 54,327 B gzip: limit raised to 58 KiB (owner to approve). Ghost-text crops in captures/canvas-sessions/ghost-text-*: clean at 1x, edge band legible at 3x (shared material, not edited).
Author
Owner

Rebuilt on current dev for the owner's review. Branch mockups-2026-10-31, head 586cd2b13 (base dev 42ab33035, 2026-10-31). Test double only; nothing is real or saved. Not merged, not deployed. Old previews are gone; this replaces them.

Preview (NetBird, bound to infraternal-dev-02-std; index of every mockup: http://10.69.69.117:47650/mockups.html):

How: Each scene is &sessions=N or the palette row "Mockup: sessions scene N". Scenes 1-10 are the earlier round, unchanged. 11 and 12 are new, for the current decisions: 11 the guard line when a shell starts tmux (D315: copy it, or add it after a question, with "Remove line" as the way back); 12 a window opened by an AI tool with its note (D304, D314 canvas open --note).

Note: D311/D314 rule out terminal attach, prefix keys and status rows; none of scenes 1-10 shows any. If a scene should go or change, say which.

Captures are Chromium on the production build of the mockup, taken by apps/tracer/test/capture-mockups.ts; I have read them for wrong states, not judged them as final.

Desktop 1440×900 @2x, ink

scene-01
scene-02
scene-03
scene-04
scene-05
scene-06
scene-07
scene-08
scene-09
scene-10
scene-11
scene-12

Desktop 1440×900 @2x, paper

scene-01
scene-02
scene-03
scene-04
scene-05
scene-06
scene-07
scene-08
scene-09
scene-10
scene-11
scene-12

Phone 393×852 @3x, ink

scene-01
scene-02
scene-03
scene-04
scene-05
scene-06
scene-07
scene-08
scene-09
scene-10
scene-11
scene-12

Phone 393×852 @3x, paper (first state only)

scene-01
scene-02
scene-03
scene-04
scene-05
scene-06
scene-07
scene-08
scene-09
scene-10
scene-11
scene-12

Rebuilt on current dev for the owner's review. Branch `mockups-2026-10-31`, head `586cd2b13` (base dev `42ab33035`, 2026-10-31). Test double only; nothing is real or saved. Not merged, not deployed. Old previews are gone; this replaces them. **Preview** (NetBird, bound to infraternal-dev-02-std; index of every mockup: http://10.69.69.117:47650/mockups.html): - http://10.69.69.117:47650/?mock=1&proto=clusters&scene=3&sessions=1 (… 12) **How:** Each scene is `&sessions=N` or the palette row "Mockup: sessions scene N". Scenes 1-10 are the earlier round, unchanged. **11 and 12 are new, for the current decisions:** 11 the guard line when a shell starts tmux (D315: copy it, or add it after a question, with "Remove line" as the way back); 12 a window opened by an AI tool with its note (D304, D314 `canvas open --note`). **Note:** D311/D314 rule out terminal attach, prefix keys and status rows; none of scenes 1-10 shows any. If a scene should go or change, say which. Captures are Chromium on the production build of the mockup, taken by `apps/tracer/test/capture-mockups.ts`; I have read them for wrong states, not judged them as final. **Desktop 1440×900 @2x, ink** ![scene-01](https://git.kayg.org/attachments/4d461bac-fca9-42f9-a522-4b64ee9d41cf) ![scene-02](https://git.kayg.org/attachments/d18eb0e0-bd8b-4eb5-91bd-0c461bb0f9f1) ![scene-03](https://git.kayg.org/attachments/5512afe3-439b-4551-9bb7-b595c9de5bba) ![scene-04](https://git.kayg.org/attachments/2a710bf6-59a3-4fc6-89e5-5a45580c560d) ![scene-05](https://git.kayg.org/attachments/d8c87e20-4099-4562-8542-c803d8c5c45d) ![scene-06](https://git.kayg.org/attachments/d1be4193-10e8-497f-94fe-6e4933062aba) ![scene-07](https://git.kayg.org/attachments/d9d2717b-f93d-4177-b37c-67e3766c68fc) ![scene-08](https://git.kayg.org/attachments/bc02b414-7188-4abf-8721-ace620864c4a) ![scene-09](https://git.kayg.org/attachments/159ab044-a552-4288-80ed-81ccab2bcdbc) ![scene-10](https://git.kayg.org/attachments/ea91f465-9f69-4455-a618-8ab82d5d3d2c) ![scene-11](https://git.kayg.org/attachments/309a123e-1cf2-4930-8320-805646c62ecf) ![scene-12](https://git.kayg.org/attachments/c8c6ec80-8aed-4c32-a70a-878b1b73205e) **Desktop 1440×900 @2x, paper** ![scene-01](https://git.kayg.org/attachments/28c3e44e-bf66-42be-90ed-406bddbeb12e) ![scene-02](https://git.kayg.org/attachments/abe3f6b4-f974-4c2a-83b0-8f5a2f1446aa) ![scene-03](https://git.kayg.org/attachments/eeff34d5-fe3d-463f-8bcf-d35ae38437cf) ![scene-04](https://git.kayg.org/attachments/b18a8820-2f93-4e43-bdf5-a82eed7e1b9e) ![scene-05](https://git.kayg.org/attachments/2b536637-4283-4ad7-a0bc-c781bf087e43) ![scene-06](https://git.kayg.org/attachments/b31863a9-5ea1-4266-90ec-8fa5f4bb6acb) ![scene-07](https://git.kayg.org/attachments/205923b5-7b7f-481d-b790-27f316497770) ![scene-08](https://git.kayg.org/attachments/21636a65-462a-4ecb-8b82-09f618b0403f) ![scene-09](https://git.kayg.org/attachments/714e88fe-d069-496d-b51d-d81a821ee09a) ![scene-10](https://git.kayg.org/attachments/e96ef7d4-91f8-44f7-be08-5d62b3283e30) ![scene-11](https://git.kayg.org/attachments/cff7b10b-1525-407c-8af1-55c15198e342) ![scene-12](https://git.kayg.org/attachments/30216332-3283-4e1d-a7f0-19849678602d) **Phone 393×852 @3x, ink** ![scene-01](https://git.kayg.org/attachments/8de99f2d-b205-4e28-95ec-38632f225b75) ![scene-02](https://git.kayg.org/attachments/4526fe8a-0dc1-43d8-9b70-e0bd9212029b) ![scene-03](https://git.kayg.org/attachments/09583126-ab03-4c68-8f6e-37d7e59deb6f) ![scene-04](https://git.kayg.org/attachments/9d1e4bb0-4185-475c-9a64-d0764ad1a621) ![scene-05](https://git.kayg.org/attachments/9d0ade23-ac92-4537-8ed1-7c5c1aa565fa) ![scene-06](https://git.kayg.org/attachments/83145484-5148-435c-9a8b-02e828ac5706) ![scene-07](https://git.kayg.org/attachments/0e67dcdc-8054-417c-a49f-228d360aec0f) ![scene-08](https://git.kayg.org/attachments/4078e8fd-0491-47c2-a781-02b47da6e4e6) ![scene-09](https://git.kayg.org/attachments/46a53a28-a99c-4066-b3d5-c3a3f4459bd0) ![scene-10](https://git.kayg.org/attachments/1afd3a22-dcea-4842-a9cf-b807c6529616) ![scene-11](https://git.kayg.org/attachments/971cefce-b4e6-437c-8328-7866c7f561a5) ![scene-12](https://git.kayg.org/attachments/0137c28f-b7e9-431b-bfdb-c80be0b36771) **Phone 393×852 @3x, paper (first state only)** ![scene-01](https://git.kayg.org/attachments/eb10ec85-0495-4fa2-82f1-0a5837a05267) ![scene-02](https://git.kayg.org/attachments/69f6ab81-d092-4d66-b0e1-53ebdd0d96ee) ![scene-03](https://git.kayg.org/attachments/7b74d897-d8e9-455b-86a8-e9dc82d38efb) ![scene-04](https://git.kayg.org/attachments/8dc06829-7363-4109-9145-6a6abd027df3) ![scene-05](https://git.kayg.org/attachments/4da8496e-3244-4c40-8160-74092b332267) ![scene-06](https://git.kayg.org/attachments/d4b18c7d-5f7e-41ef-a7eb-f7fa534c9621) ![scene-07](https://git.kayg.org/attachments/e49f9a06-fbe3-4b50-860b-a340ed3471f5) ![scene-08](https://git.kayg.org/attachments/d7f68aaf-19fe-46c5-beb8-7c48e252a39a) ![scene-09](https://git.kayg.org/attachments/2ce8f481-cc0d-4d8f-b7a3-adac310fb979) ![scene-10](https://git.kayg.org/attachments/5ca69d86-bcf5-4467-83a0-f562803f11a4) ![scene-11](https://git.kayg.org/attachments/bd43622b-aa6c-4bbb-9f67-ee602856502d) ![scene-12](https://git.kayg.org/attachments/6309b37b-c1cc-4d5b-b99a-c6c47b3b30a2)
Author
Owner

Update to the comment above: the branch head is now 57871651f (the preview at http://10.69.69.117:47650/mockups.html runs it). The captures above were taken one build earlier; the only difference is that the window terminals there hide their cursor until attached, a production change that was since removed from the branch. Gate output, what is left out, and the budget finding: #272.

Update to the comment above: the branch head is now `57871651f` (the preview at http://10.69.69.117:47650/mockups.html runs it). The captures above were taken one build earlier; the only difference is that the window terminals there hide their cursor until attached, a production change that was since removed from the branch. Gate output, what is left out, and the budget finding: #272.
Sign in to join this conversation.
No labels
launch-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/infraternal#104
No description provided.