Skip to content

Releases: tracyapps/EXP-design

EXP [design] v2.7 —Gradients, color matrix, patterns, accessibility improvements, and introducing user accounts

Choose a tag to compare

@tracyapps tracyapps released this 20 Oct 23:46

EXP [design] v2.7

Version 2.7 / build 18 · October 20, 2026.

More control over color, with handles that stay out of the way

  • Mesh fills combine a base color with editable color points. Select a point on
    the artwork, move it, change its color and opacity, and shape its spread.
  • Radial gradients and Mesh points have matching ellipse controls: drag the main
    radius to turn and lengthen it, and the second radius to narrow or widen it.
    Exact Radius X, Radius Y, and Angle fields support numeric editing.
  • The paint editor stays open while you work on the canvas. Selected points and
    stops keep their color controls in sync, including when palettes are spread
    across multiple monitors.
  • Duotone and Color Matrix effects offer simple color choices plus all twenty
    matrix coefficients for fine control over image color and opacity.

Everyday editing refinements

  • Editable polygon corner radii and a cleaner path-point context menu.
  • Pattern fills repeat seamlessly at fractional positions, with independent
    per-fill scale and SVG export.
  • Pattern fills keep their anchoring through canvas movement and anchor changes;
    changing one fill's anchoring no longer changes every use of its shared tile.
  • Horizontal and Vertical Flip follow canvas axes on rotated artwork, including
    triangles and converted paths.
  • Artboard notes support headings, emphasis and links. Notes Undo works reliably,
    and tooltips display their intended text.
  • Pattern and component source dimensions can be edited directly; detached
    windows and reveal commands support a workspace spread across displays.

Export and compatibility limits

Mesh is a base plus layered radial colors, rather than a Bézier patch mesh.
Native and EXP-authored export/re-import paths have focused checks; this does not
promise editable third-party meshes. Rotated gradient HTML uses a scalable,
self-contained SVG image when CSS cannot represent the authored ellipse angle.
External nonuniform CSS resizing can change that angle. Legacy imported Shape
patterns retain their original sizing until explicitly changed to fixed tile size.

Interface and accessibility

  • Settings → General links to your optional free EXP account for your profile,
    email preferences and beta/feedback choices. Account preferences apply to the
    website; app settings and design files are not synced.
  • Settings → Accessibility offers independent interface text size, larger click
    targets and panel help choices. These settings leave document artwork intact.
  • Layer names use clear, standard macOS system typography. Small interface labels
    have stronger contrast, and panel instructions wrap and scroll within their space.
  • Detached panels have named Collapse/Expand buttons. Artboard and document
    controls have clearer names, and hover help preserves VoiceOver navigation.

Extensive automated and owner accessibility testing has been completed, including
VoiceOver, contrast, interface text size, click areas, and save/open. Full Keyboard
Access remains unverified because it could not be enabled on the test Mac.
Accessibility work continues; confirmed barriers reported by users will receive
high-priority investigation and hotfix treatment.

Existing export limits remain: SVG inner-shadow spread can differ from the
canvas, and unsupported imported clipping/effects may need adjustment. Review
exports before delivery; use a raster export where exact rendered appearance is
required. This release does not claim complete fidelity for every external file.

EXP remains usable without an account or paid entitlement. Optional website
accounts, Pro offers and usage collection have separate rollout requirements;
this native update does not announce paid features or enable usage collection.

EXP [design] v2.6 — A smoother canvas, and everyday tools.

Choose a tag to compare

@tracyapps tracyapps released this 02 Oct 03:56

EXP [design] v2.6

A smoother canvas, and tools for the everyday work.

This small update focuses on busy design documents: the versions, inspiration
images, complex vectors and walls of icon possibilities you keep around while
working. It also adds a Knife that follows your hand, nested-folder Unite, and
three ways to copy just the appearance you need.

Faster large documents

  • Selecting, moving and recoloring large batches avoids repeated layer-tree
    searches and individual updates for every icon.
  • Panning and zooming complex vector walls do less work. Dense path-based pattern
    fills use a cached canvas preview while the editable vectors and export remain
    intact.
  • Ruler pointer markers move independently of the artwork, so moving the pointer
    with rulers visible no longer redraws the entire canvas.

A Knife that follows your stroke

  • Press K, click to select artwork, then draw the cut you want. The cut follows
    the path you draw, including bends and closed loops.
  • Choose what to cut: shapes, lines, paths and images. Choose the layer scope:
    top layer, within the group, or all layers/groups.
  • Mask shapes can be cut too. Image cuts keep the original image and use editable
    masks rather than discarding pixels.
  • Object → Path → Cut with Line keeps straight cuts precise, with a movable,
    rotatable preview and keyboard stepping for measurements and angle.
  • Unite can collect compatible vector shapes from nested folders, so you no
    longer have to select every shape individually. Mixed folders stay intact.

Copy exactly the style you need

Copy / Paste Shortcut Includes
Effects ⇧⌘C / ⇧⌘V Effects, opacity and blending
Style ⌥⌘C / ⌥⌘V Fill, gradients/patterns, stroke and corners
Style & Effects ⌥⇧⌘C / ⌥⇧⌘V Both together

Each command keeps its own clipboard. Paint can reach compatible artwork in
nested folders; pasting appearance remains one Undo step.

Small conveniences

  • Save a named type style directly from Properties into Design Language.
  • Checked and unchecked artboard notes export as proper GitHub-flavored Markdown
    task lists in the Handoff Package.

Limits worth knowing

  • A cut must cross the artwork or form a closed loop to split a filled shape.
    Locked and hidden layers are protected.
  • Paint attributes apply where the target supports them. Live text supports solid
    color and outlines; images and component instances receive whole-layer effects.
  • Appearance clipboards stay within the current editing window/session.
  • Complex pattern previews are a canvas optimization; SVG/export fidelity and
    editable pattern sources are preserved.

EXP [design] 2.6 is build 17 and requires macOS 26.2 or later.

EXP [design] v2.5 — Paint, everywhere.

Choose a tag to compare

@tracyapps tracyapps released this 24 Sep 00:13

EXP [design] v2.5

Paint, everywhere—and a Sanaa that does the busywork.

EXP [design] 2.5 finishes the paint model: any paint—solid, gradient, or
vector pattern—can now be a fill or a stroke, patterns import from SVG as
live editable tiles, and mask groups export correctly to every surface. Sanaa
learns the cleanup work it was always meant for: bulk restyles, renames,
token application, and spacing normalization as consented, undoable batches.

Patterns, as a first-class paint

  • SVG <pattern> fills import as real, editable pattern paints—the generated
    background files designers actually meet round-trip as patterns, not
    flattened images or a single flat color. Percentage lengths (width="100%")
    and gradient href stop inheritance that used to blank these files now
    import correctly.
  • Any shape's fill or stroke can be a pattern (or gradient) from the
    inspector's paint editor, and it renders identically on canvas, in SVG, in
    the Handoff Package, and in raster export.
  • Each pattern anchors its own way: artwork-anchored patterns ride the layer
    they paint, while imported shape-anchored (objectBoundingBox) patterns
    keep their authored behavior—and the choice is per pattern, in the
    inspector.
  • Patterns save into the Design Language, apply from it, and import across
    documents.
  • A vector pattern survives SVG export as a true <pattern> definition that
    browsers and Preview render live—where most professional tools rasterize
    pattern swatches on SVG export or drop them entirely.

Strokes are paints now

  • Gradient and pattern strokes, on every shape, authored from the same paint
    editor fills use—on canvas, in SVG, and through the path geometry of the
    Handoff Package.
  • Documents from every earlier version open unchanged; solid strokes keep
    their exact rendering, and Outline Stroke converts a gradient-stroked shape
    into an outline carrying the same paint.

Mask groups export as masks

  • A masked group now exports masked: SVG gains a real <clipPath> built from
    the authored silhouette, and the semantic HTML handoff clips through the
    same silhouette via CSS clip-path—one definition shared by every export
    surface.
  • The shape that defines a mask no longer appears as a real filled shape over
    the content in exports. Its fidelity row states whether the clip used its
    exact outline or its bounds rectangle.

Sanaa: cleanup and repetitive work

  • New consented, undoable batch operations for the tedious parts: restyle
    every layer matching a predicate (restyleNodes), apply a Design Language
    token by value (applyToken), snap spacing to a scale
    (normalizeSpacing), and rename by rule—find/replace, prefix, suffix, or
    sequence (renameNodes).
  • The permission sheet now shows what a batch will do before you allow it:
    how many layers change, what scope the request covers, and a plain warning
    when a change reaches a component source ("every placement of it updates").
  • Every batch reports exactly what it did—matched, changed, skipped, with
    sample layer names—and remains one named Undo step. Token application sets
    values without creating links, and says so.

Export and workflow fixes

  • The export panel remembers format and size separately, with an explicit
    scale control (0.5×–4×).
  • Vector paths with a gradient or pattern stroke export to CodePen and the
    Handoff Package with the paint intact.

Honest limits

  • An exported mask renders correctly in browsers and Preview, but re-imports
    into EXP unclipped until SVG clip-path import lands (tracked).
  • Sanaa bulk operations edit document layers and component sources; the
    internals of a placed component instance are never edited by a bulk op—an
    instance changes as a whole layer or through its source.
  • Design tokens omit patterns rather than mislabel them: the W3C token format
    has no pattern concept, and extending it would break the format's promise.
  • Browser rendering remains the SVG conformance target.

EXP [design] 2.5 is build 16 and requires macOS 26.2 or later.

EXP [design] v2.4 — Meet Sanaa.

Choose a tag to compare

@tracyapps tracyapps released this 02 Sep 15:45

EXP [design] v2.4

Meet Sanaa—and a vector toolset that grew up.

EXP [design] 2.4 introduces Sanaa, an optional design companion that works from
the live canvas while leaving the designer in control. It also completes the
deferred vector-tool queue, closes several export-fidelity gaps, and smooths out
daily canvas, Layers, and multi-window work.

Meet Sanaa

  • Ask Sanaa for a critique, design directions, variations, repetitive work, or
    help completing a design directly from the canvas context menu.
  • Sanaa can inspect the frontmost document and draw editable pages, artboards,
    and layers. New work remains ordinary EXP content that can be selected,
    changed, saved, reopened, and exported normally.
  • Existing work is protected by explicit permission. Sanaa asks before changing
    it, applies small transactional batches, and leaves each batch as one clearly
    named Undo step.
  • A dedicated panel streams the conversation and activity, identifies connected
    agents, highlights affected canvas objects, and provides Select and Go actions.
    The full response reader renders selectable Markdown in a normal resizable
    window.
  • Structured critique reports organize findings in a numbered rail. Show on
    canvas jumps to the exact layer; Explore places the finding back into the
    composer for review without sending or changing anything automatically.
  • Critiques can use measured document facts for contrast—including bounded
    sampling over gradients—text size, target size, spacing, fonts, component
    roles, relationships, and instance overrides. Sanaa distinguishes measured
    facts, estimates, and items EXP cannot assess rather than claiming blanket
    compliance.
  • A bundled, versioned design-knowledge pack grounds critiques and directions in
    the document's own visual language. A separate etiquette guide teaches any
    connected agent to use stable IDs, ask about placement, reuse Design Language
    tokens, avoid unrequested deletion, and fail honestly.
  • A guided setup flow covers in-app Codex, Claude Code, Claude Desktop, generic
    MCP clients, and the choice to use no assistant at all.

Sanaa is off by default. EXP ships no language model, subscription, or API key.
The in-app conversation uses the signed-in local Codex runtime; external MCP
clients can use EXP's local canvas bridge under their own provider and privacy
settings. Conversation access and permission to change a canvas remain separate.

Better paths and drawing tools

  • The Pencil tool turns freehand strokes into ordinary editable Bézier paths,
    with a fidelity control that meaningfully changes the fit.
  • Direct Select moves the whole object when no anchors are selected, while
    anchors and handles still take priority.
  • Pen handles keep smooth symmetric pairing by default and can be broken with
    Option for corner work.
  • Live editable text can carry a real outline in the canvas, semantic HTML, and
    SVG.
  • Convert to Outlines, Convert to Path, Outline Stroke, Fill, and Stroke work
    recursively through groups and mixed selections while preserving hierarchy and
    committing one undo step.
  • Placed SVG dash arrays reconstruct EXP's editable Dash and Dot patterns, and
    those patterns round-trip through SVG.

Canvas and workspace fixes

  • Moving path points refits their object bounds so hit testing, selection,
    shadows, and paint bounds follow the visible geometry.
  • Layers selection immediately receives arrow-key nudges, and the persistent
    Auto-select control supports moving a selected object beneath overlapping
    artwork.
  • Reveal in Layers and Expand or Collapse All now target the live Layers surface
    after docking, floating, collapse, and document changes.
  • Floating trays return above document windows on every display but no longer
    cover EXP popovers, menus, field tips, or an active Sanaa response reader.
  • Automatic artboard creation, paste, Duplicate, and Sanaa placement avoid loose
    visible artwork on the wall while preserving intentional explicit placement.

Export fidelity

  • Noise and dissolve effects now render through PNG, JPEG, and PDF export instead
    of disappearing.
  • Oversized layer blurs degrade in resolution instead of silently dropping the
    effect.
  • Transparent gradient falloff retains smooth alpha through raster export, and
    the repaired effect path closes two PDF compositing errors found while testing
    layered production artwork.
  • Existing SVG, semantic HTML, design-token, CodePen, Handoff Package, import,
    component, and canvas-page workflows remain covered by the release regression
    suite.

Honest limits

  • Sanaa needs a supported signed-in local agent host. Claude Desktop and other
    external MCP clients use copyable setup rather than a bundled one-click
    extension in this release.
  • A rare stack of saturated transparent radial gradients, opacity, and certain
    blend modes can still produce a colored ring in raster export. The common
    opaque/stepped gradient failure is fixed; the remaining production edge case
    is tracked for a fixture-led follow-up.
  • SVG export still cannot represent inner-shadow spread on every arbitrary
    silhouette. EXP keeps the value in the document and reports the limitation.
  • Browser rendering is the SVG conformance target. Preview and browsers render
    EXP's dashed SVG correctly; some Illustrator versions may interpret the same
    file differently.
  • A live text outline is not preserved by Convert to Outlines; that conversion
    remains separate from the editable live-text stroke feature.

EXP [design] 2.4 is build 15 and requires macOS 26.2 or later.

EXP [design] v2.3 — A faster, calmer everyday canvas.

Choose a tag to compare

@tracyapps tracyapps released this 21 Aug 21:45

EXP [design] v2.3

A faster, calmer everyday canvas.

EXP [design] 2.3 is a broad workflow release: fewer missed clicks, selection
geometry that agrees with what you see, workspaces that return to the right
screens, faster font discovery, direct gradient editing, real line-end controls,
and an Inspector that is easier to read and harder to misclick.

This release grew through seven owner-tested waves. The completed interaction,
workspace, type, gradient, line, accessibility, and interface work ships now;
the remaining lower-priority vector/effect queue is deliberately deferred to
2.4 rather than holding back the verified improvements.

Canvas interaction and selection

  • The canvas accepts the first click after focus moves to it.
  • Option-drag duplication no longer depends on unforgiving key/mouse timing.
  • Gradient stops, path points, and handles have more reliable hit targets, and
    keyboard tool switching no longer loses common shortcuts.
  • Shift constrains new shapes and frames to a square from the start.
  • Selection and transform boxes use visible ink bounds, including outside
    strokes, while resize math still writes the underlying geometry correctly.
  • Nested and transformed group selections keep their resize/rotate handles.
  • A dedicated Snap to whole pixels preference prevents fractional resize drift.
  • Point selections share the same transform-box behavior as object selections.
  • Artboard-bound snapping includes the artboard walls with a subtle default
    pull, while preserving deliberate movement past a boundary.

Workspaces built for real monitors

  • Save, name, update, rename, delete, and switch complete workspace presets.
  • Presets restore panel positions, sizes, contents, collapse state, workspace
    mode, and multi-monitor placement; missing displays clamp every window back
    onto an available screen.
  • Workspace mode stays consistent across every open document window.
  • Place panel groups side by side, pause at the insertion indicator to glue
    them, move the connected group together, and pop them apart explicitly.
  • Connected panels preserve their independent positions and heights instead of
    being merged into one oversized window.

Font discovery and text memory

  • The font picker is now a taller, active-display-aware browser instead of a
    short fixed menu.
  • Search one previewed font list and filter it through an optional icon rail:
    All Fonts, Fonts Used in this document, Recent, and macOS font categories.
  • Filters are mutually exclusive, so two active facets cannot silently filter
    every font away. Counts, empty states, hover names, keyboard traversal, and
    VoiceOver state/result announcements are included.
  • Recent fonts persist across sessions; Fonts Used is derived from the current
    document, reusable sources, overrides, and saved type styles.
  • New point text and text boxes remember the last concrete font, size, and color
    used while typing or editing, across documents and relaunches.
  • Line-height values convert cleanly between units and arrow-key stepping follows
    the selected unit.

Lines and gradients on the object

  • Lines and open paths now have whole-stroke Flat, Round, or Square caps plus
    independent start/end arrow markers.
  • Arrow bases sit on the authored endpoint and their points project outward;
    the same geometry is used by the canvas, raster/PDF export, SVG export, and
    SVG re-import.
  • Linear gradients expose on-canvas endpoints and stops. Add a stop anywhere on
    the gradient line—even over empty canvas—without changing the visible color.
  • Drag stops and endpoints directly; edit a stop's color and position from the
    existing color popover; copy/paste stops at the pointer; or save a stop color
    directly to the Design Language.
  • Canvas and Inspector share the selected stop. Changing the Inspector angle
    rotates explicit gradient endpoints around their midpoint while preserving
    the gradient's physical length.

A clearer, more accessible Inspector

  • Choose Compact, Standard, or Large interface type in Settings; the preference
    applies to docked panels, floating trays, source windows, and Settings.
  • Dropdowns use one measured high-contrast boundary treatment in light and dark
    appearances, including Increase Contrast.
  • Horizontal and Vertical flip actions are named and visible in the transform
    hierarchy. Align-to and Distribute remain spatially separated.
  • Text case is an exclusive, arrow-key-operable icon control with independent
    accessible names and a non-color-only selected state.
  • Effect rows can collapse to one line while retaining enable, effect type, a
    live settings summary, and the actions menu. Duplicate and destructive Remove
    are separated and available through Inspector, context, and Edit-menu routes.
  • Tooltips now support hover and keyboard focus, remain hoverable, dismiss with
    Escape, yield immediately when the pointer reaches another control, and offer
    Full, Standard, or Minimal visible detail. Holding Option temporarily reveals
    the full explanation without changing accessible names or hints.
  • The committed accessibility control audit records official pattern sources,
    accessible names, tooltip copy, and measured contrast receipts.

Text, Layers, effects, and performance fixes

  • Multi-selection dragging in Layers moves the whole selection and restores it
    in one undo. New groups stay at the intended stack position, and locked layers
    offer an explicit unlock action.
  • Entering a canvas text node selects its existing contents for quick replacement
    while a subsequent click still places a precise caret.
  • Spread values that cannot yet preview on arbitrary silhouettes remain visible
    and continue to round-trip instead of being silently discarded.
  • Idle raster content no longer repeatedly flips between sharp and blurry states.
  • Existing export, import, component, Handoff Package, canvas-page, and local
    read-only agent workflows remain intact.

Honest interoperability notes

  • Browser rendering is the SVG conformance target. macOS Quick Look/Preview and
    some versions of Illustrator or Affinity may interpret nested transforms and
    SVG markers differently even when the file renders correctly in a browser.
  • Placed SVG stroke-dasharray fidelity is a separately tracked import bug and
    is not represented as fixed in this release.
  • Arbitrary-silhouette shadow spread, direct-select whole-object movement, mixed
    Create Outlines, live-text outlines, Pencil, balanced handles, and the remaining
    Add-to-Design-Language entry points are deferred to 2.4.

EXP [design] 2.3 is build 14 and requires macOS 26.2 or later.

EXP [design] v2.2 — Bring rendered components onto the canvas.

Choose a tag to compare

@tracyapps tracyapps released this 05 Aug 07:26

EXP [design] v2.2

Bring rendered components onto the canvas.

EXP [design] 2.2 adds a bounded path from rendered web work to editable native
layers. Import a local HTML/CSS page, a Chrome-saved page package, a published
static Storybook build, or a CodePen export without asking EXP to install
dependencies or run a repository build. The result is ordinary editable EXP
work, accompanied by a source receipt and an honest Import Report when the
browser and canvas models do not match exactly.

This release intentionally stops at the rendered state it can observe. It does
not claim source-code round-tripping, rebuild interactive component logic, or
turn EXP into a browser or prototyping environment.

Editable local HTML and CSS import

  • Choose a local entry HTML file and one or more Phone, Tablet, or Desktop
    viewports; each selected viewport becomes an editable artboard.
  • Import Chrome's complete-page save format, including its sibling resource
    folder, through the same bounded local path.
  • Preserve rendered boxes, text, images, inline and local SVG, gradients,
    borders, per-corner radii, opacity, blend modes, shadows, layer blur,
    clipping, generated content, and supported pseudo-elements as native EXP
    structures where the source allows it.
  • Retain semantic roles, accessible names, authored aria-* values, heading and
    paragraph intent, links, and accessibility-only text without inventing
    interaction states.
  • Use the browser's measured layout and computed styles, including media-query
    differences, installed fallback-font metrics, and explicit or normal line
    height.
  • Keep the complete import as one undoable document change.

The importer runs in a short-lived, non-persistent WebKit session. It serves
only the selected local package, blocks external network/file navigation, checks
symlink boundaries, and enforces time, file-count, and payload limits.

Static Storybook builds

  • Choose a published/static Storybook folder containing its generated catalog
    and isolated story renderer; EXP never runs npm, a framework compiler, or a
    build script.
  • Search the catalog and select a bounded set of stories before rendering.
  • Import each story at one or more viewports with title, story name, ID, tags,
    source path, build metadata, initial args, and consumed-resource receipts.
  • Preserve visible portal content, play-function final states, clipped content,
    accessibility-only labels, external SVG sprites, and CSS-mask icons where the
    generated build exposes them.

The measured v2.2 compatibility matrix covers real published builds from Vue 3
with webpack / Storybook 7, React + Vite / Storybook 10, Angular + webpack /
Storybook 8, Svelte + Vite / Storybook 8, and light-DOM Web Components + Vite /
Storybook 10. These are evidence-backed compatibility rows, not a claim that
every Storybook version, framework, add-on, or story will import perfectly.

CodePen handoff in both directions

  • Send the current artboard to a new CodePen through CodePen's supported Prefill
    flow, with a local review step before anything is transmitted.
  • Import a CodePen 2.0 exported ZIP by rendering only its last successful
    browser-ready dist/ output.
  • Preserve src/, processor/Block configuration, file paths, sizes, and hashes
    as non-executed provenance for future handoff work.
  • Reject traversal, symlinks, encryption, ambiguous package roots, unsupported
    compression, and over-limit archives.

Source receipts without hidden code execution

Imported work now carries a hidden, versioned CodeBridgeManifest separate from
ordinary Notes and canvas nodes. It records connector and source identity,
framework/build metadata, resource hashes, bounded opaque source, DOM bindings,
semantic behavior receipts, and the import baseline. Credentials and absolute
local paths are never stored. Rendered bindings remain receipt-only; v2.2 does
not claim that an EXP edit can safely rewrite the originating source.

Fidelity refinements from real component libraries

Acceptance testing against five framework/build families improved:

  • responsive viewport sizing and a reliable white browser canvas;
  • browser-normal line height and fallback-font leading;
  • percentage radii and capsule geometry;
  • overflow clipping and nested positioned content;
  • generated-content and transformed pseudo-elements;
  • local/data-backed CSS masks converted to editable SVG paths;
  • final-state capture for entrance animations;
  • Storybook portals, sprites, and framework-independent readiness;
  • SVG path, gradient, transform, mask, and blur preservation.

When a source uses unequal borders, unavailable fonts, unsupported filters,
closed shadow DOM, unobservable interaction states, or another construct EXP
cannot reproduce honestly, the Import Report names the limitation instead of
silently claiming an exact match. A fixed-width source also remains fixed-width;
EXP does not invent responsive behavior that was not rendered.

Canvas and workflow refinements

  • Create artboards directly with the Artboard tool and organize multi-artboard
    selections with improved align, distribute, and clean-up controls.
  • Keep page tabs, Layers selection, notes editing, zoom-to-fit, numeric stepping,
    and gradient-angle editing steadier during everyday canvas work.
  • Continue to preserve the v2.1 nested-component, canvas-page, XD/Figma import,
    Handoff Package, semantic export, and local read-only agent workflows.

What remains deliberately future work

  • Reconstructing related rendered stories into actual EXP components, nested
    components, and editable collapsed/expanded or other named states is a v2.4+
    research candidate. Preserved ARIA and Storybook provenance provide useful
    evidence, but they cannot recover source ownership or event logic by
    themselves.
  • Unrestricted URL import, authenticated pages, repository build execution,
    complete argTypes ingestion, source-code write-back, and update-in-place sync
    remain deferred until a safe and reversible contract is proven.
  • Older Angular/AngularJS generations, open-shadow-root traversal, and broader
    real-world framework coverage remain non-gating compatibility research driven
    by tester evidence.

EXP [design] 2.2 is build 13 and requires macOS 26.2 or later.

EXP [design] v2.1 — Bring the work in. Send the meaning onward.

Choose a tag to compare

@tracyapps tracyapps released this 29 Jul 06:27

EXP [design] v2.1

Bring the work in. Send the meaning onward.

EXP [design] 2.1 is the release where the workflow opens up. Existing Adobe XD
documents can be rescued into editable EXP layers, Figma files can come through
Figma's sanctioned REST API, large documents can be divided into clear canvas
pages, and the new Handoff panel puts visual exports, semantic artifacts, and an
optional local agent connection in one place.

The goal is not to replace every tool in a designer's workflow. It is to get out
of the way: preserve as much editable structure and meaning as the source format
allows, let the designer make real changes, and hand the result onward in the
form the next step needs.

Editable XD and Figma import

  • Import local .xd documents through a bounded, cancellable offline reader.
  • Import a Figma URL or file key through the official REST API. Personal access
    tokens stay in memory and are sent only to api.figma.com.
  • Figma pages become EXP canvas pages; top-level frames become artboards.
  • Artboards, groups, text, shapes, vector paths, lines, images, gradients,
    strokes, effects, masks, auto layout, local component sources/instances, and
    named paint/type styles map to editable EXP structures where the source data
    supports it.
  • Import reports stay quiet when everything maps cleanly and call out only
    approximations or unsupported constructs that deserve review.
  • Imported text bounds, image resources, dashed/dotted strokes, rotated line
    geometry, nested alignment, masks, and absolute children in auto layout all
    received live-file fidelity corrections during acceptance testing.

Advanced Figma constructs that EXP cannot reconstruct exactly remain visible in
the fidelity report rather than being silently presented as exact. OAuth,
Keychain token storage, and Enterprise Variables mapping remain explicit future
choices, not hidden requirements in this release.

Browser-style canvas pages

  • Split a document into named page tabs without burying pages beside ordinary
    layers.
  • Each page keeps its own camera position, guides, Layers presentation, and
    selection.
  • Add, rename, deep-duplicate, reorder, and delete pages with undo.
  • Move or duplicate single layers, multiple layers, nested children, or one or
    more artboards to another page from both menus and contextual actions.
  • Moving work to a page reveals the result immediately instead of leaving it
    somewhere off-screen.
  • Component sources and Design Language stay shared across the document.

Components that stay understandable as they grow

  • Place component instances inside other component sources from every normal
    placement surface.
  • Direct and indirect source cycles are rejected before they can damage the
    document.
  • Layers discloses nested component structure recursively and keeps the instance
    name separate from the source name.
  • Choose component states independently at every nested level using stable
    instance paths.
  • Parent components can expose selected nested public properties; reset returns
    to the nearest source value.
  • Component-state appearance now includes opacity, fill, typography, visibility,
    outlines, and blend mode without leaking changes into Default or sibling states.
  • Duplicate Component creates a new independent working source instead of another
    instance of the original.
  • Deleting a source preserves every visible use as ordinary editable work, and
    detaching or duplicating nested structures keeps IDs and relationships safe.

One Handoff home

The new dockable, detachable Handoff panel brings together:

  • Current or selected artboard export as PNG, JPEG, PDF, or SVG.
  • All-artboard export, including multi-page PDF.
  • A complete inspectable .exph Handoff Package.
  • Standalone semantic HTML/CSS.
  • W3C Design Tokens Community Group token export.
  • An optional local agent connection.

Existing File-menu commands remain available; the panel is an additional clear
home, never the only route.

Local, read-only agent access

Agent access is off by default. When the designer explicitly enables it, EXP
starts a protected current-user Unix socket and provides setup snippets for
Claude Code, Claude Desktop, or another stdio MCP client. There is no network
listener and EXP does not require a vendor API key.

Connected clients can use six read-only tools:

  • get_orientation
  • list_artboards
  • get_artboard
  • get_selection
  • get_node
  • get_tokens

EXP shows connection readiness, client identity, and the read-only boundary in
the Handoff panel. Write-back is not part of v2.1.

Accessibility at the core

  • Components can carry approachable ARIA-role categories, accessible names,
    relationships, states, and structured notes into semantic handoff.
  • Context-aware containment guidance recommends meaningful child roles without
    removing the designer's choice.
  • Relationship controls use plain-language explanations, with technical
    aria-* details available when useful.
  • Text can preserve paragraph or heading intent independently of its visual Type
    Style.
  • Contrast checks remain available where colors and component states are edited.
  • The app and the v2.1 panel work were accepted across keyboard order, VoiceOver,
    light/dark appearance, increased contrast, reduced motion, and reduced
    transparency.

EXP helps authors make and preserve better decisions; it does not claim that a
design file alone certifies an implementation as accessible. Generated output
still needs browser, keyboard, and assistive-technology testing in its real
product context.

Design Language and panel refinements

  • Design Language holds reusable colors, gradients, and complete typography
    styles with shared categories and list/grid views.
  • Design decisions can travel through EXP JSON, CSS, and W3C design tokens.
  • Vector conversion, Outline Stroke, Pathfinder operations, Align/Distribute,
    component semantics, and handoff actions now have clearer selection-aware panel
    homes while retaining menu, contextual, and keyboard routes.
  • Handoff actions use the same compact neutral control rhythm as the rest of the
    inspector and panel system.

Reliability fixes closed during the cycle

  • Layer Copy/Paste now works while the Layers list owns keyboard focus.
  • Duplicate Layer duplicates only the selected nested layer and keeps it inside
    the same group.
  • A component source can be duplicated into a new independent component.
  • Deleting a component source no longer moves preserved instances off-canvas.
  • Component-state blend modes stay local to the selected state.
  • Align and Distribute operate on multiple selected children inside a group.
  • Text overflow indicators no longer report clipping from harmless font-metric
    padding.
  • Temporary Spacebar panning reliably returns to the active selection tool and
    cursor.
  • Canvas page tabs remain opaque and stable during fast panning.

EXP [design] 2.1 is build 12 and requires macOS 26.2 or later.

EXP [design] v2.0.1 — Component states and Pen curves, fixed

Choose a tag to compare

@tracyapps tracyapps released this 23 Jul 20:20

EXP [design] v2.0.1

Build 11. A focused stabilization release after v2.0 that closes two defects
surfaced while recording the Help walkthroughs.

Fixes

  • Component states no longer leak edits into the shared source. Changing a text
    layer's typography (color, typeface/face, size, alignment, line-height,
    tracking, or case) or a selected layer/group's opacity while a non-default
    state (for example Disabled) is active now affects only that state. Default
    and sibling states stay unchanged, and instances render the chosen state
    correctly. Common designs such as a muted Disabled label are safe to author
    again. (BUG-006)
  • Holding Shift while pulling the Bézier handles of a brand-new Pen anchor now
    constrains the handle to the same axis/45-degree increments used when editing
    an existing handle. Pressing or releasing Shift mid-drag toggles the snap, and
    the opposite handle stays mirrored. (BUG-005)

Refinements

  • The Type inspector's Font and Weight dropdowns now carry labels, and the
    semantic Content role moved into its own divider-separated sub-section below
    Case, so it is no longer mistaken for the typeface menu.

Update Notes

  • No document-schema changes from v2.0. Documents authored with leaked state
    edits open unchanged; new state-local typography and opacity are stored
    additively and decode tolerantly in existing schema-v2 files.
  • Semantic HTML/CSS handoff now preserves per-state typography and opacity
    differences.
  • Both fixes were reproduced from the 2026-07-23 Help recording and verified in
    real use before release.

EXP [design] v2.0 — Handoff that keeps its meaning

Choose a tag to compare

@tracyapps tracyapps released this 22 Jul 21:01

EXP [design] v2.0

Handoff that keeps its meaning

EXP [design] 2.0 turns a design document into an inspectable Handoff Package:
a self-contained .exph folder with a manifest, structured design data, W3C
design tokens, a human-readable README, and browser-ready semantic HTML/CSS for
each artboard. Packages are deterministic, use stable IDs, require no build
step or CDN, and preserve design notes instead of flattening them into pixels.

Semantic by design

  • Components carry states, relationships, notes, and ARIA roles into handoff.
  • Text can be marked as Plain text, Paragraph, or Heading 1–6 independently of
    its visual Type Style.
  • Native HTML is used when it honestly represents the design; ARIA is added
    only where it is needed. EXP does not fabricate interactions or JavaScript.
  • Semantic requirements and visual fallbacks are reported explicitly so the
    next person can see what needs implementation rather than infer it.

A shared design language

  • Colors, gradients, and typography export as CSS custom properties and W3C
    Design Tokens Community Group data.
  • Auto Layout maps to readable flexbox where the design supports it.
  • Typography is now visible and editable in Design Language Settings.
  • SVG stylesheet classes and color references import more reliably.

Learning built into the workflow

The ARIA Roles Designer Guide is available from EXP's Help menu and on the web
at expdesign.app/aria-roles. It offers
plain-language role descriptions, examples, categories, comparisons, search,
and bookmarks without interrupting the design workflow.

Accessibility and verification

The v2 handoff path was exercised with keyboard navigation, VoiceOver reading
order, semantic validation, light and dark appearances, increased contrast,
Firefox and WebKit rendering, deterministic package hashing, and signed
universal macOS builds.

Agent-ready foundation

This release also includes the local, read-only foundation for future agent
handoff. It is off by default, listens only through a protected local Unix
socket when explicitly enabled, requires no vendor API key, and exposes no
network listener. The user-facing Handoff panel and guided agent setup remain
part of the next release cycle.

EXP [design] 2.0 is build 10 and requires macOS 26.2 or later.

EXP [design] v1.6.1

Choose a tag to compare

@tracyapps tracyapps released this 21 Jul 02:25

EXP [design] v1.6.1

Build 9. This is a focused stabilization release after v1.6.

Workflow improvements

  • Finder SVG and raster filenames now become their default layer names, and
    dragging or pasting several SVGs imports the entire batch in one undoable step.
  • SVG exports include readable, CSS-safe layer-… classes derived from EXP
    layer names without introducing duplicate IDs.
  • Selection rotation now follows the Adobe-style outside-corner interaction.
    Four new corner-specific cursors point inward toward the object, while Shift
    snapping and Inspector rotation continue to work as before.
  • The canvas now uses the owner-authored pointer and Pen add/delete cursors as
    preserved-vector assets. Existing shape, resize, text, pan, and modifier
    cursors are unchanged.
  • Object ▸ Path ▸ Outline Stroke turns center, inside, and outside strokes into
    editable filled paths that scale with the artwork.
  • Object ▸ Pathfinder adds Unite, Subtract Front, Intersect, and Exclude Overlap
    for editable vector shapes, including compound Bézier geometry.

Fixes

  • Rich-text word, line, and character styling is preserved when you click
    directly out of an active text box while text is still selected. Font size,
    color, weight, and underline no longer depend on collapsing the selection
    before leaving the editor.
  • Changing selection from outside the canvas now commits the active text editor
    without pulling selection back to the previous text layer.
  • Sparkle's installer launcher is now correctly enabled for the sandboxed app,
    including the required installer communication entitlements. Earlier builds
    could discover and download an update but then failed with “An error occurred
    while launching the installer.”
  • Inspector dimensions now follow the painted outside edge of positioned strokes.
    Group measurements use live descendant bounds, and numeric SVG-path resizing
    scales the actual vector geometry instead of only changing its stored frame.

Update Notes

  • No document-schema changes from v1.6.
  • Because v1.6 and earlier are missing the sandboxed installer-launcher
    configuration, install v1.6.1 manually once. Automatic updates should work
    normally from that corrected baseline onward.
  • The rich-text regression and authored cursor family were verified in real use.
  • The first true automatic-update proof starts from an installed v1.6.1
    baseline and targets the next published build.