* docs(cleanup): archief verouderde plannen, backlog en root-duplicaten
- 6 plans naar docs/old/plans/ (PBI-11/75/78, user-settings-store, Local github setup, lees-de-readme — laatste was verkeerde repo)
- docs/backlog/ naar docs/old/backlog/ (pre-MCP statische registry; live werk loopt via Scrum4Me-MCP)
- 6 root-level duplicaten naar docs/old/ (functional, {pbi,story,task}-dialog, product-backlog, backlog)
- 2 landing plans (niet uitgevoerd) krijgen archived: true frontmatter — blijven op plek maar uit INDEX
- scripts/generate-docs-index.mjs: skip docs/old/** + skip archived: true
- CLAUDE.md: rijen docs/backlog/, docs/plans/<key>-*.md, docs/manual/ weg; Track B-sectie verwijderd
- README.md / CHANGELOG.md / docs/plans/v1-readiness.md: link-fixes naar nieuwe locaties
Verify groen (lint + typecheck + 718 tests). docs/INDEX.md geregenereerd.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* docs(cleanup): registreer handmatige verplaatsingen en fix referenties
- 4 plans verplaatst naar docs/old/plans/ (M10-qr-pairing-login, auto-pr-deploy-sync, docs-restructure-ai-lookup, v1-readiness)
- 3 archive-plans verplaatst naar docs/old/plans/ (archive-map nu leeg)
- ST-1114-copilot-reviews + 3 research-docs naar nieuwe docs/Ideas/ map
- Duplicaat docs/old/2026-04-27-m8-realtime-solo.md verwijderd (origineel zit in docs/old/plans/)
- Link-fixes naar nieuwe locaties:
- CHANGELOG.md → docs/old/plans/v1-readiness.md
- docs/runbooks/deploy-control.md → docs/old/plans/auto-pr-deploy-sync.md (2x)
- docs/runbooks/worker-idempotency.md → docs/old/plans/auto-pr-deploy-sync.md
- docs/plans/docs-restructure-pbi-spec.md → docs/old/plans/docs-restructure-ai-lookup.md (4x text + 2x href)
- docs/INDEX.md geregenereerd (96 docs, was 100)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.1 KiB
| title | status | audience | language | last_updated | ||
|---|---|---|---|---|---|---|
| TaskDialog Profiel | active |
|
nl | 2026-05-03 |
TaskDialog Profiel
Volgt
docs/patterns/dialog.md(de generieke spec voor élke entity-dialog in Scrum4Me). Dit document beschrijft alleen de Task-specifieke afwijkingen en keuzes — alle gedeelde regels (layout, motion, demo-policy, foutcodes, validatie, theming, dialog-gedrag) staan in de generieke spec en worden hier niet herhaald.
Belangrijk: als een regel in dit profiel botst met de generieke spec, wint de generieke spec. Documenteer hier de afwijking + reden, of pas de generieke spec aan.
Velden
| Veld | Type | Mode | Validatie |
|---|---|---|---|
title |
string (required) |
beide | trim, 1-120 chars |
description |
string | null |
beide | optional, max 2.000 chars, markdown |
implementation_plan |
string | null |
beide | optional, max 10.000 chars, markdown |
priority |
int (1-4, P1 = hoogste) |
beide | int 1-4, default 3 |
status |
TaskStatus enum |
alleen edit (default TO_DO op create, niet getoond) |
enum |
created_at |
Date |
alleen edit | read-only metadata in header |
TaskStatus enum: TO_DO | IN_PROGRESS | REVIEW | DONE.
Veld-specifiek gedrag
- Auto-grow textareas (
description,implementation_plan) viareact-textarea-autosize. Max 6 regels (description) / 12 regels (implementation_plan), daarnaoverflow-y-auto. - Karakter-counter vanaf 75% van de limiet, klein, rechtsonder,
text-muted-foreground. Bv.1547 / 2000. - Markdown-hint onder elk textarea:
Markdown ondersteund (lijstjes, **vet**, \code`)`. - Priority als segmented buttons via
<PrioritySelect>/<PrioritySegmented>. Default P3 (Medium). - Status met gekleurde dot:
TO_DO— grijsIN_PROGRESS—status-in-progress(blauw)REVIEW— paarsDONE—status-done(groen)
created_atals header-metadata in edit-mode, naast de titel:Aangemaakt: 23 apr 2026. Klein,muted-foreground, géén form-veld.
URL- of state-pattern
- Gekozen: URL-based (
searchParams) - Reden: TaskDialog wordt geopend vanuit twee context-pagina's (sprint-detail en product-backlog) en moet deep-linkable zijn voor share/refresh-scenario's. Suspense + skeleton voor edit-mode loading is gewenst.
- Routes:
/sprint/<sprintId>?newTask=1 → create /sprint/<sprintId>?editTask=<taskId> → edit /products/<productId>/backlog?newTask=1 → create /products/<productId>/backlog?editTask=<taskId> → edit - Sluiten:
router.push(<base-route>)zonder query-params. - Server-side fetch in edit-mode: server component fetcht de taak vóór render mét
productAccessFilter(userId). Bestaat de taak niet of valt 'm buiten scope → toast + redirect naar de context-route. - Optioneel:
nuqsals de query-state-handling te omslachtig wordt — pas introduceren als losse refactor-task, niet inline.
Status-veld
Verberg status in create-mode (default = TO_DO is genoeg). Toon alleen in edit-mode als <Select> met gekleurde dot per optie.
Server actions
| Actie | Locatie | Context-arg | Revalidatie |
|---|---|---|---|
saveTask |
app/actions/tasks.ts |
{ sprintId?: string; productId?: string } |
revalidatePath('/sprint/<sprintId>') óf revalidatePath('/products/<productId>/backlog') afhankelijk van context |
deleteTask |
app/actions/tasks.ts |
idem | idem |
Beide acties volgen de drielaagse demo-policy + auth-scoping uit docs/patterns/dialog.md § 6–7.
Speciale gedragingen
Triggers (bestaande UI vervangen)
Deze TaskDialog is de enige create/edit-flow voor taken in beide contexten (sprint én backlog). Bestaande inline-edit-paden in components/sprint/task-list.tsx en het backlog-equivalent worden vervangen, niet ernaast geplaatst.
- Create-trigger: filled button
+ Nieuwe taakin tasklist-header → zet?newTask=1op huidige route - Edit-trigger: klik op de hele rij in de tasklist (geen apart edit-icoon) → zet
?editTask=<id>op huidige route - Loading edit-mode: Suspense met minimale skeleton (3 grijze balken),
200ms-delay zodat snelle fetches geen flicker tonen
Markdown-rendering elders
description en implementation_plan worden buiten de dialog (taakdetail, hover-card) gerenderd via de gedeelde <Markdown>-wrapper (react-markdown + remark-gfm). Niet in de dialog zelf.
Implementatie-volgorde (suggestie)
Hergebruik dit als checklist bij het bouwen of refactoren van TaskDialog:
- Dependencies in
package.json(ziedocs/patterns/dialog.md§ 2) - zod-schema in
lib/schemas/task.ts— gedeeld door form en action productAccessFilter-helper checken inlib/auth/saveTask/deleteTaskinapp/actions/tasks.tsmet auth-scoping + demo-check (laag 2)proxy.ts-guard voor demo-write-routes (laag 1) — alleen als nog niet aanwezig- Eventueel ontbrekende MD3-tokens in
app/styles/theme.cssaanvullen <DemoTooltip>rond submit/delete-knoppen (laag 3)- TaskDialog — create-mode eerst (minder edge cases)
- Edit-mode toevoegen (status, delete,
created_at-metadata) - URL-state via native
searchParamsop beide context-pagina's - Bestaande task-row trigger refactoren (klikbaar maken naar dialog)
- Suspense + skeleton voor edit-mode + scope-check op fetch
- Dirty-close-guard
- Keyboard shortcuts (Cmd+Enter)
Bewust NIET in v1
Specifiek voor TaskDialog (boven op de algemene out-of-scope-lijst in docs/patterns/dialog.md § 13):
- ❌ Sub-tasks / parent-child relaties tussen taken
- ❌ Tags / labels / categorieën op taken
- ❌ Due dates / reminders per taak
- ❌ Time tracking (uren-registratie) — wel relevant voor inspannings-monitor, eigen feature
- ❌ Sharing / collaboration per taak
- ❌ Templates voor terugkerende taken
Referenties
docs/patterns/dialog.md— generieke spec (bron-of-truth voor alles wat hier niet beschreven is)docs/architecture.md— datamodelTaskdocs/styling.md— MD3-tokens, status- en priority-kleurenlib/task-status.ts— enum-mapper DB ↔ API