Adds a cron-driven CLI command that emails the GM a player attendance
summary at noon on the session date, skipping automatically if the
game was canceled or today isn't game day, and tracking last-sent
date so it won't double-send.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Send Reminder failures were silently swallowed, only surfacing in the
HTTP response and never in the application log, unlike the GM
notification email flows.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Page response no longer waits on SMTP — status update persists and
returns immediately; email fires in a background goroutine.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Removes the duplicate log setup from cli/cmd/root.go that was reading
AWP_LOG_FILE — log file config now lives only in each binary's main.go.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When a player's attendance is updated — either via email (awp-cli check)
or via the web toggle — an email is sent to the GM with:
- who changed, what they changed to, and how (email or the site)
- a summary count of attending/not attending/no response
- the full current player status list
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The old code set port='8080' then unconditionally overwrote it with
os.Getenv("PORT"), which returns "" when unset, causing the server
to bind to ':' instead of ':8080'.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Without the return, execution fell through to render the login page
into the same response after writing the redirect header.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
A JWT signing failure was silently ignored, leaving the user on the
setup page with no auth cookie and no explanation for subsequent 401s.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
A failed file write was silently ignored, causing attendance updates
to be lost with no indication of failure to cron or the log.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
A missing .env file no longer causes a fatal error. Env vars can now
come from the container environment (Docker/systemd) or a .env file
interchangeably.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Route all log output to AWP_LOG_FILE (from .env) if set, else stderr
- Log errors explicitly before returning so they appear in the log file
- Replace log.Fatal in fetch.go with proper error return so callers control logging
- Remove chatty success/no-op log lines that would bloat cron log files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add missing bcc argument to NewEmail call in pkg/email/fetch.go
- Upgrade github.com/a-h/templ from v0.3.833 to v0.3.1020 to match generator
- Add player management routes (add/delete/edit) and playershandler
- Update templates and loaddata with pending changes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>