The Board becomes a document workspace - #6
Merged
Merged
Conversation
Order by durable creation or completion keys with uid, origin and id ties. Keep Resting warmth and return groups, and choose mirrored survivors deterministically without collapsing unrelated host-local paths. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Expose the In flight ordering seam without adding independent scrollers. Stage both bands in the offline harness and verify grouping, stable positions, queue peeks and row-to-card drops through both wrapped bands. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Inactive previews share one initial read but never poll on the periodic clock. Parked previews cancel that read; returning unfinished previews can retry once without activating a subscription. Workspace chords exclude Shift-Alt arrows. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Watchers signal per-subscriber recovery independently of changed bytes. HTML and text readers report readiness without repainting a retained document after a 304 or identical 200. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Install the window-bubble bridge after report load handlers. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Route owner-addressed channels through a retained filmstrip stage, keep Desk layout and focus available on return, and isolate Conversation in the existing control surface. Cover loading, navigation, body links, stable controls and CSS token contracts in integration tests. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
…me size Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Keep live document frames attached while the stage narrows, route refused launches into the channel recovery form, and give phone sheets one Back entry. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Overview implementation and label workers have final tests and commits pending; phone and scroll restoration verification remain open. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
The dock lives as long as the board, as the inspector did, so meeting, transition and worker-phase collaborators stay where they are and the board's polls repaint its worker pill directly. Phone sheets trap Tab and make the stage inert; body reads keep the live worker fields of the composite feed. Behaviour tests for the composer, images, start prompt, requeue, worker pill, meeting and settings writes now exercise the dock. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: GPT-6 Luna <noreply@openai.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A candidate displaces only a live body of strictly lower priority (on screen > in the ring > elsewhere), so a dense sheet no longer trades iframes back and forth on every load; the churn crashed the browser on the live fleet sheet. The lens becomes a radio group in the Desk's tab register, the heading carries the illuminated initial, and host marks extend to eight shapes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Shared material tokens (parchment, sheet, plate, card paper, ochre rule, iron gall at four strengths) join the pigments on :root and the Desk reads them; every --ws-* colour derives from them. Chrome and metadata take the Desk's mono register, names and prose the serif, cobalt marks only the machine, gold only fresh or waiting, and keyboard focus wears the Desk's dashed rule. The drafting grid stays as the workspace's own note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The sidebar lists the overview's rows on a column sheet with its own find, opens by default at 1280px and wider, and remembers an explicit choice from the navbar control or Cmd-backslash. The tab strip centres over the stage beside it. A channel entered directly reads the overview so the rows exist, and folios placed before the board's metadata arrived take their names and groups from it once it does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Back and Forward through #/desk, #/chronicle and #/board switch the board's view. The view keys work from the reader, so 1 parks a channel opened from the Board and 3 returns to it; only channels entered from the Board are remembered as the Board's place. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Preserve the document workspace control band and carry startup-rejection handling into Dock. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Review item 2: reconcile by owner and uid through Workspace.update, preserving the composer and retargeting worker actions. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Review item 3: re-seed agent, kind, cron, date and parent baselines without replacing drafts or focused controls. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Review item 6: sessionless 409 holds only until the next changed worker observation. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Review item 7: preserve message-less Desk drag intent unless the parked composer changes; consume only a composed successful message. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Use metadata validators above one MiB, file-backed large responses, bodyless HEAD handling, and four-MiB open-ended ranges. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Distinguish malformed ranges from valid ranges outside the representation; preserve 416 for unsatisfiable open-ended and suffix requests. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Review item 8: keep the fold state and toggle focus while refreshing the ledger and current owner attach targets. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Review item 9: one queue per band, changed-axis writes, last-intent reversal and selective failure rollback; successful parent writes retarget queued edits before polling. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Shorten valid single remote ranges to four MiB before GET, relay at most 64 KiB of an error body after receipt, and route HEAD through the existing secure httpc setup. Full GET and If-Range 200 fallbacks retain buffering and the 30-second timeout. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Review item 1 is fixed in the baseline; new regressions cover fresh, resume, Start retry and Desk drag. Observed all four fail with the status arguments temporarily removed, then pass after restoring them. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Review item 14 Dock subset: field swallow callbacks are reachable, so preserve isolation with one band-root listener instead of passing a helper through every builder. Workspace owns runtime updates for identity-keyed bands. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6 Luna <noreply@openai.com>
Co-Authored-By: GPT-6 Luna <noreply@openai.com>
Co-Authored-By: GPT-6 Luna <noreply@openai.com>
Co-Authored-By: GPT-6 Luna <noreply@openai.com>
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.
The Board becomes a document workspace, and every way of opening a fiber leads into it.
Design authority, decisions and the review are in the felt constitution
ai-futures/felt/constitutions/document-workspace(design.md,review-findings.md).What changes for a person using the board
?overlay lists it.ctoggles the Constitutions sidebar and/searches.--kbn-*tokens, and every--ws-*colour derives from them.Daemon
GET /fileserves byte ranges (Range, If-Range, 206/416).Remote full-GET fallbacks still buffer within the existing 30 s timeout.
Verification
Gates on the final head (observed):
make test: Go suite, ExUnit, the UI suite under both pinned time zones, plugin hooks and bootstrap all pass.make build SKIP_CLI=1passes.cd ui && npm run e2e: 24/24 browser checks pass. The suite drives the board harness with playwright-core and system Chrome. It covers Desk keys, card → reader, stepping, expand and resize, the inline controls, the worker pill, wikilinks to non-card fibers, the overview, real audio and video playback, PDF, and the phone layout. It asserts document identity (no reloads) and that no page errors occur.Live real-data checks ran through vite against the dapmcw68 daemon, using documents owned by candide, cineca and amundsen, at 1440×900 and 390×844. An independent Opus review covered the daemon, data safety, entry points, security and dead code. All of its must-fix and fix-soon items have regression tests that fail before the fix.
Known follow-ups
srcdoc, as they did on main. Sandboxing them means porting scrolling, scroll restore and media binding to the bridge.🤖 Generated with Claude Code
https://claude.ai/code/session_01LQP1nDgXogDRnyMZNK3hoY