Skip to content

Releases: 54shitaimzf/RootUp

v0.8.8

Choose a tag to compare

@github-actions github-actions released this 17 Sep 14:51

[0.8.8] - 2026-09-17

0.8.8-dev 发布前 UX 反馈与防重复小批次(错误可见化 / 忙碌守卫 / 空态补全)

不改变功能与完成度的体验补强(双路 UX 审查后落地的高价值小项):

  • 查询失败不再伪装成空态useFiles 暴露 error,文件页首页查询失败渲染错误空态 + 重试按钮(此前失败只写日志,页面照常显示「没有匹配的文件」误导用户);加载更多失败保留已加载内容不变。
  • 设置页扫描横幅对齐文件页:补「已处理/发现」计数与取消按钮,扫描失败(scan.lastError)此前只在文件页可见、设置页发起的失败无处呈现;settings.scanningNow 文案退役(复用 files.scanning/scanProgress/cancelScan)。
  • 操作日志弹窗内错误可见:弹窗内撤销失败此前写入页面层 ruleError 横幅——被弹窗遮罩挡住完全不可见,改为弹窗内部错误行;弹窗补「仅显示最近 50 条记录」说明(此前静默截断)。
  • 归档防连点useFileArchive 以 ref 守卫(handler 引用保持稳定,不破坏 FileRow memo 链)+ archiving 状态驱动工具条「归档所选/归档当前筛选」禁用,归档/撤销执行期间各入口(含行级单文件归档)早退,杜绝重复批次。
  • 扫描与翻页防连点:扫描中「重新扫描全部」禁用;「加载更多」查询进行中禁用(FileList 新增 loading prop)。
  • 空态与占位补全:文件页项目视图专属空态(此前复用「没有匹配的文件」+搜索技巧按钮);课程详情「相关文件与项目」三态(加载中/为空/失败——此前加载中与为空整块消失);归档确认弹窗预检统计返回前显示「正在统计归档内容…」(预检失败不显示占位、确认仍可用)。
  • 高频截断文本补悬浮提示:项目页项目名/路径、课程卡名称(周/紧凑两种密度 + 叠层浮层)、作业标题/备注补 title(文件行 FileRow 此前已全覆盖,此为漏网点)。
  • 查询变化后列表回顶:搜索词/视图/筛选/排序变化时滚动回顶(滚动容器为 App 布局 <main>,与 VirtualRows 同源);加载更多与刷新保持当前视口、首挂载跳过(不破坏返回时的滚动位置)。
  • 验收:前端 vitest 537 例全绿(新增 3 例:查询失败 error 暴露与清空、预检统计中占位/失败不占位)、tsc 零错、check-arch 绿;i18n 双语成对(+8 对新 key,-1 对退役 key)。

0.8.8-dev 发布前性能与可读性加固(批次 A:行为零变化)

功能与完成度零变化前提下的发布前加固批次(全库前后端性能/可读性审查后落地):

  • 文件页渲染身份收敛FileRowReact.memo 跳过无关重渲(此前全仓库零 memo,搜索框每次按键在防抖触发前重渲全部可见行);FilePage 侧行为 handler(打开/定位/复制/IDE/解压/删除)与 rowHandlers / archiveVisible 统一 useCallback/useMemo 稳定引用,refreshList 稳定化(此前每帧新建身份会传染 useFileArchive 全部回调);unarchivedCount 入 useMemo。
  • 虚拟滚动去抖VirtualRows 可见区间未变时保持原对象身份(滚动事件不再驱动无意义重渲);list-enter 入场动画仅在非虚拟分支播放(虚拟行随区间重挂载,滚动时重放闪烁)。
  • 实时事件订阅稳定化useFiles 的 files-changed 监听改为挂载期订阅一次 + ref 读取筛选/翻页瞬时值(此前每次查询变化注销重订阅,异步注册间隙可能漏事件)。
  • 学业页派生值 memo:StudyPage 未显式传入 today 时冻结挂载时刻(默认参数每帧新建 Date 击穿下游 memo)、courseCounts / pending / reminder / existingColors / 选中课程作业过滤入 useMemo;CourseScheduleView 作业计数聚合为 Map(每卡片 filter 全表 O(n×m) 退役)、按天分组 + 布局派生单次完成(原每次渲染对全列表 7 遍 filter 再逐列重排)、叠层浮层扇形布局参数提为命名常量。
  • 设置页微收敛SETTINGS_GUIDE.find 同表达式 5 处 JSX 复制提为 openGuide;变更日志条数 50 命名 ACTIONS_LOG_LIMIT
  • 死代码清理filterFiles(客户端过滤,已被后端 query_files 取代)与 loadMoreMerge(mergeFiles 纯别名)删除,对应 8 个测试用例退役。
  • 设置读取热路径去盘load_settings 的损坏备份检查改每进程一次(原子标记短路)——此前 query_files 等高频命令每次调用都读盘 + 全量 JSON 解析 settings.json,仅为反复确认同一文件可读。
  • schema v11idx_units_kind(kind, state) 组合索引——kind:software / kind:project 同步失效清理与归档软件快照原为全表扫(state != deleted 范围条件下 idx_units_state 无法支撑 kind 过滤)。
  • 派生层批量失效清理:新增 IndexStore::mark_deleted_many(单事务分块 path IN + 批量 FTS 清理,与 mark_missing 同模式),software/project 同步的逐条 mark_deleted 循环(各自隐式事务,持锁放大)退役。
  • 零散算法与分配discover_software 去重 Vec.contains O(n²) → HashSet(与 discover_projects 同构);watcher 批次回调先借用遍历入队再 move 发射(整批 FileRecord 深拷贝退役,发射无条件执行);扫描上限 10_000(三处散落)与墓碑保留窗口 30 天提为命名常量(UNIT_SCAN_CAP / TOMBSTONE_RETENTION_MS)。
  • 验收:前端 vitest 534 例全绿(净 -8 死代码用例)、tsc 零错、check-arch 绿;Rust 393 例全绿(迁移测试跟进 v11 + idx_units_kind 存在性断言)、fmt/clippy/rust-arch 绿。
  • 同轮审查的批次 B 立项 0.8.9:只读重命令 async 化(Tauri v2 同步命令在主线程执行,慢盘查询冻结 UI——最高收益项,因改变命令间调度顺序须单独批次 + 手测)、LOWER(path) LIKE 前缀查询索引化(EXPLAIN QUERY PLAN 验证)、archive_project 单路径校验去全量 discover(见 ROADMAP v0.8.9)。

0.8.8-dev UI 一致性审查修复(弹层栈 / 反馈通道 / 键盘可达性)

全库前端五维审查(一致性/合理性/美观/易用/复用)后的修复批次:

  • 弹层栈与焦点管理Modal 建立进程内弹层注册表,按 DOM 顺序判定栈顶——一次 Esc 只关最顶层,嵌套确认弹窗(标签管理/课程表单/学期管理/归档设置等)不再连锁关闭父弹窗;打开时焦点移入面板(内容自带 autoFocus 的控件优先),Tab 在面板内循环,关闭后焦点还原到触发元素;Button/IconButton/SegmentedControl/图标选择器补 focus-visible 品牌色焦点环,文件行操作区补 group-focus-within 显影(键盘 Tab 可见)。
  • 归档设置嵌套确认弹窗移位:自动归档确认与 warn 二次确认从 Modal children 移到兄弟节点——floating-panelbackdrop-filter 会为 fixed 后代创建包含块,嵌在面板内导致确认弹窗遮罩盖不满视口(视觉缺陷)。
  • 文件页通知/错误双通道actionError(打开/删除/解压失败 → error 红色横幅)与 actionNotice(IDE 已打开、复制路径成功 → brand 横幅)拆分,均带关闭按钮;IDE 打开成功消息不再以警告色呈现;复制路径成功新增「已复制到剪贴板」反馈。
  • 软件目录移除确认:取消软件认定 / 解除排除补 ConfirmDialog(带目录回显),与监控目录移除同纪律——两者都改变索引可见性,不允许裸删;设置页 notice/dirError/ruleError 横幅补关闭按钮。
  • 前后端一致性:项目归档子目录名「项目」入 fixtures/app-contracts.jsonarchiveProjectDir),前端 ARCHIVE_PROJECT_DIR(ProjectsPage 归档预览)与后端 core::archive::PROJECT_ARCHIVE_DIR 双端测试锁定,消除前端硬编码镜像漂移风险。
  • 一致性清扫SegmentedControl 新增 pill 胶囊变体(含 ariaLabel),收编文件页四视图与设置页主题切换;课程时长预设与分类映射「仅看自定义」迁移到 ChipChip active 与标签图标选择器补深色 dark:bg-brand-500SegmentedControl 徽标选中色统一 brand-700;课表翻周按钮换 IconButtonBanner 关闭按钮换 IconButton;文件页加载文案颜色统一 text-muted
  • 动效令牌闭环global.css 以非分层规则把 .transition-colors 时长统一为 --duration-fast(覆盖 Tailwind 默认 150ms),兑现 tokens.css「动效时长禁止散落硬编码」的约定。
  • 验收:前端 vitest 542 例全绿(新增 9 例:Esc 栈/焦点循环/焦点还原/pill/双通道/软件移除确认×2/契约)、tsc 零错;Rust 393 例全绿(新增契约断言)、fmt/clippy/rust-arch 绿;i18n 双语 618 键对齐;check-arch / check:version 绿。

0.8.8「整理与回收」(功能,开发收官)

  • 软件单元识别第一版(0.8.7 阶段三并入):core/software.rs 权威标记(PAF App 目录 + portable 启动器 / Scoop install.json+manifest.json 清单对 / 便携启动器形态)+ exe 群聚结构启发式 + 用户裁决(认定 / 排除可持久化,排除优先);infra/software_sync.rs 发现结果派生写入 units(kind=software + software_kind 识别依据),启动延迟服务与裁决变更后双触发,陈旧单元标 deleted 可重扫恢复;schema v9(units.software_kind)。
  • 图标 key 注册表(下半)fixtures/icon-keys.json 真源 + lib/iconKeys.ts(labels / units / softwareKinds 三段键空间 + resolveIconKey 统一未知回退),双端 fixture 门禁测试(Rust DETECTED_BY_ALL 同源断言 + TS LABEL_ICONS 键空间对齐);文件行 project=Folder / software=Package 单元视觉(文件行沿用类别图标零回归)。
  • 文件页隐藏系统与组件内部文件:单一设置项(整体开关),展示层过滤 desktop.ini / Thumbs.db / .DS_Store、已识别软件组件内部全部文件、项目内 exe/dll/sys;索引保留,搜索与统计口径同步,关闭立即完整还原(query_files 读设置 hide_internal_files)。
  • 归档安全收口archive_preflight 预检(数量 / 体积 / exe/dll / 符号链接 / 软件冲突 / 指向源树的快捷方式引用报告,5 万条上限显式 truncated)——确认弹窗展示报告,软件冲突需勾选风险确认(archive.software_protected 拒绝整树移动,allow_software 显式放行,归档三入口同守卫);命令层归属校验 archive.forbidden 随 G 批落地。
  • 应用内删除走回收站delete_to_trash 统一删除走系统回收站(可恢复),归属校验与软件保护与归档同源;错误映射 delete.failed / delete.locked;文件页行级删除 + 确认弹窗。
  • 文件分类变更日志 v1:schema v10 action_log 追溯表——归档 / 撤销 / 回收站删除 / 定向重分类 / 解压全量记录;设置页高级区「变更日志」弹窗(最近 50 条、类型徽标、归档条目一键撤销)。
  • 智能解压:zip 解压到同级独立文件夹并入队扫描接入索引链路;两阶段安全边界(条目清单先整体校验:路径穿越 / 绝对路径 / 盘符拒绝、总体积 1GB 上限、压缩比 200:1 炸弹检测、条目数 1 万上限,后落盘);extract.not_archive / path_traversal / bomb_suspected / too_many_entries / failed 五错误码;文件页 zip 行「解压到独立文件夹」入口。
  • 信息来源单一化收口(0.8.7 审计阶段三):query_files 显式 totalKnown/hasMore 取代 total=-1 哨兵;监控目录三端点合并为 watched_dirs_overviewapply_scheme(id) 后端原子应用 + save_scheme 按 id upsert(消 schemes.json 与 settings 规则双真相);add_project_dir 返回规范化路径(AddDirOutcome 对称);ArchiveFailure path+phase 语义统一。
  • 错误响应与对账机制:错误码注册表(G 批)——fixtures/error-codes.json 真源 22 码 × 三级分级(retryable/ignorable/needs_user),core/error_codes.rslib/errorCodes.ts 双端镜像,归档链路错误全面 code|message 结构化;可靠性加固(H 批)——启动归档对账(磁盘真源修复索引 / 标记异常)、启动清理 *.json.tmp 残留、子进程强杀中断集成测试与环境变动(手工还原 / 两侧皆失 / 盘符卸载形态)用例全绿。
  • 可靠性加固·监视器异步化:大目录首次启动的监视器注册移入延迟服务后台线程(消除 10k/20k 目录 4–8 秒启动阻塞);运行期「添加监控目录」同样后台注册(注册前复检设置成员资格防移除竞态)。

v0.8.7

Choose a tag to compare

@github-actions github-actions released this 17 Sep 01:09

[0.8.7] - 2026-09-17

0.8.7 工程与体验小修(发布前收尾)

  • CI 时区盲区防护:新增非 UTC 时区前端测试变体 job(windows-latest 切美东时区跑 vitest)——PR #1 暴露 CI 运行器固定 UTC,西偏移时区缺陷线上永不触发;共享 fixture「任意宿主时区双端一致」约定自此有 CI 守护。
  • 软件视图预留空态:文件页软件视图(kind:software,数据待 0.8.8 软件单元识别)空结果时显示「软件单元即将上线」说明(中英双语),不再误报「没有匹配的文件」。
  • ROADMAP 状态重建:FTS5 全文启用评估从「后续规划(未排期)」正式归入 v0.8.9 决策门制(0.8.6 评估原文「目标 0.8.6 阶段二或 0.8.7」已滑档,消除无归属漂移);v0.8.8 可靠性加固补「运行期添加监控目录的监视器注册同样异步化」(当前同步递归注册在大目录下阻塞命令数秒,与启动阻塞同源);0.8.7 状态行补记收官后修复并入情况。ARCHITECTURE 工程约定新增「时区无关的日期语义」(纯日期串语义钉死本地当天,双端口径对齐)。

0.8.7 缺陷修复(Fixed,PR #1

  • 自然日差时区缺陷calendarDaysUntil / overdueDays 对纯日期串(YYYY-MM-DD)经 new Date 按 ES 规范以 UTC 午夜解析,宿主时区为西偏移(如 UTC-4)时日期回退一天——共享 fixture 用例 due_at=2026-08-06, expected=0 实得 -1(CI 的 UTC 机器不触发,本地审计暴露)。新增 parseDueLocal:纯日期串补本地正午解析,与后端 parse_due_date 的「纯日期=当天」口径对齐,跨语言契约 fixture 在任意宿主时区下双端一致。
  • FileList 行渲染缺 key:非虚拟路径(<ul> 直排)的 FileRow 无 key,触发 React「unique key」警告;补 key={file.path}(稳定唯一,虚拟滚动路径由 VirtualRows 自行包裹不受影响)。
  • dev 依赖漏洞清零npm audit fix@vitest/mocker moderate ×2 路径遍历 / nanoid high 零尺寸死循环),仅 patch 级 lockfile 变更,不进产品产物。

0.8.7 归档安全与自动归档强化(功能)

  • 归档根安全评估core/archive_guard.rs,规则真源):三级判定——系统目录树(Windows / Program Files / ProgramData)与软件存盘区(AppData 三分支整树)及盘根为 blocked(后端直接拒绝);用户根与桌面 / 文档 / 下载等核心目录本身为 warn(前端二次确认);其余及上述目录的子目录为 safe(「文档下新建专用子目录」即推荐形态)。判定矩阵入 fixtures/archive-guard-cases.json
  • 拦截策略:settings_io 单入口仅在本次显式修改 archive_root 时执行 blocked 拒绝(结构化错误码 archive_guard.blocked|<reason>)——存量违规配置(如盘根)不锁死其他设置字段的写入,用户主动换位置时才被拦下并引导。
  • 归档设置弹窗:输入 / 浏览后防抖实时评估并分级告警(blocked 禁用保存、warn 弹危险确认);新增「推荐位置」候选(后端 recommended_archive_roots,用户目录下专用子目录);后端拦截错误以结构化码兜底。
  • 自动归档严肃化:开启方向需危险确认弹层(后果说明:新文件自动移入档案库、跨盘/占用失败保留原位),关闭方向直接生效;开启态按钮 amber 化 + 警示图标;设置页归档行「已开启」改 amber 徽章;文件页自动归档横幅升为 warn 色。
  • 托盘移除自动归档菜单项:开关只保留在设置弹窗内(带确认),消除「单击托盘即开启、零确认」的危险入口;旧菜单缓存点击兜底唤起主窗口。
  • 首启向导 3→4 步:新增第③步「选择归档位置」——推荐候选 + 原生浏览 + 实时安全评估 + 「暂不启用归档」四选一,必须做出选择才能进入下一步;选择经增量设置命令落盘。localStorage 标记升级 v2,已完成 v1 的老用户不强制重跑。

0.8.7 阶段二(units 统一索引)

  • schema v8files 表迁移为统一单元表 unitskind: file | project | software + project_kind 扩展列),索引重建为 idx_units_*,FTS 表同步改名;迁移含数据保全测试(标签 / 归档墓碑 / 旧表移除 / 新列可写)。
  • kind: 搜索语法:合法值 file / project / software(未知回落普通文本,同 cat: 模式);契约用例入 fixtures/query-grammar-cases.json;前端自动补全新增「按内容类型」关键词与三个值候选。
  • 项目单元入库:新增 infra/project_sync.rsdiscover_projects 发现结果派生写入 units(kind=project),移除的项目单元标记 deleted;发现逻辑仍是唯一真源,units 只作查询派生层。同步时机:启动延迟服务(后台)与监控 / 项目目录变更后。
  • 课程挂钩Course 增别名字段(serde default 兼容旧数据),课程编辑表单增别名输入(逗号分隔);新命令 course_overview 返回相关文件(课程标签命中)与相关项目(项目名 / 路径按课程名或别名命中);课程详情弹层展示「相关文件与项目」。
  • 文件页四视图:全部 / 文件 / 项目 / 软件 tabs(kind: token 注入查询,前端只生成不解释);默认「文件」视图保持既有行为零回归,软件视图为阶段三预留(数据就绪即显)。

0.8.7 架构小修(缺口收口与错误码最小切片)

  • 架构核查(五提交治理后复查)发现的 4 个残留缺口收口:前端 updateSettings 参数类型收窄为 Partial<Omit<Settings, "watched_dirs" | "project_dirs" | "version">>(编译期拦截不可写字段,与后端 SettingsPatch 白名单对称);useSettings flush 失败回填挂起补丁(乐观态不再与后端静默分叉,下次事件冲刷 / commit 吸收时重试,附测试);schemes.rs 模块注释中已删除的 set_settings 引用改为 update_settingsQueryPage.total=-1 哨兵语义补入前端类型注释(0.8.8 以 totalKnown/hasMore 替代)。
  • 错误码注册表最小切片落地:scheme_store 需要前端分支处理的错误改 code|message 结构化前缀(scheme.duplicate / scheme.limit / scheme.not_found);新增 lib/errors.tserrorCode / errorMessage,code 形状校验防误判)并测试;SchemeDialog 的错误文案子串匹配(includes("已存在")——违反「前端禁止解析后端文本」边界口诀)退役,改按 code 映射 i18n、无 code 透传 message。
  • 清理本地工具产物目录(.mimosa/src-tauri/.mimosa/scripts/smoke-summary.log,均已被 .gitignore 覆盖,不入库)。

0.8.7 帮助文档补漏(cat: 语法同步)

  • 补齐 cat: 迁移时遗漏的帮助入口:搜索语法表(文件页「?」弹层与帮助中心「搜索语法」专区共用的单一来源)新增 cat 条目,type 条目措辞钉死为「按扩展名精确筛选」(消除「文件类型」歧义旧词——正是当初语义错位的源头);任务指南「搜索语法技巧」文章补分类筛选示例并调整摘要;「搜索与整理文件」文章「按类型筛选」统一为「按分类」;帮助搜索关键词补 cat / 分类 / category(中英双语同步,i18n 成对与文案质量门禁全绿)。

0.8.7 前后端职责单一化治理(架构)

  • 三路全库审计(前端状态所有权 / 双端规则重复 / 后端命令面),报告与分期见 docs/reports/0.8.7-single-source-audit.md;边界口诀立规入 ARCHITECTURE:状态与业务规则归后端唯一源、交互与展示归前端、跨端常量用 fixture 锁死、前端禁止解析后端文本 / 持有后端状态副本 / 整对象覆盖写。
  • 阶段一(设置状态 bug 类根治)SettingsPatch 增量命令替代整对象 set_settingswatched_dirs/project_dirs 移出补丁强制走专用命令);新增 infra/settings_io.rs 写入单入口——互斥串行化命令 / 托盘 / 归档 journal 全部写路径,写后统一刷新缓存并广播 settings-changed(载荷为变更字段名);归档/撤销项目改为移动成功后重读设置,缩小竞态窗口;前端 useSettings 只发增量补丁(commit 吸收挂起补丁防丢字段)、设置事件先冲刷挂起再拉真源(修托盘事件覆盖未落盘修改)、刷新失败重试+日志、新增 mergeLocal(纯本地回显)与 syncFromBackend;SettingsPage 六处整对象写改增量、reset 只同步内存。
  • 阶段二(双端漂移真相契约化):修复分类筛选语义错位历史 bug——新增 cat:/category: 前缀(类别按标签匹配,未知回落文本),chips 与自动补全迁移,type: 钉死精确扩展名语义;ArchiveOutcome 透出真实 source→dest 映射(顺带修复 plan_file_target 盘根双斜杠边界 bug);删除前端目录校验镜像 pathValidation.ts(规则唯一源归后端);新增 query 语法 / 归档目标 / 生效分类映射 / 学业周次四个契约 fixture 双端同跑;app-contracts.json 扩容 IDE 白名单 / 项目类型 / 标签 key 规则并双端断言,FILE_STATES 补后端单向门禁。
  • 落盘:阶段三(命令面收紧:哨兵字段显式化、监控目录端点合并、apply_scheme 原子命令等)与阶段四(错误码注册表迁移细节)并入 ROADMAP v0.8.8;搜索系统升级(FTS5 全文 / 语法手册 / 分面 / 相关性)入「后续规划」,本轮 cat: + 语法契约为最小前置。

0.8.7 修复(监控目录丢失与归档失败反馈)

  • 修复严重 bug:设置页监控目录列表与全局设置是两份平行状态(添加 / 移除目录只写本地列表、不回写全局 settings),任何「全量替换」式保存(保存归档设置、语言 / 主题切换等)都会用页面加载时的旧快照覆盖 watched_dirs——运行期添加的监控目录在保存后「隐形」(设置页看不到、重启也不回来),但索引文件仍留在文件列表;被移除的目录则会在下次保存时复活。现收敛为单一数据源:列表直接派生自全局 settings,添加 / 移除目录走合并更新;补「添加目录后保存归档设置不丢目录」回归测试。
  • 归档失败横幅可读性重构:此前任一文件失败就在红色横幅塞入原始错误串(后端以完整路径开头),路径挤占导致具体原因不可见。现结构化分层——部分成功用警示色、全部失败用错误色,标题给出失败计数,首个失败显示文件名(悬浮 Tooltip 完整路径)+ 独立原因(跨磁盘 / 文件占用等),其余失败数量另行说明;splitPathError / pathBasename 纯函数入库并测试。
  • ROADMAP v0.8.8 新增「文件页隐藏系统与组件内部文件」单一设置项规划(桌面小组件缓存 / 软件组件 / 项目程序内部文件,展示层过滤不删数据,复用软件组件识别与忽略规则基建)。

0.8.7 界面优化(归档目的地展示)

  • 归档目的地统一「档案库」友好名(en 为 Library):确认弹层、设置页归档行、项目归档确认不再平铺完整路径,目的地渲染为下划线链接(新共享组件 components/RevealLink.tsx——Tooltip 悬浮显完整路径、点击在资源管理器定位、根未创建等失败静默;品牌链接文本样式立规入 ARCHITECTURE)。
  • 归档确认弹层结构化:删除「根 + 3 条完整目标路径」的字符串拼接(其 \n<p> 中从未换行、三条路径粘成一团),改为简洁导语 + 档案库链接 + 前 3 个待归档文件名(悬浮显单文件完整目标路径);超出 3 个提供「查看全部」完整列表视图(同弹窗切换视图、加宽、内部滚动、可返回,footer 归档/取消常驻,重开弹层自动复位);筛选模式补齐目的地展示。
  • 修复归档预览路径混合分隔符(archivePreview/ 拼 Windows 根产生 D:\Arc/document/a.pdf):lib/fileUtils.ts 新增 resolveArchiveDir / joinArchivePath / archiveDestPath 纯函数(统一 / 规范 + 剥除根尾部多余分隔符),文件归档与项目归档共用。
  • 「归档当前筛选」在 COUNT 治理(筛选态 total=-1)下不再显示「(-1)」:按钮与确认弹层退化为无计数文案(archiveFilteredPlain / archiveConfirmNoCount 等)。
  • 设置页归档行摘要 ReactNode 化;归档设置弹窗「最近归档」样本目标只显示文件名(悬浮显完整路径);自动归档提示与归档说明文案「归档根」改「档案库」表述。
  • 微调(反馈收口):移除监控目录确认弹层不再把完整路径插值进句子(长路径产生难看横向滚动条)——路径独立成截断行、悬浮 Tooltip 显全路径,ConfirmDialog 说明文字补 break-words 兜底其余插值弹层;监控目录列表长路径补省略号(内层 min-w-0);归档确认弹层文件行加盒底样式与说明文字形成视觉分层;归档根输入框旁新增「浏览…」按钮,接入既有原生目录选择器(openDirectoryDialog,与监控目录添加同源),取消选择不动手输路径。
  • 修复 CI clippy 1.98 新 lint chunks_exact_to_as_chunks 构建失败:mft / ntfs UTF-16 解析改用 as_chunks::<2>()(语义等价,本地 rustup 1.98.1 复现红→修复转绿)。

0.8.7 阶段一(契约与界面地基)

  • 契约单点化:新增 fixtures/app-contracts.json 跨语言契约真源(应用级事件名 / 文件状态 / 类别清单);Rust core/events.rs 事件常量段、TS lib/events.ts 镜像与双端 fixture 一致性测试;全部 emit/listen 改用常量;check-arch / check-rust-arch 新增裸事件名字面量防漂移门禁(正反用例自测)。
  • FileState 收口:TS FILE_STATES 联合类型替代内联串联合(FileRecord.state / 筛选选项收口),Rust 监听回调经 FileState::Indexed 枚举比较,不再裸串。
  • 类别视觉注册表:lib/categoryDefs.ts 统一「图标 + 圆底配色」(resolveCategoryKey / resolveCategoryVisual,未知回退 other),FileTypeIcon 变薄为纯渲染,FilterIcon / 归档预览迁移,删除三处平行硬编码;Rust Category::ALL 与 fixture 一致性断言。
  • 图标消费模型统一(上半):theme/icons.ts 成为全库唯一 lucide 入口(v1.3 皮肤替换断点),37 处直连导入全部迁移;check-arch 新增 lucide 直连门禁(白名单仅 theme/icons.ts);构建对比 tree-shaking 无回退(首包 gzip 104.68 → 104.81 kB)。
  • 监听热路径修复:ArchiveService::is_active()(三态单测),监听回调删除每次批次的 load_settings 磁盘读,改经 managed_state::refresh 推送的内存缓存;设置写路径(设置保存/恢复默认/托盘切换/启动装配)全覆盖,切换即生效。
  • 文件页拆解:pages/FilePage.tsx 收敛为页面壳(951 → 432 行);features/files/ 新增 model 纯逻辑、FileRow / FileList / FileToolbar / FileBanners / ArchiveConfirmDialog 五组件与 useFileArchive 归档状态机;FileRow 以「记录 + 展示派生」为 props,供阶段二四视图与 v0.9.4 命令面板复用;FilePage.test 断言零删除全绿,真实应用 9 组深/浅 × 中/英前后矩阵截图对比无回归(docs/reports/assets/0.8.7-phase1/)。
  • 修复 tray_menu 种子测试日期漂移(临期判断基准对齐运行日,此前随日期推移必然失败)。

v0.8.6

Choose a tag to compare

@github-actions github-actions released this 09 Aug 18:54

[0.8.6] - 2026-08-10

0.8.6 阶段一(监控与查询性能)

  • 扫描优化(实验先行):MFT 按 $MFT 映射对分 run 流式读取、USA 原地修复、紧凑索引与子树定向解析(小目录不再全卷重建路径);与 walkdir 对齐 skip_roots(项目根/归档根整棵不索引);USN 卷句柄改 FILE_READ_DATA 并携带真实日志 ID,本机启动补账可用;batch_size 默认 2000 + 多行 upsert;扫描分阶段计时(read/parse/resolve/db ms)。
  • 原生枚举器边界审查:对照 walkdir 源码补齐长路径(\\?\)、单条目错误续枚举、junction / Unicode / 空目录语义,见 benchmarks/enumerator-safety-review.md
  • 原生枚举器落地为默认:全链路等价 PASS(合成 1k/10k/50k + 真实 Desktop 71,923,DB 零差异;50k 12.6x、真实 4.3x),ROOTUP_ENUM=walkdir 诊断回退;jwalk 复评未达门槛不引入(原型已移除),见 benchmarks/enum-compare.md / benchmarks/jwalk-evaluation.md
  • MFT 读取策略落地:parallel 为默认(read_ms 约 -27%,合成 50k / 边界 / 真实 71,923 严格零差异),ROOTUP_MFT_READ=sequential 诊断回退;mftfile($MFT 直读)本机被拒、nobuffer 无收益,均已移除;scripts/mft-read-variants.ps1 一键验证,结论见 benchmarks/mft-read-variants.md
  • 扫描选择优化器:双线性成本模型(MFT 固定成本随整卷文件表大小缩放,每文件成本实测校准),动态计算交叉点并带迟滞决策,替代固定阈值;决策与校准日志 scan: 快速扫描决策,模型 core/scan_choice.rs
  • 交叉点实验:1k/10k 时 walkdir 胜出(MFT 读全卷 2.6GB 固定成本),50k 起 MFT 胜出(5977ms vs 8828ms);20k/30k 边界受语料冷缓存影响有噪声,阈值待 25k 确认(不影响默认策略);真实目录 71,923 文件 MFT 与 walkdir 数量、大小、时间全等(attribute-list 大小兜底后 size diff=0);读取微优化(FILE_FLAG_SEQUENTIAL_SCAN + 32MiB 块 + FTS 表存在性单次检查 + DB 子批 1000 + 枚举器快照)带来 MFT 总耗时约 5%–8% 可测量下降;默认扫描策略仍 walkdir。
  • MFT 快速基线(原始 $MFT,布局参考 Linux-ntfs / ntfs-3g / Sleuth Kit,不复制代码):FILE 记录解析、USA 修复、extent/元文件/重解析点跳过、硬链接主名策略、路径重建;ROOTUP_MFT_SCAN=1 + 管理员门控,任何失败回退 walkdir。
  • USN 启动补账:DeltaSource 契约 + usn_state(schema v5),应用关闭期间变更启动时一次性对齐,运行期 notify 为主不轮询;无基线自动记录当前 USN。
  • FTS5 文本索引(schema v6 占位,未默认启用):contentless + trigram 实现与等价测试保留;批量同步成本高,待“扫描后批量重建”优化后再启用,见 benchmarks/fts-evaluation.md
  • 索引维护复核:移除 idx_files_type(schema v7)——同轮有/无对比显示其无查询收益且增加写放大,见 benchmarks/index-set-evaluation.md
  • 监控目录缺失对账:系统报“路径不存在”时索引标记 deleted(重扫可恢复)+ 设置页缺失标记(watched_dir_health)。
  • 冒烟与审计扩展:USN 降级日志断言、files_fts / usn_state 审计项。

0.8.6 阶段二(规模与体积)

  • 虚拟滚动(自研轻量):文件列表固定行高虚拟渲染(overscan=5),数万至十万文件滚动与加载更多保持流畅,列表行结构与交互不变。
  • release profile:lto / codegen-units=1 / strip / panic=abort / opt-level=s,官方基线以最终构建形态测量。
  • 前端页面级分包:React.lazy + vendor 拆分,首包 gzip 远低于 200KB 目标;语言包整体保留。
  • 扫描对比与诊断:ROOTUP_MFT_FORCE=1 诊断开关(仅验证脚本使用),支持 walkdir / native / MFT / 优化器四态受控对比;默认行为仍由优化器按模型决策。
  • 性能基准单轨化:移除 0.8.3/0.8.4 旧基线;0.8.5 在 25H2 本机全量复测(0.8.5-rerun)作为发布对比基准,0.8.6-dev 保留为阶段内锚点;官方基线与四态扫描对比图入 README。

v0.8.5

Choose a tag to compare

@github-actions github-actions released this 08 Aug 10:04

[0.8.5] - 2026-08-08

性能与查询(0.8.5)

  • 查询加速:files 表按实测收窄为三个索引(state / modified / type),文本、标签、类型查询 p50 提升 70%+,OFFSET 翻页提升约 89%;keyset 游标分页(nextCursor)单页约 0.1ms,替代 OFFSET 深翻页。
  • COUNT 治理:默认查询不再 COUNT(total=-1),仅首页无筛选返回精确总数;前端计数栏降级为“已显示 N 个”。
  • 显式 AND 语法:+label:blabel:a AND label:b 双写(+ 为主),同维度默认 OR 语义不变;搜索补全、帮助中心与边界矩阵同步。
  • 标签过滤评估:逗号串 + LIKE 优于 json_each(实测约快一倍),保持现状不迁表;FTS5 trigram 文本查询约为 LIKE 的 2 倍速,决策记录为 0.8.6 候选。
  • NTFS 快速扫描(决策门):引入官方 windows crate,实现卷能力探测、USN 记录解析与路径重建;USN 不含文件大小且日志可能被裁剪,快速全量路径以 ROOTUP_FAST_SCAN=1 实验性门控,默认回退 walkdir 保证正确性;MFT 基线顺延 0.8.6,详见 benchmarks/mft-usn-evaluation.md
  • 分类加速:课程分类改用 Aho-Corasick 一次多模式匹配,含重叠命中等价测试;忽略规则因语义(前缀/精确/包裹)不适用 AC,保持线性。
  • 性能基准:0.8.5 vs 0.8.4 单轨对比(58 项指标、引擎 Full + 系统 10k 7 轮);查询大提速、扫描/写入为索引维护代价(10k 持平、100k 约 +40% 待安静环境复核),完整警示与 0.8.6 去向见 docs/reports/0.8.5-release-report.md
  • 帮助入口视觉去重:页头“查看本页帮助”改为“Info 图标 + 帮助文字”按钮,搜索框保留“?”语法帮助;两个入口语义不同(本页指南 vs 搜索语法)且视觉明确区分。
  • 侧栏帮助中心入口与页头帮助按钮区分:左下角“帮助与新手入门”改为浅色圆角卡片(书本图标 + 短副标题),悬停悬浮提示补全完整内容,避免窄栏截断;版本号改为居中小徽标(薄荷小芽 + 等宽字体)。
  • 发布卫生:冒烟测试结束后自动把临时目录的索引记录标记 deleted,不再向真实索引库遗留幽灵文件(曾导致文件页总数多出测试残留)。

易用性迭代(0.8.5 前置)

  • 帮助中心升级为五分区:新增“任务指南”(7 篇流程式文章)与“遇到问题”(7 篇故障排查)分区,文章可展开步骤、跳转相关条目与直达页面动作;原“搜索与高级用法”分区更名为“搜索语法”。
  • 帮助内轻量搜索:覆盖任务指南、遇到问题、设置说明与更新亮点,按“标题 > 关键词 > 摘要”命中排序,点击结果直达文章;无结果时给出建议。
  • 页面“?”入口:文件 / 项目 / 学业 / 设置四个主页面页头新增帮助按钮,直达对应文章或分区;PageHeader 以可选 actions 插槽实现,不传时渲染结构不变。
  • 更新亮点:帮助中心“新手入门”顶部展示当前版本(0.8.4)用户视角亮点,随版本注册表维护,无当前版本条目时隐藏。
  • 文章反馈:每篇帮助文章底部“有帮助 / 没帮助”本地记录(rootup.help.feedback.v1),后投覆盖先投,不上传、无后端接口。
  • 空状态指引:文件无监控目录 / 搜索无结果、项目为空、学业无课程 / 无作业时新增次要帮助入口,保留原有主操作按钮。
  • 文案规范:新增 docs/COPYWRITING.md(参考 Microsoft / Google 写作指南与中文文案排版指北),帮助文案禁用 AI 腔表达与内部实现标识符,质量门禁入测试。

v0.8.4

Choose a tag to compare

@github-actions github-actions released this 07 Aug 00:49

[0.8.4] - 2026-08-07

修复(0.8.4 前置加固)

  • 归档事务原子化:IndexStore 新增 archive_record / unarchive_record,记录迁移与操作日志(或 undone 标记)在单事务内完成;DB 失败时磁盘文件自动回滚,撤销改为逐项即时标记,消除半成品窗口。
  • 设置版本盖章:set_settings 写入前强制 Settings::normalize(),schema 版本一律以 CURRENT_VERSION 为准;前端兜底常量同步为 3。
  • 托盘自动归档开关补发 settings-changed 事件,前端设置/文件页即时刷新。
  • 归档快捷方式目标重映射改为大小写安全的分段前缀匹配(Windows 下 C:/proj 不再误命中 C:/proj2)。
  • 重命名索引收敛:RenamedFrom 事件立即将旧路径标记 deleted 并广播,文件列表不再残留旧路径幽灵记录;next_state 状态机同步更新。
  • 默认忽略规则单一来源:后端 IgnoreMatcher::new() 改为从 Settings::default().ignore_rules 构造;前端预设与兜底统一引用 DEFAULT_IGNORE_RULES;两侧均对共享 fixture 断言。
  • 提醒语义一致性:Rust 与 TS 测试共同消费 fixtures/reminder-cases.json,锁定日期差、临期边界与分组语义。
  • 公共时间工具:新增 infra/time.rs::now_millis(),替换四处重复实现。

重构

  • refresh_managed_state 从组合根 app.rs 迁至 infra/managed_state.rs,命令层与托盘不再反向依赖 app.rsQuitFlag 同步迁至 infra/window.rs
  • 新增 scripts/check-rust-arch.ps1npm run check:arch:rust)并在 CI 强制执行:core 保持纯业务、commands 不回指组合根、infra 不依赖命令层。

新增(0.8.4)

  • 扫描器接口化:新增 FileEnumeratorScanDiffStore 契约,walkdir 默认实现;差集从内存快照改为 SQLite 临时表 / keyset,内存占用 O(批次)。
  • SQLite 调优与存储治理:应用 PRAGMA 组(WAL/synchronous/mmap/cache/busy_timeout 等)、墓碑记录 30 天物理清理(schema v3 deleted_at)、损坏备份保留最近 3 份、快捷图标对账、设置保存 500ms 防抖合并写。
  • 启动与后台优化:setup 各阶段耗时埋点、监听/扫描/自动归档/托盘延迟到前端就绪后启动(含 10s 回退)、scanner 与自动归档改为 Condvar 事件驱动、日志 200ms 周期落盘。
  • 文件列表排序与翻页:名称/类型/大小/修改时间/标签五维升降序(确定性规则),页码可感知,加载更多保持滚动位置。
  • 统一输入边界:目录输入统一校验(清洗/环境变量展开/非法字符/保留名/盘根拒绝)、深链参数白名单、前端即时校验镜像与后端强校验双保险。
  • jwalk 评估:0.8.4 不引入依赖,结论与 0.8.5 触发条件见 benchmarks/jwalk-evaluation.md

报告与审查

  • 0.8.4 边界与职责审查、UI 审查清单与版本汇报见 docs/reports/0.8.4-boundary-review.md / 0.8.4-ui-review-checklist.md / 0.8.4-release-report.md)。

修复(UI 审查反馈)

  • 搜索框存在筛选标签时,清空与语法帮助按钮不再绝对定位漂移:改为输入行内 flex 子项,与输入框天然同高居中。
  • 修复多标签/组合查询的 SQL 占位符冲突:多个 label:(含标签 + 文本/类型/状态组合)此前会报参数数量不匹配导致文件列表加载失败;现为同维度多值 OR、跨维度 AND,并补回归测试。
  • 修复筛选习惯持久化:前端 lastUsed 与后端 last_used 字段名不一致导致每次保存失败;后端改为 camelCase 序列化并兼容读取旧 snake_case 数据。
  • 文件列表卡片最小高度改为仅在加载/空结果时生效:条目少时卡片随内容收缩,底部计数栏紧贴列表,不再出现大片空白。

v0.8.3

Choose a tag to compare

@github-actions github-actions released this 06 Aug 08:34

[0.8.3] - 2026-08-06

新增

  • 自绘下拉 Select:共享 Select 重写为自定义下拉(portal 弹层、输入过滤、键盘导航、视口钳制与底部翻转、图标/色点/描述/选中勾),替换设置页、课程/作业表单、课程表、项目打开、分类映射共 9 处原生下拉;TimeSelect 保持不变。
  • 项目页体验:共享 DirectoryAdder(原生“浏览…”、文件夹拖拽、常用目录一键添加、粘贴清洗与实时校验,设置页与项目页同源);项目卡片显示来源徽章(手动/自动)与识别依据(命中特征文件名)。
  • 项目识别修复:特征矩阵扩充 C++(CMake)、PHP、Ruby、Dart、Flutter、Kotlin、Swift、Android 八类;向上查找项目根跳过噪音目录(node_modules/target/dist/.git/pycache 等);ProjectInfo 新增 sourcedetectedBy 字段;新类型 IDE 候选与项目徽章同步补齐。
  • 托盘图标:多尺寸 ICO(16/20/24/32/48/64)替换单张 PNG,临期/逾期作业时托盘红点角标随 refresh_tray 切换(数量仍由 tooltip 承担)。
  • 设置与帮助中心观感统一:设置弹窗品牌标题 + 等高竖线、帮助中心分区标题统一层级、分区装饰分隔线(渐隐发丝线)、搜索语法表正文层级修正。
  • 发布门禁:新增 scripts/pre-release-check.ps1,将 AI 真实全链路验收(--open-project / --open-homework 深链意图领取、截图与日志断言)纳入版本提交前的强制检查;修复首次启动深链事件早于网页监听器就绪导致不跳转的问题。
  • 打开链路加固:PATH 查找只接受 Windows 可执行扩展名(跳过 VS Code 等无扩展名 shell shim),.cmd/.batcmd /C 包装启动,修复 code.cmd 无法打开 IDE 的问题;项目唤醒(--open-project)不再调起前台窗口(运行中不抢焦点、首次启动隐藏驻留托盘),作业唤醒保持聚焦。
  • 性能基准体系(自研唯一标准,零新依赖):引擎 harness(cargo bench --features bench:扫描 10k/100k、10 万条查询、标签重分类、归档撤销)+ 系统基准(scripts/benchmark.ps1:冷启动/扫描/内存/产物体积,5 轮中位数)+ scripts/render-benchmarks.ps1(README 对比表与 SVG 趋势图)+ pre-release-check.ps1 -Bench 门禁冒烟(15% 警示规则);0.8.3 初始基线已入库。
  • 性能基准升级 v2(仅本地运行):真实语料 corpus.json(大小分布/宽深树/噪声/Unicode 长路径)、时间维度(冷/暖启动、暖重扫、空闲 CPU、内存序列)与空间维度(索引库体积、churn/VACUUM、进程 IO、产物体积)、schema v2(p50/p90/p99/CV + host 指纹);scripts/bench-all.ps1 一键执行、scripts/bench-cleanup.ps1 清理本机残留;0.8.3 v2 基线重跑入库,旧 v1 结果归档并标注不可比。
  • 打开链路无黑窗:.cmd/.bat 工具(如 VS Code code.cmd)经 cmd /C 包装启动时附加 CREATE_NO_WINDOW,不再弹出命令行窗口,目标 IDE 窗口不受影响。
  • 文件列表 UI 定稿:移除路径行、日期列与列间分割线(悬浮仍可看完整路径);文件名列固定 224px、其余列定宽且文字左对齐,类型/大小/状态列内容超出即截断并悬浮显示全文;类型与大小改用等宽字体、大小单位适度突出,标题与后续列间距加大;标签移到文件名下方并强制单行,课程类标签优先、首个标签完整展示、其余折叠进“+N”悬浮查看;操作按钮放大为 md 并加大间距、悬停时在弹性留白区居中浮现,“智能打开”(特殊工具/系统默认)与“用 IDE 打开”(强制项目 IDE,仅代码/文本类文件显示)语义分离,新增“复制路径”操作,状态列仍贴右对齐可见;标签键去重并覆盖行内、筛选与搜索补全,同名课程(不同学期/时间的同一门课)统一为一个标签(分类器按学期顺序取稳定 key,前端按显示名二次去重)。
  • 性能基准 v2 标定补全:churn 测量先 wal_checkpoint(TRUNCATE) 再取样并对 VACUUM 加“不得变大”硬断言;引擎结果补齐 date 与 host 指纹;系统基准补入 interactive 与 IO 读写指标,DryRun 自校验必含键;bench-all 在系统基准前重建 release(cargo bench 会覆盖 exe 导致前端不加载);0.8.3 官方基线按“引擎 Full + 系统 10k”重跑为 50 项指标。
  • 验收清理补强:代理验收在启动前快照现有 IDE 进程,结束时只关闭本次拉起的 IDE 与 rootup,并断言无测试拉起的 IDE 残留,避免临时夹具被锁。
  • 基准可复现/可比较契约:host 指纹扩展 node / npm / RAM;bench-all 增加确定性语料自检(同 seed 200 文件 × 2 哈希一致);渲染器按指纹分组,只有同主机版本才计算 delta 与 15% 警示,跨主机/缺指纹/legacy v1 标记不可比;基线 JSON、对比表与 SVG 随版本入库并在 README 展示。

v0.8.2

Choose a tag to compare

@github-actions github-actions released this 05 Aug 21:18

[0.8.2] - 2026-08-06

新增

  • 监控目录体验加固:移除目录即清理索引(只标记 deleted、可重扫恢复,确认弹窗显示数量);新增原生“浏览…”目录选择器(tauri-plugin-dialog)、文件夹拖拽(文件自动取父目录)、常用目录一键添加(下载/桌面/文档)、粘贴路径清洗与实时校验。
  • 灵动视觉与微交互:动效令牌(--duration-* / --ease-*)与全局 prefers-reduced-motion 降级;列表入场与关键反馈动画;按钮/图标按钮/Chip 按压微动;共享 Tooltip 组件并接入所有 IconButton,提示与 aria 文案统一。
  • 设置与说明中心体验:设置行“点行看说明、尾部编辑按钮才编辑”;新增 SettingsInfoDialog(功能介绍/情景举例/设置说明)与 lib/settingsGuide.ts 单一说明数据源;说明中心新增“设置说明”分区;设置页分组描述与留白、文件/作业/项目页轻度密度治理。

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 05 Aug 19:32

[0.8.1] - 2026-08-06

新增

  • 作业截止提醒:默认关闭、可设置提前量(1–14 天);学业页顶部提示条(可关闭本次)、作业列表按“已逾期 / 临期”分组置顶,托盘 tooltip 显示临期计数并提供直达入口。
  • 关闭默认行为持久化:新增 close_action(ask / background / quit,默认 ask,Settings v2→v3 迁移);关闭确认弹窗支持“记住我的选择”,Rust 侧按设置直接后台运行或退出。
  • 语言切换改为下拉列表;新增前端语言注册表(lib/languages.ts),明确“新增语言 = 前端字典 + 注册表 + 后端白名单”三处同步约定。
  • 设置页按“常规 / 监控与分类 / 归档 / 学业提醒 / 高级”分组(FormSection),新增关闭行为、提醒开关与提前量、桌面“打开未完成作业”快捷方式入口。
  • 托盘菜单改进:左键单击打开主窗口;菜单按学业数据与设置动态重建(不轮询),含临期作业直达、自动归档开关、主题快速切换;新增 --open-homework 启动参数与 study-homework-open 事件深链。

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 04 Aug 19:57

[0.8.0] - 2026-08-05

新增

  • 学业页 UI 第一版:侧栏“作业 / 课程”合并为“学业”;课程表(时间轴周视图,周起始日可切周一 / 周日,支持全周 / 单周 / 双周 / 指定周次与“仅当前周”过滤)与作业(截止排序、状态 / 课程筛选、勾选完成、归档、删除确认)两个平级视图。

  • 共享分段切换组件 SegmentedControl;课程 / 作业表单弹窗(前端内存示例数据,未接后端持久化)。

  • 中英双语时间格式:中文 24 小时制 / English 12 小时 AM·PM。

  • 学业页体验重塑:课程表视觉重设计(周头日期与“今天”药丸、当前时间线、课程卡色条与柔和投影);表单按分区重排并统一文字层级;新建课程颜色默认自动分配。

  • 作业区分短备注(≤200,行内显示)与长详情(≤5000,可展开,AI 摘要预留字段);修复“N 天后截止”数字丢失并新增“已逾期 N 天”;标记完成走确认弹窗。

  • 全应用按钮顺序统一为 Windows“是左否右”(主操作在左、取消在右);新增共享组件 Field / ColorPicker / DialogFooter / DueTextModal 标题层级提升。

  • 输入法保护:键盘监听在拼音组合期间不再拦截按键(isComposing 保护);窗口失焦时主动释放输入焦点,减少残留输入状态对其它窗口输入法的影响(系统级输入法问题属 Windows/微软拼音已知行为,本项为保护性修复)。

  • 编辑弹窗观感收敛:课程 / 作业表单改用分隔线分区并统一紧凑间距(新增共享组件 FormSection / TextArea);课程表内部胶囊圆角收敛为小圆角,容器与课程卡各保留一个圆角。

  • 学业页 UI 重构:修复分区分割线贴输入框(FormSection 改为自身 border-t + 双向 16px 间距);分区标题升级为强色 + 品牌竖条;课程表单按语义重排字段(星期全宽、开始/结束组成“至”时间对、指定周次按需出现);SegmentedControl 新增 tabs 下划线变体并放宽分段内边距;作业筛选加状态/课程小标题;课程表方形化、作业行 12px 圆角。

  • 学业页课程表“堆叠磁贴”重构:主切换升级为等宽双栏 + 图标 + 待办数;时间刻度移到表格外、删除内部左列、弱化网格线;课程卡轻磁贴化(圆角收敛至 4px/2px 级、内容按高度降级、短课时最小高度);错周同槽合并为堆叠行、同周重叠最多两栏并折叠 “+N”;点击课程进入只读详情(完整信息 + 作业列表),编辑/删除/查看作业显式操作;补齐长名称、短课时、错周聚合、多课溢出等测试。

  • 学业页表单与深浅色体验加固:自定义 TimeSelect(5 分钟粒度、深色适配)替换原生时间控件;课程表单重排(名称+老师同行右对齐、地点独占一行)与智能时间(默认时长自动调整、课程时长快捷项、同周冲突实时提示、周次范围容错、字段级错误与底部错误);作业表单日期+时间拆分、逾期提示、按课程时间建议截止;课程详情作业行可点击并自动展开详情、状态点按状态/逾期变色;顶部切换限宽与深色徽标修复;全局 color-scheme/placeholder 深色适配;偏好记忆与自动聚焦等静默智能。

  • 学业页微调:时间刻度移回表体左侧并对齐网格线(不再与周一表头并排);课程表单名称加长(5/7)与老师(2/7)同行、地点随弹窗加宽;指定周次去除重复说明;顶部切换进一步缩短;同周重叠新增硬性合法性校验(保存时拦截并明确报错),移除示例中的重叠课程。

  • 学业页布局修正:时间刻度移回表格外侧并与表体对齐(按表头实测高度偏移,不再与周一表头错位或进入表格);示例新增与“程序设计”同槽错周的“大学物理”,堆叠卡片带间距展示;同周冲突保持保存拦截。

  • 错周同槽改为“堆叠点击展开”:折叠时只显示首门课 + 层叠边缘 + “共 N 门”角标,体现同时段与层次;点击展开为该时段全部课程的可读卡片行,并可收起;点击行内课程仍进详情。

  • 堆叠卡体验细化:课程按上课顺序堆叠;自动配色避开同课时段已有颜色以作区分;角标简化为纯数字;展开改为浮层平铺在课表上方(逐张 fan-in 动效),支持 Esc/点外部/关闭按钮收起。

  • 堆叠卡铺开浮层:点击后原卡隐藏,课表上方平铺完整信息卡(课程名/时间/周次/老师/地点/作业数),deal-in 逐张摊开动效,Esc/遮罩/关闭按钮收起;新增长标题示例课程与“图标 + 数字”角标。

  • 铺开浮层去窗口化:卡片组居中悬浮在页面上,无面板/边框/遮罩感,原堆叠卡隐藏,关闭后恢复。

  • 铺开改为独立元素卡阵:每张卡固定定位在点击位置附近摊开,无容器/滚动框;卡片加大并完整展示名称/老师/地点;最多平铺 4 张,超出以 +N 收口;堆叠卡提升层级避免被相邻课程盖住。

  • 堆叠层叠边缘改为“可越界但被其它课程卡覆盖”:堆叠卡不设更高 z-index,其它课程卡渲染在其上层。

  • 课程表学期生命周期:学期选择(双语)、当前周计数与手动预览周、回到本周、学期日期范围提示;工具栏分层展示,学期偏好持久化。

  • 学期管理(课表创建与保存):新建/编辑/复制/删除学期,每学期独立课程与作业,切换学期即切换课表;数据持久化到 localStorage rootup.study.data.v1,首次启动自动迁移示例。

  • 学业页微调:添加课程按钮移至课表上方工具行右侧(紧贴课程表);学期管理/持久化测试补足(存储校验、弹窗交互、按学期隔离与持久化、损坏回退等)。

  • 学业数据后端化:study.json 统一管理(原子写/损坏备份),旧 localStorage 数据首次启动迁移并清除;种子扩为场景与边界数据(短课时/周末课/三张堆叠/长标题/各作业状态),迁移时并入“演示:边界场景”学期。

  • 课程分类链路:StudyClassifier 按完整课程名(长名优先)打 course-<id> 标签;学业保存后定向重分类存量文件(仅更新 labels 列),文件页/筛选/补全展示课程名与颜色。

  • 堆叠与铺开层次优化:折叠堆叠最多两层(主卡 + 一层边缘),顶卡为牌堆最上层;铺开卡阵视口居中,前景卡加强投影/悬停抬升并加淡遮罩区分前后景。

  • 铺开卡阵细节:移除右上角关闭按钮(保留 Esc/点外部关闭),多行卡阵纵向间距收窄至 8px。

  • 作业视图默认只显示活跃(待办 + 已完成),已归档自动隐藏,已归档/全部筛选置于最后。

  • 统一本地存储层:labels/schemes/habits/study 四个领域 JSON 收敛到 infra/local_file.rs(读取 / 原子写 / 损坏备份单一实现,行为等价);settings 仍由 tauri-plugin-store 管理。

  • 前端目录领域化:features/studyfeatures/settings 的页面级 UI 与测试收进各自 components/ 子目录,pages/ 只保留页面壳。

  • 发布前审查清理:修复标签筛选前缀误匹配(course-1 不再命中 course-10)、监听/自动归档线程启动竞态、文件稳定采样间隔生效、归档批次号进程内单调分配、项目归档/撤销中途失败完整回滚(目录/settings/快捷方式三态还原)、定向重分类批量事务写入;学业页仅在用户变更后整份保存(不再每次进入触发全量重分类);设置与筛选习惯的副作用保存重构;移除未使用命令 list_files/scan_now

  • 发布准备:版本切换至 0.8.0;作业截止提醒顺延至下一迭代,本轮不做新功能。

后续规划

  • 作业截止提醒(临期提醒)顺延至下一迭代,默认关闭并提供提前量设置。
  • AI 能力(分类与项目识别增强)在学业数据落地后接入,接口已预留。

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 04 Aug 04:31

[0.7.0] - 2026-08-04

新增

  • 标签管理设置弹窗:自定义标签注册表(显示名 / 图标 / 预设色板),内置大类只读;筛选行、搜索标签与文件徽标统一取注册表显示。
  • 受控归档与撤销:单文件归档(单击执行 + 撤销)、批量归档(批量模式多选 / 归档当前筛选结果,严格确认)、项目文件夹作为单元整体归档并联动桌面快捷方式、设置页“归档设置”(归档根 / 自动归档开关 / 最近归档可撤销)。
  • 自动归档开关:新出现且分类明确(非 other)的稳定文件自动归档,默认关闭,文件页常驻轻提示。
  • 反馈入口:GitHub Issue / PR 模板。

内部

  • 版本号规则与发布纪律落地:npm run check:version 五处一致性校验,CI 与 release 流水线强制执行;安装包验证版本自动取自 tauri.conf.json