Scrum4Me/lib
Madhura68 d7d11124e3 feat(PBI-79): sprint-switch auto-select PBI/story + user-settings persist
Bij sprint-switch wordt de sprint-content server-side opgevraagd. Wanneer
de sprint precies één PBI (en die PBI exact één story binnen de sprint)
heeft, worden PBI en story automatisch geselecteerd. Alle drie keuzes
(sprint, pbi, story) worden atomair in user-settings opgeslagen zodat ze
cross-device blijven hangen.

- lib/user-settings.ts: layout krijgt nullable activePbis +
  activeStories per product.
- lib/active-sprint.ts: setActiveSelectionInSettings schrijft de drie
  keys atomair + notify pg_notify.
- actions/active-sprint.ts: switchActiveSprintAction(productId, sprintId)
  doet de server-side auto-select-resolutie (single PBI → single story)
  en returnt { sprintId, pbiId, storyId }.
- components/shared/sprint-switcher.tsx: handleSwitchSprint roept de
  nieuwe action aan en synchroniseert de workspace-store gelijk zodat
  de UI geen flash krijgt voor de SSR-refresh.
- components/backlog/active-selection-hydrator.tsx (nieuw): client-side
  effect dat user-settings.activePbis/activeStories naar workspace-store
  spiegelt; wint van de localStorage hint-restore.
- app/(app)/products/[id]/page.tsx: ActiveSelectionHydrator gemount
  binnen BacklogHydrationWrapper.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 18:13:20 +02:00
..
auth M10: Password-loze inlog via QR-pairing (ST-1001..ST-1008) (#12) 2026-04-28 00:01:04 +02:00
idea-prompts chore: typecheck-script + dependency-cascade-grep in Make-Plan-prompt (#130) 2026-05-06 09:31:02 +02:00
insights feat(PBI-78): cost-analysis widget on insights page (#187) 2026-05-10 12:59:45 +02:00
realtime Load/render workspace alignment (#182) 2026-05-10 07:34:58 +02:00
schemas feat: sprint-switcher overal + PBI auto-toevoeging + cleanups (#163) 2026-05-08 02:32:50 +02:00
active-sprint.ts feat(PBI-79): sprint-switch auto-select PBI/story + user-settings persist 2026-05-11 18:13:20 +02:00
api-auth.ts feat(M8): Realtime Solo Paneel via Postgres LISTEN/NOTIFY (ST-801..ST-806) (#8) 2026-04-27 13:59:32 +02:00
auth-guard.ts fix: admin-navigatie zichtbaar voor ADMIN-rol gebruikers 2026-05-05 20:46:27 +02:00
auth.ts feat(ST-l9kkxh2m): /reset-password pagina + resetPasswordAction + hashPassword 2026-05-05 14:30:59 +02:00
chart-colors.ts PBI-56 + ST-1275: PLAN_READY → GRILLING re-grill + SKIPPED status rendering (#147) 2026-05-07 17:36:44 +02:00
code-server.ts feat(PBI-59): Sprint.code (SP-N sequentieel per product) (#153) 2026-05-07 20:10:16 +02:00
code.ts feat(codes): generateNextTaskCode + CODE_REGEX export + Zod regex op alle 3 schemas 2026-05-04 08:36:28 +02:00
debug.ts Sprint: Verbeteren debug mode (#179) 2026-05-09 22:46:29 +02:00
env.ts feat(PBI-66): wekelijkse sync van model_prices via Anthropic /v1/models (#167) 2026-05-08 09:38:33 +02:00
idea-code-server.ts lib: idea-code generator + plan_md yaml-frontmatter parser (M12 T-494) 2026-05-04 19:40:39 +02:00
idea-code.ts lib: idea-code generator + plan_md yaml-frontmatter parser (M12 T-494) 2026-05-04 19:40:39 +02:00
idea-dto.ts feat(ideas): secondary_products meeladen in IdeaDto en alle queries 2026-05-06 02:20:34 +02:00
idea-plan-parser.ts Sprint: regril (#170) 2026-05-08 13:22:10 +02:00
idea-status-colors.ts ui: idea-status badge helper (M12 T-509) 2026-05-04 21:29:02 +02:00
idea-status.ts PBI-56 + ST-1275: PLAN_READY → GRILLING re-grill + SKIPPED status rendering (#147) 2026-05-07 17:36:44 +02:00
job-config-snapshot.ts feat(PBI-67): model + mode-selectie per ClaudeJob-kind (#169) 2026-05-08 11:20:10 +02:00
job-config.ts fix(KIND_DEFAULTS): permission_mode acceptEdits voor idea-kinds + PLAN_CHAT (#172) 2026-05-09 11:33:03 +02:00
job-status-url.ts M13: Veilige Claude-agent-workflow (Scrum4Me-side) (#26) 2026-05-01 13:42:18 +02:00
job-status.ts feat(T-572): map SKIPPED in lib/job-status + alle terminal-checks 2026-05-05 23:10:14 +02:00
manual-server.ts PBI-58: Developer manual + in-app /manual page (#148) 2026-05-07 18:00:10 +02:00
manual.generated.ts PBI-58: Developer manual + in-app /manual page (#148) 2026-05-07 18:00:10 +02:00
pause-context.ts PBI-47: schema, pause_context Zod, resumePausedSprintRunAction, PAUSED-banner UI (#137) 2026-05-06 22:17:11 +02:00
prisma.ts chore: SQLite verwijderd — alleen PostgreSQL via Neon 2026-04-25 12:15:19 +02:00
product-access.ts feat: show active product name in navbar, links to product page 2026-04-26 17:56:50 +02:00
push-client.ts Sprint: pbi-55 (#156) 2026-05-07 21:46:01 +02:00
push-server.ts Sprint: pbi-55 (#156) 2026-05-07 21:46:01 +02:00
rate-limit.ts feat(ST-p6d1odh0): createUserQuestionAction — UserQuestion + PLAN_CHAT job queuing 2026-05-05 17:30:00 +02:00
session.ts feat(ST-111ci8t4): admin user-actions (delete, updateRoles, setMustResetPassword) 2026-05-05 14:38:42 +02:00
solo-workspace-server.ts feat(PBI-76): migrate cookie-based prefs to user-settings (Phase 2) (#189) 2026-05-10 21:20:29 +02:00
sprint-conflicts.ts feat(PBI-79/ST-1343): sprint-conflicts helper-library 2026-05-11 13:45:59 +02:00
sprint-switcher-data.ts feat(PBI-76): migrate cookie-based prefs to user-settings (Phase 2) (#189) 2026-05-10 21:20:29 +02:00
task-status.ts feat(PBI-63): meerdere sprints per product + EXCLUDED + sprint-switcher (#161) 2026-05-08 00:15:04 +02:00
tasks-status-update.ts feat(PBI-63): meerdere sprints per product + EXCLUDED + sprint-switcher (#161) 2026-05-08 00:15:04 +02:00
user-agent.ts feat(ST-1135): UA-redirect bij login — phone naar /m/* (T-322/T-323/T-324) 2026-05-04 10:09:09 +02:00
user-settings-migration.ts feat(PBI-76): migrate cookie-based prefs to user-settings (Phase 2) (#189) 2026-05-10 21:20:29 +02:00
user-settings.ts feat(PBI-79): sprint-switch auto-select PBI/story + user-settings persist 2026-05-11 18:13:20 +02:00
utils.ts feat: ST-001–ST-005 foundation — scaffolding, Prisma, schema, seed, env 2026-04-22 21:04:48 +02:00