kanban-dev-webapp/src/lib/roadmap
Dave 2b01d0e837 feat(plan): bar-math helpers + open reschedule to anyone signed in
Pure helpers for the Gantt's drag/double-click math:

- fractionToDate(fraction, range): what ISO date a fractional
  position in the chart represents, snapped to whole UTC days.
- shiftDatesByFraction: move a bar's start and target by the
  same delta, clamped to the visible range, with start dropped
  when clamping would invert or collapse the span.
- resizeEndToFraction: what the new target date becomes when
  the user drags a right edge.
- moveCardByFraction: alias that produces the action's input
  shape.

11 unit tests cover the corners (no dates set, point bar,
clamping past the right edge, inversion guard).

rescheduleCardAction also drops its owner-only gate. Any
signed-in user — owner or client manager — can move dates
now. PocketBase's existing row-level rules govern which cards
a given user can write (a client manager still only writes
their own client's cards); the activity-log row is unchanged
and attributes the move to the actual user either way.

Adds setSubtaskDatesAction so the same drag/double-click
gestures work on subtask rows. No audit log on subtasks —
matches the existing pattern (subtask toggles don't log).
2026-09-22 05:16:04 +02:00
..
band.test.ts feat(roadmap): Now/Next/Later derived from board order and dates 2026-09-17 07:16:24 +02:00
band.ts feat(roadmap): Now/Next/Later derived from board order and dates 2026-09-17 07:16:24 +02:00
bar-math.test.ts feat(plan): bar-math helpers + open reschedule to anyone signed in 2026-09-22 05:16:04 +02:00
bar-math.ts feat(plan): bar-math helpers + open reschedule to anyone signed in 2026-09-22 05:16:04 +02:00
load.test.ts feat(plan): loadPlan loader with pure buildPlanSections helper 2026-09-21 16:13:47 +02:00
load.ts feat(plan): loadPlan loader with pure buildPlanSections helper 2026-09-21 16:13:47 +02:00
progress.test.ts feat(roadmap): checklist-derived completion percentage 2026-09-17 07:16:57 +02:00
progress.ts feat(roadmap): checklist-derived completion percentage 2026-09-17 07:16:57 +02:00
slot-date.test.ts feat(plan): Puzzle v1 frontend — tray + 3 month slots, keyboard listbox, proposals, toast 2026-09-19 18:29:32 +02:00
slot-date.ts feat(plan): Puzzle v1 frontend — tray + 3 month slots, keyboard listbox, proposals, toast 2026-09-19 18:29:32 +02:00
timeline.test.ts chore(plan): pick up Plan Puzzle v1 in-progress work and Forgejo repo-url helper 2026-09-21 14:40:04 +02:00
timeline.ts chore(plan): pick up Plan Puzzle v1 in-progress work and Forgejo repo-url helper 2026-09-21 14:40:04 +02:00