Skip to content

写作:纯所见即所得内核重构 - #265

Merged
taekchef merged 15 commits into
mainfrom
codex/wysiwyg-writing-engine
Aug 20, 2026
Merged

写作:纯所见即所得内核重构#265
taekchef merged 15 commits into
mainfrom
codex/wysiwyg-writing-engine

Conversation

@taekchef

@taekchef taekchef commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

目标

完成纯所见即所得写作内核:Markdown 继续作为唯一落盘格式,普通输入不再全文序列化或全文桥接,并补齐可靠保存、公式、结构化对象、写作交互和按内容加载。

当前状态

  • 工作包 A–I 已实现并收口,当前仍为草稿。
  • CI 两个任务均通过,已生成并下载可追溯候选包;现在交用户做最终体验。
  • 不合并、不发布。

实际改动

  • Bridge V2 成为笔记唯一写入协议;普通输入只发 dirty,全文只由显式 snapshot 请求产生。
  • 新增编辑会话、正式保存复用、轻量 checkpoint、三方冲突与 WebContent 重建恢复。
  • 复用现有公式节点实现原地 NodeView;金额不误判,错误公式保留源码。
  • WikiLink、高亮、行内脚注、Embed、Callout 成为可往返的语义节点。
  • 补齐 Slash / 行首+、唯一选区浮条、表格、图片与新笔记提示等可见写作交互。
  • 笔记选区固定使用格式浮条;按钮命令不会被上一条异步清理误删,并复用现有按压/激活反馈;正文基础字号调为 17px。
  • 公式、图片、代码、Mermaid 与目录更新改为局部工作;普通正文输入不触发无关重算。
  • 编辑入口与只读入口分离;KaTeX、Mermaid、Prism 使用本地 IIFE 按内容首次加载。
  • 删除源码编辑器、显示模式全链、Bridge V1 全文回传、旧公式插件/DOM/CSS 和死代码;收口提交净删 759 行。

关键证据

  • 10 份固定夹具,共 695,216 字节。
  • 普通输入:完整序列化 0、全文 bridge 0;7 次显式 snapshot 严格为 7/7。
  • 纯文本加载 0 个重库;公式、Mermaid、代码夹具各只加载自己的运行时。
  • 旧单包 4,646,656B;新编辑入口 587,068B、只读入口 512,503B。
  • 100k 纯文本 ready 约 410ms;普通正文输入的 KaTeX/Mermaid/图片扫描/代码 tokenize 均为 0。

共享文件占用

  • Sources/WeiBei/Stores/WorkspaceStore.swift
  • Sources/WeiBei/App/WeiBeiApp.swift
  • Sources/WeiBei/Views/ContentView.swift
  • script/

负责人:本草稿任务。代码实现已完成;CI、候选包和用户最终体验结束后释放。Package.swift 最终未修改。

已验证

  • npm run typecheck:editor
  • npm run test:editor(17/17)
  • npm run build:editor
  • node script/build_editor.mjs --check
  • swift build --disable-sandbox --target WeiBei(macOS 15.4 SDK)
  • swift run --disable-sandbox WeiBeiSelfCheck
  • WeiBeiWebEditorCheck 真实 WKWebView 默认全链
  • WeiBeiWebEditorCheck --benchmark 十组真实 WKWebView 基准
  • git diff --check
  • 最新分支头必须通过完整编译、应用自检、编辑器自检、数据安全测试、资源一致性和候选构建;以合并请求最新检查为准。
  • 最终候选包的版本、来源提交、签名和 SHA-256 记录在最新验收评论中,避免仅更新正文再次触发整套候选构建。

未做

  • 尚未进行用户最终体验。
  • 不合并、不发布。

@taekchef

Copy link
Copy Markdown
Collaborator Author

最终候选证据(等待用户体验)

  • 最终分支头:1e9419866c4bbcb2a56f506d7f19fbfbbdef0665
  • CI:32304081292,快速编译与核心自检、完整候选构建与追溯均通过。
  • 候选包:魏碑 1.0.0(1179),来源合并预览提交 05d01d0af6656e109dce9352423b30a1426ce5af,源码干净,严格签名校验通过。
  • 候选压缩包 SHA-256:d4146028a2b525e0d709899cccad1fc36234e77eda41ab8f94fc955f383ecd4a
  • 本轮定向验收:笔记选区始终显示格式浮条;粗体/高亮等按钮单击生效、再次单击撤销且有按压/激活反馈;正文基础字号为 17px。

仍保持草稿,不合并、不发布,等待用户最终体验。

@taekchef

Copy link
Copy Markdown
Collaborator Author

最终候选补充(用户体验回归)

  • 修复空行在切换笔记后消失:独立空段落不再被换行规范化吞掉。
  • fx 可双向切换:文字 → 行内公式 → 原文字。
  • 写作字体改为全局显示设置:清爽书写 / 书卷宋体 / 魏碑文楷,不写入 Markdown。
  • Slash 菜单可在普通段落的光标位置触发;行内命令原位插入,块命令在光标处分段,前后正文和图片均保留。

验证:TypeScript 类型检查、17 项编辑器规则检查、资源一致性、真实 WKWebView 全链路、应用自检、课程目录与数据安全检查、完整候选构建、来源与签名检查均通过。轻量真实 App 冒烟已确认候选包正常启动并加载笔记写作界面,未修改用户现有笔记。

候选:魏碑 1.0.0(构建 1182)
PR 头提交:190c59217ef261676a1cc97559ea44e1a415cf4b
候选内测试合并提交:1eaf69e63567d8334a0e221e4ea33e455cf830a7(包含 190c592
ZIP SHA-256:0c02d77c57b9a06241262072f628920f39ed59936508e243a361c39c12f2bb30
下载:https://github.com/weibei-app/weibei/actions/runs/32313493946/artifacts/9387523042

保持草稿,不合并,等用户最终验收。

@taekchef

Copy link
Copy Markdown
Collaborator Author

用户验收跟进:写作过程现在可直接从笔记编辑区右上角切换字体,不必进入设置。

字体名称统一使用正式家族名:SF Pro / PingFang SC、Songti SC、WeiBeiStele。复用现有全局写作字体偏好,不向 Markdown 写入字体标记。

验证:完整 Swift App 编译通过;WeiBeiSelfCheck 通过;CI 两阶段全绿;真实候选包构建 1183 已打开并确认字体菜单与三项名称;旧候选构建已清理。候选包:https://github.com/weibei-app/weibei/actions/runs/32316165734/artifacts/9388392266

按约定继续保持草稿,不合并,等待用户最终体验。

@taekchef

Copy link
Copy Markdown
Collaborator Author

验收候选已更新:字体入口已从写作区右上角移除,复用现有整篇字体设置并放入选中文字后的长条工具栏;菜单保留正式字体名称 SF Pro / PingFang SC、Songti SC、WeiBeiStele。右键截图属于 WebKit/macOS 系统菜单(其中 iClip 是本机服务项),本轮未粗暴屏蔽,以免一起丢失复制/粘贴。完整编译与 CI 已通过;构建 1184 已打开,旧 1183 候选包已删除。验收包:https://github.com/weibei-app/weibei/actions/runs/32317654403/artifacts/9388917117 。PR 继续保持草稿,等待最终体验验收。

@taekchef

Copy link
Copy Markdown
Collaborator Author

字体纠偏已落在 184a931:选区长条里的字体只修改被选中文字;Slash 菜单选择字体后只影响接下来的输入;设置页的整篇字体选项与旧桥接已删除。沿用现有选区命令与 Slash 链,只新增受控的局部字体标记,没有新依赖或新测试文件。验证:编辑器类型检查、17 项既有 TS 检查、资源一致性、完整应用编译、应用自检、真实 WKWebView 默认检查、10 组基准均通过;CI 32319974497 两个任务全绿。真实候选包为 1.0.0(1185),来源 PR 临时合并提交 3bc6886(父提交含 184a931),签名通过,已打开做用户验收。合并请求继续保持草稿,等待最终验收,不合并。

@taekchef
taekchef marked this pull request as ready for review August 20, 2026 01:39
@taekchef
taekchef merged commit 6d229a4 into main Aug 20, 2026
2 checks passed
@taekchef
taekchef deleted the codex/wysiwyg-writing-engine branch August 20, 2026 01:39
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