Files
lumbridge-code/docs/decisions/0011-dynamic-panels-have-persistent-local-identities.md
karti 3409cabb80
CI / rust (push) Successful in 2m10s
feat: add persistent dynamic panels
2026-08-31 18:43:36 -07:00

1.3 KiB

0011: Dynamic panels have persistent local identities

Status: accepted for the GPUI product slice.

The six-surface fixture remains a deterministic benchmark shared with Floem; it is not the product's panel database. GPUI layers an unbounded workspace registry above it. Add Panel creates Terminal, Browser, Markdown, or Review beside the selected panel. Each new panel receives a monotonically increasing PanelId that is never derived from its title, position, surface, process ID, or visible index.

The registry persists panel identity, kind, title, target, order, attachment, selection, and the next unused ID as one versioned, credential-free SQLite snapshot. Invalid snapshots fail closed to the seed layout rather than partially restoring aliases. SQLite never stores terminal output, credentials, private keys, subscription tokens, or Buzz identity secrets through this boundary.

Every Terminal panel uses its PanelId as the runtime-registry key. Detaching changes only layout attachment, so the actor and PTY keep running. Reattaching selects the same ID. A restored in-process spike must currently launch a new PTY for that persisted panel because actor durability across UI process restarts requires the planned separate Lumbridge runtime and authenticated IPC; the UI does not pretend otherwise.