Skip to content

迁移到 Calcit 0.30.1 候选:具名聊天协议与严格门禁 - #50

Merged
tiye merged 2 commits into
mainfrom
migrate/impatiens031
Oct 20, 2026
Merged

tiye merged 2 commits into
mainfrom
migrate/impatiens031

Conversation

@tiye

@tiye tiye commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

用户需要注意的影响

  • 前后端协议同时迁到具名模型,必须一起升级并刷新旧页面。后端仍是旧版本时不要合并部署;请先准备新 deps、匹配的 std/WSS 原生库及 calcit --entry server。原工作流只复制服务文件,不会安装依赖或重启服务。本 PR 不触发生产部署。
  • 兼容读取合法旧 Map 存档;首次新保存会写入具名 Db。升级前须独立备份,回滚旧程序需恢复升级前存档。未知字段和错误类型会阻止启动,不静默丢弃数据后覆盖原文件。
  • 自动登录仍读 impatiens,新提交也统一在此键写入合法 Cirru EDN;旧逻辑写入的共享 workflow-storage 不读不删。没有有效 impatiens 存档时需重新登录。保留原用户名单输入框及空密码合同,不额外增加登录功能。
  • 聊天室用户字典和当前用户投影统一使用不含密码字段的 UserView。
  • COS 仅前端资源,原 CDN 前缀、web 路径及 /servers/paste-sharing/ 后端路径不变。0.30.1 Release 当前无 CLI 资产,因此精确配对已发布的 CLI/procs 0.30.1-alpha.5;不把候选说成正式 0.30.1。

改动

  • 为数据库、账户、会话、聊天消息、路由、Store、Op、页面状态和 Site 建立真实类型;实际 ReelState 和 Ref,不用断言伪造泛型关系。
  • 在存档及网络边界检查和重建具名 Option/Struct。浏览器保留独立 raw wire ref:先 checked patch,再完整解码 Store,成功后同时提交,防止匿名反序列化值破坏具名字段合同。
  • 迁移 Respo typed DOM/render/watch/state API 和真实 EventHandler 合同。Luxon 通过单个 Number→String inline JS FFI 调用真实静态方法,保留原日期格式,不把 callable class 强转成普通 host object。移除旧原型、read-field 兜底、废弃 utility/Host 类型、Lilac/Memof 和 URL parser 依赖;Dayjs 是发布版 UI 的真实依赖,保留。
  • 原生服务采用当前 WSS 事件与发送结果、任务取消、accepted-only cache 和背压重试;先加载数据库再监听,正常退出保存。release 模式忽略 Reel 调试控制;dispatch 不打印凭据。
  • CI 严格解析正式模块 tag、精确工具链、全部应用 namespace、附带测试及共享 native/JS 回放。只启用 COS Action 内置 verify,没有项目专用上传验证脚本、concurrently、生成代码或旧 Snapshot。

验证与边界

  • 完整 strict passed,safe suggestions=0、review fixes=0、diagnostics=[];browser 72/72、native 72/72。
  • 原生附带测试 8/8;同一组 5 个数据/协议测试 native 5/5、JS 5/5,零排除。其余 3 个领域测试未声称 JS 等价。
  • Node 24/Yarn 4.18.0 不可变安装、规范格式和 Vite 8.2.2 构建通过;JS 653.27 kB/gzip 139.21 kB,保留既有 >500 kB 提示。实际生成的 Luxon 适配器与真实包的当天/历史日期格式一致。
  • 两个真实 WebSocket 客户端注册/登录/用户字典/Unicode 消息/清空/路由/退出通过,帧数 7/4、接收错误 0。SIGINT exit 0 保存,sessions=0;冷启动登录与 release 调试控制隔离通过。
  • 合成损坏存档在监听前 exit 1($.messages.value.time expected number),文件 SHA256 不变;未触碰生产或主 checkout 数据。
  • 真实访客页正常,控制台无 error/warn。浏览器合成账户注册及原 localStorage 保存验收仍等待授权,未点击提交。
  • 源码 unsafe=0、deprecated calls=0、可达 dynamic method=0;异构 UI、wire、旧路由和事件边界仍有 57 个 unresolved 动态槽,不声称全库零 Dynamic,不放宽预算。
  • 本地未运行 Caps;最终精确提交 6d89ebf7aa6d59f6641237b88238de177cb877a6 的 CI 39314202607 全部通过:全新 strict 解析并验证 16 个模块,CLI/procs 精确同为 alpha.5,全部类型门禁、原生与共享回放、实际日期适配器、构建成功;COS 内置 verify 确认 HTML 719 bytes、CSS 66 bytes、JS 653273 bytes。web/server rsync 均跳过,PR 未合并或部署生产。

上游反馈评估

首轮精确提交 CI 虽通过,额外真实日期适配器调用发现 callable Luxon DateTime 被 js-cast 拒绝;已按已有 Calcit #2153 支持边界改为小型 inline JS FFI,不放宽 runtime 检查、不加 compiler fix。构建步骤直接回放真实生成适配器的当天/历史日期格式,无新增测试脚本文件。复用已报告的 Recollect #98 checked patch 边界方案。分支通过不代表生态默认分支已清零,不能据此退役全生态迁移规则。

@tiye
tiye merged commit dec28df into main Oct 20, 2026
1 check passed
@tiye
tiye deleted the migrate/impatiens031 branch October 20, 2026 05:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant