Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

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

Big Bitchsky move

xan.lol fe9f559f 7f19d754

+203 -195
+5 -5
.github/workflows/deer-build.yml .github/workflows/bitchsky-build.yml
··· 1 - name: Build social.daniela.lol 1 + name: Build Bitchsky 2 2 on: workflow_dispatch 3 3 4 4 jobs: 5 - deer-build-android: 6 - name: Build social.daniela.lol for Android 5 + bitchsky-build-android: 6 + name: Build Bitchsky for Android 7 7 runs-on: ubuntu-latest 8 8 steps: 9 9 - name: Checkout ··· 46 46 uses: softprops/action-gh-release@v2 47 47 if: github.ref == 'refs/heads/main' 48 48 with: 49 - name: Kitty v${{ github.run_number }} 50 - tag_name: kitty-v${{ github.run_number }} 49 + name: Bitchsky version ${{ github.run_number }} 50 + tag_name: bitchsky-v${{ github.run_number }} 51 51 files: android/app/build/outputs/apk/release/app-release.apk
+1 -1
.gitignore
··· 120 120 # ogcard assets 121 121 bskyogcard/src/assets/fonts/noto-* 122 122 123 - # deer 123 + # Bitchsky maybe 124 124 .direnv 125 125 .wrangler 126 126
+47 -38
README.md
··· 11 11 <img src="https://github.com/ImranR98/Obtainium/blob/main/assets/graphics/badge_obtainium.png?raw=true" 12 12 alt="Get it on Obtainium" align="center" height="54" /></a> 13 13 14 - ## Features Today 14 + ## Improvements over Bluesky 15 + 16 + - Better name (added an itch; lue no longer) 17 + - Nicer colors (based on ...) 18 + - Experiments page in settings 19 + - Toggle to disable go.bsky.app link proxying for analytics 20 + - Toggle to disable default app labeler 21 + - Toggle to disable falling back to the discover feed in following feed 22 + - Toggle to see skeets in quotes through blocks and detachments 23 + - <img src="https://github.com/user-attachments/assets/e5084afd-b17e-43a7-9622-f6d7f19f53ca" width="300px" /> 24 + - Checkboxes to enable features gates 25 + - Ignores `!no-unauthenticated` labels 26 + - Share links to bitchsky.app or bsky.app 27 + 28 + ## WIP/Planned 29 + 30 + - Opengraph support for sharing skeets and profiles 31 + - Selecting custom appviews 32 + - Seeing past blocks in post threads (nuclear block for reply chains) 33 + - Configure the location used to determine regional labelers 34 + 35 + 36 + ### TODO: Xan 15 37 16 - - toggle to disable go.bsky.app link proxying for analytics 17 - - toggle to disable default app labeler 18 - - toggle to disable falling back to discover feed in the following feed 19 - - see through quote blocks and detatchments (nuclear block wrt quotes) 20 - - <img src="https://github.com/user-attachments/assets/e5084afd-b17e-43a7-9622-f6d7f19f53ca" width="300px" /> 21 - - enable features gates 22 - - configure the location used to determine regional labelers 23 - - entirely ignore `!no-unauthenticated` labels, even for logged out users 38 + - [ ] Update branding (especially colors and app icon) to Bitchsky 39 + - [ ] Setup App Linking for Android (.well-known w/ app package fingerprint) 40 + - [ ] Replace instances of `group.app.bsky` with `group.app.bitchsky` 41 + - [ ] Add a toggle to replace "New Post" with "Skeet" (and other instances of "Post" in English) 42 + - [ ] [Coffee](https://git.ari.lt/coffee) for colors in actual themes 24 43 25 - ### WIP/Planned 44 + #### Maybe 26 45 27 - - rewrite shared URLs to reference deer.social 28 - - opengraph support for sharing posts and profiles 29 - - selecting custom appviews 30 - - seeing past blocks in post threads (nuclear block for reply chains) 46 + - [ ] iOS app IPA? 47 + - [ ] Move from GitHub to Tangled? 31 48 32 49 ## Philosophy 33 50 34 - - by default, deer.social should very similar to the official client 51 + - by default, Bitchsky should very similar to the official client 35 52 - color and branding are different to distinguish from social-app 36 53 - `!no-unauthenticated` behavior is different 37 54 - analytics are not present ··· 39 56 - focus on high impact, low diff size patches 40 57 - specifically patches that won't require large conflicts to be resolved 41 58 - focus on power users (but all users are welome!) 42 - - enable things that are possible but annoying today **without** egging on antisocial behavior 59 + - enable things that are possible but annoying today **without** egging on anti-social behavior 43 60 44 61 ## Development Resources 45 62 46 63 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). 47 64 48 - 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 49 - deer.social deployments. 50 - For deer, the intended deployment is with a websever than can serve static files, and reroute to `index.html` as needed. Today [deer.social](https://deer.social) is hosted on [cloudflare pages](https://pages.cloudflare.com/). 65 + 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. 66 + For Bitchsky, the intended deployment is with a webserver that can serve static files, and reroute to `index.html` as needed. Today [Bitchsky](https://bitchsky.app) is hosted on [Cloudflare Pages](https://pages.cloudflare.com/). 51 67 52 - 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 53 - the web version of the app. 68 + 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. 54 69 55 70 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. 56 - 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 57 - pertaining to deer.social. 71 + 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. 58 72 59 - Deer is a fork of the official 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.*`. 73 + Bitchsky is a fork of the official 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.*`. 60 74 61 75 ## Contributions 62 76 63 - > deer.social is a community fork, and we'd love to merge your PR! 77 + > Bitchsky is a community fork, and we'd love to merge your PR! 64 78 65 - As a rule of thumb, the best features for deer.social are ones that have a disproportionately positive impact on the user experience compared to the matinance overhead. 66 - Unlike some open source projects, since deer.social is a soft fork, any features (patches) we add on top of upstream social-app need to be maintained. For example, 67 - a change to the way posts are composed may be very invasive, touching lots of code across the codebase. If upstream refactors this component, we will need to rewrite this 68 - feature to be compatible or drop it from the client. 79 + As a rule of thumb, the best features for Bitchsky are those that offer a strong positives 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. 69 80 70 81 For this reason, bias towards features that change a relatively small amount of code that is present upstream. 71 82 72 - Without an overriding motivation, opinionated features should exist behind a toggle that is not enabled by default. This allows deer.social to cater to as many users as possible. 83 + 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. 73 84 74 85 **Guidelines:** 75 86 ··· 81 92 - Refactoring the codebase, e.g., to replace React Query with Redux Toolkit or something. 82 93 - Include a new toggle and preference for your feature. 83 94 84 - If we don't merge your PR for whatever reason, you are welcome to fork and/or self host: 95 + If we don't merge your PR for whatever reason, you are welcome to fork and/or self-host: 85 96 86 97 ## Forking guidelines 87 98 ··· 89 100 90 101 Please be sure to: 91 102 92 - - Change all branding in the repository and UI to clearly differentiate from deer.social. 103 + - Change all branding in the repository and UI to clearly differentiate from Bitchsky. 93 104 - Change any support links (feedback, email, terms of service, issue tracker, etc) to your own systems. 94 105 95 106 ## Self hosting & personal builds 96 107 97 - Self hosting is great! It is our intention that deer.social is easy to self host and build on your own. If you host your own instance of deer.social, or make your own builds, please 98 - 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 99 - advertising your hosted instance or builds as "official" releases. 108 + 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. 100 109 101 110 ## Security disclosures 102 111 103 - If you discover any security issues, please send an email to aviva@rubenfamily.com. 104 - If the issue pertains to infastructure, code, or systems outside the scope of deer.social, please refer to the 112 + If you discover any security issues, please privately disclose them to [xan.lol](https://xan.lol/). 113 + If the issue pertains to infastructure, code, or systems outside the scope of Bitchsky, please refer to the 105 114 [disclosure guidelines on social-app](https://github.com/bluesky-social/social-app#security-disclosures) if it is hosted by Bluesky PBC. Otherwise, reference the 106 115 security policy of that system as applicable <3 107 116 ··· 113 122 114 123 ## P.S. 115 124 116 - We ❤️ you and all of the ways you support us. Thank you for making Bluesky a great place! 125 + We ❤️ you and all of the ways you support us. Thank you for making Bluesky & Bitchsky a great place!
+19 -19
app.config.js
··· 18 18 const IS_DEV = !IS_TESTFLIGHT || !IS_PRODUCTION 19 19 20 20 const ASSOCIATED_DOMAINS = [ 21 - 'applinks:social.daniela.lol', 21 + 'applinks:bitchsky.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: 'Kitty', 40 - slug: 'deer', 41 - scheme: ['bluesky', 'deer'], 39 + name: 'Bitchsky', 40 + slug: 'bitchsky', 41 + scheme: ['bluesky', 'bitchsky'], 42 42 // owner: 'blueskysocial', 43 43 // owner: 'neema.brown', 44 44 runtimeVersion: { ··· 46 46 }, 47 47 icon: './assets/app-icons/ios_icon_default_next.png', 48 48 userInterfaceStyle: 'automatic', 49 - primaryColor: '#8e4b9b', 49 + primaryColor: '#8e4b9b', // TODO: Xan: brand 50 50 newArchEnabled: false, 51 51 ios: { 52 52 supportsTablet: false, 53 - bundleIdentifier: 'lol.daniela.social', 53 + bundleIdentifier: 'app.bitchsky', 54 54 config: { 55 55 usesNonExemptEncryption: false, 56 56 }, ··· 61 61 infoPlist: { 62 62 UIBackgroundModes: ['remote-notification'], 63 63 NSCameraUsageDescription: 64 - 'Used for profile pictures, posts, and other kinds of content.', 64 + 'Used for profile pictures, skeets, and other kinds of content.', 65 65 NSMicrophoneUsageDescription: 66 - 'Used for posts and other kinds of content.', 66 + 'Used for skeets and other kinds of content.', 67 67 NSPhotoLibraryAddUsageDescription: 68 68 'Used to save images to your library.', 69 69 NSPhotoLibraryUsageDescription: 70 - 'Used for profile pictures, posts, and other kinds of content', 71 - CFBundleSpokenName: 'social.daniela.lol', 70 + 'Used for profile pictures, skeets, and other kinds of content', 71 + CFBundleSpokenName: 'bitchsky.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.lol.daniela.social', 120 + 'com.apple.security.application-groups': 'group.app.bitchsky', 121 121 }, 122 122 privacyManifests: { 123 123 NSPrivacyCollectedDataTypes: [ ··· 183 183 adaptiveIcon: { 184 184 foregroundImage: './assets/icon-android-foreground.png', 185 185 monochromeImage: './assets/icon-android-monochrome.png', 186 - backgroundColor: '#8e4b9b', 186 + backgroundColor: '#8e4b9b', // TODO: Xan: brand 187 187 }, 188 188 googleServicesFile: './google-services.json', 189 - package: 'lol.daniela.social', 189 + package: 'app.bitchsky', 190 190 intentFilters: [ 191 191 { 192 192 action: 'VIEW', ··· 194 194 data: [ 195 195 { 196 196 scheme: 'https', 197 - host: 'social.daniela.lol', 197 + host: 'bitchsky.app', // TODO: Xan: https://bitchsky.app/.well-known/assetlinks.json 198 198 }, 199 199 { 200 200 scheme: 'https', ··· 281 281 'expo-notifications', 282 282 { 283 283 icon: './assets/icon-android-notification.png', 284 - color: '#8e4b9b', 284 + color: '#8e4b9b', // TODO: Xan: brand 285 285 sounds: PLATFORM === 'ios' ? ['assets/dm.aiff'] : ['assets/dm.mp3'], 286 286 }, 287 287 ], ··· 330 330 resizeMode: 'cover', 331 331 dark: { 332 332 enableFullScreenImage_legacy: true, 333 - backgroundColor: '#150318', 333 + backgroundColor: '#150318', // TODO: Xan: brand 334 334 image: './assets/splash-dark.png', 335 335 resizeMode: 'cover', 336 336 }, 337 337 }, 338 338 android: { 339 - backgroundColor: '#8e4b9b', 339 + backgroundColor: '#8e4b9b', // TODO: Xan: brand 340 340 image: './assets/splash-android-icon.png', 341 341 imageWidth: 150, 342 342 dark: { 343 - backgroundColor: '#2b0133', 343 + backgroundColor: '#2b0133', // TODO: Xan: brand 344 344 image: './assets/splash-android-icon-dark.png', 345 345 imageWidth: 150, 346 346 }, ··· 450 450 }, 451 451 }, 452 452 //projectId: '55bd077a-d905-4184-9c7f-94789ba0f302', 453 - projectId: '86ff94e3-dce0-4f7c-99f4-1651a2f1bc2a', 453 + projectId: '86ff94e3-dce0-4f7c-99f4-1651a2f1bc2a', // TODO: Xan: Generate new project ID somehow 454 454 }, 455 455 }, 456 456 },
+54
bitchsky-static-about/privacy.html
··· 1 + <!DOCTYPE html> 2 + <html> 3 + <head> 4 + <meta charset="utf-8"> 5 + <meta name="theme-color"> 6 + <!-- 7 + This viewport works for phones with notches. 8 + It's optimized for gestures by disabling global zoom. 9 + --> 10 + <meta 11 + name="viewport" 12 + content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1.00001, viewport-fit=cover" 13 + /> 14 + <title>Privacy Policy — Bitchsky</title> 15 + 16 + <link rel="preload" as="font" type="font/woff2" href="/static/media/InterVariable.c504db5c06caaf7cdfba.woff2" crossorigin> 17 + 18 + <link rel="stylesheet" href="normalize.css" type="text/css"> 19 + <link rel="stylesheet" href="sakura.css" type="text/css"> 20 + </head> 21 + 22 + <body> 23 + 24 + 25 + <h1>Bitchsky Privacy Policy</h1> 26 + 27 + <p><em><strong>Last Updated:</strong> May 07, 2025</em></p> 28 + 29 + <p>Welcome to Bitchsky. This privacy policy explains our approach to your data when you use our application.</p> 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> 33 + <p>Our application functions solely as a client interface to interact with the underlying Bluesky social network (AT Protocol).</p> 34 + 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> 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 + <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 + 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> 43 + 44 + <h2>Cookies and Analytics</h2> 45 + <p>Bitchsky does not use cookies or any tracking analytics.</p> 46 + 47 + <h2>Changes to This Policy</h2> 48 + <p>We may update this policy. If we do, we will update the "Effective Date" at the top of this page.</p> 49 + 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> 52 + 53 + </body> 54 + </html>
+65
bitchsky-static-about/tos.html
··· 1 + <!DOCTYPE html> 2 + <html> 3 + <head> 4 + <meta charset="utf-8"> 5 + <meta name="theme-color"> 6 + <!-- 7 + This viewport works for phones with notches. 8 + It's optimized for gestures by disabling global zoom. 9 + --> 10 + <meta 11 + name="viewport" 12 + content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1.00001, viewport-fit=cover" 13 + /> 14 + <title>Terms of Service — Bitchsky</title> 15 + 16 + <link rel="preload" as="font" type="font/woff2" href="/static/media/InterVariable.c504db5c06caaf7cdfba.woff2" crossorigin> 17 + 18 + <link rel="stylesheet" href="normalize.css" type="text/css"> 19 + <link rel="stylesheet" href="sakura.css" type="text/css"> 20 + </head> 21 + 22 + <body> 23 + 24 + 25 + <h1>Terms of Service for Bitchsky</h1> 26 + 27 + <p><em><strong>Last Updated:</strong> May 07, 2025</em></p> 28 + 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> 31 + 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> 34 + 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> 38 + <p>You are responsible for understanding and complying with the terms of those external services.</p> 39 + 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 + <p><a href="https://bsky.social/about/support/tos" target="_blank" rel="noopener noreferrer">https://bsky.social/about/support/tos</a></p> 42 + 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> 45 + 46 + <h2>Disclaimer of Warranty</h2> 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> 48 + 49 + <h2>Limitation of Liability</h2> 50 + <p>To the fullest extent permitted by applicable law, Jollywhoppers shall not be liable for any indirect, incidental, special, consequential, or punitive damages, or any loss of profits or revenues, whether incurred directly or indirectly, or any loss of data, use, goodwill, or other intangible losses, resulting from:</p> 51 + <ul> 52 + <li>Your access to or use of or inability to access or use the App;</li> 53 + <li>Any conduct or content of any third party on or through the App or the services it connects to (including your AppView or PDS);</li> 54 + <li>Unauthorized access, use, or alteration of your transmissions or content via the underlying services (AppView/PDS).</li> 55 + </ul> 56 + <p>In no event shall the aggregate liability of Jollywhoppers exceed the greater of zero U.S. dollars ($0.00).</p> 57 + 58 + <h2>Changes to These Terms</h2> 59 + <p>We may revise these Terms from time to time. The most current version will always be available within the App or on its associated website. By continuing to access or use the App after revisions become effective, you agree to be bound by the revised Terms.</p> 60 + 61 + <h2>Contact Information</h2> 62 + <p>If you have any questions about these Terms of Service, please email <a href="mailto:contact@jollywhoppers.com" target="_blank" rel="noopener noreferrer">contact@jollywhoppers.com</a>.</p> 63 + 64 + </body> 65 + </html>
+1 -1
deer-static-about/index.html bitchsky-static-about/index.html
··· 19 19 window.location.href = "https://github.com/devxan/bitch-social"; 20 20 </script> 21 21 <body> 22 - <h1>redirecting to github readme...</h1> 22 + <h1>Redirecting to GitHub README...</h1> 23 23 </body> 24 24 </html>
deer-static-about/normalize.css bitchsky-static-about/normalize.css
-54
deer-static-about/privacy.html
··· 1 - <!DOCTYPE html> 2 - <html> 3 - <head> 4 - <meta charset="utf-8"> 5 - <meta name="theme-color"> 6 - <!-- 7 - This viewport works for phones with notches. 8 - It's optimized for gestures by disabling global zoom. 9 - --> 10 - <meta 11 - name="viewport" 12 - content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1.00001, viewport-fit=cover" 13 - /> 14 - <title>deer.social | privacy policy</title> 15 - 16 - <link rel="preload" as="font" type="font/woff2" href="/static/media/InterVariable.c504db5c06caaf7cdfba.woff2" crossorigin> 17 - 18 - <link rel="stylesheet" href="normalize.css" type="text/css"> 19 - <link rel="stylesheet" href="sakura.css" type="text/css"> 20 - </head> 21 - 22 - <body> 23 - 24 - 25 - <h1>deer.social Privacy Policy</h1> 26 - 27 - <p><em><strong>Last Updated:</strong> May 07, 2025</em></p> 28 - 29 - <p>Welcome to deer.social. This privacy policy explains our approach to your data when you use our application.</p> 30 - 31 - <h2>No Data Collection by deer.social</h2> 32 - <p><strong>The deer.social 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 - <p>Our application functions solely as a client interface to interact with the underlying Bluesky social network (AT Protocol).</p> 34 - 35 - <h2>Reliance on Third-Party Services (AppView and PDS)</h2> 36 - <p>When you use deer.social, 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> deer.social simply acts on your behalf to communicate with these services based on the credentials you provide locally on your device.</p> 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 - <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 - 41 - <h2>Data Stored Locally on Your Device</h2> 42 - <p>To function, deer.social 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 - 44 - <h2>Cookies and Analytics</h2> 45 - <p>deer.social does not use cookies or any tracking analytics.</p> 46 - 47 - <h2>Changes to This Policy</h2> 48 - <p>We may update this policy. If we do, we will update the "Effective Date" at the top of this page.</p> 49 - 50 - <h2>Contact Us</h2> 51 - <p>If you have questions specifically about the functionality of the deer.social application itself (and not about data managed by your PDS or AppView), please email <a href="mailto:contact@forsythpeak.com" target="_blank" rel="noopener noreferrer">contact@forsythpeak.com</a>.</p> 52 - 53 - </body> 54 - </html>
deer-static-about/sakura.css bitchsky-static-about/sakura.css
-65
deer-static-about/tos.html
··· 1 - <!DOCTYPE html> 2 - <html> 3 - <head> 4 - <meta charset="utf-8"> 5 - <meta name="theme-color"> 6 - <!-- 7 - This viewport works for phones with notches. 8 - It's optimized for gestures by disabling global zoom. 9 - --> 10 - <meta 11 - name="viewport" 12 - content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1.00001, viewport-fit=cover" 13 - /> 14 - <title>deer.social | terms of service</title> 15 - 16 - <link rel="preload" as="font" type="font/woff2" href="/static/media/InterVariable.c504db5c06caaf7cdfba.woff2" crossorigin> 17 - 18 - <link rel="stylesheet" href="normalize.css" type="text/css"> 19 - <link rel="stylesheet" href="sakura.css" type="text/css"> 20 - </head> 21 - 22 - <body> 23 - 24 - 25 - <h1>Terms of Service for deer.social</h1> 26 - 27 - <p><em><strong>Last Updated:</strong> May 07, 2025</em></p> 28 - 29 - <h2>Introduction</h2> 30 - <p>Welcome to deer.social! These Terms of Service ("Terms") govern your use of the deer.social application ("App"). By accessing or using the App, you agree to be bound by these Terms.</p> 31 - 32 - <h2>Your Agreement</h2> 33 - <p>Using deer.social 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 - 35 - <h2>Relationship to Other Services and Platforms</h2> 36 - <p>deer.social 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> deer.social 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 - <p>You are responsible for understanding and complying with the terms of those external services.</p> 39 - 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 - <p><a href="https://bsky.social/about/support/tos" target="_blank" rel="noopener noreferrer">https://bsky.social/about/support/tos</a></p> 42 - 43 - <h2>User Conduct</h2> 44 - <p>Your conduct while using deer.social must comply with the terms and rules set forth by the AppView and PDS you are connected to. deer.social is merely a tool to access these services, and Forsyth Peak LLC is not responsible for enforcing the rules of those platforms or for the content accessed through them.</p> 45 - 46 - <h2>Disclaimer of Warranty</h2> 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> 48 - 49 - <h2>Limitation of Liability</h2> 50 - <p>To the fullest extent permitted by applicable law, Forsyth Peak LLC shall not be liable for any indirect, incidental, special, consequential, or punitive damages, or any loss of profits or revenues, whether incurred directly or indirectly, or any loss of data, use, goodwill, or other intangible losses, resulting from:</p> 51 - <ul> 52 - <li>Your access to or use of or inability to access or use the App;</li> 53 - <li>Any conduct or content of any third party on or through the App or the services it connects to (including your AppView or PDS);</li> 54 - <li>Unauthorized access, use, or alteration of your transmissions or content via the underlying services (AppView/PDS).</li> 55 - </ul> 56 - <p>In no event shall the aggregate liability of Forsyth Peak LLC exceed the greater of zero U.S. dollars ($0.00).</p> 57 - 58 - <h2>Changes to These Terms</h2> 59 - <p>We may revise these Terms from time to time. The most current version will always be available within the App or on its associated website. By continuing to access or use the App after revisions become effective, you agree to be bound by the revised Terms.</p> 60 - 61 - <h2>Contact Information</h2> 62 - <p>If you have any questions about these Terms of Service, please email <a href="mailto:contact@forsythpeak.com" target="_blank" rel="noopener noreferrer">contact@forsythpeak.com</a>.</p> 63 - 64 - </body> 65 - </html>
+1 -2
justfile
··· 42 42 cp -r bskyweb/static/iframe/ web-build/iframe 43 43 44 44 # copy our static pages over! 45 - cp -r deer-static-about web-build/about 45 + cp -r bitchsky-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/ ··· 62 62 [group('lint')] 63 63 typecheck: 64 64 yarn typecheck 65 -
+1 -1
src/Navigation.tsx
··· 389 389 name="DeerSettings" 390 390 getComponent={() => DeerSettingsScreen} 391 391 options={{ 392 - title: title(msg`Kitty Settings`), 392 + title: title(msg`Experiments`), 393 393 requireAuth: true, 394 394 }} 395 395 />
+2 -2
src/components/dialogs/LinkWarning.tsx
··· 64 64 label={ 65 65 potentiallyMisleading 66 66 ? _(msg`Potentially misleading link warning`) 67 - : _(msg`Leaving Kitty`) 67 + : _(msg`Leaving Bitchsky`) 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 Kitty</Trans> 75 + <Trans>Leaving Bitchsky</Trans> 76 76 )} 77 77 </Text> 78 78 <Text style={[t.atoms.text_contrast_high, a.text_md, a.leading_snug]}>
+5 -5
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://social.daniela.lol' 10 + export const BSKY_APP_HOST = 'https://bitchsky.app' 11 11 const BSKY_TRUSTED_HOSTS = [ 12 + 'bitchsky\\.app', 12 13 'deer\\.social', 13 - 'social\\.daniela\\.lol', 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://social.daniela.lol') 84 + const urlp = new URL('https://bitchsky.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://social.daniela.lol/') && 111 - !url.startsWith('https://social.daniela.lol/about')) 110 + (url.startsWith('https://bitchsky.app/') && 111 + !url.startsWith('https://bitchsky.app/about')) 112 112 ) 113 113 } 114 114
+1 -1
src/screens/Settings/DeerSettings.tsx
··· 306 306 <Layout.Header.BackButton /> 307 307 <Layout.Header.Content> 308 308 <Layout.Header.TitleText> 309 - <Trans>Kitty</Trans> 309 + <Trans>Experiments</Trans> 310 310 </Layout.Header.TitleText> 311 311 </Layout.Header.Content> 312 312 <Layout.Header.Slot />
+1 -1
src/screens/Settings/Settings.tsx
··· 219 219 <SettingsList.LinkItem to="/settings/deer" label={_(msg`Deer`)}> 220 220 <SettingsList.ItemIcon icon={DeerIcon} /> 221 221 <SettingsList.ItemText> 222 - <Trans>Kitty</Trans> 222 + <Trans>Experiments</Trans> 223 223 </SettingsList.ItemText> 224 224 </SettingsList.LinkItem> 225 225 <SettingsList.LinkItem