Work Schedules
Configure work hours, breaks, and work days for individual members or via shared profiles.
Work Schedules
Gantt plan moves
PMs and admins can drag a pinned task bar horizontally to move its planned scheduledDate. The server returns the authoritative task and logged time is never changed. A pending move dims the bar, while rejected or invalid dates show an error.
Dragging changes the date only. Resize and dependency editing are not available yet.
Create reusable profiles in Settings → Work Schedules. Each profile defines:
| Field | Example | Description |
|---|---|---|
startHour | 9.0 | Workday start (9:00) |
endHour | 18.0 | Workday end (18:00) |
breakStartHour | 13.0 | Lunch break start (13:00) |
breakEndHour | 14.0 | Lunch break end (14:00) |
workDays | [1,2,3,4,5] | ISO days (1=Mon, 7=Sun) |
Assigning a schedule
In Team → Member → Edit, assign a profile via scheduleId. The member inherits all profile values unless they have individual overrides.
Per-member overrides
Members can override any individual field without changing the shared profile:
workStartHour,workEndHour— different hours than the profilebreakStartHour,breakEndHour— different breakworkDays— e.g. Mon–Thu onlydailyHoursMap— precise per-day capacity (e.g.{"1":8,"5":4}for a Friday half-day)
Overrides are set by an admin on the member's profile page.
Timezone
Each member can have a timezone override (IANA format, e.g. "America/New_York"). If null, the org default timezone is used. Scheduled tasks and Telegram notifications respect the member's timezone.
How schedules affect the planner
The agenda planner uses the resolved schedule (profile + overrides) to:
- Compute daily capacity (available hours after break)
- Define productive windows for reflow (blocks skip over breaks)
- Enforce work day boundaries (no tasks scheduled on non-work days)
- Calculate overtime indicators on the timeline
Changes to a schedule invalidate the member's materialized agenda, triggering a background refresh.