stroblme and Claude Opus 5.5
29aca91978
Chat panel follows its tail by scrolling its own body (SidePanel body gets data-slot side-panel-body) instead of scrollIntoView, which scrolls every ancestor
...
Docs / docs (push) Successful in 25s
Playwright Tests / test-playwright (1, 2) (push) Failing after 4m15s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m21s
pre-commit / pre-commit (push) Failing after 2m24s
Test Backend / test-backend (3.12) (push) Successful in 4m25s
Test Backend / test-backend (3.14) (push) Successful in 4m17s
Compose Smoke Test / test-compose (push) Successful in 36s
Playwright Tests / merge-reports (push) Successful in 1m38s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 10:50:23 +02:00
stroblme and Claude Opus 5.5
7eef6c0eca
Logs panel follows its tail by scrolling its own list: scrollIntoView scrolled every ancestor too, so with the code editor expanded each new line slid the whole editor up to bring the hidden dock into view
...
Docs / docs (push) Successful in 23s
Playwright Tests / test-playwright (1, 2) (push) Failing after 4m17s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m18s
pre-commit / pre-commit (push) Failing after 2m22s
Playwright Tests / merge-reports (push) Canceled after 0s
Test Backend / test-backend (3.12) (push) Canceled after 2m3s
Test Backend / test-backend (3.14) (push) Canceled after 0s
Compose Smoke Test / test-compose (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 10:39:09 +02:00
stroblme and Claude Opus 5.5
5ddd02d88b
Panels dialog: opens without focusing a field, a panel title saves on blur, Enter or Escape instead of per keystroke, and a new panel's name previews its URL. Docs
...
Docs / docs (push) Successful in 23s
Playwright Tests / test-playwright (1, 2) (push) Failing after 4m10s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m14s
pre-commit / pre-commit (push) Failing after 2m37s
Test Backend / test-backend (3.12) (push) Successful in 4m53s
Test Backend / test-backend (3.14) (push) Successful in 4m10s
Compose Smoke Test / test-compose (push) Successful in 34s
Playwright Tests / merge-reports (push) Successful in 1m35s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 09:25:34 +02:00
stroblme and Claude Opus 5.5
8074360e81
Duplicate flow: references to its own messages under its own name follow the copy
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 09:22:57 +02:00
stroblme and Claude Opus 5.5
0319842ab4
Overview lists: a duplicate button beside the trash while selecting copies the picked flows or dashboards as drafts, one request each, then clears the selection. Publish, delete and duplicate share one batch helper with their own toasts. Docs
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 09:21:42 +02:00
stroblme and Claude Opus 5.5
8a868e0f26
Duplicate flows and dashboards: POST /flows/{name}/duplicate and /dashboards/{name}/duplicate copy the working copy into {name}_copy (then _copy_2, ...) as an unpublished draft with " (copy)" on the title. A flow copy takes its node sources as drafts and leaves origin and runtime.json behind; copying code nodes is a superuser's (the save check, now taking the replaced copy). Client regenerated
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 09:21:30 +02:00
stroblme and Claude Opus 5.5
8b1a456cd3
Dashboard editor: copy and paste widgets across dashboards
...
Copy widget in the widget panel or mod+c keeps one widget in localStorage;
a paste button in the dock and mod+v insert it below the other widgets with
a fresh id. Placement is shared with adding a widget.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-16 09:20:23 +02:00
Melvin Strobl and Claude Opus 5.5
c281558804
Counter wrap stays on the step grid: it counts in span = top - lo + the finest step rather than the period, so one counter of step 5 up to 100 wraps 100 + 5 to 0 and 0 - 5 to 100; the time picker is unchanged. Check cases and docs formula
...
Docs / docs (push) Successful in 22s
Playwright Tests / test-playwright (1, 2) (push) Failing after 4m11s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m11s
pre-commit / pre-commit (push) Failing after 2m19s
Test Backend / test-backend (3.12) (push) Successful in 4m19s
Test Backend / test-backend (3.14) (push) Successful in 4m12s
Compose Smoke Test / test-compose (push) Successful in 34s
Playwright Tests / merge-reports (push) Successful in 1m36s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_016ezWcLmBCtTVKFPxfdK2MK
2026-10-16 09:00:36 +02:00
Melvin Strobl and Claude Opus 5.5
3105505192
Counter widget: one to three linked counters are the digits of one number, published on one message in the finest counter's unit (hours and minutes send 07:30 as 450, 07:55 + 5 min carries to 08:00); wraps or stops at the coarsest's min/max. The arithmetic is one pure module, ui/core/counter.ts, with counter.check.ts. A tile steps each counter with a press up and down and publishes once 300 ms after the last; a round face turns the selected counter on the ring (wheel, keys, a drag counted in steps), its arc where that counter stands in its turn, and a press on a counter's digits selects it. Default config is the time picker. Editor rows, widgetIssue, server type and dtype, docs
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_016ezWcLmBCtTVKFPxfdK2MK
2026-10-16 08:58:42 +02:00
Melvin Strobl and Claude Opus 5.5
0c7f8bde82
LAN stack gives out its LAN address: dev-lan sets FRONTEND_HOST to the published port on the host's default-route address, so the Panels dialog links a screen somewhere it can reach instead of app.localhost
...
Docs / docs (push) Successful in 22s
Playwright Tests / test-playwright (1, 2) (push) Failing after 2m51s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m5s
pre-commit / pre-commit (push) Failing after 2m24s
Test Backend / test-backend (3.12) (push) Successful in 4m9s
Test Backend / test-backend (3.14) (push) Successful in 4m14s
Compose Smoke Test / test-compose (push) Successful in 32s
Playwright Tests / merge-reports (push) Successful in 1m45s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_016ezWcLmBCtTVKFPxfdK2MK
2026-10-15 22:22:58 +02:00
stroblme
517b2f70d0
Merge remote-tracking branch 'origin/main'
Docs / docs (push) Successful in 28s
Playwright Tests / test-playwright (1, 2) (push) Failing after 4m9s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m7s
pre-commit / pre-commit (push) Failing after 2m54s
Test Backend / test-backend (3.12) (push) Failing after 3m57s
Playwright Tests / merge-reports (push) Canceled after 0s
Test Backend / test-backend (3.14) (push) Canceled after 2m31s
Compose Smoke Test / test-compose (push) Canceled after 0s
2026-10-15 22:05:01 +02:00
stroblme and Claude Opus 5.5
79ad2a08ea
no-em-dash pre-commit hook for user-facing strings, existing em-dashes rewritten
...
frontend/scripts/no-em-dash.ts walks src/ with the TypeScript parser and flags
an em-dash in JSX text, string literals and template text. A bare "—"
placeholder passes, separators go in no-em-dash.allow.json. The script is
identical to index's copy.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 22:03:36 +02:00
stroblme and Claude Opus 5.5
b99739f8f0
A lane chip clears the card above its run: running downwards ELK keeps runs half a chip and a border (14px) from nodes, so House history's feedback chip no longer covers the node border at 390 (crossings and node order unchanged, Demo house 178px taller); an empty string reads "" on its chip
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 21:46:05 +02:00
stroblme and Claude Opus 5.5
1c9587a76b
ELK runs in a worker: the flow layout loads elkjs's worker build as a Vite ?worker behind elk-api, so a phone's eight layout passes no longer block the page (Demo house at 390px with 4x CPU throttling, long tasks 15.0 to 0.8 s, longest 2.1 to 0.3 s); positions and routes unchanged
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 21:37:31 +02:00
stroblme and Claude Opus 5.5
a8c67f2fb2
Header removals wait for the code editor to be left: autosave saves with drop=false, so follow_header adds and renames from the header but keeps a port or setting whose parameter is gone, and leaving the editor (blur or closing the panel) saves once more with removals; source saves of a flow run one at a time
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 21:31:04 +02:00
Melvin Strobl
d90c18587b
Merge remote-tracking branch 'origin/main'
Docs / docs (push) Successful in 20s
Playwright Tests / test-playwright (1, 2) (push) Failing after 4m22s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m12s
pre-commit / pre-commit (push) Failing after 2m33s
Test Backend / test-backend (3.12) (push) Successful in 5m1s
Test Backend / test-backend (3.14) (push) Successful in 4m52s
Compose Smoke Test / test-compose (push) Successful in 33s
Playwright Tests / merge-reports (push) Successful in 1m32s
2026-10-15 21:17:33 +02:00
stroblme and Claude Opus 5.5
8f2b66b9f9
A phone's wrapped flow stacks into one column: when a graph is still wider than three nodes after wrapping, a last pass centres every rank, so wrapped rows sit under the row above (Demo house 3721 to 947px across at 390, crossings 295 to 263)
...
Docs / docs (push) Successful in 25s
Playwright Tests / test-playwright (1, 2) (push) Failing after 5m34s
Playwright Tests / test-playwright (2, 2) (push) Canceled after 1m27s
Playwright Tests / merge-reports (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Test Backend / test-backend (3.12) (push) Canceled after 0s
Test Backend / test-backend (3.14) (push) Canceled after 0s
Compose Smoke Test / test-compose (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 18:32:44 +02:00
stroblme and Claude Opus 5.5
bcd2173a65
Edges follow ELK's routes: layoutGraph returns each edge's start, bends, end and chip point, LiveEdge draws them square with rounded corners, moved onto the drawn handles, and keeps the curve for an edge whose node moved since; a feedback edge clears the nodes it passes
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 18:24:38 +02:00
stroblme and Claude Opus 5.5
25b38c9720
useIsMobile reads the width on the first render, so a phone's flow nodes no longer draw desktop handles first and React Flow cannot measure those: the Music and House history edges stop changing between loads
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 18:23:40 +02:00
stroblme and Claude Opus 5.5
ee3ed6a2ec
A dashboard's portalled select menu restates its look, so a Glass menu blurs what is under it (the colour wheel no longer shows through) and a Material menu gets its tonal fill back
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 18:19:41 +02:00
stroblme and Claude Opus 5.5
271be7aae7
A round face's press is not clipped by the face body, so Glass light's disc shadow falls soft instead of ending in hard edges
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 18:19:34 +02:00
stroblme and Claude Opus 5.5
762e7fb1fe
Header of process and node ports follow each other both ways: a panel edit rewrites only the def line of edited code, a code save reads the header back into input ports and settings (draft and response); Space types in the node editor again
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 18:19:19 +02:00
stroblme and Claude Opus 5.5
92c562a7d5
Brain force layout runs in a worker: 300 ticks took ~75 ms cold, ~30 ms warm on the Demo's render thread
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 17:48:52 +02:00
stroblme and Claude Opus 5.5
868a10d94b
Namespace the subtree theme scopes as .theme-light/.theme-dark: dark: follows the nearest scope, portalled dashboard menus and tooltips restate it
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 17:42:59 +02:00
stroblme and Claude Opus 5.5
58b92da8b0
Assistant streams its answer token by token
...
ai/client.py streams the completion and puts the chunks back together
(Assembler), covering OpenAI's piecewise tool-call arguments, Ollama's whole
calls, OpenRouter's comment lines, unnumbered calls and in-stream errors.
The turn emits a delta event per piece and a message per round as before,
and the chat grows the last answer as deltas arrive.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 17:37:56 +02:00
stroblme and Claude Opus 5.5
429100a0c7
Vendor stylesheets load in Tailwind's base layer through a vendor.css shim, so our overrides win outright; the editor's drag placeholder takes the 12% primary
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 17:27:17 +02:00
stroblme and Claude Opus 5.5
9bd622a5b5
Assistant answers render as markdown
...
react-markdown, lazy-loaded with the first answer (37 kB gzip chunk, main
bundle unchanged). No raw HTML, images dropped, links open in a new tab.
The system prompt asks for lists, inline code and fenced code blocks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 17:18:12 +02:00
stroblme and Claude Opus 5.5
a2ac9da32b
Live chart lets a held window go once its points have scrolled off
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 17:12:39 +02:00
stroblme and Claude Opus 5.5
70af80f6f6
One elapsed-time notation: ago() reads dur's units app-wide, health runs cell widened
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 17:10:36 +02:00
stroblme and Claude Opus 5.5
59f069022f
development.md: only the CI jobs other than test-backend write .env
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 17:08:09 +02:00
stroblme and Claude Opus 5.5
4a6bfc3729
bench-engine in the Makefile's .PHONY
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 17:07:39 +02:00
stroblme and Claude Opus 5.5
cdded499b1
LAN nginx proxies to the container name fluksio-api, which the test stack's backend does not carry
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 17:07:22 +02:00
stroblme and Claude Opus 5.5
50e6c033f1
Modules resolve the manifest with uv pip compile before syncing, so listed packages bring their dependencies
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 17:06:20 +02:00
stroblme and Claude Opus 5.5
356b0331bf
Docs: speech-to-text and text-to-speech recipes for a panel's mic and speaker
...
faster-whisper and piper as plain Function nodes, the mic -> STT -> logic ->
TTS -> speaker wiring, the Modules manifest they need (uv pip compile, av<19)
and measured sizes, memory and CPU times. Modules docs now say uv pip sync
installs no dependencies.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 17:01:25 +02:00
stroblme and Claude Opus 5.5
5626ce841a
Home charts execution time per node type on a log scale, from a /observability/node-types rollup
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:57:07 +02:00
stroblme and Claude Opus 5.5
2bea71db7f
Panels dialog saves a ready I/O port draft on close and keeps an unfinished one; one qualified message-name rule on both sides
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:49:26 +02:00
stroblme and Claude Opus 5.5
749393034d
Clicking a flow input label opens a popover with its declaration and current value, and a way into the flow settings
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:42:28 +02:00
stroblme and Claude Opus 5.5
c548031e94
Following a flow: endpoint lands on the label leading back, selected, centred and with its edges highlighted
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:35:30 +02:00
stroblme and Claude Opus 5.5
af796f7a02
Flow canvas draws panel I/O ports as panel:<id>:<port> endpoints that open their panel in the Panels dialog
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:31:33 +02:00
stroblme and Claude Opus 5.5
d825acb768
LiveEdge pulse gaps: reset timer survives other producers, snapshots do not flash, flow: endpoints pulse as their node
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:26:20 +02:00
stroblme and Claude Opus 5.5
24d0190c5d
RemoteWorker.cancel makes no coroutine once the loop is closed
...
run_coroutine_threadsafe refused it and it was never awaited, a RuntimeWarning
under pytest 9. The cancel still logs that it could not reach the worker.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:17:30 +02:00
stroblme and Claude Opus 5.5
0da0c3875e
make test-webkit runs the drag specs in WebKit against the test stack
...
WebKit takes *.localhost to loopback through GLib and ignores /etc/hosts, so
the container shares Traefik's network namespace. The webkit project only
exists with PLAYWRIGHT_WEBKIT=1, so test-frontend stays Chromium only.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:15:39 +02:00
stroblme and Claude Opus 5.5
0ac78764c8
make test-frontend runs against a stack of its own
...
The suite creates and deletes flows, dashboards and users, and ran against
whatever stack was up, which is the dev instance's data. make test-stack starts
the compose project fluksio-test (compose.test.yml over the local stack's
files) with its own containers, volumes and image tags, served by the local
Traefik on app.test.localhost and api.test.localhost, and leaves it running.
The hostname is fixed, so it no longer comes off the running dev stack, and a
LAN stack makes no difference. The suite's default origin is the test stack.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:15:32 +02:00
stroblme and Claude Opus 5.5
17d58697c4
Stagger a rectangular panel's new dashboard by rail order
...
Changing dashboard kept the grid mounted, so every new tile rose at once.
The grid is drawn afresh per dashboard and its tiles come in row by row:
from below, top row first, for one further down the rail, and from above,
bottom row first, for one further up, as a round panel's dashboards slide.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:12:38 +02:00
stroblme and Claude Opus 5.5
fb889a9e10
make update warns when .env lacks a key compose would default, like make up
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:10:36 +02:00
stroblme and Claude Opus 5.5
c5ce8cb499
Backend CI drops the compose env and down -v notes left from Postgres
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:09:09 +02:00
stroblme and Claude Opus 5.5
3f0d6f05f7
pre-commit CI installs the extras, so strict mypy finds the server-extra imports
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:09:08 +02:00
stroblme and Claude Opus 5.5
a7fe925fdf
Draw the look's ground behind a stacked dashboard
...
A phone stacks a dashboard instead of drawing it on a canvas, and the canvas
was what carried the ground, so a stack had only the palette's colour. The
panel and the editor now draw the look's ground behind the stack, held still
while it scrolls. Glass's drift stops under reduced motion as it does on a
canvas.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:08:53 +02:00
stroblme and Claude Opus 5.5
361b9d8e74
Grow the editor's canvas to reach widgets below its edge
...
A widget that fell off the panel, after the canvas was made smaller, was
drawn under the clip and could only be re-packed with Reflow. Editing, the
canvas now extends to the lowest widget and scrolls, with the panel's own
edge dashed and the area past it hatched, so the widget can be dragged
back. The scale stays the panel's, and view mode is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:05:23 +02:00
stroblme and Claude Opus 5.5
4ae8535cbb
Draw each dashboard on a round panel's track in its own look
...
The canvas states the look of the dashboard shown, so a neighbour beside it
and the one a turn leaves wore that look too. Each page now restates its own
look, theme and palette. The ring's paint moves from rules under
[data-look] to variables each look sets on its root, which stop at the
nearer root where a descendant rule reached into both.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
2026-10-15 16:00:10 +02:00