vitrinka.docs

Inbox

Every report people sent, in one list beside the one you picked — sorted by Eve, planned into sprints one at a time or in bulk, with undo, keys, deep links and a reply to the reporter.

One list beside the picked report

The Inbox holds every report a person sent with Report a problem or wrote on the reporter portal. Agents' findings never land here; they stay in dev mode's queues. The Inbox is the first link of the bar in both modes, and in regular mode the workspace opens on it.

A report is a task from the moment it arrives — a bug waiting in its project, carrying the reporter's words, the places they marked and the minutes before. Triage moves that same task, so there is no copy to keep in step, and the reporter sees each step on their portal.

The list

  • Views — New (waiting for triage), Triaged (accepted and still open), Done (finished, declined or cancelled) and All.
  • Project — every project, or one.
  • By day, newest first, with more loading as you scroll.

A checkbox, ⌘-click or X selects a report; Shift-click adds the range from the last click.

The picked report

Beside the list, the picked report reads top to bottom:

  • Who and how — the reporter's name and address, when, and how it came: from the app, from the portal, by email or anonymously. Open task opens the whole task.
  • The marked places — each a crop of the screen the reporter marked, with its number and note, a zoom, and Open on board.
  • Watch the replay — the minutes before, as a recorded session.
  • What they wrote, and the page they were on.
  • Triage — Category, Priority, Type and Status, each a click to change, and the Sprint it is in.
  • Plan into — the project's next open sprint, or the arrow beside it to pick another sprint or name a new one. Accept and Decline beside it; a declined report can be accepted again from Done.
  • History — the report's audit trail: every change, who made it and when.
  • Reply to reporter — below.

Triage, one or many

Select several reports and a bar offers the same moves for all of them, up to 200 at once:

MoveWhat it does
Plan into sprintAccepts each report and puts it in a sprint — an open one, or a new sprint you name right there.
StatusAccepts each and moves it to a status of its project.
Category, PrioritySets the field. Where Eve chose differently, the correction is recorded — Eve's triage.
AcceptAccepts each report into its project as ordinary work; a cancelled one reopens in its project's first to-do status.
DeclineDeclines a waiting report, or cancels an accepted one.

Plan into sprint and Status need the selected reports to share one project.

Every change, to one report or many, shows a notice with Undo. Undo puts back only what that change changed — the status, sprint, category, priority or type it set, and whether the report was still waiting when the change accepted or declined it. Anything a teammate changed since stays as they left it. A change can be undone for a day.

Keys

KeyDoes
J / KNext / previous report
XSelect the report
EAccept
PPlan into a sprint
UUndo the last change
?Show these keys

Keys answer on the physical key, and never while you type in a field or a menu is open.

The address always says what is on screen: ?view= and ?project= the list, ?r= the picked report's task id, and ?m= the mark it focuses. /w/acme/inbox?r=4182&m=2 opens report 4182 with its second mark in view, so a link in a chat lands a teammate on exactly that place.

Eve's triage

When a report arrives, Eve reads it — the words, the page, the console and the failed requests — and applies a category and a priority, and a type when it is a story or a task rather than a bug. The report shows "Eve sorted it", how sure she was and why, and marks each value she set.

Every value she set is one click to change. The optional Why the change? beside it travels with the correction, and each correction is recorded: what Eve suggested, what a person chose, who — the signed-in account, never a typed name — and why. That record is how Eve's triage gets better: a dataset, never an automatic training job.

Eve's triage never holds a report back. With Eve off, unreachable or slower than 25 seconds, the report waits exactly as it was sent, and you sort it yourself.

Switching Eve off

SwitchWhereEffect
report triageSettings → Organization → AI, and each workspace's Settings → Workspace → AIOn by default. The organization switches it off for every workspace; a workspace switches it off for itself. Off at either level wins.
use EVE AISettings → Workspace → AIOff stops every Eve flow in the workspace, triage included.
allow training on triage correctionsSettings → Organization → AIOff by default; an organization admin turns it on. Audited as org.training_consent.

A deployment without an AI backend — an air-gapped one, say — triages by hand and loses nothing else.

The training export. The workspace owner downloads the corrections from GET /api/v1/classification/export.jsonl: one JSON line per report Eve sorted — what she read, what she suggested, the final values and whether a person corrected them. It answers only for an organization that allows training; without that consent it refuses, and every correction stays inside the organization. For an organization whose contract forbids AI on its data, switch report triage off at the organization and leave training off.

Reply to the reporter

Reply to reporter, at the foot of the picked report, writes to the person who sent it. The reply appears on their report on the portal and in their feed, and is emailed to them with a link back — once their address is proven. A reporter whose address nobody has proven yet reads it when they sign in. Replies and what the reporter writes back are the conversation you share with them; the task's other comments stay the team's own.

For agents

Reports are intake drafts whose source is report, so agents read the same queue through the doors they already have: list {kind: "intake", group: "report"} pages the waiting reports, get {kind: "task", id} reads one, and get_card_image {annotation} looks at a mark. The screen itself reads GET /api/v1/inbox/reports and writes through POST /api/v1/inbox/bulk and POST /api/v1/inbox/undo.

On this page