OGraf Studio 0.05
OGraf Studio 0.05 adds production-oriented text outlines and makes the AI authoring surface smaller, more portable, and more efficient without changing standard OGraf output boundaries.
Broadcast text outlines
- Added document-v20
strokeColorand independently animatable, non-negativestrokeWidthto text. - Added Inspector controls, timeline/property keys, local-loop tracks, frame-aware text measurement, Brand Kit colour/width targets, MCP operations, capability discovery, and validation.
- Shared editor/runtime rendering uses CSS text stroke with
paint-order: stroke fill, keeping the outline behind the glyph face instead of reducing the visible fill. - SVG diagnostics sample the same width track and emit matching stroke/paint-order attributes.
- Migration backfills transparent/zero stroke on normal layers and reusable-component snapshots. Older compiled OGraf descriptors receive the same defaults when imported.
- Auto-size, shrink-to-fit, overflow diagnostics, design QA, deterministic lifecycle/direct-exit interpolation, local loops, browser capture, and exported realtime/non-realtime seeking account for the sampled outline width.
Smaller AI authoring surface
- Extracted canonical Zod schemas and tool handlers into transport-neutral
packages/agent-toolsbehind injected workspace/editor-bridge ports. The MCP server is now a renderer over those shared records rather than the owner of tool behavior. - Consolidated committed apply, browser-free dry-run, rendered preview, and human Accept/Reject
proposal behavior into one mode-based
ograf_apply_operationscontract. Registered tools dropped from 28 to 26. - Reduced the generated contract from 334,854 bytes to 133,868 bytes at consolidation; the final 0.05 contract, including text stroke, is 135,042 bytes and remains under the enforced 150,000-byte budget.
- Added optional
sectionstoograf_get_capabilities. Omitting it preserves the complete response; agents can request only elements, easing, semantics, design system, loops, bindings, and/or editor state when context matters. - Added
includeReview: trueto apply/dry-run. It returns deterministic design QA and a short-lived browser capture URL when available; disconnected, throttled, or failed capture never rolls back or invalidates the mutation/review.
Bundled template refresh
- Refreshed the bundled News and Atlas templates through OGraf Studio/MCP rather than raw project editing.
- Added semantic roles/tags/descriptions, operator-facing field descriptions and limits, deliberate QA exception tags, screen/soft-light blend modes, authored visibility, and cubic entrance/exit motion while preserving their designs.
- Both templates score 99/100 with only the advisory padding-rhythm finding. Both passed all five
exact dual-profile certification gates; the Atlas
.ograf.zipwas regenerated from the refreshed editable source.
Validation
npm run verifypasses generated-contract drift, formatting, lint, every workspace typecheck, 285 tests across 56 files, the runtime bundle, and the production editor build.- A labelled browser contact sheet visibly rendered 2 px and 8 px text outlines while preserving
the white glyph fill. SVG diagnostics matched the 8 px sample and
paint-order="stroke fill". - Frame-specific browser measurement expanded by exactly 8 px in both dimensions at the 8 px key.
- The disposable text-stroke fixture passed project semantics, official OGraf v1 manifest schema, package layout, module/default-export/API, and realtime/non-realtime lifecycle certification.
- The bundled
ograf-authoringskill passes validation and its archive has been rebuilt.
Current boundaries
- Reusable style packs and bug/ticker/scoreboard/clock recipes are not part of this release.
- Headless render/certify remains explicitly deferred. Browser-backed capture, measurement, certification, save, and export require one connected responsive OGraf Studio tab.
- CSS text-stroke support should be included in the future renderer compatibility matrix even though the current Chromium-based editor/runtime certification passed.
- The production editor build retains the existing non-blocking large-chunk advisory.