ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Actual Budget 26.6.0 版本解析:跨界点报告、自定义主题稳定化与预算自动化 UI

Actual Budget 26.6.0 版本解析:跨界点报告、自定义主题稳定化与预算自动化 UI Actual Budget 26.6.0 版本解析跨界点报告、自定义主题稳定化与预算自动化 UI【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actualActual Budget本项目仓库根目录是一个本地优先的个人财务应用其 26.6.0 版本Docker 标签26.6.0是一个里程碑式的功能发布将 Crossover跨界点报告与自定义主题从实验性功能升级为一等公民first-party全面重设计了银行同步配置与账户关联流程同时以实验性形态引入了预算自动化 UI目标模板、Enable Banking 银行同步提供方和 Balance Forecast 余额预测报告。本文基于 packages/docs/blog/2026-06-01-release-26-6-0.md 展开结合仓库内的功能文档与源码逐项拆解本次发布的新功能、弃用公告与升级注意点帮助你在升级前充分评估、升级后快速上手。版本总览与升级前必读本次发布的核心内容可归纳为四条主线功能转正StableCrossover 报告与自定义主题正式成为 first-party 功能不再需要开启实验性开关。体验重构围绕新的 Bank Sync 页面重新设计了银行同步配置与账户关联流程交易备注支持 Tag 自动补全桌面端与移动端均可直接创建标签。实验性新功能预算自动化 UI目标模板、Enable Banking 银行同步提供方、Balance Forecast 报告。两项重要公告规则操作模板化Rule Action Templating正式弃用Docker 预发布镜像标签edge更名为nightly。弃用公告规则操作模板化自本版本起规则操作模板化rule action templating被标记为已弃用deprecated将在未来版本中移除。官方建议新规则改用 规则公式Rule formulae它使用更强大的 Excel 风格语法覆盖了模板化的同类用例已有使用模板化的规则请尽快迁移。被弃用的模板化能力包括基于交易数据在规则内动态设置notes、date、amount、payee名称、cleared等字段底层使用 Handlebars 模板引擎处理并提供add/sub/div/mul/mod等数学函数、regex/replace/replaceAll/concat等文本函数、addDays/subDays/addMonths/format等日期函数以及debug调试函数可用变量包括today、amount无小数存储如 152 元存为 15200可用{{div amount 100}}还原、imported_payee、payee_name、is_child/is_parent等。具体语法见 Rule Action Templating迁移目标见 Rule formulae。Docker 公告edge更名为nightly如果您在跟进预发布镜像请注意 Docker 配置需要更新edge标签已更名为nightly即拉取:nightly或:nightly-alpine对应仓库维护工作见 #7898、#7901。所有实验性功能的文档均建议使用nightly镜像获取最新实现。Crossover 报告财务独立时点测算转正Crossover Point 报告源自《Your Money or Your Life》方法论用于可视化被动收入何时足以覆盖预计支出这一财务独立时点。本次作为 first-party 功能正式发布#7804并在此次发布周期内修复了若干报告缺陷#7803。四项核心输入该报告需要四个关键输入来生成预测完整参数见 报告索引参数说明支出类别Expense Categories指定哪些预算类别是退休后仍会持续的支出用于将支出外推至未来。应排除不会延续到财务独立后的类别如退休储蓄、工作相关支出收入账户Income Accounts计算被动收入时纳入的账户如 401k、IRA 等退休账户与投资账户。应排除非退休资金账户如子女教育账户安全提款率Safe Withdrawal Rate每年从投资组合中提取用于生活支出的百分比默认 4%源自 1998 年 Trinity Study 的4% 法则可依风险偏好与资产配置调整支出预测类型Expense Projection Type由历史数据外推未来支出的方法Hampel Filtered Median先用 Hampel 检验剔除异常月支出再对剩余月份取中位数外推、Median历史月支出中位数无异常过滤、Mean全部历史月支出的平均值预期收益率Estimated Return可选收入账户的预期年化回报率。不填时按收入账户余额随时间的变动计算历史回报注意该历史计算包含投入资金可能抬高回报率工作原理报告基于所选支出类别与预测类型将支出外推至未来同时基于所选收入账户、预期收益率与安全提款率将被动收入外推至未来。当被动收入曲线超越预计支出曲线的那一刻即为财务独立时点——两条曲线的跨界点。报告配置会被保存可挂载到仪表盘dashboard作为小组件持续跟踪。自定义主题正式稳定发布自定义主题允许你通过安装自定义配色方案来个性化 Actual 的界面外观可以从社区主题目录选择也可以粘贴自定义 CSS 创建自己的主题。本次发布将其作为 first-party 功能转正#7775。主题格式与校验规则自定义主题必须以:root选择器 CSS 自定义属性变量的形式编写核心规则详见 Custom Themes 文档CSS 必须恰好包含一个:root { ... }块不允许块外内容只允许以--开头的自定义属性Actual 使用--color-*变量体系值可以是字面量颜色、长度等也可以是var(--custom-property-name)引用形式不支持带 fallback 的var(--name, value)形式不允许其他选择器、at-rulesimport、media、keyframes等或嵌套块允许注释校验时会剥离。:root { --color-pageBackground: #1a1a1a; --color-pageText: #ffffff; /* 复用其他变量 */ --color-buttonPrimaryBackground: var(--color-pageTextLink); }可覆盖的变量体系主题可覆盖基座主题中定义的全部 CSS 变量。在仓库源码中内置主题从 TypeScript 模块逐步迁移为纯 CSS 文件见 #7851当前定义位于 component-library 主题目录light.css、dark.css、midnight.css、palette.css。常用变量分组包括页面颜色--color-pageBackground、--color-pageText、--color-pageTextSubdued、--color-pageTextPositive、--color-pageTextLink表格颜色--color-tableBackground、--color-tableText、--color-tableBorder、--color-tableRowBackgroundHover按钮颜色--color-buttonPrimaryBackground、--color-buttonPrimaryText、--color-buttonNormalBackground、--color-buttonNormalText侧边栏颜色--color-sidebarBackground、--color-sidebarItemText、--color-sidebarItemTextSelected图表配色--color-chartQual1至--color-chartQual9影响自定义报告所有图表变体柱状、折线、环形等的系列颜色安装与发布安装有两种方式在Settings → Themes → Custom theme中从目录选择主题托管于 GitHub选中即自动拉取带 6 色 3×2 调色板预览或直接粘贴 CSS 到文本区点击Apply会先校验出错会在文本框下方显示错误信息。若要发布主题创建 GitHub 仓库在根目录main分支放一个actual.css以owner/repo格式提交到官方目录。主题目录由仓库中的 customThemeCatalog.json 维护每条目包含name、repo、colors6 个十六进制代表色用于调色板预览。开发期建议先用粘贴 CSS功能快速迭代再决定是否托管。重新设计的银行同步配置与账户关联流程本次发布对银行同步的配置与账户关联流程做了整体重构#7449将其统一到新的Bank Sync 页面上移动端的银行同步状态指示也调整到文本右侧#7611。同时银行同步的底层实现有大量配套改进GoCardless 同步服务器代码迁移至 TypeScript#7904并清理了银行工厂加载流程#7809使用 GoCardless 提供的标记识别有特殊持续访问要求的银行#7890修复 Enable Banking 同步 91 天而非上限 90 天的差一错误#7930OpenID 模式下将 sync-server 的 secrets API 限制为仅管理员可见非管理员用户无法再枚举已配置的银行同步集成#7862。实验性功能一Balance Forecast 余额预测报告Balance Forecast 报告从已入账交易历史、未来预定交易schedules或 Tracking Budget 计划出发预测未来余额帮助你提前发现可能的资金缺口、比较不同日期区间并观察计划中的收入与支出如何随时间影响余额。完整说明见 Balance Forecast Report。预测机制报告首先解析所选账户、过滤器与预测日期范围从预测开始前的已入账交易计算起始余额。默认情况下Actual 会将预定交易展开为直到预测结束日期的模拟发生事件对这些模拟交易应用排程规则当转移计划transfer schedules双方都能归入所选账户时还会生成对应的转账腿。对每个预测日Actual 用当天的已入账交易加上当天的模拟预定交易更新滚动余额月度粒度则按月展示同样的滚动余额。此外Tracking Budget 文件还可以选择Tracking budget作为预测来源该模式从当前预算内on-budget余额出发按月累加预算内收入、扣减预算内支出不使用排程、账户过滤器或报告过滤器且始终使用月度粒度。展示选项与排查Start / End选择预测日期范围Quick ranges报告头部提供未来快捷预设Granularity月度/日度切换Forecast source预定交易或 Tracking Budget仅 Tracking Budget 文件Filters过滤纳入预测的交易与排程Tracking Budget 模式下忽略Save widget把当前设置存回仪表盘小组件。常见排查预测看起来太平——检查范围过长或余额变化相对账户总额过小排程缺失——确认排程处于激活状态且账户信息完整余额异常——检查账户过滤器、报告过滤器、转移排程及未来交易是否已排程。该报告在本周期内经历了多轮修复修复 All future 范围#7849、按零余额穿越点为预测线着色#7850、修复已入账拆分交易被重复计数#7955。实验性功能二预算自动化 UI目标模板预算自动化让你每月只需一次点击即可自动填充整个预算根据已添加的自动化规则填满各预算类别月末再一键清理盈余。典型用法包括每月固定预算 $100、每两周预算 $50、月初将类别回填到 $300、把全部剩余资金投入储蓄类别、按收入的 10% 储蓄、按过去 6 个月平均支出预算以及让 Actual 为多年后的远期大额采购动态计算每月应存金额。完整指南见 Budget Automation。笔记模板与 UI 的迁移每个类别只有一个自动化事实来源UI 或笔记二者不可并存。若你已有笔记模板首次打开 UI悬停类别名出现的饼图图标时会呈现迁移表单可对比查看原始笔记模板修改后Save即完成迁移之后笔记可删除再往笔记里添加新自动化将不再生效如需回退在 UI 弹窗左下角执行 Unmigrate。自动化类型与优先级从表单可添加普通预算自动化、长期目标long-term goal、月末清理month-end cleanup。表单右上角会实时显示该类别预计将被预算的金额。优先级Priorities大多数自动化带优先级字段决定执行顺序从小到大不允许负优先级优先级 0 最先执行之后依次是 1、2、30、36……相同优先级的自动化按数据库顺序执行若希望精确控制填充顺序请给每个自动化分配不同优先级编号警告优先级 0 的自动化即使To Budget资金不足也会照常预算可能导致To Budget为负非 0 优先级则不会预算超过可用资金同一类别中多个Cover schedule或Save by date自动化的优先级必须一致建议初始间隔 10 个编号为日后插入留出空间。自动化类型Fixed Amount固定金额按选定节奏周/天/月等与起始日期预算固定金额。按周或按天时整月预算基于该月包含的周/天数计算例如起始日为周六2026 年 5 月有 5 个周六则周预算 50 会投影出 250。Save by Date按期储蓄为在指定月份凑足目标金额而动态计算每月应存额中途增删资金会自动重算剩余月供。选项含Repeat周期性目标如季付、年付账单与Allow early spending允许提前支出而不重算适合旅行、婚礼等提前数月花钱的场景。Cover Schedule覆盖排程基于已有排程预算两种模式为下一次发生存钱每月分摊到足额或仅在排程发生当月全额预算。编辑排程后自动化自动同步。From History历史数据可复制某一前月预算或取前 N 个已完成月份的平均支出只用完成月份以保证反映真实支出行为支持调整功能。% of Income收入百分比按本月/上月全部收入、本月可用资金优先级 0 及更早自动化运行后的剩余或指定单一收入类别计算百分比。Refill to Cap回填至上限需搭配Balance cap将类别回填到上限。Whatever is Left剩余资金其余自动化运行后按权重分配To Budget剩余资金公式为budgeted_amount available_funds / sum_of_weights * category_weight有余额上限的类别先填到上限、从可用资金中扣除后再进行下一轮分配示例剩余 $100Snack Fund 权重 3 上限 $40 → 第 1 轮得 $40、To Budget 余 $60第 2 轮 Vacation 权重 1 得 $20、Investment 权重 2 得 $40。调整Adjustments针对Cover schedule与From history自动化可附加Fixed amount或Percentage调整均可增可减固定金额默认增、点切换方向用于应对保险、房产税等逐年上涨的支出或逐步压减超支类别的预算。余额上限Balance cap设置类别资金上限超过上限后自动化不再注入资金若类别余额已超上限下次运行自动化时会移除超额部分。开启Retain existing funds over the cap可保留超额资金。同一类别所有自动化均受上限约束文档中以周六晚餐工作日午餐共用类别为例演示了按周一计周计算 6/7/8/10 月的不同投影预算。长期目标与预算指示器自动化运行后类别余额文字颜色即预算指示器绿已达预计预算、橙未达、红负余额悬停可查看详情 tooltip。长期目标改变指示逻辑着色反映距目标的进度即使当月预算已满足、但未达长期目标仍显示橙色达标转绿撤资后回落橙色。注意长期目标本身不会自动加钱或停钱停钱请加余额上限也可以只设长期目标、手动向目标预算。运行自动化月度层面预算页头部菜单Check templates仅测试全部自动化Apply budget template只在预算为 0 的类别运行自动化保留已有预算额Overwrite with budget template用自动化覆盖所有预算单元格推荐在使用非 0 优先级时使用。按需应用单类别可用预算格下拉菜单 Overwrite with template单类别组可用组下拉菜单 Overwrite with templates多月度视图下应用于最左侧月份。月末清理End of month cleanup从预算头部主菜单运行按序执行先运行所有命名池named pools把源类别盈余收进池 → 优先填补池内超支类别 → 剩余按权重分配若池内无接收类别则余款归To Budget再运行全局清理Send leftover源类别收归 To Budget → 覆盖超支类别资金不足时尽量覆盖启用 Rollover Overspending 的类别被忽略 → 按权重向Receive leftover类别分配剩余。权重公式distributed_amount available_funds / sum_of_weights * category_weight示例权重 1/1/2/2/4和 10则各得 10%/10%/20%/20%/40%。注意清理不遵守余额上限可用Retain existing funds over the cap保留超额否则下次运行自动化时被移除。命名池支持 Add to a pool 创建任意数量的命名池以精细化控制Only enough to cover any overspending 可限制类别仅接收覆盖超支所需资金。本次版本的自动化 UI 演进发布周期内 UI 持续打磨视觉重构#7597、dry run 仅作用于单个类别#7790、增加一次性设置选项区#7791、长期目标功能#7792、按日期储蓄可不重复#7810、打开弹窗自动选中首个自动化#7811、月末清理功能#7815、spend from 功能#7823、历史与排程模板增减能力#7881、每个自动化独立备注与预算页 tooltip#7906、Automations UI 中排程按字母排序#7913、月末清理模板持久化到数据库#7794、百分比输入一致性#7905与字体颜色可读性调整#7819等。实验性功能三Enable Banking 银行同步提供方Enable Banking 作为新的银行同步提供方接入#7345。设置流程见 Enable Banking Setup在 enablebanking.com 注册并登录创建Production应用确保重定向 URL 使用https与你的域名例如应用名Actualbudget、重定向https://actualbudget.example.com/enablebanking/auth_callback注册后在 Enable Banking 界面中关联所需账户复制 Application ID形如12345678-1234-1234-1234-123456789012回到 ActualMore → Bank Sync选择Set up Enable Banking粘贴 App ID 并上传凭据文件在具体账户中选择Link account → Enable Banking选择国家与银行按提示完成账户关联。该功能目前为实验性状态使用前需在 实验性功能 中开启并使用nightly镜像获取最新实现。标记Tag自动补全与交易体验改进在交易备注中输入#时桌面端与移动端都会弹出标签下拉#7654且可直接通过该补全创建新标签#7882修复 Notes has tags 交易过滤器在缺少#时误返回所有交易的问题——现在改为匹配不到任何结果#7808。交易相关的其它改进新增R键盘快捷键执行Make transfer选中两笔关联交易时#7750合并merge现在优先处理转账且仅允许同账户交易#7600转账不再要求日期相同#7722重复交易会被标记为未清算uncleared且解锁#7723移动端交易表单增加图标、占位符与下拉箭头并保持金额字段高度一致#7638、#7639移动端用户输入实时值跟踪#7774CSV 导出时防止被 Excel/LibreOffice/Google Sheets 误解释为公式#7859导入时校验交易金额为整数#7891QIF 导入保留类别#7869CSV 导入预览在映射类别不存在时不再误报更新#7878。API 与 CLI 增强公开 APIactual-app/api新增getNote与updateNote见 methods.ts无需内部 API 即可程序化读写类别备注模板、目标等对应测试见 methods.test.ts。Tracking Budget 的预算/收入/余额/结转字段也补充进 API#7526。CLI 缓存CLI 命令现在会短暂缓存已下载的预算新增actual sync命令用于刷新、查看或清除本地缓存见 cli 命令目录 与 cache.tsCLI 列表命令默认隐藏隐藏类别#7786。其他值得关注的修复与工程改进排程确保自动每日排程每天执行停用支付的 2 天回溯#7299规则改动日期后移动端排程可见性修复#7691排程名称重新显示在即将到来的交易备注中#7902。Sankey 图大规模数据集处理、更好的颜色映射与大量缺陷修复#7682含无 payee 时收入被误显示为支出#7632、负预算与正支出的处理#7903。报告Spending 报告保留已保存日期范围#7672Last month 实时区间仪表盘小组件不再还原为静态#7768自定义报告实时日期区间在打开过滤交易时保持#7889Budgeted 自定义报告的类别组过滤修复#7629。稳定性与安全CORS 代理可被绕过的安全问题修复#7788后端初始化失败时显示自定义错误屏#7761modal 增加 ErrorBoundary#7560移除 modal 遮罩上不必要的will-change: transform修复偶发文字模糊#7760Docker healthcheck 脚本修复并保持向后兼容#7840。工程维护CRDT 从google-protobuf迁移到bufbuild/protobuf并发布 v3.0.0#7535、#7818Docker 镜像命名edge→nightly#7898、#7901内置主题从 TS 模块转为纯 CSS 文件#7851GoCardless 代码 TypeScript 化#7904同步服务器测试串行执行避免共享库竞态#7847Alpine 基础镜像升级至 3.23.4#7939。升级建议与使用提示跟随预发布版本的用户立即把 Docker 配置从:edge/:edge-alpine改为:nightly/:nightly-alpine稳定版用户直接拉取26.6.0。使用规则模板化的用户计划迁移至 Rule formulae在新版本移除前完成过渡。尝鲜实验性功能在 实验性功能开关 中分别开启 Balance Forecast 报告、预算自动化 UI 与 Enable Banking并配合nightly镜像使用。银行同步用户熟悉新的 Bank Sync 页面流程自托管 sync-server 的 OpenID 部署下非管理员将无法再查看已配置的银行集成信息预期内的权限收紧。想换肤的用户自定义主题已转正可直接在Settings → Themes中安装目录主题或粘贴 CSS参照 Custom Themes 中的变量表与校验规则即可快速上手。【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actual创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进