on master help sign in
Remove the new-tab-in-group shortcut

Grouping is automatic (opener grouping, naming, Organize), so the manual command and its handler go. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LdKDAYoqmGehyHsV42LhJW

commitea3b548f27cef5479c7cb6c4904013b486c580e2 authorClaude <noreply@anthropic.com> dateWed 23 Sep 2026, 16:34 (2 weeks ago) parentab0f7da
3 files changed+1−25
README.md+1−2 manifest.json−7 src/background/index.ts−16
README.md+1−2
@@ -63,7 +63,6 @@ Open Diagonal's settings page and click **Run self-test**. Expect `fmAvailable:
6363| --- | --- |
6464| Organize this window | Alt+Shift+G |
6565| Name the current group now | Alt+Shift+N |
66−| New tab in the current group | Alt+Shift+T |
6766| Tidy now | unset |
6867
6968Change them at `brave://extensions/shortcuts`.
@@ -95,7 +94,7 @@ Every push to `master` runs `.github/workflows/release.yml`: it typechecks, runs
9594
9695## Where this differs from the spec, and why
9796
98−- **New tab in group is Alt+Shift+T, not Alt+Cmd+T.** Chromium refuses to load an extension whose manifest suggests Alt+Command+T (it is treated as Ctrl+Alt, which is reserved for AltGr). You can still bind Alt+Cmd+T by hand at `brave://extensions/shortcuts` if Brave accepts it there.
97+- **No "new tab in group" shortcut.** The spec's Alt+Cmd+T command was dropped: grouping happens on its own through opener grouping, naming and Organize.
9998- **Query strings.** The spec keeps the query only when the path is empty, but also wants `youtube.com/watch?v=…` kept. Diagonal keeps the whole query when the path is empty and otherwise keeps only content keys (`v`, `q`, `query`, `search_query`, `search`, `s`, `k`, `id`, `p`, `list`, `page`), dropping `utm_*` and similar.
10099- **Grey is reserved for the Parked group.** Site colours hash over the other eight colours.
101100- **Organize only adds tabs to Diagonal's own groups,** not to groups you made by hand, unless "Name my own groups" is on.
manifest.json−7
@@ -67,13 +67,6 @@
6767 },
6868 "tidy-now": {
6969 "description": "Run the tidy sweep now"
70− },
71− "new-tab-in-group": {
72− "suggested_key": {
73− "default": "Alt+Shift+T",
74− "mac": "Alt+Shift+T"
75− },
76− "description": "New tab inside the current group"
7770 }
7871 }
7972}
src/background/index.ts−16
@@ -470,20 +470,6 @@ async function nameGroupNow(groupId: number): Promise<void> {
470470 await naming.nameNow(groupId);
471471}
472472
473−async function newTabInGroup(): Promise<void> {
474− const active = await activeTab();
475− if (!active?.id) return;
476− const groupId = active.groupId ?? -1;
477− if (groupId === -1) {
478− await chrome.tabs.create({ windowId: active.windowId, index: active.index + 1 });
479− return;
480− }
481− const members = await chrome.tabs.query({ groupId });
482− const last = Math.max(...members.map((t) => t.index));
483− const tab = await chrome.tabs.create({ windowId: active.windowId, index: last + 1, openerTabId: active.id });
484− if (tab.id !== undefined) await addToGroup(rt, [tab.id], groupId);
485−}
486−
487473chrome.commands.onCommand.addListener((command) => {
488474 void (async () => {
489475 await ready;
@@ -496,8 +482,6 @@ chrome.commands.onCommand.addListener((command) => {
496482 if (t && (t.groupId ?? -1) !== -1) await nameGroupNow(t.groupId);
497483 } else if (command === "tidy-now") {
498484 await runSweep(rt, true);
499− } else if (command === "new-tab-in-group") {
500− await newTabInGroup();
501485 }
502486 } catch (e) {
503487 logError(`command ${command}`, e);