Commit Graph
48 Commits
Author SHA1 Message Date
thzxx 7a4e2b0a67 v0.2.0: 全面代码质量优化
- ESLint flat config + Prettier + EditorConfig
- Markdown处理器LRU缓存
- Zustand选择器优化减少重渲染
- CodeMirror Compartment主题热切换
- Preview防抖(150ms) + IndexedDB去抖(500ms)
- 组件拆分: App.tsx 310→104行, Sidebar.tsx 244→90行
- 统一错误处理 errorHandler.ts
- ConfirmDialog替代原生confirm
- LoadingSpinner加载状态
- Toast多条堆叠+类型区分
- 可访问性增强(ARIA属性、键盘导航)
- Vitest测试框架(78个测试用例)
- Git hooks(husky + lint-staged)
- 项目文档(README.md, CONTRIBUTING.md)
2026-06-03 22:13:32 +08:00
thzxx 3cecb0f9eb v0.1.1: 多Agent代码质量审查+优化
- fix: useCodeMirror onChange闭包过期导致编辑器内容丢失同步(P0)
- feat: 全部组件添加displayName(React DevTools调试支持)
- feat: 全部组件添加ARIA属性(WCAG无障碍支持)
- fix: App异步操作添加try-catch错误边界
- fix: tabStore空catch块添加错误日志
- fix: sidebarStore Set→string[](Zustand可序列化)
- fix: useDragDrop readFile错误处理+空文件修复
- fix: useSettings/useTheme load()添加错误处理
- fix: useTheme toggleDarkMode引用优化
- chore: 版本号升级至0.1.1
2026-06-03 21:02:56 +08:00
thzxx 2716a7d320 release: v1.3.0 版本发布,更新文档与更新日志 2026-05-21 13:44:32 +08:00
thzxx e071a26db6 refactor: renderer.js拆分为6个模块(core/tabs/editor/search/sidebar/markdown) 2026-05-21 13:34:49 +08:00
thzxx b185771c41 opt: 8项优化——搜索高亮精度/滚动同步/行号同步/本地图片/拖拽提示/MRU标签/侧边栏调宽/toast组件 2026-05-21 13:30:11 +08:00
thzxx d178f5b3f6 feat: 侧边栏文件夹目录树添加标题头 2026-05-21 13:16:06 +08:00
thzxx 16fa87e7dd chore: 删除重复的formatFileSize函数,统一用formatBytes 2026-05-21 13:05:21 +08:00
thzxx 04c904dc20 fix: 侧边栏始终可见,不因无文件而隐藏
侧边栏包含「打开文件夹」入口,隐藏会导致用户无法打开文件夹
2026-05-21 12:59:53 +08:00
thzxx 2d899cca7e fix: 侧边栏高亮逻辑清理与边界情况修复
- 移除 loadTabState 中冗余的 updateSidebarHighlight 调用(switchToTab/closeTab 已覆盖)
- 无文件夹+无标签时自动隐藏侧边栏(之前会空显示)
- handleSave/handleSaveAs 后刷新侧边栏(文件路径变化时同步更新)
2026-05-21 12:59:02 +08:00
thzxx eff04606bd fix: 侧边栏高亮跟随标签切换同步更新,支持显示独立打开的文件
- 添加 updateSidebarHighlight() 函数,标签切换时只更新高亮状态而非重建整棵树
- 给树节点添加 data-path 属性用于精确定位高亮
- 新增「已打开的文件」区域,显示不在当前文件夹内的独立文件
- 独立文件支持点击切换、修改状态标识、活跃高亮
- 无文件夹打开时自动显示独立文件列表,全部关闭后隐藏侧边栏
2026-05-21 12:56:50 +08:00
thzxx 65383defd1 fix: 标签栏移入右侧内容区,左侧纯侧边栏 2026-05-21 12:06:14 +08:00
thzxx d25c2ec30d fix: banner移入content-wrapper,标签栏下方直接是两栏布局 2026-05-21 12:04:54 +08:00
thzxx dbbd0f4abb fix: 欢欢迎页移入main-content,侧边栏启动即可见 2026-05-21 12:03:02 +08:00
thzxx 9ac07d376b fix: 修复侧边栏布局——sidebar与main-content并排显示 2026-05-21 11:59:56 +08:00
thzxx f6f1c4f717 fix: 侧边栏watcher泄漏、目录刷新防抖、清理过时注释 2026-05-21 11:43:42 +08:00
thzxx 5d64e4401f fix: 修复渲染进程5个bug(path未定义、editorWrapper未定义、死代码清理) 2026-05-21 11:41:23 +08:00
thzxx 2010f9dff5 docs: 同步 v1.2.0 文档(搜索替换 + 文件树) 2026-05-21 11:39:07 +08:00
thzxx 543af93802 feat: v1.2.0 搜索替换 + 文件树侧边栏 2026-05-21 11:37:02 +08:00
thzxx 320980030e fix: 代码块预览显示undefined - renderer.code参数应为位置参数而非对象解构 2026-05-18 16:16:04 +08:00
thzxx a85c3604c6 fix: 渲染成功后清除错误红色样式残留 2026-05-18 16:01:18 +08:00
thzxx 69e2ee0713 fix: 清理死代码、错误渲染防XSS、blob URL释放时机修复 2026-05-18 15:57:02 +08:00
thzxx addf8e4dd1 fix: save写入失败时恢复文件监听、窗口销毁安全检查、暗色主题跟随系统偏好 2026-05-18 15:50:05 +08:00
thzxx 65451b938c fix: 防御性检查补全
- openFileInTab 增加 isDestroyed() 前置检查
- open-file handler 增加 isDestroyed() 检查
- window:forceClose 增加 isDestroyed() 检查
- close handler 使用 isClosing 防止重入
- cancelClose 重置 isClosing 允许再次关闭
2026-05-18 15:24:01 +08:00
thzxx 5428beb6db fix: 单实例锁,双击md文件在已有窗口打开
- 添加 requestSingleInstanceLock() 防止重复启动
- second-instance 事件中提取文件路径,转发给已有窗口
- 复用 getFilePathFromArgs() 解析命令行参数
2026-05-18 15:10:28 +08:00
thzxx 07989db28e feat: 限制只能打开 md/txt 文件,新建文件仅保存为 md
- 打开对话框移除「所有文件」选项
- 保存对话框移除 .txt 选项
- 拖拽打开增加扩展名过滤
- 浏览器降级路径同步过滤
2026-05-18 14:16:34 +08:00
thzxx 9f0b4550d1 fix: 启动时不自动创建空标签页,直接显示欢迎页 2026-05-18 14:01:43 +08:00
thzxx 5b1caf046c fix: shell.openExternal 添加协议白名单校验
仅允许 http/https 协议,阻止 javascript: 等潜在恶意链接。
2026-05-18 13:58:38 +08:00
thzxx aac6a0b073 fix: 预览选择复制、关闭超时、链接跳转、监听器泄漏
1. 预览区无法选择复制 — #preview 添加 user-select: text
2. IPC 监听器重复注册 — 注册前先 removeAllListeners 防止堆叠
3. 关闭确认取消后 5s 超时仍强制关闭 — 新增 cancelClose IPC 清除超时
4. 预览区链接点击离开应用 — 拦截点击,通过 shell.openExternal 打开
5. 预览区链接光标样式 — .markdown-body a 添加 cursor: pointer
2026-05-18 13:55:02 +08:00
thzxx 394c88e52f fix: 预览区无法选择复制内容
body 全局 user-select: none 导致预览面板继承了不可选择属性,
给 #preview 添加 user-select: text 和 cursor: text 修复。
2026-05-18 13:51:04 +08:00
thzxx b18a2b7e12 版本号升至 1.1.0 2026-05-18 13:37:10 +08:00
thzxx fe478edfde 更新 README.md 和 DESIGN.md:多标签页、暗色主题、文件监听等 v1.1.0 功能 2026-05-18 13:35:23 +08:00
thzxx 5ff89edd2b 清理:移除未使用的 openFiles IPC、优化 setModified 避免每次按键重建标签 DOM 2026-05-18 13:31:14 +08:00
thzxx 78f787a2db 新增多标签页支持:Ctrl+T 新建、Ctrl+W 关闭、Ctrl+Tab 切换、拖拽多文件打开 2026-05-18 13:28:45 +08:00
thzxx 0d82d4ff5e 更新 DESIGN.md:反映暗色主题、文件监听、未保存提醒、IPC 完整通道、localStorage 持久化等实际架构 2026-05-18 13:20:41 +08:00
thzxx ffb925c690 修复:移除 startWatching 中残留的 isModifiedExternally 引用(运行时 ReferenceError) 2026-05-18 13:12:59 +08:00
thzxx b613384030 修复:close超时保护、移除冗余变量、优化文件大小计算、去重formatBytes 2026-05-18 13:11:35 +08:00
thzxx cb29c67f94 全面优化:暗色主题、文件监听、未保存提醒、滚动同步、分屏记忆、文件大小显示、删除死代码 2026-05-18 13:09:31 +08:00
thzxx dbbf1efc78 DEVSETUP.md: 移除硬编码路径,通用化 2026-05-18 13:02:39 +08:00
thzxx 2d41bfd1d7 添加开发环境配置指南 DEVSETUP.md 2026-05-18 12:59:16 +08:00
thzxx 76e03c721c 移除 README 副标题中的 emoji 2026-05-18 12:52:26 +08:00
thzxx bfae531f07 Revert: 移除 README 标题中的 emoji 2026-05-18 12:50:14 +08:00
thzxx 14619fcf7d README 标题添加 🪶 emoji 2026-05-18 12:49:11 +08:00
thzxx 1d76a81ffa 移除原生菜单栏 2026-05-18 12:41:16 +08:00
thzxx 95eec61054 docs: redesign README with detailed Chinese docs and icon 2026-05-18 10:54:46 +08:00
thzxx c573266670 fix: resolve did-finish-load race condition, remove unused import
- Move did-finish-load listener before loadFile() to prevent missing the event
- Remove unused nativeImage import
2026-05-18 10:51:38 +08:00
thzxx 9891feab68 chore: add MIT license 2026-05-18 10:48:40 +08:00
thzxx 76e1699ee7 fix: resolve critical issues found in code review
- Fix marked.js v12 code highlighting (removed deprecated highlight option, use custom renderer.code)
- Fix open-file race condition (handle file association before window ready)
- Fix Tab key undo history (use execCommand/setRangeText instead of direct value assignment)
- Fix drag-drop file path tracking (use IPC readFile instead of FileReader)
- Fix CSP security (remove unsafe-inline from script-src)
- Improve scroll sync (line-based instead of percentage-based)
- Deduplicate file open dialog logic
- Fix .gitignore duplicate entry
2026-05-18 10:46:22 +08:00
thzxx fda3e5987d Initial commit: MarkLite Markdown Reader 2026-05-18 10:40:11 +08:00