Skip to content

feat: add the inbox page to the desktop app - #913

Merged
leynier merged 1 commit into
mainfrom
feat/inbox-desktop
Oct 6, 2026
Merged

leynier merged 1 commit into
mainfrom
feat/inbox-desktop

Conversation

@leynier

@leynier leynier commented Oct 6, 2026

Copy link
Copy Markdown
Owner

Summary

Desktop UI for the inbox, using the inbox.* verbs and the inboxChanged event from the host PR.

  • Inbox page:
    • Swapped into the shell like Run Board and Automations. One shell overlay provider now chooses among the three, and opening one closes the others.
    • Thread list with inbox and status filters and unread badges.
    • Thread detail with question and reply status, origin, target, delivery mode hints and expiry. Opening a thread marks its replies read.
    • Follow-up composer, Cancel Question and Purge Inbox with confirmation.
    • Composer that picks a running agent grouped by workspace and asks from ext:user.
  • Status bar control: shows the unread reply count. The app menu (popup and macOS menu bar) gains an Inbox entry.
  • Ask Agent: a new action on sidebar agent rows opens the composer with that terminal preselected.
  • Notifications: an OS notification ("New Inbox Reply", without the reply text) when the unread count grows while the page is hidden, under the existing agent notification toggle.
  • Errors: host error codes are shown as sentence-case messages. A host without inboxV1 shows "Update the runtime to use the inbox."

Stacked on the CLI PR.

Validation

  • New tests: repository with a fake runtime client, navigation exclusivity, the inbox page widgets, the Ask Agent sidebar action and the app menu entry.
  • flutter analyze reports no issues, and the full flutter test passes (4356 passed, 4 skipped).
  • build_runner and EOF normalization were run, and the max-lines ratchet and git diff --check pass.
  • The landing fidelity.test.ts passes (16/16) with no demo changes.

Risk

The shell overlay refactor touches how Run Board and Automations are shown, and is covered by the existing shell tests. Not yet run against a live host.

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Important

The reply hint pasted into agent terminals is not portable, and alera inbox wait retries permanent errors until its timeout. The status filter also only sees the newest page.

Reviewed changes across the desktop inbox page and the host, store, and CLI it is stacked on.

  • Desktop inbox page. Thread list, detail, composer, cancel, and purge, shown in the shell slot shared with Run Board and Automations.
  • Entry points. Status-bar unread count, an app menu item, and Ask Agent on sidebar agent rows.
  • Notifications. An OS notification without reply text when unread replies grow while the page is hidden.
  • Host, store, and CLI. inbox.* verbs over persisted ext: questions, with paste-on-idle delivery, wait, purge, and a mobile allowlist that still excludes inbox.wait.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using grok-4.7 | 𝕏

Comment thread rust/alera-cli/src/terminal_host/orchestration/message_formatter.rs Outdated
Comment thread rust/alera-cli/src/inbox_commands.rs Outdated
Comment thread rust/alera-core/src/runtime/inbox_queries.rs Outdated
Comment thread rust/alera-core/src/runtime/inbox_queries.rs Outdated
@leynier
leynier force-pushed the feat/inbox-desktop branch 2 times, most recently from f639b11 to 58c5186 Compare October 6, 2026 16:17
@leynier
leynier changed the base branch from main to feat/inbox-cli October 6, 2026 16:17
@leynier
leynier added this pull request to stack #919 October 6, 2026 16:17
@leynier
leynier force-pushed the feat/inbox-desktop branch from 58c5186 to 8b822a3 Compare October 6, 2026 17:03

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ No new issues in this desktop delta. Not an approval: two earlier host threads are still open, and this commit does not touch them.

Reviewed changes since the last review. The branch is now stacked on the CLI branch, so this diff is the desktop page only.

  • Focus-gated read receipts. Opening a thread no longer marks replies read. The detail view does that only while it is shown and the window is focused, and again when focus returns.
  • Notifications. An unread reply notifies when the inbox page is open but the window is hidden or unfocused. A focused, open page still suppresses the notification.
  • Paging. The thread list follows the host nextBefore cursor with Load More, and drops extra pages when the first page refreshes or the filter changes.
  • Unfocused windows. LifecycleAppForeground can treat a desktop inactive window as background for that acknowledgement path, without changing parking.

Pullfrog  | Fix it ➔ | View workflow run | Using grok-4.7 | 𝕏

@leynier
leynier force-pushed the feat/inbox-desktop branch from 8b822a3 to 8c70904 Compare October 6, 2026 17:15
@leynier
leynier force-pushed the feat/inbox-desktop branch 4 times, most recently from bf4fc2c to fdc57e5 Compare October 6, 2026 20:11
Base automatically changed from feat/inbox-cli to main October 6, 2026 20:38
@leynier
leynier force-pushed the feat/inbox-desktop branch from fdc57e5 to 55a9326 Compare October 6, 2026 20:38
@leynier
leynier merged commit 0d277b2 into main Oct 6, 2026
21 checks passed
@leynier
leynier deleted the feat/inbox-desktop branch October 6, 2026 21:05
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