Repository navigation
corps 0.8.0
corps 0.8.0 —— Web/Server 版本
桌面与移动壳不随本版发布,其域名/版本问题见 docs/design/PRODUCT-DESIGN-2026Q4.md P0。
本版本收口
依赖大版本换代(ADR-014)
- Prisma 7.10.0 +
@prisma/adapter-pg:Rust 引擎退役;连接池参数显式化为connection_limit=10 / pool_timeout=10,withDbRetry增加 30s 总预算兜底 - Next.js 16.4、TypeScript 6
租户安全
- 写权限收敛到
getWorkspaceContext()+lib/write-policy.ts的单一 choke point(default-deny)。门禁实测 280 个写 handler 中 252 个进墙,其余 28 个逐条登记 reason 与复核截止日,由check_write_access_registry.py断言"要么进墙要么登记" db/rls-activate.sql实测 81 张表 ENABLE + FORCE + 策略db/schema.sql快照追平 73 张表缺口
协同层
- 按 ADR-017 摘除
server/collab/与 3 个零挂载组件 - ADR-016 版本回滚契约落地
国际化
- 新增「硬编码用户可见中文」门禁(P0-6)
- 清偿 UI 50 处 + 事务邮件 73 处
- 事务邮件按收件人语言渲染
可访问性
- 存量偿还 7 批,当前基线 233 条,门禁只允许收缩
其他
- 移除不属于本项目的
corps.com占位域名:桌面/移动壳改 fail-loud +REPLACE_ME.invalid哨兵值,Tauri updater 改构建期注入 - 顺带清除
tauri.conf.json里的plugins.updater.active——它是死键(Tauri v2 已删除该配置),留着只会让人误以为"更新已关闭"
从 v0.7.2 升级:必须读这一段
本版本连带 4 条数据库迁移,Prisma 会在部署时自动执行:
| 迁移 | 性质 |
|---|---|
20261001000000_relax_account_issuer |
放宽约束(accounts.issuer 改可空) |
20261001000001_add_share_access_logs_workspace_id |
加列 + 回填 |
20261003000000_widen_share_password |
加宽列(至 255) |
20261007000000_dedup_task_conversations |
去重并删除重复会话 + 建唯一索引 |
关于最后一条(会删数据)
- 它按
PARTITION BY task_id去重,保留组内created_at最早者。因为task_id是 tasks 的外键,同一task_id不可能跨工作区,不存在跨租户误删 task_id IS NULL的独立 IM 会话不参与;子表先搬后删(三条子表的 FK 均为ON DELETE CASCADE)- 不可逆,没有配套备份表。生产执行前请先备份:
pg_dump -t conversations -t messages -t conversation_members -t chat_presences - 幂等,可安全重跑;
CREATE UNIQUE INDEX非 CONCURRENTLY,大表建议低峰期执行
执行角色要求
必须以表属主 / 具备 BYPASSRLS 的连接跑(生产即 compose 里的 postgres 超级用户)。
若以 corps_app(NOBYPASSRLS)执行,FORCE RLS 会让迁移内的 DML 全部命中 0 行——该迁移会因 CREATE UNIQUE INDEX 报 must be owner of table conversations 而失败,不会静默跳过。但纯 DML 的迁移在这种角色下会"0 行生效却判成功",这是本项目所有数据迁移共同的坑,部署脚本请务必核对连接身份。
已知限制
- Mobile Build 的 android/ios 两个 job 会失败,直到配置仓库变量
CORPS_WEB_URL。这是刻意的 fail-loud:项目当前没有固定域名,移动壳若打包出去会加载到不属于本项目的站点。配好该变量即恢复;桌面端可另配CORPS_UPDATER_ENDPOINT/CORPS_UPDATER_PUBKEY(需成对) - 定时 Smoke 仍红,因为
SMOKE_TARGET_URL未配置——即当前没有线上监控。这是诚实信号而非故障
桌面产物(本版附带)
tag 触发时 Tauri Build 在三个平台各构建了一份安装包,已附在下方:
| 平台 | 文件 | 格式 |
|---|---|---|
| macOS (Apple Silicon) | Corps_0.6.0_aarch64.dmg |
dmg |
| Windows x64 | Corps_0.6.0_x64_en-US.msi |
MSI |
| Windows x64 | Corps_0.6.0_x64-setup.exe |
NSIS 安装器 |
| Linux x64 | Corps_0.6.0_amd64.deb |
deb |
| Linux x64 | Corps_0.6.0_amd64.AppImage |
AppImage |
下载前请注意三点:
- 文件名里的版本是 0.6.0,这是桌面壳自己的版本号。桌面与移动壳的版本线和 Web/Server 不同步,本版 0.8.0 的版本号只指 Web/Server(见上方「Web/Server 版本」说明)
- 这些包未做代码签名。macOS 首次打开需在「系统设置 → 隐私与安全性」放行,Windows 需在 SmartScreen 提示里选择「仍要运行」
- 移动端产物不在此 release:Android APK 与 iOS IPA 由 Mobile Build 流程产出,不随本 release 分发