Inbox
Filter, search, triage. The page you'll spend most time on.
The inbox lives at /{hive}/inbox and shows every bichito visible to you in the active hive. New reports arrive in real time over SSE — the row pops in at the top without a refresh.
Filters
The toolbar exposes one chip per filter dimension:
- Search — text match against title and description (see Search below).
- Status —
open,in_progress,resolved,closed,wont_fix,spam. Spam is excluded by default; pick it explicitly to triage the spam queue. - Severity —
low,medium,high,critical. - Assignee —
me,unassigned, or a specific user. - Honeycomb — appears when you have more than one project in the hive.
- Labels — multi-select. Multiple labels mean AND (the bichito must have every label you select).
A Clear button appears when any filter is active. Filters are persisted in the URL — sharing a link shares the filtered view.
Search
The search box is a Postgres full-text search over title + description with prefix matching:
- Typing
ErrmatchesError 500…,Errors found,error.log, anything whose tokens start witherr. - Multiple terms are AND-joined:
Err 500requires both prefixes to appear (in any order). - Tokens are split on whitespace and punctuation. Operator chars (
!@#()etc.) are stripped before the query reaches Postgres.
In dev (SQLite), search falls back to ILIKE '%term%' substring matching — close enough that you won't notice a behavioural gap day-to-day.
The fetch is debounced 300ms after each keystroke; the table doesn't blank between queries — current rows stay visible until the new result swaps in.
Saved views
Save a filter combo as a named view to come back to in one click. See Saved views.
Bulk actions
Tick the checkbox on rows (or the header checkbox to select the whole page) to surface the bulk action bar at the bottom. Available operations:
- Set status (any value, including spam).
- Set severity.
- Assign / unassign.
- Add or remove a label.
- Delete (with confirmation — irreversible).
Bulk operations cap at 500 ids per request. IDs that aren't visible to you are silently dropped, so you can paste a UI selection without leaking which IDs exist outside your scope.
Every change in a bulk op fans out over SSE per-bug — other tabs see rows update / disappear as if you'd done them one by one.
Keyboard shortcuts
| Key | Action |
|---|---|
j | Focus next bichito |
k | Focus previous bichito |
Enter | Open the focused bichito |
x | Toggle selection on focused row (for bulk) |
? | Open the global shortcut cheatsheet |
Realtime updates
While the inbox is open, every mutation by anyone (you, a teammate, an AI via MCP) lands in the table without a refresh:
- New bichitos pop in at the top with a brief highlight (only when they match the active filters — otherwise they're held back to avoid surprise).
- Existing rows are patched in place when status / severity / assignee / labels / duplicate-of change.
- Rows that no longer match the active filters after a change are dropped from view (e.g. you filter
status=open, an MCP call resolves the bug, the row disappears). - Deleted bichitos are removed.
- Selected ids that drop out of view are removed from the bulk-action selection so you can't fire a follow-up against a stale id.
The stream is a per-hive SSE channel; open the inbox in two tabs to see the same stream's events on both.
Counters
Above the toolbar, two strong counters show open and unassigned counts. They're computed from the loaded page (up to 50 rows) — not the global total. If you need an exact count past the loaded page, scroll to load more, or use get_stats over MCP.