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

24 lines
1.3 KiB
Markdown

# 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.