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>
This commit is contained in:
2026-06-06 16:55:25 -05:00
parent dc9717a59b
commit e381b615d6
5 changed files with 77 additions and 0 deletions

11
app.py
View File

@@ -8,6 +8,7 @@ import calendar as cal_module
from storage import load_json, save_json
from settings import load_settings, save_settings, SECRET_KEYS
import txns_db
from version import __version__ as APP_VERSION, CHANGELOG
from categories import CATEGORIES, CATEGORY_COLORS
from bills import load_bills, save_bills, bills_for_month, calendar_grid, get_week_num
from sinking import (load_funds, save_funds, FUND_COLORS, monthly_needed,
@@ -167,6 +168,11 @@ def inject_unreviewed_count():
# Fast COUNT query instead of parsing the whole transaction store per request.
return dict(unreviewed_count=txns_db.count_unreviewed())
@app.context_processor
def inject_version():
return dict(app_version=APP_VERSION)
DATA_DIR = os.environ.get("DATA_DIR", os.path.join(os.path.dirname(__file__), "data"))
TRANSACTIONS_FILE = os.path.join(DATA_DIR, "transactions.json")
RULES_FILE = os.path.join(DATA_DIR, "rules.json")
@@ -2878,5 +2884,10 @@ def settings_view():
saved=request.args.get("saved"))
@app.route("/changelog")
def changelog_view():
return render_template("changelog.html", changelog=CHANGELOG, app_version=APP_VERSION)
if __name__ == "__main__":
app.run(debug=os.environ.get("FLASK_DEBUG") == "1", port=5000)