Repository navigation
feat(bestie): Choose your bestie when there's none, and clear a deleted Bestie - #2047
Draft
rileycrane wants to merge 22 commits into
Draft
rileycrane wants to merge 22 commits into
rileycrane wants to merge 22 commits into
Conversation
Signed-off-by: Clay Delk <clay.delk@gmail.com>
Signed-off-by: Clay Delk <clay.delk@gmail.com>
Signed-off-by: Clay Delk <clay.delk@gmail.com>
Signed-off-by: Clay Delk <clay.delk@gmail.com>
Signed-off-by: Clay Delk <clay.delk@gmail.com>
Signed-off-by: Clay Delk <clay.delk@gmail.com>
Signed-off-by: Clay Delk <clay.delk@gmail.com>
Show the saved Bestie identity in page search while preserving Bestie as a searchable detail. Carry display owner metadata through directory results so agent namesakes use readable owner qualifiers before key suffixes. Co-authored-by: Buzzsaw <a760f3ee1dc0daf403313e35766d0d983a8898aaa9ca95a034727165c63a8680@claysworld.communities.buzz.xyz> Signed-off-by: Clay Delk <clay.delk@gmail.com>
Signed-off-by: Clay Delk <clay.delk@gmail.com>
Signed-off-by: Clay Delk <clay.delk@gmail.com>
Co-authored-by: Buzzsaw <a760f3ee1dc0daf403313e35766d0d983a8898aaa9ca95a034727165c63a8680@claysworld.communities.buzz.xyz> Signed-off-by: Clay Delk <clay.delk@gmail.com>
Co-authored-by: Buzzsaw <a760f3ee1dc0daf403313e35766d0d983a8898aaa9ca95a034727165c63a8680@claysworld.communities.buzz.xyz> Signed-off-by: Clay Delk <clay.delk@gmail.com>
Signed-off-by: Clay Delk <clay.delk@gmail.com>
Signed-off-by: Clay Delk <clay.delk@gmail.com>
Signed-off-by: Clay Delk <clay.delk@gmail.com>
This reverts commit f789630. Signed-off-by: Clay Delk <clay.delk@gmail.com>
Brings in Clay's pinned Bestie DM at ce67347. The Bestie plugin keeps both sides: #1935's page and the stack's tabs, check-in cleanup and onBestieMade. In the account's saved choice, #1935's read errors and revisions are kept alongside the stack's known-choice tracking, and a successful save becomes the value a later failed choice falls back to. Co-authored-by: eggboy <3986e5374b8c11a274f4a53fa9a68e1e18b53e712f8aa5218add2485bf5a2b09@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Riley Crane <rileycrane@squareup.com>
Ports Clay's Choose your bestie from #1935's pre-revert head f789630: with no saved Bestie, the Bestie page offers the viewer's eligible agents and the shared New agent dialog in place of Builderlab's hosted setup. The plugin keeps registering the stack's Bestie tabs, check-in cleanup and onBestieMade alongside the page. Co-authored-by: Clay Delk <clay.delk@gmail.com> Co-authored-by: eggboy <3986e5374b8c11a274f4a53fa9a68e1e18b53e712f8aa5218add2485bf5a2b09@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Riley Crane <rileycrane@squareup.com>
Choose your bestie moves into its own chooser, which the page shows with no saved Bestie and also in place of one that is no longer here. Like Change and Make my bestie, it offers only agents on this device, and says so. A choice made in it is saved through chooseBestie, which also tells onBestieMade, so a Bestie chosen from the sidebar starts with Remembers you on too. Co-authored-by: eggboy <3986e5374b8c11a274f4a53fa9a68e1e18b53e712f8aa5218add2485bf5a2b09@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Riley Crane <rileycrane@squareup.com>
A deleted agent that the account saved as main is cleared from the account too, with the none writer that saves no Bestie, so the Bestie page shows Choose your bestie rather than an agent that is gone. The account is read again first, and is left alone if another device has chosen another agent since, or if a choice made here is saving or was made during the read. Co-authored-by: eggboy <3986e5374b8c11a274f4a53fa9a68e1e18b53e712f8aa5218add2485bf5a2b09@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Riley Crane <rileycrane@squareup.com>
…n away a hosted agent made here - Deleting a Bestie before the account has been read now remembers the pubkey and saves none when the read comes back with it. - A failed clear says the choice is known again. - A later failed choice falls back to the saved choice, not an older read. - An agent created from the chooser that isn't on this device is not saved as Bestie; the chooser says why. - Browser check of the empty and no-longer-here pages: only local agents are offered. Co-authored-by: eggboy <3986e5374b8c11a274f4a53fa9a68e1e18b53e712f8aa5218add2485bf5a2b09@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Riley Crane <rileycrane@squareup.com>
The empty Bestie page now offers Choose your bestie, not Meet your Bestie. plugin-defaults and sidenav-polish open the page with no Bestie and wait for its heading. Co-authored-by: eggboy <3986e5374b8c11a274f4a53fa9a68e1e18b53e712f8aa5218add2485bf5a2b09@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Riley Crane <rileycrane@squareup.com>
This was referenced Oct 30, 2026
rileycrane
force-pushed
the
rileycrane/bestie-l7-empty-state
branch
from
October 30, 2026 23:24
ed684ad to
b024c3c
Compare
rileycrane
force-pushed
the
rileycrane/bestie-l6-remove
branch
from
October 30, 2026 23:24
7b9426c to
4bca2e3
Compare
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.
When there's no Bestie, the Bestie page offers Choose your bestie: pick one of your agents or create one. If you delete your Bestie, the account is set to none, so the page shows the chooser instead of an agent that's gone. For now only agents on this device are offered.
Commits to review
eb45012e5feat(bestie): choose an existing agent or create one. This ports the ChooseBestie component from feat(bestie): pin the saved Bestie DM #1935's earlier head (ce6734793..f78963029) onto the stack. The stack keeps its Bestie and Former Bestie tabs, check-in cleanup, and remembers-on.6c2e161e8feat(bestie): offer local agents in place, and remember from the sidebar.f5a7c875efeat(bestie): deleting your Bestie saves none to the account.cd653c6fcfix(bestie): clear a deleted Bestie once the account is read, and turn away a hosted agent made here.b024c3c57test(bestie): expect Choose your bestie on the empty Bestie page.plugin-defaultsandsidenav-polishwaited for the old "Meet your Bestie" heading.1ffa2e59bmerges feat(bestie): pin the saved Bestie DM #1935. The conflicts in the README,index.tsxanddefault-agent.tswere resolved to keep both sides.What changes
Choose your bestie. The empty Bestie page lists your agents and has New agent. It says "Only agents on this device can be your Bestie for now." Hosted agents aren't listed. If you create a hosted agent from this page, it isn't made Bestie, and the page says why.
No longer here. If the saved Bestie isn't one of your agents anymore, the pinned Bestie says "Zed is no longer here. Choose another agent to be your bestie." The same chooser is shown in place, so you don't have to leave the page.
Deleting your Bestie saves none. It clears only if the account still holds that agent's pubkey, using the null writer from feat(bestie): remove your Bestie, and only local agents can be Bestie for now #2041. It saves nothing in these cases:
If the account hasn't been read yet, the delete is remembered and the clear happens when the read returns that pubkey.
A choice from the sidebar (
chooseBestie) firesonBestieMade, so remembers-on applies to it as well as to the Bestie tab.Try it (
just dev)Checks
--error-on-warningsand design:check pass.solo,native-sidebar,session-main-agent,pages.integration,entity-navigation,readmes,BestieNavigationandChannelInventory.plugin-defaults.spec.mjsandsidenav-polish.spec.mjspass 24/24 on chromium and webkit with the new heading.tests/browser/bestie-choose.spec.mjspasses 4/4 (chromium and webkit). It renders the production Bestie page twice: with no Bestie, and with a Bestie that's no longer here. In both, it opens the chooser and confirms that the local agent is offered and the hosted one isn't.cd653c6fc, each with a test that fails without it.Known gaps
setup.ts,prompt.tsandtesting.tsare no longer used. They're left in place, as in f789630.index.test.tsx, as feat(bestie): pin the saved Bestie DM #1935's f789630 does.PinnedBestie's chooser test checks that the chooser appears, but doesn't pick an agent.The ChooseBestie port is co-authored by Clay Delk, from #1935.
Stack: each PR is based on the one before it: #2034 Bestie tab → #2035 Remembers you → #2036 private channels → #2037 check-ins → #2039 Former Bestie → #2041 Remove as Bestie → #2047 Choose your bestie (this PR). #2040 (recent notes in Claude Code prompts) is separate and based on main.
Overlap: #1716 also changes
features/agents/service.tsandtabs.tsx. Whichever lands second will rebase onto the other.🤖 Generated with Claude Code