Commit 1b3425d
authored
fix(desktop): harden Notch chat and PTT reliability (#10125)
## Summary
- preserve the user-resized Notch chat frame when macOS changes Spaces
- keep streaming output from reclaiming the viewport after a reader
scrolls away from the live edge
- restore the canonical frame for non-chat Notch surfaces after a Space
switch
- retain completed and failed tool rows as durable chat progress in
compact, collapsed-by-default groups whose step count updates while work
continues, while keeping the structured agent card as the sole
spawned-agent entrypoint
- use a shared thin composer shell and transcript fade in regular and
Notch chat, reduce the regular-chat header to one compact control row,
and add a persistent Home action there
- pass a deduplicated, compact skill catalog to chat, keep CLAUDE.md
reference-only, and search overflow skills only when a specialized
workflow is relevant
- give active tools a 90-second no-progress watchdog that preserves the
tool-stall terminal reason; use the 60-second generic watchdog only for
a silent bridge with no active tool
- correlate the desktop, agent, and chat route with an opaque request
ID, and retry terminal journal projection once when needed
- keep Push-to-Talk on its native voice path when screen capture is
temporarily unavailable immediately after Screen Recording is granted
- prevent long named-bundle titles from clipping the Screen Recording
drag helper, and coalesce idle PTT context refreshes so streaming chat
does not churn the warm voice socket
## Product invariants
- INV-AGENT-*
- INV-AUTH-1
- INV-CHAT-1
- INV-VOICE-1
- INV-INT-1
## Verification
- `desktop/macos/scripts/agent-logic-harness.sh` — passed (Swift
lifecycle, agent runtime, and pi extension suites)
- `xcrun swift test --package-path Desktop --filter
ChatSkillCatalogTests` — passed (2 tests)
- `xcrun swift test --package-path Desktop --filter
AgentPillLifecycleTests/testFloatingAgentToolCallsUseCompactOneLinePresentation`
— passed
- `npm run build` and `node --experimental-strip-types
scripts/generate-tool-surfaces.mjs --check` in `desktop/macos/agent` —
passed
- `npx vitest run tests/node-tools.test.ts
tests/omi-tool-manifest.test.ts` — passed (20 tests)
- `npx --yes tsx --test index.test.ts` in
`desktop/macos/pi-mono-extension` — passed
- `make preflight` and the bounded pre-push gate — passed
- `git diff --check` — passed
- rebuilt `/Applications/omi-tool-stall-reliability.app` from `ae2e79f`;
health check confirmed development backend and agent protocol 2, and
automation confirmed Chat's Home button returns to the dashboard
- `xcrun swift test --package-path Desktop --filter
ScreenRecordingPermissionPolicyTests` — passed (15 tests)
- `xcrun swift test --package-path Desktop --filter
RealtimeHubSessionHandoffPolicyTests` — passed (12 tests)
- fast-rebuilt `/Applications/omi-tool-stall-reliability.app` from
`f9d5a81`; health check confirmed the development backend and runtime
protocol 2
Failure-Class: none53 files changed
Lines changed: 1311 additions & 344 deletions
File tree
- .github/scripts/product_file_line_count_ratchet_baseline
- desktop/macos
- Backend-Rust/src/routes/chat
- Desktop
- Sources
- Chat
- FloatingControlBar
- Generated
- MainWindow
- Components
- Pages
- Settings/Sections
- Providers
- Tests
- agent
- src
- adapters
- runtime
- tests
- fixtures
- changelog/unreleased
- e2e/flows
- pi-mono-extension
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
61 | 88 | | |
62 | 89 | | |
63 | 90 | | |
64 | 91 | | |
65 | 92 | | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
66 | 113 | | |
67 | 114 | | |
68 | 115 | | |
| |||
207 | 254 | | |
208 | 255 | | |
209 | 256 | | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
155 | 155 | | |
156 | 156 | | |
157 | 157 | | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
158 | 166 | | |
159 | 167 | | |
160 | 168 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
11 | | - | |
| 10 | + | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
46 | 51 | | |
47 | 52 | | |
48 | 53 | | |
| |||
71 | 76 | | |
72 | 77 | | |
73 | 78 | | |
| 79 | + | |
74 | 80 | | |
75 | 81 | | |
76 | 82 | | |
| |||
97 | 103 | | |
98 | 104 | | |
99 | 105 | | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
106 | 112 | | |
107 | 113 | | |
108 | 114 | | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
109 | 121 | | |
110 | 122 | | |
111 | 123 | | |
| |||
153 | 165 | | |
154 | 166 | | |
155 | 167 | | |
| 168 | + | |
156 | 169 | | |
157 | 170 | | |
158 | 171 | | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
159 | 177 | | |
160 | 178 | | |
| 179 | + | |
161 | 180 | | |
162 | 181 | | |
163 | 182 | | |
| |||
181 | 200 | | |
182 | 201 | | |
183 | 202 | | |
184 | | - | |
185 | | - | |
186 | | - | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
187 | 206 | | |
188 | 207 | | |
189 | 208 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
Lines changed: 11 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
223 | 223 | | |
224 | 224 | | |
225 | 225 | | |
226 | | - | |
| 226 | + | |
227 | 227 | | |
228 | 228 | | |
229 | 229 | | |
| |||
324 | 324 | | |
325 | 325 | | |
326 | 326 | | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
327 | 335 | | |
328 | 336 | | |
329 | 337 | | |
| |||
822 | 830 | | |
823 | 831 | | |
824 | 832 | | |
825 | | - | |
| 833 | + | |
| 834 | + | |
826 | 835 | | |
827 | 836 | | |
828 | 837 | | |
| |||
Lines changed: 32 additions & 25 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
57 | 60 | | |
58 | 61 | | |
59 | 62 | | |
| |||
204 | 207 | | |
205 | 208 | | |
206 | 209 | | |
| 210 | + | |
207 | 211 | | |
208 | 212 | | |
209 | 213 | | |
| |||
448 | 452 | | |
449 | 453 | | |
450 | 454 | | |
451 | | - | |
452 | | - | |
453 | | - | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
454 | 468 | | |
455 | | - | |
456 | | - | |
457 | | - | |
458 | | - | |
459 | | - | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
460 | 477 | | |
461 | | - | |
462 | | - | |
463 | | - | |
464 | | - | |
465 | | - | |
466 | | - | |
467 | | - | |
468 | | - | |
469 | | - | |
470 | | - | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
471 | 482 | | |
472 | | - | |
473 | | - | |
474 | | - | |
475 | | - | |
476 | | - | |
| 483 | + | |
| 484 | + | |
477 | 485 | | |
478 | | - | |
479 | | - | |
| 486 | + | |
480 | 487 | | |
481 | 488 | | |
482 | 489 | | |
| |||
Lines changed: 6 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
779 | 779 | | |
780 | 780 | | |
781 | 781 | | |
782 | | - | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
783 | 785 | | |
784 | 786 | | |
785 | | - | |
786 | | - | |
787 | | - | |
788 | | - | |
789 | | - | |
| 787 | + | |
| 788 | + | |
790 | 789 | | |
| 790 | + | |
791 | 791 | | |
792 | 792 | | |
793 | 793 | | |
| |||
0 commit comments