大家好,之前我在 V2EX 发过几次 Markra ,最近一次是 1.0.0:
https://www.v2ex.com/t/1224360
距离 1.0.0 发布还不到一个月,Markra 2.0.0 又来了。
这个版本号看起来跳得有点快,但并不是为了追求“大版本”。真正的原因是一个一直没有稳定解决的中文输入法问题,最后迫使我把整个编辑器内核重写了一遍。
问题的典型复现是:
这是**测试内容**为格式文本的编辑。
在所见即所得模式下,把光标放到粗体文字边界,再用中文输入法继续输入,文字有时会落到错误的位置或继承错误的格式。
这个问题在普通浏览器、macOS 和 Windows 的系统 WebView 中表现不完全一致。围绕光标位置、格式状态和 IME composition 做过几轮修复后,我发现它并不是一个简单的 Markdown 解析 Bug ,而是 Milkdown / ProseMirror 的富文本文档、DOM 选区和系统输入法之间的边界兼容问题。
Issue 在这里:
https://github.com/markrahq/markra/issues/419
继续在应用层补边界逻辑仍然有可能缓解,但很难保证不同系统和输入法都稳定。最后我决定把 Milkdown / ProseMirror 完整替换成 CodeMirror 6 。
新编辑器仍然是所见即所得,但 Markdown 源文本现在是唯一数据源。
**、链接地址、图片语法和代码围栏都真实存在于文档中。普通状态下通过 decoration 显示为格式或预览,光标进入相关范围后再展开源码。保存、搜索、AI 编辑和格式命令也都使用同一套文本位置。
这不是简单替换一个 npm 依赖。表格、图片、代码块、公式、Mermaid 、HTML 、frontmatter 、脚注、块拖拽、折叠、浮动工具栏和拼写检查等能力,都需要在 CodeMirror 上重新实现。
Alpha 阶段也出现了不少新问题,包括选区闪烁、图片在中文输入时反复重建、代码块无法正常选择、表格和源码态切换异常等。现在这些主要交互已经逐步稳定下来,2.0.0 也进入了可以日常测试的阶段。
Markra 仍然保持本地优先:文件就是普通 .md,不需要注册,AI 连接用户自己配置的服务。桌面版支持 macOS 、Windows 和 Linux ,也可以直接使用 Web 版。
Web 版:
GitHub:
https://github.com/markrahq/markra
桌面版下载:
https://github.com/markrahq/markra/releases
这次改动范围很大,尤其希望大家帮忙测试这些场景:
如果遇到问题,直接提 Issue 就行。真实文档里的边界情况,比我自己构造的测试更有价值。
感谢之前几次帖子里帮忙试用、提建议和报 Bug 的朋友。1.0.0 是 Markra 第一次把主要能力完整跑通,2.0.0 则是把最核心的编辑器重新打了一遍地基。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.