|
1 | | -# StackFerry v0.1.19 |
| 1 | +# StackFerry v0.1.20 |
2 | 2 |
|
3 | | -> 自 v0.1.18 发布以来的更新。 |
| 3 | +> 自 v0.1.19 发布以来的更新。 |
4 | 4 |
|
5 | 5 | ## 简体中文 |
6 | 6 |
|
7 | | -### 应用内公告系统 |
| 7 | +### Claude Code 与 Codex 运行环境 |
8 | 8 |
|
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 通过。 |
17 | 38 |
|
18 | 39 | ## English |
19 | 40 |
|
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. |
21 | 67 |
|
22 | | -### In-App Announcements |
| 68 | +### Interface and Quality |
23 | 69 |
|
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. |
0 commit comments