release: Open Design 0.2.0 (#297)

This commit is contained in:
lefarcen 2026-05-02 22:28:59 +08:00 committed by GitHub
parent c0589ed05e
commit 62b01a6dbf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 191 additions and 63 deletions

View file

@ -7,6 +7,87 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.2.0] - 2026-05-02
A feature-heavy follow-up to 0.1.0 — dark mode, xAI Grok Imagine media generation, headless deploy mode, OpenClaude fallback, four new locales, and a much richer skill / design-system / prompt-template catalog. 45 merged PRs from 27 contributors.
### Added
#### Web / UI
- Dark mode with system / light / dark toggle. ([#259])
- Visible conversation timestamps. ([#120])
- React artifact output support. ([#121])
- Preview comment attachments. ([#284])
#### Agents & daemon
- Auto-detect OpenClaude as a fallback for Claude Code. ([#263])
- Standardize agent communication via stdin and remove Windows-specific shims. ([#258])
#### Media generation
- xAI Grok Imagine integration covering image, video, and native audio. ([#276])
#### Skills, design systems & prompt templates
- `kami` editorial paper design system with deck starter. ([#226])
- `html-ppt` skill (lewislulu/html-ppt-skill) with 15 per-template Examples cards. ([#193])
- `design-brief` skill with structured I-Lang input format. ([#184])
- Brand-agnostic craft references and Refero-derived lint rules. ([#225])
- 11 HyperFrames video prompt templates and media generation README section. ([#227])
- Three Kingdoms ARPG Seedance 2.0 video templates (3). ([#212])
- Three Kingdoms ARPG gameplay screenshot templates (3). ([#207])
- Otaku-dance choreography breakdown infographic template. ([#209])
- Anime fighting game screenshot template. ([#208])
#### Deployment & tooling
- `--prod` flag and `OD_HOST` for headless server deployment in `tools-dev`. ([#222])
- GitHub CI workflow. ([#271])
- Daemon `kindFor` / `mimeFor` file classifier tests. ([#269])
#### Internationalization
- Hungarian (`hu`) UI locale. ([#288])
- Polish (`pl`) UI locale. ([#273])
- Korean (`ko`) UI locale. ([#253])
- Turkish (`tr`) UI locale. ([#233])
### Changed
- Image / video projects now pick from prompt templates (not design systems). ([#192])
- Optimize Electron release artifact size. ([#249])
### Fixed
#### Daemon
- Restore `startServer` Promise contract — return `url` / `{ url, server }`. ([#268])
- Emit `tool_use` from `tool_execution_start` in pi-rpc. ([#186])
- Clamp Codex reasoning effort to model-supported values. ([#223])
- Deliver Claude Code prompt via stdin to avoid spawn `E2BIG` / `ENAMETOOLONG`. ([#143])
- Include `package.json` in tarball so packaged app reports correct version. ([#260])
- Treat `.py` files as previewable code in Design Files. ([#261])
- `OD_DAEMON_URL` uses port 0 instead of actual allocated port (now reports the real port). ([#240])
- Quote agent bin path when spawning with `shell:true` on Windows. ([#232])
- Make `max_tokens` configurable. ([#78])
#### Web UI
- Suppress hydration warning on `<body>`. ([#248])
- Fix language dropdown overflow in Settings modal. ([#281], [#287])
- Add scroll to Settings language menu when it overflows view. ([#247])
- Preserve deck preview pagination per file. ([#119])
- Fix deck preview pagination controls. ([#112])
#### Cross-platform
- Use junction instead of dir symlink on Windows in `tools-dev`. ([#231])
#### Internationalization
- Replace hardcoded `Claude` with `助手` in zh-TW assistant role copy. ([#262])
### Documentation
- Traditional Chinese (繁體中文) README. ([#194])
### Internal
- Auto-generated metrics SVG updates. ([#228], [#241])
- Fix metrics workflow protected branch updates. ([#219])
## [0.1.0] - 2026-05-01
First public release of Open Design — a local-first, open-source alternative to Anthropic's Claude Design. It detects your installed code-agent CLI, runs design skills against curated design systems, and streams artifacts into a sandboxed in-app preview.
@ -103,7 +184,8 @@ First public release of Open Design — a local-first, open-source alternative t
- Beta release workflow placeholder. ([#36])
- Git commit co-author policy. ([#131])
[Unreleased]: https://github.com/nexu-io/open-design/compare/open-design-v0.1.0...HEAD
[Unreleased]: https://github.com/nexu-io/open-design/compare/open-design-v0.2.0...HEAD
[0.2.0]: https://github.com/nexu-io/open-design/releases/tag/open-design-v0.2.0
[0.1.0]: https://github.com/nexu-io/open-design/releases/tag/open-design-v0.1.0
[#1]: https://github.com/nexu-io/open-design/pull/1
@ -190,3 +272,49 @@ First public release of Open Design — a local-first, open-source alternative t
[#201]: https://github.com/nexu-io/open-design/pull/201
[#202]: https://github.com/nexu-io/open-design/pull/202
[#204]: https://github.com/nexu-io/open-design/pull/204
[#78]: https://github.com/nexu-io/open-design/pull/78
[#112]: https://github.com/nexu-io/open-design/pull/112
[#119]: https://github.com/nexu-io/open-design/pull/119
[#120]: https://github.com/nexu-io/open-design/pull/120
[#121]: https://github.com/nexu-io/open-design/pull/121
[#143]: https://github.com/nexu-io/open-design/pull/143
[#184]: https://github.com/nexu-io/open-design/pull/184
[#186]: https://github.com/nexu-io/open-design/pull/186
[#192]: https://github.com/nexu-io/open-design/pull/192
[#193]: https://github.com/nexu-io/open-design/pull/193
[#194]: https://github.com/nexu-io/open-design/pull/194
[#207]: https://github.com/nexu-io/open-design/pull/207
[#208]: https://github.com/nexu-io/open-design/pull/208
[#209]: https://github.com/nexu-io/open-design/pull/209
[#212]: https://github.com/nexu-io/open-design/pull/212
[#219]: https://github.com/nexu-io/open-design/pull/219
[#222]: https://github.com/nexu-io/open-design/pull/222
[#223]: https://github.com/nexu-io/open-design/pull/223
[#225]: https://github.com/nexu-io/open-design/pull/225
[#226]: https://github.com/nexu-io/open-design/pull/226
[#227]: https://github.com/nexu-io/open-design/pull/227
[#228]: https://github.com/nexu-io/open-design/pull/228
[#231]: https://github.com/nexu-io/open-design/pull/231
[#232]: https://github.com/nexu-io/open-design/pull/232
[#233]: https://github.com/nexu-io/open-design/pull/233
[#240]: https://github.com/nexu-io/open-design/pull/240
[#241]: https://github.com/nexu-io/open-design/pull/241
[#247]: https://github.com/nexu-io/open-design/pull/247
[#248]: https://github.com/nexu-io/open-design/pull/248
[#249]: https://github.com/nexu-io/open-design/pull/249
[#253]: https://github.com/nexu-io/open-design/pull/253
[#258]: https://github.com/nexu-io/open-design/pull/258
[#259]: https://github.com/nexu-io/open-design/pull/259
[#260]: https://github.com/nexu-io/open-design/pull/260
[#261]: https://github.com/nexu-io/open-design/pull/261
[#262]: https://github.com/nexu-io/open-design/pull/262
[#263]: https://github.com/nexu-io/open-design/pull/263
[#268]: https://github.com/nexu-io/open-design/pull/268
[#269]: https://github.com/nexu-io/open-design/pull/269
[#271]: https://github.com/nexu-io/open-design/pull/271
[#273]: https://github.com/nexu-io/open-design/pull/273
[#276]: https://github.com/nexu-io/open-design/pull/276
[#281]: https://github.com/nexu-io/open-design/pull/281
[#284]: https://github.com/nexu-io/open-design/pull/284
[#287]: https://github.com/nexu-io/open-design/pull/287
[#288]: https://github.com/nexu-io/open-design/pull/288

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/daemon",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"type": "module",
"main": "./dist/cli.js",
@ -32,10 +32,10 @@
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.sidecar.json --noEmit && tsc -p tsconfig.tests.json --noEmit"
},
"dependencies": {
"@open-design/contracts": "workspace:0.1.0",
"@open-design/platform": "workspace:0.1.0",
"@open-design/sidecar": "workspace:0.1.0",
"@open-design/sidecar-proto": "workspace:0.1.0",
"@open-design/contracts": "workspace:0.2.0",
"@open-design/platform": "workspace:0.2.0",
"@open-design/sidecar": "workspace:0.2.0",
"@open-design/sidecar-proto": "workspace:0.2.0",
"better-sqlite3": "^11.10.0",
"express": "^4.19.2",
"jszip": "^3.10.1",

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/desktop",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"type": "module",
"main": "./dist/main/index.js",
@ -18,9 +18,9 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
"@open-design/platform": "workspace:0.1.0",
"@open-design/sidecar": "workspace:0.1.0",
"@open-design/sidecar-proto": "workspace:0.1.0"
"@open-design/platform": "workspace:0.2.0",
"@open-design/sidecar": "workspace:0.2.0",
"@open-design/sidecar-proto": "workspace:0.2.0"
},
"devDependencies": {
"@types/node": "24.12.2",

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/packaged",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"type": "module",
"main": "./dist/index.mjs",
@ -20,12 +20,12 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
"@open-design/daemon": "workspace:0.1.0",
"@open-design/desktop": "workspace:0.1.0",
"@open-design/platform": "workspace:0.1.0",
"@open-design/sidecar": "workspace:0.1.0",
"@open-design/sidecar-proto": "workspace:0.1.0",
"@open-design/web": "workspace:0.1.0"
"@open-design/daemon": "workspace:0.2.0",
"@open-design/desktop": "workspace:0.2.0",
"@open-design/platform": "workspace:0.2.0",
"@open-design/sidecar": "workspace:0.2.0",
"@open-design/sidecar-proto": "workspace:0.2.0",
"@open-design/web": "workspace:0.2.0"
},
"devDependencies": {
"@types/node": "24.12.2",

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/web",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"type": "module",
"exports": {
@ -29,10 +29,10 @@
},
"dependencies": {
"@anthropic-ai/sdk": "^0.32.1",
"@open-design/contracts": "workspace:0.1.0",
"@open-design/platform": "workspace:0.1.0",
"@open-design/sidecar": "workspace:0.1.0",
"@open-design/sidecar-proto": "workspace:0.1.0",
"@open-design/contracts": "workspace:0.2.0",
"@open-design/platform": "workspace:0.2.0",
"@open-design/sidecar": "workspace:0.2.0",
"@open-design/sidecar-proto": "workspace:0.2.0",
"next": "^16.2.4",
"openai": "^6.35.0",
"react": "^18.3.1",

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/e2e",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"type": "module",
"scripts": {

View file

@ -1,6 +1,6 @@
{
"name": "open-design",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"packageManager": "pnpm@10.33.2",
"type": "module",
@ -23,8 +23,8 @@
"typecheck": "pnpm -r --workspace-concurrency=1 --if-present run typecheck && pnpm --filter @open-design/daemon build && pnpm check:residual-js"
},
"devDependencies": {
"@open-design/tools-dev": "workspace:0.1.0",
"@open-design/tools-pack": "workspace:0.1.0"
"@open-design/tools-dev": "workspace:0.2.0",
"@open-design/tools-pack": "workspace:0.2.0"
},
"engines": {
"node": "~24",

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/contracts",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"type": "module",
"description": "Shared pure TypeScript contracts for the Open Design web/daemon boundary.",

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/platform",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"type": "module",
"main": "./dist/index.mjs",

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/sidecar-proto",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"type": "module",
"main": "./dist/index.mjs",

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/sidecar",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"type": "module",
"main": "./dist/index.mjs",

View file

@ -9,25 +9,25 @@ importers:
.:
devDependencies:
'@open-design/tools-dev':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:tools/dev
'@open-design/tools-pack':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:tools/pack
apps/daemon:
dependencies:
'@open-design/contracts':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/contracts
'@open-design/platform':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/platform
'@open-design/sidecar':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/sidecar
'@open-design/sidecar-proto':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/sidecar-proto
better-sqlite3:
specifier: ^11.10.0
@ -64,13 +64,13 @@ importers:
apps/desktop:
dependencies:
'@open-design/platform':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/platform
'@open-design/sidecar':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/sidecar
'@open-design/sidecar-proto':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/sidecar-proto
devDependencies:
'@types/node':
@ -86,22 +86,22 @@ importers:
apps/packaged:
dependencies:
'@open-design/daemon':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../daemon
'@open-design/desktop':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../desktop
'@open-design/platform':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/platform
'@open-design/sidecar':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/sidecar
'@open-design/sidecar-proto':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/sidecar-proto
'@open-design/web':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../web
devDependencies:
'@types/node':
@ -123,16 +123,16 @@ importers:
specifier: ^0.32.1
version: 0.32.1
'@open-design/contracts':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/contracts
'@open-design/platform':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/platform
'@open-design/sidecar':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/sidecar
'@open-design/sidecar-proto':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/sidecar-proto
next:
specifier: ^16.2.4
@ -244,13 +244,13 @@ importers:
tools/dev:
dependencies:
'@open-design/platform':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/platform
'@open-design/sidecar':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/sidecar
'@open-design/sidecar-proto':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/sidecar-proto
cac:
specifier: 6.7.14
@ -275,13 +275,13 @@ importers:
specifier: 3.1.0
version: 3.1.0
'@open-design/platform':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/platform
'@open-design/sidecar':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/sidecar
'@open-design/sidecar-proto':
specifier: workspace:0.1.0
specifier: workspace:0.2.0
version: link:../../packages/sidecar-proto
cac:
specifier: 6.7.14

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/tools-dev",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"type": "module",
"bin": {
@ -13,9 +13,9 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
"@open-design/platform": "workspace:0.1.0",
"@open-design/sidecar": "workspace:0.1.0",
"@open-design/sidecar-proto": "workspace:0.1.0",
"@open-design/platform": "workspace:0.2.0",
"@open-design/sidecar": "workspace:0.2.0",
"@open-design/sidecar-proto": "workspace:0.2.0",
"cac": "6.7.14"
},
"devDependencies": {

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/tools-pack",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"type": "module",
"bin": {
@ -12,9 +12,9 @@
"typecheck": "tsc -p tsconfig.json --noEmit"
},
"dependencies": {
"@open-design/platform": "workspace:0.1.0",
"@open-design/sidecar": "workspace:0.1.0",
"@open-design/sidecar-proto": "workspace:0.1.0",
"@open-design/platform": "workspace:0.2.0",
"@open-design/sidecar": "workspace:0.2.0",
"@open-design/sidecar-proto": "workspace:0.2.0",
"@electron/notarize": "3.1.0",
"cac": "6.7.14",
"electron-builder": "26.8.1"