Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

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

fix: replace transition with granular OAuth scopes

SUPPORT TRANQUIL PDS USERS! 💖

xan.lol 0db7d147 1791592e

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