Skip to content

Commit 38fb7ec

Browse files
docs: refresh v0.2 subscription copy (#323)
## Summary <!-- One-paragraph description of the change. Focus on the *why*. --> ## Type of change - [ ] Bug fix - [ ] New feature - [ ] Refactor (no behavior change) - [ ] Documentation - [ ] Build / CI / tooling - [ ] Breaking change ## Linked issue <!-- Use "Closes #123" only when this PR fully resolves the issue. Use "Refs #123" for partial work or follow-up slices. --> ## Checklist - [ ] I checked the linked issue / relevant context before starting - [ ] `pnpm lint && pnpm typecheck && pnpm test` passes locally - [ ] Added/updated tests for the change - [ ] Added a changeset (`pnpm changeset`) if user-visible - [ ] Updated docs if behavior changed ## Dependency additions (if any) <!-- For each new prod dependency: name, install size, license, why-not-alternatives. Delete this section if no new deps. --> ## Screenshots / recordings (UI changes) <!-- Drop them here. Required for any visual change. --> Co-authored-by: Sun-sunshine06 <Sun-sunshine06@users.noreply.github.com>
1 parent 89f71ad commit 38fb7ec

29 files changed

Lines changed: 152 additions & 119 deletions
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@open-codesign/desktop": patch
3+
"@open-codesign/providers": patch
4+
"@open-codesign/i18n": patch
5+
---
6+
7+
Refresh v0.2 user-facing copy for ChatGPT subscription sign-in and current provider support.

README.md

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050

5151
Turn a prompt into a polished prototype, slide deck, or marketing asset, locally, with the model you already use.
5252

53-
**Open CoDesign is the open-source Claude Design alternative** — built for people who want the speed of AI-native design tools without subscription lock-in, cloud-only workflows, or being forced onto a single provider. An MIT-licensed desktop app, local-first from day one, with BYOK for any model (Claude, GPT, Gemini, DeepSeek, Kimi, GLM, Ollama, or any OpenAI-compatible endpoint). One-click import of your existing Claude Code or Codex API key gets you running in under 90 seconds.
53+
**Open CoDesign is the open-source Claude Design alternative** — built for people who want the speed of AI-native design tools without subscription lock-in, cloud-only workflows, or being forced onto a single provider. An MIT-licensed desktop app, local-first from day one, with BYOK for any model (Claude, GPT, Gemini, DeepSeek, Kimi, GLM, Ollama, or any OpenAI-compatible endpoint) plus direct ChatGPT Plus / Pro / Team subscription sign-in for Codex models. One-click import of existing Claude Code or Codex provider configs, or one-click ChatGPT sign-in, gets you running in under 90 seconds.
5454

5555
---
5656

@@ -85,7 +85,7 @@ Open source, desktop-native, and built for people who do not want their design w
8585
| Version history | ✅ Local sessions + workspace files ||||
8686
| Data privacy | ✅ On-device app state | ❌ Cloud-processed | ❌ Cloud | ❌ Cloud |
8787
| Editable export | ✅ HTML, PDF, PPTX, ZIP, Markdown | ⚠️ Limited | ⚠️ Limited | ⚠️ Limited |
88-
| Price | ✅ Free app, token cost only | 💳 Subscription | 💳 Subscription | 💳 Subscription |
88+
| Price | ✅ Free app, provider/subscription cost only | 💳 Subscription | 💳 Subscription | 💳 Subscription |
8989

9090
---
9191

@@ -128,7 +128,7 @@ Open source, desktop-native, and built for people who do not want their design w
128128

129129
**Time to first artifact:** about 3 minutes
130130

131-
**Requires:** one API key or local Ollama
131+
**Requires:** one API key, ChatGPT subscription sign-in, or local Ollama
132132

133133
**Runs on:** macOS 12+ (Monterey or later), Windows 10+, Linux (glibc ≥ 2.31)
134134

@@ -184,16 +184,15 @@ After each stable tag push, CI syncs SHAs back into `packaging/` and publishes d
184184
>
185185
> Want a verified build? Compile from source — see [CONTRIBUTING.md](./CONTRIBUTING.md).
186186
187-
### 2. Add your API key
187+
### 2. Add a provider
188188
189-
On first launch, Open CoDesign opens the Settings page. Paste any supported provider key:
189+
On first launch, Open CoDesign opens the Settings page. Pick the path that matches how you already use models:
190190
191-
- Anthropic (`sk-ant-…`)
192-
- OpenAI (`sk-…`)
193-
- Google Gemini
194-
- Any OpenAI-compatible relay (OpenRouter, SiliconFlow, local Ollama)
191+
- **ChatGPT subscription** — sign in with ChatGPT to use Codex models without pasting an API key.
192+
- **API key** — paste Anthropic (`sk-ant-...`), OpenAI (`sk-...`), Google Gemini, OpenRouter, SiliconFlow, DeepSeek, or another supported provider key.
193+
- **Local / keyless** — use Ollama or an IP-allowlisted OpenAI-compatible gateway.
195194
196-
Credentials stay in `~/.config/open-codesign/config.toml` (file mode 0600, same convention as Claude Code, Codex, and `gh` CLI). Nothing leaves your machine unless your chosen model provider requires it.
195+
Credentials stay in `~/.config/open-codesign/config.toml` and the ChatGPT OAuth token store under the app config directory. Nothing leaves your machine unless your chosen model route requires it.
197196
198197
### 3. Type your first prompt
199198
@@ -203,7 +202,7 @@ Pick one of **fifteen built-in demos** — landing page, dashboard, pitch slide,
203202
204203
## Bring your stack
205204
206-
Already using Claude Code or Codex? Your providers, models, and API keys import in one click, with no copy-paste and no need to re-enter settings:
205+
Already using Claude Code or Codex? API-key provider configs import in one click, with no copy-paste and no need to re-enter settings. If you use Codex through ChatGPT subscription login, sign in directly from Settings:
207206
208207
![Import from Claude Code or Codex in one click](https://raw.githubusercontent.com/OpenCoworkAI/open-codesign/main/website/public/demos/claude-code-import.gif)
209208
@@ -223,14 +222,14 @@ Add a `SKILL.md` to any project to teach the model your own taste.
223222
224223
### Models and providers
225224
- **Unified provider model** — Anthropic, OpenAI, Gemini, DeepSeek, OpenRouter, SiliconFlow, local Ollama, or any OpenAI-compatible relay; keyless (IP-allowlisted) proxies supported
226-
- **One-click import** from Claude Code and Codex configs — bring your existing providers, models, and keys in a single click
225+
- **One-click import and sign-in** — bring Claude Code / Codex API-key provider configs across, or sign in with ChatGPT subscription for Codex models
227226
- **Dynamic model picker** — every provider exposes its real model catalogue, not a hardcoded shortlist
228227
229228
### Generation and editing
230229
- **Prompt → HTML or JSX/React component** prototype, rendered in a sandboxed iframe (vendored React 18 + Babel on-device)
231230
- **Fifteen built-in demos + twelve design skill modules** — ready-to-edit starting points for common design briefs
232231
- **Live agent panel** — watch tool calls stream in real time as the model edits files
233-
- **AI image generation** — opt-in bitmap assets for heroes, product shots, backgrounds, and illustrations
232+
- **AI image generation** — opt-in bitmap assets for heroes, product shots, backgrounds, and illustrations via OpenAI, OpenRouter, or signed-in ChatGPT subscription
234233
- **AI-generated sliders** — the model emits the parameters worth tweaking (color, spacing, font)
235234
- **Comment mode** — click any element in the preview to drop a pin, leave a note, and let the model rewrite only that region
236235
- **Generation cancellation** — stop mid-stream without losing prior turns
@@ -303,7 +302,7 @@ Have a different priority in mind? [Open an issue](https://github.com/OpenCowork
303302
304303
- Electron + React 19 + Vite 6 + Tailwind v4
305304
- `@mariozechner/pi-ai` and `pi-coding-agent` (model/provider and agent-loop primitives)
306-
- `better-sqlite3`, `electron-builder`
305+
- `electron-builder`
307306
308307
## Reporting issues
309308

README.zh-CN.md

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848

4949
Open CoDesign 可以把一句自然语言提示词,直接变成一个完成度很高的 HTML 原型、幻灯片或者营销素材,而且整个过程都可以在你的电脑上完成。
5050

51-
它适合这样一类人:想要 AI 设计工具的速度,但不想被订阅制绑住,不想把工作流全丢到云端,也不想只能用某一家模型。你可以把它理解成一个更开放、更本地化的 Claude Design 替代方案:开源、桌面原生、支持自带 API Key,也支持多模型切换
51+
它适合这样一类人:想要 AI 设计工具的速度,但不想被订阅制绑住,不想把工作流全丢到云端,也不想只能用某一家模型。你可以把它理解成一个更开放、更本地化的 Claude Design 替代方案:开源、桌面原生、支持自带 API Key、ChatGPT 订阅登录和多模型切换
5252

5353
---
5454

@@ -83,7 +83,7 @@ Open CoDesign 可以把一句自然语言提示词,直接变成一个完成度
8383
| 版本历史 | ✅ 本地 session + 工作区文件 ||||
8484
| 数据隐私 | ✅ 应用状态保留在本地 | ❌ 云端处理 | ❌ 云端 | ❌ 云端 |
8585
| 可编辑导出 | ✅ HTML、PDF、PPTX、ZIP、Markdown | ⚠️ 有限制 | ⚠️ 有限制 | ⚠️ 有限制 |
86-
| 价格 | ✅ 应用免费,仅承担模型 token 成本 | 💳 订阅制 | 💳 订阅制 | 💳 订阅制 |
86+
| 价格 | ✅ 应用免费,仅承担 provider 或订阅成本 | 💳 订阅制 | 💳 订阅制 | 💳 订阅制 |
8787

8888
---
8989

@@ -126,7 +126,7 @@ Open CoDesign 可以把一句自然语言提示词,直接变成一个完成度
126126

127127
**第一次生成一个结果,大概只要:** 3 分钟
128128

129-
**你需要准备:** 一个 API Key,或者本地 Ollama
129+
**你需要准备:** 一个 API Key、ChatGPT 订阅登录,或者本地 Ollama
130130

131131
**支持平台:** macOS、Windows、Linux
132132

@@ -182,16 +182,15 @@ scoop install opencoworkai/open-codesign
182182
>
183183
> 想要可验证构建可以自己从源码编译,见 [CONTRIBUTING.md](./CONTRIBUTING.md)。
184184
185-
### 2. 添加 API Key
185+
### 2. 添加 provider
186186
187-
首次启动时,Open CoDesign 会直接打开设置页。你可以粘贴任意支持的 provider key
187+
首次启动时,Open CoDesign 会直接打开设置页。按你已有的模型入口选择即可
188188
189-
- Anthropic(`sk-ant-…`
190-
- OpenAI(`sk-…`
191-
- Google Gemini
192-
- 任意 OpenAI 兼容中继,比如 OpenRouter、SiliconFlow、本地 Ollama
189+
- **ChatGPT 订阅登录**:直接登录 ChatGPT,使用 Codex 模型,无需粘贴 API Key。
190+
- **API Key**:粘贴 Anthropic(`sk-ant-...`)、OpenAI(`sk-...`)、Google Gemini、OpenRouter、SiliconFlow、DeepSeek 或其他支持的 provider key。
191+
- **本地 / Keyless**:使用 Ollama,或使用 IP 白名单的 OpenAI 兼容网关。
193192
194-
凭证会保存在 `~/.config/open-codesign/config.toml`(文件权限 0600,与 Claude Code、Codex、`gh` CLI 的做法一致)。除非你选择的模型提供商本身需要联网,请求内容不会额外离开你的机器。
193+
凭证会保存在 `~/.config/open-codesign/config.toml`,ChatGPT OAuth token 会保存在应用配置目录下的 token store 中。除非你选择的模型入口本身需要联网,请求内容不会额外离开你的机器。
195194
196195
### 3. 输入第一条提示词
197196
@@ -201,7 +200,7 @@ scoop install opencoworkai/open-codesign
201200
202201
## 可以直接接你现有的开发环境
203202
204-
如果你已经在用 Claude Code 或 Codex,现有的 provider、model 和 API key 都可以一键导入,不用复制粘贴,也不用重新配一遍
203+
如果你已经在用 Claude Code 或 Codex,API key 形式的 provider、model 和 key 都可以一键导入;如果你用的是 Codex 的 ChatGPT 订阅登录,可以直接在设置里登录 ChatGPT
205204
206205
![一键导入 Claude Code 或 Codex 配置](https://raw.githubusercontent.com/OpenCoworkAI/open-codesign/main/website/public/demos/claude-code-import.gif)
207206
@@ -221,14 +220,14 @@ scoop install opencoworkai/open-codesign
221220
222221
### 模型与提供商
223222
- **统一的 provider 抽象**:支持 Anthropic、OpenAI、Gemini、DeepSeek、OpenRouter、SiliconFlow、本地 Ollama,以及任意 OpenAI-compatible relay;同时支持无 key 的 IP 白名单代理
224-
- **一键导入 Claude Code Codex 配置**:现有的 provider、model 和 key 可以直接带进来
223+
- **一键导入和登录**Claude Code / Codex 的 API key provider 配置可以直接带进来,也可以用 ChatGPT 订阅登录使用 Codex 模型
225224
- **动态模型选择器**:每个 provider 都会展示真实模型列表,而不是一小撮写死的选项
226225
227226
### 生成与编辑
228227
- **提示词 → HTML 或 JSX/React 组件原型**,渲染在隔离的 sandbox iframe 中(本地 vendored React 18 + Babel)
229228
- **十五个内置 demo + 十二个设计技能模块**:给常见设计需求准备好的起点
230229
- **实时 Agent 面板**:模型编辑文件时,工具调用会实时流式展示
231-
- **AI 图像生成**:可选启用, hero、产品图、背景和插画生成位图素材
230+
- **AI 图像生成**:可选启用,可通过 OpenAI、OpenRouter 或已登录的 ChatGPT 订阅为 hero、产品图、背景和插画生成位图素材
232231
- **AI 自动生成调节参数**:模型会主动暴露值得调的参数,比如颜色、间距和字体
233232
- **Comment mode**:点击预览中的任意元素,留下批注,模型只重写对应局部
234233
- **支持中途取消生成**:停止后也不会丢失之前的上下文和结果
@@ -293,7 +292,7 @@ v0.2 已经把 Open CoDesign 从一次性生成器升级成一个本地设计 ag
293292
294293
- Electron + React 19 + Vite 6 + Tailwind v4
295294
- `@mariozechner/pi-ai``pi-coding-agent`(模型 / provider 与 agent loop 基础能力)
296-
- `better-sqlite3``electron-builder`
295+
- `electron-builder`
297296
298297
## 社群
299298

apps/desktop/src/main/onboarding-ipc.test.ts

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
* Tests for settings IPC channel versioning.
33
*
44
* These tests verify that registerOnboardingIpc exposes only the versioned
5-
* v1 settings channels. v0.2 has not shipped yet, so renderer/main IPC drift
6-
* should fail loudly instead of being hidden by unversioned compatibility
5+
* v1 settings channels. v0.2 is the shipped IPC surface, so renderer/main IPC
6+
* drift should fail loudly instead of being hidden by unversioned compatibility
77
* handlers.
88
*/
99

@@ -778,6 +778,32 @@ describe('getApiKeyForProvider — API key retrieval', () => {
778778
});
779779

780780
describe('config:v1:import-codex-config empty env handling', () => {
781+
it('guides Codex ChatGPT subscription users to the built-in ChatGPT sign-in path', async () => {
782+
await registerIpcForTest();
783+
const { readCodexConfig, codexAuthPath } = await import('./imports/codex-config');
784+
const { mkdir, writeFile } = await import('node:fs/promises');
785+
const { tmpdir } = await import('node:os');
786+
const { join } = await import('node:path');
787+
vi.mocked(readCodexConfig).mockResolvedValueOnce({
788+
providers: [],
789+
activeProvider: null,
790+
activeModel: null,
791+
envKeyMap: {},
792+
apiKeyMap: {},
793+
warnings: [],
794+
});
795+
const dir = join(tmpdir(), `codesign-codex-chatgpt-${Date.now()}-${Math.random()}`);
796+
await mkdir(dir, { recursive: true });
797+
const path = join(dir, 'auth.json');
798+
await writeFile(path, JSON.stringify({ auth_mode: 'chatgpt' }), 'utf8');
799+
vi.mocked(codexAuthPath).mockReturnValueOnce(path);
800+
801+
const handler = handlers.get('config:v1:import-codex-config');
802+
await expect(handler?.({} as unknown)).rejects.toThrow(
803+
/Open CoDesign now supports ChatGPT subscription directly/,
804+
);
805+
});
806+
781807
it('rejects imports that only found an empty env credential', async () => {
782808
const { readCodexConfig } = await import('./imports/codex-config');
783809
const { encryptSecret } = await import('./keychain');

apps/desktop/src/main/onboarding/external-imports.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export async function runImportCodex(imported: CodexImport): Promise<OnboardingS
6464
if (imported.providers.length === 0) {
6565
throw new CodesignError(
6666
(await detectChatgptSubscription())
67-
? 'Detected Codex ChatGPT subscription login (auth_mode: chatgpt). It cannot be imported as an API-key provider yet — the "Sign in with ChatGPT subscription" feature is still being polished and will ship in the next release. For now, configure [model_providers] in ~/.codex/config.toml manually, or switch to API-key mode in Codex. / 检测到 Codex 使用 ChatGPT 订阅登录,无法自动导入为 API key provider。"用 ChatGPT 订阅登录"功能仍在打磨中,下个版本开放 —— 目前请在 ~/.codex/config.toml 里手动配置 [model_providers],或改用 API key 登录 Codex。'
67+
? 'Detected Codex ChatGPT subscription login (auth_mode: chatgpt). Open CoDesign now supports ChatGPT subscription directly, but Codex config import only reads API-key [model_providers] from ~/.codex/config.toml. Open Settings > Models and use "Sign in with ChatGPT subscription" to add the ChatGPT provider. / 检测到 Codex 使用 ChatGPT 订阅登录。Open CoDesign 现在已支持直接使用 ChatGPT 订阅,但“从 Codex 导入”只读取 ~/.codex/config.toml 中的 API key [model_providers]。请到 设置 > Models 点击“用 ChatGPT 订阅登录”添加 ChatGPT 订阅 provider。'
6868
: 'No importable API provider found in Codex config (~/.codex/config.toml is missing a [model_providers] section). / Codex 配置里没有可导入的 API provider(~/.codex/config.toml 里缺少 [model_providers] 段)。',
6969
ERROR_CODES.CONFIG_MISSING,
7070
);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "open-codesign",
33
"version": "0.2.0",
44
"private": true,
5-
"description": "Open-source AI design tool — prompt to interactive prototype, slide deck, and marketing assets. Multi-model, BYOK, runs on your laptop.",
5+
"description": "Open-source AI design tool — prompt to interactive prototype, slide deck, and marketing assets. Multi-model, BYOK or ChatGPT login, runs on your laptop.",
66
"license": "MIT",
77
"homepage": "https://github.com/OpenCoworkAI/open-codesign",
88
"repository": {

packages/i18n/src/locales/en.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"comingSoon": "Coming soon",
1717
"loading": "Loading…",
1818
"preAlpha": "pre-alpha",
19-
"tagline": "BYOK · local-first · multi-model",
19+
"tagline": "BYOK · ChatGPT login · local-first",
2020
"done": "Done.",
2121
"applied": "Applied.",
2222
"working": "Working"
@@ -268,7 +268,7 @@
268268
},
269269
"imageGen": {
270270
"tabTitle": "Image generation",
271-
"tabHint": "Let the design agent call an image model (e.g. gpt-image-2) for heroes, posters, and background bitmaps. Credentials stay local.",
271+
"tabHint": "Let the design agent call an image model through OpenAI, OpenRouter, or ChatGPT subscription for heroes, posters, and background bitmaps. Credentials stay local.",
272272
"title": "Image generation assist",
273273
"hint": "When enabled, the agent can invoke generate_image_asset during a run.",
274274
"enabled": "Enable image generation assist",
@@ -628,7 +628,7 @@
628628
"429": "Rate limited. Wait a moment and try again.",
629629
"network": "Cannot reach base URL. Check domain/port/network.",
630630
"unsupported": "Unrecognized key prefix. Supported: sk-ant- (Anthropic), sk- (OpenAI), sk-or- (OpenRouter).",
631-
"notSupportedProvider": "{{provider}} is not supported in v0.1. Use Anthropic, OpenAI, or OpenRouter.",
631+
"notSupportedProvider": "{{provider}} is not supported by the first-run provider shortcut. Use Anthropic, OpenAI, OpenRouter, Ollama, ChatGPT subscription sign-in, or add a custom provider in Settings.",
632632
"rendererDisconnected": "Renderer is not connected to the main process.",
633633
"detectIpc": "Provider detection failed (main process unreachable): {{message}}. Restart the app and try again.",
634634
"detectNetwork": "Provider detection failed (network error): {{message}}. Check your connection and try again."

packages/i18n/src/locales/es.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"comingSoon": "Próximamente",
1717
"loading": "Cargando…",
1818
"preAlpha": "pre-alpha",
19-
"tagline": "BYOK · local-first · multi-modelo",
19+
"tagline": "BYOK · inicio con ChatGPT · local-first",
2020
"done": "Listo.",
2121
"applied": "Aplicado.",
2222
"working": "Trabajando"
@@ -239,7 +239,7 @@
239239
},
240240
"imageGen": {
241241
"tabTitle": "Generación de imágenes",
242-
"tabHint": "Permite que el agente de diseño llame a un modelo de imagen (ej. gpt-image-2) para encabezados, pósteres y mapas de bits de fondo. Las credenciales permanecen locales.",
242+
"tabHint": "Permite que el agente de diseño llame a un modelo de imagen mediante OpenAI, OpenRouter o una suscripción de ChatGPT para encabezados, pósteres y mapas de bits de fondo. Las credenciales permanecen locales.",
243243
"title": "Asistente de generación de imágenes",
244244
"hint": "Cuando está habilitado, el agente puede invocar generate_image_asset durante una ejecución.",
245245
"enabled": "Habilitar asistente de generación de imágenes",
@@ -573,7 +573,7 @@
573573
"429": "Límite de tasa excedido. Espera un momento e intenta de nuevo.",
574574
"network": "No se puede alcanzar la URL base. Revisa dominio/puerto/red.",
575575
"unsupported": "Prefijo de clave no reconocido. Soportados: sk-ant- (Anthropic), sk- (OpenAI), sk-or- (OpenRouter).",
576-
"notSupportedProvider": "{{provider}} no es compatible en la v0.1. Usa Anthropic, OpenAI o OpenRouter.",
576+
"notSupportedProvider": "{{provider}} no es compatible con el acceso rápido del primer inicio. Usa Anthropic, OpenAI, OpenRouter, Ollama, inicia sesión con una suscripción de ChatGPT o añade un proveedor personalizado en Ajustes.",
577577
"rendererDisconnected": "El renderizador no está conectado al proceso principal.",
578578
"detectIpc": "Error al detectar proveedor (proceso principal inalcanzable): {{message}}. Reinicia la app e intenta de nuevo.",
579579
"detectNetwork": "Error al detectar proveedor (error de red): {{message}}. Revisa tu conexión e intenta de nuevo."

0 commit comments

Comments
 (0)