What's Changed
- Keep Minitest on 5.x until the test suite is migrated by @sure-admin in #4880
- fix(auth): return 400 on mobile signup when user payload is missing by @sentry[bot] in #4869
- Migrate the test suite to Minitest 6.1 by @jjmata in #4881
- Bump actionpack from 8.1.3.1 to 8.1.4.1 by @dependabot[bot] in #4862
- Match combobox hover assertions to browser capabilities by @jjmata in #4883
- Bump actionmailbox from 8.1.3.1 to 8.1.4.1 by @dependabot[bot] in #4868
- Add InvestmentStatement#holdings_table_rows for a holdings table by @jaysbeekay in #4761
- Simplify the rule prompt and add a Rule suggestions setting by @adam2504 in #4786
- chore: update to posthog-rails 3.26.0 by @sure-admin in #4882
- security: add an audit log for sensitive account operations by @gfr-free in #3264
- Skip the account holder's name when matching card payment merchants by @Dx-Alz-xD in #4840
- Add allocation by account, currency and kind by @jaysbeekay in #4910
- fix(anthropic): stringify symbol keys in PDF extracted_data by @sx4im in #4875
- Add Indian number grouping for INR and Indian locales by @DataEnginr in #4680
- fix(money): use the en-IE locale key when formatting euros by @kevin9327 in #4921
- Import Trade Republic transfer payment references as transaction notes by @cwrau in #4833
- Use the destructive token for the required-field asterisk by @rudycelekli in #4922
- fix(security): use ready? instead of explicitly_configured? for encryption gating by @gfr-free in #3189
- Stop accepting category_id on the trades API by @jaysbeekay in #4734
- Keep Sophtron card charges as outflows on lender-signed feeds by @ronihcohen in #4886
- fix(trade-republic): import securities transfers as zero-amount trades by @sx4im in #4876
- Feature/manual transaction reconciliation by @DataEnginr in #2950
- Reset provider connections for every syncable provider by @momolly1024 in #4923
- Fix self-hosted settings access alongside demo households by @sure-admin in #4916
- Move LLM prices to a config file refreshed on release by @vlnd0 in #4666
- Encrypt every table in the backfill and document adding keys to an instance with data by @gfr-free in #4936
- feat(i18n): add zh-CN for rules, rule groups and admin users by @KenTandrian in #4928
- security: gate plaintext encryption fallback behind a backfill-completion flag by @gfr-free in #3221
- feat(i18n): add ID translations for user settings and preferences by @KenTandrian in #4929
- Loans: split payments into principal and interest by @DataEnginr in #4470
- Fix date-dependent full-term loan payment tests by @sure-admin in #4948
- Make a category change end the AI's and Bayes' claim on it by @ycsin in #4814
- security: close remaining plaintext-storage gaps found while auditing #3142 by @gfr-free in #3190
- Add four missing en keys that render as translation_missing by @rudycelekli in #4917
- fix(mcp): answer GET and DELETE /mcp with 405 Method Not Allowed by @sx4im in #4920
- Start Pipelock's MCP listener with Pipelock 3.2 and later by @luis-ibanez in #4947
- Store holding lots and re-key them on remap and reset by @jaysbeekay in #4899
- Update Pipelock to 3.8.0 by @luckyPipewrench in #4951
- feat(i18n): add zh-CN for Monarch imports and portfolios by @KenTandrian in #4967
- feat(i18n): add ID translations for AI, security, and system settings by @KenTandrian in #4968
- Bump msgpack from 1.8.2 to 1.8.7 by @dependabot[bot] in #4974
- Map Yahoo's Xetra exchange code to XETR by @arnaurodondev in #4963
- fix(simplefin): retry transient HTTP 5xx responses in get_accounts by @andrew-manger in #4964
- Bump addressable from 2.9.0 to 2.9.1 by @dependabot[bot] in #4973
- Keep pre-existing entries when reverting a deduping transaction import by @arnaurodondev in #4960
- Require the current password when password_challenge is sent as null by @gfr-free in #4990
- feat(i18n): add German translations for loans, properties, rules and budgets by @temp in #4977
- docs: fix two broken relative links in hosting and mobile READMEs by @viwe-monai in #4983
- feat(i18n): add ID translations for self-hosting settings by @KenTandrian in #4976
- fix(i18n): use informal address throughout the German locale by @temp in #4980
- feat(i18n): add German translations for self-hosting settings by @temp in #4979
- feat(i18n): add German translations for transactions and imports by @temp in #4978
- feat(i18n): add zh-CN for transactions, invitations, and residuals by @KenTandrian in #4982
- feat(i18n): add ID translations for provider settings by @KenTandrian in #5004
- Derive the reset's provider connections from the family sync by @momolly1024 in #4927
- Speed up PR CI: shard unit and system tests, skip non-Rails changes by @gfr-free in #4950
- Match Plaid and Up categories to default categories in any locale by @alpha216 in #4997
- Make the sidekiq-cron grace period configurable by @arnaurodondev in #4972
- Record CoinSpot buys as cash out and sells as cash in by @rudycelekli in #4985
- Add a Cash Flow Rings dashboard widget by @huantrinh1802 in #4986
- fix(statements): sync extracted metadata from PdfImport to AccountStatement by @egadb in #5001
- Expose settled bill payments from the bill drawer by @DataEnginr in #4706
- feat(i18n): add zh-CN translations for system health, pages, and imports by @KenTandrian in #5008
- feat(i18n): add ID translations for import views by @KenTandrian in #5007
- Add search and filters to the merchant page by @bdsoha in #4663
- Count next month's bills in a pay period's due total by @bdsoha in #4556
- Use one imperative form in the German system health guidance by @temp in #5009
- feat(i18n): add ID translations for import models and mailers by @KenTandrian in #5010
- Show how much of a transaction other bills already use by @bdsoha in #4550
- fix(kraken): only add Earn allocations that BalanceEx doesn't already hold by @rtammekivi in #4941
New Contributors
- @adam2504 made their first contribution in #4786
- @sx4im made their first contribution in #4875
- @kevin9327 made their first contribution in #4921
- @cwrau made their first contribution in #4833
- @rudycelekli made their first contribution in #4922
- @ronihcohen made their first contribution in #4886
- @momolly1024 made their first contribution in #4923
- @luis-ibanez made their first contribution in #4947
- @arnaurodondev made their first contribution in #4963
- @andrew-manger made their first contribution in #4964
- @temp made their first contribution in #4977
- @viwe-monai made their first contribution in #4983
- @alpha216 made their first contribution in #4997
- @egadb made their first contribution in #5001
Full Changelog: v2026.11.10-alpha...v2026.11.14-alpha