Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 22 May 08:18
· 156 commits to main since this release

概述

v0.2.0 是面向「易用性 + 数据模型」的一次较大升级,主线四件事:

  1. 资产负债分类体系整体换上方案 D(10 资产 + 6 负债,三层扁平),删除会计余孽,独立出「数字资产 / 退休与长期账户 / 保险账户」三大类
  2. 资产负债录入对话框换上全新 CategoryTreePicker,把原「类型 + 三级分类路径」两个字段合并为「tab + 面包屑 + 搜索 + 自动穿透」的渐进式选择
  3. 修了一批长期视觉 / 交互瑕疵(弹窗遮罩漏顶、Select 箭头贴边、分类面板被 viewport 裁等)
  4. 新增 GitHub Actions release workflow,往后 git push tag v* 即可自动构建并发布 release

主要变更

1. 资产负债分类体系(方案 D)

  • 资产从原 7 大类(现金与存款 / 稳健投资 / 权益投资 / 保障与储备 / 不动产 / 实物资产 / 经营与往来)重组为 10 大类:现金存款类 / 固定收益类 / 权益与另类 / 数字资产 / 退休与长期账户 / 保险账户 / 不动产 / 车辆 / 其他实物 / 经营资产
  • 负债从原 6 大类(房屋相关负债 / 消费负债 / 车辆及耐用品负债 / 经营负债 / 投资杠杆负债 / 往来及其他负债)重组为 6 大类:住房负债 / 经营负债 / 消费负债 / 车辆与耐用品负债 / 投资杠杆负债 / 亲友借款
  • 删除家庭场景用不上的「应收资产 / 其他应付款」等会计概念
  • 黄金账户型走「权益与另类 / 另类投资 / 贵金属账户」,金条实物走「其他实物 / 贵金属与珠宝 / 黄金实物」,资产形态清晰分流

2. 录入对话框 CategoryTreePicker

  • 合并原「类型(资产/负债)+ 三级分类路径」为一个控件,dialog 内只占一行
  • 点开后含:顶部 资产 (10) / 负债 (6) tab → 面包屑「全部 › L1 › L2 ›」(每段可点回退)→ 搜索框(输入即跳出面包屑模式,L1/L2/L3 任一段命中均出)→ 当前层列表(每次只面对 ≤10 项)
  • 二级若只含 1 个三级会自动穿透到三级,少一击
  • 面板展开时自动 scrollIntoView,让「分类」label 紧贴 dialog 头部,最大化展示组件全貌

3. Dialog / Select 视觉与交互修复

  • Dialog 改用 createPortal 渲染到 document.body,修了遮罩没遮全侧边栏 + 主内容顶部 padding 区的 bug
  • Dialog 改为 flex max-h-[85vh] flex-col + 内部 overflow-y-auto + footer 固定底部,长内容自身可滚、操作按钮始终可见
  • Select 箭头全系统统一:appearance-none 隐藏浏览器默认箭头 + 自绘 lucide ChevronDown 绝对定位,告别 Chrome/Safari 紧贴右边缘的丑陋默认样式

4. 分析看板视觉收紧

  • 各图表 ECharts grid 内边距收紧,消除卡片左 / 底 / 桑基两侧的大块灰白留白
  • 「风险与配置」tab 三卡片重排:波动率 + 相关性矩阵同行(两者高度都有上限),再平衡提醒独占下排全宽
  • 相关性矩阵加方阵守卫(max-width = height + 160),N×N 单元格在两个方向接近正方形

5. 录入页「目标占比配平」面板

  • 改为按需折叠的紧凑信号面板:全部成员达标的稳态下整块零高度,出现未达标 / 超出时才自动展开
  • 单卡瘦身(去掉装饰性大号 100.0% 副标):高度从 ~120 px → ~62 px,宽屏一排能塞更多成员

6. 桌面应用 / 构建

  • 自动更新链路改为「后台静默下载 + 用户单次确认升级」,含 macOS xattr -dr com.apple.quarantine 剥离,免 Gatekeeper 二次授权
  • macOS DMG 打包改用 hdiutil 自制,绕过 maker-dmg → electron-installer-dmg → appdmg → macos-alias 在新 Node 上的 native binding 编译问题
  • 新增 .github/workflows/release.yml:on push tag v* 自动在 macos-latest 上构建 arm64 DMG/ZIP 并发布 release,release notes 自动从 CHANGELOG 抠取
  • 应用图标重做为符合 Apple HIG 的双蓝 H 标志

升级说明

  • 存量用户:旧 holding 的 (l1Id, l2Id, l3Id) 在新分类树里 row 仍存在(FK 约束未破坏)但对应的分类名字已变,感知到的是「分类被全部重命名」。建议升级后检查一次每个 holding 的分类归属是否仍合适
  • 开发期:删 backend/data/app.db 后首次启动,让 bootstrap 重写入方案 D 树
  • 桌面端:v0.1.3 用户启动后会自动检测、后台下载,点击通知确认即可升级,无需 Gatekeeper 二次授权

构建产物



Overview

v0.2.0 is a substantial UX + data-model upgrade with four main threads:

  1. The household asset/liability taxonomy is wholesale-replaced by Scheme D (10 asset roots + 6 liability roots, fully flat three-level), with accounting-flavoured leftovers dropped and "Digital assets / Retirement & long-term accounts / Insurance accounts" promoted to first-class roots.
  2. The entry form dialog gets a brand-new CategoryTreePicker that merges the previous "type + three-level category path" fields into a progressive picker (tab + breadcrumb + search + auto-penetration).
  3. A batch of long-standing visual / interaction defects are fixed along the way (dialog overlay clipping, native select caret hugging the edge, popover clipped by viewport, …).
  4. A new GitHub Actions release workflow now builds and publishes releases automatically on every v* tag push.

Highlights

1. Taxonomy (Scheme D)

  • Asset side regroups from 7 roots (cash & deposits / stable investments / equity investments / insurance & reserves / real estate / physical assets / business & receivables) into 10 roots: cash deposits / fixed income / equity & alternatives / digital assets / retirement & long-term accounts / insurance accounts / real estate / vehicles / other physical / business assets
  • Liability side regroups from 6 roots into 6 new roots: housing / business / consumer / vehicle & durables / investment leverage / personal loans from friends and family
  • Accounting-flavoured "receivables" (asset side) and "other payables" (liability side) — which households don't really use — are dropped
  • Account-type gold lives under "equity & alternatives / alternatives / precious-metal accounts", physical bullion under "other physical / precious metals & jewelry / physical gold"

2. CategoryTreePicker on the entry dialog

  • Merges the previous "type (asset/liability) + three-level category path" into a single one-row control
  • On open, the panel shows: an Asset (10) / Liability (6) tab at the top → a clickable breadcrumb (全部 › L1 › L2 ›, each segment can re-pick) → a search box (typing leaves breadcrumb mode, matches any L1/L2/L3 segment) → the current level's list (always ≤10 items)
  • An L2 with exactly one L3 child auto-penetrates to the L3, saving one click
  • Opening the panel auto-scrolls the "分类" label up to the dialog header, maximising how much of the picker fits in the viewport

3. Dialog / Select fixes

  • Dialog now renders through createPortal to document.body, fixing the backdrop that previously left the sidebar and the main content's top padding strip unmasked
  • Dialog becomes flex max-h-[85vh] flex-col with a flex-1 overflow-y-auto body and a sticky footer — long content scrolls internally and the action buttons stay visible
  • The system-wide Select caret is unified: appearance-none hides the browser default, a self-drawn lucide ChevronDown is absolutely positioned — no more Chrome/Safari arrows glued to the right edge

4. Analytics dashboard polish

  • ECharts grid paddings tightened across charts to eliminate the visible grey bands on card left / bottom / sankey sides
  • The "Risk & Allocation" tab is rearranged: volatility + correlation matrix share the upper row (both have height caps), the unbounded rebalance reminder owns the full-width lower row
  • The correlation matrix gains a square-aspect guard (max-width = height + 160), keeping N×N cells near-square in both directions

5. Entry page "target-ratio rebalancing" panel

  • The overview becomes a need-based compact signal panel: when every member is balanced the whole section collapses to zero height; it auto-expands only when someone goes under or over
  • Each mini card slims down from ~120 px to ~62 px tall (dropping the decorative 100.0% headline), and a wider screen fits more members per row

6. Desktop app / build

  • The auto-update flow is reshaped into "silent background download + single user-confirmed upgrade", with xattr -dr com.apple.quarantine stripped on macOS so Gatekeeper no longer asks for re-authorization
  • The macOS DMG step switches to hdiutil, dodging maker-dmg → electron-installer-dmg → appdmg → macos-alias native bindings that fail to compile on newer Node
  • New .github/workflows/release.yml builds an arm64 DMG/ZIP on macos-latest on every v* tag push, then publishes the release with notes auto-extracted from CHANGELOG
  • The app icon is redesigned to a dual-blue "H" mark following Apple HIG

Upgrade notes

  • Existing users: a holding's (l1Id, l2Id, l3Id) still resolves in the new tree (FK is intact) but the resolved names have shifted, so users perceive it as "categories were renamed". Recommend a one-pass review after upgrading to confirm each holding still sits where it should
  • Dev environment: delete backend/data/app.db, then let bootstrap reseed the Scheme D tree on next startup
  • Desktop: v0.1.3 users will auto-detect and background-download; clicking the notice once confirms the upgrade, no Gatekeeper re-authorization required

Artifacts