Skip to content

Board: Title-row lane cards, Open/Create thread on the opened card, short titles - #2248

Merged
backnotprop merged 14 commits into
mainfrom
feat/board-lane-card-lean
Oct 27, 2026
Merged

backnotprop merged 14 commits into
mainfrom
feat/board-lane-card-lean

Conversation

@backnotprop

Copy link
Copy Markdown
Owner

Board updates approved by the owner on 2026-10-27:

  • Lane card is a "Title row" (r1). The marks and the age sit at the right of the title. A second line shows only when the person owes something ("You: …") or a send is pending ("Sent to …"). The agent's last word stays in the opened card.
  • Opened card. Open thread or Create thread is at the top, and Ask for an update moves into the History heading. Create thread opens compose for the card. Sending links the new thread to the card, and a saved draft keeps that link.
  • Card titles. Titles are 2–5 words. Every place agents learn about the Board says so, and a title over 40 characters gets a hint but is still accepted.
  • Lanes end 10 px above the bottom of the page.

Tests: typecheck, the Board and compose DOM tests, and the Board and compose e2e specs pass.

Owner, 2026-10-27: "When there's a You action, it should take me to the
thread where I need to make the call."

- Lane card: "You: ..." in Your look and Your review is its own button
  (a link: arrow, link colour on hover and focus), named "Open the thread
  to ...". It opens the card's sent thread, else the linked thread with
  the latest message (youThread), with the same way back to the Board;
  with no thread linked it opens the card. The title stays the button
  that opens the card; a click anywhere else on the card opens it too.
- Opened card: an Open thread button in the You band, to the same thread.
- Tests: youThread's choice (model.test.ts) and the separate targets and
  the panel's button (boardPage.test.tsx).
Owner, 2026-10-27: too much empty space under the lanes. The 24 px was
the lanes' own bottom padding (12 px) plus .ib-bmain's (12 px). Now the
lanes have none and .ib-bmain keeps 10 px, the gap between lanes; the
opened card's panel ends on the same line. Phone: the stacked list's end
padding 24 px -> 10 px (plus the safe area).
…e age

Owner, 2026-10-27: the agent icon "should probably be a small presence
circle ... next to the timestamp at the bottom right", so the title and
the line under it shift left. The left mark column is gone: the title
and its line take the card's whole width; at the bottom right sit the
link mark, the agent's 16 px round mark (its name in a tooltip; a dashed
ring for the person's card) and the age. The agent's last word stays,
on one line (variants B, no last word on the lane card, and C, only
while unread, are mocks for the owner to choose).
…an update by History

Owner's amendments, 2026-10-27 (.product/approved/inbox-board-amendments-2026-10-27):

- Open thread sits at the top, beside the Move menu, for any card with a
  thread (youThread: the sent thread, else the latest linked). It is
  primary while the person owes something; it replaces the You band's
  button.
- A card with no thread offers Create thread instead ("create, create,
  create is the idea"). It opens compose addressed to the card's agent,
  or else a live session in its project (as Ask does). The message starts
  with the card's title, so that is the thread's subject, and a line names
  the card. That start, untouched, counts as nothing written. On Send the
  window links the new thread to the card ({ op: link, thread_id }), so
  Open thread takes its place. With no live session the button is
  disabled and says why.
- "Ask where this is" is now "Ask for an update": a quiet link in the
  History heading (mock opened-B). Its tooltip says who it asks.
- Tests: the window over a real Inbox (compose.test.tsx): Create thread
  on a card with no thread, compose to the live session starting with the
  title, Escape untouched asks nothing, Send links the thread and Open
  thread appears. Also boardPage.test.tsx: Open thread at the top, Create
  thread to the live agent, Ask by History.
…Board; a hint over 40 characters

Owner's amendment, 2026-10-27 (.product/approved/inbox-board-amendments-2026-10-27).

The new title wording is: "2–5 words naming the work (\"Pi update fix\"), never a sentence; status goes in say". Agents are also told to link the Inbox thread where the person makes the call (thread_id), so "You: …" opens it.

Where agents now read it: the board prompt, the card tool's description and its title/thread_id arguments, plannotator card --help, inbox --help (card section) and the skill.

A card create, or a call that sets a title, gets a hint when the title is over INBOX_CARD_TITLE_HINT_AT (40) characters. The hint is a line after the card line, plus title_hint in the structured answer. The title is kept, never refused.

The with-Board tool cost was re-measured on Pi: 10,171 -> 10,303 bytes. The token figure stands. The mod's default tool list has no card (the Board is off by default), so it needs no sync.
# Conflicts:
#	docs/agent-guides/inbox-notifications-and-agents.md
#	packages/inbox/board/BoardPage.tsx
#	packages/inbox/board/CardPanel.tsx
#	packages/inbox/board/model.test.ts
#	packages/inbox/board/model.ts
#	packages/inbox/boardPage.test.tsx
#	packages/inbox/inbox.css
ib-crdp-thread already names the Threads list rows. Reusing it stretched the top button across the bar, which wrapped the Move menu onto two lines, and also indented the thread rows. A disabled Create thread sits in the tooltip wrapper, so the right-alignment now applies to the wrapper too.
…s the thread

A message started from Create thread and kept as a draft dropped the card. Sending it later from Drafts then started a thread the card never linked, so the card kept offering Create thread.

- The draft now carries the card. InboxDraft.card is { id: crd_…, title } and is checked on save: anything else is 422 validation_error on card.
- Compose takes the card from the request or from the reopened draft. It names the card, saves it with the draft, and passes cardId on Send, so App links the thread as before.
- Test (window over a real Inbox): Create thread, Keep draft. The draft holds the card and the card has no thread yet. Reopen it from Drafts: it names the card and keeps the session. Send: the thread is linked. A draft naming a non-card id is refused.
Approval board-lane-card (owner, 2026-10-27, "I like this"): a lane card is
its title row, the marks and the age floated at the right of its first line.
A second line only when the person owes something ("You: …") or a send is
pending ("Sent to …"); the agent's last word stays in the opened card.
…lean

# Conflicts:
#	apps/hook/server/cli.ts
#	apps/skills/core/plannotator/SKILL.md
…p, clamped titles get their tooltip, Undo keeps a draft's card

- The lane card's agent glyph is --ib-mark-16-g (ruling q12), not 11px.
- A title with an unbreakable word (a URL, a path) wraps anywhere instead of being cut mid-glyph.
- The full-title tooltip measures the clamping button (.ib-bc-main), not the inline title.
- Undo after deleting a draft re-saves its card and typed thread name.
@backnotprop
backnotprop merged commit a9ed755 into main Oct 27, 2026
32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant