Commit Graph

13 Commits

Author SHA1 Message Date
99b4dd2368 Automate versioning + changelog on every deploy (v0.2.0)
- changelog.json is now the single source of truth; version.py reads it.
- release.py: one command to bump version + prepend a changelog entry + regen
  CHANGELOG.md. Dogfooded to cut 0.2.0.
- repo CLAUDE.md documents the MANDATORY 'cut a release on every deploy' rule
  + deploy/secrets conventions, so it applies to anyone who pulls the repo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 17:00:47 -05:00
e381b615d6 Add version chip (v0.1.0) + changelog
- version.py: __version__ = 0.1.0 + structured CHANGELOG (newest first).
- footer version chip on every page (base.html) links to /changelog.
- /changelog page renders release notes; CHANGELOG.md mirrors it.
- 0.1.0 captures the storage/SQLite/settings/suggestions/backup work.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:55:25 -05:00
dc9717a59b Fix /month 500: malformed Jinja in month.html budget total
budgeted_by_cat.values( | money|sum)  ->  budgeted_by_cat.values()|sum|money
Pre-existing template syntax error, unrelated to storage.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:44:58 -05:00
f3485fdc17 Migrate transactions to SQLite (self-contained, on the volume)
- txns_db.py: SQLite store with the same list-of-dicts shape, ACID writes
  (no corruption / no lost-update race), indexes, and a fast unreviewed COUNT.
- app.py: get_transactions/save_transactions delegate to txns_db; one-time
  idempotent migration from transactions.json on startup (JSON kept as backup);
  nav badge uses count_unreviewed() instead of parsing the whole store (#33).
- Verified against the live 265-row dataset: counts, fields, splits, mutation.
- Other small JSON files intentionally stay JSON.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:43:03 -05:00
74d5e196c7 Add in-app Settings page for secrets; move Gmail creds out of source
- settings.py: JSON-on-volume store with env fallback; secrets never rendered.
- /settings page (⚙️ in nav) to set Gmail address + app password + reminder prefs;
  password fields are write-only (blank keeps existing).
- reminders.py reads Gmail creds from Settings instead of a hardcoded password
  (resolves #2 in code — note the old password is still in git history; rotate it).
- mac_notification no longer crashes off-macOS; FLASK_DEBUG gates debug (#7).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:38:20 -05:00
be74ca1eb7 Harden JSON storage (atomic writes + crash-safe loads) + suggestions lightbulb
- storage.py: atomic save_json (temp+fsync+os.replace) and load_json that
  survives missing/corrupt files (moves corrupt aside). Closes #11/#12.
- route all data modules + app.py helpers through storage (closes #31 core);
  fixes mutable DEFAULT_FUNDS/DEFAULT_CARS return (#23).
- gunicorn --workers 1 --threads 4 to remove the write race (#13); strip
  Dockerfile template scaffolding (#40).
- base.html: 💡 suggestions link in the shared nav (shows on every page).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:34:06 -05:00
494f5e3b5b Fix backups for JSON-file storage + healthcheck; drop handoff folder
- backup.sh: snapshot all of /data as timestamped tar.gz to local NAS path;
  push to B2 only when a real bucket/key is set (no more nonexistent app.db).
- compose: working CMD-SHELL healthcheck; mount /mnt/user/Backup target.
- remove the accidentally committed moon-household-budget-handoff/ scaffolding.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 14:43:35 -05:00
Bonna
8ea4c978dd Update allowed commands in local Claude settings
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 14:32:58 -05:00
Bonna
9218994cce Fix DATA_DIR env var in all modules 2026-06-06 14:29:13 -05:00
Bonna
481f26d530 Fix missing python-dateutil dependency 2026-06-06 14:28:07 -05:00
Bonna
932488e40d Add suggestions feature: Gitea-backed feedback → issues 2026-06-06 14:26:34 -05:00
Bonna
7f2057f139 Dockerize: self-contained stack + B2 backup sidecar 2026-06-06 14:25:45 -05:00
Bonna
fa3c030b36 Initial commit — Moon Household Budget 2026-06-06 14:22:57 -05:00