PR #1546 (`docs: add Windows launcher note`) added a pointer to
`docs/windows-troubleshooting.md` to the English README, right
between the environment requirements paragraph and the
"For desktop/background startup, …" paragraph. The 12 locale
READMEs were not updated at the time, so anyone arriving via
the language switcher would not see the Windows native-setup
path or the double-click launcher hint.
This commit adds an equivalent line to each locale README in
that locale's voice, at the same anchor position. No new asset
is introduced: every link points to the same English
`docs/windows-troubleshooting.md` file (no translated doc yet),
matching how other locale-specific tips already cross-reference
English docs in this repo.
Locales touched: ar, de, es, fr, ja-JP, ko, pt-BR, ru, tr, uk,
zh-CN, zh-TW.
Note: README.ko.md happens to also be missing the "For
desktop/background startup, …" paragraph that the other 11
locales already have. That gap is out of scope for this PR and
should be handled separately when ko translation parity is
revisited.
Co-authored-by: nicejames <nicejames@gmail.com>
The 12 locale READMEs (+ root English README) each carry two
shields.io inventory badges:
https://img.shields.io/badge/design%20systems-72-orangehttps://img.shields.io/badge/skills-31-teal
The actual counts on `main` today (verified):
find skills -maxdepth 2 -name SKILL.md | wc -l → 131
find design-systems -maxdepth 2 -name DESIGN.md | wc -l → 149
This commit updates the badge URLs to reflect the actual inventory.
This is the conservative "inventory-only" shape proposed in #1890 —
prose strings like "72 out of the box" or "X systems available" are
left alone in this PR because they carry historical / launch
context the badge URLs don't, and the right shape there is a
maintainer call. The badges themselves are unambiguously a current
inventory signal, so they're safe to sync without taking sides on
the policy question.
`README.fr.md` is intentionally skipped: it already replaced both
numeric badges with `catalogue` generic placeholders, so the
French README needs no update.
Refs #1890.
Co-authored-by: nicejames <nicejames@gmail.com>
README.ko.md is missing the "For desktop/background startup,
fixed-port restarts, and media generation dispatcher checks
(OD_BIN, OD_DAEMON_URL, apps/daemon/dist/cli.js), see
QUICKSTART.md" paragraph that the other 11 locale READMEs and
the English README all carry. Korean readers landing on the
README through the language switcher do not see this pointer
and have to discover the operational env vars by reading the
English QUICKSTART unprompted.
Add an equivalent paragraph in Korean at the same anchor
position the other 11 locales use — between the environment
requirements paragraph and the "첫 번째 로드 시:" enumeration.
The link target is `QUICKSTART.md` (English), matching how
ru/uk/es/tr/ar already cross-reference the English QUICKSTART
when no locale-specific QUICKSTART exists yet.
No code changes; one file, two lines added.
Co-authored-by: nicejames <nicejames@gmail.com>
* docs(readme): add 0.8.0-preview banner pointing to Discussion #1727
Adds a single-line block-quote banner at the top of the English and
Simplified Chinese READMEs inviting visitors to try the 0.8.0 preview
and participate in shaping it.
The banner is intentionally short — all details (installer downloads,
contribution paths, Discord, scope, what we want feedback on) live on
the announcement thread at Discussion #1727 so the README stays
maintainable as a single source of truth.
Other language READMEs (es, pt-BR, de, fr, zh-TW, ko, ja-JP, ar, ru,
uk, tr) can adopt the same pattern via follow-up community PRs.
* docs(readme): punch up 0.8.0-preview banner to match announcement rally tone
Echo the signature lines from the announcement thread (Discussion #1727):
- "Design's old world ends here"
- "40k stars in two weeks got us this far"
- "We need you to push the rest of the way"
CTA link copy also reframed from generic "Discussion #1727" to action verbs:
"Read the announcement, grab the installer, join the movement" — matches
the rally-style framing of the announcement itself instead of reading
like a flat reference link.
* docs(readme.zh-CN): fix awkward Chinese phrasing for 40k stars line
"两周 40k stars 把我们送到这里" reads stilted in Chinese — the
number-as-subject construction is more English-like. Replace with the
phrasing already used in the announcement thread (Discussion #1727):
"上线两周,40k stars 在身,且仍在加速。剩下的路,需要你和我们一起推完。"
Maximum consistency with the Chinese announcement copy that's already
been reviewed and shipped.
* docs(readme): use GitHub Alert + H3 for higher-contrast 0.8.0 banner
A plain block-quote banner blended into the existing tagline and got
lost. Switch to GitHub's native '> [!IMPORTANT]' alert syntax — renders
as a purple-tinted callout card with an icon, which:
- Stands out clearly from the regular tagline that follows
- Matches the preview/v0.8.0 label color (#7c3aed purple)
- Renders consistently on github.com, mobile, and GitHub Desktop
- Needs zero images / inline CSS / external assets
Bumped the headline to H3 inside the alert for further visual weight,
broke the body into separate paragraphs for legibility.
* docs(readme): move 0.8.0-preview banner below language selector
After feedback, position the rally banner between the language selector
line and the '## Why this exists' heading instead of right under the H1.
Rationale: the very top of the README is for stable identity (title +
tagline + banner image + badges). The 0.8.0 alert sits in the
transitional position between identity-block and body-content, acting as
the last hook before readers commit to reading. Keeps the foundational
tagline visually pristine while still placing the call-to-action above
the fold.
* docs(readme.zh-CN): tweak CTA wording '拿安装包' → '下载安装包'
'下载安装包' is the natural Chinese verb pairing for installer downloads;
'拿' reads slightly casual / dialectal for a public-facing README banner.
* docs(readme): add 0.8.0-preview banner to all 11 remaining language variants
Translates the 0.8.0-preview rally banner into es, pt-BR, de, fr, zh-TW,
ko, ja-JP, ar, ru, uk, tr — placed in the same position (between the
language selector and the first horizontal rule) as the English and
zh-CN versions.
Each translation preserves the signature signals from Discussion #1727:
- 'Design's old world ends here' / its local-language equivalent
- '40k stars in two weeks' (number kept literal — same data point)
- 'We need you to push the rest of the way' / equivalent rally line
- 'agent-native' kept as English (no widely-accepted translation yet)
- 'Figma' kept as proper noun
Code blocks (`0.8.0-preview`), URLs, and the `[!IMPORTANT]` alert
syntax remain unchanged across all variants for renderer consistency.
If any native speaker spots a phrasing that reads less than fluent, a
follow-up PR is welcome — these translations are AI-assisted and should
be treated as starter copy, not final.
* docs(readme): move 0.8.0-preview banner back to top of all language READMEs
After more feedback, position the rally banner right after the H1 (`# Open Design`)
instead of below the language selector. Trade-off: the banner now competes with
the foundational tagline for above-the-fold attention, but visitors see the
0.8.0 call-to-action in their first eye-fix instead of after scrolling past
badges and language picker.
Same banner content, same alert syntax, same 13-language coverage — only
position changed across all variants (en, zh-CN, zh-TW, es, pt-BR, de, fr,
ko, ja-JP, ar, ru, uk, tr).
* docs(readme): add 'actively shipping / next phase / merges to main' line
Per colleague feedback, surface that preview/v0.8.0 isn't a fork or a
side experiment — it's the next phase of Open Design, currently in fast
development, set to land on main once stable.
The new paragraph sits between the 'we need you' rally line and the
final CTA link, so readers see the momentum context before clicking
through to the announcement.
Translated in place across all 13 language READMEs.
* docs(readme): update banner — 0.8.0 is already in main now
preview/v0.8.0 has been fully merged into main (0 commits behind, 59
commits behind main). The 'will merge into main once stable' line is
out of date.
Reframe to reflect current state:
- 'Actively shipping fast → set to merge into main once stable' (old)
- 'Already in main — 0.8.0 is the next phase, in active development.
Bring your contributions, ideas, and feedback.' (new)
Translated in place across all 13 language READMEs.
* docs(readme): drop awkward '合入 main' phrasing from banner
The 'merged into main' / '已经合入 main' line reads too git-operational
for a public banner. Reframe without referencing merge mechanics:
old: 'Already in main — 0.8.0 is the next phase, in active dev. Bring
your contributions, ideas, and feedback.'
new: 'Active development, open to all — 0.8.0 is the next phase of
Open Design. Your contributions, ideas, and feedback shape what
comes next.'
Same intent — current direction, welcoming, no version-control
vocabulary that non-engineer visitors won't connect to.
Translated in place across all 13 language READMEs.
* docs(readme): tighten banner phrasing — 'iterating fast on main'
Replace 'Active development, open to all' with a more dynamic line that
brings 'main' back into the copy without the static 'merged into main'
feel:
'**Iterating fast on `main`** — 0.8.0 is the next phase of Open Design.
Your contributions, ideas, and feedback shape what comes next.'
Conveys ongoing forward motion (vs the completed-merge frame), keeps
the 'main' anchor so readers know where to look. Translated across all
13 language READMEs.
* docs(readme): amp up banner CTA — concrete actions + 'what you bring is what this movement becomes'
The previous 'Your contributions, ideas, and feedback shape what comes
next' was directionally right but soft. Swap in three concrete imperative
verbs (PR / idea / bug) plus a collective-ownership punchline:
'**Iterating fast on `main`** — 0.8.0 is the next phase of Open Design.
Ship a PR, drop a wild idea, file a bug — what you bring is what this
movement becomes.'
Reads like an invitation to act, not a thank-you-in-advance. Translated
across all 13 language READMEs.
* docs(readme): mention Claude Design alongside Figma in banner
Update paragraph 2 from 'alternative to Figma' to 'alternative to Claude
Design / Figma' across all 13 language READMEs.
Aligns the banner with the foundational tagline below it (which already
points to [Claude Design][cd]). The framing is now: Open Design competes
with both closed silos — Anthropic's Claude Design *and* Figma — by
being the open, agent-native answer to the same opportunity.
* docs: fix - update prompts path from web to daemon in README files
Update all references from apps/web/src/prompts/ to apps/daemon/src/prompts/
across all README language files.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* docs: fix - update prompts path in specs and fix French README parity
P2 — Current specs:
- specs/current/critique-theater.md
- specs/current/critique-theater-plan.md
Update prompts path from apps/web/src/prompts/ to apps/daemon/src/prompts/
to reflect daemon ownership of prompt composition.
P3 — Historical spec:
- specs/2026-04-29-live-artifacts/spec.md
Update to current path (historical snapshots kept accurate to latest codebase).
P3 — Language parity:
- README.fr.md
Fix missing prompt references in Anti-AI-slop and References sections
to match other language variants (6 refs total).
Migration context: Prompts moved from web to daemon as an ownership/boundary
change (daemon composes and injects prompts at agent spawn time), not a
mechanical rename. Web app no longer owns prompt composition logic.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* docs: fix - update git command path in critique-theater-plan.md
Fix missed git add command example at line 1585.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* docs: fix - update prompt test paths from web/tests to daemon/tests
Update test file paths to match daemon ownership of prompts.
Tests for apps/daemon/src/prompts/* should live in apps/daemon/tests/prompts/.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* docs: fix broken pi-ai links, point to correct pi-mono packages
All links to https://github.com/mariozechner/pi-ai returned 404 after
the project was restructured into the badlogic/pi-mono monorepo.
- "pi" / "Pi" (the CLI tool the daemon scans for) now points to
packages/coding-agent
- "pi-ai" (the multi-provider LLM API) now points to packages/ai
via the shared [piai] reference definitions
Closes#275.
* fixup! Merge remote-tracking branch 'upstream/main' into docs/fix-pi-pi-ai-links
Fix [piai] reference in README.ar.md and README.es.md: was incorrectly
pointing to packages/coding-agent (pi CLI) instead of packages/ai (pi-ai
provider library).
* fixup! fix row order in README.uk.md: move Pi after DeepSeek TUI to match English README
* feat: add accent color control and launcher for Open Design
* fix: remove launcher binary from PR
* test: cover accent appearance edge cases
---------
Co-authored-by: ferasbusiness666 <ferasbusiness666@users.noreply.github.com>
GitHub's `/contribute` page only renders the `good first issue` label,
so 12 open `help wanted` issues never reach newcomers via that entry.
Switch the link to an issues search URL covering both labels (OR), so
both pools surface from one click. Wording is unchanged across all 10
README locales.
* fix(daemon): remove --no-session from pi adapter to persist session files
The pi agent was the only adapter explicitly passing `--no-session`
in its `buildArgs`, preventing pi from writing session files.
All other adapters either run in single-shot mode by design or use
the ACP JSON-RPC session lifecycle without suppressing persistence.
Removing `--no-session` lets `--mode rpc` retain its default behavior
of writing session state, which is needed for multi-prompt continuity
and matches the rest of the harness ecosystem.
* test(daemon): add pi buildArgs regression tests; fix docs for --no-session removal
- Adds test for pi.buildArgs base shape: returns ["--mode", "rpc"]
and does not include --no-session (prevents regression).
- Adds test for --model and --thinking option passthrough.
- Updates pi-rpc.ts lifecycle comment to remove [--no-session].
- Updates README.md and all localized READMEs to reflect the
corrected pi CLI invocation.
Desktop client v0.3.0 has shipped for macOS (Apple Silicon) and Windows
(x64) at https://open-design.ai/ and the GitHub releases page. Surface
that in 11 READMEs (en + 10 localized):
- Add a 'Download' CTA badge as the first item in the shields row,
linking to open-design.ai (orange #ff6b35, no platform-specific logo
so it doesn't imply Mac-only or Windows-only).
- Repoint the existing release badge link from /releases/latest to
/releases (the general entry page, more stable for users browsing
history).
- Add &display_name=tag to the release shields URL so the badge shows
the literal tag (e.g. open-design-v0.3.1-beta.5) instead of 'invalid'
— shields.io's semver parser doesn't recognize the open-design- prefix.
- Update the At-a-glance 'Deployable to' row: drop the 'placeholder,
in-flight' note and call out the actual macOS/Windows downloads with
links to open-design.ai and the releases page.
- Insert a 'Download the desktop app (no build required)' subsection at
the top of Quickstart, with a 'Run from source' subheading before the
existing bash block — splits the funnel between non-developer users
(download link) and developers (clone + pnpm).
- Flip the roadmap entry for apps/packaged/ from [ ] to [x] and append
the download links.
zh-TW does not carry the release badge in its shields row, so the
release-badge update is a no-op there; all other changes apply.
Adds the official Discord community link (https://discord.gg/qhbcCH8Am4)
as a badge in the badge row across all 11 localized READMEs so users
have a clear, consistent entry point to the community.
Co-authored-by: joey <joey@joeydeMacBook-Air.local>
* docs: add Arabic README translation
Adds README.ar.md — full Arabic translation of README.md, wrapped in a
top-level <div dir="rtl"> for correct RTL rendering on GitHub. All
URLs, file paths, code blocks, badges, and tables are preserved verbatim;
prose and table cell text are translated to Modern Standard Arabic.
Also wires up the language switcher in all nine sibling README files
(en/de/fr/zh-CN/zh-TW/ko/ja-JP/ru/uk) so the previously-placeholder
العربية entry now links to README.ar.md.
The translation is an initial pass — native-Arabic-speaker review for
phrasing/terminology is welcome.
* docs(ar): preserve code fences verbatim and restore license attribution
Address PR #458 review feedback (P2):
1. Revert translated prose inside fenced code blocks back to verbatim
English, matching the source README.md:
- Prompt-stack composition block
- Architecture ASCII diagram (browser layer, daemon comments,
bottom CLI row)
- Quickstart bash comments
- .od/ tree comments
- Repository structure tree comments
2. Restore the License section's bundled-attribution sentence with
links to skills/guizang-ppt/LICENSE (MIT, @op7418) and
skills/html-ppt/LICENSE (MIT, @lewislulu); the previous version
collapsed it to a generic 'see LICENSE' pointer.
* docs(ar): translate Running the Project and MCP server sections
Address PR #458 follow-up review (mrcfps): the Arabic README jumped from
the .od/ first-run section straight to repository structure, missing the
two sections added to README.md after this branch was forked:
- ## Running the Project — web/localhost mode, fixed-port restarts,
desktop/Electron commands, and the useful-commands table
- ## Use Open Design from your coding agent — stdio MCP server setup,
per-client install flow, daemon-must-be-running note, and the
read-only security model
Command blocks, table structure, and links are preserved verbatim from
README.md per the same convention used elsewhere in the file.
The `labels/good-first-issue` URL renders an empty list when no issues
carry that label. GitHub's `/contribute` page auto-curates a mix of
good-first-issue, help-wanted, and active items, so it stays useful for
newcomers regardless of label coverage. Wording is unchanged across all
10 README locales.
* docs: add Brazilian Portuguese (pt-BR) translations
Translate README, CONTRIBUTING, QUICKSTART, and the e2e/cases,
e2e/reports, skills/html-ppt, skills/guizang-ppt READMEs into pt-BR.
Add the pt-BR entry to the language switcher in every existing locale
variant (en, de, fr, ko, ja-JP, ru, uk, zh-CN, zh-TW for README; en,
de, fr, ja-JP, zh-CN for CONTRIBUTING; en, de, fr, ja-JP for
QUICKSTART) so readers in any language can jump to the Portuguese
version. Code blocks, file paths, identifiers, license attribution
links and brand names are kept verbatim with the source.
* docs(pt-BR): use repo-relative links in e2e READMEs
Replace author-local absolute paths (/Users/mac/...) with repo-relative links so the translated docs navigate correctly on GitHub and other checkouts.
* docs(pt-BR): fix README badge anchor and skill reference link
- Update Agents badge href to the Portuguese fragment (#agentes-de-código-suportados) so the badge jumps to the translated heading.
- Restore the [`SKILL.md`][skill] reference-link syntax in the comparison table; the opening bracket was lost in translation, breaking the row.
* feat(prompt-templates): add 11 HyperFrames video prompts and surface media generation in README
Adds eleven `hyperframes-*` prompt templates under `prompt-templates/video/`,
each one a concrete brief with scene-by-scene timing, GSAP eases, palette,
and the HyperFrames non-negotiables (deterministic, paused timelines,
entrance-only motion, lint/inspect commands). Archetypes covered:
- minimal product reveal (5s, 16:9)
- SaaS product promo (30s, 16:9, Linear/ClickUp-style)
- TikTok karaoke talking-head (9:16, TTS + word-synced captions)
- brand sizzle reel (30s, beat-synced kinetic typography)
- animated bar-chart race (NYT-style data infographic)
- Apple-style flight map route (origin → destination)
- 4s cinematic logo outro
- $0 → $10K money counter hype (9:16)
- 3-phone app showcase
- 9:16 social overlay stack (X · Reddit · Spotify · Instagram)
- 15s website-to-video pipeline
Each template uses `model: "hyperframes-html"`, real catalog-block thumbnails
from HeyGen's CDN as previewImageUrl, and source attribution to
`heygen-com/hyperframes` (Apache-2.0).
README also gets a new **Media generation** section between *Visual directions*
and *Beyond chat*, plus a new row in the *At a glance* table. The section
documents the three model families currently surfaced as templates
(gpt-image-2, Seedance 2.0, HyperFrames) with example galleries — gpt-image-2
thumbnails, Seedance MP4-linked thumbnails, and the 11 HyperFrames tiles —
and notes the wider model coverage (Kling, Veo, Sora, MiniMax, Suno, Udio,
Lyria, TTS) already wired in `VIDEO_MODELS` / `AUDIO_MODELS_BY_KIND` and
open for community templates.
* i18n(de): register new HyperFrames templates, categories, tags
Adds German titles/summaries for the 11 new hyperframes-* video templates
plus the Product/Marketing/Data/Travel/Branding/Short Form categories and
hyperframes/title-card/sizzle/etc. tags they introduce, so the German sync
guarantees enforced by apps/web/src/i18n/content.test.ts hold.
* docs(readme): sync Media generation section to de / ja / ko / zh-CN; bump counts to 93 (43 + 39 + 11)
Mirrors the English Media generation row + section into the four locale READMEs
(README.de.md, README.ja-JP.md, README.ko.md, README.zh-CN.md), translating
prose / table headers / captions while keeping the gpt-image-2, Seedance MP4,
and HyperFrames catalog-block thumbnails identical across all five locales so
the galleries render the same images.
Counts updated to reflect current main (after rebase): 43 gpt-image-2 + 39
Seedance + 11 HyperFrames = 93 prompts total. The English README's At-a-glance
row, intro paragraph, and gallery sub-headers now read "sample of 43" /
"sample of 39" / "11 ready-to-replicate templates" — locales follow.
Resolves the Codex review's German-i18n flag end-to-end: README copy is in
sync, and the German content map (DE_PROMPT_TEMPLATE_*) was already extended
in the prior commit on this branch.
* feat(skills): integrate lewislulu/html-ppt-skill as html-ppt + 15 per-template Examples cards
Bring the MIT-licensed lewislulu/html-ppt-skill upstream into skills/html-ppt/
with its full asset tree (36 themes, 31 single-page layouts, 27 CSS + 20
canvas-FX animations, runtime + presenter mode, all 15 full-deck templates,
and the upstream LICENSE preserved verbatim).
Surface each full-deck template as its own Examples gallery card via thin
wrapper skills under skills/html-ppt-<template>/. Each wrapper ships:
- SKILL.md with `od.mode=deck`, scenario, `featured: 20-34` (slotting after
the existing curated cards), an `od.example_prompt` tuned to the template,
and `od.upstream` pointing at the upstream repo. Clicking "Use this prompt"
on a card now wires up `kind=deck` + `speakerNotes=true` and seeds the
composer with the upstream's authoring flow so the prompt -> output path
matches the upstream demo.
- example.html baked self-contained (fonts/base/animations/style/theme CSS
inlined, runtime <script> stripped) so the gallery srcdoc iframe renders
the upstream look without external paths.
scripts/scaffold-html-ppt-skills.mjs and scripts/bake-html-ppt-examples.mjs
are idempotent generators — re-run after editing skills/html-ppt/ to re-sync
all per-template wrappers and their baked examples.
Add a Credits section + extend the License section in README.md /
README.zh-CN.md / README.ko.md to credit the upstream alongside the
already-cited op7418/guizang-ppt-skill.
* fix(scripts): allowlist html-ppt skill JS for residual-js check
Add scripts/bake-html-ppt-examples.mjs and scripts/scaffold-html-ppt-skills.mjs
to allowedExactPaths, and skills/html-ppt/assets/ to allowedPathPrefixes so
pnpm check:residual-js no longer flags the vendored upstream runtime JS or the
new maintainer-only .mjs scripts.
* fix(skills): keep all slides in baked html-ppt examples + correct asset guidance
The bake script's `STATIC_FALLBACK_CSS` set `.slide+.slide{display:none}`,
which silently truncated every baked `example.html` to slide 1. That artifact
is also served by `/api/skills/:id/example` and reused by the Examples
preview modal's share/export and print-to-PDF, so the rule dropped the rest
of the deck from those flows. Drop the rule — slides now stack in the
print-style flow the surrounding comment already described, the gallery
thumbnail iframe still naturally lands on slide 1 (each `.slide` is `100vh`),
and modal/share/export contains the full deck.
The wrapper SKILL.md authoring instructions told agents to copy
`index.html` + `style.css` into a project while keeping the upstream
`../../../assets/...` links, but those parent-relative URLs only resolve
in-tree (the template sits three folders deep). Once the file lives in a
project artifact, `base.css`, `animations.css`, and `runtime.js` 404 and
the deck never activates. Replace step 3 with two recipes — copy the
shared assets into a project-local `assets/` and rewrite the four tags,
or inline the CSS/JS directly — and re-emit all 15 wrapper SKILL.md
files via the scaffold generator.
Add README.zh-TW.md based on the Simplified Chinese version, converted
via OpenCC s2twp and adjusted to use Taiwan-specific terminology
(備援, 螢幕, 堆疊, 即時, 動態, 計畫, 色票, etc.). Update language
switcher in all existing README variants to include 繁體中文.
* Refactor project name from "Open Claude Design" to "Open Design"
- Updated project name in package.json, package-lock.json, and README files.
- Changed CLI commands and references from "ocd" to "od".
- Adjusted file structure references in documentation and code to reflect new naming conventions.
- Enhanced .gitignore to include new runtime data files.
- Updated metadata in LICENSE file to match new project name.
* chore: update next-env.d.ts route types path
Made-with: Cursor
* docs(readme): refresh stats, agents, skills and add metrics workflow
Make all three READMEs (en / zh-CN / ko) tell the truth about what the
project actually ships, and add lightweight community signals at the top
and bottom.
- Hero block: live for-the-badge GitHub stats (stars, forks, issues,
PRs, contributors, commit activity, last commit) sit directly under
the banner, with the smaller flat-square project-meta row (License,
Agents, Design systems, Skills, Quickstart) below them and the
language switcher below that.
- Counts updated to reality: 31 skills (was 19), 72 design systems
(was 71), 10 coding-agent CLIs + OpenAI-compatible BYOK (was 7).
- "At a glance", architecture, and prompt-stack tables updated to
cover /api/templates, /api/import/claude-design, /api/proxy/stream,
/api/artifacts/lint, sidecar IPC, and per-namespace runtime data.
- New "Beyond chat — what else ships" section covering Claude Design
ZIP import, BYOK proxy with SSRF block, saved templates, tab
persistence, artifact lint, sidecar protocol + headless desktop, and
Windows-friendly spawning.
- Skills tables rebuilt by mode (prototype, deck) and scenario; the
"template" mode claim is removed.
- Supported coding agents table expanded to all 10 CLIs (Claude Code,
Codex, Gemini, OpenCode, Cursor Agent, Qwen, Copilot, Hermes, Kimi,
Pi) plus a BYOK row, with accurate stream formats and argv shapes.
- Roadmap re-flowed to mark shipped vs pending items.
- Contributors wall (contrib.rocks), Repository activity (lowlighter
metrics SVG), and Star History added to all three READMEs, with
cache_bust=2026-04-30 on the contrib.rocks and star-history image
URLs to bypass GitHub camo caching.
- Korean README harmonised end-to-end with the English/Chinese ones.
- New .github/workflows/metrics.yml regenerates
docs/assets/github-metrics.svg daily; ship a placeholder SVG so the
image works before the first scheduled run.
Made-with: Cursor
* docs(readme): address PR #173 review feedback
- Replace invalid 0x14 control character in github-metrics.svg with an
em-dash so the placeholder is well-formed XML and renders as an
image (P1: was breaking SVG parse before the first metrics run).
- Clarify the placeholder SVG subtitle to spell out the token model:
GITHUB_TOKEN gives core stats; METRICS_TOKEN unlocks richer plugins
(traffic, follow-up). Reduces "do I need a secret?" confusion.
- Rewrite the metrics.yml inline auth comment to match: METRICS_TOKEN
is optional and only enables richer plugins; GITHUB_TOKEN is enough
for core metrics. Previous comment read as if METRICS_TOKEN was
mandatory.
- Soften the BYOK fallback row in all three READMEs (EN / zh-CN / ko)
with a catch-all phrase ("or any other OpenAI-compatible provider")
so the listed vendors don't read as exhaustive.
* feat(dev): add desktop tools-dev control plane
* refactor(sidecar): split Open Design contracts
Move Open Design-specific sidecar protocol definitions into @open-design/contracts so sidecar and platform can remain descriptor-driven primitives.
* refactor(daemon): organize package sources
Keep daemon app code, tests, and sidecar entrypoints in separate package directories so each layer can be built and verified independently.
* chore(repo): streamline maintenance entrypoints
Centralize agent guidance by directory and reduce root command chains while preserving the existing build scope.
* docs: translate agent guidance to English
* fix(sidecar): tolerate stale IPC sockets
Remove stale Unix socket files only after confirming no listener is active, so tools-dev can restart after unclean shutdowns.