Skip to content

Releases: jrpease/throughline

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 05 Jul 10:17

Added

  • Subagent-driven model-tier routing — "plan deep, build cheap." Skills now
    split work by cognition: an architect plans a stage on the strongest tier and
    emits a transcription-grade spec in stable identifiers, cheap executors carry it
    out, and a reviewer gates the result. A new references/agent-routing.md
    defines a portable fast < balanced < deep tier ladder (recommended mapping
    Haiku → Sonnet → Opus) with an installer-overridable resolution table — no
    concrete model name is hardcoded anywhere
    , so the routing travels to any
    install, and a missing tier collapses to the nearest lower one. Four
    Claude-native role agents (architect, figma-executor, code-executor,
    reviewer), each model: inherit.
  • Bridge-locked, verify-then-replace Figma authoring. figma-executor
    resolves names → nodeIds at run time, builds into a named WIP: frame, and
    finalizes only after a programmatic read-back (COMPONENT_SET/variable
    existence + count + bound-variable spot-check — a screenshot is not proof). The
    entire Figma surface is concurrency-1 through the single Console bridge.
  • CI guards for the routing model. ci/validate-skills.mjs now asserts every
    agents/*.md frontmatter is model: inherit (fails on a hardcoded model name)
    and that agent-routing.md names all three tiers.

Changed

  • Routing rolled across every subagent-driven skill. token-sync-layer
    (per-adapter → code-executor fast + reviewer), component-builder and
    icon-system-builder (Figma authoring → sequential architect
    figma-executor), storybook-chromatic-builder (per-component story-gen →
    code-executor fast + reviewer), and token-builder / token-sheet-builder
    (reframed from "no subagents" to sequential architect → figma-executor).
    component-pipeline keeps its human gates between stages while subagents run
    continuously within one. On hosts without subagent dispatch, every site
    degrades cleanly to inline single-model execution.
  • Figma preflight now asserts active-file identity. Because figma_execute
    targets whichever file is active in Figma Desktop, a connected bridge is not
    enough — references/figma-scripting.md now requires confirming the active
    fileKey matches the target (and re-confirming after any step that could switch
    it) before writing.

v0.12.1

Choose a tag to compare

@github-actions github-actions released this 03 Jul 12:12
377b152

Fixed

  • npx @radicool/throughline init silently did nothing. npm invokes the bin
    through a node_modules/.bin symlink, which defeated the CLI's
    direct-invocation guard (pathToFileURL(process.argv[1]) never matched the
    real module path), so the installer exited 0 without installing. The guard
    now realpath-resolves argv[1] first, with a symlink-invocation regression
    test.

v0.12.0

Choose a tag to compare

@jrpease jrpease released this 03 Jul 10:28
4870ad0

Added

  • Published to npm as @radicool/throughline.
    The multi-agent installer is now installable everywhere: npx @radicool/throughline init.
    (The unscoped throughline npm name belongs to an unrelated package.)
  • Tag-driven release automation. Pushing a vX.Y.Z tag now runs the full CI
    validation, publishes to npm with provenance via trusted publishing, and creates
    a GitHub Release with notes extracted from this changelog
    (.github/workflows/release.yml + ci/extract-changelog.mjs).

Changed

  • Install command for Cursor/Codex/AGENTS.md targets is now npx @radicool/throughline init
    (previously documented as npx throughline init, which was never published).
  • README version badge now reads live from the npm registry.

v0.11.0 — Library-derived focus states + Figma build-hardening

Choose a tag to compare

@jrpease jrpease released this 02 Jul 13:41

Reframes focus construction and closes the skill/reference gaps surfaced by a greenfield build run. Documentation/instruction only — tokens and code-gen untouched.

Library-derived focus states

  • Focus idiom now derives from project.uiFramework: shadcn/default 0 0 0 3px spread-shadow ring, vanilla-css outline stroke, MUI per-component, ios-swift skip, tier-2 researched — no more single house-style stroke.
  • Ring mechanism chosen by control fill: drop-shadow effect for filled controls, absolutely-positioned ring child for transparent ones (a Figma drop-shadow only casts from opaque pixels). Padded wrapper forbidden.
  • clipsContent=true on the shadow-casting control frame, false on ancestors. Retrofit clause + audit item so legacy components get fixed when touched.

Figma scripting gotchas (figma-scripting.md)

setBoundVariableForEffect geometry reset · drop-shadow opacity · text-style before .characters (Inter font order) · VERTICAL resize() axis mapping · read-after-write refreshCache · placeholder paint + bind read-back · ~30s figma_execute cap → chunk.

Component standards

Deterministic grid coordinates over minWidth/layoutMode="GRID" for large matrices · component-area must contrast every variant fill · audit exemption for coordinate-laid sets.

Publishing

Self-publish is not tool-verifiable — trust the user's confirmation; an INSTANCE_SWAP key rejection is the authoritative signal.

Icons & components

Tabler + Phosphor promoted to first-class fetch libraries · warning when rebuilding a published/consumed component set detaches downstream instances.

Full diff: v0.10.0...v0.11.0

v0.10.0 — Brownfield retrofit + plugin CI

Choose a tag to compare

@jrpease jrpease released this 28 Jun 07:45
4b54941

ThroughLine can now retrofit an existing design system — a mature codebase and a drifted Figma file — not just build greenfield. Plus the plugin's first CI.

Added

  • Brownfield retrofit (Plans 1–3). Three new skills — design-system-audit (size & inventory an existing system with verified reads), token-crosswalk-builder (map new↔old tokens + a tokens:validate N/N gate), and retrofit-planner (the safe, gated 7-phase migration). Brownfield branches added to token-builder, token-sync-layer, and storybook-chromatic-builder; B1/B2/B4 read-discipline hardening; the B3 detect-or-ask publish fix.
  • Plugin CI. The repo's first GitHub Actions workflow + zero-dependency validators (ci/) for plugin.json / marketplace.json and every skill/command frontmatter, run on every PR alongside the full test suite (70 tests).
  • README surfaces the retrofit path; now 12 skills / 10 reference docs.

Additive and backward-compatible — existing greenfield flows are unchanged.

Carry-forward: the B1/B2/B4 mitigations are case-study-authored and not yet reproduced against a live Figma file.

Full changelog: v0.9.0...v0.10.0

v0.9.0

Choose a tag to compare

@jrpease jrpease released this 10 Jun 20:43
633fb75

Added

  • /throughline:start — a deterministic entry-point command that routes straight into environment setup, so design-system setup wins over other plugins' "let's build…" triggers (e.g. superpowers' brainstorming). README now leads with it.

Changed

  • Lucide icons fetched from the official source repo. Lucide now batch-fetches the curated subset's official SVGs and componentizes them hands-off (fully automated, official, deterministic naming) instead of making you copy a community file. Community file / importer are fallbacks. Material and custom unchanged.

Fixed

  • Cover page no longer built before tokens/styles exist — it's now built by token-sheet-builder after tokens exist, so it can be on-brand.
  • Elevations are now dark-mode-aware — shadow color lives in mode-aware shadow/* semantic variables the effect styles bind to.

Full changelog: v0.8.0...v0.9.0

v0.8.0

Choose a tag to compare

@jrpease jrpease released this 10 Jun 10:48
d71360d

Guidance-hardening release for the Figma-authoring skills.

Added

  • Doc-card header division — every component doc card must segment its header from the component area with a Border/Semantic-bound divider line or a distinct header surface fill. Enforced by a new post-build audit gate.
  • Two roadmap items — built-in accessibility checks at token/component creation time, and one Figma token library syncing to multiple platforms (React, Android, iOS) with a per-platform-flexible component lifecycle.

Changed

  • Component organization is now a fixed law — variants are rows, states are columns; each size variation is its own variant row; every component must include its full relevant state set (default/hover/focus/active/disabled plus applicable loading/selected/success/error). Adds a per-component state checklist and two new audit gates.
  • Foundations sheet groups semantic colors by category — organized by role family (surface, text, border, alert/feedback, action…), mirroring primitive ramps instead of one flat list.

Full changelog: v0.7.0...v0.8.0

v0.7.0 — Figma-scripting hardening

Choose a tag to compare

@jrpease jrpease released this 08 Jun 19:16
0d2e87a

Hardening pass from real build-session testing (tokens → foundations → icons → components → Storybook on a pnpm + Turborepo + Next.js 16 + Tailwind v4 monorepo).

Added

  • references/figma-scripting.md — one home for every figma_execute gotcha (single-bridge-instance preflight, dynamic-page async APIs incl. getNodeByIdAsync, resize() axis-lock, batch timeout, WRAP chunking), wired into all Figma-writing skills.
  • Opacity token category on the 0–100 scale; text/onEmphasis color role.
  • "Clip content off by default" standard + post-build audit gate.

Changed

  • Figma write-back confirms once up front (pre-empts the safety classifier).
  • Figma scripts default to the async APIs under dynamic-page.

Fixed

  • Opacity rendered everything invisible — now authored 0–100, normalized ÷100 on sync.
  • resize() collapsed auto-layout frames to ~10px — re-assert pattern + audit read-back.
  • Storybook Controls were dead — args-through render; ReactElement slots get a boolean helper arg.
  • Typography @utility duplication/drift — shared @import.
  • esbuild blocked Storybook on fresh pnpm installs — onlyBuiltDependencies note.
  • Icon subset names validated against the library version.
  • Large WRAP grids timed out — chunked into manual rows.

Full changelog: https://github.com/jrpease/throughline/blob/v0.7.0/CHANGELOG.md

v0.6.0

Choose a tag to compare

@jrpease jrpease released this 06 Jun 20:20
e561aeb

Three bug fixes from v0.1/v0.5 testing.

Fixed

  • No Section wrapper around artboards (regression from v0.1). Removed the "Section may only wrap the Frame" escape hatch; the auto-layout Frame now sits directly on the page, explicitly overriding the Figma Console MCP server's "create a Section first" instruction. The post-build audit walks the parent chain to catch any stray Section.

Added

  • Component sets laid out as an auto-layout grid — one row per variant (type) across its states, size groups stacked vertically.
  • Focus-ring accessibility offset — new Border/Semantic offset/focus token (the outline-offset equivalent); focus rings sit 2px clear of the control edge, bound not hardcoded.

v0.5.0

Choose a tag to compare

@jrpease jrpease released this 04 Jun 21:07

Added

  • Import mode runs a completeness pass. token-builder import no longer does
    a 1:1 transcription of a partial source (e.g. a marketing site + brand guide).
    After preserving and organizing the user's values, it diffs them against a
    reference model of a full, flexible system and proactively proposes the missing
    pieces — derived from their existing values — as a preserve-first, opt-in menu
    (tonal ramps, neutral ramp, state colors, dark mode, elevation/radius scales,
    semantic role layer). Adds an explicit full-system checklist.
  • Post-build audit gate for all Figma-writing skills. A single canonical
    "Post-build audit (REQUIRED before handoff)" checklist in
    figma-component-standards.md that reads back the actual node tree (container
    type, auto layout, bound variables, deterministic names, scope/status, visual)
    rather than trusting a screenshot. Wired into component-builder,
    icon-system-builder, and token-sheet-builder.
  • Scope-recognition handoff. New references/scaling-up-handoff.md: when a
    step outgrows a single skill (retrofits, migrations, multi-package refactors),
    skills now surface risks and major parts, confirm scope, and brainstorm/plan
    before building — handing off to Superpowers when available, else planning
    natively. Never a hard dependency. Wired into component-builder (retrofit) and
    repository-builder (existing app).

Fixed

  • Setup routes before brainstorming. figma-environment-setup is now labelled
    a setup/process skill that runs before generic brainstorming, with explicit
    trigger phrases, so prompts like "let's set up my design system" no longer get
    hijacked by superpowers:brainstorming.
  • Per-category collection segmentation enforced. token-builder description
    and body now lead with the one-collection-per-category-per-tier rule, so it
    stops defaulting to a two-collection (Primitives + Semantic) approach.
  • Deterministic icon acquisition. icon-system-builder now treats the
    cheapest-first mechanism order as a hard gate: a known library (Lucide, Material)
    always uses a community file (#1) or importer plugin (#2), never website-SVG
    fetching (#3, the last resort). Provides named default resources so the choice is
    consistent across runs instead of improvised.
  • Layout container must be an auto-layout Frame, never a Section. Corrected the
    self-contradictory "Section or Frame with auto layout" rule (Sections have no
    layoutMode), across figma-component-standards.md and the three skills that
    restate it. Adds a verify step.
  • Doc-card token binding enforced. The "dogfood the design system" rule now
    includes the binding mechanics (fetch variable IDs, bind don't hardcode), a map
    of card chrome → semantic tokens, and a required read-back gate — since a
    hardcoded hex and a bound variable render identically in a screenshot.

Changed

  • README documents the Superpowers partner handoff for big, ambiguous work,
    framed as graceful degradation (plans natively when Superpowers isn't installed).
  • plugin.json version corrected to track the release (was left at 0.3.0
    through the 0.4.0 tag).