Merge branch 'main' into dev

Resolve 38 conflicts preserving both sides' work:
- Server: DB-based registries (dev) + WorkspaceGitService/DaemonConfigStore (main)
- App: script proxy/voice MCP (dev) + pin/hide tabs/bootstrap boundary (main)
- Shared: WorkspaceScriptPayload (dev) + git/GitHub runtime schemas (main)
- Deleted workspace-registry-bootstrap.ts (dev's DB approach supersedes)
This commit is contained in:
Mohamed Boudra
2026-04-14 03:05:45 +07:00
333 changed files with 13490 additions and 6317 deletions
+3 -1
View File
@@ -58,7 +58,9 @@ export function resolveKeyboardFocusScope(input: {
return "command-center";
}
if (candidates.some((element) => Boolean(element.closest("[data-testid='message-input-root']")))) {
if (
candidates.some((element) => Boolean(element.closest("[data-testid='message-input-root']")))
) {
return "message-input";
}
@@ -261,7 +261,7 @@ describe("keyboard-shortcuts", () => {
action: "sidebar.toggle.left",
},
{
name: "binds Mod+. to toggle both sidebars on non-mac",
name: "routes Mod+. to toggle both sidebars on non-mac",
event: { key: ".", code: "Period", ctrlKey: true },
context: { isMac: false },
action: "sidebar.toggle.both",
@@ -344,6 +344,11 @@ describe("keyboard-shortcuts", () => {
event: { key: "k", code: "KeyK", ctrlKey: true },
context: { isMac: false, focusScope: "terminal" },
},
{
name: "does not bind Ctrl+B on non-mac while terminal is focused",
event: { key: "b", code: "KeyB", ctrlKey: true },
context: { isMac: false, focusScope: "terminal" },
},
{
name: "does not route message-input actions when terminal is focused",
event: { key: "d", code: "KeyD", metaKey: true },
@@ -33,12 +33,7 @@ export type KeyboardShortcutHelpRow = {
note?: string;
};
export type ShortcutSectionId =
| "navigation"
| "tabs-panes"
| "projects"
| "panels"
| "agent-input";
export type ShortcutSectionId = "navigation" | "tabs-panes" | "projects" | "panels" | "agent-input";
export type KeyboardShortcutHelpSection = {
id: ShortcutSectionId;
@@ -53,7 +48,6 @@ type KeyboardShortcutPlatformContext = {
isDesktop: boolean;
};
interface ShortcutWhen {
/** true = mac only, false = non-mac only */
mac?: boolean;
@@ -924,9 +918,7 @@ function parseBinding(binding: ShortcutBinding): ParsedShortcutBinding {
export const DEFAULT_BINDINGS: readonly ParsedShortcutBinding[] =
SHORTCUT_BINDINGS.map(parseBinding);
export function buildEffectiveBindings(
overrides: Record<string, string>,
): ParsedShortcutBinding[] {
export function buildEffectiveBindings(overrides: Record<string, string>): ParsedShortcutBinding[] {
return DEFAULT_BINDINGS.map(function (binding) {
const override = overrides[binding.id];
if (override === undefined) {
@@ -1252,7 +1244,13 @@ export function buildKeyboardShortcutHelpSections(
});
}
const sectionOrder: ShortcutSectionId[] = ["navigation", "tabs-panes", "projects", "panels", "agent-input"];
const sectionOrder: ShortcutSectionId[] = [
"navigation",
"tabs-panes",
"projects",
"panels",
"agent-input",
];
return sectionOrder.flatMap((sectionId) => {
const rows = rowsBySection.get(sectionId) ?? [];