Download Latest Version v13.3.2 -- the live demo reads sites again source code.zip (15.3 MB) Google Add to Preferred Sources
Home / v13.3.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-09-23 3.5 kB
v13.3.0 -- ship it where people run it source code.tar.gz 2026-09-23 14.5 MB
v13.3.0 -- ship it where people run it source code.zip 2026-09-23 15.3 MB
Totals: 3 Items   29.8 MB 0

Ship it where people run it: releases, installs, agents and CI.

Extraction was already strong; what failed people was everything around it. npm latest sat three months behind the repo, npm install downloaded a browser that CI and Docker can't, the MCP server couldn't extract a URL, and every failure exited 1.

Releases

  • npm publishes from CI on every vX.Y.Z tag, with provenance. A tag that doesn't match package.json fails the release.

Install

  • No browser download at npm install. Run designlang install-browser (--with-deps on bare Linux) to fetch the Chromium matching the bundled Playwright.
  • One launcher everywhere. All 13 launch sites try the bundled Chromium, then system Chrome, then fail with an error that names the fix.

MCP server v2

  • Extract live URLs as jobs. extract_design returns a job id; get_job_status, list_jobs, cancel_job.
  • Read, diff, lint and export by job id: get_tokens, get_colors, get_typography, get_components, compute_drift, get_findings, and export (dtcg, tailwind, shadcn, figma, css, design-md).
  • Conformance. An initialize without protocolVersion is served on the default revision instead of rejected (#182, [#183]); serverInfo.version is the package version (it said 7.0.0); import 'designlang/mcp' resolves (the export pointed at a missing file).
  • The folder-backed tools and resources are unchanged.

Exit codes

Code Meaning
0 Success
1 Drift over threshold (drift, ci, lint)
2 Extraction failed: page error, bad input, no browser
3 Navigation timeout: retryable

GitHub Action

  • Installs the designlang version it was tagged with, then the browser.
  • One PR annotation per changed token, escaped, since values come from the audited site.
  • Says why a job failed: drift, extraction failure or timeout.
  • Fixed: with zero changes, changed-count was written as 0 twice, which broke the changed output.

Extraction accuracy — found by a new head-to-head benchmark (bench/)

  • --json output was truncated at 64KB when piped. designlang https://gov.uk --json | jq received 65,536 of 70,583 bytes. The CLI now exits only after stdout has flushed; drift --json too.
  • Body font counts only where text renders. <meta>, <link> and other head elements carry the browser default (Times) without drawing anything, which made Times dropbox.com's body font. Code faces (plexMono, commitMono, Source Code Pro) are labelled mono and sort after the text faces, so syntax highlighting no longer outvotes the body font. typography.families[].usage gains other and mono.
  • Themes, Tailwind and CSS vars give the body slot to the most used body family and never overwrite it (supabase's Tailwind body had become Source Code Pro).
  • Brand colour is ranked by chroma, repetition and painted area, not decided by one call-to-action button. Near-black and near-white can't win on volume, one full-page background can't win on area, and the browser's default link colours are ignored. Fixes gov.uk, atlassian, discord, mailchimp, duolingo and framer.

Breaking

  • The Action's fail-on-change now defaults to true. Pass false to keep report-only behaviour.
  • Extraction failures exit 2 or 3 instead of 1.
  • A fresh install needs designlang install-browser or a system Chrome.
Source: README.md, updated 2026-09-23