Feature docs

Tasks

IN DESIGN — design-ahead of the app

The Tasks screen is where a rep works their day: the board answers "what's most important right now" and the act-in-place pane answers "how do I bang these out without leaving the screen or losing my place."

It is grounded in the Galleria BMW field interviews and a live BDC-client interview — the #1 pain was that opening a task ejected the rep from the list and reset their scroll. Every part of the screen is an instance of a locked atom: the task card, the swim-lane bands, the shared act-in-place pane, and the message composer.

Walkthrough — Taylor, Jul 20

Listen to this page
0:00/8:51

Rulings ledger

DateRuling
07-16Priority ships with the backend — a real priority field arrives with eng; the card stays honest until then. The act-in-place pane becomes the centerpiece of the arc.
07-16Snooze & checklists OUT — deferred; the pane keeps the one on-card action (complete) and the composer.
07-16No priority marker on cards — band membership is the signal; the legacy .tk-prio tiers are retired.
07-16Urgency into the type glyph — overdue red-01 / due-soon orange-01 on the leading type icon; the title always stays gray-00.
07-16Compact = footer killed — the regular card minus the footer: R1 radio · title · due · kebab; R2 type glyph · customer name.
07-19Conversation-first pane — two combined AI points (progress + next move) lead; the description is demoted to Details. Superseded v239: header = card grammar → VOI line → Best next steps; lead-source badges + last-contact dropped; source moved to the Details tab.
07-19Quick Results removed ("keep it simple") — completion is the header radio or the one Complete Task button.
07-19Standard DetailPage top bar — the locked .mh bar (title + X); the pane reads as the selected card, enlarged.
07-19Call = composer channel #6 (green) — two-tap place-call, a full-width live waveform, end-only. Call never arms completion, and hanging up needs no wrap-up — the system logs the call and its recording to the timeline automatically; Log remains the manual backup for off-system calls.
07-19Complete = confetti + auto-advance to the next task in the band; the board scroll never moves (the sacred-scroll law). Amended v239: a send ARMS completion — a 4s commit, not an instant close.
07-16Board axis = status columns × urgency bands — To-Do | Done | Archived, with urgency bands stacked inside To-Do.
07-19Bands final = Urgent + To-Do only — Overdue/Due-Today bands dropped; the card's urgency-colored due chip carries them.
07-20Ruling 60 — two-band fold — the board carries exactly Urgent + To-Do bands (vertical stacks inside To-Do).
07-20Ruling 61 — Call idle — one labeled green place-call button, no fields, no send.
07-20Armed completion (.tp-armbar) — a send ARMS: a 4s commit with a “Keep open” decline; v1 arming channels = Text / Email / Log / Note-on-action; off-type sends complete silently; DAISI + the Task tab never arm.
07-20Conditional DAISI ask (.tp-askbar) — offered only when the completed customer has no other open task AND no scheduled next step.
07-20VOI header line — active deal vehicle + “+N”, on the leading-box spine below the task header.
07-20Details Contact-first — Contact → Task description → Team → Documents → Source.
07-20Indicator-only card urgency — the --over/--soon surface-tint rules were deleted; urgency is the type glyph + due chip only.
07-20Boards = one immersive live view each; static state figures relocated to the Board-states page.
07-20Vehicles tab — Deals / Saved / Viewed / Search activity; the deal row shows its status as colored text, not a badge.
07-20Pane docks right as a flex sibling of the content column (pushes, never covers; fixed the far-left overlap).
07-20Lane empty = dashed drop-target — centered icon-over-text, icon+text color parity per variant (base gray-03, Urgent red-01).
07-20Filters panel + one-right-panel law — the FilterPageForm panel pushes from the right; opening it closes the task pane and vice-versa.
07-20Interactive pane tabs — Conversation / Details / Vehicles swap live in every pane instance.
07-19Done column = green-02 — the win color joins the board.
07-20Compact bottom padding balanced; Archived opens in place (rail ⇄ column, desktop); the board is live (card→pane push, band collapse, compact flip).
07-20Mobile = pager + full-screen sheet — columns become swipe pages; the pane covers (never pushes); Archived is a full page, not a rail.

Anatomy map

Task cardThe v4.3 icon-led card and every state, full + compact. Lanes & bandsThe .sb-lane grammar — tints, empty/win, collapse, band variant. Act-in-place paneThe 424px pane: header, best-next, tabs, complete, composer. Desktop boardFull-bleed interactive board — columns × bands + pane push. Mobile boardScroll-snap pager + full-screen task sheet. Board statesStatic state figures + the interaction contract. Filter panelThe FilterPageForm panel — Due/Assigned/Type/Status/Priority. ComposerThe channel grammar + the Call channel lifecycle. Tasks headerThe compact control strip — All/Mine, Overdue toggle, Compact.

The card

The canonical task card — its icon-led anatomy, the detail rows, why priority lives off the card, and the footer-killed compact form.

Task card v4.3 — states
Email service reminder
Jun 12 · 9:00 am
JM 2
Send lease quote
Due 3:00 pm
TB
Follow up on financing
2d overdue
JM 5
Confirm delivery time
Done · 11:20 am
JM
Archived to-do
May 30
TB
Locked layout (deal-card icon-led stack). Row 1 = radio + TITLE (the card's identity — t-paragraph-sb gray-00, ellipsis) + when in the corner (overdue red-01 / soon orange-01 / future·done gray-03). Row 2 = TYPE glyph + customer name. The radio (.sb-radio, 32px) and the type glyph share ONE 32px co-axial leading box, so the title and the name land on the same left edge, and the two glyphs sit on the same vertical axis. Hierarchy: title = identity (t-paragraph-sb gray-00); customer name steps DOWN to t-label. Urgency (A) — indicator-only: urgency lives ONLY in the type glyph + the due chip (overdue red-01 / soon orange-01); the card surface is never tinted — the title always stays gray-00. Border-only hover; done strikes the title only (card not dimmed); archived dims.
Detail — action-type · description clamp
Review credit application
Jun 12 · 2:00 pm
TB
Call re: trade-in valuation
Due 5:00 pm
Customer wants the @Jenna appraisal before Friday — flag the financing concern from last call and confirm the payoff amount.
JM 3
Type glyph (fa-list-check) is the one place action-type tasks (≈39%) are stated — their footer shows the generic View. The optional description (.tk-desc, gray-02, blue @mentions) returns as a 2-line clamp, only when present, aligned to the content column under the name. Comment count kept as shipped (>0 only). Footer = 16px assignee avatar + comment count · the ONE contextual .qa (Call/Text/Email, or View for action) + the overflow ellipsis .qa.
Priority — not on the card
Ruling (Taylor): the task card carries NO priority indicator — urgency is the isUrgent boolean, expressed by whether the card sits in the Urgent band (the board has just two bands, Urgent + To-Do; the earlier Medium/Low/Unset tiers were dropped). The pane's .sb-msel--danger Urgent toggle is the second path to set it. The legacy .tk-prio tier classes are retired from the card; board cards render no urgent chip (band membership is the signal).
Compact — full card minus footer (canonical)
Email service reminder Jun 12
Priya Nair
Follow up on financing 2d overdue
Jordan Avery
Confirm delivery time Done · 11:20 am
Dana Cole
Ruling 56 (Taylor, 2026-07-19) — re-spec: compact = the regular card with the footer killed. R1: radio · title (flex) · due (urgency-colored) · a .sb-cardmenu kebab (replaces the two footer .qa actions); R2: type glyph · customer name. Same paddings + 32px co-axial leading boxes as the full card; hover / selection / done treatments shared (done = struck title + green-check radio). Height lands naturally (~2 rows). The old Form-B comment-count is dropped (footer content is gone); the customer name stays load-bearing on R2.

Bands & the board

How the board is carved up: status columns with urgency bands stacked inside To-Do, and the lane grammar those bands instance.

Board structure: status columns To-Do (flex 3, work surface) | Done (green-02) | Archived (collapsed .sb-leadrail). Inside To-Do only two stacked urgency bands — Urgent (pin, red; always renders, empty = drag-to-pin) and To-Do (neutral, overdue-first); Overdue/Due-Today bands were dropped — the card’s urgency-colored due chip carries overdue/due-today. Cards are WHITE on the board (color-on-lane law) and carry no urgent chip.
Anatomy — one band (To-Do, vertical stack)
To-Do 12
Email service reminder
Jun 12
JM
Review credit application
Jun 13
TB
Schedule test drive
Jun 14
JM
The band = a full-width rounded status-02 container (mirrors .sb-leadwrap) with the header inside at the top and cards beneath; the tint continues below the last card. Header (board chrome, always visible — no hover-hidden): leading glyph + title + count · spring · overflow (…) + collapse (angle). Color-on-lane law: urgency lives on the LANE, not the columns and not the cards — cards render WHITE inside (leads-board law) and the board suppresses their --over/--soon SURFACE tints (the lane already carries urgency). Card urgency is indicator-only everywhere: type glyph + due chip. The surface-tint rules were deleted; no context tints the card. The when text keeps its urgency color (it's information, not surface). Sort within a lane = overdue-first by default (no per-lane sort menu). Rulings final (Taylor): two bands only (Urgent + To-Do) · arrangement = vertical stack · Done/Archived = column treatments · card compact = two-row @56px.
Tint mapping — the two bands (headers only)
Urgent3
To-Do42
Ruling 60 (Taylor) = TWO bands only: Urgent (red-02/red-01 + pin; always renders, empty = the drag-to-pin state) and To-Do (gray-07/gray-01 neutral; everything else, overdue-first). The Overdue and Due-Today bands are dropped — the card's own urgency-colored due chip ("2d overdue" red-01 / "Due 3:00 pm" orange-01) carries overdue/due-today, so a dedicated band would be redundant. Done and Archived are COLUMN treatments, not bands — Done = a green-02 container, Archived = a neutral container (see the desktop board); they live beside the To-Do column, they are not urgency tiers inside it. The orange/yellow band tint pairs were removed from the CSS (ruling 60 — nothing instances them now); only Urgent-red + To-Do-neutral band tints remain, plus Done green-02 / Archived neutral as column treatments. Pin = manual urgency (the isUrgent boolean); the neutral To-Do band holds the derived rest.
Empty + win states
Urgent0
Drag a task here to pin it urgent
To-Do0
Nothing left — you’re all caught up
Empty state redesign: a proper centered drop-target stack — a rounded (r-7) 1px dashed zone inset 8px in the band body, min-height ~96px, icon (16px) ABOVE the text with an 8px gap, true-centered in the band body below the header. Contrast fix: icon AND text share ONE color per variant — base band both gray-03, Urgent both red-01 (dashed border red-01@40%, rounded r-7 preserved through the override). Urgent empty (day-one — most reps start unpinned): the dashed border + icon pick up red-01 at 40% strength so the zone reads as THE pin target — “Drag a task here to pin it urgent”. To-Do win at zero: same centered stack but no dashed border (it is not a drop target) — green-01 check + “Nothing left — you’re all caught up”, the daily zero-out reward. Atom cascades to both boards.
Collapsed — header-only bar (collapses in place)
Urgent2
Follow up on financing
2d overdue
JM
Call re: deposit refund
1d overdue
TB
Collapse is in place — a band keeps its slot and shrinks to a slim header-only bar (the collapse angle flips up→down); nothing teleports to a board edge. Spatial continuity mirrors the .sb-leadrail collapsed-column ruling; the count stays on the collapsed bar. Only the two bands (Urgent, To-Do) collapse; Done/Archived are column treatments (green-02 / neutral) that collapse at the column level on the board, not here.
Desktop board
Board (desktop): status columns To-Do | Done | Archived, urgency bands stacked inside To-Do, pane CLOSED by default. The live immersive prototype is comp-tasks-desktop.

The act-in-place pane

The heart of the arc — select a task and a pane pushes in without moving the list; it reads as the card, enlarged, and lets the rep act in place.

Task pane · v7 — aligned spine · Complete-Task row · default (Conversation) + urgent regression
Default · Complete row above composer
Task
Send lease quote
Due 3:00 pm
2024 Jeep Wrangler Rubicon+2
Best next stepsNegotiating lease terms on the Rubicon — quote sent, awaiting reply.Send the 36/10k figures and book a Saturday test drive.
View Customer
Shane Dusang2d ago
Text ReceivedSMS
Can you send me the lease numbers?
Taylor B.2d ago
Text SentSMS
Pulling them now — back to you shortly.
Agent
Hi Shane — here is the 36-month / 10k lease at $412/mo, $0 down…
Urgent ON · regression
Task
Follow up on financing
2d overdue
2024 Jeep Wrangler Rubicon+2
Best next stepsWent quiet after pre-approval — no reply in 3 months.Re-open with the current rate; confirm the X5 is still the target.
View Customer
Shane Dusang2d ago
Text ReceivedSMS
Can you send me the lease numbers?
Taylor B.2d ago
Text SentSMS
Pulling them now — back to you shortly.
Agent
Ruling 46 — spine alignment: the Best next steps glyph sits in the SAME 32px leading box as the radio (row 1) and type glyph (row 2), 14px centered — radio · type · car · lightbulb form one continuous vertical spine, text on the title/customer-name left edge. Ruling — VOI line: one unboxed row between the type/name row and Best-next-steps — car glyph + vehicle title + "+N" overflow (the promoted shared .ih-deals recipe, .ih-ico normalized to the 32px spine box). Content order = active deal's vehicle → top favorite → top viewed; phone stays OUT of the header (on phone tasks the composer's green call button IS the number).
Tabs (.sb-tabbar--secondary): Conversation (default — messages + form submits only, no update/deal-change noise) · Details · Vehicles, with a right-aligned View Customer link to the full profile. Conversation is the DEFAULT and opens scroll-anchored to the newest message. Details order: Contact → Task description → Team → Documents → Source.
Best next steps: the two DAISI points combined into one block — the progress gist (where the customer stands) + the strategic play (what to do next). DAISI-generated (eng flag: needs the mini-summary + next-action service).
Urgent control: a .sb-msel--danger toggle (fa-triangle-exclamation; selected = red-02 bg + red-01 text/icon/border) = the isUrgent boolean — the second path into the Urgent band besides dragging a card there.
Ruling 47a — Complete Task: an always-visible full-width .sb-btn--primary row, padded (12/16px, not edge-to-edge), docked directly ABOVE the composer — the fat path for tasks needing no message. Pressing = confetti + auto-advance to the next task in the band; the board scroll never moves. The header radio is the compact equivalent. Ruling — ARMED completion: a successful send from the composer does NOT complete — it ARMS: the Complete row swaps to a flat .tp-armbar (gray-02, no leading check) reading "Text sent · completing in 4…" (countdown inside the text) + a right-aligned Keep open that cancels permanently; ANY other interaction (typing, tab switch, scroll, another card) commits immediately, firing the locked done grammar. v1 arming channels = Text, Email, Log, and Note only on action-type tasks; Call never arms (ending a call simply ends it — the phone system posts the call and its recording to the activity timeline automatically, so there is no wrap-up send to judge, and a voicemail would otherwise close the task); DAISI and the Task tab never arm; scheduled sends arm with schedule-aware copy ("Text scheduled for Tue 9:00 am · completing in 4…"); off-type sends complete with NO confirmation (only ~38% of tasks are satisfied on their matching channel).
Completed state · Details separators
Armed · send fired, completing in 4…
Task
Send lease quote
Due 3:00 pm
2024 Jeep Wrangler Rubicon+2
Best next stepsNegotiating lease terms on the Rubicon — quote sent, awaiting reply.Send the 36/10k figures and book a Saturday test drive.
View Customer
Shane Dusang2d ago
Text ReceivedSMS
Can you send me the lease numbers?
Taylor B.2d ago
Text SentSMS
Pulling them now — back to you shortly.
Text sent · completing in 4…Keep open
Agent
Hi Shane — here is the 36-month / 10k lease at $412/mo, $0 down…
Completed · struck title · Undo bar
Task
Send lease quote
Done · 3:14 pm
2024 Jeep Wrangler Rubicon+2
Best next stepsNegotiating lease terms on the Rubicon — quote sent, awaiting reply.Send the 36/10k figures and book a Saturday test drive.
View Customer
Shane Dusang2d ago
Text ReceivedSMS
Can you send me the lease numbers?
Taylor B.2d ago
Text SentSMS
Pulling them now — back to you shortly.
Completed · just nowUndo
Have DAISI set the next task?
Agent
Following up — anything else I can send over?
Details active · mid-card separators
Task
Send lease quote
Due 3:00 pm
2024 Jeep Wrangler Rubicon+2
Best next stepsNegotiating lease terms on the Rubicon — quote sent, awaiting reply.Send the 36/10k figures and book a Saturday test drive.
View Customer
Contact
(313) 555-0198
shane.d@email.com
Task description

Pull the 36-month / 10k-mile lease quote at the current money-factor and confirm the residual.

Team
TBJMTaylor Bertrand, Jenna M.
Documents
Credit application
On file
Trade application
None
Source
Credit AppCarGurus
Agent
Hi Shane — here is the 36-month / 10k lease…
Ruling 47b — completed state: the header radio becomes a green check + struck title (the card’s locked --done grammar); the Complete row swaps to a quiet completed bar — green-01 check + "Completed · just now" + a right-aligned "Undo" blue link (no primary button). The Best-next-steps block stays, and the composer remains usable (post-completion follow-up is legitimate). Nothing dims — done is struck, not grayed (card law). Ruling 45 — mid-card separators: a .sb-sechead that FOLLOWS content inside a card (.cbody + .sb-sechead) now carries a gray-06 hairline ABOVE as well as below, so a section’s content detaches from the next header; a top-of-card sechead gets none. Shared with comp-inbox-details. Ruling — conditional DAISI ask: a flat .tp-askbar sibling directly under the done bar — the .sb-ic-daisi glyph (yellow-01) + "Have DAISI set the next task?" + a .sb-btn--text "Yes" (not a second blue link) + a borderless dismiss ✕. CONDITIONAL — renders only when the completed customer has NO other open task AND no scheduled next step (unconditional would train a dismiss reflex by task 5); while shown, auto-advance is suppressed; Yes flips the embedded composer to --daisi, focused, global placeholder, no prefill; dismiss or Esc advances immediately and suppresses the ask for the session.
Ruling 48 — the composer opens on the task's TYPE: phone→Call (idle place-call), text→Text, email→Email, action→Note — the rep lands in the right channel without a tap.
Vehicles tab
Vehicles active · deal → Saved → Viewed → search
Task
Send lease quote
Due 3:00 pm
2024 Jeep Wrangler Rubicon+2
Best next stepsNegotiating lease terms on the Rubicon — quote sent, awaiting reply.Send the 36/10k figures and book a Saturday test drive.
View Customer
Deals
W2214
2024 Jeep Wrangler Rubicon
Rubicon 4dr 4x4
New • 12 mi
In Stock
Working
Saved
W3391
2024 Jeep Wrangler Sahara
Sahara 4dr 4x4
New • 8 mi
In Stock
$48,900
Viewed
F1180
2023 Ford Bronco Badlands
Badlands 4dr 4x4
Used • 14,320 mi
$46,250
Search activity
SUVunder $40k4x4
Agent
Hi Shane — here is the 36-month / 10k lease at $412/mo, $0 down…
Vehicles tab: an .sb-vehins instance in pane scope with its inner .vi-head tabbar suppressed (scoped rule), replaced by .sb-sechead bands. Content order matches the header VOI line: Deals (the deal row shows the deal status as colored text — e.g. “Working” indigo-01, per deal_status_extensions gospel: New orange-01 · Working indigo-01 · Finance blue-01 · Close green-01 · Lost red-01; never a badge) → Saved (favorites) → Viewed (top views). Below, a Search activity line of .sb-tag--g07 chips (PRESCRIPTIVE — derived from the customer’s web search/filter facts; no new model). Saved/Viewed rows keep their price; only Deals rows carry the status text.
Pane OPEN · ONE selected card (overdue task in the To-Do band)
Board + act-in-place pane (push)
CM
Tasks42
Urgent2
Follow up on financing
2d overdue
JM5
Follow up on financing2d overdue
Jordan Avery
Call re: deposit refund
1d overdue
TB
Call re: deposit refund1d overdue
Bianca Ford
To-Do8
Send updated OTD quote
1d overdue
TB
Send updated OTD quote1d overdue
Marisol Vega
Confirm trade payoff
4d overdue
JM2
Confirm trade payoff4d overdue
Dwight Salas
Send lease quote
Due 3:00 pm
TB
Send lease quoteDue 3:00 pm
Shane Dusang
Call re: warranty
Due 4:30 pm
JM
Call re: warrantyDue 4:30 pm
Alex Rivera
Text pickup window
Due 5:00 pm
TB
Text pickup windowDue 5:00 pm
Robin Fields
Email service reminder
Jun 14
JM
Email service reminderJun 14
Priya Nair
Review credit application
Jun 14
TB
Review credit applicationJun 14
Marcus Lee
Schedule test drive
Jun 15
JM
Schedule test driveJun 15
Dana Cole
Done24
Confirm delivery time
Done · 11:20 am
JM
Confirm delivery timeDone · 11:20 am
Casey Boyd
Send welcome text
Done · 10:04 am
TB
Send welcome textDone · 10:04 am
Rae Kim
Email spec sheet
Done · 9:12 am
JM
Email spec sheetDone · 9:12 am
Gil Monroe
Task
Send updated OTD quote
1d overdue
2024 Jeep Wrangler Rubicon+2
Best next stepsQuote promised yesterday — customer is waiting on OTD numbers.Send the revised figures and confirm the trade allowance.
View Customer
Marisol Vega1d ago
Text ReceivedSMS
Did the updated quote go out yet?
Taylor B.2d ago
Text SentSMS
Reworking your OTD now — will send today.
Agent
Hi Marisol — here is your updated out-the-door quote…
Compact mode · footer-killed compact cards
Compact board
CM
Tasks42
Urgent2
Follow up on financing
2d overdue
JM5
Follow up on financing2d overdue
Jordan Avery
Call re: deposit refund
1d overdue
TB
Call re: deposit refund1d overdue
Bianca Ford
To-Do8
Send updated OTD quote
1d overdue
TB
Send updated OTD quote1d overdue
Marisol Vega
Confirm trade payoff
4d overdue
JM2
Confirm trade payoff4d overdue
Dwight Salas
Send lease quote
Due 3:00 pm
TB
Send lease quoteDue 3:00 pm
Shane Dusang
Call re: warranty
Due 4:30 pm
JM
Call re: warrantyDue 4:30 pm
Alex Rivera
Text pickup window
Due 5:00 pm
TB
Text pickup windowDue 5:00 pm
Robin Fields
Email service reminder
Jun 14
JM
Email service reminderJun 14
Priya Nair
Review credit application
Jun 14
TB
Review credit applicationJun 14
Marcus Lee
Schedule test drive
Jun 15
JM
Schedule test driveJun 15
Dana Cole
Done24
Confirm delivery time
Done · 11:20 am
JM
Confirm delivery timeDone · 11:20 am
Casey Boyd
Send welcome text
Done · 10:04 am
TB
Send welcome textDone · 10:04 am
Rae Kim
Email spec sheet
Done · 9:12 am
JM
Email spec sheetDone · 9:12 am
Gil Monroe
Ruling 55 — selection bug fixed: a task appears in exactly one band and exactly one card carries .is-selected (the earlier duplicate-across-bands double-selection is gone). Selecting pushes the pane in at 424px (flex sibling; content-col narrows; no scrim); board scroll never moves; the pane opens on the task’s TYPE. Ruling 56 — compact re-spec: the compact card is the regular card with the footer killed — R1 radio · title · due · .sb-cardmenu kebab; R2 type glyph · customer name; same paddings + co-axial spine as the full card (the missing-padding squeeze is fixed); comment-count dropped. Eng notes: isUrgent boolean (pin + drag); To-Do band = everything not pinned/done, orderBy overdue-first; Done by completedAt; pane advance = next incomplete task.

Acting: the composer

The message composer docked in the pane — its channels, the Call channel lifecycle, opt-out gating, and the mobile collapse.

1 · Channels — six colors (full composer)
Text · blue (.sb-composer--text)
Agent
Compose a message or use a Template
Email · purple (.sb-composer--email) — subject row
Note · orange (.sb-composer--note) — internal
Agent
Leave an Internal Note….
Log · indigo (.sb-composer--log) — event row
Agent
04/22/2026
Describe the event…
DAISI · yellow (.sb-composer--daisi)
Assist5m 36s
Tell DAISI to do something for this customer…
idle (ruling 61) — one labeled green call button; no fields, no send
Agent
live (.is-live) — text-free: the full-width waveform IS the body · running timer · mute + speaker tools, red End only. The second tool is idiom-conditional: mobile shows the speaker toggle, desktop replaces it with the audio-device picker (comp-phone-call-states.html). Navigate away mid-call and the live body detaches into the floating Call Pill, docking back into the composer on return — the full pill contract (states, mobile, audio devices, busy) is specced on comp-phone-call-states.html.
Agent
Shane Dusang 02:41
LOG — the manual backup (type=Call)
Agent
04/22/2026 05:03 PM
Confirmed the 36/10k terms — sending the quote after we hang up. Call 2m 41s.
opt-out — Call tab disabled (.cp-tab--call.is-disabled), calls off for this customer
Agent
Compose a message or use a Template
2 · Mobile collapse — Insert toolbar hidden until focus
collapsed — tabs + mode pill + field + send (no Insert row)
Agent
Compose a message or use a Template
focus field
focused — Insert toolbar revealed (:focus-within)
Agent
Saturday at 11 works great — see you then.
On mobile the Insert toolbar is hidden until the compose field is focused (:focus-within).

Header & controls

The compact Tasks control strip — assignment filters, the All↔Overdue toggle, and the Compact density toggle.

TasksCompactNew — defined here
Desktop — control strip
Tasks42
Overdue toggle — both states:
Mobile — compact
NEW — COMPACT. Desktop: actions in the pagehead (title "Tasks" + count + spring + Filters / + Add); the mselbar below is only quick-filters + density, grouped by .sb-mseldiv — [All / Mine] | [Overdue toggle] | [Compact(icon-only)]. The status control is a two-state toggle (All ↔ Overdue) — a single stateful pill: default "All" (fa-list icon), active "Overdue" (fa-triangle-exclamation), using the standard selection color (blue selected style, like any quick-filter) — both states shown above. On mobile the toggle is icon-only (list / triangle by state) and the actions follow the spring (no stray divider). No date-range — the Overdue cut is the date filter; "Due Today" was removed. Add keeps its text on mobile. Board bands (Urgent + To-Do — ruling 60) are board content, not header controls.

Filters

The task Filters panel — the native FilterPageForm grammar with the Due / Assigned To / Type / Status / Priority / Locations sections and its filter-coupling rules.

Task Filters (native FilterPageForm grammar — comp-analytics-filter is the template). Chrome: title + blue "Apply Filters" header action + gear (filter settings) + x; footer = Clear All Filters (secondary) + Apply Filters (primary). Sections: Due — the 2-col shortcut tile grid (Overdue · Due Today · This Week · Next Week · No Due Date · All; single-select, selected = blue outline + blue-02 fill; "No Due Date" folds the include-undated behavior into a tile). Assigned To — the assignment selector (All / Only Me / Specific Users w/ avatar chips + search overlay; chip-trigger law: blue chips + trailing pencil). Type / Status / Priority.sb-mschips multiselect (gray-06 unselected, blue-02 + x selected); Priority is one chip “Urgent” (the isUrgent boolean). Locations — loc chips (multi-location only). Coupling rules: selecting Done/Archived in Status forces Due=All (completed/archived tasks aren’t due-bound); selecting Overdue in Due forces Status=To-Do (only open tasks can be overdue). Zero new atoms.

Mobile

The same board on a phone: a swipe pager, a full-screen task sheet, and the one deliberate divergence from desktop.

Mobile board
Board (mobile): a scroll-snap pager — To-Do (Urgent + To-Do bands) · Done · Archived, one page per swipe. The live immersive prototype is comp-tasks-mobile.
Task sheet (DetailPage mobile law): the pane COVERS full-screen (never pushes like desktop) — grab handle + locked .mh bar + the shipped pane content (card-grammar header · Best next steps · Conversation/Details/Vehicles · pinned Complete Task · composer on the task type). Closing (X or grab-handle) returns to the board with scroll position preserved.
The one deliberate desktop/mobile divergence: Archived is a full pager PAGE on mobile, not a collapsible rail — a rail has no home inside a scroll-snap pager. Everything else (bands, cards, compact, sheet content) is the same locked instance as desktop.

Interaction laws

What the live board guarantees — selection, collapse, compact, and the scroll that must never move.

Live contract: card click → single .is-selected + pane push (content-col narrows, no scrim); the Archived rail expands/collapses in place; band headers collapse (angle flips, count persists); the Compact toggle flips the whole board; and the sacred-scroll law — opening/closing the pane never moves the board scroll.
Interaction contract
Selection: exactly ONE card carries .is-selected; clicking another moves it. Pane (desktop): selecting a card pushes the content column — the pane never covers; the X releases + closes. Complete-advance: a send ARMS (.tp-armbar countdown); commit fires the locked done grammar + auto-advances to the next task in the band — the board scroll never moves. Band collapse persists (angle flips, count stays). Archived expands from its rail in place, collapses back. Mobile: the pane law inverts — the task sheet covers full-screen (grab handle + .mh bar); closing preserves board scroll (sacred-scroll). These captions are the source of truth; the figures below force each state statically.
Right-panel contract
One right panel at a time. The desktop board has two right-side panels — the task pane (card click) and the Filters panel (Filters chip). Both use the same .ix-pane push mechanics (content-col narrows, pane docks 424px on the right; never covers, never a scrim). Opening one closes the other: selecting a card closes Filters + clears its chip; opening Filters closes the pane + clears the selection. On mobile the DetailPage law inverts — the Filters panel opens as a full-screen sheet (.tk-fsheet, covers), exactly like the task sheet. The panel itself is the locked FilterPageForm grammar (see comp-tasks-filter).
Arrangement — vertical stack (canonical)
To-Do42
Follow up on financing
2d overdue
JM
Send lease quote
Due 3:00 pm
TB
Email service reminder
Jun 14
JM
Vertical stack. On the board a band arranges its cards as a normal vertical stack (.sb-lane--band); the To-Do column scrolls through Urgent → To-Do as one column. Superseded candidate: the horizontal scroll-row (fixed 300px cards + edge peek) — rejected on the board because a horizontal scroller nested inside a vertical column reads badly; .sb-lane--scroll / .sb-lane--wrap stay defined for non-board lane contexts only.

Engineering scope

Design-ahead of the backend — each item below needs engineering work before the board ships.

Full decision ledger: autopilot/TASKS_PLAN.md (repo). Composed under the Atomic documentation LAW — narrative + rulings ledger + anatomy map + @dsEmbed transclusions (the build inlines each nugget with a provenance link back to its owning page) + eng scope notes.