KEEP
Release v0.10.28

February 24, 2026 Enriched

v0.10.28

Date: 2026-02-24
Changes: v0.10.27…v0.10.28

Summary

This release introduces sleeves, a new intent layer for capital allocation, along with persistent categories that can be created, renamed, and deleted. An onboarding state machine provides a first-run experience, and default sleeves and categories are seeded on first import. Backup handling has been reworked to use SQLite-safe VACUUM INTO with a split quick/export UX. The release also includes typography and styling improvements, several bug fixes for demo data source handling and single-snapshot performance rendering, and a move of macOS builds to local with signing and notarization support.

Notable Changes

  • Sleeves and categories: Two new domain concepts added end-to-end — persistent categories as an ontology layer and sleeves as an intent-based capital allocation mechanism, with multi-select drag-and-drop for assigning symbols.
  • Onboarding state machine: New first-run experience with state regression protection on CSV re-import.
  • SQLite-safe backups: Backup command rewritten to use VACUUM INTO, replacing the previous approach, with separate quick-backup and export flows.
  • macOS signing and notarization: CI updated to move macOS builds to local runners with code signing and notarization support.

Features

  • feat: Inline sleeve notes with truncation, expand, and edit modal
  • feat: SQLite-safe backup with VACUUM INTO, split quick/export UX
  • feat: Seed default sleeves & categories on first import
  • feat: Multi-select drag-and-drop for symbols + tagline update
  • feat: Add onboarding state machine & first-run experience
  • feat: Add persistent categories — create, rename, delete ontology nodes
  • feat: Add sleeves — intent layer for capital allocation

Fixes

  • fix: Prevent onboarding state regression on CSV re-import
  • fix: Performance tab renders correctly with single snapshot
  • fix: Sleeves/categories/cashlike respect Demo data source

Other

  • remove unused branding images that were unzipped
  • style: Remove all decorative emoji, strengthen typography hierarchy
  • pland and feature documentation
  • docs: Add useful signing/notarization commands reference
  • ci: Move macOS builds to local, add signing + notarization support
Files Changed
 .github/workflows/release.yml                      |  107 +-
 apps/desktop/package-lock.json                     |   10 +-
 apps/desktop/package.json                          |    2 +-
 apps/desktop/src-tauri/Cargo.toml                  |    3 +-
 apps/desktop/src-tauri/Entitlements.plist          |   14 +
 apps/desktop/src-tauri/resources/demo.db           |  Bin 200704 -> 241664 bytes
 apps/desktop/src-tauri/src/commands/backup.rs      |   54 +-
 apps/desktop/src-tauri/src/commands/categories.rs  |  217 ++-
 apps/desktop/src-tauri/src/commands/csv.rs         |    7 +-
 apps/desktop/src-tauri/src/commands/licensing.rs   |   16 +-
 apps/desktop/src-tauri/src/commands/mod.rs         |    2 +
 apps/desktop/src-tauri/src/commands/onboarding.rs  |  269 +++
 apps/desktop/src-tauri/src/commands/sleeves.rs     |  195 +++
 apps/desktop/src-tauri/src/db/app_state.rs         |   32 +
 apps/desktop/src-tauri/src/db/migrations.rs        |  118 ++
 apps/desktop/src-tauri/src/db/mod.rs               |    1 +
 apps/desktop/src-tauri/src/lib.rs                  |   27 +-
 apps/desktop/src-tauri/tauri.conf.json             |    8 +-
 apps/desktop/src/App.jsx                           | 1769 ++++++++++++++++----
 apps/desktop/src/UnplacedSymbolsPanel.jsx          |   67 +
 apps/desktop/src/app.css                           |  293 +++-
 bin/release                                        |   46 +-
 bin/release-macos                                  |  169 ++
 core/src/db/schema.rs                              |  128 +-
 core/src/export/mod.rs                             |    1 +
 core/src/export/portfolio.rs                       |    2 +-
 core/src/export/sleeves.rs                         |   77 +
 ..._vector_illustration_displays_four_castle 2.png |  Bin 1067301 -> 0 bytes
 ...al_vector_illustration_displays_four_castle.png |  Bin 1067301 -> 0 bytes
 docs/building-macos-universal.md                   |  155 ++
 docs/macos-code-signing-dmg.md                     |  178 ++
 docs/plans/keep-companion-iOS-satellite.md         |  448 +++++
 docs/plans/sleeve-impl-plan-feb22-2026.md          |  347 ++++
 docs/product-features/sleeves-feature-impl.md      | 1348 +++++++++++++++
 34 files changed, 5646 insertions(+), 464 deletions(-)
Artifacts
Platform Artifact Status
macOS KEEP-v0.10.28-macos-universal.zip pending
Linux KEEP-v0.10.28-linux-amd64.AppImage pending
Linux KEEP-v0.10.28-linux-amd64.deb pending
Windows KEEP-v0.10.28-windows-x64.msi pending
Raw Commits (source of truth)
  • 76e83a4 release: v0.10.28
  • fdfa04e remove unused branding images that were unzipped
  • 5039e07 feat: Inline sleeve notes with truncation, expand, and edit modal
  • 5d98105 feat: SQLite-safe backup with VACUUM INTO, split quick/export UX
  • 3eec6ea fix: Prevent onboarding state regression on CSV re-import
  • b11a713 style: Remove all decorative emoji, strengthen typography hierarchy
  • 6e5590f fix: Performance tab renders correctly with single snapshot
  • a7bec20 feat: Seed default sleeves & categories on first import
  • cc0ace7 feat: Multi-select drag-and-drop for symbols + tagline update
  • 28a6dc1 feat: Add onboarding state machine & first-run experience
  • 84bbad2 fix: Sleeves/categories/cashlike respect Demo data source
  • f70fdf0 pland and feature documentation
  • 002cf24 feat: Add persistent categories — create, rename, delete ontology nodes
  • be60aa4 feat: Add sleeves — intent layer for capital allocation
  • b9af13b docs: Add useful signing/notarization commands reference
  • 6807cc0 ci: Move macOS builds to local, add signing + notarization support