Skip to main content

OGraf Studio 0.09

OGraf Studio 0.09 makes dense broadcast-authoring work faster and clearer. It expands Timeline and layer-order editing, improves project/history reliability, adds a deliberate text-distortion mode, and aligns the application chrome and configuration panes with the Zero Density/RealityHub visual system. These editor changes do not alter authored canvas pixels unless the author explicitly uses the new content properties.

Timeline editing​

  • Added Ctrl/Cmd additive selection across layer/property timeline rows and same-row Shift ranges. Dragging or arrow-nudging any selected key moves the complete selection atomically, preserves spacing, and stops at composition bounds or unselected keys on every affected track.
  • Set lifecycle, layer, and property key diamonds to 11 px. Loop badges and selection/focus outlines scale with them without changing frame alignment or Timeline row heights.
  • Made the divider between Timeline layer/property names and keyframe tracks resizable. Dragging, keyboard arrows, Home/End, and double-click reset are supported; the width persists locally and always reserves usable track space.
  • Made Timeline Group names reliably editable by double-click, with full-name selection, F2 keyboard access, and event handling that no longer lets the second click retrigger group selection.
  • Hidden selected-layer outlines and Moveable controls during Timeline playback. Selection is preserved and its overlay returns immediately when playback pauses or stops.
  • Upgraded normal Timeline Play to sample every compiled local loop together, including scrolling tickers and loops that continue while parked at a Step. Removed the redundant top Edit/OGraf Preview switch and separate main-canvas runtime mode; Preview & Export remains available for detailed playout actions and certification.

Layer ordering and reliability​

  • Added an editable Z order field to Properties. It maps directly to canonical layer paint order, with 1 at the back and the current layer count at the front; values are rounded and clamped to the available range.
  • Added standard Send to Back, Send Backward, Bring Forward, and Bring to Front toolbar actions. They support multi-selection, retain internal order, and disable at the applicable boundary.
  • Added Ctrl/Cmd+A and Edit -> Select all layers for selecting the complete active composition instead of webpage text. Hidden, locked, and guide layers are included; editable fields retain native Select All behavior.
  • Browser Undo now reconciles the active composition and keyframe when restoring a snapshot from a different bridge-synchronized project, preventing stale composition IDs from crashing the editor.

Docking and element authoring​

  • Changed Window-menu reopening so a closed pane first returns as a centered floating window rather than docking automatically to its former/default edge. Multiple reopened panes cascade slightly and remain fully dockable afterward.
  • Added Squeeze beside the existing text sizing modes. Resizing a squeezed text layer scales glyph width and height independently to fill the box, enabling intentional condensed, expanded, tall, or flattened text in the editor, capture path, and exported runtime.
  • Changed ordinary Rectangle, Ellipse, Text, Image, Path, Image Sequence, and Lottie creation to alpha 1 at Start, Step, and End so new objects are immediately visible. Recipe motion retains its explicit hidden entrance and exit states.
  • Replaced text-only add-element buttons with a consistent icon-only SVG set. Accessible names, native titles, immediate custom tooltips, and clearer hover/focus feedback remain available.

Zero Density visual system​

  • Centralized the visual tokens sampled from the live RealityHub interface: Nunito, 14 px/13 px hierarchy, charcoal surfaces, #dadada/#aaaaaa text, #399ed4 active tabs, #60d0ff focus, teal actions, 1 px separators, and flat 0/2 px geometry.
  • Bundled OFL-1.1 Nunito 400 Latin, Latin Extended, and Vietnamese subsets locally through @fontsource/nunito; Studio does not depend on a running RealityHub server or external font CDN.
  • Applied the shared contract to application/header surfaces, docking tabs/groups/floating panes, menus, panels, scrollbars, forms, selections, resources, layer rows, and element/timeline toolbars. Authored graphic typography, canvas pixels, capture, certification, and export remain independent.

Configuration tables and numeric scrubbing​

  • Reworked Properties into RealityHub-style configuration tables with full-width section bars, stable 42% label / 58% editor columns, 1 px row/column separators, aligned checkboxes, and full-row Width/Height/effect/corner/frame-duration controls instead of scattered mini-grids.
  • Applied the same label/value column contract to Data test values and Preview data overrides while preserving task-specific list, canvas, chat, resource-tree, and Timeline-track layouts.
  • Added one editor-wide RealityHub-style controller for every enabled numeric input: hover shows the usage popup and east/west cursor, horizontal drag changes by the declared field step, Shift uses 10x speed, Alt uses 0.1x speed, and min/max bounds are respected.
  • Kept normal typing first-class: a sub-threshold click focuses and selects the value, while real drags publish native bubbling input/change events through existing React/store/history actions.

Validation​

  • npm run verify passes generated MCP-contract and in-app-prompt drift checks, formatting, lint, every workspace typecheck, 410 tests across 84 files, the runtime bundle, and the production editor build.
  • Regression coverage includes multi-key selection, gutter resizing, z-order commands, Select All, project-history reconciliation, Squeeze rendering, full-alpha creation defaults, the shared configuration-grid contract, and numeric modifier/rounding/clamping behavior.
  • The production editor build continues to emit the documented large-chunk advisory. Headless render/certify remains intentionally deferred, and real provider smoke testing still requires the user's configured BYOK credentials.