whisper-money/app
Víctor Falcón b8928234ae Align server rule normalization with the client and lock it with parity fixtures
resources/js/lib/rule-engine.ts protects the description, notes, creditor_name
and debtor_name var references from being lowercased during normalization,
while AutomationRuleService::normalizeRuleJson only listed description and notes.
The two engines had drifted, and nothing stopped them drifting further.

Extend the PHP protected set to the same four fields (the superset) and add a
shared tests/Fixtures/rule-engine-parity.json driven by both a PHP feature test
(via AutomationRuleService::ruleMatches) and a TS vitest suite (via
evaluateRulesForNewTransaction), so the same rule + transaction must yield the
same match/no-match on both sides. Behaviour-preserving: existing creditor/debtor
matching tests already passed, and this closes the divergence for good.
2026-07-04 20:48:18 +02:00
..
Actions fix(security): scope job-status endpoints to owner + feature-area fixes (#627) 2026-07-03 14:49:32 +02:00
Ai/Agents feat(ai): auto-categorize transactions with AI (behind flag) (#535) 2026-06-15 16:35:20 +02:00
Console/Commands feat(encryption): commands to warn and remove inactive encrypted-data accounts (#633) 2026-07-03 15:57:04 +00:00
Contracts feat(connections): manage which accounts a bank connection syncs (#558) 2026-06-18 16:22:49 +02:00
Enums feat(transactions): serve import dedup and account ledger from the backend (#631) 2026-07-03 16:49:59 +02:00
Events Add Budgeting Feature to Track and Manage Spending (#36) 2026-01-21 15:25:50 +01:00
Exceptions/Banking fix(banking): skip inaccessible EnableBanking accounts instead of failing the connection (#559) 2026-06-19 08:59:05 +02:00
Features refactor(ai): remove AiConsentSettings feature flag (#619) 2026-07-01 09:47:55 +02:00
Http Batch net-worth balance lookups to kill the per-account N+1 2026-07-04 20:48:18 +02:00
Jobs fix(security): scope job-status endpoints to owner + feature-area fixes (#627) 2026-07-03 14:49:32 +02:00
Listeners fix(discord): show old → new plan on plan change notification (#637) 2026-07-04 15:49:09 +00:00
Mail feat(email): follow up after post-onboarding AI consent (#596) 2026-06-26 17:56:06 +00:00
Models Move income/expense-side classification onto the Transaction model 2026-07-04 20:48:18 +02:00
Notifications fix: verify email via signed link without requiring login (#490) 2026-06-05 10:01:32 +02:00
Policies refactor(policies): extract HandlesUserOwnership trait (#478) 2026-06-03 17:43:30 +02:00
Providers fix: stop double-dispatching transaction listeners (N+1 insert into jobs) (#620) 2026-07-02 13:26:45 +00:00
Rules feat: parent/child category tree (#474) 2026-06-03 19:30:12 +02:00
Services Align server rule normalization with the client and lock it with parity fixtures 2026-07-04 20:48:18 +02:00