Commit Graph
27 Commits
Author SHA1 Message Date
agentbox 28cf1a2f6a fix: lunch before dinner in columns, responsive mobile layout
CI / test-and-package (push) Successful in 33s
- models.py: ORDER BY CASE so lunch always appears before dinner in the
  dashboard table (was alphabetical, putting dinner first).
- style.css: add @media (max-width: 600px) with mobile-friendly layout:
  stacked navbar, full-width dashboard header, reduced padding/margins,
  larger touch targets for chips/buttons, stacked manage forms, and
  compact table cells.
2026-08-01 06:55:04 +00:00
agentbox 0170786fd3 fix: include is_admin and household_name in get_user_by_callback_token query
CI / test-and-package (push) Successful in 33s
The auto-login route needs these fields to populate the session, but the
query only selected id, username, household_id. Added JOIN with
households table and selected is_admin + household_name.
2026-08-01 06:52:27 +00:00
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 8466a6e029 fix: unify ntfy URL input styling with rest of manage-form inputs
CI / test-and-package (push) Successful in 38s
Add .manage-form label styling and .manage-form input[type="text"] rule
to match the existing password input styling, so the ntfy topic URL field
looks consistent with the rest of the UI.
2026-08-01 06:37:20 +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 7bf00ee2e3 Add AGENTS.md for AI agent context
CI / test-and-package (push) Successful in 29s
2026-08-01 06:05:44 +00:00
agentbox 27a6829242 Fix Dockerfile: add missing i18n.py to COPY
CI / test-and-package (push) Successful in 28s
2026-08-01 06:04:44 +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 218e2b6fb0 Add README.md symlink to doc/index.md
CI / test-and-package (push) Successful in 22s
2026-08-01 05:54:55 +00:00
agentbox be75738aa7 Add documentation in doc/index.md
CI / test-and-package (push) Successful in 29s
2026-08-01 05:54:31 +00:00
agentbox 219003dffb Replace Dockerfile and docker-compose.yml with .meal versions, update references
CI / test-and-package (push) Successful in 1m53s
2026-08-01 05:52:12 +00:00
agentbox 66ee072046 fix: replace container_name with hostname for caddy network resolution
CI / test-and-package (push) Successful in 53s
2026-07-31 22:53:52 +00:00
agentbox 365b4c4e0e fix: networks entry must be a string, not a mapping
CI / test-and-package (push) Successful in 24s
2026-07-31 22:46:48 +00:00
agentbox 26a830c39f fix: launch docker compose on first run too
CI / test-and-package (push) Successful in 31s
2026-07-31 22:45:56 +00:00
agentbox 0a7fdd6a49 fix: use docker-compose.meal.yml compose file
CI / test-and-package (push) Successful in 26s
2026-07-31 22:40:52 +00:00
agentbox e45c5c849c fix: point watch script to agentbox-test repo
CI / test-and-package (push) Successful in 22s
2026-07-31 22:39:20 +00:00
agentbox 465eb69824 add watch-for-updates.sh: auto-pull and docker compose rebuild every 20s
CI / test-and-package (push) Successful in 23s
2026-07-31 22:38:18 +00:00
agentbox bbd0f6a4c1 Fix CI: downgrade actions to v3-compatible versions for Gitea
CI / test-and-package (push) Successful in 47s
2026-07-31 22:16:56 +00:00
agentbox fd934c006d Add Gitea Actions CI: run tests, package artifact zip on push
CI / test-and-package (push) Failing after 1m21s
2026-07-31 22:14:55 +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 53a1ceab75 Fix: household name input visible on page load when creating new household 2026-07-31 22:04:59 +00:00
agentbox 1e57a886f4 Fix: handle stale sessions and migrated users without household_id 2026-07-31 22:02:06 +00:00
agentbox a318b577cb Fix init_db: move household_id index after migration ALTER TABLE 2026-07-31 21:51:05 +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