本工作台的全部版本迭代记录,最新在最上方。v3.0.0 是次版本,把一直躺在代码里的「云端模式」真正接通了,并照搬 08 门店收银管家的成熟做法补齐配套:① 补上云端的关键两行——主页此前从未引入 Supabase 客户端和云端配置,所以云端模式点了也连不上,现在 SDK 已本地化到 assets/vendor/supabase.min.js(218KB),不依赖外网 CDN;② 修「一切到云端就白屏」的致命 Bug——数据层的 _from() 在云端分支里递归调用了自己,一进云端就栈溢出、整页白屏;③ 智能默认模式——网址打开默认走云端、双击文件打开默认走本机,部署后不用手动切、没网也不会打不开;④ 「我的 → 数据来源」新增切换入口,并写明当前模式与切换失败的具体原因;⑤ 本机数据一键搬上云——切到云端登录后若检测到本机有流水、云端为空,主动询问是否导入(归属账号重映射、分批 200 条);⑥ 云端连接自检——登录失败时自动探测,用大白话区分「配置没填好 / 网络不通 / 密码错」;⑦ 免费版 7 天休眠提醒(照搬 08);⑧ 照搬 08 的 _redirects,根网址不再 404;⑨ 建表脚本补上周期账表(共 5 张表,均配行级权限);⑩ 使用说明新增「本机还是云端 / 云端部署 / 登录与注册 / 休眠提醒」四章,含 Supabase 建表与 Cloudflare Pages 上传的逐步步骤。兼容性:无需改数据结构;但首次启用云端必须先到 Supabase 的 SQL 编辑器执行一次 系统文件/supabase_schema.sql(脚本用 IF NOT EXISTS,不会破坏已有数据)。本机模式的账号、分类、流水、设置、备份全部照旧。
.slice 直接报错。除上面的自愈外,筛选、趋势、日历等所有读日期的地方都加了 String() 防御,数字日期也不会再崩。.json(最早版的格式),而「备份数据」早改成了下载 .xlsx——等于备份了却选不进来。现已放开:.xlsx 和旧 .json 都能选。ALTER TABLE cb_records ADD COLUMN IF NOT EXISTS 时间 TEXT; 然后回到页面刷新、重试搬家即可(重跑完整建表脚本效果一样)。cbld_adv),不写云端、不动账目,
最后有「恢复默认」一键回到出厂状态。<html> 的
data-adv-* 属性(如 data-adv-compact="1"),页面长相全部交给 CSS 按属性选择器去管——
这样不会和已有的渲染逻辑打架,也不会出现「切个页设置就丢了」。字号档位用 zoom 整体缩放,
同时把容器宽度除以同一个系数(zoom:1.12; width:calc(100% / 1.12)),
只放大不改宽度的话 1280 宽的屏会被撑到 1434、直接冲出横向滚动条。v3.8.0_test.js 79/79 通过:静态断言覆盖「净利两处『不含充值』/ 表脚『含充值』保持原样 / data-dt="fund" 按钮 / fundStat 五项口径 / fundSeries 四条线不填充 / 月度与逐月两条路径 / 切资金往来时跳过收支筛选 / 深浅色配色 / #fundCard 与 #fundGrid / 高级设置七组控件与 ADV_DEF 默认值 / CSS 各 data-adv-* 规则」;运行时真跑两轮——第一轮造「会员充值 100 + 借出 5 + 借入 1 + 支出 30」,验净利下显示「不含充值 ¥100.00」、切「资金往来」后图上确实是「会员充值 100 / 借入 1 / 借出 5 / 还款 0」四条线、切回「收支」恢复两条线、报表卡片五个数与范围标签正确、KPI 收入仍为 ¥0(充值不进收支);第二轮把高级设置全部调成非默认再重启页面,验「紧凑 / 大字号 / 高图表 / 精简记录 / 首页三块收起 / 侧栏图标 / 走势默认资金往来」全部贴回,并验设置页控件状态与设置一致、改一档立刻落盘、恢复默认全部回位。连同回归十套合计 717 项断言全绿(v3.3.0 98 + v3.3.1 109 + v3.3.2 91 + v3.3.3 21 + v3.4.0 57 + v3.4.0_borrow 57 + v3.5.0 41 + v3.6.0 48 + v3.7.0 68 + v3.7.1 48 + v3.8.0 79;其中 3 条因本轮改动而过期的历史断言按新行为更新:v3.3.0 的 switchPage 页面清单、v3.3.2 与 v3.5.0 里「字号档位写在文件末尾」两处判据——判据从「取文件最后 N 字符」改成「该规则必须排在更早那条之后」,含义不变但不怕后面继续追加内容);真实 Chromium 桌面 1280 与窄屏 500 / 360 共 20 张截图目检,各档位均无横向溢出(逐项打印 scrollWidth vs clientWidth 核对)。v3.7.1_test.js 48/48 通过:静态断言覆盖「净额口径与文案 / 日小计排除转账与借还 / 操作条收进 #listEditBar / _skipTrend 开关 / toggleRecSel 与 setAllSel 走轻量路径 / 充值提示文案」;运行时真跑「借出 5 + 借入 1 + 支出 30 → 当天小计只报 ¥30.00、不出现 ¥6.00 → 点郑进入往来条报净额 ¥4.00 → 进编辑态勾选 / 全选 / 退出,全程监测 Chart 构造次数为 0」。连同回归九套合计 638 项全绿。_skipTrend 开关包住图表重画;② 勾选动作改成只动 DOM 的轻量函数,根本不进 renderList。v3.7.0_test.js 68/68 通过:覆盖「会员页签出现与必填校验(先选会员 / 建会员手机号必填)/ 会员充值落库为『会员充值 · 充值收款』/ 收入→会员消费核销显示『不需要细分』/ isLiability 对细分 null 的充值判负债、对核销判非负债 / 批量编辑进退出与全选 / 挂账改名与老数据迁移」。连同回归八套合计 590 项全绿。v3.6.0_test.js 47/47 通过:静态断言覆盖「汇总行 grid 定宽列 / 滚动条占位 / #whoFilterBar 与 matchWho / openRoleRecords / 借还三行与去「借还」角标 / #homeLiab #todayLiab / #liabWriteOffBtn」;运行时真跑「记会员充值 → 净利显示含充值 ¥200.00 → 点核销按钮自动选好细分 → 核销算真实收入 → 借还三行结构 → 挂账点郑哥跳流水页且只见郑哥 → 清除后恢复 → 全程无 JS 错误」。同时把 v3.3.2 老断言里 9 条早已过期的陈旧校验更新到当前行为。连同回归八套合计 521 项断言全绿(v3.3.0 98 + v3.3.1 109 + v3.3.2 91 + v3.3.3 21 + v3.4.0 57 + v3.4.0_borrow 57 + v3.5.0 41 + v3.6.0 47);真实 Chromium 四尺寸 × 6 页 + 登录页 无横向溢出 / 无文字截断 / 无 JS 报错,并截图目检了汇总行对齐、挂账角色列表与角色筛选流水页。v3.5.0_test.js 40/40 通过:静态断言覆盖「两卡口径备注 / 空占位对齐 / 胶囊不换行与窄屏一行 / 借还未选中橙描边已删 / #bwWho 下拉与+新建角色 / #bwAccChips 与默认按钮 / 记录两行新文案 / rec-meta 空行不渲染」;运行时真跑「登录 → 首页两处备注可见 → 切借还 → 跟谁下拉含预置角色与+新建 → 点「现金」chip 选中 → ⭐ 设默认后按钮变「取消默认」且 chip 带 ⭐ → 记一笔借入王哥(带利息)→ 第一行「借入 [借还] 我欠王哥 · 利息 ¥8.00」→ 无 .rec-debt 单独行 → 第二行记账人 → 全程无 JS 错误」。连同回归五套合计 382 项断言全绿(v3.3.0 98 + v3.3.1 109 + v3.3.3 21 + v3.4.0 57 + v3.4.0_borrow 57 + v3.5.0 40)。ALTER TABLE cb_records ADD COLUMN IF NOT EXISTS 利息 NUMERIC(12,2);(完整建表脚本在「系统文件 / supabase_schema.sql」,已同步更新)。不执行的话记账能照常用,只是保存借还的利息时会提示缺列。老的欠账/收账记录由程序自动迁移,不会丢失、不需要手工处理。v3.4.0_test.js 与 v3.4.0_borrow_test.js 两套专项测试,连同原有三套回归合计 343 项断言全绿:静态断言覆盖「类型栏四档含借还 / 借还面板 4 个方向 / 利息字段进表 / 迁移函数只跑一次 / 收入环形切换按钮 / 三组默认星星按钮 / 首页第三格本月净利 / 汇总行去规格与涨跌前置 / 走势图不跳号」;运行时真跑「登录 → 切借还 → 记一笔借入(带利息)→ 账户余额增加 → 记一笔还债 → 欠款余额减少 → 列表显示『欠 张师傅 · 待还』→ 借还往来页按人汇总 → 老欠账记录自动迁移 → 设默认分类后重开表单自动选中 → 全程无 JS 错误」。v3.3.3_test.js 20/20 通过:静态断言覆盖「首页三卡移除 / 单价回侧栏 / 汇总行一行居中 / 物料名去重单位 / 版本号一致」五处落点;运行时真跑「登录 → 无 #todaySummary → 点单价 tab 进页 → 我的页无单价卡 → 空数据提示 → 记两条猪肉单价(19 与 10)→ 汇总行出现最低/最高/价差且同处一行 → 物料名不含重复单位 → 单位仍在最新单价右侧(10 元/斤)→ 全程无 JS 错误」。同时回归 v3.3.0_test.js 98/98、v3.3.1_test.js 109/109,合计 227 项全绿。全程无 JS 运行时错误。v3.3.2_test.js 87/87 通过:静态断言覆盖 5 类修复的 CSS/HTML/JS 落点;运行时真跑一遍「勾选→展开→分类自动填充→物料快捷联想(输入/点选)→缺项被拦住并提示→保存后流水 +1 且单价 +1(材质/单价/分类逐字段核对)→勾选自动复位→转账时自动隐藏→供应商区块存在且有输入与按钮」。同时回归历史套件:v3.3.1_test.js 108/108、v3.3.0_test.js 99/99、v3.2.0 29/29、v3.1.2 25/25、v3.1.1 40/40、v3.1.0 47/47、v3.0.0 48/48,合计 483 项全绿;并用真实 Chromium 在 1280×900 下截图/测量逐条确认(首页统计卡 341px × 3 铺满、汇总行价差胶囊、供应商 259px 等宽、弹窗两栏 186px 等宽且两张截图肉眼确认)。全程无 JS 运行时错误。v3.3.1_test.js 108/108 通过:静态断言覆盖 7 类修复的 CSS/HTML/JS 落点,运行时真实点一遍「记一笔→汇总无占位符→走势高低价→复制记录→快捷录入(输入/点选/回车三种)→管理物料筛选与配色与编辑→供应商返回不丢内容→分类管理按钮对称/填充色/补齐预览/取消不改动/补齐幂等」。同时回归 v3.3.0_test.js 扩到 98/98 通过(补充了筛选项、返回流程、二次确认等新断言),并跑通 v2.4 起的全部历史套件;全程无 JS 运行时错误。v3.3.0_test.js 82/82 通过。v3.3.0_test.js 82/82 通过(静态 40 项:HTML 页面与导航顺序、CSS 涨跌/异动样式、app.js 函数与接线、core.js 数据层登记、schema 建表;运行时 42 项:本机与云端各跑一遍完整增删改查、汇总涨跌、走势、搜索、物料与供应商管理、一键生成支出、全程无 JS 错误)。另跑全量历史回归(v2.4~v3.2.0 共 12 套)功能项全部通过;手机端用真实 Chromium 巡检 4 种尺寸 × 6 页面 + 登录页,无横向溢出 / 无文字截断 / 无 JS 报错(本次据此修好了「底部导航被挤成两行挡住保存按钮」的真实缺陷)。v3.2.0_test.js 29/29 通过。v3.2.0_test.js 29/29 通过(静态 16 项:两个容器、CSS 样式、三个函数、取前 8、三处刷新点;运行时 13 项:本机模式真实保存后常用语按频率出现/排序/隐藏、点 chip 填值、切收入方向过滤、备注不挑方向、全程无 JS 错误)。全量回归 v3.1.2 历史测试功能项 23/23 通过(仅该老测试里写死的版本号字符串随升版失效,属预期)。a@example.com 记账署名「a」,短、卡片上放得下,不再挂整串邮箱)。v3.1.2_test.js 22/22 通过(静态 9 项:写入逻辑不再分模式 / 取名链路 / 快照不可改 / 提示语同步;运行时 13 项:本机没填姓名、本机填姓名、云端三种场景真实注册并记账,核对落库的记账人字段与改名快照行为)。全量回归 v2 ~ v3.1.1 共 16 个测试脚本全部通过。switchDataSource(),不是各写一套——以后改逻辑不会漏改一处(旧版这类「两处各写一遍」最容易出岔子)。v3.1.1_test.js 40/40 通过(静态 19 项:卡片顺序 / 公用函数唯一性 / 按钮文案与绑定 / 版本号;运行时 21 项:分别以云端模式和本机模式启动,真实打开个人设置、点按钮、走确认框,并核对「我的」页卡片序号)。全量回归 v2 ~ v3.1.0 共 14 个测试脚本全部通过。.type-btn.on[data-t="转账"] 的填充(跟随主题主色),三个 tab 一眼就能看出选中的是哪个。user_metadata,不额外建表,对数据库结构零影响;本机模式则写在本机账号表里,读取方式与云端完全一致。记账人 字段)。以后改了姓名,老记录仍显示当时的名字——不然「追溯」就失去意义。schema cache,原先会被上面那条通用提示抢先命中,用户看不到究竟缺哪一列;现在缺列判断排在前面。cb_records 增加 记账人 TEXT,并补上兼容老库的 ALTER TABLE ... ADD COLUMN IF NOT EXISTS(对已有库只加列、不动数据)。cb_records 加了 记账人 列——没跑脚本的话,云端模式记新账时会提示「还缺『记账人』这一列」并给出要执行的 SQL。脚本用 ADD COLUMN IF NOT EXISTS,重复执行安全。旧的流水记录没有这个字段,界面显示为空(明细表显示「—」),不影响任何统计口径。本机模式无需任何操作。v3.1.0_test.js 47/47 通过(含真实跑一遍「注册带姓名 → 记一笔 → 列表显示记账人 → 改名后老记录不变 → 设本机记账人后新记录换名字」);全量回归 v2.4 ~ v3.0.0 及早期 7 个测试脚本全部通过。_from() 在云端分支里写成了 return this._from(table)——调用了它自己。这是个无限递归,一进云端模式立刻栈溢出、整页白屏,连报错都来不及显示。改成真正调用云端客户端 this.sb.from(table) 后正常。这个 Bug 单看代码很难发现(名字太像"正确的调用"),是靠真实浏览器跑通登录流程才暴露出来的。http / https)默认走云端;直接双击文件打开(file://)默认走本机。这样部署后不用再手动切模式,也避免"数据库还没配好 + 没网"时整个页面打不开。/ 自动跳到 餐饮流水管家.html。少它访问 xxx.pages.dev 就 404(这个文件必须留在部署包最外层,挪进子文件夹就失效)。程序临时文件/_verify_cloud_real.js),用真实 Chromium 打开真实页面、加载真实 Supabase SDK、真实发请求:http:// 打开):确认自动进入云端模式、客户端对象真的被创建、真实探测云端认证接口能拿到服务器响应(返回 400 = 服务器可达、网络与配置都通),页面提示「云端连接正常」;file:// 打开):确认自动进入本机模式、不创建客户端、页面显示本机模式说明。http 协议下的回归测试会自动走云端模式、而测试环境连不上云端,导致 10 个旧脚本连锁失败。没有去改业务代码迁就测试,而是给测试环境加了一层"云端文件返回空桩"的拦截,让它们维持 v3.0.0 之前的本机行为;同时修掉两个早就存在的测试误报(主题数统计没去重、版本号断言写死)。改完 v2.0.0 → v2.6.3 的全部回归重新跑通。IF NOT EXISTS,重复执行不会破坏已有数据。不打算上云、继续用本机模式的话,这一步可以完全跳过。程序临时文件/v3.0.0_test.js 与 程序临时文件/_verify_cloud_real.js)。系统文件/备份_v2.6.3_pre_v3.0.0/。按"系统文件/根目录只保留最新 1 份备份"的约定,上一份备份已移入 系统文件/历史归档/。width:33.33%——在网格里再取 33.33%,按钮宽度只剩约 39px,两个字放不下,只能上下叠成一根竖条,占了将近两行的高度,很难看也很好笑。删掉那句多余宽度即可。100dvh(原来 100vh 会被手机地址栏撑出一小截无意义滚动);④ 分类「细分」的小圆点触控高度从 28px 抬到 34px(原来比手指小,容易点错),输入框字号抬到 16px,避免 iOS Safari 一聚焦就自动放大整页。程序临时文件/mobile_audit.js):启动真实 Chromium 浏览器,模拟 iPhone 14 Pro(393px)/ 主流安卓(360px)/ iPhone SE(375px)/ 极窄小屏(320px)四种尺寸,真实走一遍「注册 → 记 7 笔账 → 切五个页面」,每一页都自动找出所有超出屏幕右边界的元素并打印出它的标签、左右坐标、宽度和文本内容,同时检查金额有没有被容器截断。修复前跑出 42 条问题(其中 2 条是真实布局缺陷),修复后全部归零——4 种尺寸 × 5 个页面 + 登录页 + 个人设置弹层,无横向溢出、无文字截断、无 JS 报错。这个脚本留在项目里,以后每次改版都可以复跑。程序临时文件/v2.6.3_test.js 与 程序临时文件/mobile_audit.js)。fmtMoney 改成自带货币符号:正数 ¥1,234.56、负数 -¥1,234.56。这个函数在全站有 72 处调用且纯做展示、不参与任何计算,所以改一处 = 全站一次性统一,以后新增的金额展示也自动带单位,不会再漏。同时清理掉历史上 18 处手写的「¥」「元」,避免出现 ¥¥1.00 或 ¥1.00 元 这类重复。100 变成 ¥100(上万时显示 ¥1.2万),鼠标悬停提示同样带 ¥;「哪天花得多(日历)」标题补成「哪天花得多(日历 · 单位:元)」,「逐月收支对比」补成「逐月收支对比(单位:元)」。之所以用标题标注而不是给每个坐标轴刻度加符号,是因为刻度空间太窄,逐个加 ¥ 会挤成一团。¥12,345.67 把三列小格子撑破;饼图图例的金额加了「禁止折行、不被压扁」,金额长时优先压缩左侧分类名。1,234.56)且不带 ¥ 的,全部报出来。扫描确实抓到了一处(记账页帮助文案「例:房租每月 5 号扣就填 5」里的天数),加了「数字紧跟 号/天/日/月/期/笔 等 = 非金额」的排除规则后,全站裸金额归零。这条扫描留在了 程序临时文件/v2.6.2_test.js 里,以后每轮迭代都会自动复查一遍,防止新加的金额展示又漏了单位。程序临时文件/v2.6.2_test.js)。THEMES 表里墨灰(ink)的按钮图标写的就是 🖤(黑色心形 emoji),切到墨灰后顶栏右上角那个圆按钮就成了一颗"黑心"。v2.6.1 换成 🌫️(雾)——语义贴「墨灰」、也不突兀;同时「我的 → 主题色」里墨灰的色卡渐变同步成和顶栏完全一致,点之前看到的就是点之后的效果。#94a3b8 → #cbd5e1 之后,白色文字在这层浅灰上几乎看不清——按 WCAG 对比度公式实测只有 1.6:1(正文可读标准是 4.5:1)。v2.6.1 给顶栏加了自动配色变量:深色顶栏继续用白字,墨灰这种浅灰顶栏自动换成深灰字 #1e293b(实测 5.7 / 9.9:1),店名、日期、按钮、版本徽标全都看得清,同时保留"不黑心"的观感。按钮与徽标的半透明底也从"白色半透明"换成"深色半透明",在浅灰底上才有按钮的立体感。u.email 无条件显示,本机模式下还挂着云端登录留下的邮箱地址,和「本机模式没有账号」自相矛盾。v2.6.1 起本机模式顶栏显示「👤 本机模式」,云端模式才显示邮箱;鼠标悬停的提示文案也按模式区分。slate(深色蓝紫)最好(14.6 / 7.6),purple / blue / pink 属"小字勉强"(3.5~4.0),另有 teal / green / orange 三套的白字对比度偏低(约 2.3~2.8,渐变浅色端尤其明显)。这三套属"饱和彩底 + 白字"的常见设计,本次未改动以免打乱你已习惯的观感;若想一起调深,说一声即可。程序临时文件/v2.6.1_test.js)。系统文件/备份_v2.6.0_pre_v2.6.1/。按"系统文件/根目录只保留最新 1 份备份"的约定,备份_v2.5.0_pre_v2.6 已移入 系统文件/历史归档/。.home-hero 顶部右侧加 #homeHeroDate,与今日面板共用同一个 dateTxt 变量,格式完全一致;原来的月份标签改为「翻到非本月时才显示的徽标」——正常看本月时隐藏(避免和日期重复显示两个月),用顶部左右箭头翻到历史月份时才以胶囊样式亮出「2026年8月」,提示你现在看的是哪个备份月。CB.user.email 还残留着之前云端登录过的邮箱(如 chenshuia@outlook.com),看起来像"本机也有账号"。实际上登录/注册页是给云端模式用的:云端模式数据存在你自己的云端数据库,必须先登录;本机模式数据只存这台电脑的浏览器,不需要登录、也没有账号。v2.6.0 把「个人设置」里的「👤 账号邮箱:xxx」在本机模式下改成「👤 账号:本机模式无账号(数据存这台电脑浏览器里)」,云端模式仍正常显示邮箱。renderFilters / renderFCat2 用了 Object.keys().sort()(拼音字母序),而「记一笔」页走的是 CB.catTree()(分类表里的「排序」字段顺序)。v2.6.0 把两个下拉都改成按 CB.catTree('支出') / CB.catTree('收入') 的顺序排,二级细分同样取该一级分类在 catTree 里的明细顺序——两个页面的分类顺序从此完全一致。<details> 版本卡片(漏掉 v1.1.0~v2.0.0 共 14 条)。另外顶部目录第 4 行还残留一个没被解析的转义换行符(反斜杠 n),导致那一行显示错乱。v2.6.0 把顶部目录 + 左侧目录都补齐到全部 23 个版本(含本版),并清掉那个转义换行符。程序临时文件/v2.6_test.js)。系统文件/备份_v2.5.0_pre_v2.6/。按"系统文件/根目录只保留最新 1 份备份"的约定,备份_v2.4.0_pre_v2.5 已移入 系统文件/历史归档/。.home-hero 一样的 linear-gradient(135deg, var(--primary), var(--primary-2)) 紫渐变背景,三列小格改用半透明白底(rgba(255,255,255,.16)),整张小卡视觉上和「本月结余」是一对。右上角日期标签从「9月10日 · 周四」改成「2026年9月10日 周四」,与顶栏 todayLine 统一格式。$('todayLine').textContent 从 CB.todayStr() + ' ' + CB.weekday(...)(输出 2026-09-10 周四)改成与今日面板一致的「YYYY年M月D日 周X」格式。两处同步,开首页 / 看顶栏看到的日期样式一致。doLogout 函数都删了过头了。v2.5.0 重新加回 doLogout 函数,并在「我的 → 顶栏账号标识 → 个人设置」弹窗底部加一个「⏻ 退出登录」按钮,点了二次确认后真退出(云端模式调 CB.signOut(),本机模式兜底清 cb-session 后刷新)。只在云端模式显示——本机模式数据存浏览器,"退出"反而误导,所以换成一行「💡 本机模式没有退出概念…」说明。顶栏 ⋯ 菜单里不放退出(保持你上轮的诉求)。renderFCat2:和 renderFilters(一级)一样按类型分组,未选一级分类时「—— 支出 ——」/「—— 收入 ——」两组都显示;选了某个一级时只显示对应类型那组细分(避免空组)。用同一套 catType 字典推断二级所属类型。bindExportRemind 的循环改为 d <= 28,每月都有 28 号、永远能到日子。红条提醒逻辑本身(todayDay >= cfg.day)不变。#334155 → #64748b 在视觉上像是中心偏黑、整条顶栏偏"闷"。v2.5.0 换成更柔和的中灰渐变 #94a3b8 → #cbd5e1(slate-400 → slate-300),整体偏明亮、不再"黑心"。其他 7 套主题顶栏不变。系统文件/备份_v2.4.0_pre_v2.5/。按"系统文件/根目录只保留最新 1 份备份"的约定,把 备份_v2.2.1_pre_v2_3 和 备份_v2.3.0_pre_v2.4 移到了 系统文件/历史归档/ 下。系统文件/备份_v2.3.0_pre_v2.4/,根目录只保留最新版 v2.4.0。cb-theme + cb-topbar,下次打开自动还原。顶栏月亮/太阳按钮仍可循环切下一套。cb-topbar。下次打开浏览器自动还原。顶栏原月亮/太阳按钮仍循环切主题色(兼容老习惯)。cb-cat-colors),换电脑前记得用「备份与恢复」把本机数据一起带走。core.js / app.js 的引用一直挂着 ?v=1.6.0,style.css 挂着 ?v=1.7.0,而程序实际已经到 v1.7.1。浏览器发现网址没变就直接读本地缓存,于是 v1.6.1 之后的所有新功能和修复都加载不到——表现就是「明明改了,打开还是老样子」。现在三个引用全部统一为当前版本号?v= 参数。这个参数的作用就是告诉浏览器「文件变了,别用缓存」,漏改等于白改——这也解释了为什么之前几次反馈「改了没效果」。core.js?v=1.6.0 / app.js?v=1.6.0 两年没升,v1.6.1~v1.7.1 的代码改动用户浏览器根本没加载style.css?v=1.7.0 停在上一版,v1.7.1 新增的样式(明细前缀、新建角色选项配色等)不生效input + 旁边的+」组合去掉,直接换成下拉框。选项从上到下:① 「+ 新建角色…」(高亮蓝紫,单独配色)② 已有角色(来自历史记录的对方 + cb-custom-roles 手动库)。选「+ 新建角色…」自动弹出新建窗、保存后下拉自动选中新名字、再下一次直接选就行,不能再像 input 那样随手敲字明细:调味料」「支付:微信」,没填的字段也明确写成「明细:(未填)」「支付:(未选)」(灰斜体)⏰HH:MM:SS,下面的日期行又重复拼了一遍 今天 · 周二 · HH:MM:SS,同一条记录的时间戳显示两次。现在日期行只显示「今天 · 周二」,时间戳只显示在 meta 行那个 ⏰ 处