Skip to content

Commit 6a1ebc3

Browse files
committed
chore(release): prepare v0.1.20
Add runtime environment release notes and announcement content for Claude Code and Codex.
1 parent 1e080f6 commit 6a1ebc3

6 files changed

Lines changed: 115 additions & 27 deletions

File tree

RELEASE.md

Lines changed: 63 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,73 @@
1-
# StackFerry v0.1.19
1+
# StackFerry v0.1.20
22

3-
> 自 v0.1.18 发布以来的更新。
3+
> 自 v0.1.19 发布以来的更新。
44
55
## 简体中文
66

7-
### 应用内公告系统
7+
### Claude Code 与 Codex 运行环境
88

9-
- 新增独立公告中心,支持未读状态、全部已读、重要公告横幅和紧急公告确认弹窗。
10-
- 侧边栏新增全局公告入口;存在未读公告时显示红点,实际打开详情后才标记已读。
11-
- 公告支持简体中文、繁体中文、英文和日文内容,并按应用版本、系统平台、发布渠道和有效期过滤。
12-
- 客户端通过代理感知 HTTP 获取公告,支持 ETag、Last-Modified、30 分钟缓存、响应大小限制和原子写入。
13-
- 网络或远端清单不可用时,自动使用最后有效缓存或随应用内置的公告,不阻塞客户端启动。
14-
- 公告操作限制为 HTTPS 外链和现有更新页面导航,远端内容不能执行脚本或任意 Tauri 命令。
15-
- 窄屏公告页改为列表与详情主从切换,宽屏保持左右双栏,并基于工作区实际宽度响应。
16-
- 新增 JSON Schema、静态清单校验脚本和 GitHub Pages 自动发布工作流。
9+
- 新增独立运行环境,可为同一 Provider 创建多套 Claude Code 或 Codex 环境,并分别维护名称、最近项目和启动入口。
10+
- Claude Code 使用独立 `CLAUDE_CONFIG_DIR`,Codex 使用独立 `CODEX_HOME``CODEX_SQLITE_HOME`,配置、历史记录和本地状态不再混用。
11+
- 运行环境 API Key 保存到系统凭据管理器,数据库仅记录引用;创建、换 Key、删除和 Provider 更新均提供失败补偿与回滚。
12+
- Provider 菜单区分“直接启动”和“管理运行环境”,运行环境管理器支持创建、改名、换 Key、更新最近项目、启动和删除。
13+
- Provider 更新会重新生成关联运行环境的配置,删除仍有关联运行环境的 Provider 时会阻止操作,避免留下失效环境。
14+
15+
### 会话、代理与凭据隔离
16+
17+
- Claude Code 与 Codex 会话支持按默认环境、全部环境或指定运行环境扫描,并显示运行环境身份。
18+
- 会话读取、分页、搜索、删除、批量删除和恢复均携带运行环境维度,避免不同环境中相同会话 ID 发生冲突。
19+
- 代理通过受校验的实例身份将会话固定到指定 Provider 和 API Key;缺少或冲突的凭据会严格失败,不回退到全局 Key 或其他 Provider。
20+
- 实例绑定请求仍保留普通故障路由的既有语义,但凭据错误不会污染 Provider 健康状态。
21+
- HTTP 与 Pi WebSocket 转发会移除 StackFerry 私有身份头,防止内部实例标识泄漏到上游。
22+
- 运行环境启动会检查 Claude Code 与 Codex CLI 是否支持自定义请求头;版本过低时会给出升级提示,而不是静默失去身份隔离。
23+
24+
### 配置可靠性与 MCP
25+
26+
- 配置和设置写入改为原子持久化,并为跨数据库与 live 配置的更新增加快照、补偿和回滚。
27+
- 拆分 Claude、Codex 和代理的 live 配置适配器,缩小共享热点并明确各应用的配置所有权。
28+
- 新增 Claude 与 Codex 配置黄金夹具,覆盖未知字段保留、内部字段清理和无效 TOML 处理。
29+
- Profile 应用流程拆分为计划与执行阶段,可继续处理部分失败并返回更准确的警告。
30+
- Codex 导入会忽略临时托管的运行时 MCP Server,并清理历史错误分配,避免把 StackFerry 运行时条目写回用户配置。
31+
32+
### 界面与质量保障
33+
34+
- 集中维护应用能力注册表,侧边栏只为当前应用显示实际支持的 Provider、MCP、Skills 和 Prompts。
35+
- 运行环境和会话范围界面已完成简体中文、繁体中文、英文和日文翻译。
36+
- 新增运行环境生命周期、实例会话范围、代理凭据约束和配置回滚测试。
37+
- 修复能力过滤后的导航测试、前端格式问题和严格 Rust Clippy 警告,保持跨平台 CI 通过。
1738

1839
## English
1940

20-
> Changes since the v0.1.18 release.
41+
> Changes since the v0.1.19 release.
42+
43+
### Claude Code and Codex Runtime Environments
44+
45+
- Added isolated runtime environments so one provider can have multiple Claude Code or Codex environments with independent names, recent projects, and launch actions.
46+
- Isolated Claude Code through `CLAUDE_CONFIG_DIR` and Codex through `CODEX_HOME` and `CODEX_SQLITE_HOME`, separating configuration, history, and local state.
47+
- Stored runtime API keys in the operating system credential manager while keeping only references in SQLite; creation, rotation, deletion, and provider updates include compensation and rollback.
48+
- Split provider actions into direct launch and runtime-environment management, with controls for creation, rename, key rotation, recent projects, launch, and deletion.
49+
- Regenerated associated runtime configuration after provider updates and prevented deletion of providers that still own runtime environments.
50+
51+
### Sessions, Proxy, and Credential Isolation
52+
53+
- Added default, all-environment, and selected-environment scopes for Claude Code and Codex sessions, including runtime identity in session metadata.
54+
- Made session reads, pagination, search, deletion, bulk deletion, and resume environment-aware so identical session IDs cannot collide across environments.
55+
- Bound proxy sessions to a validated runtime identity and its exact provider credential; missing or conflicting credentials now fail closed without falling back to a global key or another provider.
56+
- Preserved existing failover behavior for ordinary routing while keeping instance credential failures neutral to provider health.
57+
- Stripped StackFerry private identity headers from HTTP and Pi WebSocket upstream requests.
58+
- Added minimum-version checks for Claude Code and Codex custom-header support so unsupported CLI versions produce an upgrade prompt instead of silently losing isolation.
59+
60+
### Configuration Reliability and MCP
61+
62+
- Moved settings and configuration writes to atomic persistence and added snapshots, compensation, and rollback around database and live-config projections.
63+
- Split Claude, Codex, and proxy live adapters to reduce shared hotspots and clarify configuration ownership.
64+
- Added Claude and Codex golden fixtures covering unknown-field preservation, internal-field removal, and invalid TOML handling.
65+
- Separated profile apply planning from execution so partial failures can continue with more accurate warnings.
66+
- Excluded transient managed Codex runtime MCP servers during import and cleaned historical assignments to prevent StackFerry runtime entries from being written back to user configuration.
2167

22-
### In-App Announcements
68+
### Interface and Quality
2369

24-
- Added a dedicated announcement center with unread state, mark-all-read, important banners, and critical acknowledgement dialogs.
25-
- Added a global sidebar entry with an unread dot that clears only after the announcement detail is opened.
26-
- Added localized announcement content for Simplified Chinese, Traditional Chinese, English, and Japanese, filtered by app version, platform, channel, and expiry.
27-
- Added proxy-aware fetching with ETag, Last-Modified, a 30-minute cache, response size limits, and atomic persistence.
28-
- Added offline fallback to the last valid cache or a bundled announcement without blocking application startup.
29-
- Restricted remote actions to HTTPS links and navigation to the existing updater page; announcements cannot execute scripts or arbitrary Tauri commands.
30-
- Rebuilt narrow layouts as list-to-detail navigation while retaining a side-by-side workspace on wider layouts.
31-
- Added a JSON Schema, manifest validation scripts, and a GitHub Pages publishing workflow.
70+
- Centralized the application capability registry so the sidebar exposes only the Provider, MCP, Skills, and Prompts features supported by the active application.
71+
- Localized runtime-environment and session-scope interfaces in Simplified Chinese, Traditional Chinese, English, and Japanese.
72+
- Added coverage for runtime lifecycle operations, instance-scoped sessions, proxy credential constraints, and configuration rollback.
73+
- Fixed capability-aware navigation tests, frontend formatting, and strict Rust Clippy warnings to keep cross-platform CI green.

announcements/announcements.json

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,61 @@
11
{
22
"schemaVersion": 1,
3-
"generatedAt": "2026-08-12T14:00:00Z",
3+
"generatedAt": "2026-08-19T01:42:00Z",
44
"announcements": [
5+
{
6+
"id": "2026-08-stackferry-0-1-20",
7+
"category": "release",
8+
"severity": "important",
9+
"publishedAt": "2026-08-19T01:42:00Z",
10+
"expiresAt": null,
11+
"minAppVersion": null,
12+
"maxAppVersion": null,
13+
"platforms": ["windows", "macos", "linux"],
14+
"channels": ["stable"],
15+
"relatedVersion": "0.1.20",
16+
"locales": {
17+
"zh": {
18+
"title": "StackFerry v0.1.20 已发布",
19+
"summary": "新增 Claude Code 与 Codex 独立运行环境,完整隔离 API Key、配置和会话。",
20+
"body": "本次更新为 Claude Code 与 Codex 新增独立运行环境。你可以在同一个 Provider 下创建多套环境,并分别管理名称、API Key、最近项目、配置目录和启动入口。\n\n运行环境的 API Key 保存在系统凭据管理器中。Claude Code 与 Codex 会分别使用独立配置和会话目录;代理会将实例会话严格绑定到指定 Provider 和凭据,缺少凭据时不会回退到全局 Key 或其他 Provider。\n\n会话管理器现在可以查看默认环境、全部环境或指定运行环境中的会话,并支持在正确的环境中读取、搜索、删除和恢复会话。本次更新还增强了配置原子写入、失败回滚、MCP 隔离和应用能力导航。"
21+
},
22+
"en": {
23+
"title": "StackFerry v0.1.20 is available",
24+
"summary": "Adds isolated Claude Code and Codex runtime environments with separate API keys, configuration, and sessions.",
25+
"body": "This release adds isolated runtime environments for Claude Code and Codex. You can create multiple environments under one provider and manage their names, API keys, recent projects, configuration directories, and launch actions independently.\n\nRuntime API keys are stored in the operating system credential manager. Claude Code and Codex use separate configuration and session homes, while proxy sessions are strictly bound to the selected provider and credential without falling back to a global key or another provider.\n\nThe session manager can now browse the default environment, all environments, or one selected environment and read, search, delete, or resume sessions in the correct context. This release also improves atomic configuration writes, rollback behavior, MCP isolation, and capability-aware navigation."
26+
},
27+
"zh-TW": {
28+
"title": "StackFerry v0.1.20 已發佈",
29+
"summary": "新增 Claude Code 與 Codex 獨立執行環境,完整隔離 API Key、設定和工作階段。",
30+
"body": "本次更新為 Claude Code 與 Codex 新增獨立執行環境。你可以在同一個 Provider 下建立多套環境,並分別管理名稱、API Key、最近專案、設定目錄和啟動入口。\n\n執行環境的 API Key 會儲存在系統憑證管理器中。Claude Code 與 Codex 會分別使用獨立的設定和工作階段目錄;代理會將執行個體工作階段嚴格綁定到指定 Provider 和憑證,缺少憑證時不會回退到全域 Key 或其他 Provider。\n\n工作階段管理器現在可以檢視預設環境、全部環境或指定執行環境中的工作階段,並在正確環境中讀取、搜尋、刪除和恢復工作階段。本次更新也強化了設定原子寫入、失敗回復、MCP 隔離和應用程式能力導覽。"
31+
},
32+
"ja": {
33+
"title": "StackFerry v0.1.20 をリリースしました",
34+
"summary": "Claude Code と Codex の独立した実行環境を追加し、API キー、設定、セッションを分離しました。",
35+
"body": "この更新では、Claude Code と Codex 向けの独立した実行環境を追加しました。1 つの Provider に複数の環境を作成し、名前、API キー、最近のプロジェクト、設定ディレクトリ、起動操作を個別に管理できます。\n\n実行環境の API キーは OS の資格情報マネージャーに保存されます。Claude Code と Codex は個別の設定およびセッションディレクトリを使用し、プロキシセッションは選択した Provider と資格情報に厳密に固定されます。グローバルキーや別の Provider へフォールバックすることはありません。\n\nセッションマネージャーでは、既定環境、すべての環境、または選択した実行環境を切り替え、正しい環境でセッションの読み込み、検索、削除、再開ができます。設定のアトミック書き込み、失敗時のロールバック、MCP 分離、機能対応ナビゲーションも改善しました。"
36+
}
37+
},
38+
"actions": [
39+
{
40+
"type": "external",
41+
"url": "https://github.com/Ninthless/StackFerry/releases/tag/v0.1.20",
42+
"label": {
43+
"zh": "查看发行说明",
44+
"en": "View release notes",
45+
"zh-TW": "查看發行說明",
46+
"ja": "リリースノートを見る"
47+
}
48+
}
49+
]
50+
},
551
{
652
"id": "2026-08-stackferry-0-1-19",
753
"category": "release",
854
"severity": "important",
955
"publishedAt": "2026-08-12T14:00:00Z",
1056
"expiresAt": null,
1157
"minAppVersion": null,
12-
"maxAppVersion": null,
58+
"maxAppVersion": "0.1.19",
1359
"platforms": ["windows", "macos", "linux"],
1460
"channels": ["stable"],
1561
"relatedVersion": "0.1.19",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "stackferry",
3-
"version": "0.1.19",
3+
"version": "0.1.20",
44
"description": "Provider and configuration manager for AI coding tools",
55
"type": "module",
66
"scripts": {

src-tauri/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src-tauri/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "stackferry"
3-
version = "0.1.19"
3+
version = "0.1.20"
44
description = "All-in-One Assistant for Claude Code, Codex & Gemini CLI"
55
authors = ["Ninthless", "CC Switch contributors"]
66
license = "MIT"

src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schema.tauri.app/config/2",
33
"productName": "StackFerry",
4-
"version": "0.1.19",
4+
"version": "0.1.20",
55
"identifier": "com.stackferry.desktop",
66
"build": {
77
"frontendDist": "../dist",

0 commit comments

Comments
 (0)