The proprietary device-login client (ZSeven-W/op-platform) ships as a
C-ABI static library committed under op-auth-bridge/prebuilt/<target>;
builds without an artifact fall back to an inert stub so any checkout
compiles with login hidden. The desktop host starts the pairing flow
from the sign-in modal, opens the verification page in the system
browser, polls flow status each frame, restores persisted sessions at
startup, and revokes the device token on sign-out.
Replace the compile-time ACCOUNT_UI_AVAILABLE release gate with
EditorUiState::account_ui_available so hosts enable the account UI only
when an auth backend is actually linked, and surface device-login
progress (waiting for browser / approval / exchanging / failure) in the
sign-in modal.
The hung-CLI probe tests gave the deadline 200ms, which a cold exec of a
just-written temp executable can exceed before it prints — the capture
came back empty and the auth-marker assert flaked (2 of 3 isolated runs).
Give the probes a 2s budget, well past spawn cost, so the timeout branch
is reached with the script's output already drained.
GitHub releases were named by bare tag because the action got no name.
The note's leading heading is the natural title, so publish it as the
release name and drop it from the body instead of repeating it.
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.
The discovery chain's command_output still discarded captured bytes on timeout, the same defect fixed for connect probes. Extract BoundedProbe and diagnose_timeout into a shared cli_probe_support module so both chains surface auth hints and output tails, and add an exe/timeout seam so timeout paths are testable.
Two skills both declared name: design-system, making get_skill_by_name order-dependent. Rename the knowledge composition skill to design-system-composition (the generation token-architect skill keeps the name every code path references) and pin registry-wide uniqueness with a test. The public get_guidelines topic key is unchanged.
Structural fixes with no name heuristics: exempt decorative stack layers from the empty-shell blocker (it was pushing models to stuff content into deck back layers), give a transparent text-bearing front card a surface fill when a painted layer bleeds through, and round compact painted text capsules missing a corner radius when the design already shows a rounded convention. Teach mobile-app domain that tappable CTAs carry cornerRadius.
A first-run CLI blocked on browser OAuth always exceeded the 10s probe window, and the timeout path discarded captured output, leaving only 'failed or timed out'. Retain the captured bytes, recognize authentication prompts for an actionable message, append an output tail otherwise, and make the resolver's antigravity install dir explicit.
Five skills had drifted past their own injection budgets (variables lost its color table tail, overflow its fallback example); the phase knapsack also tail-cut compliant domain skills with zero diagnostics, and full tier trimmed at 8000 while reporting 12000. Compress or relocate oversized content, raise the generation default to the intended 12000, warn on both truncation paths, and add regression tests pinning zero truncation.
mcp_live and design_agent_tools tests clear/assert the process-global agent_indicators REGISTRY from parallel test threads; CI macos-aarch64 caught one leaking two frames into another's snapshot. Serialize them behind a shared guard owned by the registry.
A 38k-node zoomed-out document panned at 4-5 fps. Five layered fixes,
each verified by profiling a live session:
- svg path cache: 2048-entry FIFO thrashed on 11.8k visible paths
(every frame re-parsed the whole working set); now byte-budgeted
- text greeking: sub-3-device-px text skips shaping, paints a bar
- effect LOD: sub-pixel shadows/blurs skip their save-layers (each
broke the GL-on-Metal render pass and forced a command submit)
- sub-pixel leaves (<0.75 device px) always skip paint
- pan bitmap cache: gestures blit an offscreen layer (margin +
in-place scroll strips + approximate scaled zoom); the layer is
retained across gestures and the gesture-end frame restores full
quality progressively, one tile per frame
- event loop: elapsed WaitUntil deadlines re-armed immediately
(idle timer spin); periodic deadlines now sit on a fixed grid so
casement's waker dedups the CFRunLoop re-arm
OP_SLOW_FRAME_LOG=1 prints >32ms frames with blit/scroll/build
attribution for future regressions.