+
+ {isScratchDraft ? (
+ <>What should we work on?>
+ ) : hasResolvedProject ? (
+ <>What should we build in {projectSelector}?>
+ ) : canChooseProject ? (
+ <>{projectSelector} to start>
+ ) : (
+ <>Add a project to start>
+ )}
+
+ {/* Reserved whenever threads can skip a project, so the heading does not
+ move. Without a project, the picker moves here to choose one. */}
+ {scratchWorkspaceRoot === null ? null : (
+
+ {isScratchDraft ? projectSelector : orStartWithoutProject}
+
)}
-
+
);
}
diff --git a/apps/web/src/components/settings/KeybindingsSettings.logic.test.ts b/apps/web/src/components/settings/KeybindingsSettings.logic.test.ts
index 7729ce183754172d0f53164f85d361c955880be2..791ebccfa9328a31653d6b3a7e15df8e5e61dc1d 100644
--- a/apps/web/src/components/settings/KeybindingsSettings.logic.test.ts
+++ b/apps/web/src/components/settings/KeybindingsSettings.logic.test.ts
@@ -49,13 +49,13 @@ describe("KeybindingsSettings.logic", () => {
it("orders Usage bindings and command choices like the page", () => {
const expected = [
"usage.cost",
- "usage.open",
"usage.tokens",
"usage.limits",
"usage.period.day",
"usage.period.week",
"usage.period.month",
"usage.period.quarter",
+ "usage.open",
];
const bindings = DEFAULT_RESOLVED_KEYBINDINGS.toReversed();
expect(buildKeybindingRows(bindings, "usage").map((row) => row.command)).toEqual(expected);
diff --git a/apps/web/src/components/settings/KeybindingsSettings.logic.ts b/apps/web/src/components/settings/KeybindingsSettings.logic.ts
index a06628e5d5052a1966bbf76688a60244d16ca8d0..a1f445b5db822a76289aeac1fa131aa6906804d1 100644
--- a/apps/web/src/components/settings/KeybindingsSettings.logic.ts
+++ b/apps/web/src/components/settings/KeybindingsSettings.logic.ts
@@ -19,10 +19,24 @@ const usageCommandOrder = new Map