Bluesky app fork with some witchin' additions 💫 witchsky.app
bluesky fork client
117
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix(auth): use transition scopes so local dev works

xan.lol 6c026456 7753fdaf

+7 -134
+1 -1
bskyweb/cmd/bskyweb/server.go
··· 487 487 "client_name": "Witchsky", 488 488 "client_uri": baseURL, 489 489 "redirect_uris": []string{baseURL + "/auth/web/callback"}, 490 - "scope": "atproto repo:* blob:*/* identity:handle account:email?action=manage account:status?action=manage rpc:app.bsky.actor.getPreferences?aud=* rpc:app.bsky.actor.getProfile?aud=* rpc:app.bsky.actor.getProfiles?aud=* rpc:app.bsky.actor.getSuggestions?aud=* rpc:app.bsky.actor.putPreferences?aud=* rpc:app.bsky.actor.searchActors?aud=* rpc:app.bsky.actor.searchActorsTypeahead?aud=* rpc:app.bsky.ageassurance.begin?aud=* rpc:app.bsky.bookmark.createBookmark?aud=* rpc:app.bsky.bookmark.deleteBookmark?aud=* rpc:app.bsky.bookmark.getBookmarks?aud=* rpc:app.bsky.contact.dismissMatch?aud=* rpc:app.bsky.contact.getMatches?aud=* rpc:app.bsky.contact.getSyncStatus?aud=* rpc:app.bsky.contact.importContacts?aud=* rpc:app.bsky.contact.removeData?aud=* rpc:app.bsky.contact.startPhoneVerification?aud=* rpc:app.bsky.contact.verifyPhone?aud=* rpc:app.bsky.draft.createDraft?aud=* rpc:app.bsky.draft.deleteDraft?aud=* rpc:app.bsky.draft.getDrafts?aud=* rpc:app.bsky.draft.updateDraft?aud=* rpc:app.bsky.feed.describeFeedGenerator?aud=* rpc:app.bsky.feed.getActorFeeds?aud=* rpc:app.bsky.feed.getActorLikes?aud=* rpc:app.bsky.feed.getAuthorFeed?aud=* rpc:app.bsky.feed.getFeed?aud=* rpc:app.bsky.feed.getFeedGenerator?aud=* rpc:app.bsky.feed.getFeedGenerators?aud=* rpc:app.bsky.feed.getFeedSkeleton?aud=* rpc:app.bsky.feed.getLikes?aud=* rpc:app.bsky.feed.getListFeed?aud=* rpc:app.bsky.feed.getPostThread?aud=* rpc:app.bsky.feed.getPosts?aud=* rpc:app.bsky.feed.getQuotes?aud=* rpc:app.bsky.feed.getRepostedBy?aud=* rpc:app.bsky.feed.getSuggestedFeeds?aud=* rpc:app.bsky.feed.getTimeline?aud=* rpc:app.bsky.feed.searchPosts?aud=* rpc:app.bsky.feed.sendInteractions?aud=* rpc:app.bsky.graph.getActorStarterPacks?aud=* rpc:app.bsky.graph.getBlocks?aud=* rpc:app.bsky.graph.getFollowers?aud=* rpc:app.bsky.graph.getFollows?aud=* rpc:app.bsky.graph.getKnownFollowers?aud=* rpc:app.bsky.graph.getList?aud=* rpc:app.bsky.graph.getListBlocks?aud=* rpc:app.bsky.graph.getListMutes?aud=* rpc:app.bsky.graph.getLists?aud=* rpc:app.bsky.graph.getListsWithMembership?aud=* rpc:app.bsky.graph.getMutes?aud=* rpc:app.bsky.graph.getRelationships?aud=* rpc:app.bsky.graph.getStarterPack?aud=* rpc:app.bsky.graph.getStarterPacks?aud=* rpc:app.bsky.graph.getStarterPacksWithMembership?aud=* rpc:app.bsky.graph.getSuggestedFollowsByActor?aud=* rpc:app.bsky.graph.muteActor?aud=* rpc:app.bsky.graph.muteActorList?aud=* rpc:app.bsky.graph.muteThread?aud=* rpc:app.bsky.graph.searchStarterPacks?aud=* rpc:app.bsky.graph.unmuteActor?aud=* rpc:app.bsky.graph.unmuteActorList?aud=* rpc:app.bsky.graph.unmuteThread?aud=* rpc:app.bsky.labeler.getServices?aud=* rpc:app.bsky.notification.getPreferences?aud=* rpc:app.bsky.notification.getUnreadCount?aud=* rpc:app.bsky.notification.listActivitySubscriptions?aud=* rpc:app.bsky.notification.listNotifications?aud=* rpc:app.bsky.notification.putActivitySubscription?aud=* rpc:app.bsky.notification.putPreferences?aud=* rpc:app.bsky.notification.putPreferencesV2?aud=* rpc:app.bsky.notification.registerPush?aud=* rpc:app.bsky.notification.unregisterPush?aud=* rpc:app.bsky.notification.updateSeen?aud=* rpc:app.bsky.unspecced.getAgeAssuranceState?aud=* rpc:app.bsky.unspecced.getConfig?aud=* rpc:app.bsky.unspecced.getOnboardingSuggestedStarterPacks?aud=* rpc:app.bsky.unspecced.getPopularFeedGenerators?aud=* rpc:app.bsky.unspecced.getPostThreadOtherV2?aud=* rpc:app.bsky.unspecced.getPostThreadV2?aud=* rpc:app.bsky.unspecced.getSuggestedFeeds?aud=* rpc:app.bsky.unspecced.getSuggestedFeedsSkeleton?aud=* rpc:app.bsky.unspecced.getSuggestedOnboardingUsers?aud=* rpc:app.bsky.unspecced.getSuggestedStarterPacks?aud=* rpc:app.bsky.unspecced.getSuggestedStarterPacksSkeleton?aud=* rpc:app.bsky.unspecced.getSuggestedUsers?aud=* rpc:app.bsky.unspecced.getSuggestedUsersForDiscover?aud=* rpc:app.bsky.unspecced.getSuggestedUsersForExplore?aud=* rpc:app.bsky.unspecced.getSuggestedUsersForSeeMore?aud=* rpc:app.bsky.unspecced.getSuggestedUsersSkeleton?aud=* rpc:app.bsky.unspecced.getSuggestionsSkeleton?aud=* rpc:app.bsky.unspecced.getTaggedSuggestions?aud=* rpc:app.bsky.unspecced.getTrendingTopics?aud=* rpc:app.bsky.unspecced.getTrends?aud=* rpc:app.bsky.unspecced.getTrendsSkeleton?aud=* rpc:app.bsky.unspecced.initAgeAssurance?aud=* rpc:app.bsky.unspecced.searchActorsSkeleton?aud=* rpc:app.bsky.unspecced.searchPostsSkeleton?aud=* rpc:app.bsky.unspecced.searchStarterPacksSkeleton?aud=* rpc:app.bsky.video.getJobStatus?aud=* rpc:app.bsky.video.getUploadLimits?aud=* rpc:app.bsky.video.uploadVideo?aud=* rpc:chat.bsky.actor.deleteAccount?aud=* rpc:chat.bsky.actor.exportAccountData?aud=* rpc:chat.bsky.convo.exportAccountData?aud=* rpc:chat.bsky.convo.acceptConvo?aud=* rpc:chat.bsky.convo.addReaction?aud=* rpc:chat.bsky.convo.deleteMessageForSelf?aud=* rpc:chat.bsky.convo.getConvo?aud=* rpc:chat.bsky.convo.getConvoAvailability?aud=* rpc:chat.bsky.convo.getConvoForMembers?aud=* rpc:chat.bsky.convo.getLog?aud=* rpc:chat.bsky.convo.getMessages?aud=* rpc:chat.bsky.convo.leaveConvo?aud=* rpc:chat.bsky.convo.listConvos?aud=* rpc:chat.bsky.convo.muteConvo?aud=* rpc:chat.bsky.convo.removeReaction?aud=* rpc:chat.bsky.convo.sendMessage?aud=* rpc:chat.bsky.convo.sendMessageBatch?aud=* rpc:chat.bsky.convo.unmuteConvo?aud=* rpc:chat.bsky.convo.updateAllRead?aud=* rpc:chat.bsky.convo.updateRead?aud=* rpc:com.atproto.moderation.createReport?aud=* rpc:com.atproto.repo.uploadBlob?aud=*", 490 + "scope": "atproto transition:generic transition:email transition:chat.bsky", 491 491 "token_endpoint_auth_method": "none", 492 492 "response_types": []string{"code"}, 493 493 "grant_types": []string{"authorization_code", "refresh_token"},
+1 -1
bskyweb/static/oauth-client-metadata-native.json
··· 3 3 "client_name": "Witchsky", 4 4 "client_uri": "https://witchsky.app", 5 5 "redirect_uris": ["app.witchsky:/auth/callback"], 6 - "scope": "atproto repo:* blob:*/* identity:handle account:email?action=manage account:status?action=manage rpc:app.bsky.actor.getPreferences?aud=* rpc:app.bsky.actor.getProfile?aud=* rpc:app.bsky.actor.getProfiles?aud=* rpc:app.bsky.actor.getSuggestions?aud=* rpc:app.bsky.actor.putPreferences?aud=* rpc:app.bsky.actor.searchActors?aud=* rpc:app.bsky.actor.searchActorsTypeahead?aud=* rpc:app.bsky.ageassurance.begin?aud=* rpc:app.bsky.bookmark.createBookmark?aud=* rpc:app.bsky.bookmark.deleteBookmark?aud=* rpc:app.bsky.bookmark.getBookmarks?aud=* rpc:app.bsky.contact.dismissMatch?aud=* rpc:app.bsky.contact.getMatches?aud=* rpc:app.bsky.contact.getSyncStatus?aud=* rpc:app.bsky.contact.importContacts?aud=* rpc:app.bsky.contact.removeData?aud=* rpc:app.bsky.contact.startPhoneVerification?aud=* rpc:app.bsky.contact.verifyPhone?aud=* rpc:app.bsky.draft.createDraft?aud=* rpc:app.bsky.draft.deleteDraft?aud=* rpc:app.bsky.draft.getDrafts?aud=* rpc:app.bsky.draft.updateDraft?aud=* rpc:app.bsky.feed.describeFeedGenerator?aud=* rpc:app.bsky.feed.getActorFeeds?aud=* rpc:app.bsky.feed.getActorLikes?aud=* rpc:app.bsky.feed.getAuthorFeed?aud=* rpc:app.bsky.feed.getFeed?aud=* rpc:app.bsky.feed.getFeedGenerator?aud=* rpc:app.bsky.feed.getFeedGenerators?aud=* rpc:app.bsky.feed.getFeedSkeleton?aud=* rpc:app.bsky.feed.getLikes?aud=* rpc:app.bsky.feed.getListFeed?aud=* rpc:app.bsky.feed.getPostThread?aud=* rpc:app.bsky.feed.getPosts?aud=* rpc:app.bsky.feed.getQuotes?aud=* rpc:app.bsky.feed.getRepostedBy?aud=* rpc:app.bsky.feed.getSuggestedFeeds?aud=* rpc:app.bsky.feed.getTimeline?aud=* rpc:app.bsky.feed.searchPosts?aud=* rpc:app.bsky.feed.sendInteractions?aud=* rpc:app.bsky.graph.getActorStarterPacks?aud=* rpc:app.bsky.graph.getBlocks?aud=* rpc:app.bsky.graph.getFollowers?aud=* rpc:app.bsky.graph.getFollows?aud=* rpc:app.bsky.graph.getKnownFollowers?aud=* rpc:app.bsky.graph.getList?aud=* rpc:app.bsky.graph.getListBlocks?aud=* rpc:app.bsky.graph.getListMutes?aud=* rpc:app.bsky.graph.getLists?aud=* rpc:app.bsky.graph.getListsWithMembership?aud=* rpc:app.bsky.graph.getMutes?aud=* rpc:app.bsky.graph.getRelationships?aud=* rpc:app.bsky.graph.getStarterPack?aud=* rpc:app.bsky.graph.getStarterPacks?aud=* rpc:app.bsky.graph.getStarterPacksWithMembership?aud=* rpc:app.bsky.graph.getSuggestedFollowsByActor?aud=* rpc:app.bsky.graph.muteActor?aud=* rpc:app.bsky.graph.muteActorList?aud=* rpc:app.bsky.graph.muteThread?aud=* rpc:app.bsky.graph.searchStarterPacks?aud=* rpc:app.bsky.graph.unmuteActor?aud=* rpc:app.bsky.graph.unmuteActorList?aud=* rpc:app.bsky.graph.unmuteThread?aud=* rpc:app.bsky.labeler.getServices?aud=* rpc:app.bsky.notification.getPreferences?aud=* rpc:app.bsky.notification.getUnreadCount?aud=* rpc:app.bsky.notification.listActivitySubscriptions?aud=* rpc:app.bsky.notification.listNotifications?aud=* rpc:app.bsky.notification.putActivitySubscription?aud=* rpc:app.bsky.notification.putPreferences?aud=* rpc:app.bsky.notification.putPreferencesV2?aud=* rpc:app.bsky.notification.registerPush?aud=* rpc:app.bsky.notification.unregisterPush?aud=* rpc:app.bsky.notification.updateSeen?aud=* rpc:app.bsky.unspecced.getAgeAssuranceState?aud=* rpc:app.bsky.unspecced.getConfig?aud=* rpc:app.bsky.unspecced.getOnboardingSuggestedStarterPacks?aud=* rpc:app.bsky.unspecced.getPopularFeedGenerators?aud=* rpc:app.bsky.unspecced.getPostThreadOtherV2?aud=* rpc:app.bsky.unspecced.getPostThreadV2?aud=* rpc:app.bsky.unspecced.getSuggestedFeeds?aud=* rpc:app.bsky.unspecced.getSuggestedFeedsSkeleton?aud=* rpc:app.bsky.unspecced.getSuggestedOnboardingUsers?aud=* rpc:app.bsky.unspecced.getSuggestedStarterPacks?aud=* rpc:app.bsky.unspecced.getSuggestedStarterPacksSkeleton?aud=* rpc:app.bsky.unspecced.getSuggestedUsers?aud=* rpc:app.bsky.unspecced.getSuggestedUsersForDiscover?aud=* rpc:app.bsky.unspecced.getSuggestedUsersForExplore?aud=* rpc:app.bsky.unspecced.getSuggestedUsersForSeeMore?aud=* rpc:app.bsky.unspecced.getSuggestedUsersSkeleton?aud=* rpc:app.bsky.unspecced.getSuggestionsSkeleton?aud=* rpc:app.bsky.unspecced.getTaggedSuggestions?aud=* rpc:app.bsky.unspecced.getTrendingTopics?aud=* rpc:app.bsky.unspecced.getTrends?aud=* rpc:app.bsky.unspecced.getTrendsSkeleton?aud=* rpc:app.bsky.unspecced.initAgeAssurance?aud=* rpc:app.bsky.unspecced.searchActorsSkeleton?aud=* rpc:app.bsky.unspecced.searchPostsSkeleton?aud=* rpc:app.bsky.unspecced.searchStarterPacksSkeleton?aud=* rpc:app.bsky.video.getJobStatus?aud=* rpc:app.bsky.video.getUploadLimits?aud=* rpc:app.bsky.video.uploadVideo?aud=* rpc:chat.bsky.actor.deleteAccount?aud=* rpc:chat.bsky.actor.exportAccountData?aud=* rpc:chat.bsky.convo.exportAccountData?aud=* rpc:chat.bsky.convo.acceptConvo?aud=* rpc:chat.bsky.convo.addReaction?aud=* rpc:chat.bsky.convo.deleteMessageForSelf?aud=* rpc:chat.bsky.convo.getConvo?aud=* rpc:chat.bsky.convo.getConvoAvailability?aud=* rpc:chat.bsky.convo.getConvoForMembers?aud=* rpc:chat.bsky.convo.getLog?aud=* rpc:chat.bsky.convo.getMessages?aud=* rpc:chat.bsky.convo.leaveConvo?aud=* rpc:chat.bsky.convo.listConvos?aud=* rpc:chat.bsky.convo.muteConvo?aud=* rpc:chat.bsky.convo.removeReaction?aud=* rpc:chat.bsky.convo.sendMessage?aud=* rpc:chat.bsky.convo.sendMessageBatch?aud=* rpc:chat.bsky.convo.unmuteConvo?aud=* rpc:chat.bsky.convo.updateAllRead?aud=* rpc:chat.bsky.convo.updateRead?aud=* rpc:com.atproto.moderation.createReport?aud=* rpc:com.atproto.repo.uploadBlob?aud=*", 6 + "scope": "atproto transition:generic transition:email transition:chat.bsky", 7 7 "token_endpoint_auth_method": "none", 8 8 "response_types": ["code"], 9 9 "grant_types": ["authorization_code", "refresh_token"],
+1 -1
bskyweb/static/oauth-client-metadata.json
··· 3 3 "client_name": "Witchsky", 4 4 "client_uri": "https://witchsky.app", 5 5 "redirect_uris": ["https://witchsky.app/auth/web/callback", "https://canary.witchsky.app/auth/web/callback"], 6 - "scope": "atproto repo:* blob:*/* identity:handle account:email?action=manage account:status?action=manage rpc:app.bsky.actor.getPreferences?aud=* rpc:app.bsky.actor.getProfile?aud=* rpc:app.bsky.actor.getProfiles?aud=* rpc:app.bsky.actor.getSuggestions?aud=* rpc:app.bsky.actor.putPreferences?aud=* rpc:app.bsky.actor.searchActors?aud=* rpc:app.bsky.actor.searchActorsTypeahead?aud=* rpc:app.bsky.ageassurance.begin?aud=* rpc:app.bsky.bookmark.createBookmark?aud=* rpc:app.bsky.bookmark.deleteBookmark?aud=* rpc:app.bsky.bookmark.getBookmarks?aud=* rpc:app.bsky.contact.dismissMatch?aud=* rpc:app.bsky.contact.getMatches?aud=* rpc:app.bsky.contact.getSyncStatus?aud=* rpc:app.bsky.contact.importContacts?aud=* rpc:app.bsky.contact.removeData?aud=* rpc:app.bsky.contact.startPhoneVerification?aud=* rpc:app.bsky.contact.verifyPhone?aud=* rpc:app.bsky.draft.createDraft?aud=* rpc:app.bsky.draft.deleteDraft?aud=* rpc:app.bsky.draft.getDrafts?aud=* rpc:app.bsky.draft.updateDraft?aud=* rpc:app.bsky.feed.describeFeedGenerator?aud=* rpc:app.bsky.feed.getActorFeeds?aud=* rpc:app.bsky.feed.getActorLikes?aud=* rpc:app.bsky.feed.getAuthorFeed?aud=* rpc:app.bsky.feed.getFeed?aud=* rpc:app.bsky.feed.getFeedGenerator?aud=* rpc:app.bsky.feed.getFeedGenerators?aud=* rpc:app.bsky.feed.getFeedSkeleton?aud=* rpc:app.bsky.feed.getLikes?aud=* rpc:app.bsky.feed.getListFeed?aud=* rpc:app.bsky.feed.getPostThread?aud=* rpc:app.bsky.feed.getPosts?aud=* rpc:app.bsky.feed.getQuotes?aud=* rpc:app.bsky.feed.getRepostedBy?aud=* rpc:app.bsky.feed.getSuggestedFeeds?aud=* rpc:app.bsky.feed.getTimeline?aud=* rpc:app.bsky.feed.searchPosts?aud=* rpc:app.bsky.feed.sendInteractions?aud=* rpc:app.bsky.graph.getActorStarterPacks?aud=* rpc:app.bsky.graph.getBlocks?aud=* rpc:app.bsky.graph.getFollowers?aud=* rpc:app.bsky.graph.getFollows?aud=* rpc:app.bsky.graph.getKnownFollowers?aud=* rpc:app.bsky.graph.getList?aud=* rpc:app.bsky.graph.getListBlocks?aud=* rpc:app.bsky.graph.getListMutes?aud=* rpc:app.bsky.graph.getLists?aud=* rpc:app.bsky.graph.getListsWithMembership?aud=* rpc:app.bsky.graph.getMutes?aud=* rpc:app.bsky.graph.getRelationships?aud=* rpc:app.bsky.graph.getStarterPack?aud=* rpc:app.bsky.graph.getStarterPacks?aud=* rpc:app.bsky.graph.getStarterPacksWithMembership?aud=* rpc:app.bsky.graph.getSuggestedFollowsByActor?aud=* rpc:app.bsky.graph.muteActor?aud=* rpc:app.bsky.graph.muteActorList?aud=* rpc:app.bsky.graph.muteThread?aud=* rpc:app.bsky.graph.searchStarterPacks?aud=* rpc:app.bsky.graph.unmuteActor?aud=* rpc:app.bsky.graph.unmuteActorList?aud=* rpc:app.bsky.graph.unmuteThread?aud=* rpc:app.bsky.labeler.getServices?aud=* rpc:app.bsky.notification.getPreferences?aud=* rpc:app.bsky.notification.getUnreadCount?aud=* rpc:app.bsky.notification.listActivitySubscriptions?aud=* rpc:app.bsky.notification.listNotifications?aud=* rpc:app.bsky.notification.putActivitySubscription?aud=* rpc:app.bsky.notification.putPreferences?aud=* rpc:app.bsky.notification.putPreferencesV2?aud=* rpc:app.bsky.notification.registerPush?aud=* rpc:app.bsky.notification.unregisterPush?aud=* rpc:app.bsky.notification.updateSeen?aud=* rpc:app.bsky.unspecced.getAgeAssuranceState?aud=* rpc:app.bsky.unspecced.getConfig?aud=* rpc:app.bsky.unspecced.getOnboardingSuggestedStarterPacks?aud=* rpc:app.bsky.unspecced.getPopularFeedGenerators?aud=* rpc:app.bsky.unspecced.getPostThreadOtherV2?aud=* rpc:app.bsky.unspecced.getPostThreadV2?aud=* rpc:app.bsky.unspecced.getSuggestedFeeds?aud=* rpc:app.bsky.unspecced.getSuggestedFeedsSkeleton?aud=* rpc:app.bsky.unspecced.getSuggestedOnboardingUsers?aud=* rpc:app.bsky.unspecced.getSuggestedStarterPacks?aud=* rpc:app.bsky.unspecced.getSuggestedStarterPacksSkeleton?aud=* rpc:app.bsky.unspecced.getSuggestedUsers?aud=* rpc:app.bsky.unspecced.getSuggestedUsersForDiscover?aud=* rpc:app.bsky.unspecced.getSuggestedUsersForExplore?aud=* rpc:app.bsky.unspecced.getSuggestedUsersForSeeMore?aud=* rpc:app.bsky.unspecced.getSuggestedUsersSkeleton?aud=* rpc:app.bsky.unspecced.getSuggestionsSkeleton?aud=* rpc:app.bsky.unspecced.getTaggedSuggestions?aud=* rpc:app.bsky.unspecced.getTrendingTopics?aud=* rpc:app.bsky.unspecced.getTrends?aud=* rpc:app.bsky.unspecced.getTrendsSkeleton?aud=* rpc:app.bsky.unspecced.initAgeAssurance?aud=* rpc:app.bsky.unspecced.searchActorsSkeleton?aud=* rpc:app.bsky.unspecced.searchPostsSkeleton?aud=* rpc:app.bsky.unspecced.searchStarterPacksSkeleton?aud=* rpc:app.bsky.video.getJobStatus?aud=* rpc:app.bsky.video.getUploadLimits?aud=* rpc:app.bsky.video.uploadVideo?aud=* rpc:chat.bsky.actor.deleteAccount?aud=* rpc:chat.bsky.actor.exportAccountData?aud=* rpc:chat.bsky.convo.exportAccountData?aud=* rpc:chat.bsky.convo.acceptConvo?aud=* rpc:chat.bsky.convo.addReaction?aud=* rpc:chat.bsky.convo.deleteMessageForSelf?aud=* rpc:chat.bsky.convo.getConvo?aud=* rpc:chat.bsky.convo.getConvoAvailability?aud=* rpc:chat.bsky.convo.getConvoForMembers?aud=* rpc:chat.bsky.convo.getLog?aud=* rpc:chat.bsky.convo.getMessages?aud=* rpc:chat.bsky.convo.leaveConvo?aud=* rpc:chat.bsky.convo.listConvos?aud=* rpc:chat.bsky.convo.muteConvo?aud=* rpc:chat.bsky.convo.removeReaction?aud=* rpc:chat.bsky.convo.sendMessage?aud=* rpc:chat.bsky.convo.sendMessageBatch?aud=* rpc:chat.bsky.convo.unmuteConvo?aud=* rpc:chat.bsky.convo.updateAllRead?aud=* rpc:chat.bsky.convo.updateRead?aud=* rpc:com.atproto.moderation.createReport?aud=* rpc:com.atproto.repo.uploadBlob?aud=*", 6 + "scope": "atproto transition:generic transition:email transition:chat.bsky", 7 7 "token_endpoint_auth_method": "none", 8 8 "response_types": ["code"], 9 9 "grant_types": ["authorization_code", "refresh_token"],
+4 -131
src/state/session/oauth-web-client.ts
··· 10 10 11 11 const OAUTH_SCOPE = [ 12 12 'atproto', 13 - 'repo:*', 14 - 'blob:*/*', 15 - 'identity:handle', 16 - 'account:email?action=manage', 17 - 'account:status?action=manage', 18 - 'rpc:app.bsky.actor.getPreferences?aud=*', 19 - 'rpc:app.bsky.actor.getProfile?aud=*', 20 - 'rpc:app.bsky.actor.getProfiles?aud=*', 21 - 'rpc:app.bsky.actor.getSuggestions?aud=*', 22 - 'rpc:app.bsky.actor.putPreferences?aud=*', 23 - 'rpc:app.bsky.actor.searchActors?aud=*', 24 - 'rpc:app.bsky.actor.searchActorsTypeahead?aud=*', 25 - 'rpc:app.bsky.ageassurance.begin?aud=*', 26 - 'rpc:app.bsky.bookmark.createBookmark?aud=*', 27 - 'rpc:app.bsky.bookmark.deleteBookmark?aud=*', 28 - 'rpc:app.bsky.bookmark.getBookmarks?aud=*', 29 - 'rpc:app.bsky.contact.dismissMatch?aud=*', 30 - 'rpc:app.bsky.contact.getMatches?aud=*', 31 - 'rpc:app.bsky.contact.getSyncStatus?aud=*', 32 - 'rpc:app.bsky.contact.importContacts?aud=*', 33 - 'rpc:app.bsky.contact.removeData?aud=*', 34 - 'rpc:app.bsky.contact.startPhoneVerification?aud=*', 35 - 'rpc:app.bsky.contact.verifyPhone?aud=*', 36 - 'rpc:app.bsky.draft.createDraft?aud=*', 37 - 'rpc:app.bsky.draft.deleteDraft?aud=*', 38 - 'rpc:app.bsky.draft.getDrafts?aud=*', 39 - 'rpc:app.bsky.draft.updateDraft?aud=*', 40 - 'rpc:app.bsky.feed.describeFeedGenerator?aud=*', 41 - 'rpc:app.bsky.feed.getActorFeeds?aud=*', 42 - 'rpc:app.bsky.feed.getActorLikes?aud=*', 43 - 'rpc:app.bsky.feed.getAuthorFeed?aud=*', 44 - 'rpc:app.bsky.feed.getFeed?aud=*', 45 - 'rpc:app.bsky.feed.getFeedGenerator?aud=*', 46 - 'rpc:app.bsky.feed.getFeedGenerators?aud=*', 47 - 'rpc:app.bsky.feed.getFeedSkeleton?aud=*', 48 - 'rpc:app.bsky.feed.getLikes?aud=*', 49 - 'rpc:app.bsky.feed.getListFeed?aud=*', 50 - 'rpc:app.bsky.feed.getPostThread?aud=*', 51 - 'rpc:app.bsky.feed.getPosts?aud=*', 52 - 'rpc:app.bsky.feed.getQuotes?aud=*', 53 - 'rpc:app.bsky.feed.getRepostedBy?aud=*', 54 - 'rpc:app.bsky.feed.getSuggestedFeeds?aud=*', 55 - 'rpc:app.bsky.feed.getTimeline?aud=*', 56 - 'rpc:app.bsky.feed.searchPosts?aud=*', 57 - 'rpc:app.bsky.feed.sendInteractions?aud=*', 58 - 'rpc:app.bsky.graph.getActorStarterPacks?aud=*', 59 - 'rpc:app.bsky.graph.getBlocks?aud=*', 60 - 'rpc:app.bsky.graph.getFollowers?aud=*', 61 - 'rpc:app.bsky.graph.getFollows?aud=*', 62 - 'rpc:app.bsky.graph.getKnownFollowers?aud=*', 63 - 'rpc:app.bsky.graph.getList?aud=*', 64 - 'rpc:app.bsky.graph.getListBlocks?aud=*', 65 - 'rpc:app.bsky.graph.getListMutes?aud=*', 66 - 'rpc:app.bsky.graph.getLists?aud=*', 67 - 'rpc:app.bsky.graph.getListsWithMembership?aud=*', 68 - 'rpc:app.bsky.graph.getMutes?aud=*', 69 - 'rpc:app.bsky.graph.getRelationships?aud=*', 70 - 'rpc:app.bsky.graph.getStarterPack?aud=*', 71 - 'rpc:app.bsky.graph.getStarterPacks?aud=*', 72 - 'rpc:app.bsky.graph.getStarterPacksWithMembership?aud=*', 73 - 'rpc:app.bsky.graph.getSuggestedFollowsByActor?aud=*', 74 - 'rpc:app.bsky.graph.muteActor?aud=*', 75 - 'rpc:app.bsky.graph.muteActorList?aud=*', 76 - 'rpc:app.bsky.graph.muteThread?aud=*', 77 - 'rpc:app.bsky.graph.searchStarterPacks?aud=*', 78 - 'rpc:app.bsky.graph.unmuteActor?aud=*', 79 - 'rpc:app.bsky.graph.unmuteActorList?aud=*', 80 - 'rpc:app.bsky.graph.unmuteThread?aud=*', 81 - 'rpc:app.bsky.labeler.getServices?aud=*', 82 - 'rpc:app.bsky.notification.getPreferences?aud=*', 83 - 'rpc:app.bsky.notification.getUnreadCount?aud=*', 84 - 'rpc:app.bsky.notification.listActivitySubscriptions?aud=*', 85 - 'rpc:app.bsky.notification.listNotifications?aud=*', 86 - 'rpc:app.bsky.notification.putActivitySubscription?aud=*', 87 - 'rpc:app.bsky.notification.putPreferences?aud=*', 88 - 'rpc:app.bsky.notification.putPreferencesV2?aud=*', 89 - 'rpc:app.bsky.notification.registerPush?aud=*', 90 - 'rpc:app.bsky.notification.unregisterPush?aud=*', 91 - 'rpc:app.bsky.notification.updateSeen?aud=*', 92 - 'rpc:app.bsky.unspecced.getAgeAssuranceState?aud=*', 93 - 'rpc:app.bsky.unspecced.getConfig?aud=*', 94 - 'rpc:app.bsky.unspecced.getOnboardingSuggestedStarterPacks?aud=*', 95 - 'rpc:app.bsky.unspecced.getPopularFeedGenerators?aud=*', 96 - 'rpc:app.bsky.unspecced.getPostThreadOtherV2?aud=*', 97 - 'rpc:app.bsky.unspecced.getPostThreadV2?aud=*', 98 - 'rpc:app.bsky.unspecced.getSuggestedFeeds?aud=*', 99 - 'rpc:app.bsky.unspecced.getSuggestedFeedsSkeleton?aud=*', 100 - 'rpc:app.bsky.unspecced.getSuggestedOnboardingUsers?aud=*', 101 - 'rpc:app.bsky.unspecced.getSuggestedStarterPacks?aud=*', 102 - 'rpc:app.bsky.unspecced.getSuggestedStarterPacksSkeleton?aud=*', 103 - 'rpc:app.bsky.unspecced.getSuggestedUsers?aud=*', 104 - 'rpc:app.bsky.unspecced.getSuggestedUsersForDiscover?aud=*', 105 - 'rpc:app.bsky.unspecced.getSuggestedUsersForExplore?aud=*', 106 - 'rpc:app.bsky.unspecced.getSuggestedUsersForSeeMore?aud=*', 107 - 'rpc:app.bsky.unspecced.getSuggestedUsersSkeleton?aud=*', 108 - 'rpc:app.bsky.unspecced.getSuggestionsSkeleton?aud=*', 109 - 'rpc:app.bsky.unspecced.getTaggedSuggestions?aud=*', 110 - 'rpc:app.bsky.unspecced.getTrendingTopics?aud=*', 111 - 'rpc:app.bsky.unspecced.getTrends?aud=*', 112 - 'rpc:app.bsky.unspecced.getTrendsSkeleton?aud=*', 113 - 'rpc:app.bsky.unspecced.initAgeAssurance?aud=*', 114 - 'rpc:app.bsky.unspecced.searchActorsSkeleton?aud=*', 115 - 'rpc:app.bsky.unspecced.searchPostsSkeleton?aud=*', 116 - 'rpc:app.bsky.unspecced.searchStarterPacksSkeleton?aud=*', 117 - 'rpc:app.bsky.video.getJobStatus?aud=*', 118 - 'rpc:app.bsky.video.getUploadLimits?aud=*', 119 - 'rpc:app.bsky.video.uploadVideo?aud=*', 120 - 'rpc:chat.bsky.actor.deleteAccount?aud=*', 121 - 'rpc:chat.bsky.actor.exportAccountData?aud=*', 122 - 'rpc:chat.bsky.convo.exportAccountData?aud=*', 123 - 'rpc:chat.bsky.convo.acceptConvo?aud=*', 124 - 'rpc:chat.bsky.convo.addReaction?aud=*', 125 - 'rpc:chat.bsky.convo.deleteMessageForSelf?aud=*', 126 - 'rpc:chat.bsky.convo.getConvo?aud=*', 127 - 'rpc:chat.bsky.convo.getConvoAvailability?aud=*', 128 - 'rpc:chat.bsky.convo.getConvoForMembers?aud=*', 129 - 'rpc:chat.bsky.convo.getLog?aud=*', 130 - 'rpc:chat.bsky.convo.getMessages?aud=*', 131 - 'rpc:chat.bsky.convo.leaveConvo?aud=*', 132 - 'rpc:chat.bsky.convo.listConvos?aud=*', 133 - 'rpc:chat.bsky.convo.muteConvo?aud=*', 134 - 'rpc:chat.bsky.convo.removeReaction?aud=*', 135 - 'rpc:chat.bsky.convo.sendMessage?aud=*', 136 - 'rpc:chat.bsky.convo.sendMessageBatch?aud=*', 137 - 'rpc:chat.bsky.convo.unmuteConvo?aud=*', 138 - 'rpc:chat.bsky.convo.updateAllRead?aud=*', 139 - 'rpc:chat.bsky.convo.updateRead?aud=*', 140 - 'rpc:com.atproto.moderation.createReport?aud=*', 141 - 'rpc:com.atproto.repo.uploadBlob?aud=*', 13 + 'transition:generic', 14 + 'transition:email', 15 + 'transition:chat.bsky', 142 16 ].join(' ') 143 17 144 18 function isLoopback() { ··· 159 33 // Loopback client: encode scope and redirect_uri in the client_id URL. 160 34 // The authorization server uses hardcoded metadata for http://localhost 161 35 // client_ids. Without explicit scope, only "atproto" is granted, which 162 - // lacks the granular permissions this client needs for repo, appview, and 163 - // chat APIs. 36 + // lacks the transition scopes this client needs for appview and chat APIs. 164 37 const port = window.location.port ? `:${window.location.port}` : '' 165 38 const redirectUri = `http://127.0.0.1${port}/` 166 39 const clientId =