Commit Graph
9 Commits
Author SHA1 Message Date
agentbox 09eda19fc4 fix: send ntfy metadata as HTTP headers, add auto-login from notification click
CI / test-and-package (push) Successful in 42s
- ntfy.py: switch from JSON body to HTTP headers (Title, Priority, Tags,
  Actions, Click) with plain message body. ntfy servers treat the POST
  body as the message, so JSON body fields were ignored and displayed as
  raw JSON.
- ntfy.py: replace em dashes in headers with hyphens (HTTP headers must
  be latin-1 encodable).
- meals.py: add /auto-login/<token> route that logs users in via their
  ntfy callback token so clicking a notification opens the dashboard
  without re-entering credentials.
- ntfy.py: update Click URL to /auto-login/<token>?date=...
2026-08-01 06:50:23 +00:00
agentbox 710cd1fbf9 Refactor cron to call API via HTTP, capture base_url from browser
CI / test-and-package (push) Successful in 33s
- meal-cron now runs send_reminders_cron.sh (simple wget loop, no DB mount)
- New /api/cron-tick endpoint handles all timezone logic server-side
- base_url captured from request.host_url when user saves ntfy settings,
  stored per-user — no APP_BASE_URL env var needed
- Cron endpoint protected by CRON_SECRET shared env var
- Removed send_reminders_cron.py, DB volume from cron container
- tests: 3 new cron-tick + base_url capture tests (69 total)
2026-08-01 06:32:09 +00:00
agentbox 2cd435daf2 Add cron container and per-household timezone for auto-reminders
CI / test-and-package (push) Successful in 36s
- docker-compose.yml: meal-cron service loops send_reminders_cron.py every 60s
- send_reminders_cron.py: checks each household's local time, sends ntfy
  reminders at 10:00 (lunch) and 16:00 (dinner), guarded against duplicates
- models.py: timezone, last_lunch_reminder, last_dinner_reminder on households
- meals.py: /admin/timezone route for admins to set household timezone
- dashboard: timezone selector (20 common zones) in Account Settings
- i18n: 5 new translation keys for timezone strings
- Dockerfile: copy send_reminders_cron.py
- tests: 4 new timezone tests (admin set, non-admin denied, default UTC, auth)
- docs: updated AGENTS.md
2026-08-01 06:23:33 +00:00
agentbox 3681f9dfce Add ntfy push notifications with action buttons for meal reminders
CI / test-and-package (push) Successful in 37s
- ntfy.py: send_meal_reminder() with Home/Out HTTP action buttons, test helper
- models.py: new columns ntfy_url, ntfy_token, callback_token on users table
- meals.py: /api/ntfy-callback (public, token-authenticated), /ntfy-settings, /ntfy-test
- app.py: flask send-reminders CLI command (cron-schedulable)
- Dashboard: ntfy config form in Account Settings
- i18n: translations for all ntfy strings (en/fr/de)
- Dockerfile: include ntfy.py in COPY
- tests: 15 new tests covering callback, settings, and auth
- docs: updated AGENTS.md and doc/index.md
2026-08-01 06:17:26 +00:00
agentbox b46691fee3 Add i18n support for French and German with browser language detection
CI / test-and-package (push) Successful in 35s
2026-08-01 06:00:29 +00:00
agentbox 188aaf66a0 Add account deletion, admin user removal, household deletion, grayed-out other-user chips (47 tests) 2026-07-31 22:12:13 +00:00
agentbox 1e57a886f4 Fix: handle stale sessions and migrated users without household_id 2026-07-31 22:02:06 +00:00
agentbox c48cd265ca Add household support: multi-household isolation, each with own admin and users, 38 tests 2026-07-31 21:44:29 +00:00
agentbox d58828e0ef Add meal tracker app: Flask + SQLite with auth, dashboard, 31 passing tests, Docker Compose 2026-07-31 21:25:59 +00:00