1 - 11 月第一周:深度评审与界面重设计
这一周做了三件事。它们都还停留在本地开发构建,没有发布。
深度设计评审的修复
11 月 5 日对整个项目做了一轮深度设计评审,列出了 9 个最高优先级(P0)和 8 个次高优先级(P1)问题。本周修完了其中 8 个 P0 和全部 P1,以及各子系统的大部分中低优先级问题;复核修复本身时又发现二十多处问题,也逐项修复并补了回归测试。源码也是在这一轮第一次进入 Git,按主题分批提交。
几处读者能感受到的变化:
- 开发签名的内容只在声明过的构建里被接受。 开发构建在资料库标题旁显示“非正式发布”徽标;正式构建拒绝开发密钥签名的内容。
- 签名密钥可以限定用途和到期时间。 一把密钥可以只用于资料包、出厂索引或版本目录之一,到期后不能再用于获取新内容,但已安装的内容不会因此失效。
- 本地 API 先验证服务端再发送密钥。 如果 Crib 崩溃后端口被别的程序占用,客户端不会把访问密钥发给它。
- 个人资料库打不开时只停用个人功能。 阅读和搜索照常工作,并提供从备份恢复或移走后新建的选项,默认什么都不删。
- 版本目录更宽容。 某个非默认版本的条目校验失败时,只丢弃这一条并提示,不再整份目录作废。
剩下的一个 P0 是生产密钥:机制已经就位,但生产密钥、两级密钥和撤销流程还没有建立,所以经过公证的正式版暂时还不能携带可下载的内容。
界面与文案重设计
界面换了一套设计规范,参考 Cloudflare Kumo 的设计语言和 Fluid Functionalism 的动效原则,落在 macOS 原生控件上:
- 无色相的灰阶加一种墨蓝强调色,只用于链接、当前项和主要操作;
- 图标全部改为 SF Symbols 线性图标;
- 标题用 semibold,不用粗体;平面之间用细线分隔,不叠阴影;
- 悬停变色不做动画,展开和弹出用短弹簧动画,开启“减弱动态效果”时全部取消。
阅读器的样式也改用同一套色板,顺带修好了深色模式下一部分加粗字发灰的问题。
源码中约 1,700 条中文字符串逐条按新的语气和术语表重写或确认,最长的提示从约 130 字缩到约 60 字。原则是只在必要时说话:正常状态不提示,提示只说发生了什么、可以怎么做。比如版本目录里的 active 状态译为“常规”,不写“受支持”,因为它只表示出现在普通列表里,不是上游的维护承诺。
本站的截图就来自重设计后的开发构建。
资料包改用 .crib 扩展名
资料包原本暂用 .pgdocpack 扩展名,现在新发布一律写 .crib,例如 pg/18.6-r4.crib、pgwiki/r5.crib。已经签发的 .pgdocpack 路径写在签名目录里,作为签名身份继续有效,应用和发布工具都接受;其他扩展名一律拒绝。包内的格式和内容哈希都没有变。见资料包格式。
还没做完的
- 真实桌面窗口、工具栏、实体键盘与输入法的目测验收(本周只有离屏快照和隐藏窗口测试);
- A01–A10 验收项绑定到最终候选构建;
- 生产密钥、Developer ID 签名与公证;
- 应用代码许可证和内容再分发许可;
- 应用图标、
.crib文件类型注册(双击导入)、应用自动更新、界面本地化。
完整清单见发布状态。
2 - 从 PGDash 改名为 Crib
Crib 开发前期叫 PGDash。2026 年 10 月 28 日决定正式改名为 Crib,10 月 31 日在本地完成迁移并验证。如果你没用过 PGDash 的开发构建,这篇可以跳过。
改了什么
| 项目 | 原来 | 现在 |
|---|---|---|
| 应用 | PGDash.app | Crib.app |
| Bundle ID | com.pgsty.pgdash.* | com.pgsty.crib |
| 用户目录 | ~/Library/Application Support/PGDash | ~/Library/Application Support/Crib |
| 深链接 | pgdash:// | crib:// |
| MCP 程序与配置键 | PGDashMCP、pgdash | CribMCP、crib |
| 环境变量 | PGDASH_* | CRIB_* |
| 导出文件名 | PGDash-* | Crib-* |
| 签名版本目录 | pgdash-signed-catalog-1 | crib-signed-catalog-1(v3) |
没有改的
已经签名的内容不能改名,否则签名和哈希就对不上了。下面这些标识保持原样,它们只是格式的名字,不代表产品名:
- 资料包清单里的切分规则
pgdash-han2-v1和格式版本; - 资料包内的章节键、锚点和内容哈希;
- 阅读器读取资料包用的内部地址
pgdoc://; - 2026-11-06 之前签发的
.pgdocpack文件路径。
旧的 v1、v2 版本目录照样能验证和读取;从旧目录到 v3 目录,签名修订号继续递增,不因改名归零,防止有人用旧目录做回滚。
旧资料怎样迁移
Crib 第一次启动时,如果发现旧的 PGDash 用户目录、而 Crib 目录还不存在,就做一次迁移:
- 把旧目录中的所有文件复制到一个临时目录,包括不认识的文件和全部会话;
- 个人资料库用 SQLite 在线备份复制,正在写入的 WAL 数据也能完整带上;
- 核对文件清单、哈希和数据库完整性,全部通过才原子地启用新目录;
- 记录一份迁移回执,重复启动不会再用旧数据覆盖新数据。
旧目录始终只读,不修改也不删除。迁移失败时,Crib 不往新目录写任何东西,下次启动再试;也可以选择跳过迁移。旧的 API 访问密钥不会被带过来,需要在 Crib 里重新启用本地 API。
细节见用户数据与迁移。
兼容旧的写法
- PGDash 时期复制的
pgdash://链接仍能打开;新复制的链接一律是crib://。 PGDASH_*环境变量仍会读取,同名的CRIB_*优先。- 旧的片段导出文件按内容格式识别,不看文件名,可以直接导入。
- MCP 客户端里的旧配置不会被自动改写,请在 Crib 的“设置 → 集成”重新复制一份。