KEEP
Release v0.10.31

April 26, 2026 Enriched

v0.10.31

Date: 2026-04-26
Changes: v0.10.30…v0.10.31

Summary

This release introduces a dedicated Flow tab built around a sleeve-level Sankey diagram, with start/end value labels, gain/loss deltas, sleeve name tags, and period attribution panels on hover. The cashflow simulator gains a sensitivity explorer alongside per-year market return overrides, annual Roth contribution and years-working inputs, an additional retirement savings field, taxable-account tooltips, and refreshed defaults. A new KEEP research agent skeleton lands as a CLI harness with one chain and three tools. The portfolio surface picks up snapshot delta indicators with dollar change, a gain/loss column on sleeve rows in the Structure tab, sleeve value history charts with transaction markers and a top-holdings overlay, and a Purchase Price column in the Portfolio detail table.

Notable Changes

  • Flow tab with sleeve Sankey: A dedicated full-width Flow tab hosts a sleeve-level Sankey with start/end value labels, sleeve name tags, gain/loss deltas, and period attribution hover panels, presented in the neobrutalist visual style.
  • Cashflow simulator — sensitivity explorer: The simulator adds a sensitivity explorer with refined metrics, per-year market return overrides, annual Roth contribution and years-working inputs, an additional retirement savings field, taxable-account tooltips, and a friends DB script for default seeding.
  • Sleeve value history charts: Each sleeve now has its own value history chart with transaction markers and a top-holdings overlay; a fix addresses charts not rendering after tab switches due to stale canvas refs.
  • Snapshot delta indicators: Portfolio rows now show snapshot delta indicators including dollar change, and the Structure tab adds a gain/loss column on sleeve rows.
  • KEEP research agent skeleton: A CLI harness lands with one chain (research_symbol) and three tools, providing the foundation for an agentic research loop.

Features

  • feat: add start/end value labels, sleeve name tags, and gain/loss deltas to Sankey
  • feat: move Sankey to dedicated Flow tab with full-width layout and neobrutalist styling
  • feat: add sleeve Sankey diagram with period attribution hover panels
  • feat: add gain/loss column to sleeve rows in Structure tab
  • feat: add dollar change to snapshot delta indicators
  • feat: add snapshot delta indicators to portfolio rows
  • feat: add taxable-account tooltips and update cashflow defaults
  • feat: add sleeve value history charts with transaction markers and top holdings overlay
  • feat: add additional retirement savings field and update defaults
  • feat: refine sensitivity explorer metrics and fix fractional years bug
  • feat: add sensitivity explorer to cashflow simulator
  • feat: add years working and annual Roth contribution to cashflow simulator
  • feat: add annual income, external defaults, and friends DB script to cashflow simulator
  • feat: add per-year market return override to cash flow simulator
  • feat: add KEEP research agent skeleton — 1 chain, 3 tools, CLI harness
  • feat: add Purchase Price column to Portfolio detail table

Fixes

  • fix: sleeve charts not rendering on tab switch due to stale canvas refs
  • fix: make Roth contributions monthly outflows and fix yearsWorking=0 semantics
  • fix: transaction flag tooltip clipping and chart cache staleness
  • fix: use explicit rsync-path and IdentitiesOnly for Synology NAS publish

Other

  • readme updates
  • docs: add AppSumo investigation to roadmap
  • docs: add ideal customer profile (ICP) for KEEP
  • docs: add operations docs for release checklist and promote workflow
  • add release notes for v0.10.30
Files Changed
 .gitignore                                     |   4 +
 Claude.md                                      |   1 +
 README.md                                      |  48 +-
 agent/__init__.py                              |   0
 agent/chains/__init__.py                       |   0
 agent/chains/research_symbol.py                |  71 ++
 agent/config.example.json                      |   6 +
 agent/config.py                                |  44 ++
 agent/contracts/__init__.py                    |   0
 agent/contracts/block.py                       |  21 +
 agent/contracts/command.py                     |  15 +
 agent/contracts/tool.py                        |  16 +
 agent/main.py                                  | 213 ++++++
 agent/runner/__init__.py                       |   0
 agent/runner/chain_runner.py                   |  62 ++
 agent/runner/types.py                          |  41 +
 agent/sessions/__init__.py                     |   0
 agent/sessions/session_store.py                |  30 +
 agent/tools/__init__.py                        |   0
 agent/tools/portfolio.py                       |  61 ++
 agent/tools/symbol.py                          | 113 +++
 apps/cashflow/README.md                        | 111 +++
 apps/cashflow/defaults.js                      |  22 +
 apps/cashflow/index.html                       | 998 +++++++++++++++++++++++++
 apps/desktop/index.html                        |   2 +-
 apps/desktop/package-lock.json                 | 461 +++++++++++-
 apps/desktop/package.json                      |   4 +-
 apps/desktop/src-tauri/Cargo.toml              |   2 +-
 apps/desktop/src-tauri/src/commands/sleeves.rs | 149 ++++
 apps/desktop/src-tauri/src/lib.rs              |   3 +
 apps/desktop/src-tauri/tauri.conf.json         |   6 +-
 apps/desktop/src/App.jsx                       | 674 ++++++++++++++++-
 apps/desktop/src/SleeveSankey.jsx              | 816 ++++++++++++++++++++
 apps/desktop/src/app.css                       | 105 ++-
 bin/release                                    |   2 +
 core/src/export/portfolio.rs                   |  36 +-
 docs/branding-keep/icp.md                      | 128 ++++
 docs/keep-research-agent.md                    | 546 ++++++++++++++
 docs/keep-terminal-ui-reference.png            | Bin 0 -> 187970 bytes
 docs/operations/keep-release-checklist.md      |  41 +
 docs/operations/promote-keep-release.md        |  39 +
 docs/purchase-price-feature.md                 |  69 ++
 docs/tauri-evolution.md                        |   1 +
 pyproject.toml                                 |   6 +
 release-notes/20260302-v0.10.30.enriched.md    |  71 ++
 release-notes/20260302-v0.10.30.md             |  66 ++
 scripts/build_friends_db.py                    | 674 +++++++++++++++++
 uv.lock                                        | 168 +++++
 48 files changed, 5875 insertions(+), 71 deletions(-)
Artifacts
Platform Artifact Status
macOS KEEP-v0.10.31-macos-universal.zip pending
Linux KEEP-v0.10.31-linux-amd64.AppImage pending
Linux KEEP-v0.10.31-linux-amd64.deb pending
Windows KEEP-v0.10.31-windows-x64.msi pending
Raw Commits (source of truth)
  • f76d203 release: v0.10.31
  • 36a1563 feat: add start/end value labels, sleeve name tags, and gain/loss deltas to Sankey
  • cf8d86b feat: move Sankey to dedicated Flow tab with full-width layout and neobrutalist styling
  • 1a989c9 feat: add sleeve Sankey diagram with period attribution hover panels
  • d79b6f6 feat: add gain/loss column to sleeve rows in Structure tab
  • c6bc2c6 feat: add dollar change to snapshot delta indicators
  • 48fd63a feat: add snapshot delta indicators to portfolio rows
  • 6e3e4e4 feat: add taxable-account tooltips and update cashflow defaults
  • b6e6b84 readme updates
  • 9fcb117 fix: sleeve charts not rendering on tab switch due to stale canvas refs
  • 84c3f5c feat: add sleeve value history charts with transaction markers and top holdings overlay
  • fdf5b2f feat: add additional retirement savings field and update defaults
  • f38d1b3 feat: refine sensitivity explorer metrics and fix fractional years bug
  • fa810aa feat: add sensitivity explorer to cashflow simulator
  • bc1af51 fix: make Roth contributions monthly outflows and fix yearsWorking=0 semantics
  • 5d6c270 feat: add years working and annual Roth contribution to cashflow simulator
  • 9c64ffd feat: add annual income, external defaults, and friends DB script to cashflow simulator
  • f68fd25 feat: add per-year market return override to cash flow simulator
  • 62f1890 feat: add KEEP research agent skeleton — 1 chain, 3 tools, CLI harness
  • 93c0918 docs: add AppSumo investigation to roadmap
  • 64ea6e0 feat: add Purchase Price column to Portfolio detail table
  • baf8da3 docs: add ideal customer profile (ICP) for KEEP
  • 72c32d1 docs: add operations docs for release checklist and promote workflow
  • 2ca13d2 fix: transaction flag tooltip clipping and chart cache staleness
  • b4e1bf4 add release notes for v0.10.30
  • f2b87f3 fix: use explicit rsync-path and IdentitiesOnly for Synology NAS publish