# Brand and assets (/docs/brand) Fanta's identity starts with its flowing **F mark**, a dark canvas, and readable type. The product name is **Fanta**. The line **Your design is source.** connects the visual editor to the files behind it. ## Logo [#logo] These are the existing Fanta mark and native app icon used by the product and website.
Fanta's white F mark on a dark background. Download light SVG
Fanta's dark F mark on an ivory background. Download dark SVG
Fanta's native app icon with the F mark on a textured dark square. Download app icon
Keep the mark's proportions and use a version that contrasts with its background. Leave space around it, and keep small navigation placements simple. The light and dark SVGs share the same geometry. ## Color and typography [#color-and-typography] The docs carry the dark foundation and periwinkle/lime accents from Fanta's existing presentation identity. Light mode uses an ivory reading surface. | Color | Value | Use in the docs | | ---------- | --------- | ------------------------------------------------------------------ | | Ink | `#05070b` | Dark reading surface and the dark mark | | Ivory | `#ededed` | Main text on dark surfaces | | Periwinkle | `#8191ff` | Accent family; lighter or darker shades maintain readable contrast | | Lime | `#d8ff78` | Primary action in dark mode | **Geist** is the interface and reading typeface. **Geist Mono** is used for FNX, paths, and small labels. Both match the existing Fanta website typography. The layout keeps screenshots large enough to inspect and makes documentation links easy to find. ## Product screenshots [#product-screenshots] The [visual tour](/docs/screenshots) contains screenshots captured directly from the installed **Fanta 1.0.0 Public Alpha** app on **October 13, 2026**. They show Layers, Variables, layout, components, FNX, Motion, and Prototype controls in owned sample projects. Each figure links to its original full app capture. [Layers panel](/docs/editor/surfaces#canvas-and-layers) · [Variables workspace](/docs/concepts/variables) · [Motion](/docs/editor/motion) · [Prototype](/docs/concepts/prototyping) · [FNX source](/docs/concepts/fnx-design-as-source) The [recorded demos](/docs/demos) from October 12 cover the canvas → FNX → Git workflow and an agent edit. The agent capture shows the **result** of an external agent's MCP edit. Its caption should describe that result; the image does not show an agent conversation. ## Writing about Fanta [#writing-about-fanta] Describe the workflow concretely: draw on the canvas, save readable source, review a change. Call FNX **design source** and explain that it is a static format. State which capabilities are available in a build and which are [planned](/docs/roadmap). Comparisons with other tools should describe the [differences in workflow](/docs/fanta-vs-figma) and supported behavior. # How Fanta works and what it can do (/docs/capabilities) ## Public Alpha workflow [#public-alpha-workflow] Fanta 1.0.0 Public Alpha is available for Apple Silicon Macs through the [official download page](https://www.fantaisa.net/download). The signed Build45 package passed Apple notarization, stapling, Gatekeeper, tested installation, save/reopen, and same-build replacement checks. An anonymous public download matched the accepted installer checksum. The launch overview and three captioned public workflows were reviewed on that signed app. The [installation guide](/docs/getting-started/install) records the exact package and acceptance scope. Use the [demos and ten-minute exercise](/docs/demos) and [agent quickstart](/docs/getting-started/connect-an-agent). The inventory below follows current main; the accepted signed Build45 app is bound to earlier source `57d86330`. Later changes to MCP inspection, rendering, and large-project handling are documented from source and are not part of that accepted installer. The release recordings validate bounded workflows rather than every source-listed capability. Automatic updates remain disabled. Fanta is a design editor whose working document is a project folder. You can create a design on the canvas, inspect and edit its `.fnx` and managed JSON source, ask an agent to work on the open design, and review the saved files in Git. This map follows [fanta-edit main at `e143440a`](https://github.com/jeanc18rlos/fanta-edit/tree/e143440a93732422ac37c6ad1901ff14c420ec7b) as of October 19, 2026. It describes implemented source paths and states native acceptance separately. ## The core loop [#the-core-loop] | Step | What happens | Go deeper | | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | | Create or import | **New Design** scaffolds a project. Opening a `.fig` attempts to create an editable native project beside the import; the original `.fig` is not the working copy. The importer warns about known flattened or omitted structures; supported Boolean operations keep editable operands. | [First project](/docs/getting-started/first-project), [Figma import](/docs/formats/figma-import) | | Design | Canvas tools, the inspector, Variables, and Motion mode change the live document. Pages and layers organize it. | [Editor](/docs/editor), [Inspector](/docs/editor/inspector) | | Save as source | Autosave writes page and component `.fnx`, document metadata, variables, motion, and assets to the project folder. **Save As** can create another native project copy. | [Project layout](/docs/concepts/document-model), [.fnx](/docs/formats/fnx) | | Edit source | Code lets you edit the active page or component `.fnx` and paired JSON, validating before it saves and reloads the canvas. External editors can change other supported project files; Fanta validates those on reload. Embedded Find searches the active FNX or JSON buffer; **Discard draft** affects the selected buffer. Source Save and a canvas-driven source refresh preserve text Undo. A dirty Code buffer temporarily locks canvas edits while accepted properties of one selected layer remain readable. | [Design as source](/docs/concepts/fnx-design-as-source) | | Review | In non-Store builds, Fanta initializes Git for a new project when available and when it is not already inside a repository. **Review Changes** and **Commit…** expose file changes when a repository is present. Store feature builds skip automatic Git setup. | [Version control](/docs/guides/version-control-designs) | | Share output | Export the active page or selected layers from the inspector as PNG, JPEG, SVG, or PDF. Dev mode supports inspection and page-bound handoff marks. | [Export](/docs/formats/export), [Dev mode](/docs/editor/dev-mode) | ### What is in a project? [#what-is-in-a-project] A native project has a `fanta.json` manifest, `pages//page.fnx`, reusable component source in `components//master.fnx` (or `components///master.fnx` for a variant set in layout v5), document state under `doc/`, and an `assets/` tree. `doc/asset_library.json` records named media even before placement; `doc/motion.json` holds authored motion data. New projects seed `AGENTS.md`, a project-local `fanta.md` design specification, and FNX helper files without replacing a customized specification. `exports/` and previews are output paths, not the source of truth. [Project structure and source rules →](/docs/concepts/document-model) Structural canvas saves retain authored FNX attributes on surviving nodes and source comments when supported. A deletion or type change that would silently lose source-only data can make Save refuse the change with a preservation error. Saved files remain intact, but the live canvas edit may remain until Undo; edit FNX directly to remove that data intentionally. [Source preservation →](/docs/concepts/fnx-design-as-source) On direct-download macOS, a fresh `.fig` import stages a complete sibling project before publishing it; if that first publication fails, the parsed design stays open for a save retry. Existing project saves use the transaction journal, and unchanged generated design files are not rewritten. A received project with project-local settings or executable Git configuration can open in **Restricted Mode** until you review and trust it. The signed Build45 app checks `.zed` settings; current source checks `.fanta`. [Import →](/docs/formats/figma-import) · [Project format →](/docs/formats/fant) ## Edit by hand [#edit-by-hand] ### Canvas and organization [#canvas-and-organization] * Select, marquee, pan, zoom, resize, rotate, nudge, duplicate, group, frame, and ungroup layers. Snapping uses the grid and edges or centers in the active page or opened component subtree; a different page does not attract the drag. A Select gesture cancels its pending move if its mouse press is lost. Scale selected content proportionally; the inspector also exposes rotate, flip, align, distribute, and Tidy up for eligible selections. Duplicating a component or complete variant set carries its definitions and internal links. Same-document Paste reuses live definitions, or restores captured definitions with new IDs if the originals were removed. Cut, Delete, and Duplicate respect layer locks; Paste validates component dependencies before applying a change. [Canvas tools →](/docs/editor/tools) * Create and manage pages. The layers panel supports selection, renaming, nesting, order changes, visibility, and locking. [Pages and layers →](/docs/concepts/pages-world-space) * Draw frames and sections, shapes, arrows, text, vector paths, and freehand marks. Edit path geometry, and convert a suitable single vector path into **Text on Path**. Double-click can edit selected text or vectors, crop an image, drill into a container, or reveal properties, depending on the node. Rounded ancestor clips exclude invisible child artwork from authoring hits. Editable Design Crop shows Ratio, Cancel, and Apply controls; Apply commits a pending crop as one undoable change. Its controls have narrow-canvas insets in Build45 source, though this exact layout lacks a separate installed-app check. Right-click exposes applicable edit, structure, and component actions. [Canvas tools →](/docs/editor/tools), [Vectors and text paths →](/docs/concepts/vectors-icons-svg) * Paste bitmap images, or use the local picker to place supported raster images and MP4 video. Editable SVG can come from Project Assets or a supported generation result; audio is placed from Project Assets. Canvas copy and paste of design layers can cross pages within one document; a cross-document canvas paste is explicitly rejected. [Media and import →](/docs/formats) * Open **Assets** in the file inspector to reuse stored images, SVG, MP4, or audio across pages. Generated results can be added to the project before placement. [Project Assets →](/docs/editor/assets) ### Inspect and style [#inspect-and-style] The inspector includes position, size, rotation, corner properties, opacity, blend, fills, strokes, typography, effects, layout, component controls, interactions, and export settings. The exact controls depend on what is selected. The image and video paint source chooser lists compatible project media and refreshes after asset, layer, Undo/Redo, or project reload changes. **Select matching layers** finds same-kind descendants on the active page; Sections match Sections rather than ordinary Frames or Groups. An editable TextPath layer offers **Edit object** for inline text editing. Bound paints and supported node properties display values resolved through the active variable mode. **Detach** bakes a bound fill’s current color for direct editing. Independent corner values remain separate, and mixed selections show mixed values; some mixed-value edits commit when the gesture ends rather than previewing live. During a dirty source draft, one selected layer’s accepted properties remain readable while writes stay locked. Constraint data persists, but constraint controls are disabled in the default Design inspector. [Inspector →](/docs/editor/inspector) Current source commits a valid focused numeric property draft before Save, Save All, or closing with Save, and rejects an invalid draft without discarding it. Merely focusing a rounded X/Y display preserves its underlying fractional value; typed fractional TextPath X/Y edits follow painted bounds under transformed parents. These paths have bounded tests; the signed Build45 recording is not a general acceptance test for them. Frames support horizontal, vertical, and grid auto-layout, child sizing, alignment, wrapping, and size constraints. Grid tracks can use fixed, fractional, or content-sized values, and children can be pinned to cells; Figma grid behavior still has gaps, including auto rows and spanning-child sizing. Components and instances support reusable masters, variant sets, properties, and instance values. A project variant set can appear as one frame on the first visible page and has one source folder containing its variants. Instance actions resolve the visible member from the set default, overrides, and active variable modes. Detach preserves supported appearance and refuses combinations it cannot preserve. Variable collections support modes, aliases, typed values, and property bindings. Agents can edit these structures through the live operation surface, including fill and effect stacks, per-side and dashed strokes, constraints, and shapes. Effects beyond drop/inner shadows and layer/background blur remain unsupported. [Auto-layout →](/docs/concepts/auto-layout) · [Components →](/docs/concepts/components) · [Variables →](/docs/concepts/variables) Instance text exposed through a component property can use the placed instance’s active variable mode. A direct text-content variable binding stays authoritative and is read-only in instance text editing; change the variable or binding instead. **Go to main component** uses the currently resolved variant member and pauses scope navigation while source edits are pending. [Components and instances →](/docs/concepts/components) ### Prototype, animate, and discuss [#prototype-animate-and-discuss] Fanta has prototype interactions and preview surfaces. Closing an interaction detail keeps its interaction; **Remove** deletes it. Motion mode supports clips, tracks, keyframes, playback, typed Current time seeking, and guarded auto-keyframe editing; time comments can anchor feedback to a point in an animation. [Prototyping →](/docs/concepts/prototyping) · [Motion →](/docs/editor/motion) Canvas comments support pins, replies, mentions, attachments, and resolution. Comments and page-bound measurements or developer annotations are saved with project metadata. They are project-local, not live multiplayer comments. [Comments and surfaces →](/docs/editor/surfaces) · [Dev mode →](/docs/editor/dev-mode) ### Dev inspection [#dev-inspection] Dev mode switches to a read-only inspection session for art and Code source. It offers layer inspection, measurements, annotations, and Saved Code for handoff. Measurements and annotations remain editable page marks. The **Readiness** control is currently unavailable. [Dev mode →](/docs/editor/dev-mode) ## Work with agents [#work-with-agents] **External agents.** Fanta's local MCP server is enabled by default and can be turned off in Settings. With a design open and the server running, the `fanta --mcp-stdio` bridge connects clients such as Claude Code and Codex to the focused design. The committed server registers **13 tools**: | Tool | Purpose | | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `get_editor_state` | Focused page or component, selection, bounds, and placement hints. Its component preview is capped at 100; `component_count` and `more_components` signal when to page the design system. | | `get_guidelines` | Design guidance and the project's `fanta.md` context. | | `get_design_system` | Component properties, variants, variable collections, modes, values, and bindings. One `offset`/`limit` independently pages components, sets, and variables (default 100, maximum 200); follow each `more_*` flag. | | `prepare_design_asset` | Open an image or SVG generation draft for user review; it does not submit generation. | | `batch_get` | Read nodes and geometry; page large results with `offset` and `limit`. A page listing may traverse at most 1,000 nodes and each response is capped at 256 KiB. Choose `summary`, projected `style`, or `raw` detail (raw requires exact IDs). | | `batch_design` | Stream 43 typed creation, layout, styling, variable, and component operations. Content edits form one undoable batch; selection- or viewport-only batches create no content undo step. Optional activity identifies the editing agent. | | `get_screenshot` | Inspect a rendered page or node, optionally at a Motion clip playhead. | | `read_fnx_source` | Read a bounded slice of a project's source. | | `validate_fnx_source` | Validate a complete FNX or supported project JSON candidate without writing it. | | `import_image` | Store an image from a path, HTTP(S) URL, or encoded source in Project Assets. | | `list_comments` | Read comment threads on a page. | | `reply_comment` | Reply to a thread and optionally resolve it. | | `report_agent_activity` | Show a named agent's current page, node, source file, or workspace focus in the local app. | The connection command copied by the running app includes its executable and instance data directory. Activity reports can follow an agent across the Canvas, Variables, and Code workspaces; idle reports expire. They are not cross-agent locks or networked collaboration. [Connection guide →](/docs/getting-started/connect-an-agent) · [Tool reference →](/docs/tools) **In-app agent.** The docked Agent Panel can inspect and edit the canvas through native design tools. It has review and planning modes, design comments, project image import, and activity reporting paths. A completed Plan can offer **Apply plan**, which switches to Write and sends the plan for implementation. In current source, a native Agent turn stops after 64 model requests, including continuations and agent-managed retries, while completed work remains; this is not a credit limit and is not claimed as an installed Build45 check. The separate **Build** editor mode uses a signed-in v2 agent to turn a brief into tasks, preview each canvas result, and let you Accept, Retry, Skip, or Stop; optional automatic acceptance is available. Native specialist agents can share the lead chat's reference images with supported models. The managed provider reads chat models and credit estimates from a signed-in catalog; other providers can be configured. Its `evaluate_with_jev` tool requests typed decisions from the hosted service when signed in. The generation workspace can hand a draft design request to the panel for review before sending. [Agents and AI →](/docs/agents) **Generation workspace.** Signed-in users can search the live catalog for image, video, audio, and vector workflows. Recipes and controls depend on the selected model, including video frames, duration, resolution, and audio options where supported. Results can be previewed, saved, reused as source, or added to Project Assets. Saved uncertain submissions can be retried or recovered before starting another job. Placed images become bitmap layers; supported SVG becomes editable vectors; MP4 becomes video; WAV, MP3, and FLAC become audio layers. Public accounts need sign-in and purchased credits for managed generation. [Media generation →](/docs/agents/media-generation) **Settings and account.** Settings manages appearance, canvas panels, source editing, model providers, hosted tools, MCP connections, account, billing, and privacy controls. Billing usage charts use rolling 7, 30, or 90-day UTC windows when the service provides data; boundary calendar days can be partial. New purchases use web Billing. Public accounts have no free AI trial or signup credits; hosted AI requires purchased credits. Existing founder exceptions are restricted on the backend. The hosted MCP connections used by Fanta's in-app agent are separate from the 13-tool local canvas server above. A Mac App Store feature build blocks Fanta from launching local agent, MCP, and terminal processes; remote HTTP MCP connections remain available. [Settings and build differences →](/docs/editor/settings) ## Formats and output [#formats-and-output] | Format or output | Current behavior | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Native project folder | Editable, source-backed, and suitable for Git; Save As creates another copy. Layout v5 groups a variant set and its members under one component folder; older v4 projects upgrade on save. [Details →](/docs/formats) | | `.fnx` | JSX-like page/component source. Its printer retains finite numeric values, including very small ones, instead of rounding them to zero. Complete candidates can be validated before writing. [Syntax and limits →](/docs/formats/fnx) | | `.fig` | Opens through an importer and attempts a native sibling project. Supported Boolean operands remain editable; known structure losses receive warnings. Import fidelity and write access vary. [Details →](/docs/formats/figma-import) | | Images and local MP4 | Supported raster images can be pasted or placed through the local picker; it also places MP4 video, which can be trimmed without changing the source file. [Details →](/docs/editor/assets) | | `.fant` | A snapshot/container format supported by the format layer; the live editable project is the folder. [Details →](/docs/formats/fant) | | PNG, JPEG, SVG, PDF | Inspector export for a selection or page, with scale, dimensions, and presets where supported. JPEG uses fixed quality 95 and loses transparency; choose PNG when exact pixels or alpha matter. [Details →](/docs/formats/export) | ## Current limits [#current-limits] * The documented alpha target is **Apple Silicon macOS**. Other platforms have build scaffolding, but are not supported releases. [Install notes →](/docs/getting-started/install) * Some visible tools and inspector actions remain incomplete. Fanta reports unavailable actions where possible. Grid auto-layout is implemented with the Figma behavior gaps above; effects are limited to drop/inner shadows and layer/background blur, **Pass Through** has no engine equivalent, and Dev **Readiness** is unavailable. [Editor status →](/docs/editor/tools) * Large `.fig` imports can be slow and memory intensive. Source reads and node reads have response limits, including a 1,000-node page-listing traversal budget, so agents should page through large documents. [Troubleshooting →](/docs/mcp/troubleshooting) * In non-Store builds, Fanta prefers its bundled Git and falls back to a system `git` for automatic initialization outside existing repositories. A design still saves if `git init` fails. Automatic initialization is disabled in the Mac App Store feature build. [Version control →](/docs/guides/version-control-designs) * A generated result over 128 MiB cannot be added to Project Assets. Placing a bitmap is also limited to 32 MiB, 32 megapixels, and 16,384 px per side; the local MP4 picker has a 100 MiB cap. Audio needs a decodable duration and is placed through **Add to project → Assets → Place**, not the direct **Add to design** action. [Project Assets →](/docs/editor/assets) * Bounded MP3 placement, Save, Undo/Redo, and cold storage checks pass, but cold Audio preview was absent in the checked project. WAV preview and broader audio recovery remain unverified. [Media generation →](/docs/agents/media-generation) * Source synchronization has conflict handling and save recovery, but an external write to the same path can still race Fanta's check and rename. Fanta keeps the last valid canvas when an external source reload fails and reports the error for repair. Recent changes reduce redundant reloads and preserve unaffected layout geometry, yet large-project Save and some draft-recovery journeys remain under release validation. Keep Git history for important projects. [Source editing →](/docs/concepts/fnx-design-as-source) * Large-page rendering and native responsiveness remain under validation. Current macOS source normally uses Skia Graphite on Metal and falls back to Ganesh if Graphite cannot start. Retained translation is enabled by default; `FANTA_RETAINED_TRANSLATION=0` disables it. These renderer changes postdate the signed Build45 installer, and bounded checks do not establish a general native drag latency target. * The Public Alpha release is a direct-download Apple Silicon Mac app. Signed Build45 passed notarization, stapling, bounded installation checks, and an anonymous public download checksum check. The reviewed public workflows use that signed app. Clean-account installation and migration from an older version remain unverified; other Mac architectures are outside this release. Automatic updates are disabled. [Install notes →](/docs/getting-started/install) * Node graph, generic AI artifact, and embed node types render as placeholders. Existing 3D content can survive unrelated edits and saves, but that does not establish a complete 3D editor. * Canvas comments and agent cursor presence are local to the open app and project. Real-time multi-user editing and cross-agent locks are not part of the current implementation. * The current external MCP surface is the 13 registered tools above. Older references to a `:3846` HTTP server, 127 design tools, `cargo run -p fanta-app`, or `save_document` describe a different implementation. * In current source, app keymap actions use `fanta::` and app links use `fanta://`; the signed Build45 package uses `zed::` and `zed://`. Review custom keymaps and links when a newer installer is available. [Shortcuts →](/docs/editor/shortcuts) The [alpha issue log in fanta-edit](https://github.com/jeanc18rlos/fanta-edit/blob/9e582bee494b85f54e4dcb4084b5d55acd097d37/docs/alpha/KNOWN_ISSUES.md) records earlier implementation and release observations. Several entries predate the committed features described here. The [release capability coverage report](https://github.com/jeanc18rlos/fanta-edit/blob/9e582bee494b85f54e4dcb4084b5d55acd097d37/docs/alpha/CAPABILITY_COVERAGE.md) records bounded checks and remaining native limits; this map describes implemented source paths. [Installation](/docs/getting-started/install) records the released package separately. # Demos and examples (/docs/demos) The launch overview and three recordings below use the accepted signed Fanta 1.0.0 Public Alpha app. These players use silent recordings with captions and load when you choose Play. Captions identify later checkpoints and reopened views. Complete, readable workflows matter more than speed. ## Examples [#examples] ### I Asked AI to Recreate Airbnb — Here’s the Result [#i-asked-ai-to-recreate-airbnb--heres-the-result] A walkthrough from [Fanta Design Editor](https://www.youtube.com/@FantaDesignEditor).