.github/ISSUE_TEMPLATE/bug_report.yml
.tangled/ISSUE_TEMPLATE/bug_report.yml
.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
.github/ISSUE_TEMPLATE/feature_request.yml
.tangled/ISSUE_TEMPLATE/feature_request.yml
+9
-9
.github/workflows/bitchsky-build.yml
.tangled/workflows/witchsky-build.yml
+9
-9
.github/workflows/bitchsky-build.yml
.tangled/workflows/witchsky-build.yml
···
1
-
name: Build Bitchsky
2
on: workflow_dispatch
3
4
jobs:
5
-
bitchsky-build-android:
6
-
name: Build Bitchsky for Android
7
runs-on: ubuntu-latest
8
permissions:
9
contents: write
···
40
41
- name: Rename APK
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
44
45
- name: Upload artifact
46
uses: actions/upload-artifact@v4
47
with:
48
name: android
49
-
path: android/app/build/outputs/apk/release/bitchsky-v${{ github.run_number }}.apk
50
-
51
- name: Publish release
52
uses: softprops/action-gh-release@v2
53
if: github.ref == 'refs/heads/main'
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
···
1
+
name: Build Witchsky
2
on: workflow_dispatch
3
4
jobs:
5
+
witchsky-build-android:
6
+
name: Build Witchsky for Android
7
runs-on: ubuntu-latest
8
permissions:
9
contents: write
···
40
41
- name: Rename APK
42
run: |
43
+
mv android/app/build/outputs/apk/release/app-release.apk android/app/build/outputs/apk/release/witchsky-v${{ github.run_number }}.apk
44
45
- name: Upload artifact
46
uses: actions/upload-artifact@v4
47
with:
48
name: android
49
+
path: android/app/build/outputs/apk/release/witchsky-v${{ github.run_number }}.apk
50
+
51
- name: Publish release
52
uses: softprops/action-gh-release@v2
53
if: github.ref == 'refs/heads/main'
54
with:
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
+1
-1
.gitignore
+27
-27
README.md
+27
-27
README.md
···
1
-
# Bitchsky Social App 🧙
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.
4
5
Get the app itself:
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)**
10
11
-
<a href="https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://github.com/jollywhoppers/bitchsky-app/">
12
<img src="https://github.com/ImranR98/Obtainium/blob/main/assets/graphics/badge_obtainium.png?raw=true"
13
alt="Get it on Obtainium" align="center" height="54" /></a>
14
15
## Improvements on Bluesky
16
17
-
- Funner name (still love you tho bsky!)
18
- Nicer colors (kinda like gruvbox? not really)
19
- Posts are called Skeets
20
-
- Share links to bitchsky.app or bsky.app
21
- Embed player works with [stream.place](https://stream.place/) links!
22
-
- Open skeets in PDSls and original pages from bridged posts
23
- Better defaults (alt text required 😉)
24
- More unique repost icons
25
- No push notifications (may be added later)
···
73
74
### TODO: Xan
75
76
-
- [ ] Update branding (especially colors and app icon) to Bitchsky
77
- [ ] ./src/components/WelcomeModal.tsx (tab/hover selector)
78
- [ ] ./src/alf/themes.ts (improve contrast, esp. of links)
79
- [ ] ./src/lib/styles.ts (change likes color, remove gradient from new skeet button)
80
- [ ] ./src/style.css (change links color)
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)
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)
86
- [ ] Like of or repost of repost icons in notifications
87
- [ ] Change followed accounts [on onboarding](https://github.com/blacksky-algorithms/blacksky.community/commit/e36ee43efb4999f070860d7f70122e45b28c1e2b)
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?)
90
- [ ] Additional translation service providers + setting (Deepl, Kagi)
91
- [ ] Move Mutuals label to the follow button
92
- [ ] Put DeerSettings into separate subpages
93
-
- [ ] After subpages for options, add [Outlinks page](https://bitchsky.app/profile/did:plc:q7suwaz53ztc4mbiqyygbn43/post/3m5zjhhshic2g) &
94
- [ ] ShareMenuItems.tsx, ShareMenuItems.web.tsx
95
- [ ] For profile meatball button, Open profile in PDSls & Open bridged OG fedi account page
96
- [ ] ProfileMenu.tsx
97
-
- [ ] Bitchsky PDS and .social site (list good songs containing 'bitch' in their titles)
98
99
### Even more wishful or far off
100
···
110
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
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/).
115
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
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.
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.*`.
122
123
## Contributions
124
125
-
> Bitchsky is a community fork, and we'd love to merge your PR!
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.
128
129
For this reason, only features that require changing only a small amount of code from upstream should be considered.
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.
132
133
### Guidelines
134
···
148
149
Please be sure to:
150
151
-
- Change all branding in the repository and UI to clearly differentiate from Bitchsky.
152
- Change any support links (feedback, email, terms of service, issue tracker, etc) to your own systems.
153
154
## Self hosting & personal builds
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.
157
158
## Security disclosures
159
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
162
163
## License (MIT)
164
···
168
169
## P.S.
170
171
-
We ❤️ you and all of the ways you support us. Thank you for making Bluesky & Bitchsky so great! ^.^
···
1
+
# Witchsky Social App 🧙 (WIP)
2
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
5
Get the app itself:
6
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
11
+
<a href="https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://github.com/jollywhoppers/witchsky-app/">
12
<img src="https://github.com/ImranR98/Obtainium/blob/main/assets/graphics/badge_obtainium.png?raw=true"
13
alt="Get it on Obtainium" align="center" height="54" /></a>
14
15
## Improvements on Bluesky
16
17
+
- Cooler name (still love you tho bsky!)
18
- Nicer colors (kinda like gruvbox? not really)
19
- Posts are called Skeets
20
+
- Choose between sharing witchsky.app or bsky.app links
21
- Embed player works with [stream.place](https://stream.place/) links!
22
+
- Open skeets in PDSls and original pages of bridged posts
23
- Better defaults (alt text required 😉)
24
- More unique repost icons
25
- No push notifications (may be added later)
···
73
74
### TODO: Xan
75
76
+
- [ ] Update branding (especially colors and app icon) to Witchsky
77
- [ ] ./src/components/WelcomeModal.tsx (tab/hover selector)
78
- [ ] ./src/alf/themes.ts (improve contrast, esp. of links)
79
- [ ] ./src/lib/styles.ts (change likes color, remove gradient from new skeet button)
80
- [ ] ./src/style.css (change links color)
81
- [ ] ./src/view/com/util/UserAvatar.tsx (change #0070FF)
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
- [ ] 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 witchsky.social)
86
- [ ] Like of or repost of repost icons in notifications
87
- [ ] Change followed accounts [on onboarding](https://github.com/blacksky-algorithms/blacksky.community/commit/e36ee43efb4999f070860d7f70122e45b28c1e2b)
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://witchsky.app/profile/did:plc:jwhxcrf5uvl3vyw7nurecgt5/post/3m4rr3vzmak2a) (and likes?)
90
- [ ] Additional translation service providers + setting (Deepl, Kagi)
91
- [ ] Move Mutuals label to the follow button
92
- [ ] Put DeerSettings into separate subpages
93
+
- [ ] After subpages for options, add [Outlinks page](https://witchsky.app/profile/did:plc:q7suwaz53ztc4mbiqyygbn43/post/3m5zjhhshic2g) &
94
- [ ] ShareMenuItems.tsx, ShareMenuItems.web.tsx
95
- [ ] For profile meatball button, Open profile in PDSls & Open bridged OG fedi account page
96
- [ ] ProfileMenu.tsx
97
+
- [ ] Witchsky PDS and .social site (list good songs containing 'bitch' in their titles)
98
99
### Even more wishful or far off
100
···
110
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
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
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
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 Witchsky.
120
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
123
## Contributions
124
125
+
> Witchsky is a community fork, and we'd love to merge your PR!
126
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
129
For this reason, only features that require changing only a small amount of code from upstream should be considered.
130
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
133
### Guidelines
134
···
148
149
Please be sure to:
150
151
+
- Change all branding in the repository and UI to clearly differentiate from Witchsky.
152
- Change any support links (feedback, email, terms of service, issue tracker, etc) to your own systems.
153
154
## Self hosting & personal builds
155
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
158
## Security disclosures
159
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 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
163
## License (MIT)
164
···
168
169
## P.S.
170
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
-1
__e2e__/flows/composer-self-label.yml
+1
-1
__e2e__/flows/composer.yml
+1
-1
__e2e__/flows/composer.yml
+1
-1
__e2e__/flows/create-account.yml
+1
-1
__e2e__/flows/create-account.yml
+1
-1
__e2e__/flows/curate-lists.yml
+1
-1
__e2e__/flows/curate-lists.yml
+1
-1
__e2e__/flows/feed-reorder.yml
+1
-1
__e2e__/flows/feed-reorder.yml
+1
-1
__e2e__/flows/home-screen.yml
+1
-1
__e2e__/flows/home-screen.yml
+1
-1
__e2e__/flows/login.yml
+1
-1
__e2e__/flows/login.yml
+1
-1
__e2e__/flows/mod-lists.yml
+1
-1
__e2e__/flows/mod-lists.yml
+1
-1
__e2e__/flows/onboarding-avatar-creator.yml
+1
-1
__e2e__/flows/onboarding-avatar-creator.yml
+1
-1
__e2e__/flows/onboarding.yml
+1
-1
__e2e__/flows/onboarding.yml
+1
-1
__e2e__/flows/post-report-flow.yml
+1
-1
__e2e__/flows/post-report-flow.yml
+1
-1
__e2e__/flows/profile-screen-edit.yml
+1
-1
__e2e__/flows/profile-screen-edit.yml
+1
-1
__e2e__/flows/profile-screen.yml
+1
-1
__e2e__/flows/profile-screen.yml
+1
-1
__e2e__/flows/report-dialog/account.default.yml
+1
-1
__e2e__/flows/report-dialog/account.default.yml
+1
-1
__e2e__/flows/report-dialog/post.default.yml
+1
-1
__e2e__/flows/report-dialog/post.default.yml
+1
-1
__e2e__/flows/report-dialog/post.edit-reason.yml
+1
-1
__e2e__/flows/report-dialog/post.edit-reason.yml
+1
-1
__e2e__/flows/report-dialog/post.reason-other.yml
+1
-1
__e2e__/flows/report-dialog/post.reason-other.yml
+1
-1
__e2e__/flows/search-screen.yml
+1
-1
__e2e__/flows/search-screen.yml
+1
-1
__e2e__/flows/thread-muting.yml
+1
-1
__e2e__/flows/thread-muting.yml
+1
-1
__e2e__/flows/thread-screen.yml
+1
-1
__e2e__/flows/thread-screen.yml
+1
-1
__e2e__/perf-test.yml
+1
-1
__e2e__/perf-test.yml
+2
-2
__e2e__/setupApp.yml
+2
-2
__e2e__/setupApp.yml
+1
-1
__tests__/lib/string.test.ts
+1
-1
__tests__/lib/string.test.ts
···
981
982
describe('createStarterPackGooglePlayUri', () => {
983
const base =
984
-
'https://play.google.com/store/apps/details?id=app.bitchsky&referrer=utm_source%3Dbluesky%26utm_medium%3Dstarterpack%26utm_content%3Dstarterpack_'
985
986
it('returns valid google play uri when input is valid', () => {
987
expect(createStarterPackGooglePlayUri('name', 'rkey')).toEqual(
···
981
982
describe('createStarterPackGooglePlayUri', () => {
983
const base =
984
+
'https://play.google.com/store/apps/details?id=app.witchsky&referrer=utm_source%3Dbluesky%26utm_medium%3Dstarterpack%26utm_content%3Dstarterpack_'
985
986
it('returns valid google play uri when input is valid', () => {
987
expect(createStarterPackGooglePlayUri('name', 'rkey')).toEqual(
+14
-14
app.config.js
+14
-14
app.config.js
···
18
const IS_DEV = !IS_TESTFLIGHT || !IS_PRODUCTION
19
20
const ASSOCIATED_DOMAINS = [
21
-
'applinks:bitchsky.app',
22
// When testing local services, enter an ngrok (et al) domain here. It must use a standard HTTP/HTTPS port.
23
...(IS_DEV || IS_TESTFLIGHT ? [] : []),
24
]
···
36
return {
37
expo: {
38
version: VERSION,
39
-
name: 'Bitchsky',
40
-
slug: 'bitchsky',
41
-
scheme: ['bluesky', 'bitchsky'],
42
// owner: 'blueskysocial',
43
// owner: 'neema.brown',
44
runtimeVersion: {
···
50
newArchEnabled: false,
51
ios: {
52
supportsTablet: false,
53
-
bundleIdentifier: 'app.bitchsky',
54
config: {
55
usesNonExemptEncryption: false,
56
},
···
68
'Used to save images to your library.',
69
NSPhotoLibraryUsageDescription:
70
'Used for profile pictures, skeets, and other kinds of content',
71
-
CFBundleSpokenName: 'bitchsky.app',
72
CFBundleLocalizations: [
73
'en',
74
'an',
···
117
entitlements: {
118
'com.apple.developer.kernel.increased-memory-limit': true,
119
'com.apple.developer.kernel.extended-virtual-addressing': true,
120
-
'com.apple.security.application-groups': 'group.app.bitchsky',
121
},
122
privacyManifests: {
123
NSPrivacyCollectedDataTypes: [
···
186
backgroundColor: '#af5f5f',
187
},
188
googleServicesFile: './google-services.json',
189
-
package: 'app.bitchsky',
190
intentFilters: [
191
{
192
action: 'VIEW',
···
194
data: [
195
{
196
scheme: 'https',
197
-
host: 'bitchsky.app',
198
},
199
{
200
scheme: 'https',
···
425
// appExtensions: [
426
// {
427
// targetName: 'Share-with-Bluesky',
428
-
// bundleIdentifier: 'app.bitchsky.Share-with-Bluesky',
429
// entitlements: {
430
// 'com.apple.security.application-groups': [
431
-
// 'group.app.bitchsky',
432
// ],
433
// },
434
// },
435
// {
436
// targetName: 'BlueskyNSE',
437
-
// bundleIdentifier: 'app.bitchsky.BlueskyNSE',
438
// entitlements: {
439
// 'com.apple.security.application-groups': [
440
-
// 'group.app.bitchsky',
441
// ],
442
// },
443
// },
444
// {
445
// targetName: 'BlueskyClip',
446
-
// bundleIdentifier: 'app.bitchsky.AppClip',
447
// },
448
// ],
449
},
···
18
const IS_DEV = !IS_TESTFLIGHT || !IS_PRODUCTION
19
20
const ASSOCIATED_DOMAINS = [
21
+
'applinks:witchsky.app',
22
// When testing local services, enter an ngrok (et al) domain here. It must use a standard HTTP/HTTPS port.
23
...(IS_DEV || IS_TESTFLIGHT ? [] : []),
24
]
···
36
return {
37
expo: {
38
version: VERSION,
39
+
name: 'Witchsky',
40
+
slug: 'witchsky',
41
+
scheme: ['bluesky', 'witchsky'],
42
// owner: 'blueskysocial',
43
// owner: 'neema.brown',
44
runtimeVersion: {
···
50
newArchEnabled: false,
51
ios: {
52
supportsTablet: false,
53
+
bundleIdentifier: 'app.witchsky',
54
config: {
55
usesNonExemptEncryption: false,
56
},
···
68
'Used to save images to your library.',
69
NSPhotoLibraryUsageDescription:
70
'Used for profile pictures, skeets, and other kinds of content',
71
+
CFBundleSpokenName: 'witchsky.app',
72
CFBundleLocalizations: [
73
'en',
74
'an',
···
117
entitlements: {
118
'com.apple.developer.kernel.increased-memory-limit': true,
119
'com.apple.developer.kernel.extended-virtual-addressing': true,
120
+
'com.apple.security.application-groups': 'group.app.witchsky',
121
},
122
privacyManifests: {
123
NSPrivacyCollectedDataTypes: [
···
186
backgroundColor: '#af5f5f',
187
},
188
googleServicesFile: './google-services.json',
189
+
package: 'app.witchsky',
190
intentFilters: [
191
{
192
action: 'VIEW',
···
194
data: [
195
{
196
scheme: 'https',
197
+
host: 'witchsky.app',
198
},
199
{
200
scheme: 'https',
···
425
// appExtensions: [
426
// {
427
// targetName: 'Share-with-Bluesky',
428
+
// bundleIdentifier: 'app.witchsky.Share-with-Bluesky',
429
// entitlements: {
430
// 'com.apple.security.application-groups': [
431
+
// 'group.app.witchsky',
432
// ],
433
// },
434
// },
435
// {
436
// targetName: 'BlueskyNSE',
437
+
// bundleIdentifier: 'app.witchsky.BlueskyNSE',
438
// entitlements: {
439
// 'com.apple.security.application-groups': [
440
+
// 'group.app.witchsky',
441
// ],
442
// },
443
// },
444
// {
445
// targetName: 'BlueskyClip',
446
+
// bundleIdentifier: 'app.witchsky.AppClip',
447
// },
448
// ],
449
},
+3
-3
bitchsky-static-about/index.html
witchsky-static-about/index.html
+3
-3
bitchsky-static-about/index.html
witchsky-static-about/index.html
···
7
name="viewport"
8
content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1.00001, viewport-fit=cover"
9
/>
10
-
<title>About — Bitchsky</title>
11
-
<meta http-equiv="refresh" content="0;url=https://github.com/jollywhoppers/bitchsky-app">
12
13
<link rel="preload" as="font" type="font/woff2" href="/static/media/InterVariable.c504db5c06caaf7cdfba.woff2" crossorigin>
14
···
16
<link rel="stylesheet" href="sakura.css" type="text/css">
17
</head>
18
<script type="text/javascript">
19
-
window.location.href = "https://github.com/jollywhoppers/bitchsky-app";
20
</script>
21
<body>
22
<h1>Redirecting to GitHub README...</h1>
···
7
name="viewport"
8
content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1.00001, viewport-fit=cover"
9
/>
10
+
<title>About — Witchsky</title>
11
+
<meta http-equiv="refresh" content="0;url=https://tangled.org/jollywhoppers.com/witchsky.app/">
12
13
<link rel="preload" as="font" type="font/woff2" href="/static/media/InterVariable.c504db5c06caaf7cdfba.woff2" crossorigin>
14
···
16
<link rel="stylesheet" href="sakura.css" type="text/css">
17
</head>
18
<script type="text/javascript">
19
+
window.location.href = "https://tangled.org/jollywhoppers.com/witchsky.app/";
20
</script>
21
<body>
22
<h1>Redirecting to GitHub README...</h1>
bitchsky-static-about/normalize.css
witchsky-static-about/normalize.css
bitchsky-static-about/normalize.css
witchsky-static-about/normalize.css
+10
-10
bitchsky-static-about/privacy.html
witchsky-static-about/privacy.html
+10
-10
bitchsky-static-about/privacy.html
witchsky-static-about/privacy.html
···
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
···
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>
···
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 — Witchsky</title>
15
16
<link rel="preload" as="font" type="font/woff2" href="/static/media/InterVariable.c504db5c06caaf7cdfba.woff2" crossorigin>
17
···
22
<body>
23
24
25
+
<h1>Witchsky Privacy Policy</h1>
26
27
<p><em><strong>Last Updated:</strong> May 07, 2025</em></p>
28
29
+
<p>Welcome to Witchsky. This privacy policy explains our approach to your data when you use our application.</p>
30
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
<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 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
<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, 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
44
<h2>Cookies and Analytics</h2>
45
+
<p>Witchsky 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 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
53
</body>
54
</html>
bitchsky-static-about/sakura.css
witchsky-static-about/sakura.css
bitchsky-static-about/sakura.css
witchsky-static-about/sakura.css
+7
-7
bitchsky-static-about/tos.html
witchsky-static-about/tos.html
+7
-7
bitchsky-static-about/tos.html
witchsky-static-about/tos.html
···
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
···
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>
···
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 — Witchsky</title>
15
16
<link rel="preload" as="font" type="font/woff2" href="/static/media/InterVariable.c504db5c06caaf7cdfba.woff2" crossorigin>
17
···
22
<body>
23
24
25
+
<h1>Terms of Service for Witchsky</h1>
26
27
<p><em><strong>Last Updated:</strong> May 07, 2025</em></p>
28
29
<h2>Introduction</h2>
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
32
<h2>Your Agreement</h2>
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
35
<h2>Relationship to Other Services and Platforms</h2>
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
<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 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
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>
+2
-2
bskylink/src/routes/siteAssociation.ts
+2
-2
bskylink/src/routes/siteAssociation.ts
+1
-1
bskyweb/cmd/bskyweb/server.go
+1
-1
bskyweb/cmd/bskyweb/server.go
···
413
func (srv *Server) Download(c echo.Context) error {
414
ua := c.Request().UserAgent()
415
if strings.Contains(ua, "Android") {
416
-
return c.Redirect(http.StatusFound, "https://play.google.com/store/apps/details?id=app.bitchsky")
417
}
418
419
if strings.Contains(ua, "iPhone") || strings.Contains(ua, "iPad") || strings.Contains(ua, "iPod") {
···
413
func (srv *Server) Download(c echo.Context) error {
414
ua := c.Request().UserAgent()
415
if strings.Contains(ua, "Android") {
416
+
return c.Redirect(http.StatusFound, "https://play.google.com/store/apps/details?id=app.witchsky")
417
}
418
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
bskyweb/static/.well-known/apple-app-site-association
+1
-1
bskyweb/static/.well-known/assetlinks.json
+1
-1
bskyweb/static/.well-known/assetlinks.json
+3
-3
bskyweb/templates/base.html
+3
-3
bskyweb/templates/base.html
···
92
<link rel="icon" type="image/png" sizes="16x16" href="{{ staticCDNHost }}/static/favicon-16x16.png">
93
<link rel="mask-icon" href="{{ staticCDNHost }}/static/safari-pinned-tab.svg" color="#af5f5f">
94
<meta name="theme-color">
95
-
<meta name="application-name" content="Bitchsky">
96
<meta name="generator" content="bskyweb">
97
-
<meta property="og:site_name" content="Bitchsky Social">
98
<meta property="og:logo" content="{{ favicon }}">
99
<meta name="twitter:site" content="@bluesky" />
100
<link type="application/activity+json" href="" />
···
106
<div id="root">
107
<div id="splash">
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 -->
110
</div>
111
</div>
112
···
92
<link rel="icon" type="image/png" sizes="16x16" href="{{ staticCDNHost }}/static/favicon-16x16.png">
93
<link rel="mask-icon" href="{{ staticCDNHost }}/static/safari-pinned-tab.svg" color="#af5f5f">
94
<meta name="theme-color">
95
+
<meta name="application-name" content="Witchsky">
96
<meta name="generator" content="bskyweb">
97
+
<meta property="og:site_name" content="Witchsky Social">
98
<meta property="og:logo" content="{{ favicon }}">
99
<meta name="twitter:site" content="@bluesky" />
100
<link type="application/activity+json" href="" />
···
106
<div id="root">
107
<div id="splash">
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 Witchsky logo -->
110
</div>
111
</div>
112
+1
-1
bskyweb/templates/starterpack.html
+1
-1
bskyweb/templates/starterpack.html
+4
-4
docs/deploy-ota.md
+4
-4
docs/deploy-ota.md
···
60
```sh
61
> npx eas build:version:set -p ios
62
>
63
-
> Project @blueskysocial/bluesky with bundle identifier "app.bitchsky" is configured with buildNumber 1011.
64
> ✔ What version would you like to set? … 1009
65
>
66
> npx eas build:version:set -p android
67
>
68
-
> Project @blueskysocial/bluesky with application ID "app.bitchsky" is configured with versionCode 641.
69
> ✔ What version would you like to set? … 639
70
```
71
···
124
```sh
125
> npx eas build:version:set -p ios
126
>
127
-
> Project @blueskysocial/bluesky with bundle identifier "app.bitchsky" is configured with buildNumber 1009.
128
> ✔ What version would you like to set? … 1011
129
>
130
> npx eas build:version:set -p android
131
>
132
-
> Project @blueskysocial/bluesky with application ID "app.bitchsky" is configured with versionCode 639.
133
> ✔ What version would you like to set? … 641
134
```
135
···
60
```sh
61
> npx eas build:version:set -p ios
62
>
63
+
> Project @blueskysocial/bluesky with bundle identifier "app.witchsky" is configured with buildNumber 1011.
64
> ✔ What version would you like to set? … 1009
65
>
66
> npx eas build:version:set -p android
67
>
68
+
> Project @blueskysocial/bluesky with application ID "app.witchsky" is configured with versionCode 641.
69
> ✔ What version would you like to set? … 639
70
```
71
···
124
```sh
125
> npx eas build:version:set -p ios
126
>
127
+
> Project @blueskysocial/bluesky with bundle identifier "app.witchsky" is configured with buildNumber 1009.
128
> ✔ What version would you like to set? … 1011
129
>
130
> npx eas build:version:set -p android
131
>
132
+
> Project @blueskysocial/bluesky with application ID "app.witchsky" is configured with versionCode 639.
133
> ✔ What version would you like to set? … 641
134
```
135
+1
-1
functions/profile/[handleOrDID].ts
+1
-1
functions/profile/[handleOrDID].ts
+1
-1
functions/profile/[handleOrDID]/post/[rkey].ts
+1
-1
functions/profile/[handleOrDID]/post/[rkey].ts
+1
-1
google-services.json.example
+1
-1
google-services.json.example
+1
-1
justfile
+1
-1
justfile
+1
-1
modules/BlueskyClip/ViewController.swift
+1
-1
modules/BlueskyClip/ViewController.swift
+1
-1
modules/BlueskyNSE/BlueskyNSE.entitlements
+1
-1
modules/BlueskyNSE/BlueskyNSE.entitlements
+1
-1
modules/BlueskyNSE/NotificationService.swift
+1
-1
modules/BlueskyNSE/NotificationService.swift
+1
-1
modules/expo-background-notification-handler/android/src/main/java/expo/modules/backgroundnotificationhandler/NotificationPrefs.kt
+1
-1
modules/expo-background-notification-handler/android/src/main/java/expo/modules/backgroundnotificationhandler/NotificationPrefs.kt
+1
-1
modules/expo-background-notification-handler/ios/ExpoBackgroundNotificationHandlerModule.swift
+1
-1
modules/expo-background-notification-handler/ios/ExpoBackgroundNotificationHandlerModule.swift
+2
-2
modules/expo-receive-android-intents/android/build.gradle
+2
-2
modules/expo-receive-android-intents/android/build.gradle
···
2
apply plugin: 'kotlin-android'
3
apply plugin: 'maven-publish'
4
5
-
group = 'app.bitchsky.exporeceiveandroidintents'
6
version = '0.4.1'
7
8
buildscript {
···
65
}
66
}
67
68
-
namespace "app.bitchsky.exporeceiveandroidintents"
69
defaultConfig {
70
minSdkVersion safeExtGet("minSdkVersion", 21)
71
targetSdkVersion safeExtGet("targetSdkVersion", 34)
···
2
apply plugin: 'kotlin-android'
3
apply plugin: 'maven-publish'
4
5
+
group = 'app.witchsky.exporeceiveandroidintents'
6
version = '0.4.1'
7
8
buildscript {
···
65
}
66
}
67
68
+
namespace "app.witchsky.exporeceiveandroidintents"
69
defaultConfig {
70
minSdkVersion safeExtGet("minSdkVersion", 21)
71
targetSdkVersion safeExtGet("targetSdkVersion", 34)
+1
-1
modules/expo-receive-android-intents/android/src/main/java/xyz/blueskyweb/app/exporeceiveandroidintents/ExpoReceiveAndroidIntentsModule.kt
+1
-1
modules/expo-receive-android-intents/android/src/main/java/xyz/blueskyweb/app/exporeceiveandroidintents/ExpoReceiveAndroidIntentsModule.kt
+1
-1
modules/expo-receive-android-intents/expo-module.config.json
+1
-1
modules/expo-receive-android-intents/expo-module.config.json
+2
-2
package.json
+2
-2
package.json
···
1
{
2
-
"name": "bitchsky-app",
3
"version": "1.110.1",
4
"private": true,
5
"engines": {
···
52
"e2e:run": "maestro test __e2e__",
53
"perf:test": "NODE_ENV=test maestro test",
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",
56
"perf:test:results": "NODE_ENV=test flashlight report .perf/results.json",
57
"perf:measure": "NODE_ENV=test flashlight measure",
58
"intl:build": "yarn intl:extract:all && yarn intl:compile",
···
1
{
2
+
"name": "witchsky-app",
3
"version": "1.110.1",
4
"private": true,
5
"engines": {
···
52
"e2e:run": "maestro test __e2e__",
53
"perf:test": "NODE_ENV=test maestro test",
54
"perf:test:run": "NODE_ENV=test maestro test __e2e__/perf-test.yml",
55
+
"perf:test:measure": "NODE_ENV=test flashlight test --bundleId app.witchsky --testCommand \"yarn perf:test\" --duration 150000 --resultsFilePath .perf/results.json",
56
"perf:test:results": "NODE_ENV=test flashlight report .perf/results.json",
57
"perf:measure": "NODE_ENV=test flashlight measure",
58
"intl:build": "yarn intl:extract:all && yarn intl:compile",
+1
-1
plugins/notificationsExtension/withAppEntitlements.js
+1
-1
plugins/notificationsExtension/withAppEntitlements.js
+1
-1
plugins/notificationsExtension/withExtensionEntitlements.js
+1
-1
plugins/notificationsExtension/withExtensionEntitlements.js
+1
-1
plugins/starterPackAppClipExtension/withAppEntitlements.js
+1
-1
plugins/starterPackAppClipExtension/withAppEntitlements.js
+1
-1
plugins/starterPackAppClipExtension/withClipEntitlements.js
+1
-1
plugins/starterPackAppClipExtension/withClipEntitlements.js
+1
-1
src/components/WelcomeModal.tsx
+1
-1
src/components/WelcomeModal.tsx
+2
-2
src/components/dialogs/LinkWarning.tsx
+2
-2
src/components/dialogs/LinkWarning.tsx
···
64
label={
65
potentiallyMisleading
66
? _(msg`Potentially misleading link warning`)
67
-
: _(msg`Leaving Bitchsky`)
68
}>
69
<View style={[a.gap_2xl]}>
70
<View style={[a.gap_sm]}>
···
72
{potentiallyMisleading ? (
73
<Trans>Potentially misleading link</Trans>
74
) : (
75
-
<Trans>Leaving Bitchsky</Trans>
76
)}
77
</Text>
78
<Text style={[t.atoms.text_contrast_high, a.text_md, a.leading_snug]}>
···
64
label={
65
potentiallyMisleading
66
? _(msg`Potentially misleading link warning`)
67
+
: _(msg`Leaving Witchsky`)
68
}>
69
<View style={[a.gap_2xl]}>
70
<View style={[a.gap_sm]}>
···
72
{potentiallyMisleading ? (
73
<Trans>Potentially misleading link</Trans>
74
) : (
75
+
<Trans>Leaving Witchsky</Trans>
76
)}
77
</Text>
78
<Text style={[t.atoms.text_contrast_high, a.text_md, a.leading_snug]}>
+1
-1
src/lib/constants.ts
+1
-1
src/lib/constants.ts
···
11
export const BSKY_SERVICE_DID = 'did:web:bsky.social'
12
export const PUBLIC_BSKY_SERVICE = 'https://public.api.bsky.app'
13
export const DEFAULT_SERVICE = BSKY_SERVICE
14
-
export const HELP_DESK_URL = `https://github.com/jollywhoppers/bitchsky-app/issues/new/choose`
15
export const EMBED_SERVICE = 'https://embed.bsky.app'
16
export const EMBED_SCRIPT = `${EMBED_SERVICE}/static/embed.js`
17
export const BSKY_DOWNLOAD_URL = 'https://bsky.app/download'
···
11
export const BSKY_SERVICE_DID = 'did:web:bsky.social'
12
export const PUBLIC_BSKY_SERVICE = 'https://public.api.bsky.app'
13
export const DEFAULT_SERVICE = BSKY_SERVICE
14
+
export const HELP_DESK_URL = `https://tangled.org/jollywhoppers.com/witchsky.app/issues/new`
15
export const EMBED_SERVICE = 'https://embed.bsky.app'
16
export const EMBED_SCRIPT = `${EMBED_SERVICE}/static/embed.js`
17
export const BSKY_DOWNLOAD_URL = 'https://bsky.app/download'
+1
-1
src/lib/notifications/notifications.ts
+1
-1
src/lib/notifications/notifications.ts
+2
-2
src/lib/strings/embed-player.ts
+2
-2
src/lib/strings/embed-player.ts
+1
-1
src/lib/strings/headings.ts
+1
-1
src/lib/strings/headings.ts
+1
-1
src/lib/strings/starter-pack.ts
+1
-1
src/lib/strings/starter-pack.ts
···
66
rkey: string,
67
): string | null {
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}`
70
}
71
72
export function httpStarterPackUriToAtUri(httpUri?: string): string | null {
···
66
rkey: string,
67
): string | null {
68
if (!name || !rkey) return null
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
}
71
72
export function httpStarterPackUriToAtUri(httpUri?: string): string | null {
+6
-6
src/lib/strings/url-helpers.ts
+6
-6
src/lib/strings/url-helpers.ts
···
7
import {startUriToStarterPackUri} from '#/lib/strings/starter-pack'
8
import {logger} from '#/logger'
9
10
-
export const BSKY_APP_HOST = 'https://bitchsky.app'
11
const BSKY_TRUSTED_HOSTS = [
12
-
'bitchsky\\.app',
13
-
'bitchsky\\.app',
14
'bsky\\.app',
15
'bsky\\.social',
16
'blueskyweb\\.xyz',
···
81
82
export function toShareUrl(url: string): string {
83
if (!url.startsWith('https')) {
84
-
const urlp = new URL('https://bitchsky.app')
85
urlp.pathname = url
86
url = urlp.toString()
87
}
···
107
url.startsWith('https://bsky.app/') ||
108
(url.startsWith('https://deer.social/') &&
109
!url.startsWith('https://deer.social/about')) ||
110
-
(url.startsWith('https://bitchsky.app/') &&
111
-
!url.startsWith('https://bitchsky.app/about'))
112
)
113
}
114
···
7
import {startUriToStarterPackUri} from '#/lib/strings/starter-pack'
8
import {logger} from '#/logger'
9
10
+
export const BSKY_APP_HOST = 'https://witchsky.app'
11
const BSKY_TRUSTED_HOSTS = [
12
+
'witchsky\\.app',
13
+
'witchsky\\.app',
14
'bsky\\.app',
15
'bsky\\.social',
16
'blueskyweb\\.xyz',
···
81
82
export function toShareUrl(url: string): string {
83
if (!url.startsWith('https')) {
84
+
const urlp = new URL('https://witchsky.app')
85
urlp.pathname = url
86
url = urlp.toString()
87
}
···
107
url.startsWith('https://bsky.app/') ||
108
(url.startsWith('https://deer.social/') &&
109
!url.startsWith('https://deer.social/about')) ||
110
+
(url.startsWith('https://witchsky.app/') &&
111
+
!url.startsWith('https://witchsky.app/about'))
112
)
113
}
114
+2
-2
src/screens/Settings/AboutSettings.tsx
+2
-2
src/screens/Settings/AboutSettings.tsx
···
78
<Layout.Content>
79
<SettingsList.Container>
80
<SettingsList.LinkItem
81
-
to="https://bitchsky.app/about/tos"
82
label={_(msg`Terms of Service`)}>
83
<SettingsList.ItemIcon icon={NewspaperIcon} />
84
<SettingsList.ItemText>
···
86
</SettingsList.ItemText>
87
</SettingsList.LinkItem>
88
<SettingsList.LinkItem
89
-
to="https://bitchsky.app/about/privacy"
90
label={_(msg`Privacy Policy`)}>
91
<SettingsList.ItemIcon icon={NewspaperIcon} />
92
<SettingsList.ItemText>
···
78
<Layout.Content>
79
<SettingsList.Container>
80
<SettingsList.LinkItem
81
+
to="https://witchsky.app/about/tos"
82
label={_(msg`Terms of Service`)}>
83
<SettingsList.ItemIcon icon={NewspaperIcon} />
84
<SettingsList.ItemText>
···
86
</SettingsList.ItemText>
87
</SettingsList.LinkItem>
88
<SettingsList.LinkItem
89
+
to="https://witchsky.app/about/privacy"
90
label={_(msg`Privacy Policy`)}>
91
<SettingsList.ItemIcon icon={NewspaperIcon} />
92
<SettingsList.ItemText>
+1
-1
src/screens/Settings/NotificationSettings/index.tsx
+1
-1
src/screens/Settings/NotificationSettings/index.tsx
+3
-3
src/screens/Signup/StepInfo/index.tsx
+3
-3
src/screens/Signup/StepInfo/index.tsx
···
170
<View style={[a.gap_xl]}>
171
<Text style={[a.gap_md, a.leading_normal]}>
172
<Trans>
173
-
Bitchsky is part of the{' '}
174
{
175
<InlineLinkText
176
label={_(msg`ATmosphere`)}
···
216
<Trans>
217
Don't have an account provider or an existing Bluesky account? To
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 */}
220
{
221
<InlineLinkText label={_(msg`bsky.app`)} to="https://bsky.app">
222
<Trans>bsky.app</Trans>
223
</InlineLinkText>
224
}{' '}
225
-
first, then return to Bitchsky and log in with the account you
226
created.
227
</Trans>
228
</Text>
···
170
<View style={[a.gap_xl]}>
171
<Text style={[a.gap_md, a.leading_normal]}>
172
<Trans>
173
+
Witchsky is part of the{' '}
174
{
175
<InlineLinkText
176
label={_(msg`ATmosphere`)}
···
216
<Trans>
217
Don't have an account provider or an existing Bluesky account? To
218
create a new account on a Bluesky-hosted PDS, sign up through{' '}
219
+
{/* TODO: Xan: change to say sign up for a Witchsky account */}
220
{
221
<InlineLinkText label={_(msg`bsky.app`)} to="https://bsky.app">
222
<Trans>bsky.app</Trans>
223
</InlineLinkText>
224
}{' '}
225
+
first, then return to Witchsky and log in with the account you
226
created.
227
</Trans>
228
</Text>
+1
-1
src/screens/StarterPack/StarterPackLandingScreen.tsx
+1
-1
src/screens/StarterPack/StarterPackLandingScreen.tsx
+1
-1
src/state/persisted/schema.ts
+1
-1
src/state/persisted/schema.ts
+1
-1
src/state/queries/constellation.ts
+1
-1
src/state/queries/constellation.ts
+1
-1
src/view/com/auth/SplashScreen.web.tsx
+1
-1
src/view/com/auth/SplashScreen.web.tsx
+2
-2
src/view/screens/PrivacyPolicy.tsx
+2
-2
src/view/screens/PrivacyPolicy.tsx
+2
-2
src/view/screens/TermsOfService.tsx
+2
-2
src/view/screens/TermsOfService.tsx
+2
-2
src/view/shell/Drawer.tsx
+2
-2
src/view/shell/Drawer.tsx
···
697
<InlineLinkText
698
style={[a.text_md]}
699
label={_(msg`Terms of Service`)}
700
-
to="https://bitchsky.app/about/tos">
701
<Trans>Terms of Service</Trans>
702
</InlineLinkText>
703
<InlineLinkText
704
style={[a.text_md]}
705
-
to="https://bitchsky.app/about/privacy"
706
label={_(msg`Privacy Policy`)}>
707
<Trans>Privacy Policy</Trans>
708
</InlineLinkText>
···
697
<InlineLinkText
698
style={[a.text_md]}
699
label={_(msg`Terms of Service`)}
700
+
to="https://witchsky.app/about/tos">
701
<Trans>Terms of Service</Trans>
702
</InlineLinkText>
703
<InlineLinkText
704
style={[a.text_md]}
705
+
to="https://witchsky.app/about/privacy"
706
label={_(msg`Privacy Policy`)}>
707
<Trans>Privacy Policy</Trans>
708
</InlineLinkText>
+1
-1
web/index.html
+1
-1
web/index.html
···
106
">
107
<h1 lang="en">JavaScript Required</h1>
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>.
110
</noscript>
111
112
<!-- The root element for your Expo app. -->
···
106
">
107
<h1 lang="en">JavaScript Required</h1>
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://tangled.org/jollywhoppers.com/witchsky.app/">https://tangled.org/jollywhoppers.com/witchsky.app/</a>.
110
</noscript>
111
112
<!-- The root element for your Expo app. -->