docs(release): cover design agent and canvas perf in v0.8.2 notes

The notes stopped at the 2026-07-23 state and never described the design
agent at all, despite it carrying the largest share of the v0.8.2 work.
Add the multi-screen generation, geometry-repair, provider/skill, and
large-document canvas performance sections, plus the image-crop, stroke
ordering, right-rail, and Windows save changes landed since.
This commit is contained in:
Kayshen-X 2026-07-25 12:49:50 +08:00
parent 6bf47c5bbc
commit 898fbd7503

View file

@ -1,8 +1,9 @@
# OpenPencil v0.8.2
`v0.8.2` is a prerelease focused on higher-fidelity Figma and HTML imports,
lower transient memory use, smoother large-document workflows, safer `.op`
persistence, and backward-compatible schema evolution.
multi-screen AI design generation, lower transient memory use, smoother
large-document workflows, safer `.op` persistence, and backward-compatible
schema evolution.
This update expands both the data OpenPencil can preserve and the controls
available for editing that data. It also separates expensive conversion and
@ -32,6 +33,12 @@ still remain available.
copy, or opened without modifying the file on disk.
- HTML import accepts complete pages, multi-file projects, and ZIP packages
with local resources, nested CSS imports, and common text encodings.
- The design agent generates multi-screen apps: screen groups can run in
parallel, shared navigation is unified across screens, and app-mode screen
navigation is wired into the generated document.
- Panning and zooming very large documents uses layer caching and
level-of-detail so gestures stay responsive instead of dropping to a few
frames per second.
## Figma Import Fidelity
@ -146,6 +153,28 @@ still remain available.
practical to reduce duplicated buffers, queue size, and peak transient
allocations.
## Canvas Performance on Large Documents
- Pan and zoom on very large documents (tens of thousands of nodes viewed
zoomed out) are substantially smoother. Each change below was measured
against a live profiling session rather than inferred.
- The SVG path cache is budgeted by bytes instead of entry count, so a working
set of many thousands of visible paths no longer re-parses its own contents
every frame.
- Text below roughly three device pixels skips shaping and paints a
representative bar, and leaf content below sub-pixel size skips painting
entirely.
- Shadows and blurs that would render below one pixel skip their save-layers,
avoiding render-pass breaks and forced command submits that were expensive on
GL-backed Metal.
- Pan gestures blit a retained offscreen layer with in-place scroll strips and
an approximate scaled zoom. The layer survives across gestures, and the
gesture-end frame restores full quality progressively, one tile per frame.
- The event loop places periodic wait deadlines on a fixed grid so elapsed
deadlines are not re-armed immediately, removing an idle timer spin.
- `OP_SLOW_FRAME_LOG=1` prints frames over 32ms with blit, scroll, and build
attribution for diagnosing future regressions.
## `.op` Saving and Overwrite Safety
- Desktop Save and Save As are serialized background jobs, preventing
@ -227,12 +256,104 @@ still remain available.
automation workflows. Remote fetches retain bounded reads and SSRF
protections.
## AI Design Agent
### Multi-Screen App Generation
- Screen groups can run genuinely in parallel under the parallel-agents
setting, with live progress, per-group replay on completion, and distinct
per-group agent identities. Sequential runs announce their setting too, so
the active mode is always visible.
- Multi-screen plans give each screen group its own root frame placed beside
the previous one, instead of collapsing every subtask onto a single root.
Plans with zero or one screen label keep the previous single-root behavior,
and append mode stays single-root.
- Generated multi-screen documents carry screen markers and `onTap` navigation,
so app-mode preview navigates between screens instead of degrading to one
scrolling page. The wiring pass is deterministic, idempotent, and additive
only.
- Shared navigation bars are unified across sibling screens and injected into
screens whose name matches a reference tab, so a failed navigation subtask
can no longer leave a screen bare. Authored navigation is never removed.
- Active tabs are retargeted per screen even when a model draws every screen's
navigation identically, and push-in detail screens (those with a header back
control) no longer receive an injected tab bar.
- Tab labels match brand-prefixed screen names by whole tokens, so a screen
named like `Wander - Trips` binds its `Trips` tab.
- Screens the skeleton committed but never filled are detected by shape, retried
through a dedicated fill budget that does not consume the general turn cap,
and reported honestly in the transcript, the run summary, and an `(unfilled)`
canvas label when they still come up empty.
- Design routing reads a canvas signal, so a continuation request in a language
the ASCII keyword gate did not match still reaches the design loop when the
canvas already holds a mobile-width screen. Explicit overrides still win.
### Design Quality and Geometry Repair
- Geometry diagnostics detect cross-subtree text collisions, and loop completion
is gated on unresolved blockers rather than reported as done with known
defects outstanding.
- A `fill_container` card that collapsed to a sliver beside a fixed-width
sibling in a horizontal rail is widened to the widest fixed reference, before
the overflow clip pass rather than after it. Evenly split and deliberately
mixed fixed rails are left untouched.
- Mobile content and section rails are enforced and linted, including appended
subtrees and rail edge cases, and primary mobile screens are required to carry
navigation.
- Badges, pills, avatars, status dots, and compact painted text capsules get the
corner radii the surrounding design already establishes, and mobile-app
guidance teaches that tappable CTAs carry a corner radius.
- Decorative stack layers are exempt from the empty-shell blocker, which was
pushing models to stuff content into the back layers of a card deck, and a
transparent text-bearing front card gains a surface fill when a painted layer
bleeds through.
- Nested card roles survive cleanup, near-full-bleed orphan cards are rescued,
rejected radial sections are recovered, status indicator dots are kept out of
stub cleanup, and clipped child strokes in fit-content rows are padded.
- Logical text alignment values are accepted rather than rejected, and compact
status geometry is stabilized.
### Providers, Models, and Skills
- The Gemini CLI provider is retired. Antigravity and Grok Build are available
as agent providers and as MCP CLI integrations; the Google Gemini API provider
is unaffected.
- Antigravity slug model IDs are discovered correctly, and model capability
tiers were updated (MiniMax M3, Claude Fable, and Kimi K3 are treated as
full-tier).
- When a CLI connect or model-discovery probe times out, OpenPencil keeps the
captured output instead of discarding it, recognizes authentication prompts,
and shows an actionable hint — a first-run CLI blocked on browser OAuth no
longer reports only a generic timeout.
- Skill prompts are no longer silently truncated: five skills that had drifted
past their injection budgets were compressed, the generation budget is the
intended full-tier value, and both truncation paths now warn instead of
tail-cutting quietly.
- Skill names are unique across the registry, so lookup by name is no longer
order-dependent. The public `get_guidelines` topic key is unchanged.
- Failed subtasks keep their full spec for single-shot retry, the salvage pass
retries at minimal complexity instead of repeating the full ladder,
rate-limit exhaustion is classified as non-retryable, rolled-back design
batches are marked as errors, and screens committed before a turn cap are
salvaged rather than discarded.
- Aborted design validation terminates instead of continuing to run, and the
desktop design terminal preserves its progress output.
## Editing and Rendering
- Component swaps, masks, layer/fill compositing, image tile scale, and page
background color are configurable instead of being import-only metadata.
- Fill-rule editing, per-corner radii, layer blur, and background blur now
reach the shared scene and paint paths.
- Image fills can be cropped interactively, with the crop preview and controls
in the property inspector, and image upload is wired through the file menu
and the fill editor.
- Container strokes paint above their children on canvas and in SVG export,
matching the expected stacking instead of being covered by child content.
- Editing a property refreshes the affected scenes, so canvas output no longer
lags behind inspector changes.
- The right rail is hidden when nothing is selected instead of showing an empty
inspector.
- Missing-font prompts and font-management surfaces are available across native
and web hosts, with imported fonts invalidating affected layout scenes.
- Native user fonts are persisted and rediscovered at startup; web user fonts
@ -306,6 +427,8 @@ still remain available.
- Windows desktop startup falls back safely when the preferred native OpenGL
configuration cannot be wrapped by the renderer.
- Windows save commits are serialized, avoiding overlapping publications on the
platform where the replace step is least forgiving.
- Image search, image generation, Figma conversion, HTML conversion, and save
sessions use bounded or cancellable background work instead of extending the
input event path.
@ -341,6 +464,9 @@ still remain available.
the installed document in the main WASM runtime. Total browser-process peak
memory still depends on the document, Worker, storage implementation, and
browser, and the complete canonical document still enters the main runtime.
- The Gemini CLI agent provider and its MCP CLI integration are removed.
Existing Gemini CLI connections no longer appear in Agent Settings; the Google
Gemini API provider is unaffected.
- Account sign-in is intentionally unavailable in this prerelease.
- The public web SDK remains read-only.
- The retired TypeScript application workspace is not part of this release.