release: Open Design 0.3.0

This commit is contained in:
lefarcen 2026-05-03 23:07:28 +08:00 committed by GitHub
parent d8e632c291
commit 016c08183f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 166 additions and 63 deletions

View file

@ -7,6 +7,71 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.3.0] - 2026-05-03
A fast follow-up to 0.2.0 focused on richer design workflows, packaged-agent reliability, export/deploy flows, and broader internationalization. 39 merged PRs from 25 contributors.
### Added
#### Web / UI
- Pet companion with Codex hatch-pet integration. ([#296])
- Brand design-system cards, thumbnails, and DESIGN.md side-by-side preview. ([#289])
- Per-tool renderer registry for generative UI. ([#282])
- Task completion sound and browser notification. ([#359])
#### Agents & daemon
- Persist code-agent startup state. ([#255])
- Mistral Vibe CLI agent adapter. ([#354])
- Devin for Terminal support. ([#301])
- `OD_BIND_HOST` and `--host` for interface binding. ([#328])
#### Skills & exports
- Taste-skill-derived web prototype and HTML PPT examples. ([#358])
- `pptx-html-fidelity-audit` skill wired into export prompts. ([#307])
- Broader PPTX fidelity script coverage beyond CJK. ([#308])
- Native desktop Save As dialog for `.pptx` downloads. ([#330])
- Export as Markdown from the share menu. ([#345])
#### Deployment
- `/api/projects/:id/deploy/preflight` for pre-upload inspection. ([#320])
#### Internationalization
- Arabic (`ar`) UI locale with RTL layout. ([#316])
- French (`fr`) UI locale. ([#376])
### Fixed
#### Agents, packaged runtime & Windows
- Include `nvm` / `fnm` / `mise` agent CLI bins in packaged PATH. ([#364])
- Detect Codex and Gemini CLIs from user toolchain paths. ([#346])
- Upgrade `better-sqlite3` for Node 24 Windows prebuilt support. ([#357])
- Lead Copilot spawn with `-p -` so prompt-via-stdin is consumed. ([#351])
- Drop literal `-` argv from Codex spawn so prompts deliver via stdin pipe alone. ([#342])
- Wrap `cmd.exe` shim invocations to survive `/s /c` quote stripping. ([#339])
#### Web UI & files
- Download as `.zip` now returns the actual project tree. ([#341])
- Keep Design Files view active after deleting a file. ([#329])
- Scroll workspace tabs in place instead of the window. ([#363])
- Treat inlined script content as literal in FileViewer. ([#343])
- Use response-order matching for bulk upload aggregation. ([#323])
- Serve `.jsx` / `.tsx` with JS-family MIME types so browser loaders accept them. ([#340])
- Fix macOS entry view drag region. ([#373])
#### Daemon & deployment
- Increase project upload limit from 20MB to 200MB. ([#319])
- Bundle and rewrite assets referenced from inline `<style>` blocks and `style=""` attributes. ([#314])
#### Internationalization
- Update locale coverage after main merge. ([#251])
- Add missing `designFiles.showMore` keys to `ar`, `hu`, `ko`, `pl`, and `tr`. ([#335])
### Documentation
- Japanese documentation update. ([#309])
- README contributors wall refresh. ([#360])
- Spelling fixes in CLI comments, spec, and video prompt docs. ([#300])
## [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.
@ -184,7 +249,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.2.0...HEAD
[Unreleased]: https://github.com/nexu-io/open-design/compare/open-design-v0.3.0...HEAD
[0.3.0]: https://github.com/nexu-io/open-design/releases/tag/open-design-v0.3.0
[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
@ -318,3 +384,40 @@ First public release of Open Design — a local-first, open-source alternative t
[#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
[#250]: https://github.com/nexu-io/open-design/pull/250
[#251]: https://github.com/nexu-io/open-design/pull/251
[#255]: https://github.com/nexu-io/open-design/pull/255
[#301]: https://github.com/nexu-io/open-design/pull/301
[#307]: https://github.com/nexu-io/open-design/pull/307
[#308]: https://github.com/nexu-io/open-design/pull/308
[#314]: https://github.com/nexu-io/open-design/pull/314
[#316]: https://github.com/nexu-io/open-design/pull/316
[#319]: https://github.com/nexu-io/open-design/pull/319
[#320]: https://github.com/nexu-io/open-design/pull/320
[#323]: https://github.com/nexu-io/open-design/pull/323
[#328]: https://github.com/nexu-io/open-design/pull/328
[#329]: https://github.com/nexu-io/open-design/pull/329
[#330]: https://github.com/nexu-io/open-design/pull/330
[#335]: https://github.com/nexu-io/open-design/pull/335
[#339]: https://github.com/nexu-io/open-design/pull/339
[#340]: https://github.com/nexu-io/open-design/pull/340
[#341]: https://github.com/nexu-io/open-design/pull/341
[#342]: https://github.com/nexu-io/open-design/pull/342
[#343]: https://github.com/nexu-io/open-design/pull/343
[#345]: https://github.com/nexu-io/open-design/pull/345
[#346]: https://github.com/nexu-io/open-design/pull/346
[#351]: https://github.com/nexu-io/open-design/pull/351
[#354]: https://github.com/nexu-io/open-design/pull/354
[#357]: https://github.com/nexu-io/open-design/pull/357
[#358]: https://github.com/nexu-io/open-design/pull/358
[#359]: https://github.com/nexu-io/open-design/pull/359
[#360]: https://github.com/nexu-io/open-design/pull/360
[#363]: https://github.com/nexu-io/open-design/pull/363
[#364]: https://github.com/nexu-io/open-design/pull/364
[#373]: https://github.com/nexu-io/open-design/pull/373
[#376]: https://github.com/nexu-io/open-design/pull/376
[#282]: https://github.com/nexu-io/open-design/pull/282
[#289]: https://github.com/nexu-io/open-design/pull/289
[#296]: https://github.com/nexu-io/open-design/pull/296
[#300]: https://github.com/nexu-io/open-design/pull/300
[#309]: https://github.com/nexu-io/open-design/pull/309

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/daemon",
"version": "0.2.0",
"version": "0.3.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.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/contracts": "workspace:0.3.0",
"@open-design/platform": "workspace:0.3.0",
"@open-design/sidecar": "workspace:0.3.0",
"@open-design/sidecar-proto": "workspace:0.3.0",
"better-sqlite3": "^12.9.0",
"express": "^4.19.2",
"jszip": "^3.10.1",

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/desktop",
"version": "0.2.0",
"version": "0.3.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.2.0",
"@open-design/sidecar": "workspace:0.2.0",
"@open-design/sidecar-proto": "workspace:0.2.0"
"@open-design/platform": "workspace:0.3.0",
"@open-design/sidecar": "workspace:0.3.0",
"@open-design/sidecar-proto": "workspace:0.3.0"
},
"devDependencies": {
"@types/node": "24.12.2",

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/packaged",
"version": "0.2.0",
"version": "0.3.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.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"
"@open-design/daemon": "workspace:0.3.0",
"@open-design/desktop": "workspace:0.3.0",
"@open-design/platform": "workspace:0.3.0",
"@open-design/sidecar": "workspace:0.3.0",
"@open-design/sidecar-proto": "workspace:0.3.0",
"@open-design/web": "workspace:0.3.0"
},
"devDependencies": {
"@types/node": "24.12.2",

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/web",
"version": "0.2.0",
"version": "0.3.0",
"private": true,
"type": "module",
"exports": {
@ -29,10 +29,10 @@
},
"dependencies": {
"@anthropic-ai/sdk": "^0.32.1",
"@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",
"@open-design/contracts": "workspace:0.3.0",
"@open-design/platform": "workspace:0.3.0",
"@open-design/sidecar": "workspace:0.3.0",
"@open-design/sidecar-proto": "workspace:0.3.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.2.0",
"version": "0.3.0",
"private": true,
"type": "module",
"scripts": {

View file

@ -1,6 +1,6 @@
{
"name": "open-design",
"version": "0.2.0",
"version": "0.3.0",
"private": true,
"packageManager": "pnpm@10.33.2",
"type": "module",
@ -25,8 +25,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.2.0",
"@open-design/tools-pack": "workspace:0.2.0"
"@open-design/tools-dev": "workspace:0.3.0",
"@open-design/tools-pack": "workspace:0.3.0"
},
"engines": {
"node": "~24",

View file

@ -1,6 +1,6 @@
{
"name": "@open-design/contracts",
"version": "0.2.0",
"version": "0.3.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.2.0",
"version": "0.3.0",
"private": true,
"type": "module",
"main": "./dist/index.mjs",

View file

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

View file

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

View file

@ -9,25 +9,25 @@ importers:
.:
devDependencies:
'@open-design/tools-dev':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:tools/dev
'@open-design/tools-pack':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:tools/pack
apps/daemon:
dependencies:
'@open-design/contracts':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/contracts
'@open-design/platform':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/platform
'@open-design/sidecar':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/sidecar
'@open-design/sidecar-proto':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/sidecar-proto
better-sqlite3:
specifier: ^12.9.0
@ -64,13 +64,13 @@ importers:
apps/desktop:
dependencies:
'@open-design/platform':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/platform
'@open-design/sidecar':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/sidecar
'@open-design/sidecar-proto':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/sidecar-proto
devDependencies:
'@types/node':
@ -86,22 +86,22 @@ importers:
apps/packaged:
dependencies:
'@open-design/daemon':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../daemon
'@open-design/desktop':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../desktop
'@open-design/platform':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/platform
'@open-design/sidecar':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/sidecar
'@open-design/sidecar-proto':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/sidecar-proto
'@open-design/web':
specifier: workspace:0.2.0
specifier: workspace:0.3.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.2.0
specifier: workspace:0.3.0
version: link:../../packages/contracts
'@open-design/platform':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/platform
'@open-design/sidecar':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/sidecar
'@open-design/sidecar-proto':
specifier: workspace:0.2.0
specifier: workspace:0.3.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.2.0
specifier: workspace:0.3.0
version: link:../../packages/platform
'@open-design/sidecar':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/sidecar
'@open-design/sidecar-proto':
specifier: workspace:0.2.0
specifier: workspace:0.3.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.2.0
specifier: workspace:0.3.0
version: link:../../packages/platform
'@open-design/sidecar':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/sidecar
'@open-design/sidecar-proto':
specifier: workspace:0.2.0
specifier: workspace:0.3.0
version: link:../../packages/sidecar-proto
cac:
specifier: 6.7.14

View file

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

View file

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