hunter-dev
|
0332c7b147
|
feat(editor): 切换文档记忆各自滚动位置(FR-T5 接线),新文档从顶部
|
2026-09-25 23:52:05 +08:00 |
|
hunter-dev
|
1e30abfac4
|
fix(editor): 新文档回到顶部 + 超链接用系统浏览器打开 + 链接气泡仅选中时弹出
|
2026-09-25 22:42:03 +08:00 |
|
hunter-dev
|
dc1d6b43dd
|
chore(release): 版本号提升至 2.0.0
v2.0.0
|
2026-09-10 00:48:49 +08:00 |
|
hunter-dev
|
c0ba8df9b6
|
perf(renderer): 整体优化响应速度 — rAF 合并编辑器刷新/自动保存缓存/粒子引擎空闲自停
同时: 不透明窗口 + 精简主题(8到2)、TabBar 简化、图谱宽松布局、MoreActions 层级修复
|
2026-09-10 00:41:24 +08:00 |
|
hunter-dev
|
d0dbdfd00a
|
feat(graph): 优化思维导图/知识图谱节点样式 + 文档点击跳转编辑器
- 思维导图: pill/chip 样式节点, 类型着色(root/folder/doc), 图标, 子节点计数徽标
- 知识图谱: 卡片圆角+投影+类型图标+星标, 悬停高亮
- 点击文档节点(思维导图/图谱)切换到编辑器界面
- 新增思维导图跳转 E2E 测试
|
2026-09-09 20:29:36 +08:00 |
|
hunter-dev
|
dc8d844a1f
|
feat(info): 信息面板 UI 重做 + 双向批量关联 + 代码块内全选复制
1. 信息面板 UI 重做:设计 token 统一、lucide 图标、分区小节、星标/标签/关联 chip 化
2. 关联文档升级:新增 doc:link-batch IPC,A↔B 双向写入 links;面板支持快速双向关联 + 批量勾选关联/解除
3. 代码块内全选复制:Ctrl+A 在代码块内仅全选该代码块(TyporaKeys selectInsideCodeBlock),Ctrl+C 复制纯代码;代码块内 Ctrl+V 按纯文本粘贴
4. 修复 React error #62:btn 改为函数后遗漏 style={btn} 裸用,导致 render 期间更新
|
2026-09-09 20:11:08 +08:00 |
|
hunter-dev
|
f77324afe7
|
修复代码块复制附带 ` 围栏:纯内容复制(transformCopiedText=false + copy 拦截 + 复制按钮改纯内容)
|
2026-08-31 00:41:26 +08:00 |
|
hunter-dev
|
144e1a57c7
|
修复编辑器红色波浪线:关闭 Chromium 拼写检查 (spellcheck=false) + CSS 兜底
|
2026-08-31 00:04:00 +08:00 |
|
hunter-dev
|
3cc36c6450
|
主题与快捷键:透明主题真透明 + 完整 Typora 快捷键
|
2026-08-30 23:08:01 +08:00 |
|
hunter-dev
|
ab46ec3cce
|
ui: 统一图标系统/字体/文案/token,标题栏与状态栏重做,编辑器排版打磨,窗口边框设计
|
2026-08-30 22:17:11 +08:00 |
|
hunter-dev
|
bd6243950c
|
fix: 文件列表缩进/图标、代码高亮去红、代码块复制带围栏、长文档底部留白
|
2026-08-30 21:52:49 +08:00 |
|
hunter-dev
|
e20fcab837
|
fix: 图谱/思维导图高度塌陷导致不显示
真正根因: GraphView 容器有 flex:1(在行布局中)但不是 display:flex,
子组件 MindmapTree/LinkGraph 的 flex:1 被忽略 → 高度 auto = 0
(子内容全是绝对定位,无在流内容) → SVG 高度 0 → fit() 计算 NaN
持续报 translate(NaN,NaN) 错误,内容不可见
之前 E2E 只数 DOM 元素数量不检查可见性,掩盖了此 bug
修复: GraphView 容器加 display:flex + flexDirection:column,
子组件 flex:1 正常生效,容器高度正确,内容可见
附带:
- 主进程转发渲染进程 console 到终端(便于 dev 调试)
- graph-render E2E 测试改为检查可见性(getBoundingClientRect)
- 修复 TabBar 关闭全部测试的 flaky 断言(expect.poll 自动重试)
|
2026-08-27 17:22:49 +08:00 |
|
hunter-dev
|
96f5c72fa7
|
fix: 知识图谱与思维导图不显示内容
三个独立 bug 修复:
1. MindmapTree StrictMode 双重渲染: Effect 1 创建 mm 实例, Effect 2 设置数据,
StrictMode 下 Effect 1 重建 mm 但 Effect 2 不重新运行 → 新 mm 无数据
修复: 在 Effect 1 中用 useStore.getState().tree 设置初始数据
2. LinkGraph onSwitchToEditor 不稳定: App 传内联箭头函数每次渲染新引用,
导致 D3 力导向图 Effect 2 依赖变化不断重置 → 图谱闪烁/不显示
修复: useCallback 稳定 switchToEditor 引用
3. frontmatter 块式 YAML 列表解析: parseList 只支持内联 [a, b] 格式,
用户手写 links:/tags: 多行 - item 格式无法解析 → 知识图谱无边
修复: parseYaml 支持 YAML 块式列表 (- item 多行)
新增 E2E 测试 graph-render.spec.ts 验证思维导图+知识图谱渲染内容
新增单元测试覆盖块式 YAML 列表解析
|
2026-08-27 16:35:47 +08:00 |
|
hunter-dev
|
ebd955ce4b
|
perf: 大文档性能优化——1.getMarkdown 防抖 300ms: 2000-5000 行文档每次按键序列化全量 markdown 开销大, 改为 debounce 300ms; 2.dsh-flush-body 事件: Ctrl+S/关窗/切文档前同步编辑器内容到 store, 确保保存不丢内容; 3.openDoc 不 await saveNow: 旧文档保存与新文档读取并行, 加快切换速度; 4.自动保存间隔 1s→3s: 大文档每秒写盘 I/O 压力大; 5.修复 save-mechanism E2E 测试时序适配新防抖
|
2026-08-27 15:48:19 +08:00 |
|
hunter-dev
|
3fe35ef873
|
perf: 全局响应速度优化——1.核心: 所有组件 useStore() 改为窄选择器 useStore(s=>s.field), 之前每次按键 setBody 改变 store.body 导致订阅整个 store 的 14 个组件全部 re-render(TiptapEditor/Editor/FileTree/TabBar/DocInfoPanel/Toolbar/App/SearchBox/TagFilter/SettingsPanel/GraphView/LinkGraph/MoreActions/TitleBar); TiptapEditor 不再订阅 body(仅 currentPath/setBody), body 从 getState() 在 effect 内获取; 2.OutlinePanel collect debounce 300ms(之前每次按键遍历文档树); 3.OutlinePanel scroll handler rAF 节流(之前每像素滚动调 coordsAtPos); 4.修复 TabBar resetEditor 重复声明 + TiptapEditor content 引用
|
2026-08-26 22:34:16 +08:00 |
|
hunter-dev
|
7f48cef344
|
fix(outline): hover 高亮残留——内联 onMouseEnter/onMouseLeave 用 if(i!==activeIdx) 条件, 点击后 activeIdx 变化导致 onMouseLeave 条件为 false 不清除背景. 改用纯 CSS :hover 替代内联 JS, 浏览器自动管理 hover 状态无竞态
|
2026-08-26 22:05:33 +08:00 |
|
hunter-dev
|
a18982659b
|
fix(outline): Typora 式瞬时跳转——smooth scroll 在导航场景是反模式(慢+与 ProseMirror scrollIntoView 冲突). 参考 Typora 设计: 1.瞬时设置 scrollEl.scrollTop=targetTop, 不用 behavior:smooth; 2.setTextSelection 设光标(不触发滚动) + view.focus() 直接聚焦(跳过 editor.commands.focus 的 scrollIntoView); 3.闪烁高亮放最后. 一击即达, 无需二次点击, 无冲突卡顿
|
2026-08-26 21:51:25 +08:00 |
|
hunter-dev
|
ed6eddc355
|
fix(outline): 点击跳转滚动修复——1.点一下到最下面: setTextSelection+focus 在 scrollTo 之后执行, ProseMirror 的 scrollIntoView 覆盖手动 smooth scroll; 修复: 先 setTextSelection(不触发滚动) 再 scrollTo(smooth), focus 延迟到 rAF 下一帧执行, 避免覆盖; 2.暗色遗留: outline-flash-anim 和 outline-item-active 用硬编码 #63b3ed/rgba(99,179,237), 暗色主题下异常; 修复: 改用 var(--accent)/var(--control-border) 主题变量, animation fill-mode:forwards 确保结束完全透明; 3.流畅度: 两条 smooth scroll 冲突导致卡顿, 修复后仅一条 scroll
|
2026-08-26 21:44:23 +08:00 |
|
hunter-dev
|
0c605cb8b6
|
fix(editor+outline): 2个问题修复——1.tiptap error: resetEditor清空currentPath后TiptapEditor提前return不渲染EditorContent, 但useEffect仍调editor.commands.setContent触发view.dom访问崩溃; 修复: currentPath为null时跳过setContent并注销useEditorShared引用; 2a.大纲不随文档切换更新: collect effect仅依赖editor, setContent用emitUpdate:false不触发update事件; 修复: 加currentPath依赖+rAF延迟收集; 2b.大纲点击跳转位置不准: scrollIntoView的block:start受父容器影响; 修复: 手动计算scrollTop=elRect.top-containerRect.top+scrollEl.scrollTop, scrollTo精确到容器最上方
|
2026-08-26 21:35:11 +08:00 |
|
hunter-dev
|
b01bdd380a
|
fix(tabs): 关闭全部标签页后编辑器未清空——closeTab 仅清空 tabs/activeId 不清 store.currentPath, 导致 TiptapEditor 仍渲染旧文档. TabBar useEffect 加 resetEditor: 当 activeId 为 null 且 currentPath 非空时调用 store.resetEditor 清空 currentPath/body/meta, 编辑器正确显示空状态提示; 新增 E2E 验证
|
2026-08-26 19:21:29 +08:00 |
|
hunter-dev
|
34d3fec449
|
fix(ui): 4项界面美化——1.图标统一纯色字符(🎨→◐/🕸→◇/📁→▣/📥→↓/📄→◉ 全部移除彩色emoji); 2.Resizer加拖拽手柄+悬停高亮+accent强调色; EditorToolbar/Toolbar按钮去边框+圆角+悬停背景; TitleBar按钮宽度收紧+圆角; 3.自定义滚动条(6px宽+半透明+圆角+hover加深) webkit+firefox双引擎; 4.@media print隐藏滚动条+overflow visible防进度条打印
|
2026-08-26 19:10:49 +08:00 |
|
hunter-dev
|
8c47d27979
|
fix(hotkeys): 快捷键系统性修复——1.Ctrl+N onNewDoc 原为空函数, 实现新建文档全流程(dialog+fileCreate+openDoc); 2.Ctrl+backslash clearFormat 原无处理器(actions 缺失), 加 onClearFormat 调用 editor.chain().clearNodes().unsetAllMarks(); 3.use-hotkeys 重写: 移除 hotkeys-js 依赖, 全部绑定统一用捕获阶段 keydown 拦截(先于 Electron 菜单), 加 e.code 符号键映射修复 Shift+符号键匹配; 4.编辑器作用域键在输入框聚焦时仍放行 find(Ctrl+F); keymap-all E2E 8 项覆盖全部 12 默认快捷键
|
2026-08-26 19:05:01 +08:00 |
|
hunter-dev
|
a6458c03e9
|
fix(theme): 全主题文字对比度达标 WCAG AA——8套主题 textTertiary 从 #666/#999(对比2-3✗) 提升到 #8a8a9a/#6a5a4a 等(≥4.5✓); textSecondary 提升到 ≥5.3; 浅色主题 accentText 加深(latte #a06840→#8a5830, daylight #2070c0→#1860a8); 组件硬编码色 #2a2a3a/#3a4a6a/#4a6a8a/#fff/#888/#ddd 全替换为 CSS 变量(App/FileTree/GraphView/ImageView/TagFilter/SettingsPanel/InputDialog); styles.css 加 :root[data-theme-group=light] 浅色语法高亮配色; applyTheme 传 group 参数设置 data-theme-group 属性; 标签栏开关 ☰/– 图标修复可见性; TitleBar ▤🎨 按钮加 noDrag 修复不可点击
|
2026-08-26 16:44:38 +08:00 |
|
hunter-dev
|
01cec4e4c6
|
fix(ux): 标签栏开关按钮图标可见性——▭/▯(12px细矩形肉眼不可见)改为 ☰/–(14px三横线+短横), 用户反馈漏看此按钮; 删除临时截图测试
|
2026-08-26 16:30:11 +08:00 |
|
hunter-dev
|
d885dd8cb5
|
test: 全按钮可点击验证——11 个 E2E 测试覆盖 TitleBar/Toolbar/EditorToolbar/FindReplace/MoreActions/DocInfoPanel/SettingsPanel/FileTree/Graph/TabBar 所有按钮区域; 发现并验证所有按钮均可点击生效
|
2026-08-26 16:21:11 +08:00 |
|
hunter-dev
|
c935f1a34a
|
feat(M5/M1): FR-A12/V4 过渡动效+最近库下拉——styles.css 全局 transition+panel-slide-in keyframe+按钮悬停(A12); SettingsPanel/CheatSheet 加 panel-slide-in; Toolbar 最近库下拉快速切换(最多5)+高亮当前库(V4); recents-transition E2E 1 项
|
2026-08-26 15:52:25 +08:00 |
|
hunter-dev
|
55dedcbcf2
|
feat(M10/M3/M2): FR-M4/M6/X1/X2/B6/D1/D3 元数据/导出/弹层/迁移——EditorToolbar 加星标按钮(M4); DocMeta 加 createdAt+frontmatter 读写+DocInfoPanel 显示+创建时写入(M6); copyMd 失败 catch+错误提示(X1); @media print 干净排版+hljs配色(X2); SettingsPanel/CheatSheet Esc 关闭(B6); migration-service 旧版板块转换+init+switch 检测(D1/D3); meta-export E2E 3 项
|
2026-08-26 15:48:22 +08:00 |
|
hunter-dev
|
52474012c0
|
feat(M7): FR-G1/G4/G5 图谱卡片补全——卡片加文档图标+库内路径副文本(G1); scaleExtent改0.1-2+背景rect绑zoom不拦截点击+适配视图+缩放控件(G4); 点击卡片openDoc(d.id)+切回编辑视图(G5); graph E2E 3 项
|
2026-08-26 15:40:56 +08:00 |
|
hunter-dev
|
1f3ede9956
|
feat(M8): FR-T4/T5/T6/W2/W6/W7 标签页/布局接线——固定标签悬停浮现关闭按钮(T4); tab-store updateScroll+restore恢复滚动位置(T5); tabbarVisible接线App+TitleBar切换按钮(T6/W6); winIsMaximized IPC+最大化/还原图标切换(W2); 极简模式隐藏TabBar(W7); layout-tabs E2E 3 项
|
2026-08-26 15:20:30 +08:00 |
|
hunter-dev
|
8f6fd7082b
|
feat(M1): FR-F3/F7/F8/F11/F12 文件树操作补齐——文件夹悬停加新建文档/新建文件夹/导入文件夹按钮(F3); 行内重命名 onBlur 改为提交(F7); 删除改 shell.trashItem 移入回收站(F8); fileImportFolder IPC+对话框导入文件夹(F11); 导入结果 showAlert 弹窗列失败项(F12); dialog-store 加 alert 模式; filetree-ops E2E 3 项
|
2026-08-26 15:15:35 +08:00 |
|
hunter-dev
|
3390e91406
|
feat(M2): FR-S1/S4/S6 保存机制完善——setBody 防抖读 settings.autoSaveInterval(S1); beforeunload 冲刷+saveNow(S4); ReadDocResult 加 mtime+reloadDoc 检测外部改动(R6); store 暴露 __STORE__; save-mechanism E2E 3 项
|
2026-08-26 15:05:09 +08:00 |
|
hunter-dev
|
01ea477d18
|
feat(M4): FR-R2/R6/R7 搜索+标签筛选——search hay 加 tags+links 元数据(R2); TagFilter 加折叠按钮(R6); tagPaths IPC+FileTree AND 过滤选中标签的文档(R7); store 加 tagFilter; search-tag E2E 2 项
|
2026-08-26 14:53:00 +08:00 |
|
hunter-dev
|
bfb1f4b014
|
feat(M9): FR-K1/K3/K4/K6/K7 快捷键体系——多作用域(global/app/editor)+Scope.resolveActive 裁决(K1); 编辑器类绑定 find/bold/italic/strike/inlineCode/clearFormat(K3); 冲突数量汇总 conflictCount+SettingsPanel 顶部警示(K4); CheatSheet 从 store 动态渲染+formatCombo Mac 适配(K6); Ctrl+F 捕获阶段 keydown 拦截宿主查找+FindReplace 切换(K7); keymap-enhanced E2E 2 项
|
2026-08-26 14:43:57 +08:00 |
|
hunter-dev
|
fcd822b9f4
|
feat(M5): FR-A5 性能优先+GPU探测——main 进程 getGPUInfo 探测软渲染(SwiftShader/llvmpipe)+gpu:info IPC; settings 加 perfMode 开关+gpuStatus+loadGpu; 软渲染自动开启 perfMode; App 背景图 blur 受 perfMode 控制; EffectLayer perfMode 时关闭特效; SettingsPanel 其他页加开关+GPU 信息显示; perf-mode E2E 1 项
|
2026-08-26 14:34:34 +08:00 |
|
hunter-dev
|
56b0c25443
|
feat(M5): FR-A6/A7/A9/A10 外观面板完善——恢复主题默认按钮+save剥离等于默认的键(A6); Esc回滚+关闭面板(A7); 智能取色据图片明暗自动切换深/浅主题基底(A9); 背景图压缩改1920px/WebP+超2MB降质(A10); appearance-enhanced E2E 3 项
|
2026-08-26 14:17:36 +08:00 |
|
hunter-dev
|
9a89a73518
|
feat(M5): FR-A3/A4 主题CSS变量全接线——25 文件 168 处硬编码色替换为 var(--accent/--glow/--accent-text/--text-primary/--text-secondary/--text-tertiary/--control-border/--bg-secondary); 语义色(错误红/确认/警告/成功)保留; hljs 语法色保留; typecheck+E2E 21/21 绿
|
2026-08-26 14:07:48 +08:00 |
|
hunter-dev
|
bd60a8d920
|
feat(M3): FR-O2/O3/O4 大纲面板——平滑滚动+闪烁高亮(FR-O2); 编辑器滚动联动高亮当前标题+大纲跟随(FR-O3); 未打开文档占位(FR-O4); editor-shared-store 跨树共享编辑器实例; outline E2E 3 项
|
2026-08-26 13:55:54 +08:00 |
|
hunter-dev
|
0764818ee1
|
feat(M2): FR-E12 公式块——MathBlock 节点(KaTeX 块级渲染+可编辑源码区)+InlineMath 行内公式; SlashMenu 加 公式 项; addStorage markdown 序列化(../$..$); katex 依赖; editor-math E2E 1 项
|
2026-08-26 13:47:59 +08:00 |
|
hunter-dev
|
56735f53e6
|
feat(M2): FR-E7 块级操作 + FR-E11 查找替换——BlockOps 重写(Alt+↑/↓ 顶层块上移下移+Alt+Backspace 删除); FindReplace 加 区分大小写/整词/正则 复选框 + FindReplaceHighlight 装饰插件(全命中高亮+当前项) + 单次替换/全部替换; styles.css find-match 配色; editor-block-findreplace E2E 3 项
|
2026-08-26 13:39:46 +08:00 |
|
hunter-dev
|
2f4bcfd1e4
|
feat(M2): FR-E6 链接气泡+图片入库——LinkBubbleMenu(编辑/移除href);ImageView 节点视图(相对路径转 vaultasset:// 协议展示);assetPickImage/assetWrite IPC + .attachments 入库;剪贴板粘贴图片入库;工具栏 链接/图片/网图 按钮;CSP 放行 vaultasset:;editor-link-image E2E 3 项
|
2026-08-26 13:32:13 +08:00 |
|
hunter-dev
|
4beebbc8d0
|
feat(M2): FR-E5 代码块语言切换——CodeBlockView 自定义节点视图(语言下拉21种)+保留 lowlight 装饰高亮;styles.css hljs 暗色主题(atom-one-dark);editor-codeblock E2E 1 项
|
2026-08-26 13:10:25 +08:00 |
|
hunter-dev
|
78843ce5cc
|
feat(M2): FR-E3 行内格式补齐——工具栏行内代码(toggleCode/Ctrl+E)+清除格式(unsetAllMarks)按钮;editor-inline E2E 1 项
|
2026-08-26 13:05:11 +08:00 |
|
hunter-dev
|
c4af03adce
|
fix: S1 安全冲刺——切库清空标签页+冲刷(FR-V6)、重命名/移动同步标签页路径(FR-T7)、默认库路径设置页(FR-V5);vaultBrowse IPC+pickDirectory;tab-store closeAll/renamePath;store resetEditor/syncCurrentPath;safety E2E 2 项
|
2026-08-26 11:05:22 +08:00 |
|
hunter-dev
|
81b410e281
|
feat: M5 背景图上传/压缩+智能取色(FR-A8/A9,smart-color 下沉 shared,canvas 采样→analyzeImage 推导强调色/模糊/表面不透明尊重手动项,持久化+重开恢复)
|
2026-08-26 09:20:45 +08:00 |
|
hunter-dev
|
545bc38370
|
feat: M5 透明窗+亚克力(FR-A2,BrowserWindow transparent/backgroundMaterial=acrylic,App 根用 var(--bg-primary),透明主题透出亚克力)
|
2026-08-24 23:52:45 +08:00 |
|
hunter-dev
|
566c8ba10e
|
test: 大库性能压测(1000 篇,tree/search/graph sub-second;STRESS=1 opt-in,默认套件跳过)
|
2026-08-24 23:50:29 +08:00 |
|
hunter-dev
|
49c174851e
|
feat: 快捷键录入重绑(FR-K3,keymap:load/save IPC+config.json,SettingsPanel 录入 UI+冲突检测,use-hotkeys 读 store 实时生效,重开恢复)
|
2026-08-24 23:48:17 +08:00 |
|
hunter-dev
|
cf2600901b
|
feat: M5 外观特效选择+持久化(appearance:load/save IPC+config.json,鼠效 6 选格接 EffectEngine,重开恢复并接线)
|
2026-08-24 23:42:46 +08:00 |
|
hunter-dev
|
28755547c1
|
feat: M7 知识图谱卡片+连线视图(消费 IPC.graph,d3-force 力导向,星标/分组色/点击打开;GraphView 思维导图/知识图谱 双模切换)
|
2026-08-24 23:33:46 +08:00 |
|
hunter-dev
|
b9aefa3c17
|
build: electron-builder 打包配置 + 首次构建(win-unpacked 可运行 168MB,cross-env 注入 npmmirror 镜像;打包产物冒烟测试启动 .exe)
|
2026-08-24 23:18:39 +08:00 |
|