Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions assets/design-export/MANIFEST.md
Original file line number Diff line number Diff line change
Expand Up @@ -2779,3 +2779,21 @@ Redraws the Spec 019 language pass on the regrouped canvas. It replaces the 2026
**Re-exported:** `n6Xlo` was re-exported in full from `Get(id, {depth: 30, includePathGeometry: true})` (sink Language rows added).

**Verification method:** for each of the 16 spec 019 JSON exports (`lWvcv`, `T1wkiT`, `N1GkB`, `gX7um`, `WZdnw`, `g2HLxz`, `vp8BJ`, `HKEl2`, `lCTci`, `GsofJ`, `SUcad`, `z3mtgc`, `S0P4bl`, `Ii9Hy`, `TSXYO`, `n6Xlo`), the live export `JSON.stringify(Get(id, {depth: 30, includePathGeometry: true}))` and the file `JSON.stringify(JSON.parse(file))` were compared by length and FNV-1a 32-bit hash over UTF-16 code units. All 16 match. None contains the `"..."` truncation marker.

## Incremental export 2026-10-31 — Reserve less than the limit (Burstable QoS) on Resources settings and Create Server step 3 (PR #815)

| Node | Name | Change |
| --- | --- | --- |
| `E0ypH` | Screen/Server Detail — Settings · Resources | Re-exported (1440×900, unchanged size; y 41967 → 42130). New row `xuyWG` "Field Reserve less" under CPU cores and Memory (GiB): a copy of the Lifecycle "Field Auto-restart" row with the label "Reserve less than the limit", the help text "Off: the server reserves its full CPU and memory (Guaranteed QoS). On: …", and a `Gameplane/Switch/Off` (`rh2QH`) instance. The Auto-restart row's state text is not copied: the app shows the switch alone. |
| `NqaaU` | Screen/Server Detail — Settings · Resources (Reserve less on) | New copy of `E0ypH` to its right (1440×1000). Switch is `Gameplane/Switch/On` (`hl7R3`); CPU and memory hints read "Limit: the most CPU/memory this server can use."; two new rows built from the CPU and memory rows (slider + number + unit): "Reserved CPU" (1 core, hint "Counted when the server is placed on a node. 0 reserves nothing.") and "Reserved memory (GiB)" (2 GiB, hint "When a node runs out of memory, servers above their reservation are stopped first. Keep it close to real use."). The frame is 100px taller so StorageClass is not clipped. |
| `vUqMl` | Screen/Create Server — Step 3 Configure | Re-exported (1440×1989, was 1440×1920). New block `pL1xq` "ReserveLess" under the CPU / Memory pair: a `Gameplane/Switch/Off` instance with "Reserve less than the limit" beside it and the 11px helper "Only the reserved amount counts when the server is placed on a node, so more servers fit; …". The frame and ModalContainer grew 69px to keep the modal's 77px margins. |
| `NLu2I` | Screen/Create Server — Step 3 Configure (Reserve less on) | New copy of `vUqMl` to its right (1440×2083). Switch is `Gameplane/Switch/On`; a second two-column row `w0lzM` "ReservedRow", a copy of the CPU / Memory "ResourceRow", reads "Reserved CPU" (1 core) and "Reserved memory" (2 GiB) with half-filled sliders and no "Max … (largest node)" helper, as in `CreateServer.tsx`. |

Source: `web/src/routes/tabs/settings/Resources.tsx` and the Configure step of `web/src/routes/CreateServer.tsx` on branch `feat/web-resource-reservation`. No reusable component was changed. `pen-componentize` `audit.js`: nothing new on the four frames; the findings it lists for `vUqMl`/`NLu2I` (`CodeBlockWrap` ≈ `Gameplane/YAML Block`, the "Node placement" segmented control) predate this change and are left as they were. `check-layout.js`: `NO ISSUES`.

**Exports:** JSON from `Get(id, {depth: 80, includePathGeometry: true})`, pretty-printed (zero `"..."` elisions, `python3 -m json.tool` passes; `vUqMl.json` keeps its CRLF line endings). PNG from `Export(ids, "png", …, {scale: 2})`: `E0ypH` 2880×1800, `NqaaU` 2880×2000, `vUqMl` 2880×3978, `NLu2I` 2880×4166. Done in a headless `pen interactive` session (pen.dev CLI 0.3.14); unpkg.com is blocked in that sandbox, so the lucide icon font was served from the `lucide-static@0.563.0` npm tarball (same file unpkg serves). Body-text checks: `"Counted when the server is placed on a node"` only in `NqaaU.json`; `"Off: the server reserves its full CPU"` in `E0ypH.json` and `NqaaU.json`; `"Only the reserved amount counts when"` in `vUqMl.json` and `NLu2I.json`; `"Reserved memory"` in `NLu2I.json` and `NqaaU.json`.

**Row moves (JSON root `y` only, no PNG change):** Row 07 grew from 1920 to 2083 (tallest item `NLu2I`) and Row 23 from 900 to 1000 (tallest item `NqaaU`), so every root node below Row 07 moved down 163px and every root node below Row 23 a further 100px (pen-canvas-layout procedure A). The committed exports of the moved nodes were patched in place:

- +163 (Rows 08–23): `a7o9C`, `akr4I`, `b4eaUf`, `Bbnga`, `BguST`, `Burtr`, `dBILX`, `dPP50`, `e9FnC`, `eGbsg`, `EZFW0`, `f1Vga`, `FtdkI`, `GayoL`, `hLB9Z`, `hlwx3`, `Hy9r0`, `IzuY2`, `j88bl0`, `KhYNc`, `kPmoo`, `lhKzN`, `m5kOm4`, `O08uaD`, `o4LH8W`, `OC804`, `oMuyw`, `P08Uw`, `pssCT`, `QFEg9`, `QQtUD`, `Ss0Yr`, `sSISK`, `SUtGZ`, `swxkJ`, `sZtDi`, `TE2jI`, `tY6RD`, `U9xSg`, `uCA23`, `UMJli`, `V1VhGE`, `VctzT`, `w1QYmf`, `wxINm`, `X405l`, `x7MJI`, `Xn5ns`, `xvlB6`, `YN8cE`, `ZU1BG`
- +263 (Rows 24–57): `aMU7O`, `Be7ZW`, `Bq2Yg`, `bYDHC`, `C2LQE4`, `C9bR6`, `Cb3eC`, `cDiNb`, `D9QYZ`, `DBQyF`, `dhPtX`, `Dpb9f`, `DPrYX`, `dQV9N`, `dxdEi`, `DxKOh`, `e9lV4`, `EcoGD`, `EKJyM`, `epZO2`, `EWrn0`, `fbBqA`, `FBiMN`, `fK8Bi`, `FOVMf`, `g5mEpx`, `gWqMD`, `hmPL7`, `HVhmb`, `i1bLR`, `i8wib`, `IdbiB`, `iLm38`, `IMSD5`, `IyMFM`, `iYUWc`, `J5pjJ3`, `j9W8A`, `jXykV`, `K5XinZ`, `KaRFX`, `kK8Ji`, `l64bd`, `l7TRz9`, `lCTci`, `lWvcv`, `M2sA4u`, `n2qdi`, `n6Xlo`, `Ne5TA`, `nGJE1`, `NKiqf`, `nNGDX`, `O5kaV`, `oPF1n`, `p8QSPq`, `pnAbF`, `q31B6w`, `qFLfB`, `QgW58`, `QpEvu`, `r0heh`, `r139UP`, `RC3Kf`, `RodrS`, `RpHBg`, `RS0KZ`, `SUcad`, `T1wkiT`, `TBvTC`, `tr6cE`, `tSOeI`, `tTSdi`, `ugDSa`, `uMiwd`, `uoxQW`, `Uzzje`, `VfB0Y`, `Wj0V4`, `WrmU5`, `WZdnw`, `xCJlu`, `XR0f9`, `y3YcQ`, `Y5cmvI`, `yrxK2`, `Z0oyh`, `ZlLf0`, `zM0VF`, `zqzr4`
2 changes: 1 addition & 1 deletion assets/design-export/json/Bbnga.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "Bbnga",
"x": 0,
"y": 36707,
"y": 36870,
"name": "Screen/Server Detail — Capture (Not enabled)",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/Be7ZW.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "Be7ZW",
"x": 4920,
"y": 63669,
"y": 63932,
"name": "Screen/Standalone — Cluster inventory (No selection)",
"context": "PR #630. Selection is explicit and only registered remotes are listed. No implicit local target; no workload requests until installation and selected target are known.",
"theme": {
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/BguST.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "BguST",
"x": 6560,
"y": 40607,
"y": 40770,
"name": "Screen/Server Detail — Settings · Game configuration (Password will be removed)",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/Bq2Yg.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "Bq2Yg",
"x": 0,
"y": 72769,
"y": 73032,
"name": "Screen/Admin — System Logs",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/Burtr.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "Burtr",
"x": 0,
"y": 30207,
"y": 30370,
"name": "Screen/Server Detail — Files",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/C2LQE4.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "C2LQE4",
"x": 0,
"y": 91265,
"y": 91528,
"name": "Screen/Share Link — Up",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/C9bR6.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"ref": "x3beP",
"name": "Gameplane/Dialog/Edit user — Standalone (Remote grant)",
"x": 2320,
"y": 66269,
"y": 66532,
"theme": {
"semantic": "dark"
},
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/Cb3eC.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "Cb3eC",
"x": 1640,
"y": 60819,
"y": 61082,
"name": "Screen/Backups — Schedules filters open",
"context": "Implemented at 8e08a60f. Filter fields are drafts; Apply commits, Clear resets drafts, dismissal discards edits. Server choices retain location and namespace.",
"theme": {
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/D9QYZ.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "D9QYZ",
"x": 1640,
"y": 81968,
"y": 82231,
"name": "Screen/Standalone — Settings · Backup destinations",
"context": "PR #630 standalone installation. No local Kubernetes metadata or local workload fallback. Master-key storage and offline rotation have no dashboard controls.",
"theme": {
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/DBQyF.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "DBQyF",
"x": 6560,
"y": 87233,
"y": 87496,
"name": "Screen/Admin Settings — Telemetry (disabled)",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/DPrYX.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "DPrYX",
"x": 0,
"y": 59519,
"y": 59782,
"name": "Screen/Backups — Index",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/Dpb9f.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "Dpb9f",
"x": 0,
"y": 70169,
"y": 70432,
"name": "Screen/Users & RBAC — Identity providers",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/DxKOh.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "DxKOh",
"x": 0,
"y": 71469,
"y": 71732,
"name": "Screen/Audit Log",
"theme": {
"semantic": "dark"
Expand Down
62 changes: 61 additions & 1 deletion assets/design-export/json/E0ypH.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "E0ypH",
"x": 0,
"y": 41967,
"y": 42130,
"name": "Screen/Server Detail — Settings · Resources",
"theme": {
"semantic": "dark"
Expand Down Expand Up @@ -369,6 +369,66 @@
}
]
},
{
"type": "frame",
"id": "xuyWG",
"name": "Field Reserve less",
"width": "fill_container",
"gap": 16,
"children": [
{
"type": "frame",
"id": "oWMYX",
"name": "lbl",
"width": 200,
"layout": "vertical",
"gap": 4,
"children": [
{
"type": "text",
"id": "AWqw1",
"name": "t",
"fill": "$foreground/foreground",
"content": "Reserve less than the limit",
"fontFamily": "$typography/font-sans",
"fontSize": 14,
"fontWeight": "normal"
},
{
"type": "text",
"id": "Ce3T8",
"name": "h",
"fill": "$muted",
"textGrowth": "fixed-width",
"width": 200,
"content": "Off: the server reserves its full CPU and memory (Guaranteed QoS). On: it reserves less, so more servers fit on a node, and uses more up to its limit when the node has room (Burstable QoS).",
"fontFamily": "$typography/font-sans",
"fontSize": 12,
"fontWeight": "normal"
}
]
},
{
"type": "frame",
"id": "q9ZQKc",
"name": "ctrl",
"width": "fill_container",
"height": 28,
"gap": 12,
"alignItems": "center",
"children": [
{
"id": "XFdCR",
"type": "ref",
"ref": "rh2QH",
"name": "Switch",
"width": 36,
"height": 20
}
]
}
]
},
{
"type": "frame",
"id": "djYXg",
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/EKJyM.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "EKJyM",
"x": 8200,
"y": 43267,
"y": 43530,
"name": "Server Detail · Settings · Networking · Provider + credentials complete",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/EWrn0.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "EWrn0",
"x": 4920,
"y": 55687,
"y": 55950,
"name": "Screen/Standalone — Modules (East selected)",
"context": "Background refetch failures display an inline retry banner and retain existing data plus open install/upload/builder/source drafts. Only an initial failure replaces loading content. Explicit target changes discard drafts.",
"theme": {
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/EZFW0.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "EZFW0",
"x": 0,
"y": 24182,
"y": 24345,
"name": "Screen/Server Detail — Overview",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/EcoGD.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "EcoGD",
"x": 4920,
"y": 91265,
"y": 91528,
"name": "Screen/Share Link — Starting",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/FBiMN.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "FBiMN",
"x": 3280,
"y": 91265,
"y": 91528,
"name": "Screen/Share Link — Asleep (Start cooldown)",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/FOVMf.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "FOVMf",
"x": 1640,
"y": 89965,
"y": 90228,
"name": "Screen/Standalone — Settings · About",
"context": "Panel build version comes from authenticated installation metadata; standalone About does not fetch local Kubernetes metadata.",
"theme": {
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/FtdkI.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "FtdkI",
"x": 1640,
"y": 28907,
"y": 29070,
"name": "Screen/Server Detail — Logs (Failed)",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/GayoL.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "GayoL",
"x": 3280,
"y": 31507,
"y": 31670,
"name": "Screen/Server Detail — Mods — Browse (added)",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/HVhmb.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "HVhmb",
"x": 8200,
"y": 63669,
"y": 63932,
"name": "Screen/Standalone — Remove cluster",
"context": "Removal errors stay inside the confirmation and reset when dismissed or reopened. Successful removal clears a matching current selection to empty without selecting local or another remote.",
"theme": {
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/Hy9r0.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "Hy9r0",
"x": 6560,
"y": 24182,
"y": 24345,
"name": "Screen/Server Detail — Overview (Idle armed)",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/IMSD5.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "IMSD5",
"x": 3280,
"y": 54387,
"y": 54650,
"name": "Screen/Server Detail \u2014 Settings \u00b7 Danger zone (Owner-only)",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/IdbiB.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "IdbiB",
"x": 0,
"y": 58137,
"y": 58400,
"name": "Screen/Dialog/Build Module — Step 1 (Preset & Metadata)",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/IyMFM.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "IyMFM",
"x": 9840,
"y": 43267,
"y": 43530,
"name": "J5pjJ3 states/Tunnel enabled",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/IzuY2.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "IzuY2",
"x": 3280,
"y": 24182,
"y": 24345,
"name": "Screen/Server Detail — Overview (Never sleeps)",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/J5pjJ3.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "J5pjJ3",
"x": 0,
"y": 43267,
"y": 43530,
"name": "Server Detail · Settings · Networking · Complete",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/K5XinZ.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "K5XinZ",
"x": 8200,
"y": 87233,
"y": 87496,
"name": "Screen/Admin Settings — Telemetry (none)",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/KaRFX.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "KaRFX",
"x": 0,
"y": 47887,
"y": 48150,
"name": "Screen/Server Detail — Settings · Scheduled backups",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/KhYNc.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "KhYNc",
"x": 1640,
"y": 31507,
"y": 31670,
"name": "Screen/Server Detail — Mods (by ID)",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/M2sA4u.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "M2sA4u",
"x": 0,
"y": 88665,
"y": 88928,
"name": "Screen/Admin Settings — Updates",
"theme": {
"semantic": "dark"
Expand Down
2 changes: 1 addition & 1 deletion assets/design-export/json/NKiqf.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"type": "frame",
"id": "NKiqf",
"x": 3280,
"y": 59519,
"y": 59782,
"name": "Screen/Mobile — Backups filters open",
"theme": {
"semantic": "dark"
Expand Down
Loading
Loading