DreamLake

Shareable view layouts — 2026-10-01

Status: app PR #656 merged at 2a5135ef; production published and signed-in live restoration verified. The app owns the bounded panel/state codec and idle writer. UIKit keeps interaction mechanics; no frame protocol, CLI command or artifact author API changes are introduced. The authoritative user behavior is Panels and agent control. The downloadable full docs bundle is regenerated from these source pages. The focused public Notes/CLI skills have no new task procedure: their existing panel-documentation link stays authoritative, so no generated core skill content needs a parallel manual edit.

Capture declared primitive display state only: sidebar collapse/folds, note outline/preview toggles, list query/filter/order, folder multi-selection/anchor, search reveal, and scroll positions. The path/query already owns folder/project location and route selection. Artifact query/fragment is retained verbatim after normalization; arbitrary iframe memory is outside the current author contract. Transient menus, unsaved editor text, credentials, RTC state and grants are not view layout data.

Version 6 carries the compact tree plus sorted state entries. It uses the accepted common-span mini-LZ encoder, bounded to a 4096-character search window and 64 candidates. Plain/compressed selection compares escaped URL length. IDs are exact; only the route's primary identity is implicit. Read compatibility remains for version 5, DEFLATE and prototype links. Decoding is bounded to 200 tree nodes, depth 20, 256 state entries, 200 primitives per entry, 2048 characters per string, 64,000 decoded characters and 32,000 escaped layout characters.

Runtime: mark dirty → coalesce 250 ms → request idle time with a 1000 ms deadline (or timer fallback) → read latest tree/state → encode → replace history. Cancel superseded work and teardown, and guard route changes. Scroll data lives in refs. Restore display preferences after durable-preference effects without saving the recipient's URL seed into their persistent preferences. Restore scroll as content arrives, yielding to user input. The app's replaceRoot adapter suppresses UIKit's first-leaf focus while replacing a tree, preserving a visible focused tab or adopting the incoming active tab. Title updates must not change the active note.

Auxiliary note metadata probes run at most four concurrently; body URLs are not prefetched. 403/404 leaves empty regions or removes unavailable tabs. Primary access and artifact loaders keep their existing authorization paths. Transient errors stay with normal loader retry.

Validation: codec state and exact-ID round trips, malformed/oversized input, legacy formats, burst/idle/cancellation tests, full unit suite, typecheck and SSR build; browser checks cover split widths/reload, missing auxiliary notes, native tab selection/reload, sidebar overrides, list query/order reload, and delayed-content reading position. Typecheck and production/SSR build passed, as did 344 test files and 3,533 unit tests (7 skipped), plus six browser tests against the built bundle. CI was requested with ci:full and runs in the background; results are unverified. Netlify deploy 6abebe2d171ea20008cebc98 published that exact app commit. Signed-in UI build 2a5135e restored the report and guide at 35/65 width; version 6 reload retained the collapsed sidebar and both 60 px reading positions. A separate list+note view retained search auto, order oldest and the primary note after reload. Missing auxiliary fallback remains mocked-browser evidence. Docs PR #871 published v0.1.53; live Markdown, illustration bytes and the complete downloadable docs skill bundle were verified. The lab report has five verified version milestones ending in codec-v2-production-verified.

Experiment lab report retains figures, separate corpus measurements and frequently tagged milestones.

Duplicate instances of the same note currently share their reading/toggle state key. The 32K application cutoff is not a universal proxy/browser URL guarantee. Unsupported or oversized automatic updates retain the last usable URL.