From 5a968fd0764db30b81034fe9eac7c8140d3506c0 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Fri, 30 Oct 2026 15:22:25 +0100 Subject: [PATCH 1/5] Inset the topbar, filter bar, pager, form page and empty table by --pad-x --- public/css/styles.css | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/public/css/styles.css b/public/css/styles.css index 341a100..5b2a4d3 100644 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -58,7 +58,7 @@ --radius: 5px; --nav-w: 264px; --row-h: 34px; - --pad-x: 12px; + --pad-x: 12px; /* every horizontal inset from the page's edge, and a table cell's */ --fz: 13px; --fz-sm: 12px; --fz-xs: 11px; @@ -336,7 +336,7 @@ span.nav-self { cursor: default; } /* static / non-clickable */ .topbar { flex: 0 0 auto; height: 48px; display: flex; align-items: center; gap: 12px; - padding: 0 16px; border-bottom: 1px solid var(--border); + padding: 0 var(--pad-x); border-bottom: 1px solid var(--border); background: var(--surface); } .hamburger { display: none; } /* shown only on narrow */ @@ -352,7 +352,7 @@ span.nav-self { cursor: default; } /* static / non-clickable */ .filters { flex: 0 0 auto; background: var(--surface); border-bottom: 1px solid var(--border); - padding: 10px 16px; + padding: 10px var(--pad-x); display: flex; flex-direction: column; gap: 9px; } .filter-row { @@ -584,7 +584,7 @@ table.table { .col-num { text-align: right; } .cell-strong { font-weight: 550; } .cell-muted { color: var(--text-muted); } -.table-empty { text-align: center; color: var(--text-muted); padding: 28px 12px; } +.table-empty { text-align: center; color: var(--text-muted); padding: 28px var(--pad-x); } .cell-mono { font-variant-numeric: tabular-nums; font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: var(--fz-sm); } @@ -648,7 +648,7 @@ th[aria-sort="descending"] .sort-ico { transform: rotate(180deg); } .pager { flex: 0 0 auto; display: flex; align-items: center; gap: 12px; - padding: 8px 16px; border-top: 1px solid var(--border); + padding: 8px var(--pad-x); border-top: 1px solid var(--border); background: var(--surface); font-size: var(--fz-sm); color: var(--text-muted); } .pager .spacer { flex: 1 1 auto; } @@ -696,7 +696,7 @@ th[aria-sort="descending"] .sort-ico { transform: rotate(180deg); } #nav-toggle { position: fixed; top: 0; left: 0; opacity: 0; pointer-events: none; } /* admin forms: create/edit user, account actions */ -.form-page { padding: 16px; display: flex; flex-direction: column; gap: 14px; max-width: 560px; } +.form-page { padding: 16px var(--pad-x); display: flex; flex-direction: column; gap: 14px; max-width: 560px; } .form-card { display: flex; flex-direction: column; gap: 14px; padding: 18px; background: var(--surface); -- 2.52.0 From ad3bb3198e7e704de76e2c64d1121c2a999383ec Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Fri, 30 Oct 2026 20:50:33 +0100 Subject: [PATCH 2/5] =?UTF-8?q?Answer=20security=20round=201:=200=20?= =?UTF-8?q?=F0=9F=94=B4,=200=20=F0=9F=9F=A1=20(0=20misread);=20no=20findin?= =?UTF-8?q?gs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -- 2.52.0 From 18b6a5a64ab45e8b9e9c1c04e74090e2fe04cf49 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Fri, 30 Oct 2026 20:50:33 +0100 Subject: [PATCH 3/5] =?UTF-8?q?Answer=20prose=20round=201:=201=20?= =?UTF-8?q?=F0=9F=94=B4,=200=20=F0=9F=9F=A1=20(0=20misread);=20name=20the?= =?UTF-8?q?=20boxes=20--pad-x=20governs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/css/styles.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/css/styles.css b/public/css/styles.css index 5b2a4d3..3250bc4 100644 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -58,7 +58,7 @@ --radius: 5px; --nav-w: 264px; --row-h: 34px; - --pad-x: 12px; /* every horizontal inset from the page's edge, and a table cell's */ + --pad-x: 12px; /* side padding of the content pane's bars and form page, and of every table cell, so their text lines up */ --fz: 13px; --fz-sm: 12px; --fz-xs: 11px; -- 2.52.0 From 77b7e6143fdea7c24292dd95d319b197cc300ab5 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Fri, 30 Oct 2026 20:50:33 +0100 Subject: [PATCH 4/5] =?UTF-8?q?Answer=20stability=20round=201:=200=20?= =?UTF-8?q?=F0=9F=94=B4,=201=20=F0=9F=9F=A1=20(0=20misread);=20file=20the?= =?UTF-8?q?=20scheduling=20example's=20inset?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- todo.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/todo.md b/todo.md index 025755f..b536222 100644 --- a/todo.md +++ b/todo.md @@ -6,7 +6,7 @@ `Bar = 1` -`Next ID = 27` +`Next ID = 28` ## Items @@ -24,6 +24,7 @@ | 24 | 0.4.21 | | | **Retire `src/ui/shell-context.ts` and render the dashboard from `ctx.chrome`.** | 2 | 1 | 2 | 3 | 4 | code health by 3 | 9.0 | | 17 | 0.4.21 | | | **Remove the icons no caller uses from `ICON_NAMES` and the sprite.** | 1 | 1 | 1 | 1 | 1 | 8 by 1, code health by 1 | 8.8 | | 21 | 0.4.21 | | | **Fail the gate on a function that exceeds a size or complexity limit.** | 3 | 1 | 1 | 3 | 5 | code health by 4 | 7.2 | +| 27 | 0.4.21 | | | **Inset the scheduling example's lead text, shift count, alerts and call-to-action by `--pad-x`, like the bars around them.** | 1 | 2 | 1 | 2 | 1 | 9 by 2, 2 by 1 | 4.8 | | 25 | 0.4.21 | | | **Point the views' references to `docs/plugin-contract.md` at the README.** | 1 | 2 | 1 | 2 | 1 | 9 by 3 | 4.6 | | 20 | 0.4.21 | | | **Redirect an anonymous hit on a session-needing flow page to sign-in, instead of a 500.** | 2 | 2 | 2 | 4 | 3 | 2 by 4 | 4.2 | | 4 | 0.4.21 | | | **Refuse a permission save whose baseline no longer matches Keto, so concurrent edits are not silently lost.** | 2 | 2 | 2 | 4 | 4 | 2 by 4 | 2.8 | @@ -91,6 +92,11 @@ AGENTS.md → "`ICON_NAMES` is a host-owned registry" already makes this routine Only `tsc --strict` runs today. A new tool is a new dependency, so justify it. +### 27. Inset the scheduling example's lead text, shift count, alerts and call-to-action by `--pad-x`, like the bars around them. + +They sit flush against the content pane's edge while the filter bar, table and pager sit 12px in. +The fix belongs in `examples/plugins/scheduling/public/scheduling.css`; check each page in a browser. + ### 25. Point the views' references to `docs/plugin-contract.md` at the README. `examples/plugins/scheduling/views/shifts.ejs` still cites it. -- 2.52.0 From 79f26491db52af054bbc23c1c6abd54aa4a6f121 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Fri, 30 Oct 2026 20:50:33 +0100 Subject: [PATCH 5/5] =?UTF-8?q?Answer=20product-owner=20round=201:=200=20?= =?UTF-8?q?=F0=9F=94=B4,=200=20=F0=9F=9F=A1=20(0=20misread);=20add=20a=20c?= =?UTF-8?q?hangelog=20entry?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c709ee7..682642a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ The release version **is** the plugin contract version (`HOST_API_VERSION`), so contract break: a plugin's `apiVersion` must match the host's `major.minor` or discovery refuses it at boot. Entries start at 0.3.0. +## Unreleased + +### One horizontal inset across the content pane + +The topbar, filter bar, pager, form page and empty-table message inset their content by `--pad-x` +(12px), as table cells do, instead of 16px. A plugin that overrides `--pad-x` now moves all of them +together. + ## 0.4.0 **Breaking.** Set `apiVersion: "0.4.0"`. The app shell no longer bounds the content column, so a page -- 2.52.0