Commit graph

27 commits

Author SHA1 Message Date
Arthur Belleville
910c3b605d
feat(20-03): kanban board, task card, etapes section, files table CSS + task-list gap
- .tablo-kanban-board flex container with overflow-x auto
- .tablo-kanban-column 18rem wide with border-radius 0.75rem
- .tablo-kanban-column-header muted surface background
- .tablo-kanban-column-title, -task-count, -add-link, -empty rules
- .task-card column-flex with hover shadow and border-color transition
- .task-drag-handle opacity 0 at rest, opacity 1 on .task-card:hover
- .task-card-delete opacity 0 at rest, opacity 1 on .task-card:hover
- .task-card-top-row, .task-card-title helpers
- .task-list updated with gap 8px and padding 8px
- .tablo-etapes-section, .tablo-etape-row, .tablo-etape-name, .tablo-etape-count
- .tablo-files-table-wrapper with border-radius 12px and table header styles
- .task-row and .tasks-section unchanged (no CSS cascade regression)
2026-05-18 15:54:30 +02:00
Arthur Belleville
58710d6eba
feat(20-03): tablo detail header, metadata row, and tab bar CSS
- .tablo-detail-page outer container with 24px 32px padding
- .tablo-detail-header flex column with border-bottom
- .tablo-detail-title-row flex row for avatar + h1
- .tablo-detail-avatar 48x48 colored circle with border-radius 12px
- .tablo-detail-title at 1.75rem weight 600
- .tablo-metadata-row horizontal flex with gap 24px
- .tablo-meta-segment and .tablo-meta-progress helper rules
- .tablo-progress-bar with background var(--color-brand-primary) — NOT project-color
- .tablo-tab-bar and .tablo-tab-bar .tab-nav-item override
2026-05-18 15:53:51 +02:00
Arthur Belleville
a60de1fc7a
feat(20-02): replace TabloDetailPage stub with templ component + register tab route
- Remove stub templ.ComponentFunc from tablo_detail_view.go; real TabloDetailPage now comes from tablo_detail_templ.go
- Remove context/io/templ imports that were only used by the stub
- Register GET /tablos/{tabloID}/{tab} route in router.go after /tablos/{tabloID}
- All handler tests pass: TestGetTabloDetailPage_*, TestTabloDetailKanbanColumns, TestComputeTabloProgress, TestNewTabloDetailViewModel_*
2026-05-18 15:51:23 +02:00
Arthur Belleville
4ae19faac9
feat(20-02): TabloDetailPage templ component + GetTabloDetailTab handler
- Create tablo_detail.templ with 8 templ components: TabloDetailPage, TabloDetailHeader, TabloDetailTabBar, TabloDetailKanbanBoard, TabloDetailKanbanColumn, TabloDetailTaskCard, TabloDetailEtapesSection, TabloDetailSortableScript
- Tab links use hx-get + hx-target="#tab-content" + hx-push-url="true" per UI-SPEC interaction contract
- Each kanban column has hidden reorder form id="reorder-form-{status}" for Sortable.js onEnd
- Create tablo_detail_tab.go with GetTabloDetailTab handler for HTMX tab content swaps
- Tasks tab returns kanban board fragment; other tabs return "coming soon" placeholder
2026-05-18 15:51:17 +02:00
Arthur Belleville
3fc8aae7a0
feat(20-01): GetTabloDetailPage handler + GET /tablos/{tabloID} route registration
- tabloDetailRepository interface with ListTasksByTablo
- GetTabloDetailPage: auth check, UUID parse, ownership-scoped tablo lookup, task fetch, vm build, render
- router.go: mux.Get('/tablos/{tabloID}') registered before /edit route
- activePath='/tablos' so sidebar Tablos item stays highlighted
- Threat T-20-01 mitigated: findTabloByID filters by OwnerID from session
2026-05-18 15:46:30 +02:00
Arthur Belleville
9713cbd168
feat(20-01): add TabloDetailViewModel + computeTabloProgress + TabloDetailPage stub
- TabloDetailViewModel with Columns, Etapes, Progress fields
- TabloDetailColumnView, TabloDetailTaskView, TabloDetailEtapeView structs
- computeTabloProgress excludes etape tasks from computation
- NewTabloDetailViewModel builds 4 columns + etapes with child task counts
- TabloDetailPage stub emits tablo name + column status IDs + initTabloDetailSortable
2026-05-18 15:45:30 +02:00
Arthur Belleville
f24e1c4d35
test(20-01): add failing tests for TabloDetailViewModel + GetTabloDetailPage handler
- TestComputeTabloProgress_{Empty,AllDone,Half,EtapesIgnored}
- TestNewTabloDetailViewModel_{GroupsTasksByStatus,EtapesExcludedFromColumns,EtapesPopulated}
- TestGetTabloDetailPage_{Returns200,Returns404,Returns400,Unauthenticated}
- TestTabloDetailKanbanColumns
- TestGetTabloDetailPage_ContainsSortableScript
2026-05-18 15:44:53 +02:00
Arthur Belleville
9fe6c897e3
feat(17-02): wire PlanningMainContent with real planning view (GREEN)
- dashboard_components.templ: PlanningMainContent(data PlanningTabData) — overview-section heading (h1), day separators with data-day-separator attribute, event rows, empty state via ui.EmptyState
- handlers/auth.go: GetPlanningPage passes views.NewPlanningTabData()
- dashboard_components_templ.go: regenerated by templ generate
- go test ./... -count=1 exits 0
2026-05-17 10:35:30 +02:00
Arthur Belleville
1afc39e70a
test(17-02): add failing render test + view model + CSS h1 selector fix (RED)
- go-backend/internal/web/ui/app.css: prepend .overview-section-heading h1 to heading selector
- go-backend/internal/web/views/planning_view.go: PlanningEventRow, PlanningTabData, NewPlanningTabData (5 demo events / 2 dates), PlanningShowDaySeparator
- go-backend/internal/web/views/planning_view_test.go: TestPlanningShowDaySeparator (logic tests), TestPlanningMainContentRendersOverviewSection (render test — RED until Task 2)
2026-05-17 10:34:49 +02:00
Arthur Belleville
81ccaeb107
feat(17-01): wire ChatMainContent with real discussion view (GREEN)
- Replace ChatMainContent() stub with ChatMainContent(data DiscussionTabData)
- Renders .ui-card container with .message-own/.message-other rows and .message-bubble
- Update GetChatPage handler to pass views.NewDiscussionTabData()
- Run templ generate; TestChatMainContentRendersBubbleClasses passes
- Full go test ./... -count=1 exits 0
2026-05-17 09:38:43 +02:00
Arthur Belleville
dd1133d7cc
test(17-01): add failing test + view model + message bubble CSS (RED)
- Append .message-row/.message-own/.message-other/.message-bubble/.message-meta CSS classes to app.css
- Create discussion_view.go with DiscussionMessageView, DiscussionTabData, NewDiscussionTabData
- Create discussion_view_test.go with TestChatMainContentRendersBubbleClasses (RED: compile error expected)
2026-05-17 09:38:10 +02:00
Arthur Belleville
d9bf94583b
Refactor tasks UI to use reusable button and select components
Replace inline button markup with `ui.Button` component calls for
consistency and maintainability. Add filter menu component with dropdown
functionality. Convert roadmap mode toggle from link-based to select
dropdown. Include filter counter badge and clear filter actions.
2026-05-10 23:38:19 +02:00
Arthur Belleville
c80a8a875e
First pass on tasks frontend 2026-05-10 23:14:47 +02:00
Arthur Belleville
c148ff9af3
Add select component with single and multi-value support 2026-05-10 22:04:09 +02:00
Arthur Belleville
9a92f358e8
Add task management features with database schema and handlers
Create a new tasks module with full CRUD operations, supporting both
regular tasks and etapes (phases). Implements task hierarchy with
parent-child relationships, assignees, and due dates. Includes database
schema with validation triggers, SQLC query generation, in-memory
repository implementation, HTTP handlers, view templates, and
comprehensive test coverage.
2026-05-10 21:58:48 +02:00
Arthur Belleville
354785edff
Pass tablo list to dashboard views
Update DashboardPage and DashboardContentSwap to receive the list of
tablos so the sidebar can display real project data. Extract tablo icon
palette logic into a new tabloicons package that maps hex colors to
presentation attributes (icon, background, foreground colors).

Update handlers to load tablos from the repository before rendering
dashboard views. Refactor TabloCardView to use icon presentation instead
of initials when available.
2026-05-10 14:56:46 +02:00
Arthur Belleville
3232309388
Make tablo icon selection dynamic based on color using nearest palette
match

Instead of selecting icons based on tablo name length, compute the
closest matching icon from a predefined palette by comparing hex color
values. This ensures consistent icon-color pairing and better visual
harmony.
2026-05-10 14:18:33 +02:00
Arthur Belleville
c780dd1625
Remove server-side search filtering and implement client-side filtering
This commit moves project search filtering from the server to the
client.
Changes include:

- Remove `Query` field from `ListTablosInput` and related handlers
- Add French date formatting for project cards
- Convert search form to client-side filter with data attributes
- Add empty state message for no search results
- Update button border-radius from 0 to 0.7rem
- Increase air.toml build command to include Tailwind CSS generation
2026-05-10 13:53:23 +02:00
Arthur Belleville
8bcf81a3f1
Add co-located CSS sources and semantic token infrastructure to Go
backend

Create the foundational structure for managing design-system CSS with
co-located sources and semantic tokens:

- Add `cmd/buildstyles` to concatenate ordered CSS sources into a single
  shipped stylesheet
- Define semantic color and effect tokens in `internal/web/ui/base.css`
- Move primitive and catalog CSS sources from `static/css/` to
  co-located locations under `internal/web/ui/`
- Update test contract to verify token presence and proper stylesheet
  generation
- Regenerate `static/styles.css` with new semantic token layer and
  source annotations
2026-05-10 11:47:42 +02:00
Arthur Belleville
0ac8bd0fc9
Update templ 2026-05-10 11:23:48 +02:00
Arthur Belleville
2e52daa81d
Add space X and space Y to components 2026-05-10 10:38:07 +02:00
Arthur Belleville
b84eff7887
Add spacing, update catalog, and make several improvements to the tablo:
add update
2026-05-10 10:37:47 +02:00
Arthur Belleville
cf64404d25
feat: refresh go-backend button variants and tablos styling 2026-05-10 09:22:22 +02:00
Arthur Belleville
c14af76fb2
feat: toggle overview projects with vanilla js 2026-05-09 21:46:56 +02:00
Arthur Belleville
4ac33c77b9
feat: add go-backend design system and tablos UI 2026-05-09 20:18:24 +02:00
Arthur Belleville
c4eb878b0e
Split components, add sessions to the DB and make the apercu page 2026-05-08 16:03:54 +02:00
Arthur Belleville
0a38442d88 Build go-backend auth app with Podman dev flow 2026-05-08 12:08:53 +02:00