Adds static/js/member-detail.js: fetches /api/adults (or /api/juniors) once on page load and caches the response.
Clicking [i] next to a member name opens a detail modal showing: status per month, fee exceptions, other transactions, matched payment history, and a toggleable raw-payments debug view.
Keyboard nav: Esc closes the modal; ↑/↓ walk visible (name-filtered) rows.
Adds [i] icon and modal HTML to adults.tmpl and juniors.tmpl; all modal CSS was already in place from M6.1.
Adds markup-level assertions to html_handler_test.go.
Test plan
make go-build go-test go-lint — all green
make web-go → http://localhost:8080/adults: click [i] icon → modal opens with correct member data (status table, exception section, payment history, raw payments toggle)
Esc closes modal; ↑/↓ navigate between members; click outside modal content closes it
Name filter + ↑/↓ nav only walks visible rows
http://localhost:8080/juniors: same checks; expected = "?" rows render without JS errors
DevTools Network: single /api/adults request fires on page load; no re-fetch on subsequent clicks
Cross-check against http://localhost:5001/adults for visual parity
## Summary
- Adds `static/js/member-detail.js`: fetches `/api/adults` (or `/api/juniors`) once on page load and caches the response.
- Clicking `[i]` next to a member name opens a detail modal showing: status per month, fee exceptions, other transactions, matched payment history, and a toggleable raw-payments debug view.
- Keyboard nav: `Esc` closes the modal; `↑`/`↓` walk visible (name-filtered) rows.
- Adds `[i]` icon and modal HTML to `adults.tmpl` and `juniors.tmpl`; all modal CSS was already in place from M6.1.
- Adds markup-level assertions to `html_handler_test.go`.
## Test plan
- [ ] `make go-build go-test go-lint` — all green
- [ ] `make web-go` → `http://localhost:8080/adults`: click `[i]` icon → modal opens with correct member data (status table, exception section, payment history, raw payments toggle)
- [ ] `Esc` closes modal; `↑`/`↓` navigate between members; click outside modal content closes it
- [ ] Name filter + `↑`/`↓` nav only walks visible rows
- [ ] `http://localhost:8080/juniors`: same checks; `expected = "?"` rows render without JS errors
- [ ] DevTools Network: single `/api/adults` request fires on page load; no re-fetch on subsequent clicks
- [ ] Cross-check against `http://localhost:5001/adults` for visual parity
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Adds static/js/member-detail.js: fetches /api/<page> once on page load,
caches the response, and renders a per-member detail modal on [i] row click.
Keyboard nav: Esc closes, ↑/↓ walk visible (filtered) rows. All modal CSS
was already in place from M6.1.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
kacerr
merged commit e53e238ca6 into main2026-05-08 13:18:46 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
static/js/member-detail.js: fetches/api/adults(or/api/juniors) once on page load and caches the response.[i]next to a member name opens a detail modal showing: status per month, fee exceptions, other transactions, matched payment history, and a toggleable raw-payments debug view.Esccloses the modal;↑/↓walk visible (name-filtered) rows.[i]icon and modal HTML toadults.tmplandjuniors.tmpl; all modal CSS was already in place from M6.1.html_handler_test.go.Test plan
make go-build go-test go-lint— all greenmake web-go→http://localhost:8080/adults: click[i]icon → modal opens with correct member data (status table, exception section, payment history, raw payments toggle)Esccloses modal;↑/↓navigate between members; click outside modal content closes it↑/↓nav only walks visible rowshttp://localhost:8080/juniors: same checks;expected = "?"rows render without JS errors/api/adultsrequest fires on page load; no re-fetch on subsequent clickshttp://localhost:5001/adultsfor visual parity🤖 Generated with Claude Code