feat(desktop): chat-first Chat tab with always-on search, Activity tab in Memories, hide-on-unfocus, notch click-through fix - #11372
Merged
Conversation
… vanishing when another app takes focus" Reinstates hidesOnDeactivate for the summoned shell: clicking anywhere outside Omi puts the window away, re-activating brings it back. isDressed now asserts the presentation-matched value instead of a flat false so the attachment view does not re-dress forever. This reverts commit 3715ee2.
QueryShellMode.homeDefault = .answer; the spine/search surface stays one esc / < Results away instead of being the landing page.
The chronological spine that was Home's landing surface now lives as the first destination in the Memory hub (Activity | Conversations | Memories | Brain Map), wearing the same panel chrome without a composer (INV-NAV-1: no second chat surface). Top-bar pill renamed Library -> Memories.
…rom it The mode is a constant: no escape key, bridge action, or cleared transcript can put the results panel back on Home. The < Results chip is gone (QueryResultsPanel.onExitAnswer is optional and Home passes nil); the timeline lives solely in Memories > Activity.
ShellDestination.activity (reach = memoryHubView, appended last to keep raw values stable) so INV-NAV-1 coverage includes the new hub view; top-nav reachability tests updated to expect it.
…cks under it acceptsMouseHit treated any open conversation as whole-window-clickable, so the fixed 430x527 notch frame became an invisible click sink over the main window top bar (dead Tasks/Rewind/Apps pills) whenever the bar was thinking. Whole-window hits now require a visibly-expanded response panel or a notification card (FloatingControlBarGeometry.notchWholeWindowHitsAllowed, unit-tested); an open-but-collapsed conversation keeps the content-derived region extended by the ask-input panel height. Failure-Class: none
QuerySearchBar (shared with the Activity tab) sits above the panel in both modes: typing narrows the spine live, clearing (or esc) lands back on the conversation. Mode is derived from the search text, never stored. The chat composer remains the one composer inside the panel (INV-6).
…ions A view-level hitTest nil cannot make a window click-through: the window server routes the click to the window under the cursor and NSNextStepFrame swallows what the content view declined. The fixed oversized notch panel was therefore an invisible click sink over other apps and over Omi's own centered shell (dead Tasks/Rewind/Apps pills; proven via the new debug_hit_probe bridge action). The panel now syncs ignoresMouseEvents to the pointer: ignored over dead margin, interactive over visible content. Also: restoreAfterPermissionPrompt re-asserts its frame after order-in. Failure-Class: none
…update home flow description to the chat-first surface
kodjima33
added a commit
that referenced
this pull request
Aug 10, 2026
#11373) ## Summary `Desktop Swift Release Compile` has been red on `main` since #11369 (strict-concurrency error only visible under the release lane's whole-module optimization), which fails the auto-release gate closed — no beta candidate has cut, so #11372 (and everything since the last tag) is not reaching users. `KnowledgeGraphToolSupport.ResolveOutcome` was non-Sendable (its `ClientGraph` carries `[String: Any]` JSON-shaped dictionaries) and is returned from a nonisolated async function. The dictionaries hold only locally-built immutable `String`/`[String]` values, so `ClientGraph` is now `@unchecked Sendable` with that contract documented at the declaration, and `ResolveOutcome` is `Sendable`. ## Verification - `xcrun swift build -c release --package-path Desktop` locally: **Build complete (353.8s), zero errors** — the exact lane that fails in CI. - No behavior change; type-level conformance only. Failure-Class: none <!-- This is an auto-generated description by cubic. --> <a href="https://cubic.dev/pr/BasedHardware/omi/pull/11373?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a> <!-- End of auto-generated description by cubic. -->
kodjima33
added a commit
that referenced
this pull request
Aug 10, 2026
… & Suggestions (#11378) ## What Make the proactive notch notifications wider and more legible — the "Clicky-style" prominence Nik asked for. - Widen the notch card from 430pt to 508pt (height 108→128). - Default notification card and the focus-nudge suggestion card each get a 44pt accent-icon tile (soft white gradient + hairline border), a bolder 15pt title/header, roomier body text and spacing, and a circular dismiss button. This branch also carries the focus-nudge + Suggestions feature it was built on: focus nudges name your due-today tasks when you're drifting, and AI-captured tasks land in a collapsed **Suggestions** category until accepted. ## Why The old card was narrow and quiet — a 34pt icon chip with 12–13pt text that blended into the notch, so proactive nudges were easy to miss. Failure-Class: none ## Product invariants affected - INV-CHAT-1 The notch notification cards still open into the existing chat via `openNotificationAsChat` — this change is presentation-only (size, icon, typography, spacing) and does not alter chat session creation, continuity, or message flow. ## Verification Built the `omi-notch` named bundle from this branch and fired the real `com.omi.test.notification` path (`NotificationService.sendNotification` → `FloatingControlBarManager.showNotification`) for both the suggestion and the default insight card, then screenshotted the rendered cards in the notch. Also confirmed the account's `notification_frequency` was 0 (throttling every suggestion) and set it to 5 so nudges actually deliver. Merge is conflict-free: zero file overlap with everything `main` gained since this branch's base (including the parallel #11372 Home/deadzone/click-through work). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Requested by Nik in-session (chat-first Home; Activity tab; Memories rename; hide-on-unfocus; dead-zone fix):
Home is a chat with Omi. Opens straight into the conversation; the always-visible search bar ("Search what you've seen and heard…") sits above it — typing narrows the spine live, clearing (or Esc) returns to the chat. Mode is derived from search text, never stored.
Activity tab. The former search-first landing surface (spine + filter chips + count) moved into the Memory hub as its first destination; top-bar pill renamed Library → Memories.
ShellDestination.activityjoins the INV-NAV-1 reachability contract.Hide on unfocus. Reverts 3715ee2: the summoned shell hides when another app takes focus and returns on re-activation.
isDressednow asserts the presentation-matchedhidesOnDeactivateso the attachment view cannot re-dress forever; permission-prompt restore re-asserts its frame after order-in.Notch overlay click-through fix. The fixed 430×527 notch panel swallowed clicks across its whole frame whenever a conversation was open (including collapsed "thinking"), parking an invisible dead zone over other apps and Omi's own centered shell (dead Tasks/Rewind/Apps pills). View-level
hitTestnil cannot make a window click-through, so the panel now syncsignoresMouseEventsto the pointer (ignored over dead margin, interactive over visible content), and whole-frame hits require a visibly-expanded response panel or notification (notchWholeWindowHitsAllowed, unit-tested).New non-prod
debug_hit_probebridge action (topmost window + hit-tested view at a screen point) — the diagnostic that found the dead zone, kept for future click-routing triage.Home tab renamed to Chat with a chat glyph (magnifying glass belonged to the search-first surface).
Product invariants affected
Verification
omi-ankara.app, signed in as kodjima33@gmail.com) after every change; screenshots of chat-first Home with search bar, and Memories → Activity, captured from the running app via the automation bridge.debug_hit_probe(click at the Tasks pill hit the notch window'sNSNextStepFrame); after the fix, Nik exercised clicks on the running build and confirmed: "seems it works".Failure-Class: none