Repository navigation
feat(settings): a Devices tab — add, rename and remove computers from /settings - #2074
Merged
Merged
Conversation
… /settings Device management lived only behind /devices, /pair and the command line, so someone looking for it on the settings page found nothing. /settings now has a Devices tab between Connections and Privacy. It hosts the same deviceCard /devices opens — the same rows, order, dots, key words and door calls — plus an "Add another device" row that leaves settings and starts what bare /pair starts. r removes the computer under the cursor, n renames this one, and esc while typing a name cancels the name without closing settings. Where pairing cannot work, the tab says the same one sentence /devices says. The device messages now land on whichever view holds the card, the presence feed stays joined while the tab is open, and the add-device words are one shared constant with the home card. The online dot comes through the palette's glyph door instead of a literal mark. The manual gains a section headed in the asker's words, the settings tab lists in the corpus name Devices, and four probes reach the new section. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hand-testing on a home with CODEAF_SYNC_URL=off showed the tab lists no computers and still offers Add another device, whose enter answers the same sync-off refusal /pair gives. The section claimed only "one sentence and no rows" for unusable states; it now says exactly what sync off does, and the unusable-state sentence is tightened to keep the section standalone-short. 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.
Why
Device management was only reachable through
/devices,/pairandcodeaf devices revoke. Someone looking on the settings page found nothing. A teammate asked for add and remove "in tui settings… in devices category".What
/settingsgains a Devices tab between Connections and Privacy. It hosts the samedeviceCardthat/devicesopens, rather than a second list:this device,seen 3h ago,removed. It reloads when another computer changes the device list.r removeremoves the computer under the cursor through the same door call. The row then readsremovedand the foot line says<name> was removed — it can no longer reach your chats.On your own row,rsaysthis device cannot remove itself — choose another row.n renamerenames this device inline.escwhile typing cancels the name without closing/settings, and a secondesccloses it.Add another device(enter add) leaves settings and starts exactly what bare/pairstarts. Its wording is now one constant shared with the home card./devicesshows (pairing is not available here, the engine reason, or the read error). It never shows an empty list.devices,remove,revoke,pairandadd device.Supporting changes:
●. It is unchanged on Unicode and Nerd Font terminals; in ASCII it is now#besideo.The manual gains Devices in /settings — … remove (revoke) one from settings, and every
/settingstab list in the corpus now names Devices. Four new probes ("can I remove a device from settings", …) reach that section.Validation contract → proof
TestSettingsDevicesTabSitsBetweenConnectionsAndPrivacyAndIsReachedByTabKeys,TestSettingsOrganizationCategoriesAndAdvancedSearch/devicesdoes, and refreshes on a directory changeTestSettingsDevicesListsDevicesInCardOrderAndRefreshesOnDirectoryChange/pairTestSettingsDevicesAddRowLeavesSettingsAndStartsBarePairrremoves another device, refuses on your own row, does nothing on the add or removed rowsTestSettingsDevicesRKeyRemovesAnotherRowRefusesOwnRowAndIgnoresAddAndRemovedRowsnrenames;esccancels typing without closing settingsTestSettingsDevicesNKeyRenamesThisDeviceAndEscCancelsTypingWithoutClosingSettingsTestSettingsDevicesKeysLineShrinksToWhatWorksOnTheCurrentRowTestSettingsDevicesUnavailableAndFailedReadSayWhyAndNothingElseTestSettingsDevicesSearchFindsTheTabAcrossQueriesinternal/manual/chat_test.goHand test. I used the real binary in tmux. Two throwaway homes were paired through a local
codeaf relaywithcodeaf pair --code. On home A,/settings→ Devices showed both computers and the add row, with the keys line matching the/devicescard row for row.nthenesccancelled the rename and stayed in settings, and a secondescclosed it.Add another deviceshowed a fresh pairing code.ron the other computer marked itremoved, andcodeaf deviceson A confirmed the removal.Local gates.
go build ./...,go veton the touched packages,gofmt,make test-laws, the manual, iconlaw and namelaw packages, and focusedinternal/tui3runs over Settings, Devices, Pair, Manual, Home, Machine, Watch and Approve are all green. The full touched-package suites are left to CI.🤖 Generated with Claude Code