Commit Graph
15 Commits
Author SHA1 Message Date
nmemmertandClaude Sonnet 4.6 c1b7dcacb7 Fix git safe.directory error on upgrade
When running as root on an existing install, git refuses to operate on
a repo owned by a different user. Mark the install dir as safe before pulling.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 10:58:37 -04:00
nmemmertandClaude Sonnet 4.6 16ab65d4ec Add Available to Budget envelope view and fix transaction/account delete bugs
- Envelopes view: "Available to Budget" card shows checking+savings balance
  minus total envelope allocations — turns red if over-allocated
- Income transactions in ManualEntry: envelope picker labeled clearly,
  green highlight, helper text explaining effect on Available to Budget,
  default option "Leave in Available to Budget"
- Fix account delete: now removes the account's transactions and
  recalculates envelope spending
- Fix transaction edit/delete: use functional state updater to avoid
  stale closure bug on accounts/envelopes recalculation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 10:55:41 -04:00
nmemmertandClaude Sonnet 4.6 77f571fbcf Rewrite README for bare-metal install and current feature set
Replaces outdated container-focused README with accurate docs:
one-line install, 2FA, backup/restore migration guide, data storage layout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 09:30:54 -04:00
nmemmertandClaude Sonnet 4.6 028265dd60 Add bare-metal installer and in-app backup/restore
install.sh: no-Docker one-liner for cloud VPS
- Installs Node.js 20 via NodeSource if missing (Ubuntu/Debian/RHEL/Rocky)
- Clones to /opt/capsule, builds, creates a systemd service
- Re-running upgrades in place (git pull + rebuild)

Backup & Restore (Settings → Backup & Restore tab):
- Download Backup: streams all data/ as a .tar.gz (pure Node zlib, no deps)
- Restore: upload a .tar.gz to replace server data, auto sign-out after

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 09:29:45 -04:00
nmemmertandClaude Sonnet 4.6 08388431ac Remove leftover Firebase build-args from Docker workflow
App no longer uses Firebase — these were vestigial from an earlier version.
The exposed API key should be rotated in the Firebase console.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 09:22:48 -04:00
nmemmertandClaude Sonnet 4.6 52293d7db3 Add TOTP 2FA and retroactive rule application
- TOTP-based two-factor authentication (RFC 6238, HMAC-SHA1): setup, enable, disable in Settings → Password & Security
- Login flow: password verified first, then temp token issued for 5-min TOTP window before full session is granted
- QR code generated server-side via `qrcode` package for scanning with any authenticator app
- "Run Rules Now" button in TransactionRulesManager applies auto-categorization rules to existing uncategorized expenses

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 09:20:44 -04:00
nmemmertandClaude Sonnet 4.6 5339e9818a Add account sharing, Get Paid schedule, recurring manager, overspend warnings, mobile nav
Account sharing:
- fileStorage: add shares.json with createShare/listShares/getShareData/revokeShare
- /api/share/account: real implementation using session token
- /api/share/list: GET endpoint returning owned + received shares
- /api/share/data: GET endpoint to fetch a shared account's data
- SharedAccountManager: use session token, load existing shares, revoke support
- AccountManagement: render SharedAccountManager per-account
- page.tsx: load received shares on login, show "Shared with me" cards in Accounts view

Get Paid schedule:
- PaycheckSchedule type: weekly/biweekly/semimonthly/monthly with day config
- computeNextPayday(): calculates next payday from today
- Schedule UI in GetPaid modal with live "Next payday: ..." preview
- Schedule persisted to localStorage template

Recurring transaction manager:
- Fix biweekly support (was missing)
- Show "due now" vs "upcoming" with amber badge for overdue
- Render in Transactions view; onApplyRecurring creates new transactions + updates lastAppliedDate

Envelope overspending:
- Red warning banner at top of Envelopes view listing overspent envelopes
- Red ring on individual overspent envelope cards

Mobile layout:
- Fixed bottom tab bar (Home/Accounts/Txns/Envelopes/More) on sm: and below
- Active tab highlighted in blue
- Main content padded to avoid being hidden by bottom nav

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 09:10:10 -04:00
nmemmertandClaude Sonnet 4.6 18fe6b5141 Add CSV import UI, recurring transactions, and security fixes
- FileUpload: full rewrite with column mapping, split debit/credit columns,
  negate toggle, duplicate detection, OFX/QFX support, and live preview
- ManualEntry: add recurring transaction checkbox with weekly/biweekly/monthly/yearly options
- DataInput: pass existingTransactions to FileUpload for duplicate detection
- Settings: use session token for delete-account; replace reset-code password
  flow with proper current+new password form
- page.tsx: fix TypeScript build error by mapping date strings to Date objects
  after setup wizard completes
- SetupWizard: fix hasSplit boolean type error

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 08:56:59 -04:00
nmemmertandClaude Sonnet 4.6 8f9e9269ec Add CSV import to setup wizard
- New csv-import wizard step with file upload, auto column detection, column mapping UI, split-debit/credit support, and 5-row preview
- Imports transactions and auto-calculates account balance from CSV data
- Uses pendingImportedTransactions state (not side-channel) to reliably pass transactions through to saveUserData
- handleSetupComplete reloads from server so imported transactions appear in the UI immediately after wizard completes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 08:45:17 -04:00
nmemmertandClaude Sonnet 4.6 20ea25f4de Major feature release: security hardening + Goals, Rules, search, charts
Security:
- Replace SHA-256 password hashing with bcrypt (cost 12) + timing-safe compare
- Introduce server-side session tokens (x-session-token header); drop x-user-id
- Add /api/auth/logout endpoint to invalidate sessions
- Enforce 8-char minimum password server-side
- Fix password reset: now uses real signed tokens with 1-hour TTL

Features:
- Goals: savings goals with progress bars, target dates, add/withdraw funds
- Auto-categorization Rules: keyword → envelope mapping applied on transaction add
- Transaction search/filter: description, account, envelope, date range
- Transaction table: shows envelope color dot, running balance column
- Monthly Spending History chart (last 6 months income vs expenses bar chart)
- Spending Insights: month-over-month comparison + overspent envelope callouts
- Budget progress expanded: per-envelope bars with rollover indicator
- Envelope rollover toggle: unspent funds can carry forward
- Recurring transactions auto-applied on login
- Save indicator in nav (Saving… / Saved ✓ / Save failed)
- Nav overflow fixed: all tabs scroll horizontally instead of clipping
- PWA manifest added for home-screen install support

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 08:22:24 -04:00
nmemmertandClaude Sonnet 4.6 8814423fa6 Fix modal overlays — replace deprecated Tailwind v4 bg-opacity syntax
All 11 modal backdrop divs used `bg-black bg-opacity-50` which Tailwind v4
dropped, causing solid-black overlays. Replaced with `bg-black/50` across
AuthModal, AccountManagement, EnvelopeCreate, EnvelopeEdit, GetPaid,
SetupWizard, TransactionEdit, and page.tsx.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 08:08:26 -04:00
nmemmert caa6020ae8 Fix 2025-11-10 12:57:48 -05:00
nmemmert 2665bde810 fixed run error 2025-10-24 11:10:08 -04:00
nmemmert a79dddff60 the start 2025-10-24 10:23:12 -04:00
nmemmert e41e78f9a3 Initial commit from Create Next App 2025-10-24 07:45:04 -04:00