go-htmx-gsd #1

Merged
arthur merged 558 commits from go-htmx-gsd into main 2026-05-23 15:16:44 +00:00
3 changed files with 83 additions and 6 deletions
Showing only changes of commit 74a5f17d09 - Show all commits

View file

@ -15,7 +15,7 @@
| 8 | Social Sign-in | Google sign-in creates/links local users and issues existing Xtablo sessions; Apple sign-in is disabled | AUTH-08..13 |
| 9 | Etapes | Tasks can be grouped under one-level etapes without breaking the kanban model | ETAPE-01..06 |
| 10 | 4/4 | Complete | 2026-05-16 |
| 11 | 2/2 | Complete | 2026-05-16 |
| 11 | 2/2 | Complete | 2026-05-16 |
| 12 | Native Tablo Chat | Each tablo has persisted discussion with real-time delivery and no managed chat provider | CHAT-01..06 |
---

View file

@ -2,12 +2,12 @@
gsd_state_version: 1.0
milestone: v2.0
milestone_name: Collaboration, planning, and social sign-in
status: verifying
status: ready_to_plan
last_updated: "2026-05-16T07:05:52.182Z"
last_activity: 2026-05-16
progress:
total_phases: 5
completed_phases: 4
completed_phases: 5
total_plans: 15
completed_plans: 15
percent: 100
@ -28,9 +28,9 @@ See: `.planning/PROJECT.md` (updated 2026-05-15)
## Current Position
Phase: 11 (Individual Planning) — EXECUTING
Plan: 2 of 2
Status: Phase complete — ready for verification
Phase: 12
Plan: Not started
Status: Ready to plan
Last activity: 2026-05-16
Resume file: .planning/phases/11-individual-planning/11-01-PLAN.md

View file

@ -0,0 +1,77 @@
---
phase: 11-individual-planning
status: passed
verified_at: 2026-05-16T07:08:00Z
---
# Phase 11 Verification
## Result
PASS
Phase 11 delivers a protected personal planning page where an authenticated user can browse their scheduled events across owned tablos in a fixed 14-day agenda, navigate previous/today/next windows, see useful row context including event dates, and jump back to the source tablo Events tab.
## Requirements Coverage
| Requirement | Status | Evidence |
|-------------|--------|----------|
| PLAN-01 | PASS | `/planning` is mounted inside `auth.RequireAuth`; `TestPlanningRequiresAuth` verifies unauthenticated redirect to `/login`; browser UAT approved authenticated layout rendering. |
| PLAN-02 | PASS | `PlanningPageHandler` calls `ListUserEventsRange` with authenticated `user.ID`; `TestPlanningListsOwnedEventsChronologically` verifies cross-tablo chronological event order and visible row fields. |
| PLAN-03 | PASS | Planning event URLs use `/tablos/{id}/events?month=YYYY-MM` from each event date; response assertions cover source links for multiple tablos. |
| PLAN-04 | PASS | `TestPlanningDefaultsToUpcomingFourteenDays`, `TestPlanningNavigationLinks`, `TestPlanningEmptyState`, and `TestPlanningInvalidStartFallsBackToToday` cover default range, fixed-window navigation, empty state, and invalid-date fallback. |
## Success Criteria
| Criterion | Status | Evidence |
|-----------|--------|----------|
| `/planning` is protected and renders only for authenticated users | PASS | Protected router group plus `TestPlanningRequiresAuth`. |
| Planning page lists the user's accessible events across tablos in chronological order | PASS | `ListUserEventsRange` SQL orders by date, start time, title; planning response-order tests cover the rendered page. |
| Each listed event links back to its tablo context | PASS | `PlanningEventURL` derives the tablo Events URL from `tablo_id` and `event_date`; tests assert generated links. |
| Empty state and date filtering/navigation work without a JS framework | PASS | Server-rendered templ page, normal links, and DB-backed tests for empty and navigation states. |
| Planning query does not leak events from inaccessible tablos | PASS | `ListUserEventsRange` filters through `tablos.user_id`; `TestPlanningDoesNotLeakOtherUsersEvents` and `TestListUserEventsRangeReturnsOnlyOwnedTablos` verify isolation. |
## Automated Verification
Passed:
```bash
cd backend && just generate && TEST_DATABASE_URL='postgres://xtablo:xtablo@localhost:5432/xtablo?sslmode=disable' go test ./... -count=1 && git diff --check
```
Additional focused checks passed during execution:
```bash
cd backend && TEST_DATABASE_URL='postgres://xtablo:xtablo@localhost:5432/xtablo?sslmode=disable' go test ./internal/web -run 'TestPlanning' -count=1
```
## Browser UAT
Approved by user on 2026-05-16 after running the app locally at `/planning`.
Manual checkpoint covered:
- Unauthenticated `/planning` redirects to login
- Authenticated `/planning` renders inside the normal layout
- Default range is today through 13 days later
- Events from multiple owned tablos appear in one chronological agenda
- Rows show date, time, title, tablo title/color dot, and location when present
- Rows omit descriptions, edit/delete controls, grouped day headers, and calendar grids
- Previous 14 days, Today, and Next 14 days links work
- Empty ranges show the planned empty state
- Event links return to the source tablo Events tab
## Code Review
Passed advisory review with clean status:
- `.planning/phases/11-individual-planning/11-REVIEW.md`
## Gate Notes
- Schema drift: clear (`drift_detected=false`).
- Codebase drift: non-blocking warning only. The SDK reported stale global codebase mapping metadata unrelated to Phase 11 source behavior and recommended a future map refresh.
## Residual Risk
No known Phase 11 implementation gaps. Visual regression coverage remains manual/browser-based because this repo does not yet have screenshot tests for templ pages.