Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ resolver = "3"

[workspace.package]
edition = "2024"
rust-version = "1.85"
rust-version = "1.88"

[workspace.dependencies]
axum = "0.8"
Expand Down
2 changes: 1 addition & 1 deletion apps/desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"@tanstack/react-virtual": "3.13.12",
"@tauri-apps/api": "2.11.1",
"@tauri-apps/plugin-dialog": "2.7.1",
"diff": "8.0.2",
"diff": "8.0.3",
"lucide-react": "1.24.0",
"react": "19.2.7",
"react-dom": "19.2.7"
Expand Down
100 changes: 39 additions & 61 deletions apps/desktop/src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion apps/desktop/src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ version = "0.1.0"
description = "CodeIsCheap local AI request inspector"
authors = ["CodeIsCheap contributors"]
edition = "2024"
rust-version = "1.85"
rust-version = "1.88"

[lib]
name = "codeischeap_desktop_lib"
Expand Down
5 changes: 3 additions & 2 deletions docs/progress.html
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ <h2 id="streams">4. 工作流进度</h2>
<tr><td>Desktop / Frontend</td><td>APP-001~006</td><td>96%</td><td><span class="status active">In progress</span></td><td>Codex / TBD</td><td>完成屏幕阅读器、首次捕获耗时与真实运行验收</td></tr>
<tr><td>Capture / Network</td><td>CAP-001~007</td><td>88%</td><td><span class="status active">In progress</span></td><td>Codex / TBD</td><td>完成 macOS helper 真实故障矩阵;生产签名随发布凭据补齐</td></tr>
<tr><td>Prompt / Adapters</td><td>PAR-001~007</td><td>100%</td><td><span class="status done">Done</span></td><td>Codex / TBD</td><td>保持价格目录与 provider usage 映射可追溯</td></tr>
<tr><td>Data / Security</td><td>DAT-001~002、SEC-001~004</td><td>94%</td><td><span class="status active">In progress</span></td><td>Codex / TBD</td><td>继续 WASI 权限、正式签名制品与独立安全评审</td></tr>
<tr><td>Data / Security</td><td>DAT-001~002、SEC-001~004</td><td>95%</td><td><span class="status active">In progress</span></td><td>Codex / TBD</td><td>继续 WASI 权限、正式签名制品与独立安全评审</td></tr>
<tr><td>Test / Release</td><td>TST-001~004、REL-001~003</td><td>72%</td><td><span class="status active">In progress</span></td><td>Codex / TBD</td><td>继续更新回滚演练、屏幕阅读器与支持处理流程</td></tr>
</tbody></table></div>

Expand Down Expand Up @@ -90,7 +90,7 @@ <h2 id="current-sprint">5. 当前迭代:S5 / S6</h2>
<tr><td class="task-id">SEC-001</td><td>范围策略和凭据 scrubber</td><td><span class="status done">Done</span></td><td>100%</td><td>Codex / Security Reviewer TBD</td><td>2026-07-18</td><td>请求与响应 header/JSON body 双层脱敏;canary 在 DB、WAL、诊断日志、临时文件和支持包中零命中</td></tr>
<tr><td class="task-id">SEC-002</td><td>脱敏与导出</td><td><span class="status done">Done</span></td><td>100%</td><td>Codex / Security Reviewer TBD</td><td>2026-07-18</td><td>单请求、筛选批量及支持包均强制扫描、完整预览、SHA-256 防陈旧和只新建文件;版本化 corpus 以 36 个字段名、17 类文本 secret 及近似反例覆盖 Rust/Python/Web</td></tr>
<tr><td class="task-id">SEC-003</td><td>本地 IPC 与插件隔离</td><td><span class="status active">In progress</span></td><td>97%</td><td>Codex / Security Reviewer TBD</td><td>2026-08-25</td><td>IPC 0.6 在 Windows 使用当前用户与 SYSTEM protected DACL、拒绝远端连接的随机 named pipe,创建后回读 owner/ACE 并逐连接核对 sidecar PID;macOS/Linux 使用当前 eUID `0700` 私有目录内 `0600` Unix socket,并逐连接核对 peer eUID/PID;统一使用 256-bit token、常量时间比较、1 KiB 认证帧、2 秒截止和 ACK,真实传输、超时恢复与旧 0.5 bundle 拒绝均有测试;仅插件启用后的 WASI 最小权限待完成</td></tr>
<tr><td class="task-id">SEC-004</td><td>更新与供应链</td><td><span class="status active">In progress</span></td><td>88%</td><td>Codex / Release Owner TBD</td><td>2026-08-25</td><td>CI Action 固定完整 commit SHA;PR 执行高危依赖审查;Dependabot 与仓库策略覆盖依赖和所有权。Tauri updater 仅接受编译时可信公钥与 HTTPS GitHub Release metadata,安装前重新核对版本、恢复系统代理并建立 SQLCipher 恢复快照;正式公钥、平台签名和发布制品待完成</td></tr>
<tr><td class="task-id">SEC-004</td><td>更新与供应链</td><td><span class="status active">In progress</span></td><td>92%</td><td>Codex / Release Owner TBD</td><td>2026-08-25</td><td>CI Action 固定完整 commit SHA;PR 执行高危依赖审查;Dependabot 与仓库策略覆盖依赖和所有权;diff、time 与 serde_with 已升级到首个安全版本,Rust MSRV 同步至 1.88。Tauri updater 仅接受编译时可信公钥与 HTTPS GitHub Release metadata,安装前重新核对版本、恢复系统代理并建立 SQLCipher 恢复快照;正式公钥、平台签名和发布制品待完成</td></tr>
<tr><td class="task-id">PAR-001</td><td>Prompt IR v0.1 与首批 fixtures</td><td><span class="status done">Done</span></td><td>100%</td><td>Codex / TBD</td><td>2026-07-14</td><td>OpenAI/Anthropic fixtures、校验与 schema 完成</td></tr>
<tr><td class="task-id">PAR-002</td><td>解析器注册表与检测链</td><td><span class="status done">Done</span></td><td>100%</td><td>Codex / TBD</td><td>2026-07-15</td><td>置信度排序、错误/panic 隔离、IR 校验、partial issues 与 Raw fallback 完成</td></tr>
<tr><td class="task-id">PAR-003</td><td>OpenAI-compatible 适配器</td><td><span class="status done">Done</span></td><td>100%</td><td>Codex / TBD</td><td>2026-07-15</td><td>Responses、Chat、Completions、多模态与 tools golden fixtures 通过</td></tr>
Expand Down Expand Up @@ -235,6 +235,7 @@ <h2 id="decisions">11. 决策与变更记录</h2>
<tr><td>2026-07-21</td><td>Security / IPC</td><td>SEC-003 Windows named pipe DACL 激活</td><td>IPC 升级至 0.6;Windows 桌面使用 96-bit 随机名、拒绝远端客户端的 named pipe,protected DACL 仅含当前用户与 SYSTEM,创建后从内核回读 owner、ACE、继承标记和权限;每条连接核对 sidecar PID,每个连接独占 instance 且提前创建下一实例,超时不复用 overlapped handle;Rust、Tauri 与 Python raw Win32 pipe 测试覆盖 DACL、PID、帧、ACK、拒绝与恢复,旧 0.5 bundle 启动前拒绝</td><td>Codex</td></tr>
<tr><td>2026-07-21</td><td>Security / Supply chain</td><td>ARC-001 完成,SEC-004 仓库门禁落地</td><td>CODEOWNERS 覆盖安全边界;CI Action 固定完整 SHA,并通过依赖审查拒绝新增高危漏洞;Dependabot 覆盖四类依赖生态;确定性脚本与单测校验 npm、pip、Cargo、锁文件和仓库策略</td><td>Codex</td></tr>
<tr><td>2026-07-21</td><td>Release / Updater</td><td>REL-001 / SEC-004 签名更新入口完成首段</td><td>Tauri updater 使用编译时可信公钥和固定 HTTPS GitHub Release endpoint;安装前重新检查版本、恢复系统代理、切回 Gateway,并建立可验证恢复的 SQLCipher 备份和版本化 journal;设置页显示可用版本、说明和下载进度,未配置公钥时失败关闭</td><td>Codex</td></tr>
<tr><td>2026-07-21</td><td>Security / Dependencies</td><td>SEC-004 兼容漏洞修复</td><td>npm diff 升至 8.0.3,两份 Cargo lock 的 time 升至 0.3.47,桌面 serde_with 升至 3.21.0,并将声明 MSRV 提升到依赖要求的 Rust 1.88;glib 告警来自最新版 Tauri 的 Linux GTK3 链,仓库及 Tauri/Wry 未调用受影响 VariantStrIter,单独按 not-used 证据处置</td><td>Codex</td></tr>
<tr><td colspan="5">后续范围、架构、日期或资源变化均在此追加,并链接对应 ADR/会议结论。</td></tr>
</tbody></table></div>

Expand Down
2 changes: 1 addition & 1 deletion docs/threat-model.html
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ <h2 id="threats">威胁台账</h2>
<tr><td class="task-id">TM-04</td><td>数据库文件被离线读取</td><td>SQLCipher、WAL、迁移、加密备份、错误密钥、DB/WAL canary 与跨平台 OS 凭据库 CI</td><td>锁定状态与 key 丢失恢复体验</td></tr>
<tr><td class="task-id">TM-05</td><td>本地 CA 私钥泄露或残留信任</td><td>每设备 CA、跨平台私钥权限检查、指纹 UI、Windows CurrentUser 与 macOS User 幂等卸载已实现;macOS 信任拒绝会清理本次新增证书,桌面保持未信任并允许重试</td><td>两平台交互式验收;发布前独立安全评审</td></tr>
<tr><td class="task-id">TM-06</td><td>崩溃后系统代理残留</td><td>Windows/macOS 强杀恢复实验;Windows 桌面已接入私有 journal、watchdog、启动恢复和活 owner 校验;sidecar 单独退出会按代际恢复代理并回退 Gateway;端口占用者无法通过独立 256-bit readiness token 校验,冲突启动会清理进程树且不会切换系统代理;PAC 双重失败由 watchdog 恢复;macOS 使用静态逐参数 quote 的授权命令启动受校验可执行文件,helper 控制 socket 分别校验用户 owner 与 root peer,owner 断连、helper 崩溃和下次启动均进入独立恢复链</td><td>macOS 授权桌面 helper 的真实管理员交互与强杀故障矩阵</td></tr>
<tr><td class="task-id">TM-07</td><td>依赖、sidecar 或更新包被替换</td><td>CI Action 固定完整 SHA;直接依赖、锁文件、artifact integrity、CODEOWNERS 与 Dependabot 覆盖由策略脚本校验;PR 拒绝新增高危漏洞;sidecar manifest、SBOM 与启动前 hash 校验已接入。Tauri updater 仅接受编译时可信公钥签名的 HTTPS release,安装前重新核对版本、恢复代理并生成加密数据库恢复快照</td><td>正式公钥托管、平台签名、迁移失败回滚和发布演练;发布硬门槛</td></tr>
<tr><td class="task-id">TM-07</td><td>依赖、sidecar 或更新包被替换</td><td>CI Action 固定完整 SHA;直接依赖、锁文件、artifact integrity、CODEOWNERS 与 Dependabot 覆盖由策略脚本校验;PR 拒绝新增高危漏洞,diff、time 与 serde_with 已升级到安全版本;sidecar manifest、SBOM 与启动前 hash 校验已接入。Tauri updater 仅接受编译时可信公钥签名的 HTTPS release,安装前重新核对版本、恢复代理并生成加密数据库恢复快照</td><td>正式公钥托管、平台签名、迁移失败回滚和发布演练;持续跟踪 Tauri Linux GTK3 链的 glib 上游修复;发布硬门槛</td></tr>
<tr><td class="task-id">TM-08</td><td>复制或导出泄露秘密</td><td>单请求、最多 200 条批量导出及支持包均强制扫描与完整预览;版本化 corpus 覆盖 36 个敏感字段名、17 类文本 secret 及近似反例,Rust/Python/Web 一致性回归通过;稳定占位符、策略版本、SHA-256 防陈旧和只新建文件已实现</td><td>独立安全评审与 corpus 持续维护</td></tr>
<tr><td class="task-id">TM-09</td><td>恶意 Prompt 触发 UI 注入</td><td>React 默认转义、Tauri CSP</td><td>Raw 仅纯文本、URL 不自动执行、XSS fixture</td></tr>
<tr><td class="task-id">TM-10</td><td>超大/高速流量耗尽内存或磁盘</td><td>认证帧 1 KiB、Envelope 4 MiB、sidecar 有界队列、IPC 连接截止时间、存储配额与磁盘压力暂停</td><td>完善丢弃/降级指标与高压故障注入</td></tr>
Expand Down
Loading
Loading