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.
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/usersby @jjmata in #1139 - Feat: add missing German locals by @michelroegl-brunner in #1065
- Enhance logging in
search_family_files.rbfor 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/usersby @jjmata in #1185 - Add post-trial inactive
Familycleanup 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
DeveloperMessagemodel by @jjmata in #1207 - EnableBanking: Use
transaction_datewhen other options fail by @jabbink in #1215 - Respect manually selected account type in SimpleFIN liability logic by @milorw in #1214
- Add scheduled
DemoFamilyRefreshJobto 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
pgvectormigration 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 inconsistency with settings/more pages by @dwvwdv in #1250
- Provider merchants enhancement by @sokie in #1254
- Fix decimal separator handling in money input fields by @jjmata in #1176
- fix: Resolve infinite sync loop on SnapTrade setup accounts page by @falcononrails in #1256
- Full
.ndjsonimport / reorganize UI with Financial Tools / Raw Data tabs by @jjmata in #1208 - Adapt holdings to number inputs by @sokie in #1258
- Add rswag API docs routes for development mode by @jjmata in #1259
- Fix SimpleFIN holdings confusing market value with cost basis (#1182) by @jjmata in #1261
- chore(deps): bump activestorage from 7.2.2.2 to 7.2.3.1 by @dependabot[bot] in #1263
- Updated list of Canadian registered accounts by @CYBRXT in #1265
- chore(helm): bump pipelock to v2.0.0 with trusted domains and redirect profiles by @luckyPipewrench in #1266
- Fix missing privacy blur on split transaction amounts in drawer by @Copilot in #1275
- Fix dashboard mobile: require press-and-hold to reorder sections by @lolimmlost in #1210
- Lock connection_pool gem by @sokie in #1284
- Add appearance setting for 2 column layout by @sokie in #1285
- Add Kosovo to country list by @vegimcarkaxhija in #1066
New Contributors
- @andreugordillovazquez made their first contribution in #1112
- @imnotjames made their first contribution in #1142
- @chasestech made their first contribution in #1165
- @itsLeonB made their first contribution in #713
- @RenzoMXD made their first contribution in #1123
- @jabbink made their first contribution in #1215
- @milorw made their first contribution in #1214
- @ChakibMoMi made their first contribution in #1055
- @falcononrails made their first contribution in #1256
- @CYBRXT made their first contribution in #1265
- @vegimcarkaxhija made their first contribution in #1066
Full Changelog: v0.6.8...v0.6.9