Releases: 54shitaimzf/RootUp
Release list
v0.8.8
[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新增loadingprop)。 - 空态与占位补全:文件页项目视图专属空态(此前复用「没有匹配的文件」+搜索技巧按钮);课程详情「相关文件与项目」三态(加载中/为空/失败——此前加载中与为空整块消失);归档确认弹窗预检统计返回前显示「正在统计归档内容…」(预检失败不显示占位、确认仍可用)。
- 高频截断文本补悬浮提示:项目页项目名/路径、课程卡名称(周/紧凑两种密度 + 叠层浮层)、作业标题/备注补
title(文件行 FileRow 此前已全覆盖,此为漏网点)。 - 查询变化后列表回顶:搜索词/视图/筛选/排序变化时滚动回顶(滚动容器为 App 布局
<main>,与 VirtualRows 同源);加载更多与刷新保持当前视口、首挂载跳过(不破坏返回时的滚动位置)。 - 验收:前端 vitest 537 例全绿(新增 3 例:查询失败 error 暴露与清空、预检统计中占位/失败不占位)、tsc 零错、check-arch 绿;i18n 双语成对(+8 对新 key,-1 对退役 key)。
0.8.8-dev 发布前性能与可读性加固(批次 A:行为零变化)
功能与完成度零变化前提下的发布前加固批次(全库前后端性能/可读性审查后落地):
- 文件页渲染身份收敛:
FileRow以React.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 v11:
idx_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 二次确认从
Modalchildren 移到兄弟节点——floating-panel的backdrop-filter会为 fixed 后代创建包含块,嵌在面板内导致确认弹窗遮罩盖不满视口(视觉缺陷)。 - 文件页通知/错误双通道:
actionError(打开/删除/解压失败 → error 红色横幅)与actionNotice(IDE 已打开、复制路径成功 → brand 横幅)拆分,均带关闭按钮;IDE 打开成功消息不再以警告色呈现;复制路径成功新增「已复制到剪贴板」反馈。 - 软件目录移除确认:取消软件认定 / 解除排除补 ConfirmDialog(带目录回显),与监控目录移除同纪律——两者都改变索引可见性,不允许裸删;设置页 notice/dirError/ruleError 横幅补关闭按钮。
- 前后端一致性:项目归档子目录名「项目」入
fixtures/app-contracts.json(archiveProjectDir),前端ARCHIVE_PROJECT_DIR(ProjectsPage 归档预览)与后端core::archive::PROJECT_ARCHIVE_DIR双端测试锁定,消除前端硬编码镜像漂移风险。 - 一致性清扫:
SegmentedControl新增pill胶囊变体(含ariaLabel),收编文件页四视图与设置页主题切换;课程时长预设与分类映射「仅看自定义」迁移到Chip;Chip active与标签图标选择器补深色dark:bg-brand-500;SegmentedControl徽标选中色统一 brand-700;课表翻周按钮换IconButton;Banner关闭按钮换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权威标记(PAFApp目录 + portable 启动器 / Scoopinstall.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 门禁测试(RustDETECTED_BY_ALL同源断言 + TSLABEL_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_overview;apply_scheme(id)后端原子应用 +save_scheme按 id upsert(消 schemes.json 与 settings 规则双真相);add_project_dir返回规范化路径(AddDirOutcome 对称);ArchiveFailurepath+phase 语义统一。 - 错误响应与对账机制:错误码注册表(G 批)——
fixtures/error-codes.json真源 22 码 × 三级分级(retryable/ignorable/needs_user),core/error_codes.rs与lib/errorCodes.ts双端镜像,归档链路错误全面code|message结构化;可靠性加固(H 批)——启动归档对账(磁盘真源修复索引 / 标记异常)、启动清理*.json.tmp残留、子进程强杀中断集成测试与环境变动(手工还原 / 两侧皆失 / 盘符卸载形态)用例全绿。 - 可靠性加固·监视器异步化:大目录首次启动的监视器注册移入延迟服务后台线程(消除 10k/20k 目录 4–8 秒启动阻塞);运行期「添加监控目录」同样后台注册(注册前复检设置成员资格防移除竞态)。
v0.8.7
[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/mockermoderate ×2 路径遍历 /nanoidhigh 零尺寸死循环),仅 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 v8:
files表迁移为统一单元表units(kind: file | project | software+project_kind扩展列),索引重建为idx_units_*,FTS 表同步改名;迁移含数据保全测试(标签 / 归档墓碑 / 旧表移除 / 新列可写)。 kind:搜索语法:合法值 file / project / software(未知回落普通文本,同cat:模式);契约用例入fixtures/query-grammar-cases.json;前端自动补全新增「按内容类型」关键词与三个值候选。- 项目单元入库:新增
infra/project_sync.rs把discover_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白名单对称);useSettingsflush 失败回填挂起补丁(乐观态不再与后端静默分叉,下次事件冲刷 / commit 吸收时重试,附测试);schemes.rs模块注释中已删除的set_settings引用改为update_settings;QueryPage.total=-1哨兵语义补入前端类型注释(0.8.8 以totalKnown/hasMore替代)。 - 错误码注册表最小切片落地:
scheme_store需要前端分支处理的错误改code|message结构化前缀(scheme.duplicate/scheme.limit/scheme.not_found);新增lib/errors.ts(errorCode/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_settings(watched_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跨语言契约真源(应用级事件名 / 文件状态 / 类别清单);Rustcore/events.rs事件常量段、TSlib/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/ 归档预览迁移,删除三处平行硬编码;RustCategory::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
[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
[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:b与label:a AND label:b双写(+为主),同维度默认 OR 语义不变;搜索补全、帮助中心与边界矩阵同步。 - 标签过滤评估:逗号串 + LIKE 优于 json_each(实测约快一倍),保持现状不迁表;FTS5 trigram 文本查询约为 LIKE 的 2 倍速,决策记录为 0.8.6 候选。
- NTFS 快速扫描(决策门):引入官方
windowscrate,实现卷能力探测、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
[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.rs;QuitFlag同步迁至infra/window.rs。- 新增
scripts/check-rust-arch.ps1(npm run check:arch:rust)并在 CI 强制执行:core保持纯业务、commands不回指组合根、infra不依赖命令层。
新增(0.8.4)
- 扫描器接口化:新增
FileEnumerator与ScanDiffStore契约,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
[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新增source与detectedBy字段;新类型 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/.bat经cmd /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 Codecode.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
[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
[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
[0.8.0] - 2026-08-05
新增
-
学业页 UI 第一版:侧栏“作业 / 课程”合并为“学业”;课程表(时间轴周视图,周起始日可切周一 / 周日,支持全周 / 单周 / 双周 / 指定周次与“仅当前周”过滤)与作业(截止排序、状态 / 课程筛选、勾选完成、归档、删除确认)两个平级视图。
-
共享分段切换组件
SegmentedControl;课程 / 作业表单弹窗(前端内存示例数据,未接后端持久化)。 -
中英双语时间格式:中文 24 小时制 / English 12 小时 AM·PM。
-
学业页体验重塑:课程表视觉重设计(周头日期与“今天”药丸、当前时间线、课程卡色条与柔和投影);表单按分区重排并统一文字层级;新建课程颜色默认自动分配。
-
作业区分短备注(≤200,行内显示)与长详情(≤5000,可展开,AI 摘要预留字段);修复“N 天后截止”数字丢失并新增“已逾期 N 天”;标记完成走确认弹窗。
-
全应用按钮顺序统一为 Windows“是左否右”(主操作在左、取消在右);新增共享组件
Field/ColorPicker/DialogFooter/DueText;Modal标题层级提升。 -
输入法保护:键盘监听在拼音组合期间不再拦截按键(
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/study与features/settings的页面级 UI 与测试收进各自components/子目录,pages/只保留页面壳。 -
发布前审查清理:修复标签筛选前缀误匹配(
course-1不再命中course-10)、监听/自动归档线程启动竞态、文件稳定采样间隔生效、归档批次号进程内单调分配、项目归档/撤销中途失败完整回滚(目录/settings/快捷方式三态还原)、定向重分类批量事务写入;学业页仅在用户变更后整份保存(不再每次进入触发全量重分类);设置与筛选习惯的副作用保存重构;移除未使用命令list_files/scan_now。 -
发布准备:版本切换至 0.8.0;作业截止提醒顺延至下一迭代,本轮不做新功能。
后续规划
- 作业截止提醒(临期提醒)顺延至下一迭代,默认关闭并提供提前量设置。
- AI 能力(分类与项目识别增强)在学业数据落地后接入,接口已预留。
v0.7.0
[0.7.0] - 2026-08-04
新增
- 标签管理设置弹窗:自定义标签注册表(显示名 / 图标 / 预设色板),内置大类只读;筛选行、搜索标签与文件徽标统一取注册表显示。
- 受控归档与撤销:单文件归档(单击执行 + 撤销)、批量归档(批量模式多选 / 归档当前筛选结果,严格确认)、项目文件夹作为单元整体归档并联动桌面快捷方式、设置页“归档设置”(归档根 / 自动归档开关 / 最近归档可撤销)。
- 自动归档开关:新出现且分类明确(非 other)的稳定文件自动归档,默认关闭,文件页常驻轻提示。
- 反馈入口:GitHub Issue / PR 模板。
内部
- 版本号规则与发布纪律落地:
npm run check:version五处一致性校验,CI 与 release 流水线强制执行;安装包验证版本自动取自tauri.conf.json。