资讯详情

资讯详情

Actual Budget 24.9.0 深度解析:移动端长按操作、标签过滤、CSV 导入增强与可定制仪表盘

Actual Budget 24.9.0 深度解析移动端长按操作、标签过滤、CSV 导入增强与可定制仪表盘【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actualActual Budget以下简称 Actual在 24.9.0 版本中带来了一组覆盖移动端、交易表、过滤规则、预算、导入与实验性功能的重要更新。本指南将基于官方发布说明与仓库源码逐项拆解该版本的核心变化从移动端长按交易弹出操作栏、悬停查看导入 Payee到全新的 has tags 标签过滤条件、CSV 导入跳过表头行以及实验性的可拖拽、可缩放报告首页仪表盘。读完本文你将清楚每一项功能的实际操作方式、背后的实现位置以及该版本对 API、规则引擎、计划Schedules与 Actual Server 同步服务带来的具体影响。版本总览与升级方式24.9.0 是 Actual 在 2024 年 9 月发布的月度版本发布说明见 2024-09-03-release-24.9.0.md。官方发布说明中概括的 Notable improvements 包括六项移动端长按交易记录可展开更多操作action bar交易表在 Payee 列悬停时显示导入的原始 Payee 信息过滤支持按 has tags包含标签条件过滤预算高亮当前月份导入支持跳过 CSV 导入文件中的表头行实验性功能可定制的报告首页仪表盘dashboards。Docker 镜像标签为24.9.0自托管用户可直接使用该标签拉取升级。此外该版本的 Actual Server同步服务也包含独立的增强、修复与维护项详见文末的 Server 章节。移动端长按交易记录唤起操作栏本次发布在移动端账户视图中引入了长按long press交易记录的手势交互长按某条交易后会弹出一个包含更多操作的操作栏action bar让用户在不进入交易详情的前提下快速完成常见操作。该项功能由 PR #2892 引入作者 joel-jeremy主要服务于移动端小屏场景下的操作效率。从仓库结构看移动端与桌面端共用同一套交易组件逻辑桌面客户端交易相关代码集中在 packages/desktop-client/src/components/transactions移动端与桌面端通过响应式组件与同一数据层packages/loot-core交互因此长按操作最终仍会调用统一的交易更新/删除数据接口。交易表悬停显示导入 Payee 与计划预览增强两个与交易表展示相关的增强值得关注悬停显示导入 Payee#3018当交易是通过银行同步或 CSV/OFX/QIF 等文件导入时Actual 通常会重命名或合并 Payee。新版本在交易表的 Payee 列上增加了悬停提示tooltip显示该笔交易导入时携带的原始 Payee 名称方便用户核对导入与清洗后的差异。这项能力依赖交易数据中保留原始导入信息的数据结构由 packages/loot-core 的交易模型承载。计划预览显示拆分交易#2923在周期性计划Schedules的预览中现在可以正确显示拆分交易split transactions的子项而不是只展示整笔金额方便在创建计划时核对拆分明细。此外还有一个与之配合的交互细节S 快捷键现在可以在交易表内直接打开链接计划link schedule操作同时计划链接弹窗支持按账户过滤待选交易#3188。这些操作由桌面客户端的交易表组件与计划相关组件实现。过滤与规则引擎has tags 条件与标签转义新增 has tags 过滤条件版本为交易过滤与规则系统新增了基于标签的过滤条件has tags#3290。你可以在过滤器或交易规则中以笔记notes字段为目标、以#TagName形式指定标签从而筛选出包含该标签的交易。从源码可以确认该条件在规则引擎中的完整实现操作符定义于 packages/loot-core/src/server/rules/condition.ts文件第 101 行附近定义了hasTags操作符第 127、137 行将其纳入需要特殊处理的集合例如与hasAnyTag一起处理多标签匹配第 348 行的case hasTags是具体取值逻辑packages/loot-core/src/shared/rules.ts 第 38 行把hasTags注册进合法操作符集合同时第 65 行将其连同hasAnyTag标记为disallowedOps——即在某些上下文如特定 UI 字段选择器中不允许使用这解释了为什么该条件主要出现在过滤器而非所有规则场景服务端执行逻辑在 packages/loot-core/src/server/transactions/transaction-rules.ts第 513 行对hasTags/hasAnyTag跳过某些转换$transform第 638 行是服务端匹配的具体实现。配套的测试用例非常详尽见 packages/loot-core/src/server/transactions/transaction-rules.test.ts 第 639–753 行覆盖了通过{ field: notes, op: hasTags, value: #Tag_1 }查询交易不带#前缀直接写Tag_1也能匹配多个标签同时匹配如#Tag_1 #Tag_2标签以$开头如#$Bug_Test的特殊场景。用双##转义标签#3246与标签功能配套本次更新允许使用双井号##转义标签当你希望在笔记文本中表示字面的#字符而不是触发标签语义时可以写成##。这一转义规则同样作用于笔记字段的标签解析保证含#的普通文本不会被误判为标签。规则动作prepend / append 笔记#3215规则系统新增了两类动作向交易的笔记notes字段前插prepend或追加append文本。这在自动化规则场景中非常实用——例如根据 Payee 或金额自动在笔记前后附加分类标识。规则动作定义与执行位于 packages/loot-core/src/server/rules 与 transaction-rules.ts。其他过滤与规则修复修复保存新过滤器时的重复过滤器误报#2970之前在某些条件下保存过滤器会被错误判定为重复过滤器本次修正了该误判逻辑修复过滤条件在 all / any 之间切换时的过滤结果错误#3278确保all所有条件满足与any任一条件满足两种聚合模式切换后结果正确将正则表达式条件应用于导入的交易#3287使基于正则regex匹配的条件也能作用于通过导入产生的交易数据。CSV 导入增强跳过表头行与按名称识别字段可选配置跳过表头行#3234部分银行如荷兰的 ING导出的 CSV 文件在表头之前还包含若干说明性行heading lines。24.9.0 为此新增了一个可选的导入配置值用于跳过一条或多条表头行避免这些非数据行被误当作交易导入。用户只需在导入界面填写需要跳过的行数即可具体数值取决于目标银行 CSV 的实际格式。按名称识别 Payee 与 Notes 字段#3203CSV 导入逻辑得到增强如果 CSV 中存在命名为 Payee、Notes或其本地化变体的列Actual 会直接按列名识别并映射到对应字段而不再完全依赖固定列序。这对于列顺序不固定或包含多余列的自定义 CSV 更加友好。导入相关实现位于 packages/loot-core/src/server/importersCSV 解析与字段映射逻辑所在目录。导入相关的修复导入交易不再触发交易去重#2991修复了导入交易被错误合并/去重的问题修复严格 ID 检查功能引入的导入失败#3232与新账户上导入交易失败的问题#3251分别解决了上一版本严格 ID 校验导致的回归以及新建账户首次导入失败的场景OFX 文件小数逗号解析修复#3044对于使用逗号作为小数分隔符的 OFX 文件金额现在能被正确解析。预算高亮当前月与新增 API 方法高亮当前月份#3111预算页面现在会高亮当前月份让用户在浏览数月预算视图时能快速定位现在减少在多月导航中迷失方向。该功能位于桌面客户端预算组件packages/desktop-client/src/components/budget与报告预算视图budget/report中相关样式与标记逻辑同期也获得了移动端适配#3209 调整了支出报告在移动端上的显示。API 新增hold-for-next-month与reset-hold#3140官方 API 新增两个与预算持有hold机制相关的方法对应信封预算envelope budgeting中将本月预算额留到下一月的操作holdBudgetForNextMonth(month, amount)把指定月份的指定金额持有hold到下一个月resetBudgetHold(month)重置清除指定月份的持有金额。其实现位于 packages/api/methods.ts 第 404–410 行export function holdBudgetForNextMonth(month: string, amount: number) { return send(api/budget-hold-for-next-month, { month, amount }); } export function resetBudgetHold(month: string) { return send(api/budget-reset-hold, { month }); }可以看到它们分别通过api/budget-hold-for-next-month与api/budget-reset-hold消息与 loot-core 服务端通信month参数为月份字符串如2024-09amount为持有金额。此外API 层还顺带清理了部分any类型#3238使这些新方法的类型更严格。实验性功能可定制报告首页仪表盘本版本最引人注目的实验性功能是可定制的报告首页Dashboard拖拽与缩放 widget#3231报告页现在可以作为首页仪表盘使用其中的 widget小部件支持拖拽排序与自由缩放用户可按自己的使用习惯组织报告布局重命名所有 widget#3284仪表盘上的每个 widget 都支持自定义名称便于区分多个同类报告例如多个不同的自定义报告卡片反馈链接#3283实验性功能开关旁边新增了反馈链接方便用户直接向维护团队反馈体验问题未启用仪表盘时恢复支出报告#3323修复了仪表盘未启用时支出报告spending report缺失的回归。仪表盘相关实现分布在桌面客户端的报告模块中数据层由 packages/loot-core 的报告查询接口支撑。同时报告相关代码在本版本经历了大量 TypeScript 迁移#3285 将报告卡片迁移至 TS、#3178 统一了自定义报告的selectedCategories与conditions数据源为仪表盘功能提供了更可靠的类型基础。其他增强与 i18n 基础引入 i18n 框架#3018/#3036 起为后续多语言支持做准备本版本在多个模块接入翻译支持包括 filters#3270、autocomplete#3275、预算报告#3280、报告图表#3299、侧边栏#3302等并修复了翻译键未正确插值直接显示原文的问题#3242YNAB4 隐藏类别名缩短#3122从 YNAB4 导入的隐藏类别hidden category名称会自动缩短避免过长的前缀更新实验性月度支出报告的选项名称#3181按钮组件迁移#2984/#3156/#3159侧边栏、通知、交易、计划选择器、预算页、报告页等大量组件迁移到基于 react-aria-components 的新 Button为可访问性与交互一致性打基础spreadsheet 字段类型检查#3093/#3095/#3097分三步为电子表格spreadsheet字段引入类型检查支持降低公式出错概率。修复要点速览Bugfix 精选除前文已提及的修复外该版本还修复了一批影响日常使用的细节问题模态框自动聚焦#2974打开模态框时自动聚焦输入框或主按钮减少不必要的点击掩盖预算目标类别#3115在覆盖透支cover overspending的类别列表中隐藏目标类别本身GoCardless 桌面端重新链接账户#3212与Electron 打开文件报错#3220、Mac 导出失败#3250、Mac 应用签名#3300修复桌面端与银行同步的多个集成问题访问后续月份崩溃#3237、临时交易中的转账类别#3239、预算内转账类别显示#3258修复交易与预算联动中的显示与崩溃问题S 热键冲突#3324修复交易表中 S 快捷键意外触发的回归长 Payee 名称溢出#3340、删除的 Payee 出现在建议列表中#3318、移动端账户状态指示器截断#3206一系列 UI 细节修复触屏设备上预算笔记 tooltip 不再弹出#3342改善触屏体验报告页支出卡片月份错误#3295修正卡片上显示的月份。Actual Server同步服务侧更新Actual Server同步与银行接入服务仓库中的 packages/sync-server在 24.9.0 中同样有一批更新银行接入增强GoCardless 新增 Berliner Sparkasse德国支持银行历史受限列表扩充新增SANTANDER_BSCHESMM与NORDEA_NDEADKKKNordea Personal DK——加入该列表的银行意味着只能同步有限的历史交易Actual 会相应调整同步行为Payee 名称映射修复修复基于交易金额选择 Payee 名称、BANKINTER_BKBKESMM的creditorName回退到remittanceInformationUnstructured、KBC_KREDBEBB的 payeeName 错误、以及formatPayeeName中名称已定义时不应回退账户等问题。SimpleFIN 稳定性修复针对 SimpleFIN 数据源相关源码位于 packages/sync-server/src/app-simplefin修复了多类崩溃与健壮性问题JSON 数据异常导致崩溃、SimpleFIN 服务不可用时服务端宕机、账户找不到时的错误提示、以及账户需要关注needs attention时/transactions接口提前返回。架构与维护用户校验重构为中间件#422并新增/sync端点与其余app-sync.js端点的集成测试#423/#425新增日志中间件#434让服务端日志在 Electron 的 devtools 中可见#3219 的桌面端配套改进GoCardless 同步 API 用量优化#435/#436通过移除多余的accountMetadata调用与不必要的余额信息减少对 GoCardless API 的调用量降低同步成本。小结Actual Budget 24.9.0 是一版体验打磨 能力铺设并重的发布移动端长按操作让手机端记账更高效has tags 标签过滤与规则动作扩展让自动化更灵活CSV 跳过表头行解决了真实银行导出文件的兼容问题而可拖拽缩放的报告仪表盘则为后续个性化首页打下了实验基础。与此同时规则引擎packages/loot-core/src/server/rules/condition.ts、交易规则transaction-rules.ts、API 层packages/api/methods.ts与同步服务packages/sync-server的源码同步演进为读者深入理解这些功能提供了完整的实现证据。如果你正在自托管 Actual直接以24.9.0标签升级即可获得上述全部能力若你在做二次开发或集成建议从上述源码路径入手结合配套测试如 transaction-rules.test.ts 中的hasTags用例验证行为快速定位与扩展现有逻辑。【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actual创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →