Skip to content

新增跨资料 Markdown 学习笔记与资料定位 - #103

Open
XCL-0 wants to merge 7 commits into
mainfrom
codex/project-learning-notes-resubmit
Open

新增跨资料 Markdown 学习笔记与资料定位#103
XCL-0 wants to merge 7 commits into
mainfrom
codex/project-learning-notes-resubmit

Conversation

@XCL-0

@XCL-0 XCL-0 commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator

用户问题

学习过程中缺少一个能跨 EPUB、Markdown、思维导图等资料统一记录的项目级笔记;已有笔记也无法稳定引用并回到具体资料位置。右侧笔记面板持续改变宽度时还会触发正文反复重排和闪烁,定位标记长期留在原文又会造成视觉拥挤。

本次改动

  • 新增项目级 Markdown 学习笔记,支持编辑、预览、保存状态、错误提示和项目内持久化。
  • 直接复用 Markdown Workbench 的 Vditor 编辑适配层,不维护第二套 Markdown 编辑系统。
  • 支持插入“资料 + 定位”链接,链接保存 AssetTarget;点击后打开对应资料并定位具体位置。
  • 修复选择过 AI 解释附件后,新选择的原文仍被旧附件覆盖的问题:新原文选区现在优先生成对应定位链接。
  • 定位后的原文采用约 1.6 秒的临时亮色提示,不再永久绘制学习笔记下划线。
  • 学习笔记面板支持鼠标拖拽和键盘调整宽度;拖动期间只显示预览宽度,松开后一次性提交布局,减少 EPUB 正文频繁重排和闪烁。
  • 修复深浅主题下选择框初始文字对比度不足的问题。
  • 与最新 main 的 migration 28 协调后,学习笔记使用 migration 29,并兼容此前学习笔记分支曾使用的版本 28。

架构链路

Renderer 学习笔记面板 → Preload 类型安全 IPC → Main IPC → ProjectLearningNoteService → SQLite。

资料定位由通用 Workbench Target Bridge 负责运输和调度,具体 Anchor 的解释、显示和临时强调仍由 EPUB、Markdown、MindMap 等对应 Workbench 自己负责,通用层不理解 CFI 或媒体 DOM。

测试矩阵摘要

  • 正常路径:新建、编辑、保存、重新加载、预览及定位跳转。
  • 边界输入:非法项目、超长正文、错误 revision、非法/旧版定位链接。
  • 生命周期:面板卸载、拖拽取消、窗口失焦、临时高亮自动清理。
  • 隔离:按 Project 保存笔记,AssetTarget 校验资料与来源 revision。
  • 迁移:全新数据库、主线版本 28、旧学习笔记版本 28、重复初始化及高版本拒绝。
  • 交互:鼠标/键盘调宽、主题选择框样式、EPUB 定位后的瞬时强调、新原文选区覆盖旧附件引用。

验证结果

  • pnpm check:423 个测试文件通过、5 个跳过;2034 项通过、9 项跳过。
  • pnpm package:Windows x64 Electron 打包成功。
  • GitHub Actions:Windows x64 与 macOS ARM64 均通过代码检查、原生模块验证、打包和产物上传。
  • 与最新 origin/main 对比无冲突,git diff --check 通过。

影响与兼容性

  • 数据库 schema 从主线版本 28 升至 29;此前学习笔记分支产生的数据可兼容升级。
  • 不修改 Agent Provider、GenerationTask 或其他媒体生成逻辑。
  • 不删除用户原始资料;定位提示只影响 Renderer 的临时选区。

本次不包含

  • 不把学习笔记改造成 Attachment 正文存储。
  • 不增加 AI 自动整理笔记。
  • 不持久显示学习笔记引用标记,避免与阅读笔记、AI 解释标注拥挤。

@XCL-0 XCL-0 changed the title 新增跨资料 Markdown 学习笔记(重新提交) 新增跨资料 Markdown 学习笔记与资料定位 Sep 6, 2026
…g-notes-resubmit

# Conflicts:
#	src/main/bootstrap/create-application-runtime.ts
#	src/main/database/initialize-database.ts
#	src/renderer/project/ProjectPage.tsx
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