Skip to content

feat: 同步 velotype #116/#119/#121/#125 优化 - #406

Merged
feigeCode merged 2 commits into
devfrom
feat/velotype-sync-2026-10
Oct 15, 2026
Merged

feigeCode merged 2 commits into
devfrom
feat/velotype-sync-2026-10

Conversation

@feigeCode

Copy link
Copy Markdown
Owner

背景

navop 的 crates/markdown-editor fork 自 velotype(fork 点 050943e)。本次把 velotype 上游 a61c719 的四个优化按 navop 现有架构(host 渲染 + WASM 高亮)搬过来,并接到 navop 自己的设置与 Notes UI 上,不照抄上游代码。

上游同步(180bca693)

上游 内容 navop 落点
#119 双击选词 components/block/interactions.rs(unicode_segmentation)
#125 IME 编辑中文崩溃修复 新增 text_offsets.rs,runtime/mod.rs、inline.rs、runtime/code.rs、block/input.rs 改用边界安全的 UTF-8/UTF-16 换算
#125 div 块内 Markdown 渲染 image.rs、html.rs、render.rs(适配 navop 的 render_inline_image_content)
#121 可配置字体栈 新增 fonts.rs(保留原生解析/回退,裁掉上游 CSS/导出与偏好 UI)

navop 接入(8ab8bd2db)

代码字体

  • core/settings.rs 新增 markdown_code_font_family,随 normalize_font_settings 归一化
  • notes::init 用 AppSettings 构造 FontPreferences 调 set_font_stacks,并 observe_global::<AppSettings> —— 设置面板改字体立即生效,无需重启
  • 设置页新增「Markdown 代码字体」下拉(枚举等宽字体 + 自定义字体)

文档大纲(#116)

  • 上游大纲面板在 app 层 workspace.rs,navop 无此层;本次把 Editor::reveal_outline_heading 作为编辑器能力移植,另加 outline::outline_entries(感知围栏的 ATX 解析)
  • notes 新增右侧可折叠大纲面板:点击标题跳到所属块;工具栏按钮 + view.toggle_outline(Cmd/Ctrl+Shift+O)切换
  • 文档变更 / 外部重载时增量刷新(条目未变不重绘)

验证

  • cargo check -p markdown-editor -p notes -p one-core -p main --all-targets:0 error / 0 warning
  • cargo test -p markdown-editor -p notes:554 + 7 + 1(ignored) + 86 全通过
  • cargo test -p main --bin navop -- shortcut:14 passed(含快捷键标签覆盖与 SQL 注释快捷键不被抢占的守卫)

构建需 DEVELOPER_DIR=/Library/Developer/CommandLineTools SDKROOT=...(本机 Xcode 许可未同意,与本次改动无关)。

从 velotype 上游 a61c719 迁移四项改动,适配 navop 的 host 渲染/WASM 分枝:

- #119 双击选词:`on_mouse_down` 按 click_count 命中 Unicode 词边界。
- #125 IME 崩溃修复:新增 `text_offsets` 模块统一 UTF-8/UTF-16 边界换算,
  runtime/inline/code/input 各处的偏移裁剪改用字符边界安全实现。
- #125 div 块渲染:解析容器内 Markdown 图片与行内片段,`div` 子的连续
  链接徽章合并为一行居中换行布局。
- #121 字体栈:新增 `fonts` 模块(FontCatalog/FontPreferences/FontSettings),
  代码相关渲染路径与表格列宽测量改用可配置 code font;host 可通过
  `set_font_stacks` 注入字体栈。
- #116 大纲导航:新增 `Editor::reveal_outline_heading`,按序列化源码行定位并
  滚动到对应块(velotype 的侧栏 UI 属于其 app workspace,navop 未包含)。

cargo test -p markdown-editor:551 + 7 + 1 全通过。
字体(承接 velotype #121):
- core/settings 新增 markdown_code_font_family(默认等宽字体)并纳入 normalize
- notes::init 从 AppSettings 构造 FontPreferences 调 set_font_stacks,
  并 observe_global::<AppSettings>,设置面板改字体后立即生效
- settings.rs 的 set_font_stacks 每次调用重建字体目录,兼容运行期导入的自定义字体
- 设置页新增「Markdown 代码字体」下拉项

大纲(承接 velotype #116):
- markdown-editor 新增 outline::outline_entries(感知围栏的 ATX 标题解析)
- notes 新增右侧可折叠大纲面板,点击调用 Editor::reveal_outline_heading 跳转
- 工具栏加切换按钮,并绑定 view.toggle_outline(Cmd/Ctrl+Shift+O)
@feigeCode
feigeCode merged commit 1118543 into dev Oct 15, 2026
8 checks passed
ekovovo pushed a commit to ekovovo/navop that referenced this pull request Oct 19, 2026
- main/Cargo.toml、Cargo.lock:0.20.2 -> 0.20.3
- CHANGELOG.md:新增 v0.20.3 双语发布说明

本版自 v0.20.2 以来已合入 main 的变更:
- 终端按行 / 按屏滚动回看历史输出(feigeCode#409)
- Auto 模式 SQL 编辑器粘性会话,跨执行保留会话变量(feigeCode#312)
- 笔记 Markdown 大纲面板与代码字体设置(feigeCode#406)
- Redis:启用 TLS 修复、集群汇总全部 master、空库切换崩溃修复(feigeCode#414、feigeCode#416)
- SFTP:上传可立即取消、同连接 3 条并发车道、目录符号链接处理(feigeCode#417、feigeCode#418)
- 清空表刷新数据页签、结果集保存限定库名、剪贴板 JSON 原文复制(feigeCode#412、feigeCode#413)
@feigeCode
feigeCode deleted the feat/velotype-sync-2026-10 branch October 22, 2026 02:34
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