The page in site/ reads the latest GitHub release from release.json, offers
the build for the visitor's system, and shows the demo tour, a live agent
run and the feature set on the app's acrylic look. site.yml builds it with
the newest release and commits the result to the pages branch; release.yml
calls it after publishing, and a daily run catches releases made by hand.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J9PiV8m3jnQjxY1skZUJfF
Chat screenshots move to files (kept 14 days), the history list holds no
messages, thumbnails stay small, canvas images decode only for the GPU and
leave it when idle, and long answer options wrap instead of widening the chat.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pages can carry an icon, the pages popover filters by name, a layer row's eye
and lock slide in only while shown, and agent outlines fade sooner.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Named CLI agents (--as, --parent), conflict reports and ifRev on writes,
claims that fence layers off, delegate build scopes and per-agent undo.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A screen made at a device width keeps that device's height and scrolls what
does not fit. Sections group screens on the canvas, drawn as a faint outline.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rewrites common unsupported CSS into what the canvas has, makes room when a
frame grows into the ones below it, keeps growing text in hugging rows at its
width, and lints what still differs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A PDF with a cover, contents and a slide per screen, from the File menu, the
palette, the inspector's Export section and `--format presentation`.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The skill's lint step now says to lint only what changed between edits
(rev, changedOnly, since), to read geometry with get_bounds and changes with
get_changes, and to finish with one full lint and a screenshot per mode. The
several-agents section uses get_changes {exclude: "self"}, and the cheat
sheet lists both new tools and the overflow rule. This replaces the pending
snippet file.
The reference and docs/agents.md now match the tools as merged: lint_design
reports coverage under `covered`, and get_bounds returns columns and rows
with continueWith when truncated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
RULES.md gains "The machine you build on": check memory, load and running
builds first, cap Cargo jobs and test threads, run at low priority, one heavy
job at a time, stop when the person says the machine is slow, and clean up
scratch targets. Locally only the test targets a change touches run; the full
suite runs on GitHub before a release. AGENTS.md, CONTRIBUTING.md and the PR
checklist say the same.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
test.yml runs cargo test and the wasm check on a Windows runner. The release
workflow calls it and publishes only when it passes; it can also be run on
its own with `gh workflow run test.yml -f ref=<branch>`. Like the release
jobs, it only runs on github.com.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Editor::load replaced the change log with a fresh one, so rev restarted at 0
when a project was opened from the app. Once the new project caught up, an
agent's old `since` looked current and get_changes reported a partial list
instead of `truncated`. The log now carries across load and resets there,
which covers the app, the session and MCP alike.
The MCP-only reset after create_file goes: that tool creates a project
without opening it. Tests now open the project with open_file and read the
rev before writing instead of assuming the log starts at 0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A bounded log (10000 layer changes, each tagged with the client that made it)
records what every commit, undo and redo touched; variable edits count as
touching the layers bound to them. Write tools return rev, get_basic_info
reports it, get_changes lists changes (exclude: self, by), and lint_design
takes since / changedOnly to check only changed layers plus what they affect.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
lint_design flags layers past their artboard or clipping parent and text
taller than its box (scrolling frames exempt). get_bounds returns the
rects of whole subtrees in one read.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The tab ran the design lint over every node, and scanned every node for open
comments, on every frame. On a 12.6k-node page that cost hundreds of ms per
frame (377 ms worst) while the tab was open. Both results are now kept per
(doc_stamp, active page); the open-feedback count of other pages refreshes once
a second.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The performance overlay showed n/a for RAM and CPU on Windows: the readings
existed only for macOS and Linux. They now come from GetProcessMemoryInfo
(working set) and GetProcessTimes (kernel plus user time).
The "Warn below" chips become "Refresh rate" and now go up to 144, 165, 240
and 360, for high-refresh monitors. The default stays 60.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Drop the separate title bar: minimize/maximize/close sit at the toolbar's right,
its empty middle drags the window (double-click maximizes). Home gets the same.
- Linux is undecorated too, with edge resize.
- Settings pages fill the modal height and scroll (Appearance rendered empty).
- Checkbox, toggle, select and the acrylic material now come from craft-ui.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Screens: frames can be declared screens or overlays (set_screens, inspector toggles,
"Declare N screens"). Agent edits to layers hidden behind a drawer/modal in a screen
are refused unless allowHidden; partly covered ones are reported. get_basic_info lists
screens, get_node_info reports visibility, lint skips hidden layers, On click lists
screens, nested screens get canvas labels. Spec in specs/screens.
- Pages and versions are stored as zstd-compressed compact JSON (.json.zst, format v3);
legacy .json still reads and is replaced on save.
- Editor keeps a per-layer change log; the scene cache re-tessellates only changed layers
and no longer keeps a copy of every node (less RAM).
- Canvas perf: zoom settle and LOD, 24-byte vertices, vsync-paced redraws, idle hover
skip, malloc relief when idle, off-screen frame labels skipped, layer-panel heights
memoized across frames, run recount on a background thread.
- Frame labels: no label on tiny frames, overlapping labels dropped, ellipsis.
- Selects: menu sizes to content (capped), path labels keep the name, scroll, tooltips.
- Settings: performance monitor page, agent logos, chat page scroll fix.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Appearance: acrylic material with popup and modal backing, corner radius,
UI font (bundled DM Sans, Figtree, Fredoka, Geist, Nunito, Quicksand,
Varela Round), accent colour. Icons on buttons, code targets and agent
logos; redesigned fill/gradient and auto-layout rows; compact topbar.
Chat: agent logo in the header, history popup with search and recency
groups, new-chat button, issue outcomes saved with the chat and issue
bodies shown as fields, question cards with one-click answers, number
keys, an inline other-answer field and an answered state.
Layers: right-click context menu. Performance: virtualised layer reveal,
pruned hit-testing, glyph cache. Settings > Performance: FPS, frame time,
RAM, CPU and GPU overlay with a slow-frame warning.
MCP: compact spec writes bound strokes as variables (#23), lint contrast
averages gradient and translucent backgrounds (#24), lint flags light/dark
theme copies (#25).
Closes#23, closes#24, closes#25
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>