Skip to content

Dismiss an Inbox row without opening Command details #1407

Closed

Description

@JacobStephens2

This was generated by AI during triage.

Since the Inbox became a three-pane mailbox (#1368), a Dismissal with JavaScript on is only reachable from Command details. Opening details for each row is slow (#1363), so clearing Needs you means one details pane per row. The Day shift wants to dismiss a row straight from its one-line row, with the mouse or the keyboard.

Agent Brief

Category: enhancement
Summary: Dismiss an Inbox row from its one-line row, with a d shortcut and an Undo notice, without opening Command details

Current behavior:
src/console/row.html still renders a Dismiss form (form[data-dismiss] in .row-actions) for every row with can_dismiss, but .one-line .command > :not(.row-head) { display: none; } in src/console/assets/console.css hides it whenever scripting is enabled. The only visible Dismiss is in Command details (src/console/peek.html), which also offers Undo for a dismissed row. POST /dismiss and POST /dismiss/undo (src/console/dismiss.rs) and the in-flight dismissals state in src/console/assets/console.js already handle pending feedback, errors and live replacement of rows.

Desired behavior:

  • Every one-line row that can be dismissed (a row in Needs you or Ready for review) shows a Dismiss button on its line, always visible, beside Copy. Rows that can't be dismissed show none. Clicking it doesn't open or toggle Command details.
  • d dismisses the selected row (selected with j/k or a click) when it can be dismissed, and does nothing otherwise. Selection then moves to the next row, so j/d can sweep a group. d follows the existing keydown guards (inputs, open dialogs, modifiers). The keyboard help dialog lists it.
  • After an inline Dismiss (button or d) succeeds, a short-lived notice appears, "Dismissed · Undo". Undo posts to /dismiss/undo for that Command and the row comes back. It reuses the existing pending/disabled/error feedback, and a failed Undo shows its error and can be retried. The notice is announced to screen readers (role="status").
  • Dismissing uses the same request, CSRF token and Activity log entry as Command details. If details is open on the dismissed row, it updates the way it does now.
  • The narrow (≤760px) layout keeps the button reachable without horizontal scrolling.
  • Without JavaScript, rows keep showing their full Dismiss form as they do now.

Key interfaces:

  • src/console/row.html: the row's line (.row-head) and the can_dismiss flag.
  • src/console/assets/console.css: the .one-line grid.
  • src/console/assets/console.js: the form[data-dismiss] submit handler, dismissals, showDismissal, select/items, the document keydown handler, the keyboard help dialog.
  • src/console/dismiss.rs: the existing endpoints. No server change should be needed.

Acceptance criteria:

  • A console/tests/inbox.test.cjs test clicks the inline Dismiss on a Needs you row and the row leaves the group without Command details opening.
  • A test selects a row with j, presses d, and sees the row dismissed and the next row selected. d on a row that can't be dismissed, or while typing in an input, does nothing.
  • A test clicks Undo in the notice and the row comes back. A failed dismiss or undo shows its error.
  • The keyboard help lists d.
  • Site browser tests and console/README.md say Dismiss is on the row and under d. site/how-it-works/ and site/architecture/ no longer say Dismiss is only in Command details or on rows only without JavaScript.

Out of scope:

Activity

  1. added
    enhancementNew feature or request
    ready-for-agentFully specified, ready for an AFK agent
    in-progressA Claim: thirdshift has taken this issue
    and removed
    ready-for-agentFully specified, ready for an AFK agent
    on Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions