This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Affected surfaces
Summary
AI summaryBroad release touches mobile, design-system, ds, and fix.
Full changelog
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 https://github.com/we-promise/sure/pull/1076
- Fix: Yahoo Finance provider Cookie/Crumb Auth by @happytechca in https://github.com/we-promise/sure/pull/1082
- refactor: Improve enable banking panel rendering context by @sentry[bot] in https://github.com/we-promise/sure/pull/1073
- fix: maintain activity tab during pagination from holdings tab by @tedawf in https://github.com/we-promise/sure/pull/1096
- feat(helm): add Pipelock ConfigMap, scanning config, and consolidate compose by @luckyPipewrench in https://github.com/we-promise/sure/pull/1064
- Add external AI assistant with Pipelock security proxy by @luckyPipewrench in https://github.com/we-promise/sure/pull/1069
- feat: Enable Skylight ActiveJob probe for background worker visibility by @happytechca in https://github.com/we-promise/sure/pull/1108
- Add Pipelock operational templates, docs, and config hardening by @luckyPipewrench in https://github.com/we-promise/sure/pull/1102
- Backfill category for pre-#924 investment contribution transfers by @luckyPipewrench in https://github.com/we-promise/sure/pull/1111
- Add safe-area padding for PWA on import page by @alessiocappa in https://github.com/we-promise/sure/pull/1113
- Add budget rollover: copy from previous month by @lolimmlost in https://github.com/we-promise/sure/pull/1100
- fix: Parse transfer date parameter by @sentry[bot] in https://github.com/we-promise/sure/pull/1110
- Fix uncategorized budget category showing incorrect spending by @lolimmlost in https://github.com/we-promise/sure/pull/1117
- Complete Spanish (es) translations across all locale files by @andreugordillovazquez in https://github.com/we-promise/sure/pull/1112
- Replace whole-file pipelock exclude with inline suppression by @luckyPipewrench in https://github.com/we-promise/sure/pull/1116
- Expand AI docs: external assistant, MCP, architecture, troubleshooting by @luckyPipewrench in https://github.com/we-promise/sure/pull/1115
- Add dynamic assistant icon: OpenClaw lobster SVG for external assistant by @jjmata in https://github.com/we-promise/sure/pull/1122
- Remove fixed height on budget chart by @alessiocappa in https://github.com/we-promise/sure/pull/1124
- feat: Enhance holding detail drawer with live price sync and enriched overview by @happytechca in https://github.com/we-promise/sure/pull/1086
- Fix holdings table on mobile by @alessiocappa in https://github.com/we-promise/sure/pull/1114
- New select component by @alessiocappa in https://github.com/we-promise/sure/pull/1071
- Fix [1018]: Add Date field when entering Account Balance by @michelroegl-brunner in https://github.com/we-promise/sure/pull/1068
- Fix nil-key collision in budget category hash lookups by @lolimmlost in https://github.com/we-promise/sure/pull/1136
- Group users by family in
/admin/usersby @jjmata in https://github.com/we-promise/sure/pull/1139 - Feat: add missing German locals by @michelroegl-brunner in https://github.com/we-promise/sure/pull/1065
- Enhance logging in
search_family_files.rbfor vector store debugging by @jjmata in https://github.com/we-promise/sure/pull/1033 - fix(helm): use expected health endpoint by @imnotjames in https://github.com/we-promise/sure/pull/1142
- Guard error.message with rescue in LLM failed-usage recording by @jjmata with @Copilot in https://github.com/we-promise/sure/pull/1144
- Enable Google SSO account creation in Flutter app by @jjmata in https://github.com/we-promise/sure/pull/1164
- Check for pending invitations before creating new Family during SSO log in/sign up by @jjmata in https://github.com/we-promise/sure/pull/1171
- Enforce one pending invitation per email across all families by @jjmata in https://github.com/we-promise/sure/pull/1173
- Add default family selection for invite-only onboarding mode by @jjmata in https://github.com/we-promise/sure/pull/1174
- Make categories global by @sokie in https://github.com/we-promise/sure/pull/1160
- Fix: Remove blank amount from transaction entry parameters by @sentry[bot] in https://github.com/we-promise/sure/pull/1178
- Move account logo determination in dedicated method by @alessiocappa in https://github.com/we-promise/sure/pull/1190
- Add "Transaction account" as rule condition filter by @alessiocappa in https://github.com/we-promise/sure/pull/1186
- Require admin role for API family reset endpoint by @jjmata in https://github.com/we-promise/sure/pull/1189
- Fix Plaid link script loading and first-sync account linking by @chasestech in https://github.com/we-promise/sure/pull/1165
- Administer invitations in
/admin/usersby @jjmata in https://github.com/we-promise/sure/pull/1185 - Add post-trial inactive
Familycleanup with data archival by @jjmata in https://github.com/we-promise/sure/pull/1199 - Feat: Add QIF (Quicken Interchange Format) import functionality by @happytechca in https://github.com/we-promise/sure/pull/1074
- feat: add pending transaction manual merging tool by @AdamWHY2K in https://github.com/we-promise/sure/pull/1088
- feat(transaction): add support for file attachments using Active Storage by @itsLeonB in https://github.com/we-promise/sure/pull/713
- Document admin-only reset auth in OpenAPI docs by @jjmata in https://github.com/we-promise/sure/pull/1198
- feat: Add duplicate button when a transaction is selected by @RenzoMXD in https://github.com/we-promise/sure/pull/1123
- Feat: Add default user account and consolidate account actions in menu by @happytechca in https://github.com/we-promise/sure/pull/1130
- feat(balance): Incremental ForwardCalculator — only recalculate from changed date forward by @happytechca in https://github.com/we-promise/sure/pull/1151
- Documentation for review AI Assistant features, MCP and API additions by @onel in https://github.com/we-promise/sure/pull/1168
- Remove unused
DeveloperMessagemodel by @jjmata in https://github.com/we-promise/sure/pull/1207 - EnableBanking: Use
transaction_datewhen other options fail by @jabbink in https://github.com/we-promise/sure/pull/1215 - Respect manually selected account type in SimpleFIN liability logic by @milorw in https://github.com/we-promise/sure/pull/1214
- Add scheduled
DemoFamilyRefreshJobto rebuild demo data daily by @jjmata in https://github.com/we-promise/sure/pull/1217 - feat: scope Mercury account uniqueness to mercury_item by @claytonlin1110 in https://github.com/we-promise/sure/pull/1032
- chore(deps): bump json from 2.18.1 to 2.19.2 by @dependabot[bot] in https://github.com/we-promise/sure/pull/1225
- chore(deps): bump bcrypt from 3.1.20 to 3.1.22 by @dependabot[bot] in https://github.com/we-promise/sure/pull/1227
- FIX schema drift and snaptrade and mercury issues by @sokie in https://github.com/we-promise/sure/pull/1232
- feat(vector-store): Implement pgvector adapter for self-hosted RAG by @eureka0928 in https://github.com/we-promise/sure/pull/1211
- Initial split transaction support by @sokie in https://github.com/we-promise/sure/pull/1230
- Fix NameError: rename migration file to match class name by @jjmata in https://github.com/we-promise/sure/pull/1234
- Restore legacy Plaid migration constant alias by @jjmata in https://github.com/we-promise/sure/pull/1235
- Fix
pgvectormigration to only run when explicitly configured by @jjmata in https://github.com/we-promise/sure/pull/1239 - Fix rule condition merchant dropdown to show all merchants by @eureka0928 in https://github.com/we-promise/sure/pull/1240
- Fix select is hidden inside dialog by @yxuko in https://github.com/we-promise/sure/pull/1196
- Bump pipelock image from 0.3.2 to 1.5.0 by @luckyPipewrench in https://github.com/we-promise/sure/pull/1238
- Add privacy mode to blur financial data across the app by @ChakibMoMi in https://github.com/we-promise/sure/pull/1055
- Refactor report and dashboard table layouts to semantic HTML by @eureka0928 in https://github.com/we-promise/sure/pull/1222
- Split UI by @sokie in https://github.com/we-promise/sure/pull/1245
- Add GET /api/v1/summary endpoint and display net worth on mobile home by @dwvwdv in https://github.com/we-promise/sure/pull/1145
- Move debug logs and logout actions to settings screen by @dwvwdv in https://github.com/we-promise/sure/pull/1146
- Add "logo" variant in account dropdown on transfer form by @alessiocappa in https://github.com/we-promise/sure/pull/1241
- Fix home page double AppBar inconsistency with settings/more pages by @dwvwdv in https://github.com/we-promise/sure/pull/1250
- Provider merchants enhancement by @sokie in https://github.com/we-promise/sure/pull/1254
- Fix decimal separator handling in money input fields by @jjmata in https://github.com/we-promise/sure/pull/1176
- fix: Resolve infinite sync loop on SnapTrade setup accounts page by @falcononrails in https://github.com/we-promise/sure/pull/1256
- Full
.ndjsonimport / reorganize UI with Financial Tools / Raw Data tabs by @jjmata in https://github.com/we-promise/sure/pull/1208 - Adapt holdings to number inputs by @sokie in https://github.com/we-promise/sure/pull/1258
- Add rswag API docs routes for development mode by @jjmata in https://github.com/we-promise/sure/pull/1259
- Fix SimpleFIN holdings confusing market value with cost basis (#1182) by @jjmata in https://github.com/we-promise/sure/pull/1261
- chore(deps): bump activestorage from 7.2.2.2 to 7.2.3.1 by @dependabot[bot] in https://github.com/we-promise/sure/pull/1263
- Updated list of Canadian registered accounts by @CYBRXT in https://github.com/we-promise/sure/pull/1265
- chore(helm): bump pipelock to v2.0.0 with trusted domains and redirect profiles by @luckyPipewrench in https://github.com/we-promise/sure/pull/1266
- Fix missing privacy blur on split transaction amounts in drawer by @jjmata with @Copilot in https://github.com/we-promise/sure/pull/1275
- Fix dashboard mobile: require press-and-hold to reorder sections by @lolimmlost in https://github.com/we-promise/sure/pull/1210
- Lock connection_pool gem by @sokie in https://github.com/we-promise/sure/pull/1284
- Add appearance setting for 2 column layout by @sokie in https://github.com/we-promise/sure/pull/1285
- Add Kosovo to country list by @vegimcarkaxhija in https://github.com/we-promise/sure/pull/1066
- Fix selected account and Transaction/Transfer Tabs changes by @yxuko in https://github.com/we-promise/sure/pull/1220
- Perf: Index Balance::SyncCache lookups by date to eliminate O(N×D) scans by @happytechca in https://github.com/we-promise/sure/pull/1081
- Family sharing by @sokie in https://github.com/we-promise/sure/pull/1272
- Added option to skip TLS verification for mailer by @fkrauthan in https://github.com/we-promise/sure/pull/1291
- Default production SSO provider source to YAML to avoid boot-time schema errors by @jjmata with @Copilot in https://github.com/we-promise/sure/pull/1278
- Sort Accounts dropdown alphabetically on uploads by @r-jeffries in https://github.com/we-promise/sure/pull/1290
- Providers sharing by @sokie in https://github.com/we-promise/sure/pull/1273
- Recurring scoping implementation by @sokie in https://github.com/we-promise/sure/pull/1300
- Show inflow/outflow totals for transfer filter by @lolimmlost in https://github.com/we-promise/sure/pull/1134
- Mobile: Add theme selection (light/dark/system) to settings by @felixmuinde in https://github.com/we-promise/sure/pull/1213
- feat(mobile): Add animated TypingIndicator for AI chat responses by @felixmuinde in https://github.com/we-promise/sure/pull/1269
- Added ca_file option to use the SSL_CA_FILE specified file if present by @fkrauthan in https://github.com/we-promise/sure/pull/1302
- Fix/issue 954 enable banking duplicate transactions by @0xRozier in https://github.com/we-promise/sure/pull/988
- Add transaction fee support to trades by @happytechca in https://github.com/we-promise/sure/pull/1248
- Record dividends and interest as Trades in investment accounts by @happytechca in https://github.com/we-promise/sure/pull/1311
- Split transactions and privacy quick fixes by @sokie in https://github.com/we-promise/sure/pull/1315
- Fix NoMethodError on nil entryable in account activity feed by @happytechca in https://github.com/we-promise/sure/pull/1316
- Missing translation fallback for account subtypes by @jjmata in https://github.com/we-promise/sure/pull/1325
- Fix NoMethodError on nil accountable for logo color by @sentry[bot] in https://github.com/we-promise/sure/pull/1334
- Add CoinStats exchange portfolio sync and normalize linked investment charts by @falcononrails in https://github.com/we-promise/sure/pull/1308
- fix: add hex color validation to Category model and form (to resolve #1247) by @boul2gom in https://github.com/we-promise/sure/pull/1341
- Update Docker Compose file for AI optional features by @jjmata in https://github.com/we-promise/sure/pull/1349
- Fix unable to add trades with manual ticker by @Browndw4 in https://github.com/we-promise/sure/pull/1343
- Restore monotonic Android versionCode for mobile releases by @jjmata with @Copilot in https://github.com/we-promise/sure/pull/1348
- fix: instantiate RuleImport before generating rows by @tomerh2001 in https://github.com/we-promise/sure/pull/1354
- Fix: target="_blank" to contact button by @yunwei-zh in https://github.com/we-promise/sure/pull/1359
- Fix RuleImport parsing for valid JSON values by @tomerh2001 in https://github.com/we-promise/sure/pull/1358
- fix(ui): move repeat icon to the center on recurring transactions page by @KenTandrian in https://github.com/we-promise/sure/pull/1365
- fix: enhance text contrast for prose headings, and blockquote paragraphs in dark mode on the Guide page by @briian365 in https://github.com/we-promise/sure/pull/1369
- Fix opacity for excluded transactions and implement keyboard navigation by @mike-lloyd03 in https://github.com/we-promise/sure/pull/1332
- fix: resolve flaky chats system test race condition by @happytechca in https://github.com/we-promise/sure/pull/1375
- fix: prevent NoMethodError in foreign_account? when account family is nil by @sentry[bot] in https://github.com/we-promise/sure/pull/1376
- QIF imports: Add date format auto-detection and manual override by @happytechca in https://github.com/we-promise/sure/pull/1368
- collect transaction stats after sync in EnableBanking provider by @smurfpandey in https://github.com/we-promise/sure/pull/1388
- Enable selenium service in devcontainer for system tests by @paramburu in https://github.com/we-promise/sure/pull/1340
- Update ruby-lsp-rails 0.4.6 → 0.4.8 and ruby-lsp 0.24.1 → 0.26.9 by @jjmata in https://github.com/we-promise/sure/pull/1389
- added collect_health_stats to enablebanking syncer by @smurfpandey in https://github.com/we-promise/sure/pull/1390
- Add Quick Categorize Wizard by @mikaelhm in https://github.com/we-promise/sure/pull/1386
- Fixed crypto and loan add menus by @CYBRXT in https://github.com/we-promise/sure/pull/1306
- Update and add Portuguese translations for various features by @gamboajorge49 in https://github.com/we-promise/sure/pull/1344
- Polish localization: complete translations, pluralization fixes, and reusable locale audit tooling by @UberDudePL in https://github.com/we-promise/sure/pull/1356
- fix: allow high precision for security prices in trade forms (to solve #1323) by @boul2gom in https://github.com/we-promise/sure/pull/1342
- Quick Categorize Wizard — follow-up fixes by @mikaelhm in https://github.com/we-promise/sure/pull/1393
- fix(mobile): Allow users to copy text from chatbot responses by @felixmuinde in https://github.com/we-promise/sure/pull/1394
- Add Binance support, heavily inspired by the Coinbase one by @boul2gom in https://github.com/we-promise/sure/pull/1317
- refactor(accounts): Improve destroy_later atomicity and add controller error handling by @sentry[bot] in https://github.com/we-promise/sure/pull/1395
- Refactor: Use Encryptable concern in CoinbaseItem by @boul2gom in https://github.com/we-promise/sure/pull/1339
- Make parent budgets auto-aggregate from subcategory edits by @jjmata with @Copilot in https://github.com/we-promise/sure/pull/1312
- Add throttling and cross-rate for twelve data by @sokie in https://github.com/we-promise/sure/pull/1396
- feat(select): improve merchant dropdown behavior and placement controls by @IamTaoChen in https://github.com/we-promise/sure/pull/1364
- Fix balance sheet dashboard section on iPhone by @Browndw4 in https://github.com/we-promise/sure/pull/1318
- feat: Allow creating budgets up to 2 years ahead by @grrtt49 in https://github.com/we-promise/sure/pull/925
- docs: add Yahoo Finance IPv6 troubleshooting note by @sure-admin in https://github.com/we-promise/sure/pull/1404
- Exposing transaction FX rate by @paramburu in https://github.com/we-promise/sure/pull/1099
- Fix Binance USD converter custom rate keyword by @jjmata in https://github.com/we-promise/sure/pull/1414
- feat(mobile): render assistant messages as markdown by @felixmuinde in https://github.com/we-promise/sure/pull/1405
- Expand financial providers by @sokie in https://github.com/we-promise/sure/pull/1407
- fix(binance): fix hmac signature by using same parameter order in request and sign by @boul2gom in https://github.com/we-promise/sure/pull/1425
- Add binance security provider for crypto by @sokie in https://github.com/we-promise/sure/pull/1424
- Move back to brandfetch by @sokie in https://github.com/we-promise/sure/pull/1427
- Fix DemoFamilyRefreshJob demo email config lookup by @jjmata in https://github.com/we-promise/sure/pull/1426
- Fix potential timing attack in Sidekiq Web UI auth by @the-spectator in https://github.com/we-promise/sure/pull/1429
- fix(accounts): add duplicate action to activity view by @tedawf in https://github.com/we-promise/sure/pull/1418
- feat(enable-banking): enhance transaction import, metadata handling, and UI by @boul2gom in https://github.com/we-promise/sure/pull/1406
- Fix trade drawer header width regression by @jjmata in https://github.com/we-promise/sure/pull/1415
- Feature: tabbing between income and expenses persists entered data by @BurningDog in https://github.com/we-promise/sure/pull/1422
- add transfer-icon at transactions by @IamTaoChen in https://github.com/we-promise/sure/pull/1431
- Investments currency fix by @sokie in https://github.com/we-promise/sure/pull/1436
- Fix overlapping in transaction name by @alessiocappa in https://github.com/we-promise/sure/pull/1435
- ui(sidebars): add subtle vertical separators and improve sidebar collapse behavior by @boul2gom in https://github.com/we-promise/sure/pull/1416
- Add GitHub Actions workflow to discover and run LLM evaluations by @jjmata in https://github.com/we-promise/sure/pull/1439
- fix(enable-banking): refactor error handling and add missing GIN index by @boul2gom in https://github.com/we-promise/sure/pull/1432
- Add DeFi via Coinstats by @romainrbr in https://github.com/we-promise/sure/pull/1417
- FIX networth chart dashboard by @sokie in https://github.com/we-promise/sure/pull/1449
- Add default currency to price and fee fields by @smurfpandey in https://github.com/we-promise/sure/pull/1444
- Add improvements from security providers to FX providers also by @sokie in https://github.com/we-promise/sure/pull/1445
- Fix transactions page crash when no accounts exist by @alexkreidler in https://github.com/we-promise/sure/pull/1453
- Ipv6 support by @sokie in https://github.com/we-promise/sure/pull/1437
- Fix module specifier path for parse_locale_float import by @sure-admin in https://github.com/we-promise/sure/pull/1456
- feat: add currency management for families with enabled currencies by @tedawf in https://github.com/we-promise/sure/pull/1419
- Add category support to transactions by @dwvwdv in https://github.com/we-promise/sure/pull/1251
- Budget page refactor: split into(All - Over Budget - On Track) by @IamTaoChen in https://github.com/we-promise/sure/pull/1195
- Fix transaction search account scope bypass by @jjmata in https://github.com/we-promise/sure/pull/1460
- feat: Add table-divider class and use it in investments summary section by @alessiocappa in https://github.com/we-promise/sure/pull/1463
- fix: adjust style in new budget tab and sections by @alessiocappa in https://github.com/we-promise/sure/pull/1464
- fix: values visible in privacy mode by @yunwei-zh in https://github.com/we-promise/sure/pull/1473
- Add previous messages to LLM response context / fix OpenAI regressions by @jjmata in https://github.com/we-promise/sure/pull/1384
- feat(mobile): Add biometric lock for app resume by @felixmuinde in https://github.com/we-promise/sure/pull/1474
- fix: preserve Generic investment subtypes in account creation form by @xinmotlanthua in https://github.com/we-promise/sure/pull/1465
- feat: Import pending transactions from Enable Banking only if option is enabled by @alessiocappa in https://github.com/we-promise/sure/pull/1476
- fix(Enable Banking): Restore legacy fallback for credit card balance calculation by @alessiocappa in https://github.com/we-promise/sure/pull/1477
- EnableBanking: use remittance for CARD-* names and merchants by @danez in https://github.com/we-promise/sure/pull/1478
- feat(helm): CNPG resource limits/requests by @dariogmori in https://github.com/we-promise/sure/pull/1487
- feat(settings): improve currency preferences UI by @tedawf in https://github.com/we-promise/sure/pull/1483
- Fix loan account subtype not persisting on create by @sure-admin in https://github.com/we-promise/sure/pull/1491
- chore(pipelock): bump chart default to v2.2.0, add CI scan badge by @luckyPipewrench in https://github.com/we-promise/sure/pull/1494
- SimpleFIN: setup UX + same-provider relink + card-replacement detection by @luckyPipewrench in https://github.com/we-promise/sure/pull/1493
- Complete French translations for views, models, and settings by @andronedev in https://github.com/we-promise/sure/pull/1501
- Feature: AI sidebar hidden by default for members and guests if AI is disabled by @BurningDog in https://github.com/we-promise/sure/pull/1510
- Add Sophtron Provider by @rockywang2025 in https://github.com/we-promise/sure/pull/596
- Close privacy mode gaps on accounts, budget editing, and account activity by @jjmata with @Copilot in https://github.com/we-promise/sure/pull/1495
- security: sanitize exception messages in v1 API responses (FIX-11) by @dgilperez in https://github.com/we-promise/sure/pull/1521
- Prevent long category labels from overflowing or crowding adjacent controls by @jjmata with @Copilot in https://github.com/we-promise/sure/pull/1498
- fix: Table divider display issue on Safari by @alessiocappa in https://github.com/we-promise/sure/pull/1522
- Add Google Cloud Storage Support for Active Storage by @itsLeonB in https://github.com/we-promise/sure/pull/1523
- Feature: improve transfer matcher UI copy by @BurningDog in https://github.com/we-promise/sure/pull/1526
- fix(storage): properly fallback to GCS_KEYFILE when GCS_KEYFILE_JSON is blank by @itsLeonB in https://github.com/we-promise/sure/pull/1531
- fix: Budget tabs issues on mobile by @alessiocappa in https://github.com/we-promise/sure/pull/1534
- Feature: remember value of chart period selector by @BurningDog in https://github.com/we-promise/sure/pull/1528
- Hide nested budget categories in the Budget spent donut by @jjmata with @Copilot in https://github.com/we-promise/sure/pull/1544
- feat(mobile): lock chat input while bot is responding + 20s timeout by @felixmuinde in https://github.com/we-promise/sure/pull/1538
- feat(ci): improve LLM eval visibility in GitHub Actions by @sure-admin in https://github.com/we-promise/sure/pull/1546
- Upgrade Android Gradle Plugin to 8.9.1 and Gradle to 8.12 by @felixmuinde in https://github.com/we-promise/sure/pull/1547
- Add automated Google Play Console upload for mobile releases by @jjmata in https://github.com/we-promise/sure/pull/1548
- fix(localization): update API usage instructions to include product name placeholder by @briian365 in https://github.com/we-promise/sure/pull/1555
- Fix budget donut chart hiding center content on segment hover by @xingxing21 in https://github.com/we-promise/sure/pull/1551
- fix(transfers): Set accounts when rendering new form after conversion or argument errors by @sentry[bot] in https://github.com/we-promise/sure/pull/1561
- fix(android): remove dead buildscript block and kotlin_version reference by @xingxing21 in https://github.com/we-promise/sure/pull/1567
- Fix IndexaCapital sync, account setup, and balance/type bugs by @GermanDZ in https://github.com/we-promise/sure/pull/1562
- fix: skip DemoFamilyRefreshJob in self-hosted mode by @wps260 in https://github.com/we-promise/sure/pull/1578
- Move versioning from Rails initializer to
.sure-versionfile by @jjmata in https://github.com/we-promise/sure/pull/1587 - Fix SimpleFIN inverting Loan account balances by @GermanDZ in https://github.com/we-promise/sure/pull/1574
- fix: run TestFlight upload on v* tags by @sure-admin in https://github.com/we-promise/sure/pull/1582
- fix: currency being ignored for properties by @thiagodsti in https://github.com/we-promise/sure/pull/1556
- fix: change postal_code column from integer to string by @thewillwilson in https://github.com/we-promise/sure/pull/1585
- Improve error handling with user-friendly messages and classification by @jjmata in https://github.com/we-promise/sure/pull/1591
- fix: Enable and persist notes and tags on split child transactions (#1535) by @xingxing21 in https://github.com/we-promise/sure/pull/1552
- Added ability to bulk-edit transaction names for multiple selected transactions by @DataEnginr in https://github.com/we-promise/sure/pull/1553
- Fix invite code being consumed on failed registration in invite-only mode by @francmart514 in https://github.com/we-promise/sure/pull/1576
- Performance improvements in balance sync cache by @wps260 in https://github.com/we-promise/sure/pull/1581
- fix(mobile): stop app icon source overwrite by @sure-admin in https://github.com/we-promise/sure/pull/1594
- fix(imports): preserve account status from backups by @JSONbored in https://github.com/we-promise/sure/pull/1603
- fix(budgets): stop auto-matched transfers leaking into category cards by @gariasf in https://github.com/we-promise/sure/pull/1588
- fix(imports): preserve Sure opening balance history by @JSONbored in https://github.com/we-promise/sure/pull/1595
- fix: use ProviderLoader for AuthConfig.sso_providers when DB providers enabled by @thewillwilson in https://github.com/we-promise/sure/pull/1614
- refactor(design-system): single-source design tokens via DTCG JSON by @gariasf in https://github.com/we-promise/sure/pull/1604
- feat(api): expose complete account export state by @JSONbored in https://github.com/we-promise/sure/pull/1597
- fix(design-system): give cyan-900 a darker value than cyan-800 by @gariasf in https://github.com/we-promise/sure/pull/1619
- feat(tokens): add $version field + document versioning policy by @gariasf in https://github.com/we-promise/sure/pull/1620
- feat(design-system): live tokens reference page in Lookbook by @gariasf in https://github.com/we-promise/sure/pull/1618
- feat(api): expose valuation history index by @JSONbored in https://github.com/we-promise/sure/pull/1596
- feat(api): expose rule export endpoints by @JSONbored in https://github.com/we-promise/sure/pull/1602
- feat(api): add recurring transaction endpoints by @JSONbored in https://github.com/we-promise/sure/pull/1600
- fix(design-system): make inline
visible in prose dark mode by @gariasf in https://github.com/we-promise/sure/pull/1625 - chore(design-system): replace dead Bootstrap classes with Sure tokens by @gariasf in https://github.com/we-promise/sure/pull/1621
- feat(api): accept Sure NDJSON imports by @JSONbored in https://github.com/we-promise/sure/pull/1601
- feat(api): expose import status details by @JSONbored in https://github.com/we-promise/sure/pull/1599
- Optimize and Fix provider price fetches for sold securities and batch queries by @wps260 in https://github.com/we-promise/sure/pull/1580
- refactor(i18n): standardize product name placeholder in import mappings by @sentry[bot] in https://github.com/we-promise/sure/pull/1631
- fix(recurring): make account-scoping migration resilient to legacy duplicates by @sure-admin in https://github.com/we-promise/sure/pull/1623
- ci: use include on matrix for runs-on by @Alxandr in https://github.com/we-promise/sure/pull/1649
- feat(api): expose reset status polling by @JSONbored in https://github.com/we-promise/sure/pull/1598
- fix: send first-time SnapTrade users to connect flow by @sure-admin in https://github.com/we-promise/sure/pull/1613
- fix(mercury): support named multiple API connections by @JSONbored in https://github.com/we-promise/sure/pull/1627
- feat(api): expose family exports by @JSONbored in https://github.com/we-promise/sure/pull/1632
- fix(chat): eager pending AssistantMessage to fix Turbo subscribe race (#1657) by @tajchert in https://github.com/we-promise/sure/pull/1658
- feat(auth): add WebAuthn MFA credentials by @JSONbored in https://github.com/we-promise/sure/pull/1628
- feat(api): expose family settings by @JSONbored in https://github.com/we-promise/sure/pull/1645
- feat(api): expose rule run history by @JSONbored in https://github.com/we-promise/sure/pull/1646
- refactor(design-system): migrate fg-* utilities to text-* and remove namespace by @gariasf in https://github.com/we-promise/sure/pull/1626
- feat(exports): preserve recurring transactions by @JSONbored in https://github.com/we-promise/sure/pull/1638
- Add assurance vie to investment subtypes by @HugoleDino in https://github.com/we-promise/sure/pull/1665
- feat(api): support idempotent valuation writes by @JSONbored in https://github.com/we-promise/sure/pull/1637
- fix(design-system): replace undefined utility classes and broken /N modifiers by @gariasf in https://github.com/we-promise/sure/pull/1660
- chore(design-system): swap raw gray classes for semantic tokens in settings/ by @gariasf in https://github.com/we-promise/sure/pull/1652
- chore(design-system): swap raw gray classes for semantic tokens in holdings/ by @gariasf in https://github.com/we-promise/sure/pull/1654
- chore(design-system): swap raw gray classes for semantic tokens across remaining views by @gariasf in https://github.com/we-promise/sure/pull/1655
- feat(erb-lint): add DeprecatedClasses cop for raw gray utility classes by @gariasf in https://github.com/we-promise/sure/pull/1656
- feat(exports): include holding snapshots by @JSONbored in https://github.com/we-promise/sure/pull/1643
- fix(auth): surface exact OIDC issuer mismatches by @sure-admin in https://github.com/we-promise/sure/pull/1666
- feat(investments): add India investment subtypes and exchange support by @ahnv in https://github.com/we-promise/sure/pull/1659
- feat(api): expose securities and price history by @JSONbored in https://github.com/we-promise/sure/pull/1642
- feat(api): expose import row diagnostics by @JSONbored in https://github.com/we-promise/sure/pull/1644
- fix(auth): hash MFA backup codes by @JSONbored in https://github.com/we-promise/sure/pull/1629
- Fix OpenAI Responses API stream error handling by @GermanDZ in https://github.com/we-promise/sure/pull/1669
- Performance improvements in holding calculation pipeline by @wps260 in https://github.com/we-promise/sure/pull/1579
- Fix SSO icon rendering for mixed-case provider icons by @sure-admin in https://github.com/we-promise/sure/pull/1674
- feat(accounts): Highlight matching activity search text in entry names by @bugbug11111 in https://github.com/we-promise/sure/pull/1671
- Revert "feat(accounts): Highlight matching activity search text in entry names" by @jjmata in https://github.com/we-promise/sure/pull/1682
- feat(api): expose balance history by @JSONbored in https://github.com/we-promise/sure/pull/1641
- feat(entries): Add amount validation and robustify monetizable concern by @sentry[bot] in https://github.com/we-promise/sure/pull/1680
- fix(transactions): Ignore blank date in entry params by @sentry[bot] in https://github.com/we-promise/sure/pull/1688
- feat(api): expose budget state by @JSONbored in https://github.com/we-promise/sure/pull/1640
- Update link text for new account to use translation by @royto in https://github.com/we-promise/sure/pull/1690
- feat(api): expose sync status by @JSONbored in https://github.com/we-promise/sure/pull/1635
- feat: add Hungarian (hu) localization by @brandonvers in https://github.com/we-promise/sure/pull/1677
- feat(api): allow creating categories via API by @GermanDZ in https://github.com/we-promise/sure/pull/1676
- feat(api): expose provider connection health by @JSONbored in https://github.com/we-promise/sure/pull/1636
- perf(accounts): kill sidebar/sparkline N+1s and cache the sidebar by @GermanDZ in https://github.com/we-promise/sure/pull/1683
- Fix avg_cost to return per-share cost basis by @EdeAbreu23 in https://github.com/we-promise/sure/pull/1692
- [codex] Complete Sophtron account mapping by @jjmata in https://github.com/we-promise/sure/pull/1698
- feat(exports): preserve transfer decisions by @JSONbored in https://github.com/we-promise/sure/pull/1639
- Reject revoked OAuth tokens in API v1 authentication by @jjmata in https://github.com/we-promise/sure/pull/1711
- fix(transactions): update dialog content class for new transaction view by @thomasbaker9010251 in https://github.com/we-promise/sure/pull/1693
- feat(enable-banking): safe pending transaction merge with sync re-import prevention by @CrossDrain in https://github.com/we-promise/sure/pull/1709
- feat(splits): add exclusion support for splits and improve rendering by @CrossDrain in https://github.com/we-promise/sure/pull/1661
- [codex] Add Sophtron manual sync fixes by @jjmata in https://github.com/we-promise/sure/pull/1714
- docs(agents): add Design System Hygiene checklist for UI PRs by @gariasf in https://github.com/we-promise/sure/pull/1732
- refactor(design-system): extend DS::Alert and migrate 9 inline alert blocks by @gariasf in https://github.com/we-promise/sure/pull/1731
- i18n(es): fill high-value locale gaps by @sure-admin in https://github.com/we-promise/sure/pull/1733
- Bank Sync cleanup by @jjmata in https://github.com/we-promise/sure/pull/1710
- Mobile: custom proxy headers + small login UX fixes by @tajchert in https://github.com/we-promise/sure/pull/1748
- feat(api): add transaction idempotency keys by @JSONbored in https://github.com/we-promise/sure/pull/1729
- fix(design-system): DS::Alert alignment, accessibility, and hierarchy polish by @gariasf in https://github.com/we-promise/sure/pull/1734
- feat(exports): add attachment manifest by @JSONbored in https://github.com/we-promise/sure/pull/1728
- feat(api): add import preflight validation by @JSONbored in https://github.com/we-promise/sure/pull/1755
- test(recurring): prove export roundtrip semantics by @JSONbored in https://github.com/we-promise/sure/pull/1727
- fix(api): include disabled-account transaction history by @JSONbored in https://github.com/we-promise/sure/pull/1723
- fix(enable-banking): import transactions missing transaction_id and entry_reference by @CrossDrain in https://github.com/we-promise/sure/pull/1767
- feat(providers): add Kraken exchange sync by @JSONbored in https://github.com/we-promise/sure/pull/1759
- feat(recurring): allow marking transfers as recurring by @gariasf in https://github.com/we-promise/sure/pull/1589
- fix(imports): import raw balance records by @JSONbored in https://github.com/we-promise/sure/pull/1724
- fix: correct SnapTrade cash activity signs by @sure-admin in https://github.com/we-promise/sure/pull/1634
- Scope SnapTrade orphan cleanup to current family by @jjmata in https://github.com/we-promise/sure/pull/1769
- Constrain Lunchflow base URL to trusted endpoint by @jjmata in https://github.com/we-promise/sure/pull/1768
- fix(binance): support CRYPTO: prefix and USD stablecoins by @plind-junior in https://github.com/we-promise/sure/pull/1771
- feat(mobile): add suggested questions to empty chat screen by @felixmuinde in https://github.com/we-promise/sure/pull/1773
- fix(ds/dialog): use existing i18n namespace for close button label by @plind-junior in https://github.com/we-promise/sure/pull/1776
- feat: opening_balance_date and opening_balance(i18n) by @IamTaoChen in https://github.com/we-promise/sure/pull/1377
- feat(exports): add rule operand references by @JSONbored in https://github.com/we-promise/sure/pull/1726
- fix(sso): preserve user-edited name across OIDC logins by @plind-junior in https://github.com/we-promise/sure/pull/1777
- feat(mobile): add mass delete for chats by @felixmuinde in https://github.com/we-promise/sure/pull/1779
- Add Interactive Brokers Provider by @gian-reto in https://github.com/we-promise/sure/pull/1722
- ci: split unit and system test jobs by @sure-admin in https://github.com/we-promise/sure/pull/1787
- fix(enable-banking): fix pending→posted auto-claim producing badge, duplicate, and wrong date by @CrossDrain in https://github.com/we-promise/sure/pull/1783
- fix(enable-banking): gracefully skip PDNG fetch for ASPSPs that don't support it by @CrossDrain in https://github.com/we-promise/sure/pull/1789
- feat(sync): add Brex provider connections by @JSONbored in https://github.com/we-promise/sure/pull/1752
- fix(simplefin): treat Vanguard/Fidelity cost_basis as total when needed by @plind-junior in https://github.com/we-promise/sure/pull/1772
- Mobile releases workflow fix by @jjmata in https://github.com/we-promise/sure/pull/1790
- fix(exports): align CSV roundtrip contracts by @JSONbored in https://github.com/we-promise/sure/pull/1725
- feat(statements): add account statement vault by @JSONbored in https://github.com/we-promise/sure/pull/1753
- fix(mobile): respect system navigation bar inset on chat screen by @felixmuinde in https://github.com/we-promise/sure/pull/1784
- feat(balance): Preserve historical balances as waypoints for linked accounts by @CrossDrain in https://github.com/we-promise/sure/pull/1663
- Add period navigation arrows to Reports view by @joaocbatista in https://github.com/we-promise/sure/pull/1756
- fix(enable-banking): preserve claimed pending date on subsequent syncs by @CrossDrain in https://github.com/we-promise/sure/pull/1797
- fix(a11y): add skip-link and aria-current="page" to application layout by @oxtensor in https://github.com/we-promise/sure/pull/1781
- fix(rules): count blocked rule transactions by @steadyfall in https://github.com/we-promise/sure/pull/1782
- chore: GitHub workflow to auto-deploy PRs to Cloudflare by @jjmata in https://github.com/we-promise/sure/pull/880
- fix(preview): use worker list metadata for cleanup by @sure-admin in https://github.com/we-promise/sure/pull/1799
- feat(i18n): extract hardcoded English strings to locale files by @brandonvers in https://github.com/we-promise/sure/pull/1806
- chore(ci): upgrade GitHub Actions to Node 24-compatible versions by @sure-admin in https://github.com/we-promise/sure/pull/1810
- Retry Enable Banking sync with provider-corrected date range by @sure-admin in https://github.com/we-promise/sure/pull/1801
- Add
super_admindebug event log by @sure-admin in https://github.com/we-promise/sure/pull/1816 - Add Actual Budget CSV import flow by @sure-admin in https://github.com/we-promise/sure/pull/1830
- fix(pwa): serve manifest for html accept headers by @sure-admin in https://github.com/we-promise/sure/pull/1828
- feat: beta features toggle + Beta pill primitive by @gariasf in https://github.com/we-promise/sure/pull/1829
- feat(i18n): add Hungarian translations for strings extracted in #1806 by @brandonvers in https://github.com/we-promise/sure/pull/1817
- fix(ibkr): correct historical cash/non-cash split for linked accounts by @CrossDrain in https://github.com/we-promise/sure/pull/1813
- feat(i18n): complete Catalan translations + extract residual hardcoded strings by @gariasf in https://github.com/we-promise/sure/pull/1836
- i18n(en): hardcode 'One error' in sso_providers errors_title singular form by @gariasf in https://github.com/we-promise/sure/pull/1854
- refactor: rename beta features gate to preview features by @gariasf in https://github.com/we-promise/sure/pull/1837
- fix(design-system): bump --color-success for WCAG 1.4.11 contrast by @gariasf in https://github.com/we-promise/sure/pull/1838
- fix(design-system): DS::Toggle focus ring, role=switch, and semantic tokens by @gariasf in https://github.com/we-promise/sure/pull/1843
- fix(design-system): DS::FilledIcon decorative-vs-meaningful API by @gariasf in https://github.com/we-promise/sure/pull/1842
- fix(design-system): DS::Disclosure focus ring + motion-safe chevron rotation by @gariasf in https://github.com/we-promise/sure/pull/1841
- fix(design-system): DS::Button a11y audit — focus ring, touch target, type default, icon-only label by @gariasf in https://github.com/we-promise/sure/pull/1840
- feat(theme): broadcast theme:change event so SVG/canvas consumers can repaint by @gariasf in https://github.com/we-promise/sure/pull/1839
- refactor(design-system): migrate 38 hand-rolled provider buttons to DS::Button / DS::Link (#1715 §5 part B) by @gariasf in https://github.com/we-promise/sure/pull/1860
- fix(design-system): DS::Link a11y — distinguishable default, icon-only label, external-link hardening by @gariasf in https://github.com/we-promise/sure/pull/1844
- fix(design-system): DS::Tooltip a11y — focusable trigger, keyboard parity, Esc dismiss by @gariasf in https://github.com/we-promise/sure/pull/1845
- fix(design-system): DS::Dialog a11y — role, aria-modal, aria-labelledby, heading_level by @gariasf in https://github.com/we-promise/sure/pull/1846
- fix(design-system): DS::Tabs a11y — WAI-ARIA tab pattern + keyboard nav by @gariasf in https://github.com/we-promise/sure/pull/1847
- fix(design-system): DS::Select a11y — fix aria-expanded, listbox keyboard nav, label binding by @gariasf in https://github.com/we-promise/sure/pull/1848
- refactor(design-system): migrate single-color tokens to @theme + lint @utility /N footgun by @gariasf in https://github.com/we-promise/sure/pull/1849
- refactor(design-system): migrate orphan btn-- buttons to DS::Button / DS::Link (#1715 §5 part A) by @gariasf in https://github.com/we-promise/sure/pull/1859
- feat(design-system): split DS::Menu into strict action-list + new DS::Popover by @gariasf in https://github.com/we-promise/sure/pull/1850
- fix(entry): Guard entryable_attributes for non-transaction entries in bulk_update! by @sentry[bot] in https://github.com/we-promise/sure/pull/1877
- fix(imports): prevent MissingTemplate for JSON requests in index by @sentry[bot] in https://github.com/we-promise/sure/pull/1875
- optimize net_category_totals() by using memoized cache by @bittensorrider in https://github.com/we-promise/sure/pull/1881
- fix(helm): skip Redis/DB auto-wiring when extraEnv override is set by @luckyPipewrench in https://github.com/we-promise/sure/pull/1868
- feat(dashboard): zoom into cashflow sankey categories by @tajchert in https://github.com/we-promise/sure/pull/1807
- fix(destroy): prevent UnknownAttributeError in DestroyJob rescue by @sentry[bot] in https://github.com/we-promise/sure/pull/1852
- feat(imports): verify Sure NDJSON import readback by @JSONbored in https://github.com/we-promise/sure/pull/1869
- feat(design-system): add DS::SearchInput primitive (closes #1715 §3) by @gariasf in https://github.com/we-promise/sure/pull/1853
- feat(design-system): DS::Disclosure :card variant + migrate 14 provider items (#1715 §6) by @gariasf in https://github.com/we-promise/sure/pull/1855
- feat(design-system): migrate 3 provider panels to DS::Disclosure :card (#1715 §6) by @gariasf in https://github.com/we-promise/sure/pull/1856
- feat(design-system): DS::Disclosure :card_inset variant + migrate ibkr_panel + settings/_section (#1715 §6) by @gariasf in https://github.com/we-promise/sure/pull/1857
- feat(design-system): DS::Disclosure :inline variant + migrate indexa_capital + snaptrade panels (#1715 §6) by @gariasf in https://github.com/we-promise/sure/pull/1858
- feat(design-system): extend DS::Pill with badge mode + semantic tones (#1751 PR A) by @gariasf in https://github.com/we-promise/sure/pull/1902
- fix(settings/debugs): replace 2 raw palette tokens (DS drift) by @gariasf in https://github.com/we-promise/sure/pull/1903
- fix(views): guard against nil entry.date in partials by @sentry[bot] in https://github.com/we-promise/sure/pull/1878
- fix(settings/debugs): migrate in-cell to DS::Disclosure :inline by @gariasf in https://github.com/we-promise/sure/pull/1916
- refactor(transactions): migrate 5 transaction badges to DS::Pill (#1751 PR B) by @gariasf in https://github.com/we-promise/sure/pull/1917
- refactor(providers): migrate provider badges to DS::Pill (#1751 PR C) by @gariasf in https://github.com/we-promise/sure/pull/1918
- docs(ds-toggle): warn against external hidden_field_tag with same name by @gariasf in https://github.com/we-promise/sure/pull/1925
- refactor(misc): migrate misc badges to DS::Pill (#1751 PR D) by @gariasf in https://github.com/we-promise/sure/pull/1919
- fix(design-system): DS::Disclosure :default summary_content layout by @gariasf in https://github.com/we-promise/sure/pull/1929
- fix(design-system): DS::Menu :icon_sm variant for dense action lists by @gariasf in https://github.com/we-promise/sure/pull/1930
- fix(design-system): restore dark-mode contrast on Toggle + destructive borders by @gariasf in https://github.com/we-promise/sure/pull/1932
- refactor(views): migrate 6 residual inline alerts to DS::Alert by @gariasf in https://github.com/we-promise/sure/pull/1933
- fix(admin/users): parent space-y-6 for sibling section spacing by @gariasf in https://github.com/we-promise/sure/pull/1934
- Use date comparisons for interval thresholds by @hendriksen-mark in https://github.com/we-promise/sure/pull/1923
- refactor(transactions): migrate transfer_match badges to DS::Pill by @gariasf in https://github.com/we-promise/sure/pull/1939
- Prevent Brand Fetch client ID autofill by @jakearmstrong59 in https://github.com/we-promise/sure/pull/1914
- fix : account destroyed cascade transfer destruction then … by @arumaio in https://github.com/we-promise/sure/pull/1795
- fix(enable_banking): match bank list search against BIC, not just name by @dripsmvcp in https://github.com/we-promise/sure/pull/1874
- chore(helm): bump pipelock to 2.5.0 and surface 2.5 config by @luckyPipewrench in https://github.com/we-promise/sure/pull/1913
- perf: use jemalloc as the default allocator by @ahnv in https://github.com/we-promise/sure/pull/1910
- Add automatic
not-gittensorPR labeling by @sure-admin in https://github.com/we-promise/sure/pull/1957 - fix(locale): Handle blank locale submission gracefully by @sentry[bot] in https://github.com/we-promise/sure/pull/1876
- fix(i18n): standardize product name interpolation in import mapping descriptions by @sentry[bot] in https://github.com/we-promise/sure/pull/1956
- fix(messages): handle blank content submission gracefully by @sentry[bot] in https://github.com/we-promise/sure/pull/1938
- fix(trades): prevent MissingTemplate for Turbo Stream requests on update/create failure by @sentry[bot] in https://github.com/we-promise/sure/pull/1893
- fix(views): clear Rule 2 + Rule 5 findings from weekly DS drift (#1951) by @gariasf in https://github.com/we-promise/sure/pull/1955
- fix: invert non-gittensor label condition by @sure-admin in https://github.com/we-promise/sure/pull/1960
- fix(settings): preserve OpenAI form input on validation failure by @dripsmvcp in https://github.com/we-promise/sure/pull/1862
- fix(preview): only redeploy on preview-cf label changes by @sure-admin in https://github.com/we-promise/sure/pull/1980
- fix: Avoid overlay in provider section on mobile by @alessiocappa in https://github.com/we-promise/sure/pull/1990
- fix(i18n): use %{product_name} in api_keys usage_instructions (#1505) by @Rene0422 in https://github.com/we-promise/sure/pull/2000
- feat: Add pagination in merchants page by @alessiocappa in https://github.com/we-promise/sure/pull/1965
- feat(ibkr): compute net_market_flows from IBKR equity equity delta and trade flows by @CrossDrain in https://github.com/we-promise/sure/pull/1970
- fix(account): show activity label for accounts supporting trades by @xBlaz3kx in https://github.com/we-promise/sure/pull/1993
- fix(settings): add nil-safe operator to Current.family.can_manage_subscription? by @sentry[bot] in https://github.com/we-promise/sure/pull/2006
- fix(family-sharing): prevent silent data loss when rehoming or removing users by @dripsmvcp in https://github.com/we-promise/sure/pull/1896
- fix(holdings): carry provider cost_basis forward to calculated rows past snapshot date by @CrossDrain in https://github.com/we-promise/sure/pull/1818
- fix: Keep with auto for category badge by @alessiocappa in https://github.com/we-promise/sure/pull/1963
- fix(enable_banking): clear stuck pending flag when ASPSP reuses same transaction_id by @CrossDrain in https://github.com/we-promise/sure/pull/1982
- feat(binance): add full account sync and transaction processing by @briian365 in https://github.com/we-promise/sure/pull/1822
- fix(jobs): delegate recurring-transaction sync gate to Sync.for_family by @galuis116 in https://github.com/we-promise/sure/pull/1975
- fix(views): DS drift — sankey tooltip tokens by @glorydavid03023 in https://github.com/we-promise/sure/pull/1996
- feat(reports): add Period Return card to Investment Performance by @CrossDrain in https://github.com/we-promise/sure/pull/1962
- fix(enable_banking): migrate select_bank dialog to DS::Pill and DS::Link by @glorydavid03023 in https://github.com/we-promise/sure/pull/1997
- fix(plaid): surface configuration/product-access errors from the Link flow (#1792) by @Rene0422 in https://github.com/we-promise/sure/pull/1991
- fix(balance): derive waypoint start from day's flows to prevent double-counting and phantom bumps by @CrossDrain in https://github.com/we-promise/sure/pull/2031
- fix(currencies): add DOGE entry to config/currencies.yml (#2008) by @Rene0422 in https://github.com/we-promise/sure/pull/2030
- feat(settings): add reviewed category merge flow by @JSONbored in https://github.com/we-promise/sure/pull/1754
- refactor(imports): back PDF imports with statements by @JSONbored in https://github.com/we-promise/sure/pull/1786
- fix(transactions): migrate transaction filter searches to DS::SearchInput by @glorydavid03023 in https://github.com/we-promise/sure/pull/1998
- feat(assistant): add get_budget function for budget tracking by @wolstad in https://github.com/we-promise/sure/pull/1966
- ci(preview): isolate preview deployment tooling by @JSONbored in https://github.com/we-promise/sure/pull/2025
- chore(i18n): complete Chinese locale coverage by @ashanzzz in https://github.com/we-promise/sure/pull/2010
- fix(ai-chat): disable submit on empty input instead of surfacing 'Content missing' (#1697) by @jeffrey701 in https://github.com/we-promise/sure/pull/1872
- feat(i18n): add Vietnamese (vi) locale by @tanoggy in https://github.com/we-promise/sure/pull/2043
- ci(preview): split PR image builds from trusted deploys by @JSONbored in https://github.com/we-promise/sure/pull/2057
- fix(charts): auto-fit donut center text to inner ring (#2002) by @Rene0422 in https://github.com/we-promise/sure/pull/2017
- fix(merchants): preserve manual merchant edits across provider sync by @dripsmvcp in https://github.com/we-promise/sure/pull/1981
- fix(snaptrade): import non-primary-currency cash as cash holdings by @dripsmvcp in https://github.com/we-promise/sure/pull/1979
- chore(ci): pin GitHub Actions to commit SHAs (#1811) by @jeffrey701 in https://github.com/we-promise/sure/pull/1870
- Add HTTP timeout config to Provider::Github Octokit client by @bittensorrider in https://github.com/we-promise/sure/pull/2061
- Perf/dashboard endpoint optimization by @bittensorrider in https://github.com/we-promise/sure/pull/1897
- fix(reset): scope family financial data resets by @JSONbored in https://github.com/we-promise/sure/pull/1835
- fix(dashboard): make Outflows widget responsive to its container, not the viewport by @gariasf in https://github.com/we-promise/sure/pull/2059
- ci(preview): stabilize Cloudflare preview deployments by @JSONbored in https://github.com/we-promise/sure/pull/2062
- fix: Replace platform-wide broadcast_refresh with sync toast by @ahnv in https://github.com/we-promise/sure/pull/1964
- feat(ai): add Anthropic provider with chat parity (1/5) by @gariasf in https://github.com/we-promise/sure/pull/1983
- fix(family): include HSA depository accounts in tax-advantaged exclusion by @galuis116 in https://github.com/we-promise/sure/pull/2004
- Fix Start month on Last 6 Months report off by 1 by @joaocbatista in https://github.com/we-promise/sure/pull/2070
- fix(transactions): include enable_banking in pending/confirmed status filter by @JPette1783 in https://github.com/we-promise/sure/pull/1885
- ci(preview): stabilize image push and readiness diagnostics by @JSONbored in https://github.com/we-promise/sure/pull/2084
- fix(tests): avoid account statement coverage rollover collision by @sure-admin in https://github.com/we-promise/sure/pull/2102
- fix: Do not show pagination if no merchants are available by @alessiocappa in https://github.com/we-promise/sure/pull/2115
- feat(transactions): add inline tag creation and search in txn form by @tedawf in https://github.com/we-promise/sure/pull/1719
- fix(categories): avoid index N+1 queries by @JSONbored in https://github.com/we-promise/sure/pull/2089
- feat(ai): Anthropic batch ops + LLM cost ledger (2/5) by @gariasf in https://github.com/we-promise/sure/pull/1984
- feat: Move "Merge" action for merchants/categories in sub menu by @alessiocappa in https://github.com/we-promise/sure/pull/2114
- perf(transfers): narrow auto-transfer candidate search by @JSONbored in https://github.com/we-promise/sure/pull/2080
- feat(goals): balance-derived + pledges by @gariasf in https://github.com/we-promise/sure/pull/1798
- fix(migrations): scope admin-backfill to a MigrationUser model (#1716) by @jeffrey701 in https://github.com/we-promise/sure/pull/1871
- perf(sparklines): avoid full account loads for linked charts by @JSONbored in https://github.com/we-promise/sure/pull/2128
- feat(provider): Akahu integration by @failing in https://github.com/we-promise/sure/pull/1921
- fix: replace hand-rolled badges with DS::Pill in admin users view by @Kelvinchen03 in https://github.com/we-promise/sure/pull/1988
- refactor(charts): extract shared chart-tooltip className to one source by @gariasf in https://github.com/we-promise/sure/pull/2106
- fix(ds-pill): default show_dot per mode (badges clean, markers keep dot) by @gariasf in https://github.com/we-promise/sure/pull/2107
- chore(ds-pill): migrate budget-category status badges to DS::Pill (#1751) by @gariasf in https://github.com/we-promise/sure/pull/2111
- fix(recurring): match transfer pairs so Cleaner stops mis-retiring transfers by @gariasf in https://github.com/we-promise/sure/pull/2110
- feat(ds): extract DS::ProgressRing primitive; migrate goal card (#1899) by @gariasf in https://github.com/we-promise/sure/pull/2112
- fix(ds): unify SSO sign-in buttons on DS::Button; drop bespoke Google CSS by @gariasf in https://github.com/we-promise/sure/pull/2152
- fix IncomeStatement performance issue by @bittensorrider in https://github.com/we-promise/sure/pull/1947
- ci(preview): fix Cloudflare registry image deployment by @JSONbored in https://github.com/we-promise/sure/pull/2124
- chore(rubocop): ignore generated schema spacing by @JSONbored in https://github.com/we-promise/sure/pull/2125
- feat(imports): validate Sure NDJSON before publish by @JSONbored in https://github.com/we-promise/sure/pull/1833
- feat(ai): Anthropic native PDF processing (3/5) by @gariasf in https://github.com/we-promise/sure/pull/1985
- fix(helm): normalize appVersion to strip leading v (#2050) by @jeffrey701 in https://github.com/we-promise/sure/pull/2156
- feat(i18n): complete Spanish (es) locale coverage for provider & transaction views by @glorydavid03023 in https://github.com/we-promise/sure/pull/2159
- feat(i18n): complete German (de) locale coverage for provider & transaction views by @glorydavid03023 in https://github.com/we-promise/sure/pull/2158
- fix(ds): dark-mode token parity — contrast & state fixes by @gariasf in https://github.com/we-promise/sure/pull/2139
- fix(accounts): honor stored return_to after subtype account creation by @gariasf in https://github.com/we-promise/sure/pull/2109
- Pass
APP_BUNDLE_IDinto iOS archive by @jjmata in https://github.com/we-promise/sure/pull/2169 - feat(imports): add SureImport session batches by @JSONbored in https://github.com/we-promise/sure/pull/1785
- fix(goals): scope funding-account picker to the current user's accessible accounts by @gariasf in https://github.com/we-promise/sure/pull/2172
- feat(ds): elevate dropdown overlays and stabilize selection check gutter by @gariasf in https://github.com/we-promise/sure/pull/2161
- fix(goals): default goal currency so it survives a failed create by @gariasf in https://github.com/we-promise/sure/pull/2171
- feat(enable_banking): support MFA/decoupled banks and harden session … by @trahloff in https://github.com/we-promise/sure/pull/2174
- fix(mobile): parse locale-aware transaction amounts by @JSONbored in https://github.com/we-promise/sure/pull/2130
- fix(ds): .table-scroll — wide tables scroll instead of clipping by @gariasf in https://github.com/we-promise/sure/pull/2148
- fix(balance-sheet): preserve disabled-account net worth history by @JSONbored in https://github.com/we-promise/sure/pull/1730
- feat(ds): semantic color — neutralize decorative green/red on reports by @gariasf in https://github.com/we-promise/sure/pull/2144
- fix(ds): cross-viewport lock — consistent auth mode-switch by @gariasf in https://github.com/we-promise/sure/pull/2149
- fix(ds): chart flat-state — hairline trendline, not a bisecting rule by @gariasf in https://github.com/we-promise/sure/pull/2150
- feat(mobile): add transaction metadata editing by @JSONbored in https://github.com/we-promise/sure/pull/2131
- feat(dashboard): unify per-widget period selectors into one picker by @gariasf in https://github.com/we-promise/sure/pull/2162
- ci(preview): render Cloudflare config from trusted template by @JSONbored in https://github.com/we-promise/sure/pull/2207
- Fix SSO provider settings updates (preserve client_secret, persist default_role) by @jjmata in https://github.com/we-promise/sure/pull/2210
- fix(goals): UI polish — submit validation, container-responsive cards, picker & filter fixes by @gariasf in https://github.com/we-promise/sure/pull/2160
- fix(ds): canonical transaction-row — stop category pills truncating by @gariasf in https://github.com/we-promise/sure/pull/2147
- feat(merchants): add raw data import (csv) for merchants by @xBlaz3kx in https://github.com/we-promise/sure/pull/1992
- chore(ci): finish Node 24 GitHub Actions migration by @sure-admin in https://github.com/we-promise/sure/pull/2221
- fix(mobile): redact sensitive diagnostic logs by @JSONbored in https://github.com/we-promise/sure/pull/2199
- feat(ds): DS::SegmentedControl — fix invisible dark selected pill by @gariasf in https://github.com/we-promise/sure/pull/2145
- fix(ds): one height rail for icon and text buttons by @gariasf in https://github.com/we-promise/sure/pull/2202
- fix(sync-toast): morph refresh, defer behind modals, DS conformance by @gariasf in https://github.com/we-promise/sure/pull/2105
- perf(transactions): preload new form options by @JSONbored in https://github.com/we-promise/sure/pull/2189
- perf(reports): collapse investment flow aggregates by @JSONbored in https://github.com/we-promise/sure/pull/2190
- fix: Savings Goal Marked Reached While Still Short by @jonathanchang31 in https://github.com/we-promise/sure/pull/2180
- feat(ai): default Anthropic installs to pgvector RAG (4/5) by @gariasf in https://github.com/we-promise/sure/pull/1986
- fix(ds): dark-parity for bespoke green status badges by @gariasf in https://github.com/we-promise/sure/pull/2142
- feat(ds): DS::EmptyState primitive by @gariasf in https://github.com/we-promise/sure/pull/2146
- test(goals): pledge-delta integration coverage (follow-up to #2178) by @gariasf in https://github.com/we-promise/sure/pull/2206
- feat(mobile): add privacy-safe Sentry instrumentation by @JSONbored in https://github.com/we-promise/sure/pull/2201
- fix(preview): surface postgres startup failures and reset attempt timings by @sure-admin in https://github.com/we-promise/sure/pull/2217
- fix(charts): restyle hover tooltips with soft shadow + larger radius by @gariasf in https://github.com/we-promise/sure/pull/2029
- feat(i18n): complete Brazilian Portuguese (pt-BR) locale coverage for provider & transaction views by @glorydavid03023 in https://github.com/we-promise/sure/pull/2220
- feat(i18n): complete Dutch (nl) locale coverage for provider & transaction views by @glorydavid03023 in https://github.com/we-promise/sure/pull/2218
- feat(mobile): show account detail context by @JSONbored in https://github.com/we-promise/sure/pull/2231
- fix(mobile): make offline transaction replay idempotent by @JSONbored in https://github.com/we-promise/sure/pull/2232
- Respect CoinStats wallet rate limits by @dan-dr in https://github.com/we-promise/sure/pull/2251
- feat(ai): self-host settings UI for Anthropic provider (5/5) by @gariasf in https://github.com/we-promise/sure/pull/1987
- feat(ai): route LLM batch & PDF flows through Setting.llm_provider by @gariasf in https://github.com/we-promise/sure/pull/2265
- fix(imports): import Actual rows with blank payee by @JSONbored in https://github.com/we-promise/sure/pull/2282
- Fix prerelease version-bump job: add PR fallback for protected branches by @jjmata in https://github.com/we-promise/sure/pull/2224
- perf(sync): scope transfer matching after account sync by @JSONbored in https://github.com/we-promise/sure/pull/2230
- fix(ds): use DS::Disclosure for investment-performance expander by @gariasf in https://github.com/we-promise/sure/pull/2243
- fix(ds): replace invalid bg-surface-default token with bg-surface by @gariasf in https://github.com/we-promise/sure/pull/2244
- fix(ds): canonical destructive red → red-500 (token + button) by @gariasf in https://github.com/we-promise/sure/pull/2245
- fix(ds): migrate SSO amber warning surfaces to DS::Alert / DS::Pill by @gariasf in https://github.com/we-promise/sure/pull/2246
- fix(ds): migrate remaining amber notice boxes to DS::Alert(:warning) by @gariasf in https://github.com/we-promise/sure/pull/2247
- fix(ds): convert_to_trade price warning — fix dead dark:, use warning token by @gariasf in https://github.com/we-promise/sure/pull/2249
- fix(ds): route remaining literal yellow warning surfaces onto --color-warning by @gariasf in https://github.com/we-promise/sure/pull/2250
- fix(ds): balance-sheet weight alignment + category pill padding by @gariasf in https://github.com/we-promise/sure/pull/2275
- fix(ds): add-account menu — right-size close + clickable rows by @gariasf in https://github.com/we-promise/sure/pull/2276
- fix(ds): dark-mode hover — alpha-black-25 → surface-hover on date-nav triggers by @gariasf in https://github.com/we-promise/sure/pull/2287
- fix(ds): unify tab/chip controls on DS::SegmentedControl (#8) by @gariasf in https://github.com/we-promise/sure/pull/2284
- refactor(settings): consistency pass — header-less settings_section + guides by @gariasf in https://github.com/we-promise/sure/pull/2279
- fix(ds): sync-settings env notice → DS::Alert (was invisible: undefined warning-* classes) by @gariasf in https://github.com/we-promise/sure/pull/2278
- fix(settings): preserve content scroll position per page across navigation by @gariasf in https://github.com/we-promise/sure/pull/2277
- feat(ds): one canonical focus ring across primitives by @gariasf in https://github.com/we-promise/sure/pull/2140
- fix: EODHD lookup for EU mutual funds with EUFUND exchange code by @Kelvinchen03 in https://github.com/we-promise/sure/pull/2212
- feat(mobile): align theme foundation with Sure tokens by @JSONbored in https://github.com/we-promise/sure/pull/2237
- feat(mcp): OAuth 2.1 auth for MCP — connect Claude.ai with your Sure login by @thewillwilson in https://github.com/we-promise/sure/pull/2234
- fix(enable-banking): tolerate any 422 on PDNG fetch (#1805) by @Rene0422 in https://github.com/we-promise/sure/pull/1889
- fix(sharing): scope import account selects to accessible_by (#1803) by @dripsmvcp in https://github.com/we-promise/sure/pull/2194
- fix(mobile): regenerate stale Sure tokens on main by @sure-admin in https://github.com/we-promise/sure/pull/2296
- Fix Plaid sync failure for loan subtypes missing from Loan::SUBTYPES by @BeltaKoda in https://github.com/we-promise/sure/pull/2298
- feat(cashflow): deep-link category labels to filtered transactions by @thewillwilson in https://github.com/we-promise/sure/pull/2083
- fix(preview): bind :3000 instantly and bound diagnostics posts by @JSONbored in https://github.com/we-promise/sure/pull/2286
- Add support for dividend, deposit, withdrawal, and interest trade types to Trades API by @thebandit in https://github.com/we-promise/sure/pull/1761
- fix(ds): route mercury/ibkr provider panels onto sibling tokens by @gariasf in https://github.com/we-promise/sure/pull/2290
- refactor(settings): debugs page onto settings_section by @gariasf in https://github.com/we-promise/sure/pull/2289
- fix(ds): goals — uniform New-goal → grid spacing by @gariasf in https://github.com/we-promise/sure/pull/2288
- feat(mobile): standardize money typography and semantic amount color by @JSONbored in https://github.com/we-promise/sure/pull/2331
- chore(deps): upgrade Rails 7.2 → 8.1 by @JSONbored in https://github.com/we-promise/sure/pull/2301
- fix(ds): neutral text for goals status callout by @gariasf in https://github.com/we-promise/sure/pull/2312
- fix(dashboard): apply two-column layout at xl breakpoint, not 2xl by @gariasf in https://github.com/we-promise/sure/pull/2310
- fix(dashboard): align sankey zoom-out button with section header by @gariasf in https://github.com/we-promise/sure/pull/2313
- fix(ds): normalize legacy tooltip spacing to one recipe by @gariasf in https://github.com/we-promise/sure/pull/2311
- fix(settings): give the MCP copy button success feedback by @gariasf in https://github.com/we-promise/sure/pull/2314
- fix(chat): clear assistant bubble on destroy so the chat doesn't hang on Thinking by @gariasf in https://github.com/we-promise/sure/pull/2315
- chore(deps): bump yard from 0.9.37 to 0.9.42 by @dependabot[bot] in https://github.com/we-promise/sure/pull/2335
- chore(deps): bump css_parser from 1.21.1 to 1.22.0 by @dependabot[bot] in https://github.com/we-promise/sure/pull/2336
- fix(ds): shrink dialog close button to size sm by @gariasf in https://github.com/we-promise/sure/pull/2309
- chore(i18n): remove dead transfers.form.* exchange-rate keys by @augustocbx in https://github.com/we-promise/sure/pull/2293
- fix(sync): discover nightly provider items reflectively by @sure-admin in https://github.com/we-promise/sure/pull/2334
- fix(ds): canonical separators and destructive tokens in usage/rules tables by @gariasf in https://github.com/we-promise/sure/pull/2332
- fix(ds): migrate goals color picker back to DS::Disclosure (no_margin body option) by @gariasf in https://github.com/we-promise/sure/pull/2350
- chore(i18n): complete zh-CN locale coverage by @BeastOrange in https://github.com/we-promise/sure/pull/2283
- fix: preserve CoinStats balances when wallet sync data is missing by @sure-admin in https://github.com/we-promise/sure/pull/2132
- feat(dashboard): masonry packing + per-widget size controls by @gariasf in https://github.com/we-promise/sure/pull/2328
- fix(jobs): enqueue jobs after transaction commit to fix SyncJob deserialization race by @JSONbored in https://github.com/we-promise/sure/pull/2354
- fix(rules): make explicit re-apply override locked attributes by @augustocbx in https://github.com/we-promise/sure/pull/2273
- Upgrade Ruby version to 3.4.9 by @jjmata in https://github.com/we-promise/sure/pull/2360
- feat(mobile): add SureButton primitive and migrate login buttons by @JSONbored in https://github.com/we-promise/sure/pull/2358
- feat(security): warn when ActiveRecord encryption is not configured by @andrewb-nz in https://github.com/we-promise/sure/pull/2362
- feat(imports): add YNAB CSV import by @JSONbored in https://github.com/we-promise/sure/pull/2361
- feat(mobile): bundle Geist + Geist Mono so the app renders Sure typography by @JSONbored in https://github.com/we-promise/sure/pull/2342
- feat(mobile): normalize dashboard text weight to DS Medium (500) by @JSONbored in https://github.com/we-promise/sure/pull/2344
- feat(mobile): add SureIcon (Lucide) primitive and migrate dashboard icons by @JSONbored in https://github.com/we-promise/sure/pull/2346
- perf(api): avoid transfer lookups in transaction index by @JSONbored in https://github.com/we-promise/sure/pull/2127
- fix(mobile): neutral Sure tokens for FAB/badge/avatar surfaces + themed logo by @JSONbored in https://github.com/we-promise/sure/pull/2366
- feat(mobile): generate shadow scale + focus-ring/bg-inverse tokens by @JSONbored in https://github.com/we-promise/sure/pull/2349
- fix: Transaction Pagination Skipping Entries by @jonathanchang31 in https://github.com/we-promise/sure/pull/2179
- fix(accounts): persist subtype when creating an account by @vlnd0 in https://github.com/we-promise/sure/pull/2356
- Add Mobile version check for update notifications by @felixmuinde in https://github.com/we-promise/sure/pull/2367
- fix(cashflow): use Turbo.visit for donut chart deep-link navigation by @thewillwilson in https://github.com/we-promise/sure/pull/2166
- Add transaction name to get_transactions MCP tool output by @oggysecond in https://github.com/we-promise/sure/pull/2026
- fix(imports): normalize CSV upload encoding when validations are skipped by @augustocbx in https://github.com/we-promise/sure/pull/2299
- Add cascade delete to rejected_transfers foreign keys by @Kelvinchen03 in https://github.com/we-promise/sure/pull/2211
- fix(prices): resolve dashed crypto tickers (BTC-USD, TRX-USD) via BinancePublic by @vlnd0 in https://github.com/we-promise/sure/pull/2372
- fix(ds): add focus ring to dashboard widget size control by @BeastOrange in https://github.com/we-promise/sure/pull/2364
- feat(prices): add Moscow Exchange (MOEX ISS) securities + FX provider by @vlnd0 in https://github.com/we-promise/sure/pull/2394
- perf(recurring): batch recurring transaction identification by @JSONbored in https://github.com/we-promise/sure/pull/2239
- perf(dashboard): streamline investment activity totals by @JSONbored in https://github.com/we-promise/sure/pull/2257
- perf(reports): avoid residual category lazy loads by @JSONbored in https://github.com/we-promise/sure/pull/2255
- fix(trades): guard against nil security in create_trade by @sentry[bot] in https://github.com/we-promise/sure/pull/2066
- feat(prices): add T-Invest (T-Bank) securities + brand-logo provider by @vlnd0 in https://github.com/we-promise/sure/pull/2408
- fix(coinstats): stabilize bulk wallet ordering by @sure-admin in https://github.com/we-promise/sure/pull/2402
- Fix API auth context inheriting web session impersonation by @BeastOrange in https://github.com/we-promise/sure/pull/2405
- Refresh Pipelock integration for v2.8 receipts by @luckyPipewrench in https://github.com/we-promise/sure/pull/2406
- feat(up): add Up Bank (AU) provider integration by @Jookly123 in https://github.com/we-promise/sure/pull/2391
- feat(mobile): add SureCard primitive and migrate account cards by @JSONbored in https://github.com/we-promise/sure/pull/2370
- feat(mobile): add SureListGroup/SureListRow primitives and migrate the More menu by @JSONbored in https://github.com/we-promise/sure/pull/2376
- feat(mobile): add SureTextField primitive and migrate the proxy-headers editor by @JSONbored in https://github.com/we-promise/sure/pull/2378
- fix(tinkoff): resolve the tradeable listing and price bonds via BondBy by @vlnd0 in https://github.com/we-promise/sure/pull/2413
- feat(mobile): add SureChip primitive and migrate the currency filter by @JSONbored in https://github.com/we-promise/sure/pull/2380
- feat(mobile): add SureSegmentedControl primitive and migrate the transaction type selector by @JSONbored in https://github.com/we-promise/sure/pull/2382
- fix(settings): preserve scroll position in settings nav by @Holdner in https://github.com/we-promise/sure/pull/2373
- chore(deps): bump esbuild and wrangler in /workers/preview by @dependabot[bot] in https://github.com/we-promise/sure/pull/2411
- chore(deps): bump undici and wrangler in /workers/preview by @dependabot[bot] in https://github.com/we-promise/sure/pull/2410
- chore(deps): bump nokogiri from 1.19.3 to 1.19.4 by @dependabot[bot] in https://github.com/we-promise/sure/pull/2425
- chore(deps): bump faraday from 2.14.1 to 2.14.3 by @dependabot[bot] in https://github.com/we-promise/sure/pull/2424
- chore(deps): bump concurrent-ruby from 1.3.6 to 1.3.7 by @dependabot[bot] in https://github.com/we-promise/sure/pull/2426
- Bump version to next iteration after v0.7.2-alpha.8 release by @jjmata in https://github.com/we-promise/sure/pull/2423
- feat(mobile): migrate all hardcoded UI strings to gen_l10n ARB (Phase 1 + 2) by @JSONbored in https://github.com/we-promise/sure/pull/2384
- design-system(mobile): SureFontWeights tokens (named weight tiers) by @JSONbored in https://github.com/we-promise/sure/pull/2419
- feat(mcp): add get/create/update tools for tags and categories by @xBlaz3kx in https://github.com/we-promise/sure/pull/2374
- Bump Puma dependency to >= 7.2.1 by @jjmata in https://github.com/we-promise/sure/pull/2428
- Enforce LF line endings for .devcontainer/.bashrc by @jestinjoshi in https://github.com/we-promise/sure/pull/2480
- Fix SimpleFIN epoch-string balance dates causing PG::DatetimeFieldOverflow by @marty0x in https://github.com/we-promise/sure/pull/2397
- fix(chat): surface and recover from undelivered assistant responses by @gariasf in https://github.com/we-promise/sure/pull/2436
- fix: use ES256 instead of EdDSA for Coinbase CDP JWT signing by @lifrank1 in https://github.com/we-promise/sure/pull/1888
- feat: resizable accounts & assistant sidebars by @gariasf in https://github.com/we-promise/sure/pull/2482
- Allow multiple active API keys per user by @thewillwilson in https://github.com/we-promise/sure/pull/2077
- fix(balances): materialize entries dated before the opening anchor by @vlnd0 in https://github.com/we-promise/sure/pull/2434
- fix(i18n): correct Catalan gender agreement on add-account button by @gariasf in https://github.com/we-promise/sure/pull/2488
- fix(sync): store EnableBanking credit card debt as balance instead of available credit by @mxafi in https://github.com/we-promise/sure/pull/2459
- Add SnapTrade OAuth device flow by @jjmata in https://github.com/we-promise/sure/pull/2494
- Fix SimpleFIN partial auth reconnect status by @luckyPipewrench in https://github.com/we-promise/sure/pull/2509
- fix(imports): support QIF dd mmm yyyy date format by @BeastOrange in https://github.com/we-promise/sure/pull/2500
- Adds a toggle to mark accounts as excluded from all financial reports while keeping them active and visible individually. by @DataEnginr in https://github.com/we-promise/sure/pull/2416
- Require omniauth-rails_csrf_protection v2.0+ for Rails 8.2 compatibility by @jjmata in https://github.com/we-promise/sure/pull/2520
- chore(deps): bump yard from 0.9.42 to 0.9.44 by @dependabot[bot] in https://github.com/we-promise/sure/pull/2522
- Scope API v1 controllers through current_resource_owner by @BeastOrange in https://github.com/we-promise/sure/pull/2414
- fix(sync): scope after_commit to prevent nil family error on destroy by @sentry[bot] in https://github.com/we-promise/sure/pull/1976
- feat:Add SnapTrade OAuth device flow by @jjmata in https://github.com/we-promise/sure/pull/2523
- Fixes issue #2415 - Subcategories are not alphabetically ordered like Categories by @HairyHook in https://github.com/we-promise/sure/pull/2429
- fix(accounts): subtype dropped on create when assigned before accountable_type by @vlnd0 in https://github.com/we-promise/sure/pull/2432
- fix(sync): prevent NoMethodError when syncable is nil in after_commit by @sentry[bot] in https://github.com/we-promise/sure/pull/2484
- fix(settings): securities-provider checkmarks invisible in dark mode by @vlnd0 in https://github.com/we-promise/sure/pull/2430
- feat(mobile): privacy mode to mask money values by @JSONbored in https://github.com/we-promise/sure/pull/2386
- feat(goals): earmark a portion of an account toward a goal (Phase 1) by @gariasf in https://github.com/we-promise/sure/pull/2490
- fix(mobile): dispose API-key dialog controller on any dismissal by @JSONbored in https://github.com/we-promise/sure/pull/2399
- design-system(mobile): SureSpacing + SureTypography scale tokens by @JSONbored in https://github.com/we-promise/sure/pull/2438
- feat(goals): investment-backed goals (Phase 2) by @gariasf in https://github.com/we-promise/sure/pull/2491
- feat(kraken): import deposits, withdrawals, staking & fees via Ledgers API by @JSONbored in https://github.com/we-promise/sure/pull/2451
- feat(mercury): pending transactions, kind/counterpartyId metadata, and test coverage by @JSONbored in https://github.com/we-promise/sure/pull/2452
- fix(mobile): in-progress feedback for the Clear local data action by @JSONbored in https://github.com/we-promise/sure/pull/2439
- test(system): harden property edit flow against the account-menu morph race by @JSONbored in https://github.com/we-promise/sure/pull/2421
- fix(pwa): harden manifest render to explicitly use json format by @sentry[bot] in https://github.com/we-promise/sure/pull/2508
- refactor(imports): header-less settings_section by @Holdner in https://github.com/we-promise/sure/pull/2395
- feat(up): flag internal transfers and round-ups as funds_movement by @threatsurfer in https://github.com/we-promise/sure/pull/2460
- fix(goals): match manual_save pledges by contribution delta, not full balance by @galuis116 in https://github.com/we-promise/sure/pull/2178
- docs: explain self-hosted onboarding modes by @sure-admin in https://github.com/we-promise/sure/pull/2533
- feat: add preference to disable modal close on outside click by @Nekoraru22 in https://github.com/we-promise/sure/pull/2226
- i18n: fully update French (fr) translations by @Nicotinii in https://github.com/we-promise/sure/pull/1922
- Fix date-dependent flake in investment_statement_test by @jestinjoshi in https://github.com/we-promise/sure/pull/2539
New Contributors
- @lolimmlost made their first contribution in https://github.com/we-promise/sure/pull/1076
- @happytechca made their first contribution in https://github.com/we-promise/sure/pull/1082
- @andreugordillovazquez made their first contribution in https://github.com/we-promise/sure/pull/1112
- @imnotjames made their first contribution in https://github.com/we-promise/sure/pull/1142
- @chasestech made their first contribution in https://github.com/we-promise/sure/pull/1165
- @itsLeonB made their first contribution in https://github.com/we-promise/sure/pull/713
- @RenzoMXD made their first contribution in https://github.com/we-promise/sure/pull/1123
- @jabbink made their first contribution in https://github.com/we-promise/sure/pull/1215
- @milorw made their first contribution in https://github.com/we-promise/sure/pull/1214
- @yxuko made their first contribution in https://github.com/we-promise/sure/pull/1196
- @ChakibMoMi made their first contribution in https://github.com/we-promise/sure/pull/1055
- @falcononrails made their first contribution in https://github.com/we-promise/sure/pull/1256
- @CYBRXT made their first contribution in https://github.com/we-promise/sure/pull/1265
- @vegimcarkaxhija made their first contribution in https://github.com/we-promise/sure/pull/1066
- @fkrauthan made their first contribution in https://github.com/we-promise/sure/pull/1291
- @r-jeffries made their first contribution in https://github.com/we-promise/sure/pull/1290
- @felixmuinde made their first contribution in https://github.com/we-promise/sure/pull/1213
- @boul2gom made their first contribution in https://github.com/we-promise/sure/pull/1341
- @Browndw4 made their first contribution in https://github.com/we-promise/sure/pull/1343
- @tomerh2001 made their first contribution in https://github.com/we-promise/sure/pull/1354
- @yunwei-zh made their first contribution in https://github.com/we-promise/sure/pull/1359
- @KenTandrian made their first contribution in https://github.com/we-promise/sure/pull/1365
- @briian365 made their first contribution in https://github.com/we-promise/sure/pull/1369
- @mike-lloyd03 made their first contribution in https://github.com/we-promise/sure/pull/1332
- @smurfpandey made their first contribution in https://github.com/we-promise/sure/pull/1388
- @paramburu made their first contribution in https://github.com/we-promise/sure/pull/1340
- @mikaelhm made their first contribution in https://github.com/we-promise/sure/pull/1386
- @gamboajorge49 made their first contribution in https://github.com/we-promise/sure/pull/1344
- @UberDudePL made their first contribution in https://github.com/we-promise/sure/pull/1356
- @IamTaoChen made their first contribution in https://github.com/we-promise/sure/pull/1364
- @grrtt49 made their first contribution in https://github.com/we-promise/sure/pull/925
- @the-spectator made their first contribution in https://github.com/we-promise/sure/pull/1429
- @romainrbr made their first contribution in https://github.com/we-promise/sure/pull/1417
- @alexkreidler made their first contribution in https://github.com/we-promise/sure/pull/1453
- @xinmotlanthua made their first contribution in https://github.com/we-promise/sure/pull/1465
- @danez made their first contribution in https://github.com/we-promise/sure/pull/1478
- @andronedev made their first contribution in https://github.com/we-promise/sure/pull/1501
- @rockywang2025 made their first contribution in https://github.com/we-promise/sure/pull/596
- @xingxing21 made their first contribution in https://github.com/we-promise/sure/pull/1551
- @GermanDZ made their first contribution in https://github.com/we-promise/sure/pull/1562
- @wps260 made their first contribution in https://github.com/we-promise/sure/pull/1578
- @thiagodsti made their first contribution in https://github.com/we-promise/sure/pull/1556
- @thewillwilson made their first contribution in https://github.com/we-promise/sure/pull/1585
- @DataEnginr made their first contribution in https://github.com/we-promise/sure/pull/1553
- @francmart514 made their first contribution in https://github.com/we-promise/sure/pull/1576
- @JSONbored made their first contribution in https://github.com/we-promise/sure/pull/1603
- @gariasf made their first contribution in https://github.com/we-promise/sure/pull/1588
- @Alxandr made their first contribution in https://github.com/we-promise/sure/pull/1649
- @tajchert made their first contribution in https://github.com/we-promise/sure/pull/1658
- @ahnv made their first contribution in https://github.com/we-promise/sure/pull/1659
- @bugbug11111 made their first contribution in https://github.com/we-promise/sure/pull/1671
- @royto made their first contribution in https://github.com/we-promise/sure/pull/1690
- @brandonvers made their first contribution in https://github.com/we-promise/sure/pull/1677
- @EdeAbreu23 made their first contribution in https://github.com/we-promise/sure/pull/1692
- @thomasbaker9010251 made their first contribution in https://github.com/we-promise/sure/pull/1693
- @CrossDrain made their first contribution in https://github.com/we-promise/sure/pull/1709
- @plind-junior made their first contribution in https://github.com/we-promise/sure/pull/1771
- @gian-reto made their first contribution in https://github.com/we-promise/sure/pull/1722
- @joaocbatista made their first contribution in https://github.com/we-promise/sure/pull/1756
- @oxtensor made their first contribution in https://github.com/we-promise/sure/pull/1781
- @bittensorrider made their first contribution in https://github.com/we-promise/sure/pull/1881
- @jakearmstrong59 made their first contribution in https://github.com/we-promise/sure/pull/1914
- @arumaio made their first contribution in https://github.com/we-promise/sure/pull/1795
- @dripsmvcp made their first contribution in https://github.com/we-promise/sure/pull/1874
- @Rene0422 made their first contribution in https://github.com/we-promise/sure/pull/2000
- @galuis116 made their first contribution in https://github.com/we-promise/sure/pull/1975
- @glorydavid03023 made their first contribution in https://github.com/we-promise/sure/pull/1996
- @wolstad made their first contribution in https://github.com/we-promise/sure/pull/1966
- @ashanzzz made their first contribution in https://github.com/we-promise/sure/pull/2010
- @jeffrey701 made their first contribution in https://github.com/we-promise/sure/pull/1872
- @tanoggy made their first contribution in https://github.com/we-promise/sure/pull/2043
- @JPette1783 made their first contribution in https://github.com/we-promise/sure/pull/1885
- @failing made their first contribution in https://github.com/we-promise/sure/pull/1921
- @Kelvinchen03 made their first contribution in https://github.com/we-promise/sure/pull/1988
- @trahloff made their first contribution in https://github.com/we-promise/sure/pull/2174
- @jonathanchang31 made their first contribution in https://github.com/we-promise/sure/pull/2180
- @dan-dr made their first contribution in https://github.com/we-promise/sure/pull/2251
- @BeltaKoda made their first contribution in https://github.com/we-promise/sure/pull/2298
- @thebandit made their first contribution in https://github.com/we-promise/sure/pull/1761
- @augustocbx made their first contribution in https://github.com/we-promise/sure/pull/2293
- @BeastOrange made their first contribution in https://github.com/we-promise/sure/pull/2283
- @andrewb-nz made their first contribution in https://github.com/we-promise/sure/pull/2362
- @vlnd0 made their first contribution in https://github.com/we-promise/sure/pull/2356
- @oggysecond made their first contribution in https://github.com/we-promise/sure/pull/2026
- @Jookly123 made their first contribution in https://github.com/we-promise/sure/pull/2391
- @Holdner made their first contribution in https://github.com/we-promise/sure/pull/2373
- @jestinjoshi made their first contribution in https://github.com/we-promise/sure/pull/2480
- @marty0x made their first contribution in https://github.com/we-promise/sure/pull/2397
- @lifrank1 made their first contribution in https://github.com/we-promise/sure/pull/1888
- @mxafi made their first contribution in https://github.com/we-promise/sure/pull/2459
- @HairyHook made their first contribution in https://github.com/we-promise/sure/pull/2429
- @threatsurfer made their first contribution in https://github.com/we-promise/sure/pull/2460
- @Nekoraru22 made their first contribution in https://github.com/we-promise/sure/pull/2226
- @Nicotinii made their first contribution in https://github.com/we-promise/sure/pull/1922
Full Changelog: https://github.com/we-promise/sure/compare/v0.6.8...v0.7.2
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About sure
The personal finance app for everyone. NOT affiliated with or endorsed by Maybe Finance Inc.
Related context
Related tools
Beta — feedback welcome: [email protected]