Skip to content

New features and bug fixes #48

Merged
landaiqing merged 5 commits into
masterfrom
dev
Apr 12, 2026
Merged

New features and bug fixes #48
landaiqing merged 5 commits into
masterfrom
dev

Conversation

@landaiqing

@landaiqing landaiqing commented Apr 12, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

发布说明

  • 新功能

    • 新增命令面板,快速访问编辑器命令
    • 新增块级折叠/展开功能
    • 新增块移动功能,支持移动到其他文档或创建新文档
    • 新增 Math.js 语言支持,包含函数、常数、单位和货币符号
    • 新增货币汇率数据功能
    • 新增块元数据显示(创建时间、语言、访问权限等)
    • 搜索支持范围过滤(全部文档或当前块)
  • 设置改进

    • 新增光标闪烁频率自定义
    • 新增块分隔符高度自定义
    • 新增默认代码块语言和自动检测配置
  • 其他

    • 更新平台路线图

@coderabbitai

coderabbitai Bot commented Apr 12, 2026

Copy link
Copy Markdown

Caution

Review failed

Pull request was closed or merged during review

总体概述

此PR增加了货币数据服务、扩展块编辑功能(包括块移动、命令面板、块折叠)、改进光标闪烁和块分隔符高度配置,并为MathJS语言添加了完整的语法解析器支持。

变更

组块/文件 摘要
文档更新
README.md, README_ZH.md
更新核心功能和平台路线图,调整Windows/macOS/Linux的发布状态。
配置与常量
frontend/src/common/constant/config.ts, internal/models/config.go
新增编辑和外观配置字段:defaultBlockLanguagedefaultBlockAutoDetectblockSeparatorHeightcursorBlinkRate,包括限制值和默认值定义。
TypeScript模型与绑定
frontend/bindings/voidraft/internal/models/models.ts, frontend/bindings/voidraft/internal/services/...
扩展配置模型,添加CurrencyService绑定和CurrencyData模型以支持后端货币服务集成。
货币服务(后端)
internal/services/currency_service.go, internal/services/service_manager.go
实现新的CurrencyService,支持HTTP获取汇率数据、缓存管理和持久化。
货币存储(前端)
frontend/src/stores/currencyStore.ts, frontend/src/App.vue
新增Pinia存储来管理货币数据初始化、定期刷新(4小时间隔)和与编辑器的集成。
块操作与命令
frontend/src/views/editor/extensions/codeblock/commands.ts, frontend/src/views/editor/extensions/codeblock/parser.ts, frontend/src/views/editor/extensions/codeblock/types.ts, frontend/src/views/editor/extensions/codeblock/timestamp.ts
添加块的创建时间戳元数据、新命令addNewBlockAfterLastAndScrollDown、改进的块删除逻辑和辅助函数。
块移动功能
frontend/src/views/editor/extensions/blockMove/*.ts, frontend/src/views/editor/extensions/blockMove/*.vue
新增完整的块移动功能:UI对话框、状态管理器、文档转移逻辑,支持在现有或新建文档间移动块。
块折叠扩展
frontend/src/views/editor/extensions/codeblock/fold.ts, frontend/src/views/editor/extensions/codeblock/fold.test.ts
实现块级折叠/展开、可视化占位符、自动展开编辑时的折叠块,包括单元测试。
块样式与分隔符
frontend/src/views/editor/extensions/codeblock/decorations.ts, frontend/src/views/editor/basic/cursorBlinkExtension.ts
添加可配置的光标闪烁、动态块分隔符高度控制及其CSS变量集成。
编辑器配置与存储
frontend/src/stores/configStore.ts, frontend/src/stores/editorStore.ts
新增配置setter方法和编辑器方法以应用光标闪烁/块分隔符设置、获取文档快照、应用外部文档内容、触发货币刷新。
命令面板
frontend/src/views/editor/extensions/commandPalette/*.ts, frontend/src/views/editor/extensions/commandPalette/*.vue
全新的命令面板对话框、状态管理和命令注册系统,支持关键词搜索和快捷键显示。
搜索面板扩展
frontend/src/views/editor/extensions/vscodeSearch/SearchPanel.vue, frontend/src/views/editor/extensions/vscodeSearch/searchScope.ts, frontend/src/views/editor/extensions/vscodeSearch/plugin.ts
添加按范围搜索(全部或当前块)、优化的匹配计数、外部视图更新处理。
快捷键与命令
frontend/src/views/editor/keymap/commands.ts, frontend/src/views/editor/keymap/shortcut.ts
新增快捷键绑定(OpenCommandPalette, BlockAddAfterLastAndScrollDown)、快捷键标签格式化和命令定义注册系统。
内联图片处理
frontend/src/views/editor/extensions/inlineImage/inlineImage.ts, frontend/src/views/editor/extensions/inlineImage/inlineImageWidget.ts
添加缺失图片占位符样式和同步逻辑,改进图片加载状态管理。
MathJS语言支持
frontend/src/views/editor/language/mathjs/*
完整的MathJS语言实现:Lezer语法、解析器生成脚本、内置函数/常量/单位/货币定义、CodeMirror集成。
设置UI页面
frontend/src/views/settings/pages/AppearancePage.vue, frontend/src/views/settings/pages/EditingPage.vue
新增光标闪烁速率、默认块语言、块自动检测、块分隔符高度设置控制。
UI工具栏
frontend/src/components/toolbar/BlockMetaTools.vue, frontend/src/components/toolbar/Toolbar.vue, frontend/components.d.ts
新增块元数据工具栏组件,显示活跃块的语言、访问模式和创建时间。
国际化
frontend/src/i18n/locales/en-US.ts, frontend/src/i18n/locales/zh-CN.ts
添加新功能的翻译:块工具、块移动、命令面板、块配置、光标闪烁控制。
编辑器管理与主题
frontend/src/views/editor/manager/extensions.ts, frontend/src/views/editor/theme/base.ts, frontend/src/views/editor/Editor.vue
注册块折叠扩展、块移动/命令面板对话框、更新块分隔符CSS变量和折叠相关样式。
后端模型与同步
internal/models/document_content.go, internal/models/key_binding.go, internal/services/document_service.go, internal/common/syncer/resource/*, internal/common/syncer/snapshot/*
添加文档内容构建器、新的键绑定常量、文档服务配置集成、同步适配器改用字段名而非UUID匹配、记录ID编码机制。
系统托盘与启动
internal/systray/systray.go, main.go
新增应用启动事件钩子用于系统托盘初始化。
工具与脚本
frontend/package.json, frontend/src/views/editor/basic/basicSetup.ts
添加MathJS解析器构建脚本,移除基础编辑器设置中的drawSelection
版本
version.txt
版本号从1.6.0更新至1.6.1。

序列图

sequenceDiagram
    participant App as 应用启动
    participant CurrencyStore as 货币存储
    participant CurrencyService as 货币服务<br/>(后端)
    participant ConfigService as 配置服务
    participant EditorStore as 编辑器存储
    
    App->>CurrencyStore: 初始化onBeforeMount
    CurrencyStore->>CurrencyService: initCurrencySync()
    CurrencyService->>ConfigService: 检查缓存(12小时)
    alt 缓存有效
        CurrencyService-->>CurrencyStore: 返回缓存数据
    else 缓存过期/无缓存
        CurrencyService->>CurrencyService: HTTP GET汇率数据
        CurrencyService->>ConfigService: 持久化新数据
        CurrencyService-->>CurrencyStore: 返回新数据
    end
    CurrencyStore->>EditorStore: triggerCurrencyRefresh()
    EditorStore->>EditorStore: 在编辑器实例中注册货币单位
    CurrencyStore->>CurrencyStore: 设置4小时间隔定期刷新
Loading
sequenceDiagram
    participant User as 用户
    participant Editor as 编辑器
    participant CmdPalette as 命令面板<br/>管理器
    participant Dialog as 命令面板<br/>对话框
    participant CommandRegistry as 命令<br/>注册表
    
    User->>Editor: 按F1或Mod-Shift-P
    Editor->>CmdPalette: openCommandPaletteCommand
    CmdPalette->>Dialog: show()
    Dialog->>Dialog: 初始化查询/焦点
    Dialog->>CommandRegistry: 获取可用命令列表
    Dialog->>Dialog: 按关键词排序/过滤
    User->>Dialog: 输入查询/箭头键/Enter
    Dialog->>CommandRegistry: 执行选中命令
    CommandRegistry->>Editor: 运行命令处理器
    Dialog->>Dialog: hide()
    Editor->>Editor: 恢复焦点
Loading

预估代码审查工作量

🎯 4 (复杂) | ⏱️ ~60 分钟

可能相关的PR

  • PR #18: 扩展了键绑定枚举和类型、添加新命令(OpenCommandPalette、BlockAddAfterLastAndScrollDown)及相关的配线,与此PR的键绑定/命令系统改动直接重叠。
  • PR #22: 两个PR都涉及编辑器的块折叠和编辑器状态功能,此PR添加块折叠UI/命令,而另一PR添加折叠状态持久化。

建议标签

enhancement

诗歌

🐰 货币兑换在数字里流转,
块折与移动轻舒展开,
命令面板翩然而至,
MathJS解析器精确演算,
编辑器之城更加灵动!✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 20.83% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive PR 标题「New features and bug fixes」过于宽泛,未能具体说明本次变更的主要内容。该 PR 包含大量功能特性(货币支持、代码块折叠、命令面板、块移动、编辑器设置等),但标题未能准确反映这些变更。 建议更新标题为更具体的描述,例如「Add currency support, block folding, command palette and editor improvements」,以便能更清楚地传达本次 PR 的核心变更。
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Comment thread frontend/bindings/voidraft/internal/services/currencyservice.ts
Comment thread frontend/bindings/voidraft/internal/services/currencyservice.ts
Comment thread frontend/bindings/voidraft/internal/services/models.ts
@coderabbitai coderabbitai Bot added the enhancement New feature or request label Apr 12, 2026
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@landaiqing landaiqing merged commit dc1c5cc into master Apr 12, 2026
8 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant