Repository navigation
Resolve short Bluesky handles to bsky.social - #8
Merged
Merged
Conversation
Bluesky handles are domain names, but most people know their account by the short name, and LinksKit shares one handle across platforms: with handle "Jeehut" for Twitter, Mastodon and Bluesky, the Bluesky link pointed at bsky.app/profile/Jeehut, which does not exist. A handle without a dot now resolves to <name>.bsky.social, a leading @ is dropped, and custom-domain handles stay as they are. The package gets its first test target for this.
Jeehut
force-pushed
the
wip/bluesky-short-handles
branch
from
October 13, 2026 10:33
bb9eae9 to
aaf12e6
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.
Picks up the problem from #6 by @n0rthk1n9 without changing the API.
Bluesky handles are domain names:
n0rthk1n9.bsky.socialfor an account on the default server, or a custom domain likefline.dev. LinksKit shares one handle across platforms, so withhandle: "Jeehut"for Twitter, Mastodon and Bluesky the Bluesky link pointed atbsky.app/profile/Jeehut, which does not exist.SocialPlatform.blueskynow normalizes the handle before building the URL:jeehutJeehut@jeehutjeehut.bsky.socialfline.dev#6 proposed
case bluesky(instance: String), analogous to Mastodon. As its author noted in the thread, that breaks custom-domain handles, which have no instance suffix – and it would be a breaking change for everyone using.bluesky. A dot in the handle tells both cases apart reliably, since every full Bluesky handle is a domain.How this was verified
LinksKit had no tests yet; this adds a
LinksKitTeststarget.SocialPlatformTestscovers the five handles above plus@fline.dev, and Mastodon. With the old URL code it failed for the four handles that are short or start with@; on this branch it passes:jeehut.bsky.socialwas confirmed to exist through Bluesky's publicapp.bsky.actor.getProfileAPI.