KQ-2069 · ROUTINE/WEEK

Routine Week

Every scheduled agent routine on one week: days across, the small hours down, each run a block coloured by its outcome and each future slot a dashed ghost, with overlapping runs sharing the column under a notch and skipped runs hatched. The now line moves down today's column on springs.glide as now advances, and as it crosses a scheduled slot a new block buds out of the line — a sliver that opens to the block on springs.recoil, scaled from its top edge — then fills while the run executes, the fill following now on glide until the host records the outcome. The slots are a grid with one row per day: arrows move between slots (Left and Right to the nearest slot in time on the neighbouring day), Home and End jump, Enter opens a run, R runs the focused routine now and P pauses it; under 32rem the grid becomes the day's agenda under a week strip.

KQ-2069 · ROUTINE/WEEK

Nightly reports

Coldbrook · week of 12 Oct

13 ok1 failed1 skippedThu 02:20
  1. 01:00Sales digestQuill · 36 minSucceeded
  2. 02:30Inventory snapshotSift · 20 minScheduled
  3. 03:15Churn watchSift · 45 minScheduled
  4. 05:00Ad spend recapQuill · 25 minScheduled
  5. 07:30Support backlogPenn · 15 minScheduled

Inventory snapshot· Sift

Daily at 02:30 · 20 min

Thu 15 · Scheduled

Arrow keys move between runs, Enter opens a run or edits a slot that has not run, R runs the routine now, P pauses it.

thu 02:20 · next at 02:30

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/routine-week

Props

routines
RoutineWeekRoutine[]
default defaultRoutineWeekRoutines (6)
The recurring routines: { id, name, agent, days (0 = Monday), at (minutes after midnight), duration, paused? }.
runs / defaultRuns
RoutineWeekRun[]
default — / defaultRoutineWeekRuns
This week's runs: { id, routine, day, start, duration, outcome, note? }; outcome is success, failed, skipped or running. A run whose routine, day and start match a slot fills that slot.
onRunsChange
(runs: RoutineWeekRun[]) => void
default —
Fires with the whole list when Run now adds a running run.
weekOf
number
default defaultRoutineWeekStart (Mon 12 Oct 2026)
Monday 00:00 of the week, in ms.
now
number
default Thursday 02:20 of that week
The moment the week is read, in ms: places the now line and decides which slot is running.
utcOffset
number
default 0
Minutes added to UTC before dates are read.
hours
[number, number]
default [0, 9]
The hours drawn, as [from, to).
day / defaultDay
number
default — / today
The day the narrow agenda shows, 0 to 6.
onDayChange
(day: number) => void
default —
Fires when the week strip picks another day.
onRunNow
(routine: RoutineWeekRoutine, run: RoutineWeekRun) => void
default —
Run now (or R) was pressed, with the run it started at the now line.
onPause
(routine: RoutineWeekRoutine, paused: boolean) => void
default —
Pause or Resume (or P) was pressed, with the new state.
onEditSchedule
(routine: RoutineWeekRoutine | null) => void
default —
Edit schedule was pressed, or Enter on a slot that has not run; null from the empty week's Add a routine.
onOpenRun
(run: RoutineWeekRun, routine: RoutineWeekRoutine) => void
default —
Open run was pressed, or Enter on a slot that ran.
title
string
default "Nightly reports"
The surface's name and accessible name.
team
string
default "Coldbrook"
Whose routines, under the title.
hourHeight
number
default 32
Height of an hour on the grid, px; the agenda's rows breathe with it.
blockStyle
"solid" | "tinted" | "outline"
default "tinted"
Run blocks: pigment-filled, washed with a side bar, or outlined with an outcome dot.
accent
string
default "var(--accent-bright)"
The now line, running blocks, scheduled slots, today's shading and focus — any CSS colour.
maxHeight
number
default 300
Tallest the grid's viewport grows, px, before the hours scroll inside it.
status
"ready" | "loading" | "error"
default "ready"
Whether the week has loaded; loading draws placeholder columns, error offers Try again.
onReload
() => void
default —
Try again was pressed after the week failed to load.
disabled
boolean
default false
Read only: nothing can be run, paused or edited.
className
string
default —
Classes for the outer region.