Forma · 0.2.0-dev.8 Mac preview

From blank canvas to first screen.

Start with the current preview guide below. The older Oanarina UI Tool v0.1.0 guide is retained in an archive at the end.

Jump to the current guide · Download notarized Forma dev.8

Install or upgrade Forma for Mac

Download notarized Forma 0.2.0-dev.8 · 31.7 MB · macOS 13+ · universal Apple silicon and Intel binary. Intel runtime validation remains pending. Verify SHA-256.

Quit Oanarina UI Tool before installing. Open the DMG, then copy Forma.app to Applications. Because the app filename changed, it will not automatically replace Oanarina UI Tool.app. After checking your work in Forma, you may remove only the older application bundle. Keep .oui files, backups and application data. The same bundle ID preserves compatible local data. There is no silent updater.

Earlier installers remain available: Forma dev.6 archive · 32.5 MB; Oanarina UI Tool v0.1.0 archive · 14.0 MB.

Forma guide · 0.2.0-dev.8 preview

This guide covers the current notarized Forma 0.2.0-dev.8 preview and browser demo. The current register records 1,045 implemented, 164 partial and 813 planned requirements, 2,022 in total across 60 categories. These are implementation statuses, not claims of complete Figma parity or completed reference verification. Search the current register or download it.

Home and the local file library

Open Home for Recent, All files, Drafts, Starred, Pinned, Archive and Trash. Search titles, filter by workspace or local folder, choose thumbnails or a list, and sort by name or dates. Flat folders are app metadata; moving a project there does not move an exported Finder file. A file’s menu supports open, rename, independent duplicate, move, star, pin, archive and Trash. Organization changes expose a session-local Home Undo, separate from editor Undo.

Import projects validates every .oui/JSON input before writing the batch. Files receive new document identities, so importing cannot overwrite the existing library original. Restore files from Trash, or explicitly confirm permanent deletion after closing them. Export backups before clearing app/browser data; this is a local library with no cloud synchronization. Organization, import limits and concurrency.

Responsive grid flow

Select a container and choose Auto layout → Grid. Expand Column tracks or Row tracks to choose fixed pixels, fractional fill or hug content with minimum and maximum sizes. Set gaps and padding, then select a direct child for explicit row/column placement, row/column spans and cell alignment. Automatic placement follows layer order; occupied explicit cells reserve space first.

With a grid selected, drag a track edge to preview and commit a fixed size. Focus an edge and use arrows, Shift or Option for supported increments; Escape cancels. Track edits use Undo and persist in .oui. Layout is bounded, and track reordering, cell swapping and complete Figma migration semantics remain unfinished. Track sizing and grid limits.

Mac document windows

In the native development app, creating a workspace opens a separate window. File Open accepts multiple projects; an already open path or document identity focuses its window. Native menu commands target the key document. Closing a dirty document asks Save, Cancel or Don’t Save; a failed or cancelled save does not approve closing. Reopen Closed Window and session restoration depend on available recovery or saved files.

Windows share the local library and preferences, while each owns its document state. There is no cloud merging or native document-tab system. Browser Home opens in its current editor rather than creating AppKit windows. Window lifecycle and recovery safeguards.

Design, prototypes and character formatting

The editor extends Design with editable curves and live booleans, paint/stroke/effect stacks, responsive layout, live component instances/variants, local variables/styles, guides/snapping and a motion timeline. Numeric inspector fields accept expressions such as 120 + 8 or /2; invalid expressions leave the stored value intact.

In Prototype, add ordered actions for navigation, back, HTTP(S) links, overlays, scroll-to, variant changes, variable updates and conditional branches. Author a starting flow and use Present for local playback, transitions, overlay behavior and variable-state inspection. Preview state stays separate from artwork. Hosted prototype sharing and complete nested scrolling remain absent. Prototype details and limits.

Select a text layer, open Character formatting, and select text in Rich text content. Apply formatting to that range, clear overrides or add an HTTP(S) link. Axis/feature tags require a font that supports them. Character formatting, supported rich clipboard content and Undo/Redo persist in .oui. The canvas inline editor remains plain text. Rich text guide.

Review SVGs before importing

Choose File → Place image or SVG, or drop an SVG onto the Design or Whiteboard canvas. The Import SVG dialog previews the supported editable result, dimensions, layer count and any reductions. Choose Import editable layers, Import sanitized visual asset, or Cancel SVG import. Nothing is appended until confirmation, and the whole editable import is one Undo action.

The editable subset includes shapes, paths, groups, supported text/tspan styles, local use/symbol references, supported gradients, embedded raster images and simple rectangular clips. Unsupported masks, filters, stylesheets and other content produce notices and may be omitted. The sanitized visual route also strips unsupported markup and links and may change appearance. Neither route promises a full SVG or Figma round trip. The Slides image picker currently accepts raster images. Supported input and reductions.

Reveal artwork with masks

Select unlocked sibling layers and choose Use as mask in the inspector or Object menu, or press Control Command M. The backmost selected sibling becomes the source; a multi-layer selection forms a mask group. Choose Alpha for transparency, Vector for opaque painted geometry, or Luminance for brightness and transparency. Text, image alpha, gradients, strokes and group geometry can define visible regions. Alpha masks also use the existing blur/effect renderer.

Move or resize the source and target artwork independently. Use Select mask source from a target, or Release mask to reveal concealed artwork. Edits support Undo/Redo and .oui persistence. SVG and raster exports render actual mask coverage. Mask-specific outline view, specialized tree indicators, mode hover preview and exact nested Figma composition parity remain unfinished. Mask behavior and limits.

Development source showing an editable ellipse mask, its source and artwork layers, and Alpha mask controls

Navigate and select nested artwork

Click artwork to select its outer parent; Command-click deep-selects the hit layer, and double-click descends one owner level. With the design canvas focused, Enter selects immediate children, Shift Enter selects parents, and Tab/Shift Tab cycle siblings. Enter on text opens the inline editor. Inspector controls keep normal text editing and focus traversal.

In the Layers panel, Shift-click selects the contiguous visible range and Command-click toggles individual rows. Arrow keys navigate and expand/collapse focused tree rows. Search finds deep descendants and reveals their ancestor path. The Edit menu and action search include same-fill, same-stroke, same-text-property and same-component selection. Matching is local to the current page; mixed text ranges use exact interval/style comparison. This does not include Figma’s full structural matching or keyboard box-selection cursors. Selection behavior and keyboard details.

Organize the layer tree

Drag a layer or existing multi-selection onto the upper/lower edge of another row to reorder it, or into the middle of an ordinary container to reparent it. The page-root drop target also works as a button for the selected layers. Transformed owner changes preserve world geometry where the model can represent it; unsupported skew, locked hierarchies, managed instance children and invalid cycles are rejected before editing. Flow layout can arrange children after a drop.

Use Expand all/Collapse all, a layer-type filter, or right-click/Shift–F10 for scoped descendant controls and selection actions. Batch rename… previews literal find/replace and templates containing {name} and {n}; Apply changes the selection in one Undo step. In the layer tree, Shift selects visible ranges and Command toggles rows. Keyboard drag-and-drop, hover expansion and large-tree virtualization remain separate work. Structural editing and safeguards.

Development editor showing selected layers and a batch-rename preview before applying names

Rotate, resize and align

Drag the rotation handle to rotate a selection; hold Shift to use the chosen rotation snap increment. Lock aspect ratio persists on each layer and constrains width/height edits and pointer resizing. Mixed selections retain each locked layer’s own ratio. Hold Option while resizing to grow around the same world center, including under supported transformed parents.

A single child’s alignment buttons use its parent axes; multiple selected roots normally use world-space selection bounds. Hold Shift on an alignment button, or use an explicit parent-alignment command, to align sibling groups to their own parents while preserving group spacing. Distribution uses selection bounds. Flow-managed children use their parent’s layout controls; unsupported affine skew is rejected atomically. These controls do not establish every Figma scale or snapping behavior. Canvas transforms and current limits.

Set local defaults and navigation

Open File → Preferences… or press Command ,. Customize small/large nudge steps, Shift-rotation increments, drawing-tool retention, hover and selection dimensions, wheel zoom speed/direction, and optional right-button panning. Right-button pan replaces the ordinary right-click menu; Control-click remains a context-menu route. Set new frame/shape fills and strokes, plus text color/family/size/weight/style/line height.

Changes save immediately outside .oui files and affect new artwork rather than existing layers. Templates and explicit insertion values take precedence. The native app and browser use separate local settings. Reset restores defaults without changing projects; storage failures are reported. Choosing a font default does not install that font. Preference values and limits.

Search actions and registered tools

Open Actions with Command K, Command / or the header search button. Search command/tool names, IDs, categories, shortcuts or supported related words, then filter by category. While the search field stays focused, arrows move through results, Home/End choose the first/last, Enter runs the selected result and Escape closes. Ordinary text-selection shortcuts still work, and Tab stays within the dialog.

The latest 20 distinct command IDs are kept locally, including invocations through menus and shortcuts. They contain no project names, content or paths. The Recent category narrows history; Clear recent actions removes it without changing project files. This searches registered editor actions and tools, not external plugins or every library asset. Palette behavior and storage.

Whiteboard

Choose File → New whiteboard. Add notes with local author labels, shapes/text, sections, connectors, tables and mind maps. Connector labels, routes and arrowheads follow connected objects. Marker/highlighter ink, whole-stroke erasing, stamps and a temporary laser pointer are available. Set a local timer or a named local voting session; participant names are local labels. Undo, editable .oui files, image import, local comments and artwork exports use the shared editor. This is not a multiplayer service. Whiteboard tools and limits.

Slides

Choose File → New presentation. Add a blank, title, section, image or grid slide; reorder thumbnails, duplicate/delete slides and choose one of four themes. Edit text and shapes, place local images/components, change aspect ratio, and add notes or local comments. Command-D duplicates a selected layer inside the current slide; copy and paste place it relative to another slide’s frame.

Presenter view shows notes, the next slide and a timer. Audience view hides notes; both views use the current app window. Arrows, Page Up/Page Down, Home/End and Space navigate; B toggles a black screen and Escape exits. Hidden slides are skipped. Export the current PNG, all visible PNGs as a ZIP, or a PDF with rasterized slide artwork. Notes/comments are excluded. Deck exports support up to 200 visible slides and expose progress/cancellation. PowerPoint, live polls, cloud collaboration and a separate audience window remain unfinished. Slides guide and export limits.

Fonts and portable files

The catalog retains 1,959 Google families and 24 offline open-license families. Seventeen bundled families include genuine italic files. Search/filter, preview weights/italic, keep Google favorites, or import licensed TTF/OTF files. The Mac installed-font list uses fonts already on that Mac; proprietary font binaries are not bundled. Use Resolve missing fonts to audit and replace missing families across text layers, character ranges and local styles, with Undo.

Explicit .oui/SVG exports embed available used weight/style/script font files when embedding permissions allow. Installed proprietary files and restricted imported fonts are excluded. Saves exceeding 50 MB after embedding fail before writing; reduce embedded images or split the document. Missing-family detection is not a complete glyph/weight/axis audit. Fonts, licensing and offline limits.

Canvas backgrounds

Clear the selection on a Design or Whiteboard page and open Page in the right inspector. Set Canvas color with the picker or a six-digit hex value, change Canvas background opacity %, or turn Show background off. Use theme background removes the override and follows the current light or dark theme. These page edits support Undo/Redo and persist in .oui.

This is the canvas backdrop only. Frame fills, prototype backgrounds and artwork exports retain their own settings; the page backdrop is not painted into an SVG or PNG export. The Figma Bridge exchanges a supported single-solid page background, including opacity and visibility, through the public API. Other page paints are reported and omitted. Theme-following pages use the destination default. This new bridge path has API-contract checks; actual Figma desktop acceptance is still pending.

Check a color pair

Select artwork and open Color contrast checker in the right inspector. Enter six-digit Foreground and Background colors and a foreground opacity. Select one layer with exactly one visible solid paint to use Use selected paint or Use as background. The foreground button copies paint opacity; the background button treats the copied color as opaque.

The checker shows the ratio and normal/large-text AA and AAA thresholds, using the full ratio before rounding. It checks an explicit pair, not the rendered canvas: page backgrounds, group opacity, blends, effects, strokes and rich character ranges are not sampled. The values are session-local helper inputs and do not alter artwork or certify a design’s accessibility. Read the WCAG contrast guidance.

Copy editable layers between Mac windows

In Forma for Mac, select artwork and use the native Edit menu, editor/layer menus, Actions palette or Command C, Command X and Command V. Focused text fields keep normal text editing. Copy writes editable Forma layers, an SVG representation and selected plain text to the Mac pasteboard. It includes the selected artwork’s necessary definitions, not the entire project, unrelated artwork, comments or document paths. Cut removes artwork only after a successful pasteboard write; changing the document, page or selection during the write cancels removal.

Pasting into another document makes independent copies with fresh IDs, preserves supported world geometry with a 24-point offset, and adds required component mains on a Pasted component dependencies page. Available styles, variables, guides, embeddable used font faces and self-contained whiteboard records travel with the artwork. Instances link to the copied local mains; there is no live link to the source document. A same-session copy can retain existing definitions when it exactly matches the successful local Copy. Each paste is one undoable edit and persists when you save .oui.

External SVG opens the existing import review on the Design canvas; ordinary SVG-looking text stays text. Plain text becomes an editable text layer. Malformed Forma clipboard data is rejected before changing the destination. Transfers are bounded to 20 MB and 20,000 copied layers including dependencies, with a 50 MB destination-project limit and 100,000 characters for plain text. Missing definitions, conflicting embedded faces, unsupported skew, locked/managed destinations or expired large operations can reject safely. Copy fewer layers or use .oui for a larger transfer.

The browser demo keeps its renderer-local design clipboard. This native path does not implement Figma’s private editable clipboard, cross-app raster-image paste or a browser-system editable-layer clipboard. Timelines, comments, page backgrounds and references outside the copied closure are not transferred; variable/conditional prototype actions are omitted. Cutting a main still referenced by surviving instances or controls is refused. There is no automatic pasteboard monitoring.

Figma interchange

Use SVG for visual exchange or download the current Figma Bridge for its supported editable .oui subset. Unzip it, then in Figma desktop choose Plugins → Development → Import plugin from manifest and select its manifest.json. Run Oanarina Bridge, export a selection/page/all pages, or import a saved .oui to add new editable pages. Read the transfer report. Account or organization policies may restrict development plugins. Full public bridge guide · ZIP checksum.

Supported component transfers include needed cross-page main/variant definitions on a dependency page, linked instances with proven child correspondence, supported explicit overrides and single-target text/boolean/instance-swap controls. Import creates definitions before instances and uses actual native variant sets/property IDs. Unoverridden supported fields remain inherited. Ambiguous structures, nested swaps or missing mains may become independent editable appearance, with a report. IDs, references, ownership and cycles are validated before import; a failed operation rolls back newly created pages.

This is a bounded conversion contract. Slots, exposed nested controls, preferred-value suggestions, published-library identity, root/multi-target bindings, full variables/reactions, rich character ranges and arbitrary font axes are outside it or reduced. Variant defaults and some gradients/layout/effects can differ. New component and page-background paths have strict API-contract mock coverage; those mocks are not real Figma acceptance. Older synthetic fixtures ran through the connected Plugin API for shape/text/prototype paths. The attempted real component check was blocked by the service’s tool quota before any content operation. Actual desktop component/background acceptance and a full-fidelity round trip remain unverified. Direct binary .fig support is absent. The bridge in archived section 7 is the older v0.1.0 download.

Free local MCP · standalone download

Download Oanarina MCP · Startup notes · SHA-256 checksum · Startup notes and included operation schemas.

This is a separate free local automation server for the current Forma preview and version-two .oui projects. The server writes version-two documents; compatibility with the public v0.1.0 app is not claimed. Install Node.js 22 or newer, unzip the archive, then use absolute paths to the included server.mjs and your saved .oui project. No npm installation, account, API key or server subscription is required. AI hosts and models are separate products with their own terms.

node "/absolute/path/server.mjs" --project "/absolute/path/Design.oui"

The command speaks MCP over stdio and waits for a local MCP host. Configure a host supporting stdio servers with:

{
  "mcpServers": {
    "oanarina-ui": {
      "command": "node",
      "args": ["/absolute/path/server.mjs", "--project", "/absolute/path/Design.oui"]
    }
  }
}

Save a valid version-two .oui from the current development build first. Alternatively, append --create to create that exact file in an existing directory. The server exposes only the explicitly chosen project and opens no network listener. Nine tools inspect/read the document, edit nodes/pages/variables/styles in validated transactions, replace a document, undo recent MCP transactions, validate and export supported vector/text SVG. Each write requires the current revision from a read; stale changes are rejected.

Save in the development editor before automation, then close and reopen the file afterward. MCP writes and native Mac saves share a project lock. Native saves compare the last opened/saved hash and offer Cancel, Save As or an explicit overwrite when the disk copy changed. The editor does not live-reload MCP changes, and other applications ignoring the shared lock are not coordinated. MCP undo keeps 20 transactions in memory and clears on restart. Projects are limited to 50 MB and responses to 5 MB; headless SVG has approximate font metrics and rejects images/raster paints. The archive includes application and dependency licenses.

Return to development overview →

Archived Oanarina UI Tool v0.1.0 guide

1. Begin with a file

Open the Mac app and explore the editable sample. Click the home icon for recent files, a fresh design or an existing .oui project. The browser and native app keep their own local recovery stores.

Oanarina UI Tool recent files and starter choices

2. Draw and select

Use F for frames, R for rectangles, O for ellipses, L for lines, Shift L for arrows and T for text. The shape dropdown includes stars and polygons. P draws straight pen segments; Enter finishes. Shift P is freehand pencil.

V selects and moves. Shift-click selects several layers. Drag a blank region for a marquee. Use the hierarchical layer tree to choose nested layers, hide or lock them. Hold Space and drag to pan; Command-scroll zooms around your pointer.

3. Refine properties and type

Select a layer and edit coordinates, dimensions, angle, radius, fill, stroke and typography in the inspector. Double-click text to edit it. In Typography, choose Browse Google & Mac fonts to search the 1,959-family catalog. Preview a font and apply it. Twenty-four bundled families work offline; others download and cache. Installed commercial fonts are listed only in the native Mac app.

Rich text, italics, automatic paragraph wrapping and full variable-axis controls are still planned.

4. Arrange a layout

Command-G groups; Command-Shift-G ungroups. Command-D duplicates. Object and Arrange menus expose components, ordering, alignment and distribution. Containers support basic Row, Stack and fixed-column Grid layout, with gap and uniform padding. Responsive constraints, wrap, hug/fill sizing, variants and live component propagation are not complete.

5. Preview and leave a note

In Prototype, give a layer a destination frame. Present and click the layer to navigate. Use the previous/next buttons to browse frames. This is simple click-through navigation, without animation or conditional state. Press C and click the canvas for a local note; View → Comments lets you resolve or reopen it.

6. Save and export

Command-S saves an editable .oui; Command-Shift-S saves a separate copy. Browser saves download a file; the Mac app uses native file dialogs and atomic writes. Recovery and recent files are local and quota limited. File → Save a named version stores a local checkpoint. Command-Z and Command-Shift-Z undo and redo.

Select layers or a frame, then export SVG, PNG or JPEG at 1×–4×. With nothing selected, the current page is exported. SVG imports as one visual asset. Save .oui to preserve editable layer structure.

7. Transfer to and from Figma

Download Figma Bridge and unzip it. In Figma desktop, choose Plugins → Development → Import plugin from manifest and choose manifest.json. Run Oanarina Bridge. Export selected layers, the current page or all pages as .oui, then open the file in Oanarina. To go back, save/export .oui and import through the plugin.

Frames, shapes, simple text, solid fills, basic strokes and raster images have transfer paths. Advanced effects, text ranges, variants, linkage, layout sizing and prototypes are reduced or omitted. Read the report and inspect the result. Automated API-mock tests pass; the real plugin round trip still needs validation. Binary .fig files are not supported.

8. Find a command or check the plan

Command-K searches available actions. Help → Keyboard shortcuts lists this build’s shortcuts. In v0.1.0, Help → Feature register provides the original 1,860-requirement snapshot. The website’s current development register contains 2,022 requirements across 60 categories. Planned and partial requirements are not promises of completed functionality.

Return to Forma & downloads →