爱意满满的作品展示区。
murongxdb

Markra 2.0.0 发布了:为了修一个中文输入法问题,我把编辑器内核从 Milkdown 换成了 CodeMirror

  •  
  •   murongxdb · 1 day ago · 541 views

    大家好,之前我在 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 。

    2.0.0 的编辑器有什么不同

    新编辑器仍然是所见即所得,但 Markdown 源文本现在是唯一数据源。

    **、链接地址、图片语法和代码围栏都真实存在于文档中。普通状态下通过 decoration 显示为格式或预览,光标进入相关范围后再展开源码。保存、搜索、AI 编辑和格式命令也都使用同一套文本位置。

    这不是简单替换一个 npm 依赖。表格、图片、代码块、公式、Mermaid 、HTML 、frontmatter 、脚注、块拖拽、折叠、浮动工具栏和拼写检查等能力,都需要在 CodeMirror 上重新实现。

    Alpha 阶段也出现了不少新问题,包括选区闪烁、图片在中文输入时反复重建、代码块无法正常选择、表格和源码态切换异常等。现在这些主要交互已经逐步稳定下来,2.0.0 也进入了可以日常测试的阶段。

    这次还增加了什么

    • 新增打字机模式和 Vim 模式。
    • 支持未使用图片安全清理。
    • 支持折叠文件列表、自定义主题开关和更多快捷键组合。
    • 改进历史版本预览恢复、移动端 Web 文件列表和长时间流式 AI 请求。
    • Markdown 语法标记在非活动状态下更弱化,需要编辑时再完整显示。

    Markra 仍然保持本地优先:文件就是普通 .md,不需要注册,AI 连接用户自己配置的服务。桌面版支持 macOS 、Windows 和 Linux ,也可以直接使用 Web 版。

    Web 版:

    https://editor.markra.app/

    GitHub:

    https://github.com/markrahq/markra

    桌面版下载:

    https://github.com/markrahq/markra/releases

    这次改动范围很大,尤其希望大家帮忙测试这些场景:

    1. 中文输入法在粗体、斜体、删除线和链接边界是否正常;
    2. 图片、表格、代码块、Mermaid 和 HTML 的编辑交互是否符合直觉;
    3. 长文档选择、拖拽和滚动是否还有闪烁或错位;
    4. 从 1.x 升级后,原有 Markdown 是否能够正常打开和保存。

    如果遇到问题,直接提 Issue 就行。真实文档里的边界情况,比我自己构造的测试更有价值。

    感谢之前几次帖子里帮忙试用、提建议和报 Bug 的朋友。1.0.0 是 Markra 第一次把主要能力完整跑通,2.0.0 则是把最核心的编辑器重新打了一遍地基。

    2 replies    2026-07-29 07:07:37 +08:00
    vvenvw
        1
    vvenvw  
       22h 53m ago
    进了 settings ,退不出去?
    murongxdb
        2
    murongxdb  
    OP
       13h 17m ago
    @vvenvw 什么意思,没懂
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3087 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:25 · PVG 20:25 · LAX 05:25 · JFK 08:25
    ♥ Do have faith in what you're doing.