Skip to content

Releases: we-promise/sure

v0.7.2-alpha.8

21 Jun 07:59
109526e

Choose a tag to compare

v0.7.2-alpha.8 Pre-release
Pre-release

Mobile Debug Builds

This release includes debug builds of the mobile applications. Download from the Assets area below.

  • Android APK: Debug build for testing on Android devices
  • iOS Build: Unsigned iOS build (requires code signing for installation)

Note: These are debug builds intended for testing purposes. For production use, please build from source with proper signing credentials.

What's Changed

  • fix(rules): make explicit re-apply override locked attributes by @augustocbx in #2273
  • Upgrade Ruby version to 3.4.9 by @jjmata in #2360
  • feat(mobile): add SureButton primitive and migrate login buttons by @JSONbored in #2358
  • feat(security): warn when ActiveRecord encryption is not configured by @andrewb-nz in #2362
  • feat(imports): add YNAB CSV import by @JSONbored in #2361
  • feat(mobile): bundle Geist + Geist Mono so the app renders Sure typography by @JSONbored in #2342
  • feat(mobile): normalize dashboard text weight to DS Medium (500) by @JSONbored in #2344
  • feat(mobile): add SureIcon (Lucide) primitive and migrate dashboard icons by @JSONbored in #2346
  • perf(api): avoid transfer lookups in transaction index by @JSONbored in #2127
  • fix(mobile): neutral Sure tokens for FAB/badge/avatar surfaces + themed logo by @JSONbored in #2366
  • feat(mobile): generate shadow scale + focus-ring/bg-inverse tokens by @JSONbored in #2349
  • fix: Transaction Pagination Skipping Entries by @jonathanchang31 in #2179
  • fix(accounts): persist subtype when creating an account by @vlnd0 in #2356
  • Add Mobile version check for update notifications by @felixmuinde in #2367
  • fix(cashflow): use Turbo.visit for donut chart deep-link navigation by @thewillwilson in #2166
  • Add transaction name to get_transactions MCP tool output by @oggysecond in #2026
  • fix(imports): normalize CSV upload encoding when validations are skipped by @augustocbx in #2299
  • Add cascade delete to rejected_transfers foreign keys by @Kelvinchen03 in #2211
  • fix(prices): resolve dashed crypto tickers (BTC-USD, TRX-USD) via BinancePublic by @vlnd0 in #2372
  • fix(ds): add focus ring to dashboard widget size control by @BeastOrange in #2364
  • feat(prices): add Moscow Exchange (MOEX ISS) securities + FX provider by @vlnd0 in #2394
  • perf(recurring): batch recurring transaction identification by @JSONbored in #2239
  • perf(dashboard): streamline investment activity totals by @JSONbored in #2257
  • perf(reports): avoid residual category lazy loads by @JSONbored in #2255
  • fix(trades): guard against nil security in create_trade by @sentry[bot] in #2066
  • feat(prices): add T-Invest (T-Bank) securities + brand-logo provider by @vlnd0 in #2408
  • fix(coinstats): stabilize bulk wallet ordering by @sure-admin in #2402
  • Fix API auth context inheriting web session impersonation by @BeastOrange in #2405
  • Refresh Pipelock integration for v2.8 receipts by @luckyPipewrench in #2406
  • feat(up): add Up Bank (AU) provider integration by @Jookly123 in #2391
  • feat(mobile): add SureCard primitive and migrate account cards by @JSONbored in #2370
  • feat(mobile): add SureListGroup/SureListRow primitives and migrate the More menu by @JSONbored in #2376
  • feat(mobile): add SureTextField primitive and migrate the proxy-headers editor by @JSONbored in #2378
  • fix(tinkoff): resolve the tradeable listing and price bonds via BondBy by @vlnd0 in #2413
  • feat(mobile): add SureChip primitive and migrate the currency filter by @JSONbored in #2380
  • feat(mobile): add SureSegmentedControl primitive and migrate the transaction type selector by @JSONbored in #2382
  • fix(settings): preserve scroll position in settings nav by @Holdner in #2373

New Contributors

Full Changelog: v0.7.2-alpha.7...v0.7.2-alpha.8

v0.7.2-alpha.7

15 Jun 20:09
94d2ee9

Choose a tag to compare

v0.7.2-alpha.7 Pre-release
Pre-release

Mobile Debug Builds

This release includes debug builds of the mobile applications. Download from the Assets area below.

  • Android APK: Debug build for testing on Android devices
  • iOS Build: Unsigned iOS build (requires code signing for installation)

Note: These are debug builds intended for testing purposes. For production use, please build from source with proper signing credentials.

What's Changed

  • fix(ds): shrink dialog close button to size sm by @gariasf in #2309
  • chore(i18n): remove dead transfers.form.* exchange-rate keys by @augustocbx in #2293
  • fix(sync): discover nightly provider items reflectively by @sure-admin in #2334
  • fix(ds): canonical separators and destructive tokens in usage/rules tables by @gariasf in #2332
  • fix(ds): migrate goals color picker back to DS::Disclosure (no_margin body option) by @gariasf in #2350
  • chore(i18n): complete zh-CN locale coverage by @BeastOrange in #2283
  • fix: preserve CoinStats balances when wallet sync data is missing by @sure-admin in #2132
  • feat(dashboard): masonry packing + per-widget size controls by @gariasf in #2328
  • fix(jobs): enqueue jobs after transaction commit to fix SyncJob deserialization race by @JSONbored in #2354

New Contributors

Full Changelog: v0.7.2-alpha.6...v0.7.2-alpha.7

v0.7.2-alpha.6

14 Jun 20:28
b0b0dc8

Choose a tag to compare

v0.7.2-alpha.6 Pre-release
Pre-release

Mobile Debug Builds

This release includes debug builds of the mobile applications. Download from the Assets area below.

  • Android APK: Debug build for testing on Android devices
  • iOS Build: Unsigned iOS build (requires code signing for installation)

Note: These are debug builds intended for testing purposes. For production use, please build from source with proper signing credentials.

What's Changed

  • feat(cashflow): deep-link category labels to filtered transactions by @thewillwilson in #2083
  • fix(preview): bind :3000 instantly and bound diagnostics posts by @JSONbored in #2286
  • Add support for dividend, deposit, withdrawal, and interest trade types to Trades API by @thebandit in #1761
  • fix(ds): route mercury/ibkr provider panels onto sibling tokens by @gariasf in #2290
  • refactor(settings): debugs page onto settings_section by @gariasf in #2289
  • fix(ds): goals — uniform New-goal → grid spacing by @gariasf in #2288
  • feat(mobile): standardize money typography and semantic amount color by @JSONbored in #2331
  • chore(deps): upgrade Rails 7.2 → 8.1 by @JSONbored in #2301
  • fix(ds): neutral text for goals status callout by @gariasf in #2312
  • fix(dashboard): apply two-column layout at xl breakpoint, not 2xl by @gariasf in #2310
  • fix(dashboard): align sankey zoom-out button with section header by @gariasf in #2313
  • fix(ds): normalize legacy tooltip spacing to one recipe by @gariasf in #2311
  • fix(settings): give the MCP copy button success feedback by @gariasf in #2314
  • fix(chat): clear assistant bubble on destroy so the chat doesn't hang on Thinking by @gariasf in #2315
  • chore(deps): bump yard from 0.9.37 to 0.9.42 by @dependabot[bot] in #2335
  • chore(deps): bump css_parser from 1.21.1 to 1.22.0 by @dependabot[bot] in #2336

New Contributors

Full Changelog: v0.7.2-alpha.5...v0.7.2-alpha.6

v0.7.2-alpha.5

11 Jun 19:15
749d54d

Choose a tag to compare

v0.7.2-alpha.5 Pre-release
Pre-release

Mobile Debug Builds

This release includes debug builds of the mobile applications. Download from the Assets area below.

  • Android APK: Debug build for testing on Android devices
  • iOS Build: Unsigned iOS build (requires code signing for installation)

Note: These are debug builds intended for testing purposes. For production use, please build from source with proper signing credentials.

What's Changed

  • fix(imports): import Actual rows with blank payee by @JSONbored in #2282
  • Fix prerelease version-bump job: add PR fallback for protected branches by @jjmata in #2224
  • perf(sync): scope transfer matching after account sync by @JSONbored in #2230
  • fix(ds): use DS::Disclosure for investment-performance expander by @gariasf in #2243
  • fix(ds): replace invalid bg-surface-default token with bg-surface by @gariasf in #2244
  • fix(ds): canonical destructive red → red-500 (token + button) by @gariasf in #2245
  • fix(ds): migrate SSO amber warning surfaces to DS::Alert / DS::Pill by @gariasf in #2246
  • fix(ds): migrate remaining amber notice boxes to DS::Alert(:warning) by @gariasf in #2247
  • fix(ds): convert_to_trade price warning — fix dead dark:, use warning token by @gariasf in #2249
  • fix(ds): route remaining literal yellow warning surfaces onto --color-warning by @gariasf in #2250
  • fix(ds): balance-sheet weight alignment + category pill padding by @gariasf in #2275
  • fix(ds): add-account menu — right-size close + clickable rows by @gariasf in #2276
  • fix(ds): dark-mode hover — alpha-black-25 → surface-hover on date-nav triggers by @gariasf in #2287
  • fix(ds): unify tab/chip controls on DS::SegmentedControl (#8) by @gariasf in #2284
  • refactor(settings): consistency pass — header-less settings_section + guides by @gariasf in #2279
  • fix(ds): sync-settings env notice → DS::Alert (was invisible: undefined warning-* classes) by @gariasf in #2278
  • fix(settings): preserve content scroll position per page across navigation by @gariasf in #2277
  • feat(ds): one canonical focus ring across primitives by @gariasf in #2140
  • fix: EODHD lookup for EU mutual funds with EUFUND exchange code by @Kelvinchen03 in #2212
  • feat(mobile): align theme foundation with Sure tokens by @JSONbored in #2237
  • feat(mcp): OAuth 2.1 auth for MCP — connect Claude.ai with your Sure login by @thewillwilson in #2234
  • fix(enable-banking): tolerate any 422 on PDNG fetch (#1805) by @Rene0422 in #1889
  • fix(sharing): scope import account selects to accessible_by (#1803) by @dripsmvcp in #2194
  • fix(mobile): regenerate stale Sure tokens on main by @sure-admin in #2296
  • Fix Plaid sync failure for loan subtypes missing from Loan::SUBTYPES by @BeltaKoda in #2298

New Contributors

Full Changelog: v0.7.2-alpha.4...v0.7.2-alpha.5

Sure v0.7.1-hotfix.1

11 Jun 11:53
2f50e7b

Choose a tag to compare

See v0.7.1 first!

Mobile Debug Builds

This release includes debug builds of the mobile applications. Download from the Assets area below.

  • Android APK: Debug build for testing on Android devices
  • iOS Build: Unsigned iOS build (requires code signing for installation)

Note: These are debug builds intended for testing purposes. For production use, please build from source with proper signing credentials.

What's Changed

Full Changelog: v0.7.1...v0.7.1-hotfix.1

Sure v0.7.1 - Bank Sync cleanup, Statement Vault and DS overhaul

31 May 11:24
6be4a0a

Choose a tag to compare

Another big release, folks (see the stats below if you don't believe me!)

The most visible change is probably the Bank Sync refresh. It’s cleaner, easier to follow, and just feels better than what we had before. Gone is the confusing "information only" screen, with separate Providers setup.

image

A second major addition is Statement Vault, which gives us a much better workflow for uploading, organizing, and verifying statement coverage.

image

The other thing that deserves a real mention is the design system overhaul. A lot of the product feels sharper in this release because a lot of UI work landed across shared primitives, component migrations, accessibility fixes, and consistency improvements throughout the app. This was a substantial part of the cycle.

There are also a lot of smaller but still meaningful improvements across dashboard exploration, banking reliability, linked account behavior, and general polish. For example, this kick-ass debug log for people that don't ever want to know what "Docker logs" are:

image

One useful way to frame the size of this release is the raw volume: v0.7.1 includes 206 merged PRs, which makes it larger than v0.7.0 by this count. Roughly a quarter of those PRs were design-system related or design-system-driven, so this wasn’t just a feature release — it was also a broad product-quality pass.

Recent release stats

Release — Month    Issues   PRs Closed
v0.6.5 — 2025-11       27   101 PRs (+1 hotfix / 7 PRs)
v0.6.6 — 2025-12       22    55 PRs (+1 hotfix / 2 PRs)
v0.6.7 — 2026-01       56   162 PRs
v0.6.8 — 2026-02       48   113 PRs
v0.6.9 — 2026-03       73    92 PRs
v0.7.0 — 2026-04       73   129 PRs (+3 hotfixes / 8 PRs)
v0.7.1 — 2026-05      105   206 PRs

Mobile Debug Builds

This release includes debug builds of the mobile applications. Download from the Assets area below.

  • Android APK: Debug build for testing on Android devices
  • iOS Build: Unsigned iOS build (requires code signing for installation)

Note: These are debug builds intended for testing purposes. For production use, please build from source with proper signing credentials.

What's Changed

  • fix: skip DemoFamilyRefreshJob in self-hosted mode by @wps260 in #1578
  • Move versioning from Rails initializer to .sure-version file by @jjmata in #1587
  • Fix SimpleFIN inverting Loan account balances by @GermanDZ in #1574
  • fix: run TestFlight upload on v* tags by @sure-admin in #1582
  • fix: currency being ignored for properties by @thiagodsti in #1556
  • fix: change postal_code column from integer to string by @thewillwilson in #1585
  • Improve error handling with user-friendly messages and classification by @jjmata in #1591
  • fix: Enable and persist notes and tags on split child transactions (#1535) by @xingxing21 in #1552
  • Added ability to bulk-edit transaction names for multiple selected transactions by @DataEnginr in #1553
  • Fix invite code being consumed on failed registration in invite-only mode by @francmart514 in #1576
  • Performance improvements in balance sync cache by @wps260 in #1581
  • fix(mobile): stop app icon source overwrite by @sure-admin in #1594
  • fix(imports): preserve account status from backups by @JSONbored in #1603
  • fix(budgets): stop auto-matched transfers leaking into category cards by @gariasf in #1588
  • fix(imports): preserve Sure opening balance history by @JSONbored in #1595
  • fix: use ProviderLoader for AuthConfig.sso_providers when DB providers enabled by @thewillwilson in #1614
  • refactor(design-system): single-source design tokens via DTCG JSON by @gariasf in #1604
  • feat(api): expose complete account export state by @JSONbored in #1597
  • fix(design-system): give cyan-900 a darker value than cyan-800 by @gariasf in #1619
  • feat(tokens): add $version field + document versioning policy by @gariasf in #1620
  • feat(design-system): live tokens reference page in Lookbook by @gariasf in #1618
  • feat(api): expose valuation history index by @JSONbored in #1596
  • feat(api): expose rule export endpoints by @JSONbored in #1602
  • feat(api): add recurring transaction endpoints by @JSONbored in #1600
  • fix(design-system): make inline <code> visible in prose dark mode by @gariasf in #1625
  • chore(design-system): replace dead Bootstrap classes with Sure tokens by @gariasf in #1621
  • feat(api): accept Sure NDJSON imports by @JSONbored in #1601
  • feat(api): expose import status details by @JSONbored in #1599
  • Optimize and Fix provider price fetches for sold securities and batch queries by @wps260 in #1580
  • refactor(i18n): standardize product name placeholder in import mappings by @sentry[bot] in #1631
  • fix(recurring): make account-scoping migration resilient to legacy duplicates by @sure-admin in #1623
  • ci: use include on matrix for runs-on by @Alxandr in #1649
  • feat(api): expose reset status polling by @JSONbored in #1598
  • fix: send first-time SnapTrade users to connect flow by @sure-admin in #1613
  • fix(mercury): support named multiple API connections by @JSONbored in #1627
  • feat(api): expose family exports by @JSONbored in #1632
  • fix(chat): eager pending AssistantMessage to fix Turbo subscribe race (#1657) by @tajchert in #1658
  • feat(auth): add WebAuthn MFA credentials by @JSONbored in #1628
  • feat(api): expose family settings by @JSONbored in #1645
  • feat(api): expose rule run history by @JSONbored in #1646
  • refactor(design-system): migrate fg-* utilities to text-* and remove namespace by @gariasf in #1626
  • feat(exports): preserve recurring transactions by @JSONbored in #1638
  • Add assurance vie to investment subtypes by @HugoleDino in #1665
  • feat(api): support idempotent valuation writes by @JSONbored in #1637
  • fix(design-system): replace undefined utility classes and broken /N modifiers by @gariasf in #1660
  • chore(design-system): swap raw gray classes for semantic tokens in settings/ by @gariasf in #1652
  • chore(design-system): swap raw gray classes for semantic tokens in holdings/ by @gariasf in #1654
  • chore(design-system): swap raw gray classes for semantic tokens across remaining views by @gariasf in #1655
  • feat(erb-lint): add DeprecatedClasses cop for raw gray utility classes by @gariasf in #1656
  • feat(exports): include holding snapshots by @JSONbored in #1643
  • fix(auth): surface exact OIDC issuer mismatches by @sure-admin in #1666
  • feat(investments): add India investment subtypes and exchange support by @ahnv in #1659
  • feat(api): expose securities and price history by @JSONbored in #1642
  • feat(api): expose import row diagnostics by @JSONbored in #1644
  • fix(auth): hash MFA backup codes by @JSONbored in #1629
  • Fix OpenAI Responses API stream error handling by @GermanDZ in #1669
  • Performance improvements in holding calculation pipeline by @wps260 in #1579
  • Fix SSO icon rendering for mixed-case provider icons by @sure-admin in #1674
  • feat(accounts): Highlight matching activity search text in entry names by @bugbug11111 in #1671
  • Revert "feat(accounts): Highlight matching activity search text in entry names" by @jjmata in #1682
  • feat(api): expose balance history by @JSONbored in https://github.com/we-promise/sure/pull/...
Read more

v0.7.0-hotfix.3

16 May 10:18
ae5e762

Choose a tag to compare

Mobile Debug Builds

This release includes debug builds of the mobile applications. Download from the Assets area below.

  • Android APK: Debug build for testing on Android devices
  • iOS Build: Unsigned iOS build (requires code signing for installation)

Note: These are debug builds intended for testing purposes. For production use, please build from source with proper signing credentials.

What's Changed

  • fix(i18n): align import mapping product placeholder on stable by @sure-admin in #1802

Full Changelog: v0.7.0-hotfix.2...v0.7.0-hotfix.3

Sure v0.7.0 - Bulk Categorization and Family Sharing Controls

30 Apr 18:29

Choose a tag to compare

The two major features that landed this month are a Categorization Wizard and the ability to control Family Sharing ... more on those below. But first, and once again, thanks for your continued interest and support: 25 new contributors just this month and 115k image pulls of stable since the last release (plus the thousands of you that stay on latest 🚀 )

Screenshot 2026-04-30 at 8 04 48 PM

Using Family Sharing via #1272 you can now restrict what different members of the Family (or group, doesn't have to be a family ... the onboarding and UI now allow that!) can see/not see/edit/etc.

Screenshot 2026-04-30 at 8 01 31 PM

The Quick Categorize Wizard in #1386 provides a keyboard-only (if desired, use the mouse if that's your thing!) way to quickly categorize and create rules for new transactions:

Screenshot 2026-04-30 at 7 52 33 PM

Plus the usual slew of stability fixes and quality-of-life improvements you can read about below.

We're heavily experimeting with an OpenClaw-based development harness that I've plugged to our Discord, if you are interested to join the fray! We also just started asking Claude Design to help us clean up the Flutter mobile builds which continue to be less polished than we'd like and remain just for testing (we have both Google Play and TestFlight builds if you swing by Discord and ask nicely!)

Enjoy! Keep the bug reports/but most importantly the PRs coming ...

Mobile Debug Builds

This release includes debug builds of the mobile applications. Download from the Assets area below.

  • Android APK: Debug build for testing on Android devices
  • iOS Build: Unsigned iOS build (requires code signing for installation)

Note: These are debug builds intended for testing purposes. For production use, please build from source with proper signing credentials.

What's Changed

  • Fix PWA: back/X buttons untappable in wizard layout (budget edit) by @lolimmlost in #1076
  • Fix: Yahoo Finance provider Cookie/Crumb Auth by @happytechca in #1082
  • refactor: Improve enable banking panel rendering context by @sentry[bot] in #1073
  • fix: maintain activity tab during pagination from holdings tab by @tedawf in #1096
  • feat(helm): add Pipelock ConfigMap, scanning config, and consolidate compose by @luckyPipewrench in #1064
  • Add external AI assistant with Pipelock security proxy by @luckyPipewrench in #1069
  • feat: Enable Skylight ActiveJob probe for background worker visibility by @happytechca in #1108
  • Add Pipelock operational templates, docs, and config hardening by @luckyPipewrench in #1102
  • Backfill category for pre-#924 investment contribution transfers by @luckyPipewrench in #1111
  • Add safe-area padding for PWA on import page by @alessiocappa in #1113
  • Add budget rollover: copy from previous month by @lolimmlost in #1100
  • fix: Parse transfer date parameter by @sentry[bot] in #1110
  • Fix uncategorized budget category showing incorrect spending by @lolimmlost in #1117
  • Complete Spanish (es) translations across all locale files by @andreugordillovazquez in #1112
  • Replace whole-file pipelock exclude with inline suppression by @luckyPipewrench in #1116
  • Expand AI docs: external assistant, MCP, architecture, troubleshooting by @luckyPipewrench in #1115
  • Add dynamic assistant icon: OpenClaw lobster SVG for external assistant by @jjmata in #1122
  • Remove fixed height on budget chart by @alessiocappa in #1124
  • feat: Enhance holding detail drawer with live price sync and enriched overview by @happytechca in #1086
  • Fix holdings table on mobile by @alessiocappa in #1114
  • New select component by @alessiocappa in #1071
  • Fix [1018]: Add Date field when entering Account Balance by @michelroegl-brunner in #1068
  • Fix nil-key collision in budget category hash lookups by @lolimmlost in #1136
  • Group users by family in /admin/users by @jjmata in #1139
  • Feat: add missing German locals by @michelroegl-brunner in #1065
  • Enhance logging in search_family_files.rb for vector store debugging by @jjmata in #1033
  • fix(helm): use expected health endpoint by @imnotjames in #1142
  • Guard error.message with rescue in LLM failed-usage recording by @Copilot in #1144
  • Enable Google SSO account creation in Flutter app by @jjmata in #1164
  • Check for pending invitations before creating new Family during SSO log in/sign up by @jjmata in #1171
  • Enforce one pending invitation per email across all families by @jjmata in #1173
  • Add default family selection for invite-only onboarding mode by @jjmata in #1174
  • Make categories global by @sokie in #1160
  • Fix: Remove blank amount from transaction entry parameters by @sentry[bot] in #1178
  • Move account logo determination in dedicated method by @alessiocappa in #1190
  • Add "Transaction account" as rule condition filter by @alessiocappa in #1186
  • Require admin role for API family reset endpoint by @jjmata in #1189
  • Fix Plaid link script loading and first-sync account linking by @chasestech in #1165
  • Administer invitations in /admin/users by @jjmata in #1185
  • Add post-trial inactive Family cleanup with data archival by @jjmata in #1199
  • Feat: Add QIF (Quicken Interchange Format) import functionality by @happytechca in #1074
  • feat: add pending transaction manual merging tool by @AdamWHY2K in #1088
  • feat(transaction): add support for file attachments using Active Storage by @itsLeonB in #713
  • Document admin-only reset auth in OpenAPI docs by @jjmata in #1198
  • feat: Add duplicate button when a transaction is selected by @RenzoMXD in #1123
  • Feat: Add default user account and consolidate account actions in menu by @happytechca in #1130
  • feat(balance): Incremental ForwardCalculator — only recalculate from changed date forward by @happytechca in #1151
  • Documentation for review AI Assistant features, MCP and API additions by @onel in #1168
  • Remove unused DeveloperMessage model by @jjmata in #1207
  • EnableBanking: Use transaction_date when other options fail by @jabbink in #1215
  • Respect manually selected account type in SimpleFIN liability logic by @milorw in #1214
  • Add scheduled DemoFamilyRefreshJob to rebuild demo data daily by @jjmata in #1217
  • feat: scope Mercury account uniqueness to mercury_item by @claytonlin1110 in #1032
  • chore(deps): bump json from 2.18.1 to 2.19.2 by @dependabot[bot] in #1225
  • chore(deps): bump bcrypt from 3.1.20 to 3.1.22 by @dependabot[bot] in #1227
  • FIX schema drift and snaptrade and mercury issues by @sokie in #1232
  • feat(vector-store): Implement pgvector adapter for self-hosted RAG by @eureka0928 in #1211
  • Initial split transaction support by @sokie in #1230
  • Fix NameError: rename migration file to match class name by @jjmata in #1234
  • Restore legacy Plaid migration constant alias by @jjmata in #1235
  • Fix pgvector migration to only run when explicitly configured by @jjmata in #1239
  • Fix rule condition merchant dropdown to show all merchants by @eureka0928 in #1240
  • Fix select is hidden inside dialog by @yxuko in https://github.com/we-promise/sure/...
Read more

Sure v0.6.9 - Splits, Privacy Mode and OpenClaw/agents support

31 Mar 16:22
7756f5d

Choose a tag to compare

Too much to cover/do justice to it all, so once again we'll just highligh a few things.

Split Transactions - Split a single transaction into multiple parts to accurately categorize expenses. For example, a Whole Foods purchase can be split between "Groceries" and "Household" with custom amounts for each. This long-requested feature is now available in the transaction detail view.

Privacy Mode - Blur toggle to hide sensitive financial data across the entire app. Perfect for using Sure in public or screen-sharing. The toggle persists in localStorage across sessions and pages.

External AI Assistant (OpenClaw + Pipelock security) - Self-hosted instances can now delegate AI chat to an external AI agent via an OpenAI-compatible streaming endpoint. Pipelock provides security scanning for AI responses, keeping your financial data safer if you choose to set it up.

image

Mobile Debug Builds

This release includes debug builds of the mobile applications. Download from the Assets area below.

  • Android APK: Debug build for testing on Android devices
  • iOS Build: Unsigned iOS build (requires code signing for installation)

Note: These are debug builds intended for testing purposes. For production use, please build from source with proper signing credentials.

What's Changed

  • Fix PWA: back/X buttons untappable in wizard layout (budget edit) by @lolimmlost in #1076
  • Fix: Yahoo Finance provider Cookie/Crumb Auth by @happytechca in #1082
  • refactor: Improve enable banking panel rendering context by @sentry[bot] in #1073
  • fix: maintain activity tab during pagination from holdings tab by @tedawf in #1096
  • feat(helm): add Pipelock ConfigMap, scanning config, and consolidate compose by @luckyPipewrench in #1064
  • Add external AI assistant with Pipelock security proxy by @luckyPipewrench in #1069
  • feat: Enable Skylight ActiveJob probe for background worker visibility by @happytechca in #1108
  • Add Pipelock operational templates, docs, and config hardening by @luckyPipewrench in #1102
  • Backfill category for pre-#924 investment contribution transfers by @luckyPipewrench in #1111
  • Add safe-area padding for PWA on import page by @alessiocappa in #1113
  • Add budget rollover: copy from previous month by @lolimmlost in #1100
  • fix: Parse transfer date parameter by @sentry[bot] in #1110
  • Fix uncategorized budget category showing incorrect spending by @lolimmlost in #1117
  • Complete Spanish (es) translations across all locale files by @andreugordillovazquez in #1112
  • Replace whole-file pipelock exclude with inline suppression by @luckyPipewrench in #1116
  • Expand AI docs: external assistant, MCP, architecture, troubleshooting by @luckyPipewrench in #1115
  • Add dynamic assistant icon: OpenClaw lobster SVG for external assistant by @jjmata in #1122
  • Remove fixed height on budget chart by @alessiocappa in #1124
  • feat: Enhance holding detail drawer with live price sync and enriched overview by @happytechca in #1086
  • Fix holdings table on mobile by @alessiocappa in #1114
  • New select component by @alessiocappa in #1071
  • Fix [1018]: Add Date field when entering Account Balance by @michelroegl-brunner in #1068
  • Fix nil-key collision in budget category hash lookups by @lolimmlost in #1136
  • Group users by family in /admin/users by @jjmata in #1139
  • Feat: add missing German locals by @michelroegl-brunner in #1065
  • Enhance logging in search_family_files.rb for vector store debugging by @jjmata in #1033
  • fix(helm): use expected health endpoint by @imnotjames in #1142
  • Guard error.message with rescue in LLM failed-usage recording by @Copilot in #1144
  • Enable Google SSO account creation in Flutter app by @jjmata in #1164
  • Check for pending invitations before creating new Family during SSO log in/sign up by @jjmata in #1171
  • Enforce one pending invitation per email across all families by @jjmata in #1173
  • Add default family selection for invite-only onboarding mode by @jjmata in #1174
  • Make categories global by @sokie in #1160
  • Fix: Remove blank amount from transaction entry parameters by @sentry[bot] in #1178
  • Move account logo determination in dedicated method by @alessiocappa in #1190
  • Add "Transaction account" as rule condition filter by @alessiocappa in #1186
  • Require admin role for API family reset endpoint by @jjmata in #1189
  • Fix Plaid link script loading and first-sync account linking by @chasestech in #1165
  • Administer invitations in /admin/users by @jjmata in #1185
  • Add post-trial inactive Family cleanup with data archival by @jjmata in #1199
  • Feat: Add QIF (Quicken Interchange Format) import functionality by @happytechca in #1074
  • feat: add pending transaction manual merging tool by @AdamWHY2K in #1088
  • feat(transaction): add support for file attachments using Active Storage by @itsLeonB in #713
  • Document admin-only reset auth in OpenAPI docs by @jjmata in #1198
  • feat: Add duplicate button when a transaction is selected by @RenzoMXD in #1123
  • Feat: Add default user account and consolidate account actions in menu by @happytechca in #1130
  • feat(balance): Incremental ForwardCalculator — only recalculate from changed date forward by @happytechca in #1151
  • Documentation for review AI Assistant features, MCP and API additions by @onel in #1168
  • Remove unused DeveloperMessage model by @jjmata in #1207
  • EnableBanking: Use transaction_date when other options fail by @jabbink in #1215
  • Respect manually selected account type in SimpleFIN liability logic by @milorw in #1214
  • Add scheduled DemoFamilyRefreshJob to rebuild demo data daily by @jjmata in #1217
  • feat: scope Mercury account uniqueness to mercury_item by @claytonlin1110 in #1032
  • chore(deps): bump json from 2.18.1 to 2.19.2 by @dependabot[bot] in #1225
  • chore(deps): bump bcrypt from 3.1.20 to 3.1.22 by @dependabot[bot] in #1227
  • FIX schema drift and snaptrade and mercury issues by @sokie in #1232
  • feat(vector-store): Implement pgvector adapter for self-hosted RAG by @eureka928 in #1211
  • Initial split transaction support by @sokie in #1230
  • Fix NameError: rename migration file to match class name by @jjmata in #1234
  • Restore legacy Plaid migration constant alias by @jjmata in #1235
  • Fix pgvector migration to only run when explicitly configured by @jjmata in #1239
  • Fix rule condition merchant dropdown to show all merchants by @eureka928 in #1240
  • Fix select is hidden inside dialog by @yxuko in #1196
  • Bump pipelock image from 0.3.2 to 1.5.0 by @luckyPipewrench in #1238
  • Add privacy mode to blur financial data across the app by @ChakibMoMi in #1055
  • Refactor report and dashboard table layouts to semantic HTML by @eureka928 in #1222
  • Split UI by @sokie in #1245
  • Add GET /api/v1/summary endpoint and display net worth on mobile home by @dwvwdv in #1145
  • Move debug logs and logout actions to settings screen by @dwvwdv in #1146
  • Add "logo" variant in account dropdown on transfer form by @alessiocappa in #1241
  • Fix home page double AppBar inconsist...
Read more

Sure v0.6.8 - Native mobile (alpha iOS + Android) + AI infra: MCP, RAG, pluggable Assistant

28 Feb 12:55
91b7905

Choose a tag to compare

Mobile Debug Builds

AI Platform & Extensibility. Since v0.6.7, Sure has added AI-extensible options. A new MCP (Model Context Protocol) server endpoint brings JSON-RPC 2.0 compliance, allowing external AI assistants to securely query balance sheets, income statements, transactions, holdings, and more through seven exposed function tools — all authenticated via bearer token. Under the hood, the AI assistant architecture was refactored into a pluggable module with a registry system, enabling both builtin and external assistant implementations to be swapped per-family. Langfuse integration was improved for LLM evaluation and experiment tracking, giving operators visibility into AI response quality, token costs, and prompt performance. A new vector store and document management layer introduces RAG (retrieval-augmented generation) capabilities, letting the assistant search uploaded family files for richer, context-aware answers.

Mobile Alpha (needs UI polish!) Flutter mobile client now ships for both Android and iOS, complete with OAuth 2.0 authentication, multi-factor auth, offline transaction support, and an integrated AI chat interface — with automated builds publishing APKs and TestFlight builds through new CI/CD workflows. On the web, the tag management experience was redesigned with an interactive color picker and live-preview badges, and tag badges now appear directly in the transaction filter window for faster visual scanning. Merchant logos surface throughout the filter selection UI, pulling branded imagery from enrichment providers with graceful initial-letter fallbacks. The Enable Banking integration received UX improvements including clearer callback URL instructions and better sync feedback, while PWA icons were refreshed to reflect the current Sure branding.

Infrastructure Hardening & Stability. The deployment stack gained Redis Sentinel high-availability support for Sidekiq, with automatic detection via new Helm template helpers, robust endpoint validation, and production-tuned timeouts — all backward-compatible with existing single-node Redis setups. Helm chart and Rails app versions are now automatically synchronized through CI, and a Pipelock agent security scan was added to the pull request pipeline for proactive vulnerability detection. On the data integrity front, critical fixes landed for foreign currency accounts that were using incorrect exchange rates in balance sheet totals, future-dated pending transactions that incorrectly appeared in syncs, and an investment account subtype that failed to persist on creation. Sync performance improved by skipping redundant operations when account balances are unchanged, and a composite database index on accounts accelerates the most common dashboard queries.

Two-column layout also dropped:
Screenshot 2026-02-28 at 7 50 24 AM

This release includes debug builds of the mobile applications. Download from the Assets area below.

  • Android APK: Debug build for testing on Android devices
  • iOS Build: Unsigned iOS build (requires code signing for installation)

Note: These are debug builds intended for testing purposes. For production use, please build from source with proper signing credentials.

What's Changed

  • Bump httparty from 0.23.1 to 0.24.0 by @dependabot[bot] in #524
  • Harden SimpleFin sync: retries, safer imports, manual relinking, and data-quality reconciliation by @luckyPipewrench in #544
  • DS::Menu: Fix page jump when opened by @DeathCamel58 in #520
  • Fix: Simplefin account re-link duplication by @luckyPipewrench in #554
  • Add (beta) CoinStats Crypto Wallet Integration with Balance and Transaction Syncing by @EthanC in #512
  • Fix missing SimpleFIN investment account transactions by @luckyPipewrench in #562
  • Investment prices fixes by @sokie in #559
  • Update button styles in family export form by @hendriksen-mark in #549
  • Scope Plaid Link script to Plaid flows by @jjmata in #511
  • Chained Authentication Vulnerability Fix by @luckyPipewrench in #569
  • Fix disabled rules executing during automatic sync by @Copilot in #552
  • Fix variable injection vulnerability in helm-release workflow by @luojiyin1987 in #541
  • Added troubleshooting information for CSV import. by @zenaufa in #558
  • FIX migration files ordering by @sokie in #577
  • Mobile native client via Flutter by @dwvwdv in #426
  • Fix false positive inactive hints for SimpleFin accounts during chunked imports by @luckyPipewrench in #573
  • Upgrade lucide-rails from 0.2.0 to 0.7.3 by @JulienOrain in #570
  • Implement Run all rules by @sokie in #582
  • Add stale SimpleFin account detection and improve unlink cleanup by @luckyPipewrench in #574
  • Fix linked account balance currency mismatch by @samuelcseto in #566
  • Revert "FIX migration files ordering" by @jjmata in #583
  • FIX providers invalid currency handling by @sokie in #589
  • Add investment tracking to expenses by @sokie in #381
  • Implement holdings for lunch flow by @sokie in #590
  • Fix provider merchant lookup to handle case variations in names by @samuelcseto in #587
  • Add global sync summary component for all providers by @luckyPipewrench in #588
  • Merchants improvements by @sokie in #594
  • Support uncategorized investments by @sokie in #593
  • Workflow chores: publish Flutter builds & bump alpha versions by @jjmata in #599
  • Provider investment fixes by @sokie in #600
  • Feat: /import endpoint & drag-n-drop imports by @adamescj in #501
  • Add overpayment detection for SimpleFIN liabilities (default ON) with heuristic-based classification and robust fallbacks by @luckyPipewrench in #412
  • Remove invalid logo.synthfinance.com URLs from merchants table by @Copilot in #553
  • Add pending transaction handling and duplicate reconciliation logic by @luckyPipewrench in #602
  • feat(zh-TW): add Traditional Chinese localization support by @Rukeith in #503
  • Add Redis Sentinel support for Sidekiq high availability by @Copilot in #457
  • Fix struct compatibility error in IncomeStatement::Totals by @jjmata in #603
  • CSV drag&drop styling fixes by @sokie in #604
  • Mobile offline features by @dwvwdv in #580
  • Generic LLMs improvements by @sokie in #605
  • Revert "Add print stylesheet for reports page" by @jjmata in #609
  • Mobile llm features by @dwvwdv in #610
  • Mobile more page features by @dwvwdv in #612
  • FIX reports page AI chat by @sokie in #614
  • feat: Include notes in transaction search by @alessiocappa in #615
  • Fix cost basis handling for holdings without trade history by @luckyPipewrench in #619
  • Implement Requested Fixes for CoinStats Integration by @EthanC in #621
  • Fix CSV import for non-UTF-8 encodings (Windows-1250, ISO-8859-2, etc.) by @Copilot in #617
  • Add cost basis source tracking with manual override and lock protection by @luckyPipewrench in #623
  • Reports print functionality by @sokie in #622
  • feat: Add automatic sync settings by @alessiocappa in #618
  • Multi-provider SSO with admin UI and SAML support by @luckyPipewrench in #538
  • Updated documentation for release v0.6.7-alpha.1 by @onel in #563
  • Fix: Transaction Sync Issues & Enhanced Debugging by @dwvwdv in #632
  • Fix SimpleFIN dormant credit cards showing credit limit as debt by @luckyPipewrench in #630
  • Add support for displaying and managing legacy SSO providers by @luckyPipewrench in #628
  • Fix SimpleFIN reconnection creating duplicates and status not auto-recovering by @luckyPipewrench in #631
  • feat: Add Merchants and Tags API v1 Endpoints by @jospaquim in ...
Read more