24 lines
1.3 KiB
Markdown
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.
|