| Name | Modified | Size | Downloads / 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.Ztag, with provenance. A tag that doesn't matchpackage.jsonfails the release.
Install
- No browser download at
npm install. Rundesignlang install-browser(--with-depson 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_designreturns 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, andexport(dtcg, tailwind, shadcn, figma, css, design-md). - Conformance. An
initializewithoutprotocolVersionis served on the default revision instead of rejected (#182, [#183]);serverInfo.versionis 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-countwas written as0twice, which broke thechangedoutput.
Extraction accuracy — found by a new head-to-head benchmark (bench/)
--jsonoutput was truncated at 64KB when piped.designlang https://gov.uk --json | jqreceived 65,536 of 70,583 bytes. The CLI now exits only after stdout has flushed;drift --jsontoo.- 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 labelledmonoand sort after the text faces, so syntax highlighting no longer outvotes the body font.typography.families[].usagegainsotherandmono. - Themes, Tailwind and CSS vars give the body slot to the most used body
family and never overwrite it (supabase's Tailwind
bodyhad 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-changenow defaults totrue. Passfalseto keep report-only behaviour. - Extraction failures exit
2or3instead of1. - A fresh install needs
designlang install-browseror a system Chrome.