Skip to content

feat(desktop): chat-first Chat tab with always-on search, Activity tab in Memories, hide-on-unfocus, notch click-through fix - #11372

Merged
kodjima33 merged 12 commits into
mainfrom
kodjima33/build-test-macos-desktop
Aug 10, 2026
Merged

feat(desktop): chat-first Chat tab with always-on search, Activity tab in Memories, hide-on-unfocus, notch click-through fix#11372
kodjima33 merged 12 commits into
mainfrom
kodjima33/build-test-macos-desktop

Conversation

@kodjima33

@kodjima33 kodjima33 commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

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.activity joins 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. isDressed now asserts the presentation-matched hidesOnDeactivate so 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 hitTest nil cannot make a window click-through, so the panel now syncs ignoresMouseEvents to 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_probe bridge 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

  • INV-AUTH-1
  • INV-CHAT-1

Verification

  • Built and ran the real bundle (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.
  • Hide-on-unfocus exercised live: CGWindowList probe shows the shell leaves the screen when Finder activates and returns on re-activation.
  • Dead zone root-caused live with debug_hit_probe (click at the Tasks pill hit the notch window's NSNextStepFrame); after the fix, Nik exercised clicks on the running build and confirmed: "seems it works".
  • Suites green post-change: QueryShellTests, TopNavigationBarLayoutTests, MemoryHubSidebarRoutingTests, ChatFirstDestinationParityTests, ShellSummonTests, ShellWindowChromeTests, FloatingBarGeometryTests, FloatingBarWindowLevelTests (101 tests, 0 failures in the final combined run).

Failure-Class: none

Review in cubic

… 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
kodjima33 merged commit 6b1e6a7 into main Aug 10, 2026
10 of 11 checks passed
@kodjima33
kodjima33 deleted the kodjima33/build-test-macos-desktop branch August 10, 2026 18:30
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)
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