Calendar home screen, day-of-week headings, cookie-based login #107

Merged
coding-agent-marvin8 merged 0 commits from refs/pull/107/head into main 2026-07-11 09:01:41 +00:00
coding-agent-marvin8 commented 2026-07-11 07:17:38 +00:00 (Migrated from codeberg.org)

Implements three UI improvements from the project roadmap.

Calendar home screen — replaces the flat date list at /days with a two-month calendar grid. Each day cell shows motion event count and snapshot count on separate lines; clicking any day with footage navigates to the day view. Desktop shows two months side by side; mobile stacks them. Prev/next navigation via ?month=YYYY-MM.

Day-of-week headings — single-day pages now show the weekday name alongside the date (e.g. Thursday · 2026-07-11) in the page h1 and back-links.

Cookie-based login — replaces HTTP Basic Auth with an HTML login form backed by a stateless HMAC-SHA256 signed session cookie. The cookie secret is derived from the configured password, so rotating the password invalidates all sessions automatically. Includes open redirect prevention and a Log out link in the header.

Also bumps the WuMing max_diff_lines limit to 3000 in CI.

Closes #104
Closes #105
Closes #106

Implements three UI improvements from the project roadmap. **Calendar home screen** — replaces the flat date list at `/days` with a two-month calendar grid. Each day cell shows motion event count and snapshot count on separate lines; clicking any day with footage navigates to the day view. Desktop shows two months side by side; mobile stacks them. Prev/next navigation via `?month=YYYY-MM`. **Day-of-week headings** — single-day pages now show the weekday name alongside the date (e.g. `Thursday · 2026-07-11`) in the page h1 and back-links. **Cookie-based login** — replaces HTTP Basic Auth with an HTML login form backed by a stateless HMAC-SHA256 signed session cookie. The cookie secret is derived from the configured password, so rotating the password invalidates all sessions automatically. Includes open redirect prevention and a Log out link in the header. Also bumps the WuMing `max_diff_lines` limit to 3000 in CI. Closes #104 Closes #105 Closes #106
coding-agent-marvin8 commented 2026-07-11 07:28:27 +00:00 (Migrated from codeberg.org)

TODO.md line 6

Typo: double 'a' in 'Implement a a what is on the cameras right now'. Remove the duplicate 'a'.

Fixed — removed the duplicate "a".

[`TODO.md` line 6](https://codeberg.org/MinimalNVR/cang/pulls/107#issuecomment-18995849) > Typo: double 'a' in 'Implement a a what is on the cameras right now'. Remove the duplicate 'a'. ✅ Fixed — removed the duplicate "a".
coding-agent-marvin8 commented 2026-07-11 07:33:23 +00:00 (Migrated from codeberg.org)

TODO.md line 8

Typo: 'pasword' should be 'password'.

Fixed — corrected spelling of "password".

[`TODO.md` line 8](https://codeberg.org/MinimalNVR/cang/pulls/107#issuecomment-18996014) > Typo: 'pasword' should be 'password'. ✅ Fixed — corrected spelling of "password".
coding-agent-marvin8 commented 2026-07-11 07:37:43 +00:00 (Migrated from codeberg.org)

.forgejo/workflows/ci.yml

The token reference 'forge.token' is not a valid context variable in Forgejo Actions.

🔴 Not actioned — forge.token is the correct Forgejo Actions automatic token (the Forgejo equivalent of GitHub Actions' github.token). CI is running successfully with it.

[`.forgejo/workflows/ci.yml`](https://codeberg.org/MinimalNVR/cang/pulls/107#issuecomment-18996011) > The token reference 'forge.token' is not a valid context variable in Forgejo Actions. 🔴 Not actioned — `forge.token` is the correct Forgejo Actions automatic token (the Forgejo equivalent of GitHub Actions' `github.token`). CI is running successfully with it.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marvin8/cang!107
No description provided.