feat: reins groups — list tab groups - #34
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Daemon fans list_groups out across connected browsers, tagging each group with browserId + browser. A browser that fails (no tab-group support, or an older extension) contributes nothing; only when every targeted browser fails is the first error rethrown. Adds the groups command, groupsText, and a g<id> marker on grouped tabs in reins tabs. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
5 tasks
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Dia was verified live: groups show in its sidebar (cyan renders as blue). Remove the claim that Dia (and, unverified, Arc) lack tab groups from the changeset and comments, use a neutral browser in test fixtures, and bring the spec in line with the skipped-browser reporting. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
karngyan
added this pull request to stack #36
September 26, 2026 18:55
karngyan
added a commit
that referenced
this pull request
Sep 26, 2026
main's tree equals the pre-squash PR1 tip, so every conflict resolves to this branch's side; the net diff against main is unchanged PR2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
People asked for a way to see which tabs reins controls. Chromium tab groups are the natural marker, and they're also a general "organize my tabs" tool. This PR is the read side. reins ships primitives only and never groups anything on its own; the agent decides.
Tab.groupId(optional; left out when a tab is ungrouped).TabGroup/ListGroupsResult.list_groupsat tierread.coloris a plain string, so a future Chromium color can't reject a whole list. Inputs (next PR) use the nine-color enum.tab-groups.ts.groupsSupported()checks for the exact APIs used (tabGroups.query/update,tabs.group/ungroup) rather than guessing from the browser name.unsupported. The daemon rewrites it to name the browser:<browser> (b2) doesn't support tab groups — reins groups/group/ungroup need the chrome.tabGroups API, which this browser doesn't provide. Other reins commands work normally.An older extension that doesn't know these methods gets<browser> (b2)'s reins extension predates tab groups — update it ….list_groupshas no host check, since group titles are the user's own labels. Denied tabs inreins tabsstay redacted and drop theirgroupId.tabGroups. It shows no install warning, so existing users aren't asked to re-approve on update, and browsers that don't know it ignore it.list_groupsfans out across browsers likelist_tabs, tagging each group withbrowserId.skipped({browserId, browser, reason, message}), and the text output prints a line such asb2 <browser> — tab groups not supported. Nothing is dropped silently.Spec and plan are in
docs/superpowers/.Test plan
pnpm build && pnpm test && pnpm typecheck && pnpm lint: all green.tabGroups, missingtabs.group).unsupportedcode and message.groupIdmapping (-1left out).list_groupsbypasses the host gate.groupId.reins extension --reload):reins groupslisted an existing group correctly, andreins tabsmarked its tabs. Read-only, nothing mutated.reins groupslists both browsers' groups, withskipped: [].Stacked PR with
reins group/reins ungroup: #35.🤖 Generated with Claude Code