Bluesky app fork with some witchin' additions 💫

Replace Bitchsky with Witchsky

xan.lol 647d2415 4ac7a6c5

verified
Changed files
+171 -171
.tangled
__e2e__
__tests__
bskylink
src
bskyweb
docs
functions
profile
[handleOrDID]
post
modules
BlueskyClip
BlueskyNSE
Share-with-Bluesky
expo-background-notification-handler
android
src
main
java
expo
modules
backgroundnotificationhandler
ios
expo-bluesky-swiss-army
android
src
main
java
expo
modules
blueskyswissarmy
sharedprefs
ios
expo-receive-android-intents
android
src
main
java
xyz
blueskyweb
app
exporeceiveandroidintents
plugins
src
components
lib
screens
Settings
NotificationSettings
Signup
StepInfo
StarterPack
state
persisted
queries
view
web
witchsky-static-about
.github/ISSUE_TEMPLATE/bug_report.yml .tangled/ISSUE_TEMPLATE/bug_report.yml
+1 -1
.github/ISSUE_TEMPLATE/feature_request.yml .tangled/ISSUE_TEMPLATE/feature_request.yml
··· 1 1 name: "Feature Request" 2 - description: "Suggest an idea for the Bitchsky app." 2 + description: "Suggest an idea for the Witchsky app." 3 3 labels: ["feature-request"] 4 4 body: 5 5 - type: markdown
+9 -9
.github/workflows/bitchsky-build.yml .tangled/workflows/witchsky-build.yml
··· 1 - name: Build Bitchsky 1 + name: Build Witchsky 2 2 on: workflow_dispatch 3 3 4 4 jobs: 5 - bitchsky-build-android: 6 - name: Build Bitchsky for Android 5 + witchsky-build-android: 6 + name: Build Witchsky for Android 7 7 runs-on: ubuntu-latest 8 8 permissions: 9 9 contents: write ··· 40 40 41 41 - name: Rename APK 42 42 run: | 43 - mv android/app/build/outputs/apk/release/app-release.apk android/app/build/outputs/apk/release/bitchsky-v${{ github.run_number }}.apk 43 + mv android/app/build/outputs/apk/release/app-release.apk android/app/build/outputs/apk/release/witchsky-v${{ github.run_number }}.apk 44 44 45 45 - name: Upload artifact 46 46 uses: actions/upload-artifact@v4 47 47 with: 48 48 name: android 49 - path: android/app/build/outputs/apk/release/bitchsky-v${{ github.run_number }}.apk 50 - 49 + path: android/app/build/outputs/apk/release/witchsky-v${{ github.run_number }}.apk 50 + 51 51 - name: Publish release 52 52 uses: softprops/action-gh-release@v2 53 53 if: github.ref == 'refs/heads/main' 54 54 with: 55 - name: Bitchsky v${{ github.run_number }} 56 - tag_name: bitchsky-v${{ github.run_number }} 57 - files: android/app/build/outputs/apk/release/bitchsky-v${{ github.run_number }}.apk 55 + name: Witchsky v${{ github.run_number }} 56 + tag_name: witchsky-v${{ github.run_number }} 57 + files: android/app/build/outputs/apk/release/witchsky-v${{ github.run_number }}.apk
+1 -1
.gitignore
··· 120 120 # ogcard assets 121 121 bskyogcard/src/assets/fonts/noto-* 122 122 123 - # Bitchsky maybe 123 + # Witchsky maybe 124 124 .direnv 125 125 .wrangler 126 126
+27 -27
README.md
··· 1 - # Bitchsky Social App 🧙 1 + # Witchsky Social App 🧙 (WIP) 2 2 3 - Hey, bitches! This is the codebase for the Bitchsky app, based on [social.daniela.lol](https://github.com/kittibytess/deer-social) and prior [Bluesky](https://github.com/bluesky-social/social-app) forks. 3 + Hey, witches! This is the codebase for the Witchsky app, based on [social.daniela.lol](https://github.com/kittibytess/deer-social) and prior [Bluesky](https://github.com/bluesky-social/social-app) forks. 4 4 5 5 Get the app itself: 6 6 7 - - **Web: [bitchsky.app](https://bitchsky.app)** 8 - - **iOS: [Soon™](https://large-type.com/#%F0%9F%99%80)?** 9 - - **Android: [Github Releases](https://github.com/jollywhoppers/bitchsky-app/releases/latest)** 7 + - **Web: [witchsky.app](https://witchsky.app)** 8 + - **iOS: [Soon™](https://cat-bounce.com/)?** 9 + - **Android: [F-Droid repo](https://app.jolly.you/fdroid/repo)** 10 10 11 - <a href="https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://github.com/jollywhoppers/bitchsky-app/"> 11 + <a href="https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://github.com/jollywhoppers/witchsky-app/"> 12 12 <img src="https://github.com/ImranR98/Obtainium/blob/main/assets/graphics/badge_obtainium.png?raw=true" 13 13 alt="Get it on Obtainium" align="center" height="54" /></a> 14 14 15 15 ## Improvements on Bluesky 16 16 17 - - Funner name (still love you tho bsky!) 17 + - Cooler name (still love you tho bsky!) 18 18 - Nicer colors (kinda like gruvbox? not really) 19 19 - Posts are called Skeets 20 - - Share links to bitchsky.app or bsky.app 20 + - Choose between sharing witchsky.app or bsky.app links 21 21 - Embed player works with [stream.place](https://stream.place/) links! 22 - - Open skeets in PDSls and original pages from bridged posts 22 + - Open skeets in PDSls and original pages of bridged posts 23 23 - Better defaults (alt text required 😉) 24 24 - More unique repost icons 25 25 - No push notifications (may be added later) ··· 73 73 74 74 ### TODO: Xan 75 75 76 - - [ ] Update branding (especially colors and app icon) to Bitchsky 76 + - [ ] Update branding (especially colors and app icon) to Witchsky 77 77 - [ ] ./src/components/WelcomeModal.tsx (tab/hover selector) 78 78 - [ ] ./src/alf/themes.ts (improve contrast, esp. of links) 79 79 - [ ] ./src/lib/styles.ts (change likes color, remove gradient from new skeet button) 80 80 - [ ] ./src/style.css (change links color) 81 81 - [ ] ./src/view/com/util/UserAvatar.tsx (change #0070FF) 82 - - [ ] ./assets/app-icons/ (change new bksy logos to fit Bitchsky -remove from social embed!) 83 - - [ ] social embed stuff (bitchsky logo in image with jollywhoppers logo, use bitchsky icon) 82 + - [ ] ./assets/app-icons/ (change new bksy logos to fit Witchsky -remove from social embed!) 83 + - [ ] social embed stuff (witchsky logo in image with jollywhoppers logo, use witchsky icon) 84 84 - [ ] Setup App Linking for Android (.well-known w/ app package fingerprint) 85 - - [ ] Automatic PDS detection like other social-app forks (fallback/email addresses to use bitchsky.social) 85 + - [ ] Automatic PDS detection like other social-app forks (fallback/email addresses to use witchsky.social) 86 86 - [ ] Like of or repost of repost icons in notifications 87 87 - [ ] Change followed accounts [on onboarding](https://github.com/blacksky-algorithms/blacksky.community/commit/e36ee43efb4999f070860d7f70122e45b28c1e2b) 88 88 - [ ] Join date & switch accounts from composer from a fork like [deer.aylac.top](https://github.com/ayla6/deer-social-test) 89 - - [ ] Visual replies indicator like the [Firmament userstyle](https://bitchsky.app/profile/did:plc:jwhxcrf5uvl3vyw7nurecgt5/post/3m4rr3vzmak2a) (and likes?) 89 + - [ ] Visual replies indicator like the [Firmament userstyle](https://witchsky.app/profile/did:plc:jwhxcrf5uvl3vyw7nurecgt5/post/3m4rr3vzmak2a) (and likes?) 90 90 - [ ] Additional translation service providers + setting (Deepl, Kagi) 91 91 - [ ] Move Mutuals label to the follow button 92 92 - [ ] Put DeerSettings into separate subpages 93 - - [ ] After subpages for options, add [Outlinks page](https://bitchsky.app/profile/did:plc:q7suwaz53ztc4mbiqyygbn43/post/3m5zjhhshic2g) & 93 + - [ ] After subpages for options, add [Outlinks page](https://witchsky.app/profile/did:plc:q7suwaz53ztc4mbiqyygbn43/post/3m5zjhhshic2g) & 94 94 - [ ] ShareMenuItems.tsx, ShareMenuItems.web.tsx 95 95 - [ ] For profile meatball button, Open profile in PDSls & Open bridged OG fedi account page 96 96 - [ ] ProfileMenu.tsx 97 - - [ ] Bitchsky PDS and .social site (list good songs containing 'bitch' in their titles) 97 + - [ ] Witchsky PDS and .social site (list good songs containing 'bitch' in their titles) 98 98 99 99 ### Even more wishful or far off 100 100 ··· 110 110 111 111 This is a [React Native](https://reactnative.dev/) application, written in the TypeScript programming language. It builds on the `atproto` TypeScript packages (like [`@atproto/api`](https://www.npmjs.com/package/@atproto/api)), which are also open source, but in [a different git repository](https://github.com/bluesky-social/atproto). 112 112 113 - There is vestigial Go language source code (in `./bskyweb/`), for a web service that returns the React Native Web application in the social app deployment. However, it is not used in current Bitchsky deployments. 114 - For Bitchsky, the intended deployment is with a webserver that can serve static files, and reroute to `index.html` as needed. [Bitchsky](https://bitchsky.app) is currently hosted on [Cloudflare Pages](https://pages.cloudflare.com/). 113 + There is vestigial Go language source code (in `./bskyweb/`), for a web service that returns the React Native Web application in the social app deployment. However, it is not used in current Witchsky deployments. 114 + For Witchsky, the intended deployment is with a webserver that can serve static files, and reroute to `index.html` as needed. [Witchsky](https://witchsky.app) is currently hosted on [Cloudflare Pages](https://pages.cloudflare.com/). 115 115 116 116 The [Build Instructions](./docs/build.md) are a good place to get started with the app itself. If you use nix (and especially direnv) then `flake.nix` will get you a working environment for the web version of the app. 117 117 118 118 The Authenticated Transfer Protocol ("AT Protocol" or "atproto") is a decentralized social media protocol. You don't *need* to understand AT Protocol to work with this application, but it can help. 119 - You may wish to reference [resources linked in social-app](https://github.com/bluesky-social/social-app#development-resources). However, please don't harass the Bluesky team with issues or questions pertaining to Bitchsky. 119 + You may wish to reference [resources linked in social-app](https://github.com/bluesky-social/social-app#development-resources). However, please don't harass the Bluesky team with issues or questions pertaining to Witchsky. 120 120 121 - Bitchsky is a fork of the official Bluesky client, social-app. It encompasses a set of schemas and APIs built in the overall AT Protocol framework. The namespace for these "Lexicons" is `app.bsky.*`. 121 + Witchsky is a fork of the official Bluesky client, social-app. It encompasses a set of schemas and APIs built in the overall AT Protocol framework. The namespace for these "Lexicons" is `app.bsky.*`. 122 122 123 123 ## Contributions 124 124 125 - > Bitchsky is a community fork, and we'd love to merge your PR! 125 + > Witchsky is a community fork, and we'd love to merge your PR! 126 126 127 - As a rule of thumb, the best features for Bitchsky are those that have a disproportionately positive impact on the user experience compared to the maintenance overhead. Unlike some open source projects, since Bitchsky is a soft fork, any features (patches) we add on top of upstream social-app need to be maintained. For example, a change to the way skeets are composed may be very invasive, touching lots of code across the codebase. If upstream refactors this component, we will need to rewrite this feature to be compatible or drop it from the client. 127 + As a rule of thumb, the best features for Witchsky are those that have a disproportionately positive impact on the user experience compared to the maintenance overhead. Unlike some open source projects, since Witchsky is a soft fork, any features (patches) we add on top of upstream social-app need to be maintained. For example, a change to the way skeets are composed may be very invasive, touching lots of code across the codebase. If upstream refactors this component, we will need to rewrite this feature to be compatible or drop it from the client. 128 128 129 129 For this reason, only features that require changing only a small amount of code from upstream should be considered. 130 130 131 - Without an overriding motivation, opinionated features should exist behind a toggle that is not enabled by default. This allows Bitchsky to cater to as many users as possible. 131 + Without an overriding motivation, opinionated features should exist behind a toggle that is not enabled by default. This allows Witchsky to cater to as many users as possible. 132 132 133 133 ### Guidelines 134 134 ··· 148 148 149 149 Please be sure to: 150 150 151 - - Change all branding in the repository and UI to clearly differentiate from Bitchsky. 151 + - Change all branding in the repository and UI to clearly differentiate from Witchsky. 152 152 - Change any support links (feedback, email, terms of service, issue tracker, etc) to your own systems. 153 153 154 154 ## Self hosting & personal builds 155 155 156 - Self hosting is great! It is our intention that Bitchsky is easy to self host and build on your own. If you host your own instance of Bitchsky, or make your own builds, please make some level of effort to clarify that it is not an "official" build or instance. This can be in the form of a different domain or branding, but can also be as simple as not advertising your hosted instance or builds as "official" releases. 156 + Self hosting is great! It is our intention that Witchsky is easy to self host and build on your own. If you host your own instance of Witchsky, or make your own builds, please make some level of effort to clarify that it is not an "official" build or instance. This can be in the form of a different domain or branding, but can also be as simple as not advertising your hosted instance or builds as "official" releases. 157 157 158 158 ## Security disclosures 159 159 160 160 If you discover any security issues, please privately disclose them to [xan.lol](https://xan.lol/). 161 - If the issue pertains to infastructure, code, or systems outside the scope of Bitchsky, please refer to the [disclosure guidelines on social-app](https://github.com/bluesky-social/social-app#security-disclosures) if it is hosted by Bluesky PBC. Otherwise, reference the security policy of that system as applicable <3 161 + If the issue pertains to infastructure, code, or systems outside the scope of Witchsky, please refer to the [disclosure guidelines on social-app](https://github.com/bluesky-social/social-app#security-disclosures) if it is hosted by Bluesky PBC. Otherwise, reference the security policy of that system as applicable <3 162 162 163 163 ## License (MIT) 164 164 ··· 168 168 169 169 ## P.S. 170 170 171 - We ❤️ you and all of the ways you support us. Thank you for making Bluesky & Bitchsky so great! ^.^ 171 + We ❤️ you and all of the ways you support us. Thank you for making Bluesky & Witchsky so great! ^.^
+1 -1
__e2e__/flows/composer-self-label.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/composer.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/create-account.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/curate-lists.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/feed-reorder.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/home-screen.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/login.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/mod-lists.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/onboarding-avatar-creator.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/onboarding.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/post-report-flow.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/profile-screen-edit.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/profile-screen.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/report-dialog/account.default.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../../setupServer.js
+1 -1
__e2e__/flows/report-dialog/post.default.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../../setupServer.js
+1 -1
__e2e__/flows/report-dialog/post.edit-reason.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../../setupServer.js
+1 -1
__e2e__/flows/report-dialog/post.reason-other.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../../setupServer.js
+1 -1
__e2e__/flows/search-screen.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/shared-prefs.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/thread-muting.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/flows/thread-screen.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - runScript: 4 4 file: ../setupServer.js
+1 -1
__e2e__/perf-test.yml
··· 1 1 # flow.yaml 2 2 3 - appId: app.bitchsky 3 + appId: app.witchsky 4 4 --- 5 5 - launchApp 6 6 # Login
+2 -2
__e2e__/setupApp.yml
··· 1 - appId: app.bitchsky 1 + appId: app.witchsky 2 2 --- 3 3 - launchApp: 4 - appId: "app.bitchsky" 4 + appId: "app.witchsky" 5 5 clearState: true 6 6 - waitForAnimationToEnd 7 7 - tapOn: "http://localhost:8081"
+1 -1
__tests__/lib/string.test.ts
··· 981 981 982 982 describe('createStarterPackGooglePlayUri', () => { 983 983 const base = 984 - 'https://play.google.com/store/apps/details?id=app.bitchsky&referrer=utm_source%3Dbluesky%26utm_medium%3Dstarterpack%26utm_content%3Dstarterpack_' 984 + 'https://play.google.com/store/apps/details?id=app.witchsky&referrer=utm_source%3Dbluesky%26utm_medium%3Dstarterpack%26utm_content%3Dstarterpack_' 985 985 986 986 it('returns valid google play uri when input is valid', () => { 987 987 expect(createStarterPackGooglePlayUri('name', 'rkey')).toEqual(
+14 -14
app.config.js
··· 18 18 const IS_DEV = !IS_TESTFLIGHT || !IS_PRODUCTION 19 19 20 20 const ASSOCIATED_DOMAINS = [ 21 - 'applinks:bitchsky.app', 21 + 'applinks:witchsky.app', 22 22 // When testing local services, enter an ngrok (et al) domain here. It must use a standard HTTP/HTTPS port. 23 23 ...(IS_DEV || IS_TESTFLIGHT ? [] : []), 24 24 ] ··· 36 36 return { 37 37 expo: { 38 38 version: VERSION, 39 - name: 'Bitchsky', 40 - slug: 'bitchsky', 41 - scheme: ['bluesky', 'bitchsky'], 39 + name: 'Witchsky', 40 + slug: 'witchsky', 41 + scheme: ['bluesky', 'witchsky'], 42 42 // owner: 'blueskysocial', 43 43 // owner: 'neema.brown', 44 44 runtimeVersion: { ··· 50 50 newArchEnabled: false, 51 51 ios: { 52 52 supportsTablet: false, 53 - bundleIdentifier: 'app.bitchsky', 53 + bundleIdentifier: 'app.witchsky', 54 54 config: { 55 55 usesNonExemptEncryption: false, 56 56 }, ··· 68 68 'Used to save images to your library.', 69 69 NSPhotoLibraryUsageDescription: 70 70 'Used for profile pictures, skeets, and other kinds of content', 71 - CFBundleSpokenName: 'bitchsky.app', 71 + CFBundleSpokenName: 'witchsky.app', 72 72 CFBundleLocalizations: [ 73 73 'en', 74 74 'an', ··· 117 117 entitlements: { 118 118 'com.apple.developer.kernel.increased-memory-limit': true, 119 119 'com.apple.developer.kernel.extended-virtual-addressing': true, 120 - 'com.apple.security.application-groups': 'group.app.bitchsky', 120 + 'com.apple.security.application-groups': 'group.app.witchsky', 121 121 }, 122 122 privacyManifests: { 123 123 NSPrivacyCollectedDataTypes: [ ··· 186 186 backgroundColor: '#af5f5f', 187 187 }, 188 188 googleServicesFile: './google-services.json', 189 - package: 'app.bitchsky', 189 + package: 'app.witchsky', 190 190 intentFilters: [ 191 191 { 192 192 action: 'VIEW', ··· 194 194 data: [ 195 195 { 196 196 scheme: 'https', 197 - host: 'bitchsky.app', 197 + host: 'witchsky.app', 198 198 }, 199 199 { 200 200 scheme: 'https', ··· 425 425 // appExtensions: [ 426 426 // { 427 427 // targetName: 'Share-with-Bluesky', 428 - // bundleIdentifier: 'app.bitchsky.Share-with-Bluesky', 428 + // bundleIdentifier: 'app.witchsky.Share-with-Bluesky', 429 429 // entitlements: { 430 430 // 'com.apple.security.application-groups': [ 431 - // 'group.app.bitchsky', 431 + // 'group.app.witchsky', 432 432 // ], 433 433 // }, 434 434 // }, 435 435 // { 436 436 // targetName: 'BlueskyNSE', 437 - // bundleIdentifier: 'app.bitchsky.BlueskyNSE', 437 + // bundleIdentifier: 'app.witchsky.BlueskyNSE', 438 438 // entitlements: { 439 439 // 'com.apple.security.application-groups': [ 440 - // 'group.app.bitchsky', 440 + // 'group.app.witchsky', 441 441 // ], 442 442 // }, 443 443 // }, 444 444 // { 445 445 // targetName: 'BlueskyClip', 446 - // bundleIdentifier: 'app.bitchsky.AppClip', 446 + // bundleIdentifier: 'app.witchsky.AppClip', 447 447 // }, 448 448 // ], 449 449 },
+3 -3
bitchsky-static-about/index.html witchsky-static-about/index.html
··· 7 7 name="viewport" 8 8 content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1.00001, viewport-fit=cover" 9 9 /> 10 - <title>About — Bitchsky</title> 11 - <meta http-equiv="refresh" content="0;url=https://github.com/jollywhoppers/bitchsky-app"> 10 + <title>About — Witchsky</title> 11 + <meta http-equiv="refresh" content="0;url=https://tangled.org/jollywhoppers.com/witchsky.app/"> 12 12 13 13 <link rel="preload" as="font" type="font/woff2" href="/static/media/InterVariable.c504db5c06caaf7cdfba.woff2" crossorigin> 14 14 ··· 16 16 <link rel="stylesheet" href="sakura.css" type="text/css"> 17 17 </head> 18 18 <script type="text/javascript"> 19 - window.location.href = "https://github.com/jollywhoppers/bitchsky-app"; 19 + window.location.href = "https://tangled.org/jollywhoppers.com/witchsky.app/"; 20 20 </script> 21 21 <body> 22 22 <h1>Redirecting to GitHub README...</h1>
bitchsky-static-about/normalize.css witchsky-static-about/normalize.css
+10 -10
bitchsky-static-about/privacy.html witchsky-static-about/privacy.html
··· 11 11 name="viewport" 12 12 content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1.00001, viewport-fit=cover" 13 13 /> 14 - <title>Privacy Policy — Bitchsky</title> 14 + <title>Privacy Policy — Witchsky</title> 15 15 16 16 <link rel="preload" as="font" type="font/woff2" href="/static/media/InterVariable.c504db5c06caaf7cdfba.woff2" crossorigin> 17 17 ··· 22 22 <body> 23 23 24 24 25 - <h1>Bitchsky Privacy Policy</h1> 25 + <h1>Witchsky Privacy Policy</h1> 26 26 27 27 <p><em><strong>Last Updated:</strong> May 07, 2025</em></p> 28 28 29 - <p>Welcome to Bitchsky. This privacy policy explains our approach to your data when you use our application.</p> 29 + <p>Welcome to Witchsky. This privacy policy explains our approach to your data when you use our application.</p> 30 30 31 - <h2>No Data Collection by Bitchsky</h2> 32 - <p><strong>The Bitchsky application itself does not collect, store, track, or share any of your personal information or user data.</strong> We do not operate servers that store your account details, posts, or activity logs.</p> 31 + <h2>No Data Collection by Witchsky</h2> 32 + <p><strong>The Witchsky application itself does not collect, store, track, or share any of your personal information or user data.</strong> We do not operate servers that store your account details, posts, or activity logs.</p> 33 33 <p>Our application functions solely as a client interface to interact with the underlying Bluesky social network (AT Protocol).</p> 34 34 35 35 <h2>Reliance on Third-Party Services (AppView and PDS)</h2> 36 - <p>When you use Bitchsky, you connect to the Bluesky network through a specific AppView and your chosen Personal Data Server (PDS). These services are responsible for storing and managing your account information, posts, social graph, and other associated data.</p> 37 - <p><strong>Your data handling and privacy are governed by the Terms of Service and Privacy Policies of the specific AppView and PDS you use.</strong> Bitchsky simply acts on your behalf to communicate with these services based on the credentials you provide locally on your device.</p> 36 + <p>When you use Witchsky, you connect to the Bluesky network through a specific AppView and your chosen Personal Data Server (PDS). These services are responsible for storing and managing your account information, posts, social graph, and other associated data.</p> 37 + <p><strong>Your data handling and privacy are governed by the Terms of Service and Privacy Policies of the specific AppView and PDS you use.</strong> Witchsky simply acts on your behalf to communicate with these services based on the credentials you provide locally on your device.</p> 38 38 <p>We strongly recommend you review the policies of your chosen PDS provider and the AppView you are using. For reference, the Privacy Policy for the default Bluesky service (AppView provided by <a href="https://bsky.social" target="_blank" rel="noopener noreferrer">bsky.social</a>) can be found here:</p> 39 39 <p><a href="https://bsky.social/about/support/privacy-policy" target="_blank" rel="noopener noreferrer">https://bsky.social/about/support/privacy-policy</a></p> 40 40 41 41 <h2>Data Stored Locally on Your Device</h2> 42 - <p>To function, Bitchsky may store your login credentials or temporary session information on your own device. This data is not accessed by or transmitted to us.</p> 42 + <p>To function, Witchsky may store your login credentials or temporary session information on your own device. This data is not accessed by or transmitted to us.</p> 43 43 44 44 <h2>Cookies and Analytics</h2> 45 - <p>Bitchsky does not use cookies or any tracking analytics.</p> 45 + <p>Witchsky does not use cookies or any tracking analytics.</p> 46 46 47 47 <h2>Changes to This Policy</h2> 48 48 <p>We may update this policy. If we do, we will update the "Effective Date" at the top of this page.</p> 49 49 50 50 <h2>Contact Us</h2> 51 - <p>If you have questions specifically about the functionality of the Bitchsky application itself (and not about data managed by your PDS or AppView), please email <a href="mailto:contact@jollywhoppers.com" target="_blank" rel="noopener noreferrer">contact@jollywhoppers.com</a>.</p> 51 + <p>If you have questions specifically about the functionality of the Witchsky application itself (and not about data managed by your PDS or AppView), please email <a href="mailto:contact@jollywhoppers.com" target="_blank" rel="noopener noreferrer">contact@jollywhoppers.com</a>.</p> 52 52 53 53 </body> 54 54 </html>
bitchsky-static-about/sakura.css witchsky-static-about/sakura.css
+7 -7
bitchsky-static-about/tos.html witchsky-static-about/tos.html
··· 11 11 name="viewport" 12 12 content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1.00001, viewport-fit=cover" 13 13 /> 14 - <title>Terms of Service — Bitchsky</title> 14 + <title>Terms of Service — Witchsky</title> 15 15 16 16 <link rel="preload" as="font" type="font/woff2" href="/static/media/InterVariable.c504db5c06caaf7cdfba.woff2" crossorigin> 17 17 ··· 22 22 <body> 23 23 24 24 25 - <h1>Terms of Service for Bitchsky</h1> 25 + <h1>Terms of Service for Witchsky</h1> 26 26 27 27 <p><em><strong>Last Updated:</strong> May 07, 2025</em></p> 28 28 29 29 <h2>Introduction</h2> 30 - <p>Welcome to Bitchsky! These Terms of Service ("Terms") govern your use of the Bitchsky application ("App"). By accessing or using the App, you agree to be bound by these Terms.</p> 30 + <p>Welcome to Witchsky! These Terms of Service ("Terms") govern your use of the Witchsky application ("App"). By accessing or using the App, you agree to be bound by these Terms.</p> 31 31 32 32 <h2>Your Agreement</h2> 33 - <p>Using Bitchsky signifies your acceptance of these Terms. Please also review our <a href="/privacy">Privacy Policy</a>, which explains how we handle data related to the App itself.</p> 33 + <p>Using Witchsky signifies your acceptance of these Terms. Please also review our <a href="/privacy">Privacy Policy</a>, which explains how we handle data related to the App itself.</p> 34 34 35 35 <h2>Relationship to Other Services and Platforms</h2> 36 - <p>Bitchsky functions as a client or interface. It allows you to interact with decentralized social media protocols, instances, or servers (your "AppView" or "Personal Data Server" / "PDS").</p> 37 - <p><strong>Important:</strong> Bitchsky does not host your data or control the underlying networks or servers you connect to. Your interaction with these third-party services, including the content you post and view, is governed by the Terms of Service, acceptable use policies, and privacy policies of the specific AppView and/or PDS you choose to use.</p> 36 + <p>Witchsky functions as a client or interface. It allows you to interact with decentralized social media protocols, instances, or servers (your "AppView" or "Personal Data Server" / "PDS").</p> 37 + <p><strong>Important:</strong> Witchsky does not host your data or control the underlying networks or servers you connect to. Your interaction with these third-party services, including the content you post and view, is governed by the Terms of Service, acceptable use policies, and privacy policies of the specific AppView and/or PDS you choose to use.</p> 38 38 <p>You are responsible for understanding and complying with the terms of those external services.</p> 39 39 40 40 <p>We strongly recommend you review the policies of your chosen PDS provider and the AppView you are using. For reference, the Terms of Service for the default Bluesky service (AppView provided by <a href="https://bsky.social" target="_blank" rel="noopener noreferrer">bsky.social</a>) can be found here: </p> 41 41 <p><a href="https://bsky.social/about/support/tos" target="_blank" rel="noopener noreferrer">https://bsky.social/about/support/tos</a></p> 42 42 43 43 <h2>User Conduct</h2> 44 - <p>Your conduct while using Bitchsky must comply with the terms and rules set forth by the AppView and PDS you are connected to. Bitchsky is merely a tool to access these services, and Jollywhoppers is not responsible for enforcing the rules of those platforms or for the content accessed through them.</p> 44 + <p>Your conduct while using Witchsky must comply with the terms and rules set forth by the AppView and PDS you are connected to. Witchsky is merely a tool to access these services, and Jollywhoppers is not responsible for enforcing the rules of those platforms or for the content accessed through them.</p> 45 45 46 46 <h2>Disclaimer of Warranty</h2> 47 47 <p>The App is provided "AS IS" and "AS AVAILABLE," without warranty of any kind, express or implied. Forsyth Peak LLC does not warrant that the App will meet your requirements, be available uninterrupted, secure, or error-free.</p>
+2 -2
bskylink/src/routes/siteAssociation.ts
··· 9 9 apps: [], 10 10 details: [ 11 11 { 12 - appID: 'B3LX46C5HS.app.bitchsky', 12 + appID: 'B3LX46C5HS.app.witchsky', 13 13 paths: ['*'], 14 14 }, 15 15 ], 16 16 }, 17 17 appclips: { 18 - apps: ['B3LX46C5HS.app.bitchsky.AppClip'], 18 + apps: ['B3LX46C5HS.app.witchsky.AppClip'], 19 19 }, 20 20 }) 21 21 })
+1 -1
bskyweb/cmd/bskyweb/server.go
··· 413 413 func (srv *Server) Download(c echo.Context) error { 414 414 ua := c.Request().UserAgent() 415 415 if strings.Contains(ua, "Android") { 416 - return c.Redirect(http.StatusFound, "https://play.google.com/store/apps/details?id=app.bitchsky") 416 + return c.Redirect(http.StatusFound, "https://play.google.com/store/apps/details?id=app.witchsky") 417 417 } 418 418 419 419 if strings.Contains(ua, "iPhone") || strings.Contains(ua, "iPad") || strings.Contains(ua, "iPod") {
+2 -2
bskyweb/static/.well-known/apple-app-site-association
··· 2 2 "applinks": { 3 3 "details": [ 4 4 { 5 - "appID": "B3LX46C5HS.app.bitchsky", 5 + "appID": "B3LX46C5HS.app.witchsky", 6 6 "paths": [ 7 7 "*" 8 8 ] ··· 10 10 ] 11 11 }, 12 12 "appclips": { 13 - "apps": ["B3LX46C5HS.app.bitchsky.AppClip"] 13 + "apps": ["B3LX46C5HS.app.witchsky.AppClip"] 14 14 } 15 15 }
+1 -1
bskyweb/static/.well-known/assetlinks.json
··· 3 3 "relation": ["delegate_permission/common.handle_all_urls"], 4 4 "target": { 5 5 "namespace": "android_app", 6 - "package_name": "app.bitchsky", 6 + "package_name": "app.witchsky", 7 7 "sha256_cert_fingerprints": 8 8 ["FD:FB:58:6B:0A:8A:10:E8:F5:2E:BE:8E:AB:5C:78:C1:C5:91:FD:8F:F9:46:CB:0C:52:5F:B4:F8:5B:79:96:C1"] 9 9 }
+3 -3
bskyweb/templates/base.html
··· 92 92 <link rel="icon" type="image/png" sizes="16x16" href="{{ staticCDNHost }}/static/favicon-16x16.png"> 93 93 <link rel="mask-icon" href="{{ staticCDNHost }}/static/safari-pinned-tab.svg" color="#af5f5f"> 94 94 <meta name="theme-color"> 95 - <meta name="application-name" content="Bitchsky"> 95 + <meta name="application-name" content="Witchsky"> 96 96 <meta name="generator" content="bskyweb"> 97 - <meta property="og:site_name" content="Bitchsky Social"> 97 + <meta property="og:site_name" content="Witchsky Social"> 98 98 <meta property="og:logo" content="{{ favicon }}"> 99 99 <meta name="twitter:site" content="@bluesky" /> 100 100 <link type="application/activity+json" href="" /> ··· 106 106 <div id="root"> 107 107 <div id="splash"> 108 108 <!-- Bluesky SVG --> 109 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 360 320"><path fill="#0085ff" d="M180 142c-16.3-31.7-60.7-90.8-102-120C38.5-5.9 23.4-1 13.5 3.4 2.1 8.6 0 26.2 0 36.5c0 10.4 5.7 84.8 9.4 97.2 12.2 41 55.7 55 95.7 50.5-58.7 8.6-110.8 30-42.4 106.1 75.1 77.9 103-16.7 117.3-64.6 14.3 48 30.8 139 116 64.6 64-64.6 17.6-97.5-41.1-106.1 40 4.4 83.5-9.5 95.7-50.5 3.7-12.4 9.4-86.8 9.4-97.2 0-10.3-2-27.9-13.5-33C336.5-1 321.5-6 282 22c-41.3 29.2-85.7 88.3-102 120Z"/></svg><!-- TODO: Xan: Replace with Bitchsky logo --> 109 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 360 320"><path fill="#0085ff" d="M180 142c-16.3-31.7-60.7-90.8-102-120C38.5-5.9 23.4-1 13.5 3.4 2.1 8.6 0 26.2 0 36.5c0 10.4 5.7 84.8 9.4 97.2 12.2 41 55.7 55 95.7 50.5-58.7 8.6-110.8 30-42.4 106.1 75.1 77.9 103-16.7 117.3-64.6 14.3 48 30.8 139 116 64.6 64-64.6 17.6-97.5-41.1-106.1 40 4.4 83.5-9.5 95.7-50.5 3.7-12.4 9.4-86.8 9.4-97.2 0-10.3-2-27.9-13.5-33C336.5-1 321.5-6 282 22c-41.3 29.2-85.7 88.3-102 120Z"/></svg><!-- TODO: Xan: Replace with Witchsky logo --> 110 110 </div> 111 111 </div> 112 112
+1 -1
bskyweb/templates/starterpack.html
··· 1 1 {% extends "base.html" %} 2 2 3 3 {% block html_head_extra -%} 4 - <meta name="apple-itunes-app" content="app-id=app.bitchsky, app-clip-bundle-id=app.bitchsky.AppClip, app-clip-display=card"> 4 + <meta name="apple-itunes-app" content="app-id=app.witchsky, app-clip-bundle-id=app.witchsky.AppClip, app-clip-display=card"> 5 5 {%- if requestURI %} 6 6 <meta property="og:url" content="{{ requestURI }}"> 7 7 {% endif -%}
+4 -4
docs/deploy-ota.md
··· 60 60 ```sh 61 61 > npx eas build:version:set -p ios 62 62 > 63 - > Project @blueskysocial/bluesky with bundle identifier "app.bitchsky" is configured with buildNumber 1011. 63 + > Project @blueskysocial/bluesky with bundle identifier "app.witchsky" is configured with buildNumber 1011. 64 64 > ✔ What version would you like to set? … 1009 65 65 > 66 66 > npx eas build:version:set -p android 67 67 > 68 - > Project @blueskysocial/bluesky with application ID "app.bitchsky" is configured with versionCode 641. 68 + > Project @blueskysocial/bluesky with application ID "app.witchsky" is configured with versionCode 641. 69 69 > ✔ What version would you like to set? … 639 70 70 ``` 71 71 ··· 124 124 ```sh 125 125 > npx eas build:version:set -p ios 126 126 > 127 - > Project @blueskysocial/bluesky with bundle identifier "app.bitchsky" is configured with buildNumber 1009. 127 + > Project @blueskysocial/bluesky with bundle identifier "app.witchsky" is configured with buildNumber 1009. 128 128 > ✔ What version would you like to set? … 1011 129 129 > 130 130 > npx eas build:version:set -p android 131 131 > 132 - > Project @blueskysocial/bluesky with application ID "app.bitchsky" is configured with versionCode 639. 132 + > Project @blueskysocial/bluesky with application ID "app.witchsky" is configured with versionCode 639. 133 133 > ✔ What version would you like to set? … 641 134 134 ``` 135 135
+1 -1
functions/profile/[handleOrDID].ts
··· 85 85 : '' 86 86 element.append( 87 87 html` 88 - <meta property="og:site_name" content="Bitchsky" /> 88 + <meta property="og:site_name" content="Witchsky" /> 89 89 <meta property="og:type" content="profile" /> 90 90 <meta property="profile:username" content="${view.handle}" /> 91 91 <meta property="og:url" content="${this.url}" />
+1 -1
functions/profile/[handleOrDID]/post/[rkey].ts
··· 144 144 145 145 element.append( 146 146 html` 147 - <meta property="og:site_name" content="Bitchsky" /> 147 + <meta property="og:site_name" content="Witchsky" /> 148 148 <meta property="og:type" content="article" /> 149 149 <meta property="profile:username" content="${author.handle}" /> 150 150 <meta property="og:url" content="${this.url}" />
+1 -1
google-services.json.example
··· 9 9 "client_info": { 10 10 "mobilesdk_app_id": "1:123456789000:android:f1bf012572b04063", 11 11 "android_client_info": { 12 - "package_name": "app.bitchsky" 12 + "package_name": "app.witchsky" 13 13 } 14 14 }, 15 15 "oauth_client": [
+1 -1
justfile
··· 42 42 cp -r bskyweb/static/iframe/ web-build/iframe 43 43 44 44 # copy our static pages over! 45 - cp -r bitchsky-static-about web-build/about 45 + cp -r witchsky-static-about web-build/about 46 46 47 47 # temporarily copy over out bootleg config.txt to simulate geolocation 48 48 cp config.txt web-build/
+1 -1
modules/BlueskyClip/ViewController.swift
··· 3 3 import StoreKit 4 4 5 5 class ViewController: UIViewController, WKScriptMessageHandler, WKNavigationDelegate { 6 - let defaults = UserDefaults(suiteName: "group.app.bitchsky") 6 + let defaults = UserDefaults(suiteName: "group.app.witchsky") 7 7 8 8 var window: UIWindow 9 9 var webView: WKWebView?
+1 -1
modules/BlueskyNSE/BlueskyNSE.entitlements
··· 4 4 <dict> 5 5 <key>com.apple.security.application-groups</key> 6 6 <array> 7 - <string>group.app.bitchsky</string> 7 + <string>group.app.witchsky</string> 8 8 </array> 9 9 </dict> 10 10 </plist>
+1 -1
modules/BlueskyNSE/NotificationService.swift
··· 1 1 import UserNotifications 2 2 import UIKit 3 3 4 - let APP_GROUP = "group.app.bitchsky" 4 + let APP_GROUP = "group.app.witchsky" 5 5 typealias ContentHandler = (UNNotificationContent) -> Void 6 6 7 7 // This extension allows us to do some processing of the received notification
+1 -1
modules/Share-with-Bluesky/Share-with-Bluesky.entitlements
··· 4 4 <dict> 5 5 <key>com.apple.security.application-groups</key> 6 6 <array> 7 - <string>group.app.bitchsky</string> 7 + <string>group.app.witchsky</string> 8 8 </array> 9 9 </dict> 10 10 </plist>
+1 -1
modules/Share-with-Bluesky/ShareViewController.swift
··· 172 172 } 173 173 174 174 private func getTempUrl(ext: String) -> URL? { 175 - if let dir = FileManager().containerURL(forSecurityApplicationGroupIdentifier: "group.app.bitchsky") { 175 + if let dir = FileManager().containerURL(forSecurityApplicationGroupIdentifier: "group.app.witchsky") { 176 176 return URL(string: "\(dir.absoluteString)\(ProcessInfo.processInfo.globallyUniqueString).\(ext)")! 177 177 } 178 178 return nil
+1 -1
modules/expo-background-notification-handler/android/src/main/java/expo/modules/backgroundnotificationhandler/NotificationPrefs.kt
··· 18 18 private val context: Context?, 19 19 ) { 20 20 private val prefs = 21 - context?.getSharedPreferences("app.bitchsky", Context.MODE_PRIVATE) 21 + context?.getSharedPreferences("app.witchsky", Context.MODE_PRIVATE) 22 22 ?: throw Error("Context is null") 23 23 24 24 fun initialize() {
+1 -1
modules/expo-background-notification-handler/ios/ExpoBackgroundNotificationHandlerModule.swift
··· 1 1 import ExpoModulesCore 2 2 3 - let APP_GROUP = "group.app.bitchsky" 3 + let APP_GROUP = "group.app.witchsky" 4 4 5 5 let DEFAULTS: [String: Any] = [ 6 6 "playSoundChat": true,
+1 -1
modules/expo-bluesky-swiss-army/android/src/main/java/expo/modules/blueskyswissarmy/sharedprefs/SharedPrefs.kt
··· 32 32 ): SharedPreferences { 33 33 if (instance == null) { 34 34 Log.d(NAME, "No preferences instance found, creating one.") 35 - instance = context.getSharedPreferences("app.bitchsky", Context.MODE_PRIVATE) 35 + instance = context.getSharedPreferences("app.witchsky", Context.MODE_PRIVATE) 36 36 } 37 37 38 38 val safeInstance = instance ?: throw Error("Preferences is null: $info")
+1 -1
modules/expo-bluesky-swiss-army/ios/SharedPrefs/ExpoBlueskySharedPrefsModule.swift
··· 2 2 import ExpoModulesCore 3 3 4 4 public class ExpoBlueskySharedPrefsModule: Module { 5 - let defaults = UserDefaults(suiteName: "group.app.bitchsky") 5 + let defaults = UserDefaults(suiteName: "group.app.witchsky") 6 6 7 7 func getDefaults(_ info: String = "(no info)") -> UserDefaults? { 8 8 guard let defaults = self.defaults else {
+1 -1
modules/expo-bluesky-swiss-army/ios/SharedPrefs/SharedPrefs.swift
··· 3 3 public class SharedPrefs { 4 4 public static let shared = SharedPrefs() 5 5 6 - private let defaults = UserDefaults(suiteName: "group.app.bitchsky") 6 + private let defaults = UserDefaults(suiteName: "group.app.witchsky") 7 7 8 8 init() { 9 9 if defaults == nil {
+2 -2
modules/expo-receive-android-intents/android/build.gradle
··· 2 2 apply plugin: 'kotlin-android' 3 3 apply plugin: 'maven-publish' 4 4 5 - group = 'app.bitchsky.exporeceiveandroidintents' 5 + group = 'app.witchsky.exporeceiveandroidintents' 6 6 version = '0.4.1' 7 7 8 8 buildscript { ··· 65 65 } 66 66 } 67 67 68 - namespace "app.bitchsky.exporeceiveandroidintents" 68 + namespace "app.witchsky.exporeceiveandroidintents" 69 69 defaultConfig { 70 70 minSdkVersion safeExtGet("minSdkVersion", 21) 71 71 targetSdkVersion safeExtGet("targetSdkVersion", 34)
+1 -1
modules/expo-receive-android-intents/android/src/main/java/xyz/blueskyweb/app/exporeceiveandroidintents/ExpoReceiveAndroidIntentsModule.kt
··· 1 - package app.bitchsky.exporeceiveandroidintents 1 + package app.witchsky.exporeceiveandroidintents 2 2 3 3 import android.content.Intent 4 4 import android.graphics.Bitmap
+1 -1
modules/expo-receive-android-intents/expo-module.config.json
··· 1 1 { 2 2 "platforms": ["android"], 3 3 "android": { 4 - "modules": ["app.bitchsky.exporeceiveandroidintents.ExpoReceiveAndroidIntentsModule"] 4 + "modules": ["app.witchsky.exporeceiveandroidintents.ExpoReceiveAndroidIntentsModule"] 5 5 } 6 6 }
+2 -2
package.json
··· 1 1 { 2 - "name": "bitchsky-app", 2 + "name": "witchsky-app", 3 3 "version": "1.110.1", 4 4 "private": true, 5 5 "engines": { ··· 52 52 "e2e:run": "maestro test __e2e__", 53 53 "perf:test": "NODE_ENV=test maestro test", 54 54 "perf:test:run": "NODE_ENV=test maestro test __e2e__/perf-test.yml", 55 - "perf:test:measure": "NODE_ENV=test flashlight test --bundleId app.bitchsky --testCommand \"yarn perf:test\" --duration 150000 --resultsFilePath .perf/results.json", 55 + "perf:test:measure": "NODE_ENV=test flashlight test --bundleId app.witchsky --testCommand \"yarn perf:test\" --duration 150000 --resultsFilePath .perf/results.json", 56 56 "perf:test:results": "NODE_ENV=test flashlight report .perf/results.json", 57 57 "perf:measure": "NODE_ENV=test flashlight measure", 58 58 "intl:build": "yarn intl:extract:all && yarn intl:compile",
+1 -1
plugins/notificationsExtension/withAppEntitlements.js
··· 4 4 // eslint-disable-next-line no-shadow 5 5 return withEntitlementsPlist(config, async config => { 6 6 config.modResults['com.apple.security.application-groups'] = [ 7 - `group.app.bitchsky`, 7 + `group.app.witchsky`, 8 8 ] 9 9 return config 10 10 })
+1 -1
plugins/notificationsExtension/withExtensionEntitlements.js
··· 13 13 ) 14 14 15 15 const notificationsExtensionEntitlements = { 16 - 'com.apple.security.application-groups': [`group.app.bitchsky`], 16 + 'com.apple.security.application-groups': [`group.app.witchsky`], 17 17 } 18 18 19 19 fs.mkdirSync(path.dirname(extensionEntitlementsPath), {
+1 -1
plugins/shareExtension/withAppEntitlements.js
··· 4 4 // eslint-disable-next-line no-shadow 5 5 return withEntitlementsPlist(config, async config => { 6 6 config.modResults['com.apple.security.application-groups'] = [ 7 - `group.app.bitchsky`, 7 + `group.app.witchsky`, 8 8 ] 9 9 return config 10 10 })
+1 -1
plugins/shareExtension/withExtensionEntitlements.js
··· 13 13 ) 14 14 15 15 const shareExtensionEntitlements = { 16 - 'com.apple.security.application-groups': [`group.app.bitchsky`], 16 + 'com.apple.security.application-groups': [`group.app.witchsky`], 17 17 } 18 18 19 19 fs.mkdirSync(path.dirname(extensionEntitlementsPath), {
+1 -1
plugins/starterPackAppClipExtension/withAppEntitlements.js
··· 4 4 // eslint-disable-next-line no-shadow 5 5 return withEntitlementsPlist(config, async config => { 6 6 config.modResults['com.apple.security.application-groups'] = [ 7 - `group.app.bitchsky`, 7 + `group.app.witchsky`, 8 8 ] 9 9 config.modResults[ 10 10 'com.apple.developer.associated-appclip-app-identifiers'
+1 -1
plugins/starterPackAppClipExtension/withClipEntitlements.js
··· 13 13 ) 14 14 15 15 const appClipEntitlements = { 16 - 'com.apple.security.application-groups': [`group.app.bitchsky`], 16 + 'com.apple.security.application-groups': [`group.app.witchsky`], 17 17 'com.apple.developer.parent-application-identifiers': [ 18 18 `$(AppIdentifierPrefix)${config.ios.bundleIdentifier}`, 19 19 ],
+1 -1
src/components/WelcomeModal.tsx
··· 112 112 a.user_select_none, 113 113 {color: '#ff9696ff', letterSpacing: -0.5}, 114 114 ]}> 115 - Bitchsky 115 + Witchsky 116 116 </Text> 117 117 </View> 118 118 </View>
+2 -2
src/components/dialogs/LinkWarning.tsx
··· 64 64 label={ 65 65 potentiallyMisleading 66 66 ? _(msg`Potentially misleading link warning`) 67 - : _(msg`Leaving Bitchsky`) 67 + : _(msg`Leaving Witchsky`) 68 68 }> 69 69 <View style={[a.gap_2xl]}> 70 70 <View style={[a.gap_sm]}> ··· 72 72 {potentiallyMisleading ? ( 73 73 <Trans>Potentially misleading link</Trans> 74 74 ) : ( 75 - <Trans>Leaving Bitchsky</Trans> 75 + <Trans>Leaving Witchsky</Trans> 76 76 )} 77 77 </Text> 78 78 <Text style={[t.atoms.text_contrast_high, a.text_md, a.leading_snug]}>
+1 -1
src/lib/constants.ts
··· 11 11 export const BSKY_SERVICE_DID = 'did:web:bsky.social' 12 12 export const PUBLIC_BSKY_SERVICE = 'https://public.api.bsky.app' 13 13 export const DEFAULT_SERVICE = BSKY_SERVICE 14 - export const HELP_DESK_URL = `https://github.com/jollywhoppers/bitchsky-app/issues/new/choose` 14 + export const HELP_DESK_URL = `https://tangled.org/jollywhoppers.com/witchsky.app/issues/new` 15 15 export const EMBED_SERVICE = 'https://embed.bsky.app' 16 16 export const EMBED_SCRIPT = `${EMBED_SERVICE}/static/embed.js` 17 17 export const BSKY_DOWNLOAD_URL = 'https://bsky.app/download'
+1 -1
src/lib/notifications/notifications.ts
··· 38 38 : PUBLIC_APPVIEW_DID, 39 39 platform: Platform.OS, 40 40 token: token.data, 41 - appId: 'app.bitchsky', 41 + appId: 'app.witchsky', 42 42 // ageRestricted: extra.ageRestricted ?? false, 43 43 } 44 44
+2 -2
src/lib/strings/embed-player.ts
··· 9 9 ? // @ts-ignore only for web 10 10 window.location.host === 'localhost:8100' 11 11 ? 'http://localhost:8100' 12 - : 'https://bitchsky.app' 12 + : 'https://witchsky.app' 13 13 : __DEV__ && !process.env.JEST_WORKER_ID 14 14 ? 'http://localhost:8100' 15 - : 'https://bitchsky.app' 15 + : 'https://witchsky.app' 16 16 17 17 export const embedPlayerSources = [ 18 18 'youtube',
+1 -1
src/lib/strings/headings.ts
··· 1 1 export function bskyTitle(page: string, unreadCountLabel?: string) { 2 2 const unreadPrefix = unreadCountLabel ? `(${unreadCountLabel}) ` : '' 3 - return `${unreadPrefix}${page} — Bitchsky` 3 + return `${unreadPrefix}${page} — Witchsky` 4 4 }
+1 -1
src/lib/strings/starter-pack.ts
··· 66 66 rkey: string, 67 67 ): string | null { 68 68 if (!name || !rkey) return null 69 - return `https://play.google.com/store/apps/details?id=app.bitchsky&referrer=utm_source%3Dbluesky%26utm_medium%3Dstarterpack%26utm_content%3Dstarterpack_${name}_${rkey}` 69 + return `https://play.google.com/store/apps/details?id=app.witchsky&referrer=utm_source%3Dbluesky%26utm_medium%3Dstarterpack%26utm_content%3Dstarterpack_${name}_${rkey}` 70 70 } 71 71 72 72 export function httpStarterPackUriToAtUri(httpUri?: string): string | null {
+6 -6
src/lib/strings/url-helpers.ts
··· 7 7 import {startUriToStarterPackUri} from '#/lib/strings/starter-pack' 8 8 import {logger} from '#/logger' 9 9 10 - export const BSKY_APP_HOST = 'https://bitchsky.app' 10 + export const BSKY_APP_HOST = 'https://witchsky.app' 11 11 const BSKY_TRUSTED_HOSTS = [ 12 - 'bitchsky\\.app', 13 - 'bitchsky\\.app', 12 + 'witchsky\\.app', 13 + 'witchsky\\.app', 14 14 'bsky\\.app', 15 15 'bsky\\.social', 16 16 'blueskyweb\\.xyz', ··· 81 81 82 82 export function toShareUrl(url: string): string { 83 83 if (!url.startsWith('https')) { 84 - const urlp = new URL('https://bitchsky.app') 84 + const urlp = new URL('https://witchsky.app') 85 85 urlp.pathname = url 86 86 url = urlp.toString() 87 87 } ··· 107 107 url.startsWith('https://bsky.app/') || 108 108 (url.startsWith('https://deer.social/') && 109 109 !url.startsWith('https://deer.social/about')) || 110 - (url.startsWith('https://bitchsky.app/') && 111 - !url.startsWith('https://bitchsky.app/about')) 110 + (url.startsWith('https://witchsky.app/') && 111 + !url.startsWith('https://witchsky.app/about')) 112 112 ) 113 113 } 114 114
+2 -2
src/screens/Settings/AboutSettings.tsx
··· 78 78 <Layout.Content> 79 79 <SettingsList.Container> 80 80 <SettingsList.LinkItem 81 - to="https://bitchsky.app/about/tos" 81 + to="https://witchsky.app/about/tos" 82 82 label={_(msg`Terms of Service`)}> 83 83 <SettingsList.ItemIcon icon={NewspaperIcon} /> 84 84 <SettingsList.ItemText> ··· 86 86 </SettingsList.ItemText> 87 87 </SettingsList.LinkItem> 88 88 <SettingsList.LinkItem 89 - to="https://bitchsky.app/about/privacy" 89 + to="https://witchsky.app/about/privacy" 90 90 label={_(msg`Privacy Policy`)}> 91 91 <SettingsList.ItemIcon icon={NewspaperIcon} /> 92 92 <SettingsList.ItemText>
+1 -1
src/screens/Settings/NotificationSettings/index.tsx
··· 70 70 [ 71 71 { 72 72 key: 'android.provider.extra.APP_PACKAGE', 73 - value: 'app.bitchsky', 73 + value: 'app.witchsky', 74 74 }, 75 75 ], 76 76 )
+3 -3
src/screens/Signup/StepInfo/index.tsx
··· 170 170 <View style={[a.gap_xl]}> 171 171 <Text style={[a.gap_md, a.leading_normal]}> 172 172 <Trans> 173 - Bitchsky is part of the{' '} 173 + Witchsky is part of the{' '} 174 174 { 175 175 <InlineLinkText 176 176 label={_(msg`ATmosphere`)} ··· 216 216 <Trans> 217 217 Don't have an account provider or an existing Bluesky account? To 218 218 create a new account on a Bluesky-hosted PDS, sign up through{' '} 219 - {/* TODO: Xan: change to say sign up for a Bitchsky account */} 219 + {/* TODO: Xan: change to say sign up for a Witchsky account */} 220 220 { 221 221 <InlineLinkText label={_(msg`bsky.app`)} to="https://bsky.app"> 222 222 <Trans>bsky.app</Trans> 223 223 </InlineLinkText> 224 224 }{' '} 225 - first, then return to Bitchsky and log in with the account you 225 + first, then return to Witchsky and log in with the account you 226 226 created. 227 227 </Trans> 228 228 </Text>
+1 -1
src/screens/StarterPack/StarterPackLandingScreen.tsx
··· 362 362 {isWeb && ( 363 363 <meta 364 364 name="apple-itunes-app" 365 - content="app-id=app.bitchsky, app-clip-bundle-id=app.bitchsky.AppClip, app-clip-display=card" 365 + content="app-id=app.witchsky, app-clip-bundle-id=app.witchsky.AppClip, app-clip-display=card" 366 366 /> 367 367 )} 368 368 </View>
+1 -1
src/state/persisted/schema.ts
··· 227 227 enableSquareButtons: false, 228 228 deerVerification: { 229 229 enabled: false, 230 - // https://bitchsky.app/profile/did:plc:p2cp5gopk7mgjegy6wadk3ep/post/3lndyqyyr4k2k 230 + // https://witchsky.app/profile/did:plc:p2cp5gopk7mgjegy6wadk3ep/post/3lndyqyyr4k2k 231 231 // using https://bverified.vercel.app/ as a source 232 232 trusted: [ 233 233 'did:plc:z72i7hdynmk6r22z27h6tvur',
+1 -1
src/state/queries/constellation.ts
··· 22 22 23 23 const headers = new Headers({ 24 24 Accept: 'application/json', 25 - 'User-Agent': 'Bitchsky (bitchsky.app)', 25 + 'User-Agent': 'Witchsky (witchsky.app)', 26 26 }) 27 27 28 28 const makeReqUrl = (
+1 -1
src/view/com/auth/SplashScreen.web.tsx
··· 170 170 ]}> 171 171 <InlineLinkText 172 172 label={_(msg`Read the patches and contribute`)} 173 - to="https://github.com/jollywhoppers/bitchsky-app"> 173 + to="https://tangled.org/jollywhoppers.com/witchsky.app/"> 174 174 <Trans>Github</Trans> 175 175 </InlineLinkText> 176 176
+2 -2
src/view/screens/PrivacyPolicy.tsx
··· 39 39 The Privacy Policy has been moved to{' '} 40 40 <TextLink 41 41 style={pal.link} 42 - href="https://bitchsky.app/about/privacy" 43 - text="bitchsky.app/about/privacy" 42 + href="https://witchsky.app/about/privacy" 43 + text="witchsky.app/about/privacy" 44 44 /> 45 45 </Trans> 46 46 </Text>
+2 -2
src/view/screens/TermsOfService.tsx
··· 38 38 <Trans>The Terms of Service have been moved to</Trans>{' '} 39 39 <TextLink 40 40 style={pal.link} 41 - href="https://bitchsky.app/about/tos" 42 - text="bitchsky.app/about/tos" 41 + href="https://witchsky.app/about/tos" 42 + text="witchsky.app/about/tos" 43 43 /> 44 44 </Text> 45 45 </View>
+2 -2
src/view/shell/Drawer.tsx
··· 697 697 <InlineLinkText 698 698 style={[a.text_md]} 699 699 label={_(msg`Terms of Service`)} 700 - to="https://bitchsky.app/about/tos"> 700 + to="https://witchsky.app/about/tos"> 701 701 <Trans>Terms of Service</Trans> 702 702 </InlineLinkText> 703 703 <InlineLinkText 704 704 style={[a.text_md]} 705 - to="https://bitchsky.app/about/privacy" 705 + to="https://witchsky.app/about/privacy" 706 706 label={_(msg`Privacy Policy`)}> 707 707 <Trans>Privacy Policy</Trans> 708 708 </InlineLinkText>
+2 -2
src/view/shell/desktop/RightNav.tsx
··· 109 109 </> 110 110 )} 111 111 <InlineLinkText 112 - to="https://bitchsky.app/about/privacy" 112 + to="https://witchsky.app/about/privacy" 113 113 label={_(msg`Privacy`)}> 114 114 {_(msg`Privacy`)} 115 115 </InlineLinkText> 116 116 {' • '} 117 117 <InlineLinkText 118 - to="https://bitchsky.app/about/tos" 118 + to="https://witchsky.app/about/tos" 119 119 label={_(msg`Terms`)}> 120 120 {_(msg`Terms`)} 121 121 </InlineLinkText>
+1 -1
web/index.html
··· 106 106 "> 107 107 <h1 lang="en">JavaScript Required</h1> 108 108 <p lang="en">This is a heavily interactive web application, and JavaScript is required. Simple HTML interfaces are possible, but that is not what this is. 109 - <p lang="en">Learn more about Bluesky at <a href="https://bsky.social">bsky.social</a> and <a href="https://atproto.com">atproto.com</a>, or this fork at <a href="https://github.com/jollywhoppers/bitchsky-app">github.com/jollywhoppers/bitchsky-app</a>. 109 + <p lang="en">Learn more about Bluesky at <a href="https://bsky.social">bsky.social</a> and <a href="https://atproto.com">atproto.com</a>, or this fork at <a href="https://tangled.org/jollywhoppers.com/witchsky.app/">https://tangled.org/jollywhoppers.com/witchsky.app/</a>. 110 110 </noscript> 111 111 112 112 <!-- The root element for your Expo app. -->