feat: v0.2.0 multi-active panels with layout-slots

Migrate the internal model from single-active scalar to multi-active
open_order array + per-id window records. register accepts opts.layout
(11 named slots: center, left, right, top, bottom, the four corners,
left-half, right-half — plus a custom function(sw,sh)->{x,y,w,h} hook
for HP-bars and bespoke positioning). open/close/is_open accept an
optional id argument for per-id semantics; the no-arg forms preserve
the v0.1.1 contract (close() removes the focused last-opened, is_open()
returns true if any panel is open).

Input dispatch iterates open_order in reverse so the topmost panel gets
the first crack at a click; misses fall through to lower windows.
is_pausing now checks every open window for pause_on_open=true, not
just the focused one.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Calic
2026-06-15 01:46:27 +02:00
parent 9ed60d3877
commit 0d21d8abec
3 changed files with 523 additions and 205 deletions

View File

@@ -1 +1 @@
{"id":"lib-core.panel","version":"0.1.1","api_min":"0.1","deps":[]}
{"id":"lib-core.panel","version":"0.2.0","api_min":"0.1","deps":[]}