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:
parent
6bf47c5bbc
commit
898fbd7503
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Reference in a new issue