Releases: becauseimclever/BudgetExperiment
Releases · becauseimclever/BudgetExperiment
v3.24.3
[3.24.3] - 2026-03-18
Bug Fixes
- Update Dockerfile.prebuilt with chiseled-extra and ICU support
Full Changelog: v3.24.2...v3.24.3
v3.24.2
[3.24.2] - 2026-03-18
Bug Fixes
- Disable globalization-invariant mode in Docker image
Full Changelog: v3.24.1...v3.24.2
v3.24.1
[3.24.1] - 2026-03-18
Bug Fixes
- Use noble-chiseled-extra image for ICU globalization support
Full Changelog: v3.24.0...v3.24.1
v3.24.0
[3.24.0] - 2026-03-18
Bug Fixes
- Return 404 for unmatched API routes instead of SPA fallback
Documentation
- Add feature docs 108-111
- Add feature docs 114-117
- Archive feature docs 091-100
- Add feature 118 - PostgreSQL 18 upgrade plan
Features
- perf: Add API performance testing infrastructure (Feature 112)
- perf: Add API performance testing infrastructure (Feature 112)
- perf: Add dedicated performance test environment using Raspberry Pi 5
- docker: Use hardened Docker images
- api: Add production logging and observability stack
- 110: Debug log export - phases 1-4 (WIP)
- Add debug log export docs, bug report template, archive docs 101-110
- docs: Add feature 119 - Recurring Charge Detection & Suggestions documentation
- Initial page load performance optimizations (Feature 117)
Miscellaneous
Full Changelog: v3.23.0...v3.24.0
v3.23.0
[3.23.0] - 2026-03-12
Documentation
- Add feature 105 — AI suggestions UX redesign
- Update CHANGELOG for v3.23.0
Features
- AI suggestion quality improvements (Features 105 & 106)
- Implement Feature 107 - Unified Transaction List with actionable operations
Full Changelog: v3.22.0...v3.23.0
v3.22.0
[3.22.0] - 2026-03-09
Bug Fixes
- import: Handle sanitized negative amounts in CSV import
- Set en-US culture in ChatMessageBubbleTests for CI compatibility
Documentation
- Add culture-sensitive formatting guidance to copilot instructions
- client: Document ViewModel extraction pattern (Feature 097 done)
- Add feature docs 098-104 for ViewModel extraction of remaining pages
- Add v3.22.0 changelog — ViewModel extraction, test coverage, CI improvements
Features
- 095: Add client test coverage phase 2 - API services and page tests
- tests: Expand client test coverage - Phase 6 + P1 pages
- docs: Establish localization infrastructure for multi-language support
- client: Add CategoriesViewModel with comprehensive unit tests
- 098: Extract RulesViewModel from Rules.razor
- 099: Extract AccountsViewModel from Accounts.razor
- Extract BudgetViewModel from Budget.razor (Feature 100)
- client: Extract RecurringViewModel from Recurring.razor (#101)
- Extract RecurringTransfersViewModel from Razor code block (Feature 102)
- client: Extract TransfersViewModel from Transfers.razor (#103)
- 104: Extract OnboardingViewModel from Onboarding.razor
Miscellaneous
- deps: Bump docker/build-push-action from 5 to 6
- deps: Bump actions/setup-dotnet from 4 to 5
- deps: Bump actions/download-artifact from 4 to 8
- deps: Bump actions/checkout from 4 to 6
- deps: Bump dorny/test-reporter from 1 to 2
- Bump dotnet-ef from 10.0.0-preview.7.25380.108 to 10.0.3
- Bump Microsoft.Build.Tasks.Core from 18.0.2 to 18.3.3
- Bump the extensions group with 2 updates
Refactoring
- client: Wire Categories.razor to CategoriesViewModel
Testing
- client: Add tests for P2 page components
- client: Add chat and display component tests
- client: Add P3 page, service, and model tests
- client: Deepen page handler coverage toward 65% target
- client: Deepen page handler coverage to reach 65% target
What's Changed
- chore(deps): bump docker/build-push-action from 5 to 6 by @dependabot[bot] in #18
- chore(deps): bump actions/setup-dotnet from 4 to 5 by @dependabot[bot] in #19
- chore(deps): bump actions/download-artifact from 4 to 8 by @dependabot[bot] in #20
- chore(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in #21
- chore(deps): bump dorny/test-reporter from 1 to 2 by @dependabot[bot] in #22
- chore: Bump the extensions group with 2 updates by @dependabot[bot] in #24
- chore: Bump dotnet-ef from 10.0.0-preview.7.25380.108 to 10.0.3 by @dependabot[bot] in #28
- chore: Bump Microsoft.Build.Tasks.Core from 18.0.2 to 18.3.3 by @dependabot[bot] in #29
New Contributors
- @dependabot[bot] made their first contribution in #18
Full Changelog: v3.21.0...v3.22.0
v3.21.0
[3.22.0] - 2026-03-09
Bug Fixes
- import: Handle sanitized negative amounts in CSV import
- Set en-US culture in ChatMessageBubbleTests for CI compatibility
Documentation
- Add culture-sensitive formatting guidance to copilot instructions
- client: Document ViewModel extraction pattern (Feature 097 done)
- Add feature docs 098-104 for ViewModel extraction of remaining pages
- Add v3.22.0 changelog — ViewModel extraction, test coverage, CI improvements
Features
- 095: Add client test coverage phase 2 - API services and page tests
- tests: Expand client test coverage - Phase 6 + P1 pages
- docs: Establish localization infrastructure for multi-language support
- client: Add CategoriesViewModel with comprehensive unit tests
- 098: Extract RulesViewModel from Rules.razor
- 099: Extract AccountsViewModel from Accounts.razor
- Extract BudgetViewModel from Budget.razor (Feature 100)
- client: Extract RecurringViewModel from Recurring.razor (#101)
- Extract RecurringTransfersViewModel from Razor code block (Feature 102)
- client: Extract TransfersViewModel from Transfers.razor (#103)
- 104: Extract OnboardingViewModel from Onboarding.razor
Miscellaneous
- deps: Bump docker/build-push-action from 5 to 6
- deps: Bump actions/setup-dotnet from 4 to 5
- deps: Bump actions/download-artifact from 4 to 8
- deps: Bump actions/checkout from 4 to 6
- deps: Bump dorny/test-reporter from 1 to 2
- Bump dotnet-ef from 10.0.0-preview.7.25380.108 to 10.0.3
- Bump Microsoft.Build.Tasks.Core from 18.0.2 to 18.3.3
- Bump the extensions group with 2 updates
Refactoring
- client: Wire Categories.razor to CategoriesViewModel
Testing
- client: Add tests for P2 page components
- client: Add chat and display component tests
- client: Add P3 page, service, and model tests
- client: Deepen page handler coverage toward 65% target
- client: Deepen page handler coverage to reach 65% target
Full Changelog: v3.20.0...v3.21.0
v3.20.0
[3.20.0] - 2026-03-07
Testing
- Add client component and service test coverage (Phases 1-2)
- Add client component test coverage for common, import, AI, reconciliation, navigation (Feature 091 Phases 3-5)
Full Changelog: v3.19.0...v3.20.0
v3.19.0
[3.20.0] - 2026-03-07
Testing
- Add client component and service test coverage (Phases 1-2)
- Add client component test coverage for common, import, AI, reconciliation, navigation (Feature 091 Phases 3-5)
Full Changelog: v3.17.0...v3.19.0
v3.17.0
[3.17.0] - 2026-03-06
CI/CD
- docker: Restrict to tag releases + manual dispatch
Documentation
- Close feature 059, defer CI enablement to #17
- 061: Mark feature as done — all 3 slices complete
- Update Feature 078 doc to Done status with actual scope
- Update CHANGELOG with Feature 079 and 080 entries
- 080: Update Feature 080 doc — mark prerequisite done, add test coverage table, expand long methods list
- Remove individual feature docs 071-080 (archived in docs/archive/)
- Update 082 status and CHANGELOG for concurrency Slices 1-2
Features
- ci: Add CI workflow, move PR triggers from Docker to CI
- Multi-feature batch — location choropleth, dismissed suggestions view, docs archive
- 061: Slice 2 — restore dismissed category suggestions
- 061: Slice 3 — clear dismissed suggestion patterns
- 063: Enhance CSV import security by moving parsing to client-side
- Secure file upload hardening (Feature 063)
- app: Replace hardcoded USD with ICurrencyProvider (Feature 064)
- docs: Add feature specifications for code improvements
- Add Dependabot configuration for automated dependency updates
- docs: Add CI and release badges to README
- Features 061-070 — suggestions, onboarding, scope fix, E2E, bug fixes
- 075: Split remaining multi-type files (Slices 6-8)
- api: Add runtime API versioning with Asp.Versioning (Feature 081)
- api: Implement optimistic concurrency Slice 1 - Foundation + Account
- api: Implement optimistic concurrency Slice 2 - Transaction
- api: Add ETag/If-Match concurrency for BudgetCategory and BudgetGoal (082 Slice 3)
- 082: Optimistic concurrency slices 4-7 — recurring, secondary aggregates, client integration
- api: Code hygiene fixes — middleware hardening, async naming, transfer pagination, docs & DI (Feature 084)
Refactoring
- contracts: Split 2-type DTO files into one-per-file (Slice 1)
- contracts: Split CRUD DTO files into one-per-file (Slice 2)
- contracts: Split medium DTO files into one-per-file (Slice 3)
- contracts: Split large DTO files into one-per-file (Slice 4)
- application: Split service interface files into one-per-file (Slice 5)
- domain: Rename 17 value objects with Value suffix
- domain: Organize interfaces into Services/ and Identity/ folders
- all: Re-enable StyleCop analyzers, fix ~1500 violations (Feature 078)
- all: Decouple Client from Domain — extract shared enums to BudgetExperiment.Shared (Feature 079)
- Decompose ImportService into focused sub-services (Phase 1)
- app: Decompose RuleSuggestionService and NaturalLanguageParser (Feature 080 Phase 2)
- app: Decompose ReconciliationService and ReportService (Feature 080 Phase 3)
- app: Decompose remaining god services (Phase 5)
- domain: Extract DescriptionSimilarityCalculator from TransactionMatcher
- Centralize OIDC claim name strings into ClaimConstants
- Centralize magic strings into shared constants (Feature 083)
Testing
- e2e: Add unit tests for performance threshold logic
- app: Add 36 unit tests for RecurringTransactionService, update Feature 080 doc (Feature 080)
Full Changelog: v3.16.1...v3.17.0