go-htmx-gsd #1
3 changed files with 83 additions and 6 deletions
|
|
@ -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 |
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
77
.planning/phases/11-individual-planning/11-VERIFICATION.md
Normal file
77
.planning/phases/11-individual-planning/11-VERIFICATION.md
Normal 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.
|
||||
Loading…
Reference in a new issue