Skip to content

Releases

Protoyard v1.9.4

Choose a tag to compare

@github-actions github-actions released this 10 Nov 22:17
013f148

Texuli 0.17.4. Every Texuli dependency is pinned exactly at 0.17.4.

Changed

  • Render baselines are Texuli's finding keys. check ds --render --write-baseline writes { findings: [{ code, path, route, viewport, mode, scope, component? }] } (Texuli's DsFindingKey, with the prototype slug as
    scope and each message for people), and --baseline compares with
    Texuli's compareDsReport, so the same selector on the same route of two
    prototypes stays apart.
  • The protoyard/ds-render-baseline version 1 format is retired: files of
    1.8–1.9.3 are still read, their fingerprints converted, and the run says to
    write the baseline again (TEXULI).
  • Self-hosted design-system fonts. ds use and new --ds write
    fontFiles into src/design-system.ts for each font file the document
    names (typography.families.<role>.files[].src) that exists inside the
    design-system folder, so a Vite build emits it and a locked prototype needs
    no @font-face of its own. Missing files are reported (data.fonts.missing).

Protoyard v1.9.3

Choose a tag to compare

@github-actions github-actions released this 10 Nov 16:20
3e99f37

Texuli 0.17.3. Every Texuli dependency is pinned exactly at 0.17.3.

Changed

  • ds new --brief sends the brief to Texuli's importBrand as written.
    Texuli 0.17.3 reads fonts with case (font is Inter), motion, Headings use X and monospace X inside longer clauses, so Protoyard's prose reader and
    the brief.reading field are gone; unread words are unmapped losses. A
    brief that Texuli would truncate (more than 16,000 characters or 256
    clauses with the brand flags) is refused instead, so the flags are never
    dropped.
  • check ds --render takes render-disabled-value from Texuli's mapping:
    the allow manifest passes each entry, a root is checked against its own
    entry (the color axis included), and the CLI keeps one finding per
    component and value. The message changes, so write a 1.9.2 baseline again
    if it lists that code.
  • Protoyard keeps its render baseline format (protoyard/ds-render-baseline
    version 1): Texuli's finding key now has route, viewport and mode but no
    prototype (TEXULI).

Protoyard v1.9.2

Choose a tag to compare

@github-actions github-actions released this 10 Nov 14:01
c434240

Texuli 0.17.2. Every Texuli dependency is pinned exactly at 0.17.2.

Changed

  • Render lock parity. check ds --render maps locked pages through
    Texuli's mapLockedRenderPage, which now forwards composed maps, on
    Protoyard's isolated-world page. Part parents come from catalog relations,
    so the runtime lock matches the static one: alert-dialog, icon-button
    and form-field are no longer accepted as parts of alert, icon or
    form (tested, with the strict-nesting and tamper tests kept).
  • ds diff takes library changes from Texuli's changesModel, which
    compares every approval field (approvedAt included); the --json shape is
    unchanged, and an approval written with its keys in another order no longer
    counts as a change.
  • ds new --brief sends clauses with a color to Texuli's reader first and
    keeps Protoyard's reader only where Texuli would glue a joining word into a
    font family (font is Inter); generated documents are the same or better.
  • Protoyard still keeps render-disabled-value, its render baseline format
    and part of the brief reader where Texuli's are narrower
    (TEXULI).

Protoyard v1.9.1

Choose a tag to compare

@github-actions github-actions released this 10 Nov 11:56
d054d4d

Texuli 0.17.1. Every Texuli dependency is pinned exactly at 0.17.1.

Changed

  • Render check on Texuli's strict lock. Texuli 0.17.1 accepts a nested
    catalog root only as a declared part or composed id of its allowed parent,
    so Protoyard's own stricter rule is gone; tests still refuse a data-grid
    inside an allowed card (unit, Texuli's host and Chromium). A nested-root
    finding is now Texuli's not-allowed, one per root with Texuli's selector:
    rewrite a render baseline written by 1.9.0
    (render mode).
  • Parts and composed ids map through Texuli's partParentMap; the host loads
    from the @texuli/tools/ds-check/host.iife.js export. Protoyard still names
    the host's component attribute (data-tx-component) itself, and keeps its
    own render-disabled-value, library diff and brief clause reader where
    Texuli's are narrower (TEXULI).
  • The app single-file export cap follows Texuli's growth: 4,168,915 B
    (PERFORMANCE).

Protoyard v1.9.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 10:32
73d1f20

Texuli 0.17.0. Every Texuli dependency is pinned exactly at 0.17.0. See
TEXULI.

Changed

  • Render check on Texuli's host. check ds --render loads Texuli's
    prebuilt host script (host.iife.js) into the isolated world 1.8.1
    introduced, instead of bundling a host with Vite at run time. It pins the
    attribute the host reads to data-tx-component, so a page cannot steer the
    color check, and keeps Protoyard's stricter nesting rule: a catalog root
    inside an allowed root is not allowed by that alone (Texuli 0.17.0 accepts
    it; Texuli 0.17.1 restores the strict rule).
  • ds diff and the kit use Texuli's changesModel and kitApproval for
    allow and approval changes; library changes stay Protoyard's, which also
    compares approver and hash. A newly locked document lists locked and one
    added entry per allowed component.
  • ds import leaves duplicate library sources to Texuli's own refusal.
  • ds new --brief reads every clause with a color itself (Texuli keeps
    only the color); the brand seed survives a generator repair, so the old
    known limit is gone.
  • social-feed names each feed article by its author (aria-labelledby)
    and runs edge to edge on the plain viewport. @protoyard/ui's
    VirtualListView takes bind:ref and rest attributes; the contract test
    has no exceptions again.
  • Every Button size meets the 24 px target minimum (Texuli). The page
    single-file export cap follows Texuli's growth: 2,594,552 B
    (PERFORMANCE).

Protoyard v1.8.1

Choose a tag to compare

@github-actions github-actions released this 10 Nov 09:17
fae8ac4

Security review fixes for PLAN_013's design-system commands
(SECURITY). No critical or high findings; these close the
four medium and the low ones.

Fixed

  • Bundle code is code. ds import executes nothing, but the component
    sources it writes run when a prototype or the kit builds. It now lists each
    components/*.svelte with its size under a "review this code before
    ds kit, dev or build" note (data.components), checks every
    releases/*.json against its document and the bundle's Texuli history, and
    refuses a library source referenced twice and an oversized total inside its
    loop.
  • Guarded outputs. ds new --out (and MCP ds_create.out),
    ds export --bundle --out, check ds --write-baseline and
    ds extensions --out write .json files only in design-systems/,
    artifacts/ or tmp/, never protected names (package.json,
    protoyard.json, tsconfig*, .git/, .github/, node_modules/), and
    --force replaces only a file of the same kind.
  • ds kit refuses a symlinked kit folder or any symlinked folder on the
    way to a file it writes.
  • Render check. check ds --render runs Texuli's host and checks in a
    Chromium isolated world the prototype's code cannot patch (axe still runs in
    the page), blocks WebSockets and service workers to other origins, and
    reuses a build only when its recorded inputs hash still matches and its
    builtAt is not in the future.
  • JSON parse errors on workspace files report a position only, never file
    content; hidden files (.env) are refused as generator inputs.
  • The kit README escapes the design-system name; kit stories refuse script
    and data URLs in props.
  • new --ds runs the design system's allow rules at the template gate and
    after creation (as check ds and validate do), so a template that uses a
    component the allow section leaves out is refused. It never binds an
    existing prototype: an existing slug is a conflict (use ds use <slug> <id> --lock) unless it is a retry with the same binding.
  • ds approve --release builds and checks the release record before it
    approves the document, so a failed release leaves the document a draft.
  • ds import --dry-run makes the same refusals as the real run (flat
    <id>.json, symlinked targets).
  • Kit story variant names must be unique.

Changed

  • docs/SECURITY.md lists check ds --render, ds kit, ds use and
    ds new --from-theme-file among the commands that run prototype code, and
    DESIGN_SYSTEMS.md recommends CODEOWNERS on prototypes/*/protoyard.json.

Protoyard v1.8.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 07:25
13293b6

The design-system lifecycle on Texuli 0.16.1. Every Texuli dependency is
pinned exactly at 0.16.1. See DESIGN_SYSTEMS.

Added

  • Create from your brand. ds new <id> --from-tokens <file> (W3C DTCG or
    Tokens Studio), --from-css <file>, --from-logo <file.svg> and
    --brief <text|file|-> run Texuli's generateDesignSystem. The result is
    always a draft; the command prints the loss report (what could not be kept)
    and the AA repair report. Inputs are untrusted: workspace paths only, no
    symlinks, size limits, an approval inside an input is dropped. Raster logos
    are refused (use --brand). The MCP tool ds_create takes the same sources.
  • Kit. ds kit <id> writes or refreshes prototypes/<id>-kit, the whole
    design system on Texuli's DesignSystemKit (approval with hash check,
    foundations, voice, library, changes since the previous release, control
    matrix). Reruns write identical bytes; --check fails when it is stale.
  • Releases. ds approve <id> --release <semver> [--changelog <text>] and
    ds release <id> record releases/<version>.json (the approved document,
    content hash, approver, date, component hashes, changelog). ds versions
    lists them; ds diff <id> [<from>] [<to>] reports token, contrast, allow,
    library and approval changes.
  • Bundles. ds export <id> --bundle packs a design-system folder into one
    file (Texuli's bundle plus every folder file with its sha256); ds import <file> [--id] [--draft] [--force] [--dry-run] checks the whole bundle as
    untrusted input before it writes. An imported approval is a record from
    another workspace, not a proof.
  • Full validator. ds validate adds Texuli's checkDesignSystemFull
    (static, CSS policy, allow and catalog extensions) as full; --strict
    fails on its errors.
  • Render check. check ds <slug> --render builds each locked prototype
    and checks it in Chromium on every route, light and dark, phone and desktop,
    with Texuli's runLockedRenderChecks plus rendered axis values and
    hand-drawn charts; --report, --baseline and --write-baseline for
    existing prototypes. The build CI template (build v4) runs it for locked
    prototypes.
  • new --dry-run. Runs every check, including the --ds design system
    and the template gate, and writes nothing.
  • ds extensions [--out <dir>]. Writes Protoyard's catalog extensions as
    Texuli extension files, so texuli ds check <document> --locked --extensions <file> accepts the same protoyard: allow keys as ds validate.
  • Unchecked imports. check ds lists the workspace packages (workspace:
    dependencies the catalog does not govern) and local modules it did not read,
    with Texuli's listUncheckedImports.

Changed

  • check ds treats text flow alike in CSS and utilities: text-align,
    text-align-last, text-overflow and text-wrap pass in a stylesheet.
  • Every npm package ships its CHANGELOG.md; check:packages requires it.
  • A compound part (<DropdownMenu.Item>, <MultiSelect.Item>) takes its
    own catalog id, else its namespace root's, as Texuli's locked check does
    since 0.16.1; before, it was unmapped and refused whatever allow said.
  • @protoyard/ui honesty tags and StatusChip no longer forward the HTML
    color attribute to Texuli's Badge, which now has a color axis.
  • All 31 templates are lock-clean. social-feed windows its feed with
    Texuli's VirtualListView in feed mode (role="feed", one <article> per
    post with its position, Page Up / Page Down between posts, controls inside a
    post keep their keys), so it no longer sizes spacers with inline styles.
    @protoyard/ui re-exports VirtualListView (catalog id
    data-virtual-list). It does not take bind:ref or rest attributes yet;
    the contract test pins that gap.

Protoyard v1.7.0

Choose a tag to compare

@github-actions github-actions released this 09 Nov 23:55
7134062

Locked design systems on Texuli 0.15.0. Every Texuli dependency is pinned
exactly at 0.15.0. See DESIGN_SYSTEMS.

Added

  • Design systems as folders. design-systems/<id>/ holds the Texuli
    document (with its allow section and approval), the design system's own
    components with a sha256 per file (components.json), component requests
    and kit stories. ds migrate moves a flat file into a folder; JSON Schemas
    describe every file.
  • Approval. ds approve <id> --by <name> [--release <semver>] records the
    approver, date, version and Texuli content hash in the document. It is a
    record, not a proof: the reviewed commit (with CODEOWNERS on
    design-systems/) is the guarantee.
  • Locked prototypes. ds use <slug> <id> --lock pins a prototype to an
    approved design system at its exact version (designSystem: { id, version, locked } in protoyard.json); --upgrade moves the pin. new <slug> --ds <id> [--template <name>] and generate --ds start locked prototypes. The
    library imports as @ds/<id>/<Component>.
  • check ds. Refuses raw controls, visual CSS, :global overrides of
    Texuli classes, visual utility classes (layout utilities on the token scale
    stay allowed), inline styles, styled local components, other UI libraries,
    local motion, components outside the allow section and disabled variant,
    size or tone values. --report counts violations in existing prototypes.
    validate runs it for locked prototypes and checks the binding.
  • Catalog mapper. Every tag maps to a Texuli catalog id through Texuli's
    catalog imports, or to one of 57 protoyard:<name> catalog extensions for
    @protoyard/ui's own components, merged with Texuli's mergeCatalogs.
  • Locked runtime. A locked prototype loads only its design system's theme;
    other themes, custom themes and style presets are refused, and DevTools
    shows the lock.
  • Components on request. ds component request, approve-request (a
    human) and new add a design-system component only after approval; the
    scaffold passes check ds. The skill, MCP tools (ds_list,
    ds_component_request, ds_component_new, new_from_design_system) and
    generated AGENTS.md tell agents to stop and ask when no component fits.
  • Lock-clean templates. 30 of 31 templates render only through
    design-system components (Texuli Heading, Text, Box, Card, Notice
    and the catalog). social-feed still reports two spacer styles until Texuli
    ships VirtualList (0.16.0).

Changed

  • @protoyard/themes: soft tone foregrounds keep their hue when they meet AA
    on the soft background.
  • @protoyard/ui Avatar forwards Texuli's initials and status.
  • @protoyard/ai-ui link previews and other clickable Cards name Texuli
    0.15.0's stretched link (linkLabel).
  • Bundle caps follow Texuli 0.15.0's CSS: views board 17,906 B and calendar
    18,210 B over the shell; doc initial CSS 7,898 B
    (PERFORMANCE).

Protoyard v1.6.0

Choose a tag to compare

@github-actions github-actions released this 09 Nov 16:36
d525199

Texuli 0.14.4. Every Texuli dependency is pinned exactly at 0.14.4.

Added

  • @protoyard/ui Avatar forwards Texuli's new tone and shape. Re-exported
    components gain the rest of Texuli 0.14.3 directly: labelContent on
    Checkbox, Radio and Switch, Field counter, NumberField display="output",
    iconSize, BottomNav emphasis, MobileHeader eyebrow/leading/onClose,
    SplitView listWidth/breakpoint/context, Stat tone, Composer
    layout="row", texuli/list-item and opt-in Spanish catalogs.
  • @protoyard/views-ui TimelineView holds its opening day as rows load and
    zoom changes (Texuli 0.14.4) and exposes scrollToDate(date) through
    bind:this.

Fixed

  • The component-scoped-class adoption rule splits selector lists only at
    top-level commas, so :global(:is(.a, .b).tx-button) no longer counts .b
    (Dailybot batch 9).
  • EmojiPicker inside a Texuli Field is named by the Field label plus its
    visible value (Dailybot batch 9).
  • protoyard showcase finds @protoyard/player where pnpm installs it with
    @protoyard/cli, and stops before building anything when it is missing
    (Dailybot batch 10).
  • The gallery reads the catalog blueprints of the installed
    @protoyard/templates package in a consumer workspace instead of hiding
    them as invalid entries (Corag).

Changed

  • The page host's CSS caps rise with Texuli's CSS: initial 7,940 B (measured
    7,562 B), all CSS 44,218 B (measured 43,139 B).

Protoyard v1.5.0

Choose a tag to compare

@github-actions github-actions released this 07 Nov 16:13
40061aa

Texuli 0.14.2. Every Texuli dependency is pinned exactly at 0.14.2.

Added

  • Select variant and block. The trigger takes Texuli's ghost
    variant per instance (G-059), and fullWidth (or block) now uses
    Texuli's block on the root instead of Protoyard's wrapper (UG-20).
  • ChipGroup required. In single mode the selected chip stays
    selected when pressed again (Texuli's deselectable={false}, UG-54).
  • TimelineView initialDate and formatTick pass through to Texuli
    (G-056). Without initialDate the axis opens at the simulated today when
    it falls inside the plan.

Changed

  • Texuli 0.14.2 fixes reach every prototype: a dialog, alert dialog or sheet
    mounted open shows its backdrop; a non-modal popover or select no longer
    pulls focus back from another overlay; controlled toggles and toggle groups
    render their prop (bind:pressed with onPressedChange no longer writes
    the bound value by itself); side sheets, drawers and DetailPanel fill
    their height and scroll inside.
  • The layout host's initial size is re-measured at 4,175 B gzip with Texuli
    0.14.2; its cap moves from 4,080 B to 4,280 B (docs/PERFORMANCE.md).