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>
This commit is contained in:
2026-06-06 16:38:20 -05:00
parent be74ca1eb7
commit 74d5e196c7
5 changed files with 159 additions and 8 deletions

View File

@@ -24,6 +24,7 @@
<a href="{{ url_for('net_worth_view') }}">Net Worth</a>
<a href="{{ url_for('summary') }}">Spending Report</a>
<a href="{{ url_for('suggestions.suggestions_page') }}" class="nav-suggest" title="Suggestions &amp; feedback" aria-label="Suggestions">💡</a>
<a href="{{ url_for('settings_view') }}" class="nav-settings" title="Settings" aria-label="Settings">⚙️</a>
</div>
</nav>
<main>