Channel box C — the tiles, the words, and the gate control
Three things you asked for. One, C with the tiles renamed per channel kind. Two, every state the status word can be in, with four wordings each so the vocabulary gets chosen rather than inherited. Three, the gate pill turned into a real control, five ways, each shown across every gate state.
1 · C, with the tiles named per channel
Instagram and Facebook carry two things a person can send — a public comment and a private message — so they get two tiles. WhatsApp and the future web chat only ever carry messages, so they get one, full width. The tile set is a property of the channel, not a layout choice.
Instagram@silveroakproperties
Handling it
Comments
116
Highest in two weeks
Messages
0
You have not switched DMs on
Comments liveModeration liveDMs off
FacebookSilver Oak Properties
Handling it
Comments
12
Drifting down all fortnight
Messages
0
You have not switched DMs on
Comments liveModeration liveDMs off
WhatsApp+971 4 512 8840
Switched off by Meta
Messages
0
Flat since Meta cut the number off, 3 days ago
Replies canary
Web chatsilveroakglobal.com
Not set up
Messages
0
Nothing yet. Connect it to start.
Not connected
2 · Every state the status word can be in
Seven states, four wordings each. The left column is the condition that produces it, in the payload's own terms. Highlighted is my pick, so you have something to argue with rather than a blank menu. "Answering" is gone from all of them.
Provenance of these seven conditions, asked for and audited. They were not all read out of the code — I derived most from field names. What the audit found:
VERIFIED. Muted outranking everything is a real ruling, not my taste: mutedLabel is documented as independent of the live silent reading so "known dead" survives a healthy blip, under an operator order (DECISIONS 2026-07-24, "Home says WHY, not just silent"). !configured and !active are real branches of the shipped connectionPill().
WRONG, now corrected above. I wrote silent === true. The field is boolean | null and its own comment says "null when the channel has never received an event — unknowable, not OK"; the shipped channelDot() uses silent !== false. My version let a never-heard-from channel fall through to "Handling it".
GUESSED. The single seven-step ladder is my invention. Today the screen shows two independent readouts — a connection pill (not configured / disabled / connected) and a webhook pill (no events yet / silent / receiving) — so a channel can be "connected" AND "silent" at once. One verdict line cannot say both, and nobody has ruled that it should. "Listening only" and "Drafting for you" have no precedent anywhere in the code.
UNHANDLED.mutedLabel defaults to the bare word "Muted" when the operator set no custom text, so the verdict can render as "Muted" rather than a sentence. Not designed for.
CONTRADICTED. Shipped gateTone() maps canary and shadow to info; I coloured them warn throughout without checking.
Never connected!connection.configured
A · pickedNot set up
BNot connected
CWaiting to be set up
DNothing here yet
Muted by the operatorwebhook.mutedLabel !== null
A · picked, the label verbatimSwitched off by Meta
BOff at Meta
CMeta stopped this one
DParked
Turned off here!connection.active
ATurned off
B · pickedSwitched off by you
CPaused
DDisabled
Connected but nothing arrivingwebhook.silent !== false
ANothing arriving
B · pickedGone quiet
CNo messages coming in
DSilent
Every gate offall gates === "off"
ANothing switched on
BConnected, doing nothing
C · pickedListening only
DStanding by
Shadow or canary, nothing liveany "shadow" / "canary"
APractising
B · pickedDrafting for you
CWriting, not sending
DTrial run
Something is liveany gate === "live"
A · picked, replaces "Answering"Handling it
BWorking
COn duty
DCovering this one
One state has no data behind it. "Every gate off" and "Drafting for you" both need to read the dms and comment_to_dm gates, which are not on the payload. Two of these seven cannot be computed until that lands.
3 · The gate pill as a real control, five ways
Today a gate is a read-only chip and changing it means going to another screen. Each treatment below is shown in every state it can hold. All five apply instantly with an undo toast; only the step up to live confirms, because a message already sent cannot be recalled.
1 · Segmented controlAll three states visible at once, current one filled. One click to any state, nothing hidden. Widest, and it repeats three times on a card with three gates.
Comments — live
Moderation — shadow
DMs — off
2 · The pill is the buttonExactly the chip you already have, made pressable, with a caret that says so. Smallest footprint, keeps the card looking like today. Costs a click to discover the other states.
Comments — live
Moderation — shadow
DMs — off
3 · Read-only pill, separate ChangeThe state stays a status chip and can never be clicked by accident; changing it is a deliberate second target. Safest, and the wordiest.
Comments — liveComments live
Moderation — shadowModeration shadow
DMs — offDMs off
4 · Switch rowsReads as settings rather than status. The middle state is a half-thrown switch plus its word, because a two-position switch cannot honestly hold three states — the word carries it, never the position alone.
Reply to commentsLive
Hide bad commentsShadow
Answer messagesOff
5 · Menu triggerLabel and value in one control, dot plus word so state is never colour alone. Scales past three gates without growing, and it is the only one that leaves room for a per-gate note in the open menu.
Comments — live
Moderation — shadow
DMs — off
Making the gate a control moves this screen from reporting to tuning. Every earlier round said the Dashboard reports and Agent Overview tunes. Picking any of these five overturns that, deliberately — worth saying out loud rather than discovering later.