Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
1f88850
Add React feed surface and shared feed actions
lawrencecchen Jul 15, 2026
ad6d795
Merge remote-tracking branch 'origin/main' into feat-feed-plus-dropdown
lawrencecchen Jul 15, 2026
b4066c6
Fix bundled Feed resource registration
lawrencecchen Jul 15, 2026
878436d
Decode bundled webview assets in scheme handler
lawrencecchen Jul 15, 2026
f313f7b
Merge remote-tracking branch 'origin/main' into feat-feed-plus-dropdown
lawrencecchen Jul 15, 2026
d0ac6a9
Add Feed chrome regression coverage
lawrencecchen Jul 15, 2026
639f82f
Hide chrome and migrate restored Feed surfaces
lawrencecchen Jul 15, 2026
63fdae2
Refine React Feed visual system
lawrencecchen Jul 15, 2026
b0559c5
Add browser Feed capability isolation regression test
lawrencecchen Jul 15, 2026
87f1497
Scope Feed bridge to internal browser surfaces
lawrencecchen Jul 15, 2026
ffaab3f
Page large React Feed histories
lawrencecchen Jul 15, 2026
faa1cd8
Preserve Feed capability across session restore
lawrencecchen Jul 15, 2026
3bb629d
Match React Feed to terminal theme
lawrencecchen Jul 15, 2026
53aa3ab
Stabilize Feed scrollbar layout
lawrencecchen Jul 16, 2026
aa76be6
Make Feed empty state and keyboard navigation shippable
lawrencecchen Jul 16, 2026
01663e6
Add regression coverage for deferred browser focus
lawrencecchen Jul 16, 2026
3cd9967
Fulfill deferred browser focus on attachment
lawrencecchen Jul 16, 2026
89732bf
Polish Feed onboarding and examples
lawrencecchen Jul 16, 2026
b03868e
Keep Feed examples available with history
lawrencecchen Jul 16, 2026
4178a65
Merge remote-tracking branch 'origin/main' into feat-feed-plus-dropdown
lawrencecchen Jul 16, 2026
4b78a44
test: cover coalesced async publisher demand
lawrencecchen Jul 16, 2026
1dc1437
fix: respect downstream demand in sidebar coalescing
lawrencecchen Jul 16, 2026
cf919c4
test: cover card action keyboard handoff
lawrencecchen Jul 16, 2026
7a01a17
fix: move card focus directly to its actions
lawrencecchen Jul 16, 2026
8be94a2
Merge remote-tracking branch 'origin/main' into feat-feed-plus-dropdown
lawrencecchen Jul 16, 2026
edcbd80
test: cover Feed session persistence
lawrencecchen Jul 16, 2026
f817b57
fix: restore Feed workspaces as browser surfaces
lawrencecchen Jul 16, 2026
4907be4
Merge remote-tracking branch 'origin/main' into feat-feed-plus-dropdown
lawrencecchen Jul 16, 2026
1b13bbf
Merge remote-tracking branch 'origin/main' into feat-feed-plus-dropdown
lawrencecchen Jul 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
196 changes: 196 additions & 0 deletions Resources/Localizable.xcstrings
Original file line number Diff line number Diff line change
Expand Up @@ -102475,6 +102475,69 @@
}
}
},
"feed.examples.load": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Load examples" } },
"ja": { "stringUnit": { "state": "translated", "value": "例を読み込む" } }
}
},
"feed.examples.permission.body": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "bun run db:migrate" } },
"ja": { "stringUnit": { "state": "translated", "value": "bun run db:migrate" } }
}
},
"feed.examples.permission.title": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Run database migration" } },
"ja": { "stringUnit": { "state": "translated", "value": "データベース移行を実行" } }
}
},
"feed.examples.plan.body": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Update the bridge, add focused tests, then build the tagged app." } },
"ja": { "stringUnit": { "state": "translated", "value": "ブリッジを更新し、対象テストを追加して、タグ付きアプリをビルドします。" } }
}
},
"feed.examples.plan.title": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Plan ready for review" } },
"ja": { "stringUnit": { "state": "translated", "value": "レビュー待ちの計画" } }
}
},
"feed.examples.question.focused": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Focused tests" } },
"ja": { "stringUnit": { "state": "translated", "value": "対象テスト" } }
}
},
"feed.examples.question.full": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Full test suite" } },
"ja": { "stringUnit": { "state": "translated", "value": "全テストスイート" } }
}
},
"feed.examples.question.prompt": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Which verification should run?" } },
"ja": { "stringUnit": { "state": "translated", "value": "どの検証を実行しますか?" } }
}
},
"feed.examples.question.title": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Verification scope" } },
"ja": { "stringUnit": { "state": "translated", "value": "検証範囲" } }
}
},
"feed.exitplan.allowedPrompts": {
"extractionState": "manual",
"localizations": {
Expand Down Expand Up @@ -102815,6 +102878,55 @@
}
}
},
"feed.integrations.hint": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Claude Code and Codex use Settings. Other agents need `cmux hooks setup`." } },
"ja": { "stringUnit": { "state": "translated", "value": "Claude Code と Codex は設定を使用します。その他のエージェントでは `cmux hooks setup` が必要です。" } }
}
},
"feed.integrations.status.checking": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Checking..." } },
"ja": { "stringUnit": { "state": "translated", "value": "確認中..." } }
}
},
"feed.integrations.status.disabled": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Disabled in Settings" } },
"ja": { "stringUnit": { "state": "translated", "value": "設定で無効" } }
}
},
"feed.integrations.status.needsSetup": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Setup needed" } },
"ja": { "stringUnit": { "state": "translated", "value": "セットアップが必要" } }
}
},
"feed.integrations.status.ready": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Ready" } },
"ja": { "stringUnit": { "state": "translated", "value": "準備完了" } }
}
},
"feed.integrations.title": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Agent integrations" } },
"ja": { "stringUnit": { "state": "translated", "value": "エージェント連携" } }
}
},
"feed.keyboard.help": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Navigate with ↑/↓, J/K, or Control-N/Control-P. Press Tab to reach actions." } },
"ja": { "stringUnit": { "state": "translated", "value": "↑/↓、J/K、または Control-N/Control-P で移動します。Tab で操作ボタンに移動します。" } }
}
},
"feed.kind.exitPlan": {
"extractionState": "manual",
"localizations": {
Expand Down Expand Up @@ -103881,6 +103993,90 @@
}
}
},
"feed.source.amp": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Amp" } },
"ja": { "stringUnit": { "state": "translated", "value": "Amp" } }
}
},
"feed.source.claude": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Claude Code" } },
"ja": { "stringUnit": { "state": "translated", "value": "Claude Code" } }
}
},
"feed.source.codebuddy": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "CodeBuddy" } },
"ja": { "stringUnit": { "state": "translated", "value": "CodeBuddy" } }
}
},
"feed.source.codex": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Codex" } },
"ja": { "stringUnit": { "state": "translated", "value": "Codex" } }
}
},
"feed.source.copilot": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Copilot" } },
"ja": { "stringUnit": { "state": "translated", "value": "Copilot" } }
}
},
"feed.source.cursor": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Cursor" } },
"ja": { "stringUnit": { "state": "translated", "value": "Cursor" } }
}
},
"feed.source.factory": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Factory" } },
"ja": { "stringUnit": { "state": "translated", "value": "Factory" } }
}
},
"feed.source.gemini": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Gemini" } },
"ja": { "stringUnit": { "state": "translated", "value": "Gemini" } }
}
},
"feed.source.hermes": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Hermes Agent" } },
"ja": { "stringUnit": { "state": "translated", "value": "Hermes Agent" } }
}
},
"feed.source.opencode": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "OpenCode" } },
"ja": { "stringUnit": { "state": "translated", "value": "OpenCode" } }
}
},
"feed.source.pi": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Pi" } },
"ja": { "stringUnit": { "state": "translated", "value": "Pi" } }
}
},
"feed.source.qoder": {
"extractionState": "manual",
"localizations": {
"en": { "stringUnit": { "state": "translated", "value": "Qoder" } },
"ja": { "stringUnit": { "state": "translated", "value": "Qoder" } }
}
},
"feed.status.expired": {
"extractionState": "manual",
"localizations": {
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading