Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 22 additions & 7 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,19 @@ All notable changes to Bucketwise Planner will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.4.4] - 2026-04-08

### Fixed

- Profile page: salary and fixed expenses no longer revert on every keypress — `useEffect` dependency `[form]` replaced with `[]` to prevent Mantine `useForm` reference churn from triggering server re-fetches that overwrite in-progress edits (closes #24)
- Profile data isolation: `budget_profiles` now uses `user_id` as the primary key so each user's profile is always written to and read from their own row; previously all users shared `id='profile'`, causing multi-user data corruption

### Migration Notes

1. Migration `004-budget-profiles-user-id-primary-key.sql` runs automatically on backend startup
2. The migration deletes any orphaned rows (rows without a matching `users` record), promotes `user_id` to `PRIMARY KEY`, and drops the old `id TEXT` column — **back up your database before upgrading**
3. Existing profile data for authenticated users is preserved as long as their `user_id` FK reference is intact

## [0.4.3] - 2026-02-12

### Added
Expand Down Expand Up @@ -218,10 +231,12 @@ Learn more: https://www.barefootinvestor.com/

---

[0.3.0]: https://github.com/PaulAtkins88/bucketwise-planner/releases/tag/v0.3.0
[0.3.1]: https://github.com/PaulAtkins88/bucketwise-planner/releases/tag/v0.3.1
[0.4.0]: https://github.com/PaulAtkins88/bucketwise-planner/releases/tag/v0.4.0
[0.4.1]: https://github.com/PaulAtkins88/bucketwise-planner/releases/tag/v0.4.1
[0.4.2]: https://github.com/PaulAtkins88/bucketwise-planner/releases/tag/v0.4.2
[0.2.0]: https://github.com/PaulAtkins88/bucketwise-planner/releases/tag/v0.2.0
[0.1.0]: https://github.com/PaulAtkins88/bucketwise-planner/releases/tag/v0.1.0
[0.4.4]: https://github.com/solid-logic-studios/bucketwise-planner/releases/tag/v0.4.4
[0.4.3]: https://github.com/solid-logic-studios/bucketwise-planner/releases/tag/v0.4.3
[0.4.2]: https://github.com/solid-logic-studios/bucketwise-planner/releases/tag/v0.4.2
[0.4.1]: https://github.com/solid-logic-studios/bucketwise-planner/releases/tag/v0.4.1
[0.4.0]: https://github.com/solid-logic-studios/bucketwise-planner/releases/tag/v0.4.0
[0.3.1]: https://github.com/solid-logic-studios/bucketwise-planner/releases/tag/v0.3.1
[0.3.0]: https://github.com/solid-logic-studios/bucketwise-planner/releases/tag/v0.3.0
[0.2.0]: https://github.com/solid-logic-studios/bucketwise-planner/releases/tag/v0.2.0
[0.1.0]: https://github.com/solid-logic-studios/bucketwise-planner/releases/tag/v0.1.0
22 changes: 15 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Bucketwise Planner

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Tests](https://img.shields.io/badge/tests-54%20passing-brightgreen)](https://github.com/PaulAtkins88/bucketwise-planner)
[![Tests](https://img.shields.io/badge/tests-99%20passing-brightgreen)](https://github.com/solid-logic-studios/bucketwise-planner)
[![Security](https://img.shields.io/badge/security-SECURITY.md-blue)](SECURITY.md)
[![Release](https://img.shields.io/badge/release-v0.4.2-blue)](https://github.com/PaulAtkins88/bucketwise-planner/releases)
[![Release](https://img.shields.io/badge/release-v0.4.4-blue)](https://github.com/solid-logic-studios/bucketwise-planner/releases)

Multi-user budgeting app implementing Scott Pape's Barefoot Investor methodology. Fortnightly budgeting with bucket allocations (60/10/10/20), automated debt snowball payoff, transaction tracking, and optional AI financial advisor.

Expand Down Expand Up @@ -47,7 +47,7 @@ _This is a community-driven open-source implementation, not affiliated with or e
- Infrastructure Layer: PostgreSQL repositories, in-memory adapters
- Presentation Layer: HTTP controllers, middleware, routes
- **Optional AI**: Google Gen AI SDK (`@google/genai` v1.34.0) with Gemini 2.5 Flash (disabled by default)
- **Testing**: Vitest (54+ passing tests)
- **Testing**: Vitest (99+ passing tests)

### Frontend

Expand Down Expand Up @@ -154,7 +154,7 @@ volumes:

```bash
# Clone and start
git clone https://github.com/PaulAtkins88/bucketwise-planner.git
git clone https://github.com/solid-logic-studios/bucketwise-planner.git
cd bucketwise-planner
cp .env.example .env
# Edit .env with your secrets (JWT_SECRET, ADMIN_SECRET, etc.)
Expand Down Expand Up @@ -222,6 +222,10 @@ cd backend && pnpm run db:ensure-schema
psql "$PG_CONNECTION_STRING" < backend/migrations/003-backfill-fortnight-timezone-bounds.sql
# or run the helper script:
pnpm --filter backend db:backfill-fortnight-bounds

# Migration 004 (if upgrading from <= 0.4.3): promotes user_id to primary key in budget_profiles
# This runs automatically on startup — back up your database first if you have profile data
psql "$PG_CONNECTION_STRING" < backend/migrations/004-budget-profiles-user-id-primary-key.sql
```

Linux (apt-based):
Expand Down Expand Up @@ -252,6 +256,10 @@ cd backend && pnpm run db:ensure-schema
psql "$PG_CONNECTION_STRING" < backend/migrations/003-backfill-fortnight-timezone-bounds.sql
# or run the helper script:
pnpm --filter backend db:backfill-fortnight-bounds

# Migration 004 (if upgrading from <= 0.4.3): promotes user_id to primary key in budget_profiles
# This runs automatically on startup — back up your database first if you have profile data
psql "$PG_CONNECTION_STRING" < backend/migrations/004-budget-profiles-user-id-primary-key.sql
```

Notes:
Expand Down Expand Up @@ -303,7 +311,7 @@ Notes:

## 🧪 Testing

- **54+ passing tests** (Vitest framework)
- **99+ passing tests** (Vitest framework)
- **Unit tests:** Domain entities, value objects, use cases
- **Integration tests:** API endpoints with test database
- **Coverage:** Maintained >80% for critical paths
Expand Down Expand Up @@ -432,8 +440,8 @@ MIT License — Free for personal and commercial use. See [LICENSE](LICENSE) for
## 🆘 Support & Community

- 📖 **Documentation:** [docs/](docs/), [README files](backend/README.md)
- 💬 **Questions:** [GitHub Discussions](https://github.com/PaulAtkins88/bucketwise-planner/discussions)
- 🐛 **Bug Reports:** [GitHub Issues](https://github.com/PaulAtkins88/bucketwise-planner/issues)
- 💬 **Questions:** [GitHub Discussions](https://github.com/solid-logic-studios/bucketwise-planner/discussions)
- 🐛 **Bug Reports:** [GitHub Issues](https://github.com/solid-logic-studios/bucketwise-planner/issues)
- 🆘 **Help:** [SUPPORT.md](SUPPORT.md) and [docs/FAQ.md](docs/FAQ.md)

## 🌟 Roadmap
Expand Down
Loading
Loading