Commit graph

1315 commits

Author SHA1 Message Date
Arthur Belleville
ba48c2c74f
docs(17): create phase plan 2026-05-17 09:36:36 +02:00
Arthur Belleville
664f826052
fix(17): revise plans based on checker feedback
- Add <scope_note> to Plan 01 documenting D-D01–D-D04 and SPEC Req 2 deferral (restyle-only phase, no SSE/HTMX backend yet)
- Plan 02 Task 1: replace fragile bg-slate-50 render assertion with data-day-separator semantic attribute; add D-P02 path-adaptation note (planning_forms.go → planning_view.go)
- VALIDATION.md: set nyquist_compliant/wave_0_complete true, update Wave 0 section, check off sign-off items, set approval 2026-05-17

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-17 09:33:59 +02:00
Arthur Belleville
7e3b3af1e3
docs(17): create phase 17 plans — discussion view and planning page restyle
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-17 09:26:26 +02:00
Arthur Belleville
f45f7c6010
docs(17): research phase domain 2026-05-17 06:37:06 +02:00
Arthur Belleville
b84503a54a
docs(17): add UI design contract for chat & planning phase
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-17 06:30:40 +02:00
Arthur Belleville
08e8fc1976
docs(17): capture phase context 2026-05-17 00:15:15 +02:00
Arthur Belleville
8fa490978b
spec(phase-17): add SPEC.md for Chat & Planning — 6 requirements (#2213) 2026-05-17 00:06:24 +02:00
Arthur Belleville
d40909ac9b
docs(phase-16): evolve PROJECT.md after phase completion 2026-05-17 00:00:02 +02:00
Arthur Belleville
3d3fcc9c2b
docs(phase-16): complete phase execution 2026-05-16 23:59:52 +02:00
Arthur Belleville
18a705c812
fix(16): restore task-drag-handle for Sortable.js drag-and-drop
Phase 16 executor removed the .task-drag-handle div from TaskCard
during restyling. Sortable.js handle: '.task-drag-handle' had no
matching element → dragging completely non-functional.

Restores the grip element with CSS-token styling (no Tailwind).
2026-05-16 23:58:51 +02:00
Arthur Belleville
a10fa46ae2
test(16): persist human verification items as UAT 2026-05-16 23:55:44 +02:00
Arthur Belleville
b48fe9ae89
docs(16): add code review report 2026-05-16 23:51:32 +02:00
Arthur Belleville
03d9bad0ae
docs(16-04): complete files section restyle plan summary
- DETAIL-04 delivered: @ui.Table, @ui.EmptyState, tr-based file rows
- All file handler tests pass; browser checkpoint auto-approved
2026-05-16 23:46:52 +02:00
Arthur Belleville
ca693f1683
feat(16-04): restyle files section with @ui.Table, EmptyState, and tr rows
- Replace <ul>/<li> layout with @ui.Table using fileTableHead/fileTableBody helpers
- Add .overview-section-heading header with "Files" h3 and Upload file button
- Convert FileListRow outer element from <li> to <tr class="file-row-zone">
- Convert FileDeleteConfirmFragment outer element from <div> to <tr class="file-row-zone"> with <td colspan="4">
- Add Download and Delete @ui.IconButton in FileListRow actions column
- Replace FileListEmpty with @ui.EmptyState in FilesTabFragment and UploadErrorFragment
- Convert FileRowGone from <div> to <tr> for DOM consistency
- All 9 file handler tests pass; go build ./... exits 0
2026-05-16 23:46:12 +02:00
Arthur Belleville
3a5a26c5c8
docs(16-03): complete kanban restyle + etape grouping plan summary
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 23:43:44 +02:00
Arthur Belleville
e2ee4349f8
feat(16-03): update all three KanbanBoard call sites to pass etapes
- tablos.templ TasksTabFragment: add etapes as 5th argument to @KanbanBoard
- handlers_tasks.go reorder (single): capture etapes from loadTasksTabData; pass to KanbanBoard
- handlers_tasks.go reorder (batch): capture etapes from loadTasksTabData; pass to KanbanBoard
- go build ./backend/... exits 0; go test ./backend/internal/web/... -count=1 passes
2026-05-16 23:42:46 +02:00
Arthur Belleville
084fc0ebba
feat(16-03): restyle kanban board with etape grouping (tasks.templ)
- Add EtapeGroup type and groupTasksByEtape helper (etape declaration order, unassigned last)
- Add EtapeGroupHeader templ component with color dot and muted label for unassigned
- Update KanbanBoard and KanbanColumn signatures to accept etapes []sqlc.Etape (5th param)
- Restyle KanbanColumn: kanban-column > tasks-section > tasks-section-header/task-list layout
- Restyle TaskCard: task-row task-card with task-check + task-body + @ui.IconButton(trash)
- Restyle AddTaskTrigger: tasks-add-button class (replaces ui-button compound classes)
- Remove @EtapeStrip OOB calls from TaskCardGone and TaskCardOOB; keep params with TODO
2026-05-16 23:42:40 +02:00
Arthur Belleville
f39971bd0a
docs(16-02): add SUMMARY.md for tablo detail header restyling plan 2026-05-16 23:38:05 +02:00
Arthur Belleville
443a38dfc8
feat(16-02): restyle TabloDetailPage header, tab nav, metadata row; remove EtapeStrip
- Replace header with project-card-top layout: color avatar with first char, tablo-title-zone
- Replace Discussion link/Invite button/Delete button with @ui.IconButton and @ui.Button using design token variants
- Add inline tablo-delete-zone with trash @ui.IconButton (does not use TabloDeleteButtonFragment)
- Replace metadata row hardcoded flex/hex classes with tablo-metadata-row, @ui.Badge(BadgeVariantPrimary), project-progress-track/bar
- Replace 5 tab nav <a> elements from long inline Tailwind hex classes to tab-nav-item / tab-nav-item is-active
- Wrap tab nav in class="tab-nav" replacing raw flex container
- Move @TabloDescDisplay call from persistent header into TabloOverviewTabFragment
- Remove @EtapeStrip call from TasksTabFragment (D-E01; KanbanBoard call site update deferred to Plan 03)
- Remove last #804EEC hex value from TabloTitleDisplay hover class
- Regenerated tablos_templ.go via templ generate
2026-05-16 23:37:16 +02:00
Arthur Belleville
4e0336c950
docs(16-01): complete icon-cases and CSS-foundations plan
- add download + chat icon SVG cases to UIIcon switch
- append CSS Sections 19-25 to app.css (tasks-section through task-list-empty)
- all tests pass; zero hardcoded hex values in new CSS
2026-05-16 23:33:38 +02:00
Arthur Belleville
44209b9db2
feat(16-01): append CSS Sections 19-25 to app.css
- Section 19: tasks-section block (task-row, task-check, task-body, task-meta, tasks-add-button)
- Section 20: project-progress-track and project-progress-bar
- Section 21: tab-nav, tab-nav-item, tab-nav-item.is-active, tab-nav-item:hover
- Section 22: tablo-metadata-row, tablo-metadata-date
- Section 23: kanban-column wrapper (width: 18rem) + scoped h3 override (1rem)
- Section 24: etape-group-header, etape-group-color-dot, etape-group-label
- Section 25: task-list-empty placeholder
- all values use var(--...) tokens; zero hardcoded hex values
2026-05-16 23:32:57 +02:00
Arthur Belleville
a1a3ea8239
feat(16-01): add download and chat icon cases to UIIcon switch
- insert case "download" with arrow-down SVG (path + polyline + line) before default case
- insert case "chat" with speech-bubble SVG (path) before default case
- icon_button_templ.go regenerated via templ generate (gitignored, regenerated at build time)
2026-05-16 23:31:58 +02:00
Arthur Belleville
337c380d6b
docs(16): create phase plan 2026-05-16 23:30:34 +02:00
Arthur Belleville
5060e4bb96
fix(16): revise plans based on checker feedback
- RESEARCH.md: mark Open Questions as RESOLVED; resolve A2 (ButtonVariantGhost does not exist as ButtonTone; use ButtonToneSoft+ButtonVariantDefault for Invite button); confirm TaskCardGone/OOB keep params; confirm FileDeleteConfirmFragment <tr> is safe
- VALIDATION.md: fix automated command paths to match actual plan verify commands (go test ./backend/internal/web/... not cd go-backend); set nyquist_compliant: true and wave_0_complete: true
- 16-02 Task 2: remove KanbanBoard call site update (was causing accepted compile error); Task 2 now only deletes EtapeStrip call and requires clean go build ./backend/... exit 0
- 16-02 Task 1: clarify Discussion link as <a> wrapping @ui.IconButton (not ambiguous OR); fix Invite button to ButtonToneSoft+ButtonVariantDefault
- 16-03 Task 2: add tablos.templ as modified file; update action to include all three KanbanBoard call sites atomically

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 23:27:59 +02:00
Arthur Belleville
965ec5e5ce
docs(16): create phase 16 tablo detail plan — 4 plans, 4 waves
Phase 16 delivers DETAIL-01/02/03/04: header restyling, kanban
tasks-section layout with server-side etape grouping, and files
table component. Ends with a browser verify checkpoint.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 23:20:49 +02:00
Arthur Belleville
36011fc8a3
docs(phase-16): add validation strategy 2026-05-16 23:08:43 +02:00
Arthur Belleville
73780323d2
docs(16): research phase domain 2026-05-16 23:07:57 +02:00
Arthur Belleville
30c446fc0e
docs(16): UI design contract 2026-05-16 23:02:25 +02:00
Arthur Belleville
dcb99fb19a
docs(16): add UI design contract for tablo detail phase
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 22:51:58 +02:00
Arthur Belleville
a6eace8364
docs(state): record phase 16 context session 2026-05-16 22:47:02 +02:00
Arthur Belleville
7f01453ca2
docs(16): capture phase context 2026-05-16 22:46:57 +02:00
Arthur Belleville
5708156dcf
docs(15): mark VALIDATION.md compliant after audit
All 3 DASH tests green with TEST_DATABASE_URL:
- TestTablosDashboard_Sidebar (DASH-01)
- TestTablosDashboard_ProjectCards (DASH-02)
- TestTablosDashboard_EmptyState (DASH-03)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 22:32:04 +02:00
Arthur Belleville
d5ce65a003
docs(15): add code review report 2026-05-16 22:28:50 +02:00
Arthur Belleville
716678cddd
docs(phase-15): update tracking after wave 2 2026-05-16 22:25:13 +02:00
Arthur Belleville
64ba8abbb0
fix(15-03): apply tablo detail restyle with correct AppLayout signatures
Merge conflict resolution had taken the old template signatures (pre-AppLayout).
Restored HEAD~1 signatures then applied the header/tab-nav restyle:
- Title row: md:text-3xl font-bold, Discussion + Invite action buttons
- Metadata row: created date, status badge, 0% progress bar
- Sticky purple-accent tab bar (Overview, Tasks, Files, Discussion, Events)
- All HTMX wiring and AppLayout wrapping preserved
2026-05-16 22:24:52 +02:00
Arthur Belleville
79039721c6
chore: merge executor worktree (worktree-agent-adcff3bb3254fb8c6) 2026-05-16 22:19:11 +02:00
Arthur Belleville
7d8036777e
docs(15-03): complete tablo detail restyle plan summary 2026-05-16 22:17:40 +02:00
Arthur Belleville
6953536dd8
feat(15-03): restyle tablo detail page header and tab nav to match reference design
- Replace plain back-link + title with structured header: title row + metadata row
- Title uses larger md:text-3xl font-bold style with inline-edit preserved
- Add Discussion and Invite action buttons in header (purple brand colors)
- Add metadata row: created date, hardcoded En cours status badge, 0% progress bar
- Replace plain slate tab nav with purple-accent tab bar (icon + label per tab)
- Tab active state: text-[#804EEC] border-[#804EEC]; inactive: text-[#667085]
- Tab bar is sticky (top-0 z-40) with horizontal scroll and hidden scrollbar
- Keep all HTMX attributes, hx-push-url, hx-target="#tab-content" logic unchanged
- tablo-title-zone, tablo-desc-zone, tablo-delete-zone elements retained
2026-05-16 22:15:49 +02:00
Arthur Belleville
50bd9a0133
docs(15-03): complete plan 03 summary — AppLayout wired to all authenticated pages
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 21:50:15 +02:00
Arthur Belleville
c7a16dbcae
feat(15-03): wire AppLayout into all authenticated handlers and templates
- TablosListHandler: derives sidebarTablos from cardViews, calls TablosDashboard with activePath="/"
- TabloDetailHandler: fetches ListTablosByUser for sidebar, calls TabloDetailPage with activePath=""
- TabloUpdateHandler: fetches ListTablosByUser for non-HTMX error path
- renderTabloCreateError: derives errorSidebarTablos from errorCardViews
- TabloDiscussionTabHandler, TabloEventsTabHandler, TabloFilesTabHandler, TabloTasksTabHandler: fetch ListTablosByUser for non-HTMX full-page renders
- PlanningPageHandler: fetches ListTablosByUser, calls PlanningPage with activePath="/planning"
- AccountProvidersHandler: fetches ListTablosByUser, calls AccountProvidersPage with activePath="/"
- planning.templ: updated signature + switched to @AppLayout
- account_providers.templ: updated signature + switched to @AppLayout
2026-05-16 21:49:23 +02:00
Arthur Belleville
9c7b080f67
feat(15-03): restyle tablos.templ with AppLayout, TabloProjectCard, and EmptyState
- Updated TablosDashboard signature to accept activePath and tablos for AppLayout
- Replaced old @Layout call with @AppLayout (sidebar-based shell)
- Added TabloProjectCard component with project-card grid, colored avatar, tablo-title-zone, edit/delete icon buttons
- Replaced TablosEmptyState raw HTML with @ui.EmptyState component (ui-empty-state class)
- Updated TabloDetailPage signature with activePath and sidebarTablos params
- Updated TabloNotFoundPage signature with activePath and sidebarTablos params
- Both detail pages switch from @Layout to @AppLayout
2026-05-16 21:49:10 +02:00
Arthur Belleville
ae0ab0ca5b
docs(phase-15): update tracking after wave 1 2026-05-16 21:44:18 +02:00
Arthur Belleville
41cf96ae66
docs(15-02): complete AppLayout CSS foundation + sidebar components plan 2026-05-16 21:43:44 +02:00
Arthur Belleville
9b0d335329
feat(15-02): create app_layout.templ and app_layout_helpers.go with sidebar sub-components
- Create backend/templates/app_layout_helpers.go: sidebarNavItem struct, sidebarNavItemClass, isActivePath, sidebarNavItemID, sidebarPrimaryNavItems
- Create backend/templates/app_layout.templ: SidebarNavIcon, SidebarNavItemRow, SidebarProjectsSection, SidebarOrganizationFooter, DashboardSidebar, AppLayout
- templ generate and go build exit 0; all existing tests pass
2026-05-16 21:43:15 +02:00
Arthur Belleville
f533d53c74
feat(15-02): port sidebar + project-card CSS into app.css and register in tailwind
- Create backend/internal/web/ui/app.css with dashboard shell, sidebar, and project-card CSS ported verbatim from go-backend
- All color values use var(--...) design tokens — no hex colors
- Add @import "./internal/web/ui/app.css" to backend/tailwind.input.css
2026-05-16 21:41:58 +02:00
Arthur Belleville
140f400e10
docs(phase-15): update tracking after wave 0 2026-05-16 21:39:58 +02:00
Arthur Belleville
459892f31f
docs(15-01): complete Wave 0 test stubs plan — DASH-01/02/03 RED baseline 2026-05-16 21:39:11 +02:00
Arthur Belleville
7bea525c1b
test(15-01): add Wave 0 RED test stubs for DASH-01, DASH-02, DASH-03
- TestTablosDashboard_Sidebar: asserts dashboard-sidebar + sidebar-nav-shell in GET / body
- TestTablosDashboard_ProjectCards: asserts project-card in GET / body with a pre-inserted tablo
- TestTablosDashboard_EmptyState: asserts ui-empty-state in GET / body with zero tablos
- All three skip without TEST_DATABASE_URL; compile cleanly; existing TestTablos* tests unaffected
2026-05-16 21:38:50 +02:00
Arthur Belleville
13b6f525de
docs(15): create phase plan 2026-05-16 21:35:53 +02:00
Arthur Belleville
431096e4de
docs(15): resolve open questions and fix 15-03 edit-title wiring
- RESEARCH.md: rename '## Open Questions' to '## Open Questions (RESOLVED)';
  add [RESOLVED] markers to all three questions with verified answers.
  Q2 resolved: edit-title route confirmed via codebase, no single /edit route.
- 15-03-PLAN.md Task 1: add handlers_tablos.go to read_first; make edit
  icon button definitively use hx-get=/tablos/{id}/edit-title with
  hx-target="closest .tablo-title-zone"; remove open-ended href fallback
  discretion; add edit-title grep to acceptance criteria.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-16 21:33:16 +02:00