On this page

Jobs and the interface

Every long operation is a job, and the interface reports them consistently.

Where jobs appear#

SurfaceWhereWhat it gives you
ToastsBottom-rightOne per lifecycle event; failures stay until dismissed and offer Details. Rapid sequences collapse.
DockBottom-left pillActive count and the top job's progress; hover expands the three most recent, with per-job cancel. Disappears 30 s after the last job completes.
DrawerThe pill, or j jEvery job: All / Running / Queued / Finished, filter by title or id, cancel all running, pause or resume the queue.
Plan checklistImport groups in the drawerThe modules an import started in the background (the eager ones, or those you had already opened on a re-import): each step as waiting, running, skipped, or done, with Waiting on X where an ordering edge was declared.

Job row fields#

ElementMeaning
Statusqueued, running, paused, completed, failed, cancelled.
ProgressA percentage when the module reports fractions or counts; indeterminate otherwise.
Rate and ETAFrom the last 20 progress samples, or the module's own eta_seconds hint.
Stall hintAfter three minutes without a tick. A hint about the job, not an error.
ActionsCancel; Retry when the job failed. The job id copies from the details dialog.

The queue runs WORKER_CONCURRENCY jobs in parallel (default 2, changeable live by an admin). A job's declared priority is shown in its details but there is no manual reordering, the queue can be paused without interrupting running work, and a job past JOB_EXECUTION_TIMEOUT_SECONDS (default 1800) is force-stopped, offload children included.

Keyboard shortcuts#

KeysAction
j jOpen the jobs drawer (ignored while typing).
Enter / SpaceOpen the focused job's details.
EscClose a sheet, dialog, or tour step.
← →Move through the product tour.
cmd/ctrl + A · D · DeleteSelect all, duplicate, remove cards (dashboard edit mode).
Arrows (+ shift)Nudge the selected cards.

Interface conventions#

ConventionMeaning
ColourOnly semantic: good, warning, serious, critical — always with an icon or label, never colour alone.
LoadingSkeletons above the fold; a canvas keeps its last result instead of unmounting.
Empty and error statesEvery list has a designed empty state with the action that fills it, and a designed error state.
Motionprefers-reduced-motion disables animation across the app.