From 95da0c245783235e93da0fa0b85a806cb6df498d Mon Sep 17 00:00:00 2001 From: stroblme Date: Sat, 22 Aug 2026 13:19:41 +0200 Subject: [PATCH] NOTEPAD: clear what wave 4 closed, record what it left --- NOTEPAD.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/NOTEPAD.md b/NOTEPAD.md index c2942ed..eaef0ac 100644 --- a/NOTEPAD.md +++ b/NOTEPAD.md @@ -12,6 +12,18 @@ Deferring because out of scope is fine, but don't mention deferring than. ### To be sorted +- FEAT/SEC: `locked` is a read-only surface, not a permission — the server accepts a publish + from a panel whose dashboard says locked. Making it real means carrying the flag into + `_panel_may`. +- FEAT/UI: a dashboard forced light inside a dark app shell gets correct tokens but still + matches `dark:` variant utilities, because those compile to `&:is(.dark *)` and `` + always carries a theme class. Cosmetic (a few faint shadcn backgrounds); fixing it properly + needs a theme-scope mechanism CSS ancestor selectors cannot express today. +- CHORE/UI: the lock notice is on `PanelSurface` only, so `/dashboards/{name}` in read mode + shows disabled controls without the pill. +- CHORE/DOC: the docs call a cron `inject` node "a node publishing on a schedule". The node + type literally named `trigger` is a debounce/hold node, not a scheduler — worth renaming one + of the two eventually. - CHORE/DEMO: the demo panel now fills all 17 rows its 2560×1600 canvas holds, every row across all 16 columns. Another tile needs a rearrangement first — worth doing together with re-authoring `PAGES` as a single section. @@ -233,9 +245,6 @@ Decisions taken up front, because most items below depend on them: - CHORE/FLOW: one request/answer pair per InfluxDB node — the first input carrying a `flux` key is the request and the answer leaves on the first output port. A second query stream through one node needs a second node. -- FEAT/UI: per-dashboard theme — forced light, forced dark, or switched on a - schedule. View mode inherits localStorage and the OS preference today, which - a panel in a room has no way to set. NOTE: to solve this, we could introduce a general message sending to the overall dashboard (so far we only treat widgets in a dashboard as a receiver). We could e.g. have a toggle in the dashboard settings which says "propagate theme" which enables a field for defining a consume input (identical to a standard node input) and then a node can connect to this property by producing a corresponding message. This would nicely generalize to other dashboard settings later. This could later also serve as a security mechanism, i.e. the possibility to lock down dashboards remotely - CHORE/FLOW: porting the controls needs a declared writable message per control, since an input widget can only target what a flow declares. Declaring one is no longer API-only — the flow panel edits a flow's inputs and the canvas draws each