kanban-dev-webapp/src
Dave f608931779 feat(http): best-effort client IP from headers
Phase 8a Task 3. Reads x-forwarded-for (first hop), then x-real-ip,
falls back to 'unknown'. Not used for auth or logging — pure rate-
limit keying so concurrent clients do not share one bucket.
2026-09-21 01:58:06 +02:00
..
app Merge branch 'plan-puzzle-v1-backend' into plan-puzzle-v1-frontend 2026-09-19 18:55:00 +02:00
components feat(plan): Puzzle v1 frontend — tray + 3 month slots, keyboard listbox, proposals, toast 2026-09-19 18:29:32 +02:00
lib feat(http): best-effort client IP from headers 2026-09-21 01:58:06 +02:00
middleware.ts feat(roadmap): planning page with bands, timeline and stats 2026-09-17 07:19:00 +02:00