Sure
Personal finance and wealth management app for everyone
Alternative to: mint, monarch money, ynab, empower
v0.7.5
2026-09-30Brand new full Bills experience (look under preview features in preferences!) / more financial connections / deeper tools for understanding loans, investments, and everyday cash flow.
Plan bills and recurring cash flow
Bills now have a dedicated home with overview and calendar views, custom repeat intervals, and an Income plan for organizing upcoming obligations around pay periods. Calendar feeds, in-page AI helpers, and assistant/MCP tools bring recurring finances into more of your workflow. Thanks @winters27 for this amazing feature work!
Calendar:
Paycheck planning:
Connect more of your financial life
Transaction review gets faster with inline tag editing, richer category filters, grouped split transactions, expanded rule conditions, and QIF split imports. New integrations include Trade Republic, Monobank, Fio banka, and CoinSpot. This release also brings extensive reliability and data-quality improvements across Plaid, Wise, SnapTrade, Enable Banking, and other providers—from authentication and account balances to trade fees and transaction imports.
Understand loans and investments more deeply
Loan accounts gain native amortization schedules, variable-rate support, payoff projections, and a balance chart. Investments gain portfolio-weight rollups, money-weighted return calculations, asset classification, and improvements to cost basis, security pricing, and trade handling.
FinanceKit foundations and an upcoming native iOS app
This release adds the FinanceKit backend foundations for Apple Wallet integration, preparing Sure to receive authorized account, balance, and transaction data from an Apple device. Durable uploads and retry handling, continuity when replacing a device, and explicit conflict handling help keep imported data reliable while protecting edits made in Sure.
Apple Wallet connection settings, sync status, and diagnostics make the integration easier to manage. Disconnect controls support retaining imported history or requesting its removal through the FinanceKit API.
These changes lay the groundwork for the upcoming Swift-native iOS client. The native app is not part of this release’s production mobile distribution, which remains the Flutter one. More on the client and its availability over on Discord!
https://github.com/user-attachments/assets/7f4c0be2-003a-4270-8e7f-fad376f21a49
More improvements
- Self-hosting: a headless rclone backup sidecar, system-health improvements, and security hardening.
- AI and API: GPT 6.1 Sol, OpenAI-compatible provider controls and diagnostics, external-agent discovery, and expanded MCP tools.
- Localization: new and expanded translations across multiple languages.
Preview and distribution notes
Mobile debug/unsigned artifacts are for testing; production mobile distribution is separate. Ask nicely via Discord for TestFlight of the new Swift app if you’re OK paying $0.99/month later to support the efforts to keep this going. We’re almost out of AWS credits and moving to Render to be more frugal. :-)
Thank you to everyone contributing code, translations, testing, bug reports, and release feedback. This draft’s generated changelog includes 273 PR entries and 36 first-time contributors.
Mobile Debug Builds
This release includes debug builds of the mobile applications. Download from the Assets area below.
- Android APK: Debug build for testing on Android devices
- iOS Build: Unsigned iOS build (requires code signing for installation)
Note: These are debug builds intended for testing purposes. For production use, please build from source with proper signing credentials.
What’s Changed
- feat(goals): offer recording a spend where the user is standing by @buzzromain in https://github.com/we-promise/sure/pull/3215
- fix(goals): stop the first goal being told about earmarks it has none of by @buzzromain in https://github.com/we-promise/sure/pull/3216
- fix(holdings): a transfer must not set a cost basis by @buzzromain in https://github.com/we-promise/sure/pull/3154
- fix(binance): let go of an asset the wallet no longer holds by @buzzromain in https://github.com/we-promise/sure/pull/3234
- fix(holdings): an outbound transfer must not clear a cost basis by @buzzromain in https://github.com/we-promise/sure/pull/3237
- Fix/french locale typos by @jubbakka in https://github.com/we-promise/sure/pull/3228
- feat: Super Admins can Delete Users and Modify Families/Groups by @mr-u0b0dy in https://github.com/we-promise/sure/pull/2868
- Add canonical roadmap content by @atlas-maxjb in https://github.com/we-promise/sure/pull/2931
- fix(l10n): localize SureImport missing-reference messages by @Rowdy in https://github.com/we-promise/sure/pull/3266
- fix(l10n): localize SnapTrade device authorization by @Rowdy in https://github.com/we-promise/sure/pull/3283
- fix(l10n): localize trade activity labels by @Rowdy in https://github.com/we-promise/sure/pull/3282
- Add support for linking E*TRADE and other investment-only institutions by @terafin in https://github.com/we-promise/sure/pull/3271
- fix: localize German transaction selectors by @Rowdy in https://github.com/we-promise/sure/pull/3254
- security: throttle every credential-guessing endpoint, fix duplicate Rack::Attack middleware by @gfr-free in https://github.com/we-promise/sure/pull/3263
- fix(l10n): localize new chat default title by @Rowdy in https://github.com/we-promise/sure/pull/3256
- Add function-calling probe to detect tool-use support by @jjmata in https://github.com/we-promise/sure/pull/3255
- fix: Show category hierarchy in transaction picker/editor by @DataEnginr in https://github.com/we-promise/sure/pull/3292
- fix(transactions): dedupe tag filter for correct summary totals (#3174) by @jaysbeekay in https://github.com/we-promise/sure/pull/3290
- fix(pdf-vision): render PDFs with poppler-utils + surface a concrete admin failure reason by @jaysbeekay in https://github.com/we-promise/sure/pull/3275
- Fix first-user super-admin race by @atlas-maxjb in https://github.com/we-promise/sure/pull/3268
- feat(bills): schema and domain core for the bills subsystem by @winters27 in https://github.com/we-promise/sure/pull/3201
- Surface probe timeout separately from LLM request timeout on System Health by @jaysbeekay in https://github.com/we-promise/sure/pull/3276
- fix(accounts): keep the entered current balance when it differs from the opening one by @Demon-tk in https://github.com/we-promise/sure/pull/3301
- Show exact share count in the holding drawer by @JstnMcBrd in https://github.com/we-promise/sure/pull/3305
- fix(demo): stop the goal-seeding matrix crashing rake demo_data:default by @buzzromain in https://github.com/we-promise/sure/pull/3314
- fix(securities): fall back to direct chart lookup when Yahoo search returns nothing by @jaysbeekay in https://github.com/we-promise/sure/pull/3313
- feat(bills): the bills pages, calendar feed and in-page AI helpers by @winters27 in https://github.com/we-promise/sure/pull/3202
- fix(l10n): localize budget category dates by @Rowdy in https://github.com/we-promise/sure/pull/3315
- fix(l10n): localize admin SSO headings by @Rowdy in https://github.com/we-promise/sure/pull/3316
- feat(rules): add not-equal, does-not-contain, and is-not-empty condition operators by @ololonly in https://github.com/we-promise/sure/pull/2529
- Add configurable OpenAI request timeout by @jaysbeekay in https://github.com/we-promise/sure/pull/3304
- Clear Plaid reconnect status after successful import by @timkatz in https://github.com/we-promise/sure/pull/3319
- Refresh Plaid transactions during automatic syncs by @timkatz in https://github.com/we-promise/sure/pull/3320
- feat(hosting): universal headless rclone backup sidecar by @TheRodzz in https://github.com/we-promise/sure/pull/2875
- fix(l10n): localize import step labels by @Rowdy in https://github.com/we-promise/sure/pull/3322
- fix(l10n): localize Plaid add accounts action by @Rowdy in https://github.com/we-promise/sure/pull/3323
- feat(bills): assistant and MCP tools for bills by @winters27 in https://github.com/we-promise/sure/pull/3203
- fix(l10n): localize Lunchflow account setup by @Rowdy in https://github.com/we-promise/sure/pull/3330
- fix(l10n): localize unsupported rule labels by @Rowdy in https://github.com/we-promise/sure/pull/3329
- fix(hosting): consistent provider-block visibility + fix Twelve Data toggle bug by @gfr-free in https://github.com/we-promise/sure/pull/3333
- Add first-class Trade Republic support by @amariwan in https://github.com/we-promise/sure/pull/3168
- fix(l10n): localize SimpleFIN status summaries by @Rowdy in https://github.com/we-promise/sure/pull/3343
- build(deps): bump mail from 2.9.0 to 2.9.1 by @dependabot[bot] in https://github.com/we-promise/sure/pull/3347
- fix(l10n): localize Onchain wallet setup by @Rowdy in https://github.com/we-promise/sure/pull/3344
- feat(i18n): Support Portuguese European language and locale (pt-PT) by @pfbco in https://github.com/we-promise/sure/pull/3265
- fix(l10n): localize empty CoinStats wallet result by @Rowdy in https://github.com/we-promise/sure/pull/3355
- fix(l10n): localize Onchain wallet management by @Rowdy in https://github.com/we-promise/sure/pull/3354
- feat(ai): support OPENAI_EXTRA_HEADERS on the OpenAI-compatible provider by @frap129 in https://github.com/we-promise/sure/pull/3362
- fix(l10n): localize removed SSO identity recovery by @Rowdy in https://github.com/we-promise/sure/pull/3357
- fix(l10n): localize Lunchflow fallback errors by @Rowdy in https://github.com/we-promise/sure/pull/3358
- feat(accounts): group split transactions in account activity feed by @gfr-free in https://github.com/we-promise/sure/pull/3359
- fix(l10n): localize invalid Binance sync date by @Rowdy in https://github.com/we-promise/sure/pull/3369
- docs(hosting): document 512MB memory envelope and sample-data guidance by @jjmata in https://github.com/we-promise/sure/pull/3368
- Support QIF split transactions and account metadata by @sure-admin in https://github.com/we-promise/sure/pull/3348
- Make importmap audit best-effort for publishing by @sure-admin in https://github.com/we-promise/sure/pull/3372
- fix(transactions): prevent duplicate creation on double-submit by @gfr-free in https://github.com/we-promise/sure/pull/3338
- fix(transfers): prevent duplicate creation on double-submit by @gfr-free in https://github.com/we-promise/sure/pull/3342
- fix(l10n): localize OpenAI timeout settings by @Rowdy in https://github.com/we-promise/sure/pull/3370
- fix(l10n): localize bills page shell by @Rowdy in https://github.com/we-promise/sure/pull/3374
- feat(ai-health): explain vector store setup failures by @sure-admin in https://github.com/we-promise/sure/pull/3324
- fix(reports): stop Safari swallowing every click on the reports page by @AlexNovRS7 in https://github.com/we-promise/sure/pull/3365
- feat(ai): verify AI configuration and provider liveness from worker processes by @jaysbeekay in https://github.com/we-promise/sure/pull/3298
- fix(l10n): localize recurring occurrence feedback by @Rowdy in https://github.com/we-promise/sure/pull/3382
- fix(l10n): localize recurring allocation feedback by @Rowdy in https://github.com/we-promise/sure/pull/3380
- fix(transfers): hide disabled accounts from new transfer modal by @itsLeonB in https://github.com/we-promise/sure/pull/3376
- feat(transactions): cascade parent/subcategory checkboxes in the category filter by @gfr-free in https://github.com/we-promise/sure/pull/3356
- feat(forms): parse pasted formatted amounts in money fields by @Demon-tk in https://github.com/we-promise/sure/pull/3300
- fix(l10n): localize onchain wallet movement names by @Rowdy in https://github.com/we-promise/sure/pull/3388
- fix(ui): make whole list row clickable, not just the name text by @gfr-free in https://github.com/we-promise/sure/pull/3367
- fix(l10n): localize maintained reserve insights by @Rowdy in https://github.com/we-promise/sure/pull/3396
- Fix Wise incoming transfers by implementing Strong Customer Authentication by @oliveiraigorm in https://github.com/we-promise/sure/pull/3391
- fix(l10n): localize Trade Republic account setup by @Rowdy in https://github.com/we-promise/sure/pull/3399
- Add cumulative spending chart dashboard widget by @jjmata in https://github.com/we-promise/sure/pull/3404
- fix(l10n): localize transaction bill links by @Rowdy in https://github.com/we-promise/sure/pull/3406
- refactor(income-statement): share scoping SQL across all four query classes by @jjmata in https://github.com/we-promise/sure/pull/3408
- Consolidate repository instructions after auditing their history by @jjmata in https://github.com/we-promise/sure/pull/3409
- fix(l10n): localize Wise SCA guidance by @Rowdy in https://github.com/we-promise/sure/pull/3410
- fix(l10n): localize Wise SCA keypair results by @Rowdy in https://github.com/we-promise/sure/pull/3413
- fix(insights): project month-to-date spend over the whole month by @Demon-tk in https://github.com/we-promise/sure/pull/3424
- feat(rules): support multiple tags in the set transaction tags action by @gfr-free in https://github.com/we-promise/sure/pull/3397
- fix(wise): refuse an SCA private key when encryption is unavailable by @Holdner in https://github.com/we-promise/sure/pull/3415
- fix(wise): stub encryption in the SCA localization success test by @jjmata in https://github.com/we-promise/sure/pull/3437
- fix(l10n): localize account creation keyboard controls by @Rowdy in https://github.com/we-promise/sure/pull/3433
- Fix stale data warning overlap by @sure-admin in https://github.com/we-promise/sure/pull/3432
- fix(wise): require encrypted SCA key registration by @sure-admin in https://github.com/we-promise/sure/pull/3439
- Improve spending chart mobile layout by @jjmata in https://github.com/we-promise/sure/pull/3435
- fix(mcp): accept native-app redirect URIs during OAuth DCR by @WeekendSuperhero in https://github.com/we-promise/sure/pull/3431
- FIX: Refunds or credits incorrectly recorded as cc_payment by @Browndw4 in https://github.com/we-promise/sure/pull/3062
- fix(rules): keep dynamically added nested-attribute keys numeric by @jjmata in https://github.com/we-promise/sure/pull/3444
- feat(transactions): add “No merchant”/“Untagged” filter options by @gfr-free in https://github.com/we-promise/sure/pull/3135
- Align uncategorized Transactions filter with dashboard aggregate (fix #2592) by @jaysbeekay in https://github.com/we-promise/sure/pull/3293
- Fix repository-wide ERB lint failures by @timkatz in https://github.com/we-promise/sure/pull/3448
- fix(l10n): localize import template guidance by @Rowdy in https://github.com/we-promise/sure/pull/3458
- End spending comparison axis at selected month end by @jjmata in https://github.com/we-promise/sure/pull/3445
- fix(enable-banking): don’t let a payment wallet prefix claim the merchant by @albertinisg in https://github.com/we-promise/sure/pull/3460
- Add drag-to-select date range on balance charts by @Holdner in https://github.com/we-promise/sure/pull/2733
- feat(admin): show profile pictures in user management list by @JstnMcBrd in https://github.com/we-promise/sure/pull/3467
- Compare the same elapsed days in the spending widget header by @jaysbeekay in https://github.com/we-promise/sure/pull/3457
- feat(categorization): try naive Bayes before the LLM by @Demon-tk in https://github.com/we-promise/sure/pull/3465
- feat(transactions): align Uncategorized category filter with No merchant/Untagged pattern by @gfr-free in https://github.com/we-promise/sure/pull/3186
- Add native amortization schedules for loan accounts by @oliveiraigorm in https://github.com/we-promise/sure/pull/2984
- Fix parent budget overage and shared child status by @timkatz in https://github.com/we-promise/sure/pull/3463
- fix(rules): batch category/merchant/tag operand lookups in Family::DataImporter by @gfr-free in https://github.com/we-promise/sure/pull/3420
- fix(l10n): localize recurrence rule validation errors by @Rowdy in https://github.com/we-promise/sure/pull/3387
- fix(rules): batch operand lookups and map transaction_tag conditions in RuleImport by @gfr-free in https://github.com/we-promise/sure/pull/3419
- fix(rules): batch category/merchant/tag operand resolution in exports by @gfr-free in https://github.com/we-promise/sure/pull/3416
- fix(trade-republic): use canonical activity labels for order executions by @JstnMcBrd in https://github.com/we-promise/sure/pull/3468
- fix(auth): close remaining deactivated-user session/token gaps (post-#3131 rebase) by @gfr-free in https://github.com/we-promise/sure/pull/2890
- fix(l10n): localize German budget rollover labels by @Rowdy in https://github.com/we-promise/sure/pull/3470
- bugfix: Fix category ordering in the merge dialog by @DataEnginr in https://github.com/we-promise/sure/pull/3471
- Improve auto-categorization debug logging by @jjmata in https://github.com/we-promise/sure/pull/3479
- fix(l10n): localize German system health navigation by @Rowdy in https://github.com/we-promise/sure/pull/3477
- fix(i18n): complete French coverage for 1,544 untranslated keys by @Holdner in https://github.com/we-promise/sure/pull/3454
- feat(monobank): add monobank (UA) bank sync by @yaroslavshparuk in https://github.com/we-promise/sure/pull/3386
- fix(monobank): currencyCode is the operation currency, not the account’s by @yaroslavshparuk in https://github.com/we-promise/sure/pull/3495
- fix(l10n): localize German background job statistics by @Rowdy in https://github.com/we-promise/sure/pull/3486
- fix(l10n): localize German Sidekiq health warnings by @Rowdy in https://github.com/we-promise/sure/pull/3499
- fix: stop a missing exchange rate from failing a whole account, and make the error legible by @yaroslavshparuk in https://github.com/we-promise/sure/pull/3493
- docs: refresh outdated onboarding product guide copy by @jjmata in https://github.com/we-promise/sure/pull/3503
- fix(providers): honor the category matcher toggle for Up and monobank by @yaroslavshparuk in https://github.com/we-promise/sure/pull/3490
- Allow API transaction update to opt into sync protection (user_modified) by @colinedwardwood in https://github.com/we-promise/sure/pull/3483
- feat(prompts): Editable Built-In Prompt Overrides Per-Family by @dcicco in https://github.com/we-promise/sure/pull/3373
- fix: exclude stale provider holdings from investment views by @drink970082 in https://github.com/we-promise/sure/pull/3484
- security: consolidate deactivated-user auth enforcement by @gfr-free in https://github.com/we-promise/sure/pull/3504
- fixes Trading212 bugs reported in #3087 by @smurfpandey in https://github.com/we-promise/sure/pull/3090
- Fix Coinbase cryptocurrency holding precision by @jaysbeekay in https://github.com/we-promise/sure/pull/3456
- fix(l10n): localize German AI worker verification by @Rowdy in https://github.com/we-promise/sure/pull/3509
- fix(monobank): capitalize the brand name and show its logo tile by @yaroslavshparuk in https://github.com/we-promise/sure/pull/3521
- fix(l10n): localize German T-Invest logo notice by @Rowdy in https://github.com/we-promise/sure/pull/3520
- Fix onboarding guide asset paths by @jjmata in https://github.com/we-promise/sure/pull/3524
- feat: add “What’s new” release highlight popup by @jjmata in https://github.com/we-promise/sure/pull/3505
- fix(i18n): use the official Brandfetch name in settings and docs by @JstnMcBrd in https://github.com/we-promise/sure/pull/3528
- feat(providers): show Brandfetch logos on Bank Sync and Accounts by @JstnMcBrd in https://github.com/we-promise/sure/pull/3527
- fix(l10n): localize the German system health breadcrumb by @Rowdy in https://github.com/we-promise/sure/pull/3538
- fix(l10n): localize German AI diagnostic failure reasons by @Rowdy in https://github.com/we-promise/sure/pull/3530
- fix(insights): narrate LLM insight bodies in the family’s locale by @Radoslaw-Dabrowski in https://github.com/we-promise/sure/pull/3533
- fix(l10n): add missing Polish translations by @Radoslaw-Dabrowski in https://github.com/we-promise/sure/pull/3525
- Treat consented Plaid products as supported by @brianespinoza in https://github.com/we-promise/sure/pull/3537
- Add CoinSpot exchange support by @jaysbeekay in https://github.com/we-promise/sure/pull/3453
- Combine SimpleFIN holding lots into a single position by @brianespinoza in https://github.com/we-promise/sure/pull/3539
- fix(desktop): add report download & print handling by @Holdner in https://github.com/we-promise/sure/pull/3480
- Fetch Plaid liabilities for credit accounts of any subtype by @brianespinoza in https://github.com/we-promise/sure/pull/3531
- SimpleFIN: add a credit card balance sign override by @timkatz in https://github.com/we-promise/sure/pull/3243
- fix(categories): update avatar preview when picking a color by @JstnMcBrd in https://github.com/we-promise/sure/pull/3554
- Support remaining trade activity types in API by @jaysbeekay in https://github.com/we-promise/sure/pull/3297
- fix: scope account chart history and align inception dates by @nareddyt in https://github.com/we-promise/sure/pull/3508
- Expose cash flow reporting and secure push-device continuity by @jjmata in https://github.com/we-promise/sure/pull/3545
- feat(investments): add Cash Management Account subtype by @JstnMcBrd in https://github.com/we-promise/sure/pull/3532
- Fix holding cost basis to relieve sells under weighted-average method by @markschoof in https://github.com/we-promise/sure/pull/3560
- feat(accounts): add expand/collapse all and default-expanded groups to sidebar and dashboard by @ampersandru in https://github.com/we-promise/sure/pull/3551
- feat(loans): amortisation engine and variable-rate loans by @jaysbeekay in https://github.com/we-promise/sure/pull/3473
- Add cash_flow Sankey API and instrumented dashboard preview by @jjmata in https://github.com/we-promise/sure/pull/3558
- feat(fio): add Fio banka (CZ) bank sync by @janbuchar in https://github.com/we-promise/sure/pull/3523
- Skip investment accounts when detecting bills and income by @brianespinoza in https://github.com/we-promise/sure/pull/3565
- fix: mask IBAN to last 4 characters in Lunch Flow account selection by @gfr-free in https://github.com/we-promise/sure/pull/3574
- fix(snaptrade): trust reported trade amount and import trade fees by @JstnMcBrd in https://github.com/we-promise/sure/pull/3507
- Add hosted iOS push diagnostics and delivery safeguards by @jjmata in https://github.com/we-promise/sure/pull/3541
- fix(providers): use ProviderLogo for CoinSpot, Fio and the generator by @JstnMcBrd in https://github.com/we-promise/sure/pull/3581
- fix(providers): restore deletion flag when DestroyJob enqueue fails by @jaysbeekay in https://github.com/we-promise/sure/pull/3562
- Release the transfer “unknown” cost basis once the position is closed by @markschoof in https://github.com/we-promise/sure/pull/3567
- fix(providers): move FioItem#destroy_later onto DestroyableLater by @jjmata in https://github.com/we-promise/sure/pull/3584
- Improve Sankey preview comparison and feedback by @jjmata in https://github.com/we-promise/sure/pull/3585
- feat(mcp): add create_transaction and delete_transaction tools by @ampersandru in https://github.com/we-promise/sure/pull/3542
- Roll up Investments panel holdings by security with portfolio weight by @bittensorrider in https://github.com/we-promise/sure/pull/2927
- Fix Codespaces login CSRF origin validation by @jjmata in https://github.com/we-promise/sure/pull/3610
- Fix EODHD Warsaw (XWAR) prices labelled as USD by @bittensorrider in https://github.com/we-promise/sure/pull/3141
- Fix E*Trade cost_basis stored as per-share when total by @alandtse in https://github.com/we-promise/sure/pull/3619
- docs: use DestroyableLater in provider generator guide by @janbuchar in https://github.com/we-promise/sure/pull/3620
- fix(realie): support the v3 nested parcel record by @skitchbeatz in https://github.com/we-promise/sure/pull/3627
- Convert a disposal’s proceeds before subtracting its cost basis by @jaysbeekay in https://github.com/we-promise/sure/pull/3616
- Include
.sure-versionin PostHog events by @jjmata in https://github.com/we-promise/sure/pull/3628 - feat: add Mansa API provider for NGX (Nigerian Exchange) securities by @thatkazuk1 in https://github.com/we-promise/sure/pull/3629
- fix(desktop): save attachment downloads and confirm them in the app by @Holdner in https://github.com/we-promise/sure/pull/3571
- Let household members own provider connections (Plaid) by @brianespinoza in https://github.com/we-promise/sure/pull/3613
- Add a money-weighted return calculator by @jaysbeekay in https://github.com/we-promise/sure/pull/3611
- fix(demo): let the demo data reset clear the demo family it created by @Holdner in https://github.com/we-promise/sure/pull/3635
- fix(transfers): tighten cross-currency auto-match and exclude manual accounts by @jaysbeekay in https://github.com/we-promise/sure/pull/3309
- fix: Render “Uncategorized” option as badge in transaction category selector by @alessiocappa in https://github.com/we-promise/sure/pull/3641
- fix: Make “Insight” button visible on mobile by @alessiocappa in https://github.com/we-promise/sure/pull/2691
- fix: Add border for logos in investments widget by @alessiocappa in https://github.com/we-promise/sure/pull/3642
- Filter Trade Republic PIN from request logs by @nielseulink in https://github.com/we-promise/sure/pull/3659
- Prefer prominent labels in the new Sankey chart by @jjmata in https://github.com/we-promise/sure/pull/3614
- Add FinanceKit device publisher by @jjmata in https://github.com/we-promise/sure/pull/3633
- Add an asset classification schema to securities by @jaysbeekay in https://github.com/we-promise/sure/pull/3608
- fix: support all snaptrade sandbox transaction types and zero-cash corporate actions by @nareddyt in https://github.com/we-promise/sure/pull/3653
- Add Apple Wallet settings, diagnostics, and realistic demo data by @jjmata in https://github.com/we-promise/sure/pull/3684
- Add Jev (TypeSafe) as a transaction-categorization provider by @thewillwilson in https://github.com/we-promise/sure/pull/3660
- fix(enable-banking): respect ASPSP consent duration instead of hardcoding 90 days by @gfr-free in https://github.com/we-promise/sure/pull/3038
- fix(ai): treat blank OPENAI_MODEL as unset when resolving the model by @joshiarnav in https://github.com/we-promise/sure/pull/3601
- Discover external assistant agents from models endpoint by @jjmata in https://github.com/we-promise/sure/pull/3674
- Stop FinanceKit data disagreements from ending ingestion by @jjmata in https://github.com/we-promise/sure/pull/3678
- Fix trade detail Buy/Sell type selection by @nielseulink in https://github.com/we-promise/sure/pull/3668
- Export and import provider-assigned merchants, reuse existing taxonomy on Sure import by @mikaelhm in https://github.com/we-promise/sure/pull/3671
- ProviderMerchant does not support color by @mikaelhm in https://github.com/we-promise/sure/pull/3725
- feat(bills): custom repeat interval, dated search rows and FR price notice fix by @Holdner in https://github.com/we-promise/sure/pull/3636
- Remove dead credit card overview partial and locale keys by @jjmata in https://github.com/we-promise/sure/pull/3710
- fix(plaid): keep the bank’s description in the transaction name, and surface the provider metadata behind it by @WeekendSuperhero in https://github.com/we-promise/sure/pull/3450
- Complete ru, uk and tr translations by @thewillwilson in https://github.com/we-promise/sure/pull/3689
- Make on-chain wallet transfers cash-neutral by @bmaccafferty in https://github.com/we-promise/sure/pull/3703
- Mention passwords in the Trade Republic login labels by @nielseulink in https://github.com/we-promise/sure/pull/3737
- Improve Trade Republic sync: routing, tickers, fees, and timeline quality by @nielseulink in https://github.com/we-promise/sure/pull/3669
- Derive transfer match FX rates via the family currency by @shkarinn in https://github.com/we-promise/sure/pull/3701
- Fix Trade Republic QR login stalling after the scan by @nielseulink in https://github.com/we-promise/sure/pull/3738
- fix(ai): send OpenAI-compatible tool payloads that strict endpoints accept by @yaroslavshparuk in https://github.com/we-promise/sure/pull/3727
- build(deps): bump rubyzip from 2.4.1 to 3.4.0 by @dependabot[bot] in https://github.com/we-promise/sure/pull/3732
- fix(transactions): stop merchant and security logos being squeezed when the row is tight by @connecht in https://github.com/we-promise/sure/pull/3729
- fix(enable-banking): add missing booked balance types to priority list by @gfr-free in https://github.com/we-promise/sure/pull/3739
- Show tags in the transaction list with an inline picker by @mikaelhm in https://github.com/we-promise/sure/pull/3734
- feat(loans): payoff projection and the loan balance chart by @jaysbeekay in https://github.com/we-promise/sure/pull/3474
- feat(ui): make preferences country selector searchable by @felixmuinde in https://github.com/we-promise/sure/pull/3578
- Complete ca translations by @thewillwilson in https://github.com/we-promise/sure/pull/3691
- feat(mobile): add Swedish (sv) localization by @lixenstrand in https://github.com/we-promise/sure/pull/3750
- fix(i18n): improve Russian localization by @omnizs38 in https://github.com/we-promise/sure/pull/3763
- Keep Trade Republic cash balance intact for open orders by @nielseulink in https://github.com/we-promise/sure/pull/3760
- fix(yahoo): append the exchange suffix for European listings by @dgsardina in https://github.com/we-promise/sure/pull/3769
- Book Trade Republic trades on the linked cash account by @nielseulink in https://github.com/we-promise/sure/pull/3770
- Raise test_system CI timeout to 15 minutes by @gfr-free in https://github.com/we-promise/sure/pull/3785
- Support multiple Trade Republic connections per family by @gfr-free in https://github.com/we-promise/sure/pull/3754
- fix(yahoo): don’t send cookie/crumb on the chart endpoint (fixes persistent 429 price outages) by @joaocbatista in https://github.com/we-promise/sure/pull/3795
- Point ViewComponent 4 at LookbooksController so previews render by @gariasf in https://github.com/we-promise/sure/pull/3810
- Name the bills calendar link for where it goes by @gariasf in https://github.com/we-promise/sure/pull/3803
- Fix goal form amount width and consume dialog amount input by @gariasf in https://github.com/we-promise/sure/pull/3801
- Add the missing Up tagline to the Bank Sync provider list by @gariasf in https://github.com/we-promise/sure/pull/3802
- Style file inputs through the form builder by @gariasf in https://github.com/we-promise/sure/pull/3804
- Require write access to a trade’s transfer account by @gfr-free in https://github.com/we-promise/sure/pull/3816
- Add pt-BR locale for chats view by @fabricioctelles in https://github.com/we-promise/sure/pull/3837
- Add DS::Table and move four hand-built tables onto it by @gariasf in https://github.com/we-promise/sure/pull/3805
- Use absolute keys for the four UI component strings that never resolved by @gariasf in https://github.com/we-promise/sure/pull/3808
- Wait for the save to land before navigating in two system tests by @gariasf in https://github.com/we-promise/sure/pull/3809
- Let themed utilities reach pseudo-elements in dark mode by @gariasf in https://github.com/we-promise/sure/pull/3817
- List connected Wise and CoinSpot under Your connections by @gariasf in https://github.com/we-promise/sure/pull/3834
- Wrap long URLs in the bank sync setup steps by @gariasf in https://github.com/we-promise/sure/pull/3823
- Show the hint passed to form fields as help_text by @gariasf in https://github.com/we-promise/sure/pull/3822
- Render confirm dialog bodies as text by @gfr-free in https://github.com/we-promise/sure/pull/3813
- Load system health AI checks lazily and finish its DS pass by @gariasf in https://github.com/we-promise/sure/pull/3828
- Stop Trade Republic push-login polling from looping by @nielseulink in https://github.com/we-promise/sure/pull/3765
- Keep rule-assigned categories on Trade Republic cash deposits by @nielseulink in https://github.com/we-promise/sure/pull/3791
- Resolve Trade Republic crypto to shared crypto securities by @nielseulink in https://github.com/we-promise/sure/pull/3806
- Import exchange rates for foreign security price currencies by @nielseulink in https://github.com/we-promise/sure/pull/3812
- feat(accounts): filter an account’s activity to uncategorized transactions by @scragnog in https://github.com/we-promise/sure/pull/3797
- Import Trade Republic crypto into a separate Crypto account by @nielseulink in https://github.com/we-promise/sure/pull/3807
- Fix demo family refresh retry loop by @sure-admin in https://github.com/we-promise/sure/pull/3839
- Stop showing connections with rejected credentials as Connected by @gariasf in https://github.com/we-promise/sure/pull/3854
- Stop the Plaid refresh check from loading dalli by @gariasf in https://github.com/we-promise/sure/pull/3846
- Accept each TOTP code only once by @gfr-free in https://github.com/we-promise/sure/pull/3830
- fix(plaid): delete imported transactions that Plaid retracts by @DTTerastar in https://github.com/we-promise/sure/pull/3852
- Filter one-time codes from logs and hide raw DB errors from the API by @gfr-free in https://github.com/we-promise/sure/pull/3831
- Remove dead account identifier columns (Questrade/Redbark/Monobank) by @gfr-free in https://github.com/we-promise/sure/pull/3827
- fix(rules): stop “Dismiss” on the rule prompt silently snoozing all prompts by @scragnog in https://github.com/we-promise/sure/pull/3773
- Step through Reports periods with the arrow keys by @gariasf in https://github.com/we-promise/sure/pull/3855
- Fix patch release branch naming by @sure-admin in https://github.com/we-promise/sure/pull/3863
- Support GPT-6 Sol and GPT-6.1 Sol in the native OpenAI provider by @vlnd0 in https://github.com/we-promise/sure/pull/3771
- Let self-hosted super admins opt into the demo family refresh by @jjmata in https://github.com/we-promise/sure/pull/3859
- Fix Trade Republic cash kinds, activity labels and trade settlements by @nielseulink in https://github.com/we-promise/sure/pull/3800
- Align the bank sync drawers with the Up panel by @gariasf in https://github.com/we-promise/sure/pull/3821
- Deploy alpha images to Render demo by @sure-admin in https://github.com/we-promise/sure/pull/3865
- Make a blank goal earmark read as a choice, and editable in privacy mode by @gariasf in https://github.com/we-promise/sure/pull/3857
- Rescue #1775: loans overview new insights (editable fields, amortization, editable-field insights) by @jaysbeekay in https://github.com/we-promise/sure/pull/3327
- fix(ibkr): anchor the balance on the statement’s date, not on today by @dgsardina in https://github.com/we-promise/sure/pull/3815
- feat(transactions): filter by AI / AI history categorization status by @joshiarnav in https://github.com/we-promise/sure/pull/3603
- fix(kraken): keep a transfer fee out of the movement it is charged on by @dgsardina in https://github.com/we-promise/sure/pull/3759
New Contributors
- @mr-u0b0dy made their first contribution in https://github.com/we-promise/sure/pull/2868
- @Rowdy made their first contribution in https://github.com/we-promise/sure/pull/3266
- @terafin made their first contribution in https://github.com/we-promise/sure/pull/3271
- @jaysbeekay made their first contribution in https://github.com/we-promise/sure/pull/3290
- @Demon-tk made their first contribution in https://github.com/we-promise/sure/pull/3301
- @JstnMcBrd made their first contribution in https://github.com/we-promise/sure/pull/3305
- @ololonly made their first contribution in https://github.com/we-promise/sure/pull/2529
- @TheRodzz made their first contribution in https://github.com/we-promise/sure/pull/2875
- @amariwan made their first contribution in https://github.com/we-promise/sure/pull/3168
- @pfbco made their first contribution in https://github.com/we-promise/sure/pull/3265
- @frap129 made their first contribution in https://github.com/we-promise/sure/pull/3362
- @AlexNovRS7 made their first contribution in https://github.com/we-promise/sure/pull/3365
- @oliveiraigorm made their first contribution in https://github.com/we-promise/sure/pull/3391
- @WeekendSuperhero made their first contribution in https://github.com/we-promise/sure/pull/3431
- @albertinisg made their first contribution in https://github.com/we-promise/sure/pull/3460
- @yaroslavshparuk made their first contribution in https://github.com/we-promise/sure/pull/3386
- @dcicco made their first contribution in https://github.com/we-promise/sure/pull/3373
- @Radoslaw-Dabrowski made their first contribution in https://github.com/we-promise/sure/pull/3533
- @brianespinoza made their first contribution in https://github.com/we-promise/sure/pull/3537
- @nareddyt made their first contribution in https://github.com/we-promise/sure/pull/3508
- @markschoof made their first contribution in https://github.com/we-promise/sure/pull/3560
- @janbuchar made their first contribution in https://github.com/we-promise/sure/pull/3523
- @alandtse made their first contribution in https://github.com/we-promise/sure/pull/3619
- @skitchbeatz made their first contribution in https://github.com/we-promise/sure/pull/3627
- @thatkazuk1 made their first contribution in https://github.com/we-promise/sure/pull/3629
- @nielseulink made their first contribution in https://github.com/we-promise/sure/pull/3659
- @joshiarnav made their first contribution in https://github.com/we-promise/sure/pull/3601
- @bmaccafferty made their first contribution in https://github.com/we-promise/sure/pull/3703
- @shkarinn made their first contribution in https://github.com/we-promise/sure/pull/3701
- @connecht made their first contribution in https://github.com/we-promise/sure/pull/3729
- @lixenstrand made their first contribution in https://github.com/we-promise/sure/pull/3750
- @omnizs38 made their first contribution in https://github.com/we-promise/sure/pull/3763
- @dgsardina made their first contribution in https://github.com/we-promise/sure/pull/3769
- @fabricioctelles made their first contribution in https://github.com/we-promise/sure/pull/3837
- @scragnog made their first contribution in https://github.com/we-promise/sure/pull/3797
- @DTTerastar made their first contribution in https://github.com/we-promise/sure/pull/3852
Full Changelog: https://github.com/we-promise/sure/compare/v0.7.4…v0.7.5