Skip to main content

OGraf Studio 0.06

OGraf Studio 0.06 combines built-in BYOK AI authoring, reusable broadcast design systems and recipes, EBU R 95 layout guidance, deterministic fit-to-width text, an infinite canvas, scalable resource/layer navigation, and a substantially clearer timeline and editor interface. Authored graphics remain ordinary portable OGraf layers, fields, tracks, and packaged resources.

In-app BYOK authoring chat​

  • Added a persistent, collapsible Layers / Chat sidebar with server-side Anthropic and OpenAI-compatible request/tool loops over the same canonical authoring records as MCP.
  • Reduced the in-app surface to 14 tools and kept save, export, certification, import, and project reset as explicit Studio actions. Visually consequential batches retain the existing human Accept/Reject proposal flow.
  • Added a deterministic approximately 6.5k-token system prompt generated from the complete ograf-authoring Skill, with verification-time drift and token-budget gates.
  • Ambient selection, current frame, zoomed viewport, and recent edit context remain outside the stable cached prefix. Provider cache-read usage and per-message/session/project token totals are visible without entering portable .ogeproj source.
  • Credentials stay server-side in Windows Credential Manager or the process environment. The editor receives only configuration/availability state, redacted progress, proposal references, and usage. External MCP activity is visible and an optional session-local exclusive lock arbitrates the two agent front doors.

Broadcast style packs and materialized recipes​

  • Added immutable News, Sports, Entertainment, and Documentary style-pack definitions containing palette, modular type scale, font weight/stack, radius, outline, and motion conventions.
  • Applying a pack copies normal editable Brand Kit tokens and materializes compatible semantic layer properties. No pack metadata or proprietary runtime dependency enters exported OGraf.
  • Added materialized bug/DOG, clipped ticker/crawl, two-team scoreboard, and 24-hour clock recipes alongside lower thirds and repeaters. Every recipe returns ordinary editable grouped layers, constrained fields, semantic roles/tags, complete ID mappings, and deterministic tracks.
  • Ticker motion uses an absolute-time local X loop inside a clipChildren window rather than a lifecycle-long translation. Scoreboard values use the document-v20 text-outline model.

EBU R 95 safe areas and text fitting​

  • Replaced legacy 5% action / 10% title assumptions with EBU R 95 16:9 action-safe (3.5%) and title/graphics-safe (5%) per-axis insets.
  • Centralized integer-pixel safe-area geometry for HD/UHD canvas overlays, scene projections, broadcast QA, MCP lint, and AI guidance. Reference fixtures cover 1920x1080 and 3840x2160.
  • Added Fit to width beside Auto size, Shrink text to box, and Fixed box. The shared editor/export DOM renderer finds the largest proportional font size contained by both fixed box axes without stretching glyphs or permitting overflow.
  • Refitting reacts to data, explicit line breaks, box animation/resizing, animated text outline, packaged-font loads, and unscaled composition-pixel measurement so canvas zoom cannot contaminate the result.

Infinite canvas and scalable project navigation​

  • Removed visible bottom/right canvas scrollbars and replaced the finite pasteboard with a recentering node-graph-style camera in Edit and main OGraf Preview.
  • Plain mouse wheel now performs pointer-anchored canvas zoom; Ctrl/Command plus/minus keyboard shortcuts remain. Middle-button panning, off-frame selection, Moveable controls, rulers, guides, snapping, and output clipping stay aligned to the virtual camera.
  • Added document-v21 Dim outside canvas (18%). Four camera-aware regions darken only the pasteboard; composition pixels, capture, certification, and exported alpha remain unchanged.
  • Layers retain authoritative paint order while parent depth controls indentation. Dragging onto a row centre assigns a parent; upper/lower quarters reorder before/after. Self-parenting and cycles are rejected.
  • Converted Resources to a compact counted ARIA tree for Brand Kit, Components, Images, Fonts, and Source attachments. Branch/item expansion is transient UI state and all prior import, metadata, package-path, license, usage guard, component refresh, and deletion behavior remains available.

Timeline readability and interaction​

  • Replaced thin key-to-key exposure strips with full-height colored rectangles, neutral gray borders, centered frame/easing labels, and 18 px layer/property/lifecycle diamonds.
  • Expanded Position X/Y, Width, Height, Rotation, Alpha, outline, and effect rows now use the same 28 px row height, 12 px labels, full-height blocks, and diamond size as their parent layer.
  • Centered ∞ inside loop-activation diamonds. Collapsed layers retain a summary badge, while expanded property rows mark only the properties that actually contain local-loop tracks.
  • Corrected lifecycle diamond geometry so Start, every Step, and End align at zero-pixel difference from same-frame layer keys.
  • Made ruler and left-gutter headers sticky/opaque above scrolling blocks, diamonds, layer names, and property names while retaining the playhead above both headers.
  • Separated selection from navigation: single-clicking lifecycle, layer, or property keys selects without moving the playhead; double-click seeks to that key. Empty track clicks select only; double-click continues to add a key and seek there.
  • Added a three-pixel drag threshold so pointer jitter cannot move a key. Real key/lifecycle drags, ruler scrubbing, and playhead scrubbing remain seek-aware. Shift+double-click retains lifecycle Step rename.

Editor UI consistency​

  • Consolidated Studio chrome to one system UI family plus one monospace diagnostics family, with only 12 px primary/control text and 10 px compact metadata text. Authored graphic typography is isolated and unchanged.
  • Applied the typography contract to buttons, inputs, selects, and textareas. Font controls identify selected template families without restyling Studio widgets.
  • Reduced resizable panel dividers from 6 px to 3 px while preserving larger invisible grab areas.
  • Normalized Resources actions and frame/millisecond duration controls to explicit high-contrast Studio colors, borders, padding, radii, focus/hover states, and readable disabled states.
  • Moved Align/Distribute/Group controls next to insertion tools. The contextual unit wraps together at narrow widths and shows only Group or Ungroup according to the selection.

Validation​

  • npm run verify passes generated MCP-contract and in-app-prompt drift, formatting, lint, every workspace typecheck, 332 tests across 68 files, the runtime bundle, and the production editor build.
  • The generated MCP contract is 146,764 bytes, below the enforced 150,000-byte context budget. The authoring-only catalog and in-app prompt remain outside the playout bundle.
  • Live browser checks verified exact two-family/two-size UI typography, 3 px panel dividers, full-height timeline/property rows, centered loop badges, zero-pixel lifecycle/key alignment, sticky scroll headers, high-contrast Resources/duration controls, contextual toolbar placement, and single-click selection versus double-click seeking.
  • Existing recipe/template validation remains at 99/100 design QA with the advisory padding-rhythm finding; deterministic half-loop ticker sampling and all five dual-profile certification gates passed.

Current boundaries​

  • Headless render/certify remains explicitly deferred. Browser-backed capture, measurement, certification, save, and export require one connected responsive OGraf Studio tab.
  • One real customer-provider BYOK smoke test is still required; local provider-wire mocks cover both endpoint dialects, tool normalization, cache accounting, cancellation, and redaction.
  • Streaming chat deltas, persisted transcript history, provider price conversion, and additional provider adapters remain follow-up work.
  • The production editor build retains the existing non-blocking large-chunk advisory.