Skip to content

Bot Inbox:平铺事件时间线、来源详情与处理状态(DM sidebar) #152

Closed

Description

@DoodleBears

Reconciled remaining UI scope — 2026-09-30

The grouped Bot Inbox and source navigation are shipped. This issue remains open for the default flat timeline, Flat/By source menu, independent event detail and truthful Processing/Handled/Needs repair states below. Do not rebuild the completed policy/harvest baseline (#362/#363–#370). Existing claims remain scoped as recorded.

Parent and ownership

Current baseline and design change

The shipped sidebar entry reads canonical Source Events and Inbox Admissions and currently groups Channel events by Channel and Assignment reports by Assignment Session. Keep its source navigation, repair states, and restart behavior. Replace the default grouped presentation with a newest-first, paginated flat event list for the selected PersonaBot. Do not collapse all events from one Session into one row or hide earlier events. Match the Sessions collapsible header: put a three-dot icon button at its right edge. Its menu switches Flat / By source grouping; default Flat. By source is collapsible. Persist the choice per Bot in the browser. Do not show these options as permanent tabs.

Row and detail contract

  • One attention row identifies the canonical Source Event / Admission (or the current coalesced Attention Unit for unobserved revisions) and keeps a stable source reference. Show source class and readable origin, actor, short content preview, event time, and truthful state. Grouping is a view over these rows, not their identity.
  • Source classes include Human DM, Bot-to-Bot DM, Group message, Assignment Report/Host notice, and future direct Bridge or webhook events that have no Channel. Do not assume every event belongs to an Assignment Session or Channel. Show provider/app identity only when trusted provenance exists.
  • Clicking a row opens an event detail with full permitted content/provenance, state and timestamps, and a separate Open source action when the Channel message or Assignment Session still exists. If the source cannot be opened, the event detail remains available and explains why.
  • Default primary states: Pending (admitted but not yet included in Orchestrator context), Processing (included in an active Orchestrator turn), Handled, Ignored, and Needs repair. A queued DSH input is not Processing; mere Human viewing is not Bot observation. Digest-below-threshold and silent are Pending sublabels explaining wake behavior. Observation time is a detail fact, not a synonym for Handled. A failed/interrupted turn must not remain falsely Processing after restart.
  • Human Inbox remains the cross-Bot action/information projection in Spec: Human Inbox unread, personal attention and actions #126. It links to the relevant Bot Inbox event or source; it does not mirror the complete raw Bot event list.

Tracer bullets and acceptance

  1. Real Human DM plus Assignment Report interleave in one newest-first list. Follow each event through Pending → Processing → Handled (or Needs repair), open its detail/source, refresh, and verify no duplicate rows or false statuses. Capture light/dark UI evidence and stop for Human QA.
  2. Add Group and Host/system events, optional By source view, per-Bot view persistence, pagination and filters without disturbing global chronological order. Stop for Human QA.
  3. External Bridge/webhook rows use the same contract when IM identities and messaging: provider coordination #48 provides those sources; do not fabricate an external-provider fixture as a shipped integration.

Use #47's canonical query and #362/#369 turn-consumption facts to derive status; no second store. The final Processing transition must align with #369's harvest claim/commit semantics. Keyboard access, responsive layout, i18n, and reduced motion follow the existing Channel sidebar contract.
The entry remains DM-scoped: a Group Channel does not show one Bot own Inbox, and a Bot with no attention facts need not display an empty entry. Event detail retrieval must be bounded and authorized; oversized bodies remain behind their existing Spill locator.

Activity

  1. added this to the v1.1 milestone on Sep 21, 2026
  2. changed the title [-]Tracer: PersonaBot navigation 增加 Bot Inbox 面板(右侧 sidebar,可折叠)[/-] [+]Tracer: Channel sidebar 增加 Bot Inbox entry(可折叠,DM scope)[/+] on Sep 21, 2026
  3. added
    V1.1Milestone v1.1; mirrors the GitHub milestone
    area:fullstackEnd-to-end Host and Client implementation
    area:ui-uxInteraction and visual experience; may accompany a code-layer area
    feature:inboxBot Inbox and Human Inbox attention
    on Sep 22, 2026
  4. 12 remaining items

  5. DoodleBears commented on Sep 26, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome

    • Agent: Codex
    • Task: codex/local/01a0d42c-f508-7e83-8d7a-110ac4eedf43
    • State: completed for the explicit-ignore slice
    • Result: PR #330 merged as bb5f05f492672e23f30d3d59d1cde2e053e9938a. Explicit Bot dismissal now records ignored on its canonical Inbox Admission; ordinary no-reply FYI remains handled. Channel read records observation for pending non-report Admissions, and ignored running Admissions stay terminal.
    • Verification: CodeRabbit final pass had no new actionable comments; 1033 tests, lint, typecheck, build, changed-file formatting; isolated live DSH/DeepSeek black-box scenarios covered useful FYI, irrelevant notice, required reply, and two-message digest; UI showed both handled/ignored and source navigation.
    • Remaining issue scope: broader Bot Attention: causal aggregation, escalation and recovery acceptance #47 wake/revision/typed recovery work and Bot Inbox:平铺事件时间线、来源详情与处理状态(DM sidebar) #152 recovery/degraded acceptance remain open.
  6. DoodleBears commented on Sep 26, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim

    • Agent: Codex
    • Task: codex/local/01a0d42c-f508-7e83-8d7a-110ac4eedf43 (not a DSH Session)
    • Issue scope: expand an existing Bot Inbox source group when a new active item or escalated state arrives after it was collapsed; preserve a deliberate collapse when facts have not changed
    • Branch: codex/152-new-attention-expand
    • Started: 2026-09-26 16:16 UTC
    • State: active
  7. DoodleBears commented on Sep 26, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome

    • Task: codex/local/01a0d42c-f508-7e83-8d7a-110ac4eedf43
    • State: completed for this bounded visibility slice
    • Result: PR #338 merged as 0815982200ca3aa29fefb9ebee64ee3c7d0300f2. A collapsed Bot Inbox source group reopens when new active attention or a changed state arrives; an unchanged manual collapse remains closed.
    • Verification: CodeRabbit reported no actionable comments; focused React tests, typecheck, lint, build, bilingual changelog check, and live isolated DSH browser QA passed. The browser check sent two ordinary Group messages under silent wake policy and confirmed the second opened the collapsed group with both pending items visible; screenshots are in PR.
    • Remaining scope: Bot Inbox:平铺事件时间线、来源详情与处理状态(DM sidebar) #152 stays open until Bot Attention: causal aggregation, escalation and recovery acceptance #47 supplies the remaining recovery/unknown-outcome causes and the complete issue acceptance checklist can be audited.
  8. changed the title [-]Tracer: Channel sidebar 增加 Bot Inbox entry(可折叠,DM scope)[/-] [+]Bot Inbox:平铺事件时间线、来源详情与处理状态(DM sidebar)[/+] on Sep 27, 2026
  9. DoodleBears commented on Sep 27, 2026

    @DoodleBears
    ContributorAuthor

    Group catch-up status clarification (2026-09-28)

    #362 and #364 now specify that mentions ordinary Group events are admitted as pending context (without independent wake), while silent ordinary events remain pending until explicit Bot reading. The Bot Inbox remains newest-first for Human browsing; this does not control Orchestrator harvest order. Harvest reserves a share for the oldest pending events alongside a direct @ and nearby context, with a per-Channel ceiling of 100 and a turn-wide context budget. Events omitted by that cap stay Pending. Only events actually entering an active Orchestrator turn or returned by channel_read are Processing, and only a successful turn makes them Handled. Keep Observation as an audit/detail fact rather than a sixth primary row state. Please use the revised ADR-0070/0074/0077 and #364 as the UI data contract.

  10. modified the milestones: v1.1, v1.0 on Sep 29, 2026
  11. moved this from Todo to Done in Roadmapon Oct 3, 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

    V1.1Milestone v1.1; mirrors the GitHub milestoneagent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDsarea:fullstackEnd-to-end Host and Client implementationarea:ui-uxInteraction and visual experience; may accompany a code-layer areaenhancementNew feature or requestfeature:inboxBot Inbox and Human Inbox attentionready-for-agentFully specified, ready for an AFK agentscope:tracerHuman-testable implementation slice

    Type

    No type

    Projects

    • Status
      Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions