Update ghcr.io/we-promise/sure Docker tag to v0.7.6 #31

Open
renovate-bot wants to merge 1 commit from renovate/ghcr.io-we-promise-sure-0.x into master
Collaborator

This PR contains the following updates:

Package Update Change
ghcr.io/we-promise/sure patch 0.7.4-rc.3 → 0.7.6-rc.3

Release Notes

we-promise/sure (ghcr.io/we-promise/sure)

v0.7.6: Sure v0.7.6 — Clearer spending, smarter rules, and better backups

Compare Source

With this monthly release (we haven't missed that cadence in more than a year!) Sure now helps you understand what changed in your spending and see your loans in greater detail. From the balance remaining to how each payment divides between principal, interest and insurance. It also brings more control over transaction categorization, improvements to Bills, and expanded backup and restore tools.

See what's different in your spending

The new Spending vs normal visualization compares your spending with your own history. A category treemap shows where your money went, while a ranked list highlights what increased or decreased. Open a category to explore the transactions behind the change. Enable preview features to try it! 🚀

image

See where your money went—and which categories changed most compared with your usual spending.

Get a clearer picture of your loans

Loan accounts now go beyond a remaining balance. See your loan graphically alongside the original repayment schedule and a projection from today, with a breakdown of principal and interest over the life of the loan.

The expanded overview brings together your interest rate, monthly payment, term, insurance costs and projected payoff date. Explore the repayment schedule payment by payment; for adjustable-rate loans, recorded rate changes are reflected in the schedule.

image

Follow your mortgage from today's balance to projected payoff, with principal, interest and repayment details in one place.

Control over categorization, and more!

Test the token-free Bayes classifier against your own history, inspect its results, and tune its settings. Merchant matching and category classification now participate in the ordered rules list. Drag rules to choose their order, use Stop processing for exceptions, and split recurring transactions by amount or percentage.

Hide dashboard widgets you do not need, drag accounts into your preferred order, and filter account activity by category, tag, merchant or transaction type. Amount fields support calculator expressions and comma decimals. The Flutter mobile app gains a read-only Budgets screen with month navigation, category progress, rollover amounts and transaction drill-down.

The expanded backup tooling covers the database, local uploads, configuration and version information, with restore and rollback workflows, scheduled backups and optional off-site copies. It builds on the database-only backup sidecar from 0.7.5.

Uploads stored in external object storage are not included and need their own backup. Backup folders contain configuration secrets and must be kept private.

Product-improvement monitoring

⚠️ We added monitoring to help improve features such as the new Sankey chart and to understand how they are used. Self-hosters can turn off this anonymous product-improvement monitoring by setting POSTHOG_FEEDBACK_ENABLED=false in the environment. ⚠️

Plus ...
  • Goals: fund a goal across currencies, with original and converted amounts and explicit warnings when exchange rates are missing.
  • Bills and cards: clearer Bills drawers, payment flows and overdue states; a credit-card statement-cycle overview shows the last closed statement, spending since then and the payment due date—not automatic card-payment bills.
  • Insights: consistent, fact-based text without LLM narration calls; Dig in with AI prepares an editable Assistant question for you to send.
  • Connections: Chimnie for UK property valuations, plus Polkadot and Cosmos Hub wallet tracking.
  • Investments and sync: stock-split handling, improved trade-fee accounting, broader Trade Republic history and bond support, and fixes across Kraken, Plaid, Enable Banking, SnapTrade and other providers.
  • Transfers: review pending matches, turn off auto-matching, and improve matching on confirmed cross-currency routes.
  • API and external assistants: transaction-split endpoints, richer transaction fields, more category and transfer tools, and rule tools with a mandatory preview.
  • Privacy and access: tighter account-sharing enforcement, file-access checks, guest restrictions and session handling.

Thank you to everyone contributing code, testing, bug reports and feedback.

What's Changed
New Contributors

Full Changelog: https://github.com/we-promise/sure/compare/v0.7.5...v0.7.6

v0.7.5: Sure v0.7.5 - Bills, connections, and deeper portfolio insights

Compare Source

Brand 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!

image

Calendar:

image

Paycheck planning:

image
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
New Contributors

Full Changelog: https://github.com/we-promise/sure/compare/v0.7.4...v0.7.5


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/we-promise/sure](https://github.com/we-promise/sure) | patch | `0.7.4-rc.3` → `0.7.6-rc.3` | --- ### Release Notes <details> <summary>we-promise/sure (ghcr.io/we-promise/sure)</summary> ### [`v0.7.6`](https://github.com/we-promise/sure/releases/tag/v0.7.6): Sure v0.7.6 — Clearer spending, smarter rules, and better backups [Compare Source](https://github.com/we-promise/sure/compare/v0.7.5...v0.7.6) With this monthly release (we haven't missed that cadence in more than a year!) Sure now helps you understand what changed in your spending and see your loans in greater detail. From the balance remaining to how each payment divides between principal, interest and insurance. It also brings more control over transaction categorization, improvements to Bills, and expanded backup and restore tools. ##### See what's different in your spending The new [**Spending vs normal**](https://github.com/we-promise/sure/pull/4002) visualization compares your spending with your own history. A category treemap shows where your money went, while a ranked list highlights what increased or decreased. Open a category to explore the transactions behind the change. Enable preview features to try it! 🚀 <img width="1275" height="604" alt="image" src="https://github.com/user-attachments/assets/e3f2cc91-154e-4b0a-a7a2-5f6cfb2d20a8" /> *See where your money went—and which categories changed most compared with your usual spending.* ##### Get a clearer picture of your loans [**Loan accounts**](https://github.com/we-promise/sure/pull/3474) now go beyond a remaining balance. See your loan graphically alongside the original repayment schedule and a projection from today, with a breakdown of principal and interest over the life of the loan. The expanded overview brings together your interest rate, monthly payment, term, insurance costs and projected payoff date. Explore the [**repayment schedule**](https://github.com/we-promise/sure/pull/3473) payment by payment; for adjustable-rate loans, recorded rate changes are reflected in the schedule. <img width="1440" height="1050" alt="image" src="https://github.com/user-attachments/assets/207c537b-46a9-4795-a80e-b562ee9b088d" /> *Follow your mortgage from today's balance to projected payoff, with principal, interest and repayment details in one place.* ##### Control over categorization, and more! Test the token-free [**Bayes classifier**](https://github.com/we-promise/sure/pull/4310) against your own history, inspect its results, and tune its settings. Merchant matching and category classification now participate in the ordered rules list. Drag rules to choose their order, use [**Stop processing**](https://github.com/we-promise/sure/pull/4013) for exceptions, and split recurring transactions by amount or percentage. Hide dashboard widgets you do not need, drag accounts into your preferred order, and filter account activity by category, tag, merchant or transaction type. Amount fields support calculator expressions and comma decimals. The Flutter mobile app gains a read-only [**Budgets**](https://github.com/we-promise/sure/pull/4426) screen with month navigation, category progress, rollover amounts and transaction drill-down. The expanded [**backup tooling**](https://github.com/we-promise/sure/pull/3909) covers the database, local uploads, configuration and version information, with restore and rollback workflows, scheduled backups and optional off-site copies. It builds on the database-only backup sidecar from 0.7.5. Uploads stored in external object storage are not included and need their own backup. Backup folders contain configuration secrets and must be kept private. ##### Product-improvement monitoring ⚠️ We added monitoring to help improve features such as the new Sankey chart and to understand how they are used. Self-hosters can turn off this anonymous product-improvement monitoring by setting `POSTHOG_FEEDBACK_ENABLED=false` in the environment. ⚠️ ##### Plus ... - [**Goals:**](https://github.com/we-promise/sure/pull/3974) fund a goal across currencies, with original and converted amounts and explicit warnings when exchange rates are missing. - [**Bills**](https://github.com/we-promise/sure/pull/4098) **and** [**cards:**](https://github.com/we-promise/sure/pull/4270) clearer Bills drawers, payment flows and overdue states; a credit-card statement-cycle overview shows the last closed statement, spending since then and the payment due date—not automatic card-payment bills. - [**Insights:**](https://github.com/we-promise/sure/pull/4239) consistent, fact-based text without LLM narration calls; [**Dig in with AI**](https://github.com/we-promise/sure/pull/4239) prepares an editable Assistant question for you to send. - [**Connections:**](https://github.com/we-promise/sure/pull/4135) Chimnie for UK property valuations, plus Polkadot and Cosmos Hub wallet tracking. - [**Investments and sync:**](https://github.com/we-promise/sure/pull/3850) stock-split handling, improved trade-fee accounting, broader Trade Republic history and bond support, and fixes across Kraken, Plaid, Enable Banking, SnapTrade and other providers. - [**Transfers:**](https://github.com/we-promise/sure/pull/3034) review pending matches, turn off auto-matching, and improve matching on confirmed cross-currency routes. - [**API and external assistants:**](https://github.com/we-promise/sure/pull/4117) transaction-split endpoints, richer transaction fields, more category and transfer tools, and rule tools with a mandatory preview. - [**Privacy and access:**](https://github.com/we-promise/sure/pull/4004) tighter account-sharing enforcement, file-access checks, guest restrictions and session handling. Thank you to everyone contributing code, testing, bug reports and feedback. ##### What's Changed - Fix Disconnect and saves in Bank sync connection rows by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3844](https://github.com/we-promise/sure/pull/3844) - Make "Really free" read as the cash panel's answer by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3878](https://github.com/we-promise/sure/pull/3878) - Update the insights lightbulb badge live on dismiss and refresh by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3880](https://github.com/we-promise/sure/pull/3880) - Give Bills' Next up strip a focus ring and one padding scale by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3877](https://github.com/we-promise/sure/pull/3877) - Give each Income plan period one hero figure by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3879](https://github.com/we-promise/sure/pull/3879) - Let the third-currency reports test run on a month's first two days by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3902](https://github.com/we-promise/sure/pull/3902) - fix(transactions): cache only IDs of upcoming recurring transactions by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3907](https://github.com/we-promise/sure/pull/3907) - Let users hide dashboard widgets from a Customize mode by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3860](https://github.com/we-promise/sure/pull/3860) - Open bills in the drawer instead of expanding the row by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3885](https://github.com/we-promise/sure/pull/3885) - feat(transactions): create a category from the list's quick category picker by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;3772](https://github.com/we-promise/sure/pull/3772) - Fix demo loan schedules inside generation transactions by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3933](https://github.com/we-promise/sure/pull/3933) - Define date.formats.short\_with\_year for every locale by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3918](https://github.com/we-promise/sure/pull/3918) - Show a dated bill row's due date where its rail is hidden by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3901](https://github.com/we-promise/sure/pull/3901) - Show the Income plan AI chips only when there is a plan by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3917](https://github.com/we-promise/sure/pull/3917) - Hide the bills month pulse and AI prompts on an empty page by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3905](https://github.com/we-promise/sure/pull/3905) - Fix Back for drawers, modals, the period picker and URL rewrites by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3886](https://github.com/we-promise/sure/pull/3886) - Stack the bills pay-period band on narrow lists by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3928](https://github.com/we-promise/sure/pull/3928) - Keep bills banner and notices to the bills the page lists by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3922](https://github.com/we-promise/sure/pull/3922) - Money paste follow-ups: separator hint and symbol drift test by [@&#8203;BernatSR](https://github.com/BernatSR) in [#&#8203;3882](https://github.com/we-promise/sure/pull/3882) - Fix Bills locale test to target the occurrence drawer link by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;3938](https://github.com/we-promise/sure/pull/3938) - Use the config key Rails documents, so a local run comes back clean by [@&#8203;mikaelhm](https://github.com/mikaelhm) in [#&#8203;3910](https://github.com/we-promise/sure/pull/3910) - Fix Stripe error on demo family deletion by [@&#8203;sentry](https://github.com/sentry)\[bot] in [#&#8203;3896](https://github.com/we-promise/sure/pull/3896) - Keep the money field's currency handler next to the transaction form's action by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3916](https://github.com/we-promise/sure/pull/3916) - fix(kraken): a crypto ledger row moves units, not cash by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;3875](https://github.com/we-promise/sure/pull/3875) - fix(onchain): let Track selected assets submit on self-hosted installs by [@&#8203;ly0va](https://github.com/ly0va) in [#&#8203;3940](https://github.com/we-promise/sure/pull/3940) - fix(transactions): stop Cancel in Convert to trade from converting by [@&#8203;ly0va](https://github.com/ly0va) in [#&#8203;3941](https://github.com/we-promise/sure/pull/3941) - Bump Pipelock CI action to v3.6.0 by [@&#8203;luckyPipewrench](https://github.com/luckyPipewrench) in [#&#8203;3951](https://github.com/we-promise/sure/pull/3951) - Add Hosted usage overview and daily web preview event by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3939](https://github.com/we-promise/sure/pull/3939) - fix: remember exact release highlight acknowledgements by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;3961](https://github.com/we-promise/sure/pull/3961) - Give the bills overview one focus ring and readable autopay rows by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3911](https://github.com/we-promise/sure/pull/3911) - Hide the bills month pulse on a page of only paused bills by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3923](https://github.com/we-promise/sure/pull/3923) - Show a bill row's verb only when the bill needs you now by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3947](https://github.com/we-promise/sure/pull/3947) - fix(enable\_banking): tell id-less rows that share a content hash apart by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;3913](https://github.com/we-promise/sure/pull/3913) - Revert "fix(enable\_banking): tell id-less rows that share a content hash apart" by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3982](https://github.com/we-promise/sure/pull/3982) - docs: show the migration version the provider generator actually emits by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3622](https://github.com/we-promise/sure/pull/3622) - feat(ai): support Gemini 3 models and preserve tool call thought signatures by [@&#8203;nareddyt](https://github.com/nareddyt) in [#&#8203;3979](https://github.com/we-promise/sure/pull/3979) - Line bill rows up with their headers and stack review rows on phones by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3921](https://github.com/we-promise/sure/pull/3921) - Give every bill row one date rail and one subline order by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3955](https://github.com/we-promise/sure/pull/3955) - Cover the short paycheck's legend, which keys only its shortfall by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4011](https://github.com/we-promise/sure/pull/4011) - Stop calling a paused bill's leftover overdue anywhere by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3971](https://github.com/we-promise/sure/pull/3971) - Fold the bill's page into its drawer by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3981](https://github.com/we-promise/sure/pull/3981) - Build the bills notices and review queues like the bill sections by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3957](https://github.com/we-promise/sure/pull/3957) - Make small balance movements legible in time-series charts. by [@&#8203;joaocbatista](https://github.com/joaocbatista) in [#&#8203;3906](https://github.com/we-promise/sure/pull/3906) - fix(plaid): hold the exchange when re-linking a connected institution by [@&#8203;cgmccurdy](https://github.com/cgmccurdy) in [#&#8203;3658](https://github.com/we-promise/sure/pull/3658) - fix(kraken): space out requests against the private endpoint rate limit by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;3756](https://github.com/we-promise/sure/pull/3756) - fix(kraken): a buy is money out and a sell is money in, not the reverse by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;3757](https://github.com/we-promise/sure/pull/3757) - fix(crypto): open an exchange account at zero, dated before its history, in the family currency by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;3789](https://github.com/we-promise/sure/pull/3789) - feat(ai-health): let admins set the health check timeout under Self-Hosting by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4019](https://github.com/we-promise/sure/pull/4019) - Enqueue scheduled cron jobs as ActiveJob payloads by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3768](https://github.com/we-promise/sure/pull/3768) - Allow transaction-to-trade conversion for crypto exchange accounts by [@&#8203;BeastOrange](https://github.com/BeastOrange) in [#&#8203;3936](https://github.com/we-promise/sure/pull/3936) - Fix double-counted entry when its date moves later by [@&#8203;jubbakka](https://github.com/jubbakka) in [#&#8203;3967](https://github.com/we-promise/sure/pull/3967) - Rebuild the account from the submission when a create fails late by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3733](https://github.com/we-promise/sure/pull/3733) - Fix Income plan with unknown cash balance by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;3868](https://github.com/we-promise/sure/pull/3868) - fix(sync): keep a locked date and amount when a provider sync re-imports a transaction by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3989](https://github.com/we-promise/sure/pull/3989) - Show what each scheduled payment is made of in the loan chart tooltip by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4006](https://github.com/we-promise/sure/pull/4006) - Prevent guests from mutating family configuration by [@&#8203;ryandnurh](https://github.com/ryandnurh) in [#&#8203;4004](https://github.com/we-promise/sure/pull/4004) - Keep the native currency in transfer-only daily totals by [@&#8203;BeastOrange](https://github.com/BeastOrange) in [#&#8203;3937](https://github.com/we-promise/sure/pull/3937) - fix(imports): require account write access to publish or revert an import by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3998](https://github.com/we-promise/sure/pull/3998) - fix(enable\_banking): bind the OAuth state to the browser session by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3996](https://github.com/we-promise/sure/pull/3996) - fix(currencies): add USDT entry to config/currencies.yml ([#&#8203;3949](https://github.com/we-promise/sure/issues/3949)) by [@&#8203;0xifarouk](https://github.com/0xifarouk) in [#&#8203;3950](https://github.com/we-promise/sure/pull/3950) - Start linked investment charts at the pre-activity balance by [@&#8203;ryandnurh](https://github.com/ryandnurh) in [#&#8203;4009](https://github.com/we-promise/sure/pull/4009) - feat(categories): choose a parent when creating a category inline by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;3774](https://github.com/we-promise/sure/pull/3774) - fix(rules): offer the rule prompt unless an existing rule already covers the transaction by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;3796](https://github.com/we-promise/sure/pull/3796) - feat(dashboard): sort the preview cash-flow Sankey by amount by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;3798](https://github.com/we-promise/sure/pull/3798) - feat(mcp): add set\_opening\_balance tool by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;3820](https://github.com/we-promise/sure/pull/3820) - fix(recurring): prevent N+1 in GenerateRecurringOccurrencesJob by [@&#8203;sentry](https://github.com/sentry)\[bot] in [#&#8203;4024](https://github.com/we-promise/sure/pull/4024) - fix(holdings): an acquisition fee is part of what the position cost by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;3758](https://github.com/we-promise/sure/pull/3758) - fix(kraken): one security per asset, not one per trading pair by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;4023](https://github.com/we-promise/sure/pull/4023) - Allow categorizing investment/loan transfer transactions by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3719](https://github.com/we-promise/sure/pull/3719) - fix(plaid): anchor an investment balance on the holdings' price date by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;3874](https://github.com/we-promise/sure/pull/3874) - feat(sync): warn when the balance anchor is dated away from the holdings by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;3876](https://github.com/we-promise/sure/pull/3876) - fix(bills): match recurring transfers to the transfers that pay them by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;3932](https://github.com/we-promise/sure/pull/3932) - Drop invalid `previous:` option on PlaidAccount holdings encryption by [@&#8203;megan-holstein](https://github.com/megan-holstein) in [#&#8203;4059](https://github.com/we-promise/sure/pull/4059) - Give a colourless goal's ring a real fallback colour by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4032](https://github.com/we-promise/sure/pull/4032) - fix(trade-republic): Trade Republic bond valuation using percent-of-par prices by [@&#8203;Simoneu01](https://github.com/Simoneu01) in [#&#8203;4020](https://github.com/we-promise/sure/pull/4020) - Fix investment-transfer follow-ups from [#&#8203;3719](https://github.com/we-promise/sure/issues/3719) by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4064](https://github.com/we-promise/sure/pull/4064) - Fix the README's broken badge and refresh its hero screenshot by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4100](https://github.com/we-promise/sure/pull/4100) - fix(enable\_banking): keep multi-currency accounts in their own currency by [@&#8203;Simoneu01](https://github.com/Simoneu01) in [#&#8203;4077](https://github.com/we-promise/sure/pull/4077) - Show What's new in a DS::Dialog once no drawer or modal is open by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4021](https://github.com/we-promise/sure/pull/4021) - Frame the bills lists so their shells show in light mode by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4091](https://github.com/we-promise/sure/pull/4091) - Lead the bills overview with the bills, late ones first by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4092](https://github.com/we-promise/sure/pull/4092) - Lay out the bills header and switcher like Transactions by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4094](https://github.com/we-promise/sure/pull/4094) - Give the bill forms the inputs every other form uses by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4095](https://github.com/we-promise/sure/pull/4095) - Use the app's words for creating, pausing and opening bills by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4096](https://github.com/we-promise/sure/pull/4096) - Lead the bill drawer with its figure and use one eyebrow style by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4098](https://github.com/we-promise/sure/pull/4098) - Date snoozed bills by their snoozed date in month totals and the plan by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4106](https://github.com/we-promise/sure/pull/4106) - Keep one family's merchant changes off shared provider merchants by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3824](https://github.com/we-promise/sure/pull/3824) - Scope AI-detected merchant creation to the family by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3843](https://github.com/we-promise/sure/pull/3843) - Stop fetching prices for securities no account still holds by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3888](https://github.com/we-promise/sure/pull/3888) - Apply stock splits to holdings by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3850](https://github.com/we-promise/sure/pull/3850) - Fix reports page touch jitter and iOS Safari scroll freeze by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3132](https://github.com/we-promise/sure/pull/3132) - Currency ETH Addition by [@&#8203;peledies](https://github.com/peledies) in [#&#8203;2940](https://github.com/we-promise/sure/pull/2940) - fix(enable-banking): don't import a movement twice when the identifier arrives late by [@&#8203;albertinisg](https://github.com/albertinisg) in [#&#8203;3462](https://github.com/we-promise/sure/pull/3462) - fix(trade-republic): import timeline history beyond 50 pages by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;4072](https://github.com/we-promise/sure/pull/4072) - Stop streaming the Enable Banking panel to the family by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4044](https://github.com/we-promise/sure/pull/4044) - feat(transfers): add common writer condition for auto-matching transfers by [@&#8203;jubbakka](https://github.com/jubbakka) in [#&#8203;3722](https://github.com/we-promise/sure/pull/3722) - fix(chat): gate chat page behind AI consent and surface OpenAI stream errors by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3767](https://github.com/we-promise/sure/pull/3767) - fix(insights): keep private and unshared accounts out of the shared feed by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4061](https://github.com/we-promise/sure/pull/4061) - Share one pending predicate, and classify investment cash movements in one place by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3557](https://github.com/we-promise/sure/pull/3557) - feat(lunchflow): toggle to read credit card balance as available credit by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;3948](https://github.com/we-promise/sure/pull/3948) - fix: Preserve currency separators across locales by [@&#8203;OscarCaamal](https://github.com/OscarCaamal) in [#&#8203;3651](https://github.com/we-promise/sure/pull/3651) - Pin the skipped-occurrence review test to mid-month by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4108](https://github.com/we-promise/sure/pull/4108) - Reject null bytes in rule fields by [@&#8203;BeastOrange](https://github.com/BeastOrange) in [#&#8203;4109](https://github.com/we-promise/sure/pull/4109) - fix(trade-republic): import unmapped card, stamp duty and bonus events by [@&#8203;Simoneu01](https://github.com/Simoneu01) in [#&#8203;4038](https://github.com/we-promise/sure/pull/4038) - fix(onchain): revalue idle wallets at the latest price by [@&#8203;FournyP](https://github.com/FournyP) in [#&#8203;4067](https://github.com/we-promise/sure/pull/4067) - fix(statements): read period and balances from statement PDF text by [@&#8203;Simoneu01](https://github.com/Simoneu01) in [#&#8203;4054](https://github.com/we-promise/sure/pull/4054) - fix(trade-republic): book order cash legs at the detail total by [@&#8203;Simoneu01](https://github.com/Simoneu01) in [#&#8203;4104](https://github.com/we-promise/sure/pull/4104) - fix(trade-republic): log order executions that can't be imported yet by [@&#8203;Simoneu01](https://github.com/Simoneu01) in [#&#8203;4105](https://github.com/we-promise/sure/pull/4105) - feat(onchain): track Polkadot (DOT) wallets by [@&#8203;FournyP](https://github.com/FournyP) in [#&#8203;4071](https://github.com/we-promise/sure/pull/4071) - feat(onchain): track Cosmos Hub (ATOM) wallets by [@&#8203;FournyP](https://github.com/FournyP) in [#&#8203;4070](https://github.com/we-promise/sure/pull/4070) - Submit import file forms via Turbo to fix empty iPhone uploads by [@&#8203;itsLeonB](https://github.com/itsLeonB) in [#&#8203;4085](https://github.com/we-promise/sure/pull/4085) - feat(dashboard): show the preview cash-flow Sankey by account by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;3799](https://github.com/we-promise/sure/pull/3799) - fix(trade-republic): resolve bonds by ISIN and import bond purchases by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;4060](https://github.com/we-promise/sure/pull/4060) - Stop broadcasting provider cards to the whole family by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4046](https://github.com/we-promise/sure/pull/4046) - fix(trade-republic): read the exact share price from trade details by [@&#8203;Simoneu01](https://github.com/Simoneu01) in [#&#8203;4111](https://github.com/we-promise/sure/pull/4111) - fix(trade-republic): match the statement for bonus units and stamp duty by [@&#8203;Simoneu01](https://github.com/Simoneu01) in [#&#8203;4116](https://github.com/we-promise/sure/pull/4116) - fix(reports): bust report caches when categories are merged or replaced by [@&#8203;joshiarnav](https://github.com/joshiarnav) in [#&#8203;3604](https://github.com/we-promise/sure/pull/3604) - fix(trading212): book trades in the instrument currency by [@&#8203;stepanbeseda](https://github.com/stepanbeseda) in [#&#8203;4140](https://github.com/we-promise/sure/pull/4140) - fix(kraken): take a trade's quantity and cash from the ledger by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;4086](https://github.com/we-promise/sure/pull/4086) - fix(kraken): sum a staked and a spot balance of one asset into one holding by [@&#8203;rtammekivi](https://github.com/rtammekivi) in [#&#8203;4137](https://github.com/we-promise/sure/pull/4137) - fix(snaptrade): support option contracts and prioritize option\_symbol by [@&#8203;nareddyt](https://github.com/nareddyt) in [#&#8203;3744](https://github.com/we-promise/sure/pull/3744) - Stop broadcasting account rows to the whole family by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4050](https://github.com/we-promise/sure/pull/4050) - Show a member only the provider accounts shared with them by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4048](https://github.com/we-promise/sure/pull/4048) - fix(trades): count fees in gains and treat a missing rate as unknown by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;4033](https://github.com/we-promise/sure/pull/4033) - fix(reports): invalidate entry caches when categories change by [@&#8203;joshiarnav](https://github.com/joshiarnav) in [#&#8203;4124](https://github.com/we-promise/sure/pull/4124) - Add BalanceSheet::NetWorthVelocity for net worth pace by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4083](https://github.com/we-promise/sure/pull/4083) - Count dividend and interest income in investment totals by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4082](https://github.com/we-promise/sure/pull/4082) - Apply transfer kinds only when an auto-match is confirmed by [@&#8203;shkarinn](https://github.com/shkarinn) in [#&#8203;3762](https://github.com/we-promise/sure/pull/3762) - test(snaptrade): include fees in option gain expectations by [@&#8203;joshiarnav](https://github.com/joshiarnav) in [#&#8203;4145](https://github.com/we-promise/sure/pull/4145) - fix(ibkr): record a trade's commission as its fee, not as a separate transaction by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;4148](https://github.com/we-promise/sure/pull/4148) - Add Chimnie provider for UK property valuations by [@&#8203;ljefferies98](https://github.com/ljefferies98) in [#&#8203;4135](https://github.com/we-promise/sure/pull/4135) - feat(sophtron): add balance sign override functionality for credit cards by [@&#8203;jonerrr](https://github.com/jonerrr) in [#&#8203;4142](https://github.com/we-promise/sure/pull/4142) - Reject zero and invalid exchange rates for every provider by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3790](https://github.com/we-promise/sure/pull/3790) - Skip account sync for descriptive transaction edits by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4001](https://github.com/we-promise/sure/pull/4001) - Group the latest provider import day once in current holdings by [@&#8203;mrvruj](https://github.com/mrvruj) in [#&#8203;4118](https://github.com/we-promise/sure/pull/4118) - Keep a daily holding row for SimpleFIN and Lunchflow by [@&#8203;mrvruj](https://github.com/mrvruj) in [#&#8203;4119](https://github.com/we-promise/sure/pull/4119) - Improve demo family refresh email readability by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;4126](https://github.com/we-promise/sure/pull/4126) - feat(API): Add API endpoints for transaction splits by [@&#8203;georanma](https://github.com/georanma) in [#&#8203;4117](https://github.com/we-promise/sure/pull/4117) - feat(rules): run rules in a fixed order with "stop processing" by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4013](https://github.com/we-promise/sure/pull/4013) - feat(mcp): rule tools with a mandatory preview by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;3990](https://github.com/we-promise/sure/pull/3990) - Add an "mcp\_only" assistant type: no in-app chat, MCP stays available by [@&#8203;enieuwy](https://github.com/enieuwy) in [#&#8203;4147](https://github.com/we-promise/sure/pull/4147) - Auto-match cross-currency transfers on routes the user has confirmed by [@&#8203;shkarinn](https://github.com/shkarinn) in [#&#8203;3702](https://github.com/we-promise/sure/pull/3702) - feat(mcp): add unmatch\_transfer tool by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;4157](https://github.com/we-promise/sure/pull/4157) - fix(ai): replay each in-flight tool round as its own message pair by [@&#8203;josh-sanders](https://github.com/josh-sanders) in [#&#8203;4133](https://github.com/we-promise/sure/pull/4133) - Fix MCP rule previews after matching scope rename by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;4163](https://github.com/we-promise/sure/pull/4163) - Add attachments filter to transactions list by [@&#8203;romanzipp](https://github.com/romanzipp) in [#&#8203;4161](https://github.com/we-promise/sure/pull/4161) - Keep detected income out of the Bills suggestion strip by [@&#8203;thewillwilson](https://github.com/thewillwilson) in [#&#8203;3675](https://github.com/we-promise/sure/pull/3675) - 2883: Fix unidentified card holds by [@&#8203;OtterBoops](https://github.com/OtterBoops) in [#&#8203;4162](https://github.com/we-promise/sure/pull/4162) - Stop Money from silently mixing currencies by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4219](https://github.com/we-promise/sure/pull/4219) - fix(holdings): prevent N+1 query in HoldingsController#index by [@&#8203;sentry](https://github.com/sentry)\[bot] in [#&#8203;4042](https://github.com/we-promise/sure/pull/4042) - Generate plain ERB from the provider view templates by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4099](https://github.com/we-promise/sure/pull/4099) - Add shared mask\_last4 helper for identifier display masking by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3826](https://github.com/we-promise/sure/pull/3826) - fix(plaid): show Link errors raised inside the modal frame by [@&#8203;DTTerastar](https://github.com/DTTerastar) in [#&#8203;3849](https://github.com/we-promise/sure/pull/3849) - Fix unreadable security search dialog in the dark theme on phones by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4183](https://github.com/we-promise/sure/pull/4183) - Translate investment activity labels in the quick-edit badge by [@&#8203;shkarinn](https://github.com/shkarinn) in [#&#8203;4167](https://github.com/we-promise/sure/pull/4167) - fix(categories): keep focus in the category menu after a failed create by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;4074](https://github.com/we-promise/sure/pull/4074) - fix(panels): put CoinSpot/Kraken/Binance sync and menu buttons on the header row, as Wise does by [@&#8203;ryandnurh](https://github.com/ryandnurh) in [#&#8203;3980](https://github.com/we-promise/sure/pull/3980) - Keep long return\_to paths from overflowing the session by [@&#8203;shkarinn](https://github.com/shkarinn) in [#&#8203;4238](https://github.com/we-promise/sure/pull/4238) - Fix the false Timeout badge on sidebar sparklines by [@&#8203;zeishr](https://github.com/zeishr) in [#&#8203;3576](https://github.com/we-promise/sure/pull/3576) - Do not offer a guest a provider link the controller refuses by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3656](https://github.com/we-promise/sure/pull/3656) - fix(bills): preload recurrence rules and accounts when claiming recurring patterns by [@&#8203;sentry](https://github.com/sentry)\[bot] in [#&#8203;4136](https://github.com/we-promise/sure/pull/4136) - fix(chart): render email SMTP env vars by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;3015](https://github.com/we-promise/sure/pull/3015) - fix(devcontainer): use configured session key in Codespaces by [@&#8203;bittensorrider](https://github.com/bittensorrider) in [#&#8203;2982](https://github.com/we-promise/sure/pull/2982) - Start All period one month before first Transaction/Trade entry by [@&#8203;ryandnurh](https://github.com/ryandnurh) in [#&#8203;4068](https://github.com/we-promise/sure/pull/4068) - fix(jobs): run AI jobs in their own Sidekiq capsule so they can't starve syncs by [@&#8203;josh-sanders](https://github.com/josh-sanders) in [#&#8203;4237](https://github.com/we-promise/sure/pull/4237) - docs(hosting): add a guide for deploying Sure on Pethost by [@&#8203;sadfun](https://github.com/sadfun) in [#&#8203;4179](https://github.com/we-promise/sure/pull/4179) - bugfix:Add account search to transfer form by [@&#8203;DataEnginr](https://github.com/DataEnginr) in [#&#8203;4241](https://github.com/we-promise/sure/pull/4241) - Fix budget page 500 when expected income is nil by [@&#8203;TheRodzz](https://github.com/TheRodzz) in [#&#8203;4240](https://github.com/we-promise/sure/pull/4240) - Block password changes when only SSO login is allowed by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4208](https://github.com/we-promise/sure/pull/4208) - Require an MFA code before adding a passkey by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4204](https://github.com/we-promise/sure/pull/4204) - fix(development): run background jobs through Sidekiq by [@&#8203;DataEnginr](https://github.com/DataEnginr) in [#&#8203;4262](https://github.com/we-promise/sure/pull/4262) - fix(ai): route chat to the provider selected by LLM\_PROVIDER first by [@&#8203;josh-sanders](https://github.com/josh-sanders) in [#&#8203;4244](https://github.com/we-promise/sure/pull/4244) - fix(devcontainer): use the pgvector Postgres image so document import works by [@&#8203;DataEnginr](https://github.com/DataEnginr) in [#&#8203;4263](https://github.com/we-promise/sure/pull/4263) - Open Binance account setup from Add Account instead of returning to Settings by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4259](https://github.com/we-promise/sure/pull/4259) - Skip email notifications for inactive rules by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4211](https://github.com/we-promise/sure/pull/4211) - Validate rule action and resource types against known types by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4175](https://github.com/we-promise/sure/pull/4175) - Keep the rule prompt visible after the transaction drawer closes by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4210](https://github.com/we-promise/sure/pull/4210) - Restore account status when DestroyJob enqueue fails by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4172](https://github.com/we-promise/sure/pull/4172) - Restore an account to disabled when its destroy fails by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4173](https://github.com/we-promise/sure/pull/4173) - Date a new loan's opening anchor on its start date by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4174](https://github.com/we-promise/sure/pull/4174) - Scope group sparklines to accounts the user can access by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4207](https://github.com/we-promise/sure/pull/4207) - Throttle current-password checks on password change by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4201](https://github.com/we-promise/sure/pull/4201) - fix(perf): memoize accessible\_accounts in Current to eliminate dashboard N+1 queries by [@&#8203;sentry](https://github.com/sentry)\[bot] in [#&#8203;4170](https://github.com/we-promise/sure/pull/4170) - Respect account share permissions in bulk edit and categorize by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4192](https://github.com/we-promise/sure/pull/4192) - fix(transfers): reset the kept leg's kind when a transfer leg is deleted by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;4158](https://github.com/we-promise/sure/pull/4158) - fix(enable\_banking): always offer manual reconnect action by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3705](https://github.com/we-promise/sure/pull/3705) - \[PERFORMANCE] Stop current-holdings query from rescanning holdings per row by [@&#8203;wps260](https://github.com/wps260) in [#&#8203;4156](https://github.com/we-promise/sure/pull/4156) - Fix three buttons that sent the wrong HTTP method by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4258](https://github.com/we-promise/sure/pull/4258) - Open Coinbase wallet setup from Add Account instead of returning to Settings by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4257](https://github.com/we-promise/sure/pull/4257) - Fix "Create a bill" from a transaction showing Content Missing by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4250](https://github.com/we-promise/sure/pull/4250) - fix(settings): let LLM\_PROVIDER override a stored provider choice by [@&#8203;josh-sanders](https://github.com/josh-sanders) in [#&#8203;4249](https://github.com/we-promise/sure/pull/4249) - docs(ai): document the native Anthropic provider by [@&#8203;josh-sanders](https://github.com/josh-sanders) in [#&#8203;4243](https://github.com/we-promise/sure/pull/4243) - Add a category filter to the dashboard spending widget by [@&#8203;josh-sanders](https://github.com/josh-sanders) in [#&#8203;4138](https://github.com/we-promise/sure/pull/4138) - Keep attachments, tags and notes when merging a pending duplicate by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4247](https://github.com/we-promise/sure/pull/4247) - Handle SimpleFIN protocol-v2 errlist responses by [@&#8203;marty0x](https://github.com/marty0x) in [#&#8203;3954](https://github.com/we-promise/sure/pull/3954) - Kraken: leave the Add Account modal at the top level when setup can't open by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4275](https://github.com/we-promise/sure/pull/4275) - CoinSpot: leave the Add Account modal at the top level when setup can't open by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4276](https://github.com/we-promise/sure/pull/4276) - Keep Add Account errors visible when provider setup can't open (9 providers) by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4278](https://github.com/we-promise/sure/pull/4278) - Let existing properties link to a valuation provider by [@&#8203;timkatz](https://github.com/timkatz) in [#&#8203;4282](https://github.com/we-promise/sure/pull/4282) - Eager-load recurrence rules during occurrence generation to prevent N+1 by [@&#8203;sentry](https://github.com/sentry)\[bot] in [#&#8203;4286](https://github.com/we-promise/sure/pull/4286) - perf(test): stub retry backoff sleeps in assistant client tests (\~6s saved) by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;2564](https://github.com/we-promise/sure/pull/2564) - Prefer the available balance for Enable Banking cards treated as available credit by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4277](https://github.com/we-promise/sure/pull/4277) - bugfix : honor json\_mode in the PDF document extraction path by [@&#8203;DataEnginr](https://github.com/DataEnginr) in [#&#8203;4261](https://github.com/we-promise/sure/pull/4261) - build(deps-dev): bump source-map-js from 1.2.1 to 1.2.2 in /desktop by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4289](https://github.com/we-promise/sure/pull/4289) - feat(ai): support Gemini 4 Argon reasoning model by [@&#8203;nareddyt](https://github.com/nareddyt) in [#&#8203;4291](https://github.com/we-promise/sure/pull/4291) - build(deps): bump rustls from 0.23.42 to 0.23.46 in /desktop/src-tauri by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4290](https://github.com/we-promise/sure/pull/4290) - Scope the rebuilt manual accounts list to the viewer by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4052](https://github.com/we-promise/sure/pull/4052) - Block SimpleFIN URLs that target internal addresses by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4194](https://github.com/we-promise/sure/pull/4194) - Keep guests from changing family configuration through the API and imports by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4005](https://github.com/we-promise/sure/pull/4005) - Check family access for export, import and document blobs by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4203](https://github.com/we-promise/sure/pull/4203) - Close remaining Active Storage access gaps for receipts, previews and exports by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4205](https://github.com/we-promise/sure/pull/4205) - fix(budget\_categories): prevent N+1 in subcategories method by [@&#8203;sentry](https://github.com/sentry)\[bot] in [#&#8203;4066](https://github.com/we-promise/sure/pull/4066) - Encrypt SnapTrade account\_number by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3832](https://github.com/we-promise/sure/pull/3832) - Reuse shared frame redirects in provider controllers and generator by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;4281](https://github.com/we-promise/sure/pull/4281) - Drop calculated holdings shadowed by a provider snapshot in any currency by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4274](https://github.com/we-promise/sure/pull/4274) - fix(trade-republic): track the 24-hour login and fix login edge cases by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;4232](https://github.com/we-promise/sure/pull/4232) - fix(snaptrade): pick one security when a ticker has duplicate rows by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3999](https://github.com/we-promise/sure/pull/3999) - Carry holding locks forward without an external\_id by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4260](https://github.com/we-promise/sure/pull/4260) - Stabilize account sync UI tests across midnight by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;4279](https://github.com/we-promise/sure/pull/4279) - Make bill rows follow the transaction row recipe by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4127](https://github.com/we-promise/sure/pull/4127) - Polish All bills and put the bills tabs' loose text on surfaces by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4129](https://github.com/we-promise/sure/pull/4129) - security: mobile API auth gates, MFA password re-auth, credential revocation on deactivate by [@&#8203;dgilperez](https://github.com/dgilperez) in [#&#8203;1942](https://github.com/we-promise/sure/pull/1942) - Make the Record payment button submit the manual payment form by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4251](https://github.com/we-promise/sure/pull/4251) - Support "not equal to" and "is not empty" for tag rule conditions by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4246](https://github.com/we-promise/sure/pull/4246) - feature: add categories structure lock/unlock toggle by [@&#8203;akhlebka](https://github.com/akhlebka) in [#&#8203;3987](https://github.com/we-promise/sure/pull/3987) - Keep rejected statements in the vault inbox by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4299](https://github.com/we-promise/sure/pull/4299) - Let users count an investment transfer as a plain transfer by [@&#8203;shkarinn](https://github.com/shkarinn) in [#&#8203;4177](https://github.com/we-promise/sure/pull/4177) - Add starts with, ends with and regex rule operators by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4089](https://github.com/we-promise/sure/pull/4089) - Fix cache invalidation on currency change and account deletion ([#&#8203;4200](https://github.com/we-promise/sure/issues/4200)) by [@&#8203;1steve78](https://github.com/1steve78) in [#&#8203;4235](https://github.com/we-promise/sure/pull/4235) - Keep Sankey labels off the next column's bars on narrow screens by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4345](https://github.com/we-promise/sure/pull/4345) - Send Enable Banking a PSU IP only when it is a public address by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4304](https://github.com/we-promise/sure/pull/4304) - feat(reports): family setting to stop counting investing as spending by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;3952](https://github.com/we-promise/sure/pull/3952) - Harden OAuth client registration: reserve "Sure" client names, require https redirect URIs by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4193](https://github.com/we-promise/sure/pull/4193) - Pad text-only filter chips like the icon chips by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4357](https://github.com/we-promise/sure/pull/4357) - Run encryption tests in CI with test keys by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4335](https://github.com/we-promise/sure/pull/4335) - Keep Plaid securities for accounts with holdings but no investment transactions by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4256](https://github.com/we-promise/sure/pull/4256) - Fix Twelve Data per-minute throttle never engaging on Redis by [@&#8203;hharkins](https://github.com/hharkins) in [#&#8203;4328](https://github.com/we-promise/sure/pull/4328) - Make the cost basis editor read "per share × quantity = total" by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4184](https://github.com/we-promise/sure/pull/4184) - build(deps-dev): bump vite from 6.4.3 to 6.4.4 in /desktop by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4359](https://github.com/we-promise/sure/pull/4359) - Move dashboard reordering onto the shared sortable-list controller by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4334](https://github.com/we-promise/sure/pull/4334) - Document form action buttons in the design system guide by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4313](https://github.com/we-promise/sure/pull/4313) - fix: expose sync\_start\_date field in Redbark account setup by [@&#8203;huantrinh1802](https://github.com/huantrinh1802) in [#&#8203;4306](https://github.com/we-promise/sure/pull/4306) - Fix sidebar sparklines not rendering at small container sizes by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;4361](https://github.com/we-promise/sure/pull/4361) - Add a configuration overview to System Health by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3929](https://github.com/we-promise/sure/pull/3929) - Let DS buttons marked hidden actually hide by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;4342](https://github.com/we-promise/sure/pull/4342) - Support multi-currency goal funding by [@&#8203;vlnd0](https://github.com/vlnd0) in [#&#8203;3974](https://github.com/we-promise/sure/pull/3974) - Read a loan's rate from Redbark's account details by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3956](https://github.com/we-promise/sure/pull/3956) - Redbark: normalise liability balance sign by provider (fiskil / plaid / other) by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3899](https://github.com/we-promise/sure/pull/3899) - Stop emailing old matches after an email rule's conditions widen by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4150](https://github.com/we-promise/sure/pull/4150) - Translate the cost basis overwrite confirmation button by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4416](https://github.com/we-promise/sure/pull/4416) - Ask before unlocking a cost basis or resetting a security by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4418](https://github.com/we-promise/sure/pull/4418) - fix(bills): explain why a used-up transaction cannot pay a bill by [@&#8203;Holdner](https://github.com/Holdner) in [#&#8203;4376](https://github.com/we-promise/sure/pull/4376) - feat(insights): deterministic insight text, plus "Dig in with AI" by [@&#8203;josh-sanders](https://github.com/josh-sanders) in [#&#8203;4239](https://github.com/we-promise/sure/pull/4239) - Resolve duplicate same-type Enable Banking balances deterministically by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4344](https://github.com/we-promise/sure/pull/4344) - Allow calculator expressions and comma decimals in amount fields by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3502](https://github.com/we-promise/sure/pull/3502) - Loans: let interest accrue on the basis the lender actually uses by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3639](https://github.com/we-promise/sure/pull/3639) - Count the same accounts in group totals and sparklines by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4338](https://github.com/we-promise/sure/pull/4338) - Move transfer matching controls beside transaction amounts by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;4303](https://github.com/we-promise/sure/pull/4303) - fix(accounts): localize investment labels and chart dates by [@&#8203;MaxenceChx](https://github.com/MaxenceChx) in [#&#8203;3178](https://github.com/we-promise/sure/pull/3178) - Send tool\_choice auto to Claude models that reject a forced tool by [@&#8203;pcbeingused333](https://github.com/pcbeingused333) in [#&#8203;4178](https://github.com/we-promise/sure/pull/4178) - feat(accounts): manual drag-and-drop account order by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4341](https://github.com/we-promise/sure/pull/4341) - Generate and backfill logos for website-only provider merchants by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3776](https://github.com/we-promise/sure/pull/3776) - Redact the Jev endpoint in the self-hosting settings panel by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4401](https://github.com/we-promise/sure/pull/4401) - Detect autopay from explicit descriptor wording by [@&#8203;thewillwilson](https://github.com/thewillwilson) in [#&#8203;3624](https://github.com/we-promise/sure/pull/3624) - Fix duplicate bill suggestions after renaming a bill by [@&#8203;joaocbatista](https://github.com/joaocbatista) in [#&#8203;4222](https://github.com/we-promise/sure/pull/4222) - chore(langfuse): migrate tracing and experiments to v4 by [@&#8203;tatoalo](https://github.com/tatoalo) in [#&#8203;3625](https://github.com/we-promise/sure/pull/3625) - Full backups, rollbacks and restores for self-hosted installs by [@&#8203;mikaelhm](https://github.com/mikaelhm) in [#&#8203;3909](https://github.com/we-promise/sure/pull/3909) - fix(ai): retry without strict JSON when Auto mode can't parse the response by [@&#8203;joshiarnav](https://github.com/joshiarnav) in [#&#8203;3602](https://github.com/we-promise/sure/pull/3602) - fix(mobile): load full chat history across all pages by [@&#8203;felixmuinde](https://github.com/felixmuinde) in [#&#8203;4421](https://github.com/we-promise/sure/pull/4421) - Compare the spending widget against the dashboard period's average month by [@&#8203;josh-sanders](https://github.com/josh-sanders) in [#&#8203;4139](https://github.com/we-promise/sure/pull/4139) - Add split\_transaction rule action by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3020](https://github.com/we-promise/sure/pull/3020) - Show detected bill name in the bill rules section by [@&#8203;joaocbatista](https://github.com/joaocbatista) in [#&#8203;4430](https://github.com/we-promise/sure/pull/4430) - Add a tunable, self-testing Bayes classifier by [@&#8203;josh-sanders](https://github.com/josh-sanders) in [#&#8203;4310](https://github.com/we-promise/sure/pull/4310) - fix/Give the bill form a searchable, grouped category picker by [@&#8203;DataEnginr](https://github.com/DataEnginr) in [#&#8203;4431](https://github.com/we-promise/sure/pull/4431) - Show the investment card when the period has a disposal by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4409](https://github.com/we-promise/sure/pull/4409) - Fix duplicate migration version for classifier rules by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;4435](https://github.com/we-promise/sure/pull/4435) - Document SMTP email setup for Docker Compose by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4372](https://github.com/we-promise/sure/pull/4372) - Anchor menus inside size containers to their button by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4370](https://github.com/we-promise/sure/pull/4370) - Keep a due-day shift from adding a second occurrence to a paid cycle by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4380](https://github.com/we-promise/sure/pull/4380) - Record an email action's baseline when it is created by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4176](https://github.com/we-promise/sure/pull/4176) - Reconstruct a bill's history whenever a detection is activated by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4371](https://github.com/we-promise/sure/pull/4371) - Check for an existing bill before creating one from a transaction by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4375](https://github.com/we-promise/sure/pull/4375) - Make the before-payday strip readable at a month of bills by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4369](https://github.com/we-promise/sure/pull/4369) - Fill a bill's blank category from its transactions by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;4374](https://github.com/we-promise/sure/pull/4374) - fix(sync): respect configured timezone in auto-sync schedule by [@&#8203;BeastOrange](https://github.com/BeastOrange) in [#&#8203;3696](https://github.com/we-promise/sure/pull/3696) - Revert "Compare the spending widget against the dashboard period's average month" by [@&#8203;josh-sanders](https://github.com/josh-sanders) in [#&#8203;4452](https://github.com/we-promise/sure/pull/4452) - Keep the rules list and settings header inside phone screens by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;4473](https://github.com/we-promise/sure/pull/4473) - Point the Wise sandbox at Wise's current host by [@&#8203;ycsin](https://github.com/ycsin) in [#&#8203;4458](https://github.com/we-promise/sure/pull/4458) - Add a setting to turn off transfer auto-matching and a page to review pending matches by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3034](https://github.com/we-promise/sure/pull/3034) - feat(reports): spending vs normal section (preview) by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;4002](https://github.com/we-promise/sure/pull/4002) - Add category/tag/merchant/type filters to account activity feed by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3814](https://github.com/we-promise/sure/pull/3814) - Fix midnight-dependent controller job assertions by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;4482](https://github.com/we-promise/sure/pull/4482) - Add credit card statement cycle support by [@&#8203;DataEnginr](https://github.com/DataEnginr) in [#&#8203;4270](https://github.com/we-promise/sure/pull/4270) - Restrict instance-wide settings to super admins by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3794](https://github.com/we-promise/sure/pull/3794) - security: expire inactive sessions server-side, whitelist session tab keys by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3242](https://github.com/we-promise/sure/pull/3242) - feat(mcp): add delete\_category and let update\_category move categories by [@&#8203;alanmlcrt](https://github.com/alanmlcrt) in [#&#8203;4063](https://github.com/we-promise/sure/pull/4063) - fix: security price sync reliability (TwelveData errors, offline resolver, health checker, missing names) by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3098](https://github.com/we-promise/sure/pull/3098) - feat(mcp): add transfer matching tools by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;3818](https://github.com/we-promise/sure/pull/3818) - feat(api): expose kind, exact amount and split state on transactions by [@&#8203;bhargavmehta01](https://github.com/bhargavmehta01) in [#&#8203;4422](https://github.com/we-promise/sure/pull/4422) - feat(transactions): auto-generate transaction name from merchant/category (opt-in) by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3378](https://github.com/we-promise/sure/pull/3378) - feat(mobile): budgets screen by [@&#8203;bhargavmehta01](https://github.com/bhargavmehta01) in [#&#8203;4426](https://github.com/we-promise/sure/pull/4426) ##### New Contributors - [@&#8203;BernatSR](https://github.com/BernatSR) made their first contribution in [#&#8203;3882](https://github.com/we-promise/sure/pull/3882) - [@&#8203;ly0va](https://github.com/ly0va) made their first contribution in [#&#8203;3940](https://github.com/we-promise/sure/pull/3940) - [@&#8203;cgmccurdy](https://github.com/cgmccurdy) made their first contribution in [#&#8203;3658](https://github.com/we-promise/sure/pull/3658) - [@&#8203;ryandnurh](https://github.com/ryandnurh) made their first contribution in [#&#8203;4004](https://github.com/we-promise/sure/pull/4004) - [@&#8203;0xifarouk](https://github.com/0xifarouk) made their first contribution in [#&#8203;3950](https://github.com/we-promise/sure/pull/3950) - [@&#8203;megan-holstein](https://github.com/megan-holstein) made their first contribution in [#&#8203;4059](https://github.com/we-promise/sure/pull/4059) - [@&#8203;Simoneu01](https://github.com/Simoneu01) made their first contribution in [#&#8203;4020](https://github.com/we-promise/sure/pull/4020) - [@&#8203;peledies](https://github.com/peledies) made their first contribution in [#&#8203;2940](https://github.com/we-promise/sure/pull/2940) - [@&#8203;OscarCaamal](https://github.com/OscarCaamal) made their first contribution in [#&#8203;3651](https://github.com/we-promise/sure/pull/3651) - [@&#8203;FournyP](https://github.com/FournyP) made their first contribution in [#&#8203;4067](https://github.com/we-promise/sure/pull/4067) - [@&#8203;stepanbeseda](https://github.com/stepanbeseda) made their first contribution in [#&#8203;4140](https://github.com/we-promise/sure/pull/4140) - [@&#8203;rtammekivi](https://github.com/rtammekivi) made their first contribution in [#&#8203;4137](https://github.com/we-promise/sure/pull/4137) - [@&#8203;ljefferies98](https://github.com/ljefferies98) made their first contribution in [#&#8203;4135](https://github.com/we-promise/sure/pull/4135) - [@&#8203;jonerrr](https://github.com/jonerrr) made their first contribution in [#&#8203;4142](https://github.com/we-promise/sure/pull/4142) - [@&#8203;mrvruj](https://github.com/mrvruj) made their first contribution in [#&#8203;4118](https://github.com/we-promise/sure/pull/4118) - [@&#8203;georanma](https://github.com/georanma) made their first contribution in [#&#8203;4117](https://github.com/we-promise/sure/pull/4117) - [@&#8203;enieuwy](https://github.com/enieuwy) made their first contribution in [#&#8203;4147](https://github.com/we-promise/sure/pull/4147) - [@&#8203;romanzipp](https://github.com/romanzipp) made their first contribution in [#&#8203;4161](https://github.com/we-promise/sure/pull/4161) - [@&#8203;zeishr](https://github.com/zeishr) made their first contribution in [#&#8203;3576](https://github.com/we-promise/sure/pull/3576) - [@&#8203;sadfun](https://github.com/sadfun) made their first contribution in [#&#8203;4179](https://github.com/we-promise/sure/pull/4179) - [@&#8203;akhlebka](https://github.com/akhlebka) made their first contribution in [#&#8203;3987](https://github.com/we-promise/sure/pull/3987) - [@&#8203;1steve78](https://github.com/1steve78) made their first contribution in [#&#8203;4235](https://github.com/we-promise/sure/pull/4235) - [@&#8203;hharkins](https://github.com/hharkins) made their first contribution in [#&#8203;4328](https://github.com/we-promise/sure/pull/4328) - [@&#8203;huantrinh1802](https://github.com/huantrinh1802) made their first contribution in [#&#8203;4306](https://github.com/we-promise/sure/pull/4306) - [@&#8203;ycsin](https://github.com/ycsin) made their first contribution in [#&#8203;4458](https://github.com/we-promise/sure/pull/4458) - [@&#8203;alanmlcrt](https://github.com/alanmlcrt) made their first contribution in [#&#8203;4063](https://github.com/we-promise/sure/pull/4063) **Full Changelog**: <https://github.com/we-promise/sure/compare/v0.7.5...v0.7.6> ### [`v0.7.5`](https://github.com/we-promise/sure/releases/tag/v0.7.5): Sure v0.7.5 - Bills, connections, and deeper portfolio insights [Compare Source](https://github.com/we-promise/sure/compare/v0.7.4...v0.7.5) Brand 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 [@&#8203;winters27](https://github.com/winters27) for this amazing feature work! <img width="1440" height="1057" alt="image" src="https://github.com/user-attachments/assets/54595325-9881-4359-bfbc-bb4396fca2e5" /> Calendar: <img width="1440" height="1057" alt="image" src="https://github.com/user-attachments/assets/10279bdd-c38a-4f46-9fc9-c4e067dbdc25" /> Paycheck planning: <img width="1440" height="1057" alt="image" src="https://github.com/user-attachments/assets/d5bb63d2-e8fb-408f-9c81-d63202c9fb8f" /> ##### 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 [@&#8203;buzzromain](https://github.com/buzzromain) in [#&#8203;3215](https://github.com/we-promise/sure/pull/3215) - fix(goals): stop the first goal being told about earmarks it has none of by [@&#8203;buzzromain](https://github.com/buzzromain) in [#&#8203;3216](https://github.com/we-promise/sure/pull/3216) - fix(holdings): a transfer must not set a cost basis by [@&#8203;buzzromain](https://github.com/buzzromain) in [#&#8203;3154](https://github.com/we-promise/sure/pull/3154) - fix(binance): let go of an asset the wallet no longer holds by [@&#8203;buzzromain](https://github.com/buzzromain) in [#&#8203;3234](https://github.com/we-promise/sure/pull/3234) - fix(holdings): an outbound transfer must not clear a cost basis by [@&#8203;buzzromain](https://github.com/buzzromain) in [#&#8203;3237](https://github.com/we-promise/sure/pull/3237) - Fix/french locale typos by [@&#8203;jubbakka](https://github.com/jubbakka) in [#&#8203;3228](https://github.com/we-promise/sure/pull/3228) - feat: Super Admins can Delete Users and Modify Families/Groups by [@&#8203;mr-u0b0dy](https://github.com/mr-u0b0dy) in [#&#8203;2868](https://github.com/we-promise/sure/pull/2868) - Add canonical roadmap content by [@&#8203;atlas-maxjb](https://github.com/atlas-maxjb) in [#&#8203;2931](https://github.com/we-promise/sure/pull/2931) - fix(l10n): localize SureImport missing-reference messages by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3266](https://github.com/we-promise/sure/pull/3266) - fix(l10n): localize SnapTrade device authorization by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3283](https://github.com/we-promise/sure/pull/3283) - fix(l10n): localize trade activity labels by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3282](https://github.com/we-promise/sure/pull/3282) - Add support for linking E\*TRADE and other investment-only institutions by [@&#8203;terafin](https://github.com/terafin) in [#&#8203;3271](https://github.com/we-promise/sure/pull/3271) - fix: localize German transaction selectors by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3254](https://github.com/we-promise/sure/pull/3254) - security: throttle every credential-guessing endpoint, fix duplicate Rack::Attack middleware by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3263](https://github.com/we-promise/sure/pull/3263) - fix(l10n): localize new chat default title by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3256](https://github.com/we-promise/sure/pull/3256) - Add function-calling probe to detect tool-use support by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3255](https://github.com/we-promise/sure/pull/3255) - fix: Show category hierarchy in transaction picker/editor by [@&#8203;DataEnginr](https://github.com/DataEnginr) in [#&#8203;3292](https://github.com/we-promise/sure/pull/3292) - fix(transactions): dedupe tag filter for correct summary totals ([#&#8203;3174](https://github.com/we-promise/sure/issues/3174)) by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3290](https://github.com/we-promise/sure/pull/3290) - fix(pdf-vision): render PDFs with poppler-utils + surface a concrete admin failure reason by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3275](https://github.com/we-promise/sure/pull/3275) - Fix first-user super-admin race by [@&#8203;atlas-maxjb](https://github.com/atlas-maxjb) in [#&#8203;3268](https://github.com/we-promise/sure/pull/3268) - feat(bills): schema and domain core for the bills subsystem by [@&#8203;winters27](https://github.com/winters27) in [#&#8203;3201](https://github.com/we-promise/sure/pull/3201) - Surface probe timeout separately from LLM request timeout on System Health by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3276](https://github.com/we-promise/sure/pull/3276) - fix(accounts): keep the entered current balance when it differs from the opening one by [@&#8203;Demon-tk](https://github.com/Demon-tk) in [#&#8203;3301](https://github.com/we-promise/sure/pull/3301) - Show exact share count in the holding drawer by [@&#8203;JstnMcBrd](https://github.com/JstnMcBrd) in [#&#8203;3305](https://github.com/we-promise/sure/pull/3305) - fix(demo): stop the goal-seeding matrix crashing rake demo\_data:default by [@&#8203;buzzromain](https://github.com/buzzromain) in [#&#8203;3314](https://github.com/we-promise/sure/pull/3314) - fix(securities): fall back to direct chart lookup when Yahoo search returns nothing by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3313](https://github.com/we-promise/sure/pull/3313) - feat(bills): the bills pages, calendar feed and in-page AI helpers by [@&#8203;winters27](https://github.com/winters27) in [#&#8203;3202](https://github.com/we-promise/sure/pull/3202) - fix(l10n): localize budget category dates by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3315](https://github.com/we-promise/sure/pull/3315) - fix(l10n): localize admin SSO headings by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3316](https://github.com/we-promise/sure/pull/3316) - feat(rules): add not-equal, does-not-contain, and is-not-empty condition operators by [@&#8203;ololonly](https://github.com/ololonly) in [#&#8203;2529](https://github.com/we-promise/sure/pull/2529) - Add configurable OpenAI request timeout by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3304](https://github.com/we-promise/sure/pull/3304) - Clear Plaid reconnect status after successful import by [@&#8203;timkatz](https://github.com/timkatz) in [#&#8203;3319](https://github.com/we-promise/sure/pull/3319) - Refresh Plaid transactions during automatic syncs by [@&#8203;timkatz](https://github.com/timkatz) in [#&#8203;3320](https://github.com/we-promise/sure/pull/3320) - feat(hosting): universal headless rclone backup sidecar by [@&#8203;TheRodzz](https://github.com/TheRodzz) in [#&#8203;2875](https://github.com/we-promise/sure/pull/2875) - fix(l10n): localize import step labels by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3322](https://github.com/we-promise/sure/pull/3322) - fix(l10n): localize Plaid add accounts action by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3323](https://github.com/we-promise/sure/pull/3323) - feat(bills): assistant and MCP tools for bills by [@&#8203;winters27](https://github.com/winters27) in [#&#8203;3203](https://github.com/we-promise/sure/pull/3203) - fix(l10n): localize Lunchflow account setup by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3330](https://github.com/we-promise/sure/pull/3330) - fix(l10n): localize unsupported rule labels by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3329](https://github.com/we-promise/sure/pull/3329) - fix(hosting): consistent provider-block visibility + fix Twelve Data toggle bug by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3333](https://github.com/we-promise/sure/pull/3333) - Add first-class Trade Republic support by [@&#8203;amariwan](https://github.com/amariwan) in [#&#8203;3168](https://github.com/we-promise/sure/pull/3168) - fix(l10n): localize SimpleFIN status summaries by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3343](https://github.com/we-promise/sure/pull/3343) - build(deps): bump mail from 2.9.0 to 2.9.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;3347](https://github.com/we-promise/sure/pull/3347) - fix(l10n): localize Onchain wallet setup by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3344](https://github.com/we-promise/sure/pull/3344) - feat(i18n): Support Portuguese European language and locale (pt-PT) by [@&#8203;pfbco](https://github.com/pfbco) in [#&#8203;3265](https://github.com/we-promise/sure/pull/3265) - fix(l10n): localize empty CoinStats wallet result by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3355](https://github.com/we-promise/sure/pull/3355) - fix(l10n): localize Onchain wallet management by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3354](https://github.com/we-promise/sure/pull/3354) - feat(ai): support OPENAI\_EXTRA\_HEADERS on the OpenAI-compatible provider by [@&#8203;frap129](https://github.com/frap129) in [#&#8203;3362](https://github.com/we-promise/sure/pull/3362) - fix(l10n): localize removed SSO identity recovery by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3357](https://github.com/we-promise/sure/pull/3357) - fix(l10n): localize Lunchflow fallback errors by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3358](https://github.com/we-promise/sure/pull/3358) - feat(accounts): group split transactions in account activity feed by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3359](https://github.com/we-promise/sure/pull/3359) - fix(l10n): localize invalid Binance sync date by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3369](https://github.com/we-promise/sure/pull/3369) - docs(hosting): document 512MB memory envelope and sample-data guidance by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3368](https://github.com/we-promise/sure/pull/3368) - Support QIF split transactions and account metadata by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;3348](https://github.com/we-promise/sure/pull/3348) - Make importmap audit best-effort for publishing by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;3372](https://github.com/we-promise/sure/pull/3372) - fix(transactions): prevent duplicate creation on double-submit by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3338](https://github.com/we-promise/sure/pull/3338) - fix(transfers): prevent duplicate creation on double-submit by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3342](https://github.com/we-promise/sure/pull/3342) - fix(l10n): localize OpenAI timeout settings by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3370](https://github.com/we-promise/sure/pull/3370) - fix(l10n): localize bills page shell by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3374](https://github.com/we-promise/sure/pull/3374) - feat(ai-health): explain vector store setup failures by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;3324](https://github.com/we-promise/sure/pull/3324) - fix(reports): stop Safari swallowing every click on the reports page by [@&#8203;AlexNovRS7](https://github.com/AlexNovRS7) in [#&#8203;3365](https://github.com/we-promise/sure/pull/3365) - feat(ai): verify AI configuration and provider liveness from worker processes by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3298](https://github.com/we-promise/sure/pull/3298) - fix(l10n): localize recurring occurrence feedback by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3382](https://github.com/we-promise/sure/pull/3382) - fix(l10n): localize recurring allocation feedback by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3380](https://github.com/we-promise/sure/pull/3380) - fix(transfers): hide disabled accounts from new transfer modal by [@&#8203;itsLeonB](https://github.com/itsLeonB) in [#&#8203;3376](https://github.com/we-promise/sure/pull/3376) - feat(transactions): cascade parent/subcategory checkboxes in the category filter by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3356](https://github.com/we-promise/sure/pull/3356) - feat(forms): parse pasted formatted amounts in money fields by [@&#8203;Demon-tk](https://github.com/Demon-tk) in [#&#8203;3300](https://github.com/we-promise/sure/pull/3300) - fix(l10n): localize onchain wallet movement names by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3388](https://github.com/we-promise/sure/pull/3388) - fix(ui): make whole list row clickable, not just the name text by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3367](https://github.com/we-promise/sure/pull/3367) - fix(l10n): localize maintained reserve insights by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3396](https://github.com/we-promise/sure/pull/3396) - Fix Wise incoming transfers by implementing Strong Customer Authentication by [@&#8203;oliveiraigorm](https://github.com/oliveiraigorm) in [#&#8203;3391](https://github.com/we-promise/sure/pull/3391) - fix(l10n): localize Trade Republic account setup by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3399](https://github.com/we-promise/sure/pull/3399) - Add cumulative spending chart dashboard widget by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3404](https://github.com/we-promise/sure/pull/3404) - fix(l10n): localize transaction bill links by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3406](https://github.com/we-promise/sure/pull/3406) - refactor(income-statement): share scoping SQL across all four query classes by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3408](https://github.com/we-promise/sure/pull/3408) - Consolidate repository instructions after auditing their history by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3409](https://github.com/we-promise/sure/pull/3409) - fix(l10n): localize Wise SCA guidance by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3410](https://github.com/we-promise/sure/pull/3410) - fix(l10n): localize Wise SCA keypair results by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3413](https://github.com/we-promise/sure/pull/3413) - fix(insights): project month-to-date spend over the whole month by [@&#8203;Demon-tk](https://github.com/Demon-tk) in [#&#8203;3424](https://github.com/we-promise/sure/pull/3424) - feat(rules): support multiple tags in the set transaction tags action by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3397](https://github.com/we-promise/sure/pull/3397) - fix(wise): refuse an SCA private key when encryption is unavailable by [@&#8203;Holdner](https://github.com/Holdner) in [#&#8203;3415](https://github.com/we-promise/sure/pull/3415) - fix(wise): stub encryption in the SCA localization success test by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3437](https://github.com/we-promise/sure/pull/3437) - fix(l10n): localize account creation keyboard controls by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3433](https://github.com/we-promise/sure/pull/3433) - Fix stale data warning overlap by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;3432](https://github.com/we-promise/sure/pull/3432) - fix(wise): require encrypted SCA key registration by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;3439](https://github.com/we-promise/sure/pull/3439) - Improve spending chart mobile layout by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3435](https://github.com/we-promise/sure/pull/3435) - fix(mcp): accept native-app redirect URIs during OAuth DCR by [@&#8203;WeekendSuperhero](https://github.com/WeekendSuperhero) in [#&#8203;3431](https://github.com/we-promise/sure/pull/3431) - FIX: Refunds or credits incorrectly recorded as cc\_payment by [@&#8203;Browndw4](https://github.com/Browndw4) in [#&#8203;3062](https://github.com/we-promise/sure/pull/3062) - fix(rules): keep dynamically added nested-attribute keys numeric by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3444](https://github.com/we-promise/sure/pull/3444) - feat(transactions): add "No merchant"/"Untagged" filter options by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3135](https://github.com/we-promise/sure/pull/3135) - Align uncategorized Transactions filter with dashboard aggregate (fix [#&#8203;2592](https://github.com/we-promise/sure/issues/2592)) by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3293](https://github.com/we-promise/sure/pull/3293) - Fix repository-wide ERB lint failures by [@&#8203;timkatz](https://github.com/timkatz) in [#&#8203;3448](https://github.com/we-promise/sure/pull/3448) - fix(l10n): localize import template guidance by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3458](https://github.com/we-promise/sure/pull/3458) - End spending comparison axis at selected month end by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3445](https://github.com/we-promise/sure/pull/3445) - fix(enable-banking): don't let a payment wallet prefix claim the merchant by [@&#8203;albertinisg](https://github.com/albertinisg) in [#&#8203;3460](https://github.com/we-promise/sure/pull/3460) - Add drag-to-select date range on balance charts by [@&#8203;Holdner](https://github.com/Holdner) in [#&#8203;2733](https://github.com/we-promise/sure/pull/2733) - feat(admin): show profile pictures in user management list by [@&#8203;JstnMcBrd](https://github.com/JstnMcBrd) in [#&#8203;3467](https://github.com/we-promise/sure/pull/3467) - Compare the same elapsed days in the spending widget header by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3457](https://github.com/we-promise/sure/pull/3457) - feat(categorization): try naive Bayes before the LLM by [@&#8203;Demon-tk](https://github.com/Demon-tk) in [#&#8203;3465](https://github.com/we-promise/sure/pull/3465) - feat(transactions): align Uncategorized category filter with No merchant/Untagged pattern by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3186](https://github.com/we-promise/sure/pull/3186) - Add native amortization schedules for loan accounts by [@&#8203;oliveiraigorm](https://github.com/oliveiraigorm) in [#&#8203;2984](https://github.com/we-promise/sure/pull/2984) - Fix parent budget overage and shared child status by [@&#8203;timkatz](https://github.com/timkatz) in [#&#8203;3463](https://github.com/we-promise/sure/pull/3463) - fix(rules): batch category/merchant/tag operand lookups in Family::DataImporter by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3420](https://github.com/we-promise/sure/pull/3420) - fix(l10n): localize recurrence rule validation errors by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3387](https://github.com/we-promise/sure/pull/3387) - fix(rules): batch operand lookups and map transaction\_tag conditions in RuleImport by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3419](https://github.com/we-promise/sure/pull/3419) - fix(rules): batch category/merchant/tag operand resolution in exports by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3416](https://github.com/we-promise/sure/pull/3416) - fix(trade-republic): use canonical activity labels for order executions by [@&#8203;JstnMcBrd](https://github.com/JstnMcBrd) in [#&#8203;3468](https://github.com/we-promise/sure/pull/3468) - fix(auth): close remaining deactivated-user session/token gaps ([post-#&#8203;3131](https://github.com/post-/sure/issues/3131) rebase) by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;2890](https://github.com/we-promise/sure/pull/2890) - fix(l10n): localize German budget rollover labels by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3470](https://github.com/we-promise/sure/pull/3470) - bugfix: Fix category ordering in the merge dialog by [@&#8203;DataEnginr](https://github.com/DataEnginr) in [#&#8203;3471](https://github.com/we-promise/sure/pull/3471) - Improve auto-categorization debug logging by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3479](https://github.com/we-promise/sure/pull/3479) - fix(l10n): localize German system health navigation by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3477](https://github.com/we-promise/sure/pull/3477) - fix(i18n): complete French coverage for 1,544 untranslated keys by [@&#8203;Holdner](https://github.com/Holdner) in [#&#8203;3454](https://github.com/we-promise/sure/pull/3454) - feat(monobank): add monobank (UA) bank sync by [@&#8203;yaroslavshparuk](https://github.com/yaroslavshparuk) in [#&#8203;3386](https://github.com/we-promise/sure/pull/3386) - fix(monobank): currencyCode is the operation currency, not the account's by [@&#8203;yaroslavshparuk](https://github.com/yaroslavshparuk) in [#&#8203;3495](https://github.com/we-promise/sure/pull/3495) - fix(l10n): localize German background job statistics by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3486](https://github.com/we-promise/sure/pull/3486) - fix(l10n): localize German Sidekiq health warnings by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3499](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 [@&#8203;yaroslavshparuk](https://github.com/yaroslavshparuk) in [#&#8203;3493](https://github.com/we-promise/sure/pull/3493) - docs: refresh outdated onboarding product guide copy by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3503](https://github.com/we-promise/sure/pull/3503) - fix(providers): honor the category matcher toggle for Up and monobank by [@&#8203;yaroslavshparuk](https://github.com/yaroslavshparuk) in [#&#8203;3490](https://github.com/we-promise/sure/pull/3490) - Allow API transaction update to opt into sync protection (user\_modified) by [@&#8203;colinedwardwood](https://github.com/colinedwardwood) in [#&#8203;3483](https://github.com/we-promise/sure/pull/3483) - feat(prompts): Editable Built-In Prompt Overrides Per-Family by [@&#8203;dcicco](https://github.com/dcicco) in [#&#8203;3373](https://github.com/we-promise/sure/pull/3373) - fix: exclude stale provider holdings from investment views by [@&#8203;drink970082](https://github.com/drink970082) in [#&#8203;3484](https://github.com/we-promise/sure/pull/3484) - security: consolidate deactivated-user auth enforcement by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3504](https://github.com/we-promise/sure/pull/3504) - fixes Trading212 bugs reported in [#&#8203;3087](https://github.com/we-promise/sure/issues/3087) by [@&#8203;smurfpandey](https://github.com/smurfpandey) in [#&#8203;3090](https://github.com/we-promise/sure/pull/3090) - Fix Coinbase cryptocurrency holding precision by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3456](https://github.com/we-promise/sure/pull/3456) - fix(l10n): localize German AI worker verification by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3509](https://github.com/we-promise/sure/pull/3509) - fix(monobank): capitalize the brand name and show its logo tile by [@&#8203;yaroslavshparuk](https://github.com/yaroslavshparuk) in [#&#8203;3521](https://github.com/we-promise/sure/pull/3521) - fix(l10n): localize German T-Invest logo notice by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3520](https://github.com/we-promise/sure/pull/3520) - Fix onboarding guide asset paths by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3524](https://github.com/we-promise/sure/pull/3524) - feat: add "What's new" release highlight popup by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3505](https://github.com/we-promise/sure/pull/3505) - fix(i18n): use the official Brandfetch name in settings and docs by [@&#8203;JstnMcBrd](https://github.com/JstnMcBrd) in [#&#8203;3528](https://github.com/we-promise/sure/pull/3528) - feat(providers): show Brandfetch logos on Bank Sync and Accounts by [@&#8203;JstnMcBrd](https://github.com/JstnMcBrd) in [#&#8203;3527](https://github.com/we-promise/sure/pull/3527) - fix(l10n): localize the German system health breadcrumb by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3538](https://github.com/we-promise/sure/pull/3538) - fix(l10n): localize German AI diagnostic failure reasons by [@&#8203;Rowdy](https://github.com/Rowdy) in [#&#8203;3530](https://github.com/we-promise/sure/pull/3530) - fix(insights): narrate LLM insight bodies in the family's locale by [@&#8203;Radoslaw-Dabrowski](https://github.com/Radoslaw-Dabrowski) in [#&#8203;3533](https://github.com/we-promise/sure/pull/3533) - fix(l10n): add missing Polish translations by [@&#8203;Radoslaw-Dabrowski](https://github.com/Radoslaw-Dabrowski) in [#&#8203;3525](https://github.com/we-promise/sure/pull/3525) - Treat consented Plaid products as supported by [@&#8203;brianespinoza](https://github.com/brianespinoza) in [#&#8203;3537](https://github.com/we-promise/sure/pull/3537) - Add CoinSpot exchange support by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3453](https://github.com/we-promise/sure/pull/3453) - Combine SimpleFIN holding lots into a single position by [@&#8203;brianespinoza](https://github.com/brianespinoza) in [#&#8203;3539](https://github.com/we-promise/sure/pull/3539) - fix(desktop): add report download & print handling by [@&#8203;Holdner](https://github.com/Holdner) in [#&#8203;3480](https://github.com/we-promise/sure/pull/3480) - Fetch Plaid liabilities for credit accounts of any subtype by [@&#8203;brianespinoza](https://github.com/brianespinoza) in [#&#8203;3531](https://github.com/we-promise/sure/pull/3531) - SimpleFIN: add a credit card balance sign override by [@&#8203;timkatz](https://github.com/timkatz) in [#&#8203;3243](https://github.com/we-promise/sure/pull/3243) - fix(categories): update avatar preview when picking a color by [@&#8203;JstnMcBrd](https://github.com/JstnMcBrd) in [#&#8203;3554](https://github.com/we-promise/sure/pull/3554) - Support remaining trade activity types in API by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3297](https://github.com/we-promise/sure/pull/3297) - fix: scope account chart history and align inception dates by [@&#8203;nareddyt](https://github.com/nareddyt) in [#&#8203;3508](https://github.com/we-promise/sure/pull/3508) - Expose cash flow reporting and secure push-device continuity by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3545](https://github.com/we-promise/sure/pull/3545) - feat(investments): add Cash Management Account subtype by [@&#8203;JstnMcBrd](https://github.com/JstnMcBrd) in [#&#8203;3532](https://github.com/we-promise/sure/pull/3532) - Fix holding cost basis to relieve sells under weighted-average method by [@&#8203;markschoof](https://github.com/markschoof) in [#&#8203;3560](https://github.com/we-promise/sure/pull/3560) - feat(accounts): add expand/collapse all and default-expanded groups to sidebar and dashboard by [@&#8203;ampersandru](https://github.com/ampersandru) in [#&#8203;3551](https://github.com/we-promise/sure/pull/3551) - feat(loans): amortisation engine and variable-rate loans by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3473](https://github.com/we-promise/sure/pull/3473) - Add cash\_flow Sankey API and instrumented dashboard preview by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3558](https://github.com/we-promise/sure/pull/3558) - feat(fio): add Fio banka (CZ) bank sync by [@&#8203;janbuchar](https://github.com/janbuchar) in [#&#8203;3523](https://github.com/we-promise/sure/pull/3523) - Skip investment accounts when detecting bills and income by [@&#8203;brianespinoza](https://github.com/brianespinoza) in [#&#8203;3565](https://github.com/we-promise/sure/pull/3565) - fix: mask IBAN to last 4 characters in Lunch Flow account selection by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3574](https://github.com/we-promise/sure/pull/3574) - fix(snaptrade): trust reported trade amount and import trade fees by [@&#8203;JstnMcBrd](https://github.com/JstnMcBrd) in [#&#8203;3507](https://github.com/we-promise/sure/pull/3507) - Add hosted iOS push diagnostics and delivery safeguards by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3541](https://github.com/we-promise/sure/pull/3541) - fix(providers): use ProviderLogo for CoinSpot, Fio and the generator by [@&#8203;JstnMcBrd](https://github.com/JstnMcBrd) in [#&#8203;3581](https://github.com/we-promise/sure/pull/3581) - fix(providers): restore deletion flag when DestroyJob enqueue fails by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3562](https://github.com/we-promise/sure/pull/3562) - Release the transfer "unknown" cost basis once the position is closed by [@&#8203;markschoof](https://github.com/markschoof) in [#&#8203;3567](https://github.com/we-promise/sure/pull/3567) - fix(providers): move FioItem#destroy\_later onto DestroyableLater by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3584](https://github.com/we-promise/sure/pull/3584) - Improve Sankey preview comparison and feedback by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3585](https://github.com/we-promise/sure/pull/3585) - feat(mcp): add create\_transaction and delete\_transaction tools by [@&#8203;ampersandru](https://github.com/ampersandru) in [#&#8203;3542](https://github.com/we-promise/sure/pull/3542) - Roll up Investments panel holdings by security with portfolio weight by [@&#8203;bittensorrider](https://github.com/bittensorrider) in [#&#8203;2927](https://github.com/we-promise/sure/pull/2927) - Fix Codespaces login CSRF origin validation by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3610](https://github.com/we-promise/sure/pull/3610) - Fix EODHD Warsaw (XWAR) prices labelled as USD by [@&#8203;bittensorrider](https://github.com/bittensorrider) in [#&#8203;3141](https://github.com/we-promise/sure/pull/3141) - Fix E\*Trade cost\_basis stored as per-share when total by [@&#8203;alandtse](https://github.com/alandtse) in [#&#8203;3619](https://github.com/we-promise/sure/pull/3619) - docs: use DestroyableLater in provider generator guide by [@&#8203;janbuchar](https://github.com/janbuchar) in [#&#8203;3620](https://github.com/we-promise/sure/pull/3620) - fix(realie): support the v3 nested parcel record by [@&#8203;skitchbeatz](https://github.com/skitchbeatz) in [#&#8203;3627](https://github.com/we-promise/sure/pull/3627) - Convert a disposal's proceeds before subtracting its cost basis by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3616](https://github.com/we-promise/sure/pull/3616) - Include `.sure-version` in PostHog events by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3628](https://github.com/we-promise/sure/pull/3628) - feat: add Mansa API provider for NGX (Nigerian Exchange) securities by [@&#8203;thatkazuk1](https://github.com/thatkazuk1) in [#&#8203;3629](https://github.com/we-promise/sure/pull/3629) - fix(desktop): save attachment downloads and confirm them in the app by [@&#8203;Holdner](https://github.com/Holdner) in [#&#8203;3571](https://github.com/we-promise/sure/pull/3571) - Let household members own provider connections (Plaid) by [@&#8203;brianespinoza](https://github.com/brianespinoza) in [#&#8203;3613](https://github.com/we-promise/sure/pull/3613) - Add a money-weighted return calculator by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3611](https://github.com/we-promise/sure/pull/3611) - fix(demo): let the demo data reset clear the demo family it created by [@&#8203;Holdner](https://github.com/Holdner) in [#&#8203;3635](https://github.com/we-promise/sure/pull/3635) - fix(transfers): tighten cross-currency auto-match and exclude manual accounts by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3309](https://github.com/we-promise/sure/pull/3309) - fix: Render "Uncategorized" option as badge in transaction category selector by [@&#8203;alessiocappa](https://github.com/alessiocappa) in [#&#8203;3641](https://github.com/we-promise/sure/pull/3641) - fix: Make "Insight" button visible on mobile by [@&#8203;alessiocappa](https://github.com/alessiocappa) in [#&#8203;2691](https://github.com/we-promise/sure/pull/2691) - fix: Add border for logos in investments widget by [@&#8203;alessiocappa](https://github.com/alessiocappa) in [#&#8203;3642](https://github.com/we-promise/sure/pull/3642) - Filter Trade Republic PIN from request logs by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;3659](https://github.com/we-promise/sure/pull/3659) - Prefer prominent labels in the new Sankey chart by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3614](https://github.com/we-promise/sure/pull/3614) - Add FinanceKit device publisher by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3633](https://github.com/we-promise/sure/pull/3633) - Add an asset classification schema to securities by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3608](https://github.com/we-promise/sure/pull/3608) - fix: support all snaptrade sandbox transaction types and zero-cash corporate actions by [@&#8203;nareddyt](https://github.com/nareddyt) in [#&#8203;3653](https://github.com/we-promise/sure/pull/3653) - Add Apple Wallet settings, diagnostics, and realistic demo data by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3684](https://github.com/we-promise/sure/pull/3684) - Add Jev (TypeSafe) as a transaction-categorization provider by [@&#8203;thewillwilson](https://github.com/thewillwilson) in [#&#8203;3660](https://github.com/we-promise/sure/pull/3660) - fix(enable-banking): respect ASPSP consent duration instead of hardcoding 90 days by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3038](https://github.com/we-promise/sure/pull/3038) - fix(ai): treat blank OPENAI\_MODEL as unset when resolving the model by [@&#8203;joshiarnav](https://github.com/joshiarnav) in [#&#8203;3601](https://github.com/we-promise/sure/pull/3601) - Discover external assistant agents from models endpoint by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3674](https://github.com/we-promise/sure/pull/3674) - Stop FinanceKit data disagreements from ending ingestion by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3678](https://github.com/we-promise/sure/pull/3678) - Fix trade detail Buy/Sell type selection by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;3668](https://github.com/we-promise/sure/pull/3668) - Export and import provider-assigned merchants, reuse existing taxonomy on Sure import by [@&#8203;mikaelhm](https://github.com/mikaelhm) in [#&#8203;3671](https://github.com/we-promise/sure/pull/3671) - ProviderMerchant does not support color by [@&#8203;mikaelhm](https://github.com/mikaelhm) in [#&#8203;3725](https://github.com/we-promise/sure/pull/3725) - feat(bills): custom repeat interval, dated search rows and FR price notice fix by [@&#8203;Holdner](https://github.com/Holdner) in [#&#8203;3636](https://github.com/we-promise/sure/pull/3636) - Remove dead credit card overview partial and locale keys by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3710](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 [@&#8203;WeekendSuperhero](https://github.com/WeekendSuperhero) in [#&#8203;3450](https://github.com/we-promise/sure/pull/3450) - Complete ru, uk and tr translations by [@&#8203;thewillwilson](https://github.com/thewillwilson) in [#&#8203;3689](https://github.com/we-promise/sure/pull/3689) - Make on-chain wallet transfers cash-neutral by [@&#8203;bmaccafferty](https://github.com/bmaccafferty) in [#&#8203;3703](https://github.com/we-promise/sure/pull/3703) - Mention passwords in the Trade Republic login labels by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;3737](https://github.com/we-promise/sure/pull/3737) - Improve Trade Republic sync: routing, tickers, fees, and timeline quality by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;3669](https://github.com/we-promise/sure/pull/3669) - Derive transfer match FX rates via the family currency by [@&#8203;shkarinn](https://github.com/shkarinn) in [#&#8203;3701](https://github.com/we-promise/sure/pull/3701) - Fix Trade Republic QR login stalling after the scan by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;3738](https://github.com/we-promise/sure/pull/3738) - fix(ai): send OpenAI-compatible tool payloads that strict endpoints accept by [@&#8203;yaroslavshparuk](https://github.com/yaroslavshparuk) in [#&#8203;3727](https://github.com/we-promise/sure/pull/3727) - build(deps): bump rubyzip from 2.4.1 to 3.4.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;3732](https://github.com/we-promise/sure/pull/3732) - fix(transactions): stop merchant and security logos being squeezed when the row is tight by [@&#8203;connecht](https://github.com/connecht) in [#&#8203;3729](https://github.com/we-promise/sure/pull/3729) - fix(enable-banking): add missing booked balance types to priority list by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3739](https://github.com/we-promise/sure/pull/3739) - Show tags in the transaction list with an inline picker by [@&#8203;mikaelhm](https://github.com/mikaelhm) in [#&#8203;3734](https://github.com/we-promise/sure/pull/3734) - feat(loans): payoff projection and the loan balance chart by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3474](https://github.com/we-promise/sure/pull/3474) - feat(ui): make preferences country selector searchable by [@&#8203;felixmuinde](https://github.com/felixmuinde) in [#&#8203;3578](https://github.com/we-promise/sure/pull/3578) - Complete ca translations by [@&#8203;thewillwilson](https://github.com/thewillwilson) in [#&#8203;3691](https://github.com/we-promise/sure/pull/3691) - feat(mobile): add Swedish (sv) localization by [@&#8203;lixenstrand](https://github.com/lixenstrand) in [#&#8203;3750](https://github.com/we-promise/sure/pull/3750) - fix(i18n): improve Russian localization by [@&#8203;omnizs38](https://github.com/omnizs38) in [#&#8203;3763](https://github.com/we-promise/sure/pull/3763) - Keep Trade Republic cash balance intact for open orders by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;3760](https://github.com/we-promise/sure/pull/3760) - fix(yahoo): append the exchange suffix for European listings by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;3769](https://github.com/we-promise/sure/pull/3769) - Book Trade Republic trades on the linked cash account by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;3770](https://github.com/we-promise/sure/pull/3770) - Raise test\_system CI timeout to 15 minutes by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3785](https://github.com/we-promise/sure/pull/3785) - Support multiple Trade Republic connections per family by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3754](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 [@&#8203;joaocbatista](https://github.com/joaocbatista) in [#&#8203;3795](https://github.com/we-promise/sure/pull/3795) - Point ViewComponent 4 at LookbooksController so previews render by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3810](https://github.com/we-promise/sure/pull/3810) - Name the bills calendar link for where it goes by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3803](https://github.com/we-promise/sure/pull/3803) - Fix goal form amount width and consume dialog amount input by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3801](https://github.com/we-promise/sure/pull/3801) - Add the missing Up tagline to the Bank Sync provider list by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3802](https://github.com/we-promise/sure/pull/3802) - Style file inputs through the form builder by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3804](https://github.com/we-promise/sure/pull/3804) - Require write access to a trade's transfer account by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3816](https://github.com/we-promise/sure/pull/3816) - Add pt-BR locale for chats view by [@&#8203;fabricioctelles](https://github.com/fabricioctelles) in [#&#8203;3837](https://github.com/we-promise/sure/pull/3837) - Add DS::Table and move four hand-built tables onto it by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3805](https://github.com/we-promise/sure/pull/3805) - Use absolute keys for the four UI component strings that never resolved by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3808](https://github.com/we-promise/sure/pull/3808) - Wait for the save to land before navigating in two system tests by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3809](https://github.com/we-promise/sure/pull/3809) - Let themed utilities reach pseudo-elements in dark mode by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3817](https://github.com/we-promise/sure/pull/3817) - List connected Wise and CoinSpot under Your connections by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3834](https://github.com/we-promise/sure/pull/3834) - Wrap long URLs in the bank sync setup steps by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3823](https://github.com/we-promise/sure/pull/3823) - Show the hint passed to form fields as help\_text by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3822](https://github.com/we-promise/sure/pull/3822) - Render confirm dialog bodies as text by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3813](https://github.com/we-promise/sure/pull/3813) - Load system health AI checks lazily and finish its DS pass by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3828](https://github.com/we-promise/sure/pull/3828) - Stop Trade Republic push-login polling from looping by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;3765](https://github.com/we-promise/sure/pull/3765) - Keep rule-assigned categories on Trade Republic cash deposits by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;3791](https://github.com/we-promise/sure/pull/3791) - Resolve Trade Republic crypto to shared crypto securities by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;3806](https://github.com/we-promise/sure/pull/3806) - Import exchange rates for foreign security price currencies by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;3812](https://github.com/we-promise/sure/pull/3812) - feat(accounts): filter an account's activity to uncategorized transactions by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;3797](https://github.com/we-promise/sure/pull/3797) - Import Trade Republic crypto into a separate Crypto account by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;3807](https://github.com/we-promise/sure/pull/3807) - Fix demo family refresh retry loop by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;3839](https://github.com/we-promise/sure/pull/3839) - Stop showing connections with rejected credentials as Connected by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3854](https://github.com/we-promise/sure/pull/3854) - Stop the Plaid refresh check from loading dalli by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3846](https://github.com/we-promise/sure/pull/3846) - Accept each TOTP code only once by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3830](https://github.com/we-promise/sure/pull/3830) - fix(plaid): delete imported transactions that Plaid retracts by [@&#8203;DTTerastar](https://github.com/DTTerastar) in [#&#8203;3852](https://github.com/we-promise/sure/pull/3852) - Filter one-time codes from logs and hide raw DB errors from the API by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3831](https://github.com/we-promise/sure/pull/3831) - Remove dead account identifier columns (Questrade/Redbark/Monobank) by [@&#8203;gfr-free](https://github.com/gfr-free) in [#&#8203;3827](https://github.com/we-promise/sure/pull/3827) - fix(rules): stop "Dismiss" on the rule prompt silently snoozing all prompts by [@&#8203;scragnog](https://github.com/scragnog) in [#&#8203;3773](https://github.com/we-promise/sure/pull/3773) - Step through Reports periods with the arrow keys by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3855](https://github.com/we-promise/sure/pull/3855) - Fix patch release branch naming by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;3863](https://github.com/we-promise/sure/pull/3863) - Support GPT-6 Sol and GPT-6.1 Sol in the native OpenAI provider by [@&#8203;vlnd0](https://github.com/vlnd0) in [#&#8203;3771](https://github.com/we-promise/sure/pull/3771) - Let self-hosted super admins opt into the demo family refresh by [@&#8203;jjmata](https://github.com/jjmata) in [#&#8203;3859](https://github.com/we-promise/sure/pull/3859) - Fix Trade Republic cash kinds, activity labels and trade settlements by [@&#8203;nielseulink](https://github.com/nielseulink) in [#&#8203;3800](https://github.com/we-promise/sure/pull/3800) - Align the bank sync drawers with the Up panel by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3821](https://github.com/we-promise/sure/pull/3821) - Deploy alpha images to Render demo by [@&#8203;sure-admin](https://github.com/sure-admin) in [#&#8203;3865](https://github.com/we-promise/sure/pull/3865) - Make a blank goal earmark read as a choice, and editable in privacy mode by [@&#8203;gariasf](https://github.com/gariasf) in [#&#8203;3857](https://github.com/we-promise/sure/pull/3857) - Rescue [#&#8203;1775](https://github.com/we-promise/sure/issues/1775): loans overview new insights (editable fields, amortization, editable-field insights) by [@&#8203;jaysbeekay](https://github.com/jaysbeekay) in [#&#8203;3327](https://github.com/we-promise/sure/pull/3327) - fix(ibkr): anchor the balance on the statement's date, not on today by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;3815](https://github.com/we-promise/sure/pull/3815) - feat(transactions): filter by AI / AI history categorization status by [@&#8203;joshiarnav](https://github.com/joshiarnav) in [#&#8203;3603](https://github.com/we-promise/sure/pull/3603) - fix(kraken): keep a transfer fee out of the movement it is charged on by [@&#8203;dgsardina](https://github.com/dgsardina) in [#&#8203;3759](https://github.com/we-promise/sure/pull/3759) ##### New Contributors - [@&#8203;mr-u0b0dy](https://github.com/mr-u0b0dy) made their first contribution in [#&#8203;2868](https://github.com/we-promise/sure/pull/2868) - [@&#8203;Rowdy](https://github.com/Rowdy) made their first contribution in [#&#8203;3266](https://github.com/we-promise/sure/pull/3266) - [@&#8203;terafin](https://github.com/terafin) made their first contribution in [#&#8203;3271](https://github.com/we-promise/sure/pull/3271) - [@&#8203;jaysbeekay](https://github.com/jaysbeekay) made their first contribution in [#&#8203;3290](https://github.com/we-promise/sure/pull/3290) - [@&#8203;Demon-tk](https://github.com/Demon-tk) made their first contribution in [#&#8203;3301](https://github.com/we-promise/sure/pull/3301) - [@&#8203;JstnMcBrd](https://github.com/JstnMcBrd) made their first contribution in [#&#8203;3305](https://github.com/we-promise/sure/pull/3305) - [@&#8203;ololonly](https://github.com/ololonly) made their first contribution in [#&#8203;2529](https://github.com/we-promise/sure/pull/2529) - [@&#8203;TheRodzz](https://github.com/TheRodzz) made their first contribution in [#&#8203;2875](https://github.com/we-promise/sure/pull/2875) - [@&#8203;amariwan](https://github.com/amariwan) made their first contribution in [#&#8203;3168](https://github.com/we-promise/sure/pull/3168) - [@&#8203;pfbco](https://github.com/pfbco) made their first contribution in [#&#8203;3265](https://github.com/we-promise/sure/pull/3265) - [@&#8203;frap129](https://github.com/frap129) made their first contribution in [#&#8203;3362](https://github.com/we-promise/sure/pull/3362) - [@&#8203;AlexNovRS7](https://github.com/AlexNovRS7) made their first contribution in [#&#8203;3365](https://github.com/we-promise/sure/pull/3365) - [@&#8203;oliveiraigorm](https://github.com/oliveiraigorm) made their first contribution in [#&#8203;3391](https://github.com/we-promise/sure/pull/3391) - [@&#8203;WeekendSuperhero](https://github.com/WeekendSuperhero) made their first contribution in [#&#8203;3431](https://github.com/we-promise/sure/pull/3431) - [@&#8203;albertinisg](https://github.com/albertinisg) made their first contribution in [#&#8203;3460](https://github.com/we-promise/sure/pull/3460) - [@&#8203;yaroslavshparuk](https://github.com/yaroslavshparuk) made their first contribution in [#&#8203;3386](https://github.com/we-promise/sure/pull/3386) - [@&#8203;dcicco](https://github.com/dcicco) made their first contribution in [#&#8203;3373](https://github.com/we-promise/sure/pull/3373) - [@&#8203;Radoslaw-Dabrowski](https://github.com/Radoslaw-Dabrowski) made their first contribution in [#&#8203;3533](https://github.com/we-promise/sure/pull/3533) - [@&#8203;brianespinoza](https://github.com/brianespinoza) made their first contribution in [#&#8203;3537](https://github.com/we-promise/sure/pull/3537) - [@&#8203;nareddyt](https://github.com/nareddyt) made their first contribution in [#&#8203;3508](https://github.com/we-promise/sure/pull/3508) - [@&#8203;markschoof](https://github.com/markschoof) made their first contribution in [#&#8203;3560](https://github.com/we-promise/sure/pull/3560) - [@&#8203;janbuchar](https://github.com/janbuchar) made their first contribution in [#&#8203;3523](https://github.com/we-promise/sure/pull/3523) - [@&#8203;alandtse](https://github.com/alandtse) made their first contribution in [#&#8203;3619](https://github.com/we-promise/sure/pull/3619) - [@&#8203;skitchbeatz](https://github.com/skitchbeatz) made their first contribution in [#&#8203;3627](https://github.com/we-promise/sure/pull/3627) - [@&#8203;thatkazuk1](https://github.com/thatkazuk1) made their first contribution in [#&#8203;3629](https://github.com/we-promise/sure/pull/3629) - [@&#8203;nielseulink](https://github.com/nielseulink) made their first contribution in [#&#8203;3659](https://github.com/we-promise/sure/pull/3659) - [@&#8203;joshiarnav](https://github.com/joshiarnav) made their first contribution in [#&#8203;3601](https://github.com/we-promise/sure/pull/3601) - [@&#8203;bmaccafferty](https://github.com/bmaccafferty) made their first contribution in [#&#8203;3703](https://github.com/we-promise/sure/pull/3703) - [@&#8203;shkarinn](https://github.com/shkarinn) made their first contribution in [#&#8203;3701](https://github.com/we-promise/sure/pull/3701) - [@&#8203;connecht](https://github.com/connecht) made their first contribution in [#&#8203;3729](https://github.com/we-promise/sure/pull/3729) - [@&#8203;lixenstrand](https://github.com/lixenstrand) made their first contribution in [#&#8203;3750](https://github.com/we-promise/sure/pull/3750) - [@&#8203;omnizs38](https://github.com/omnizs38) made their first contribution in [#&#8203;3763](https://github.com/we-promise/sure/pull/3763) - [@&#8203;dgsardina](https://github.com/dgsardina) made their first contribution in [#&#8203;3769](https://github.com/we-promise/sure/pull/3769) - [@&#8203;fabricioctelles](https://github.com/fabricioctelles) made their first contribution in [#&#8203;3837](https://github.com/we-promise/sure/pull/3837) - [@&#8203;scragnog](https://github.com/scragnog) made their first contribution in [#&#8203;3797](https://github.com/we-promise/sure/pull/3797) - [@&#8203;DTTerastar](https://github.com/DTTerastar) made their first contribution in [#&#8203;3852](https://github.com/we-promise/sure/pull/3852) **Full Changelog**: <https://github.com/we-promise/sure/compare/v0.7.4...v0.7.5> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODguMCIsInVwZGF0ZWRJblZlciI6IjQzLjI4OC4wIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin 'renovate/ghcr.io-we-promise-sure-0.x:renovate/ghcr.io-we-promise-sure-0.x'
git switch 'renovate/ghcr.io-we-promise-sure-0.x'

Merge

Merge the changes and update on Forgejo.
git switch 'master'
git merge --no-ff 'renovate/ghcr.io-we-promise-sure-0.x'
git switch 'renovate/ghcr.io-we-promise-sure-0.x'
git rebase 'master'
git switch 'master'
git merge --ff-only 'renovate/ghcr.io-we-promise-sure-0.x'
git switch 'renovate/ghcr.io-we-promise-sure-0.x'
git rebase 'master'
git switch 'master'
git merge --no-ff 'renovate/ghcr.io-we-promise-sure-0.x'
git switch 'master'
git merge --squash 'renovate/ghcr.io-we-promise-sure-0.x'
git switch 'master'
git merge --ff-only 'renovate/ghcr.io-we-promise-sure-0.x'
git switch 'master'
git merge 'renovate/ghcr.io-we-promise-sure-0.x'
git push origin 'master'
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rick/infra!31
No description provided.