+4
-4
README.md
+4
-4
README.md
···
1
-
# Catsky Social App
2
3
-
Welcome friends! This is the codebase for the Catsky Social app.
4
5
Get the app itself:
6
7
- **Web: social.shatteredsky.net**
8
9
-
<a href="https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://github.com/NekoDrone/catsky-social">
10
<img src="https://github.com/ImranR98/Obtainium/blob/main/assets/graphics/badge_obtainium.png?raw=true"
11
alt="Get it on Obtainium" align="center" height="54" /></a>
12
···
27
28
The Bluesky Social application encompasses a set of schemas and APIs built in the overall AT Protocol framework. The namespace for these "Lexicons" is `app.bsky.*`.
29
30
-
Catsky social is a soft fork of Bluesky social, and thus will also use those lexicons.
31
32
## Contributions
33
···
1
+
# Shattered Sky Social App
2
3
+
This is the codebase for the Shattered Sky Social app.
4
5
Get the app itself:
6
7
- **Web: social.shatteredsky.net**
8
9
+
<a href="https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://github.com/Teqed/social-app">
10
<img src="https://github.com/ImranR98/Obtainium/blob/main/assets/graphics/badge_obtainium.png?raw=true"
11
alt="Get it on Obtainium" align="center" height="54" /></a>
12
···
27
28
The Bluesky Social application encompasses a set of schemas and APIs built in the overall AT Protocol framework. The namespace for these "Lexicons" is `app.bsky.*`.
29
30
+
Shattered Sky social is a soft fork of Bluesky social, and thus will also use those lexicons.
31
32
## Contributions
33
+8
-4
__tests__/lib/string.test.ts
+8
-4
__tests__/lib/string.test.ts
···
267
})
268
269
describe('toShareUrl', () => {
270
-
const inputs = ['https://catsky.social', '/3jk7x4irgv52r', 'item/test/123']
271
const outputs = [
272
-
'https://catsky.social',
273
-
'https://catsky.social/3jk7x4irgv52r',
274
-
'https://catsky.social/item/test/123',
275
]
276
277
it('appends https, when not present', () => {
···
267
})
268
269
describe('toShareUrl', () => {
270
+
const inputs = [
271
+
'https://social.shatteredsky.net',
272
+
'/3jk7x4irgv52r',
273
+
'item/test/123',
274
+
]
275
const outputs = [
276
+
'https://social.shatteredsky.net',
277
+
'https://social.shatteredsky.net/3jk7x4irgv52r',
278
+
'https://social.shatteredsky.net/item/test/123',
279
]
280
281
it('appends https, when not present', () => {
+6
-6
app.config.js
+6
-6
app.config.js
···
34
return {
35
expo: {
36
version: VERSION,
37
-
name: 'Catsky',
38
-
slug: 'catsky',
39
-
scheme: 'catsky',
40
-
owner: 'catskysocial',
41
runtimeVersion: {
42
policy: 'appVersion',
43
},
···
152
backgroundColor: '#1185FE',
153
},
154
googleServicesFile: './google-services.json',
155
-
package: 'social.catsky',
156
intentFilters: [
157
{
158
action: 'VIEW',
···
200
USE_SENTRY && [
201
'@sentry/react-native/expo',
202
{
203
-
organization: 'catskysocial',
204
project: 'app',
205
url: 'https://sentry.io',
206
},
···
34
return {
35
expo: {
36
version: VERSION,
37
+
name: 'Shattered Sky',
38
+
slug: 'shatteredsky',
39
+
scheme: 'shatteredsky',
40
+
owner: 'teq',
41
runtimeVersion: {
42
policy: 'appVersion',
43
},
···
152
backgroundColor: '#1185FE',
153
},
154
googleServicesFile: './google-services.json',
155
+
package: 'net.shatteredsky.social',
156
intentFilters: [
157
{
158
action: 'VIEW',
···
200
USE_SENTRY && [
201
'@sentry/react-native/expo',
202
{
203
+
organization: 'Teqed',
204
project: 'app',
205
url: 'https://sentry.io',
206
},
+4
-4
bskyweb/templates/base.html
+4
-4
bskyweb/templates/base.html
···
9
-->
10
<link rel="preconnect" href="https://bsky.social">
11
<link rel="preconnect" href="https://go.bsky.app">
12
-
<title>{%- block head_title -%}Catsky{%- endblock -%}</title>
13
14
<!-- Hello Humans! API docs at https://atproto.com -->
15
···
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="#1185fe">
94
<meta name="theme-color">
95
-
<meta name="application-name" content="Catsky">
96
<meta name="generator" content="bskyweb">
97
-
<meta property="og:site_name" content="Catsky Social">
98
<meta property="og:logo" content="{{ favicon }}">
99
<meta name="twitter:site" content="@bluesky" />
100
<link type="application/activity+json" href="" />
···
113
<noscript>
114
<h1 lang="en">JavaScript Required</h1>
115
<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.
116
-
<p lang="en">Learn more about Bluesky at <a href="https://bsky.social">bsky.social</a>, <a href="https://atproto.com">atproto.com</a>, and this fork of Bluesky (Catsky) at <a href="https://github.com/NekoDrone/catsky-social/">GitHub</a>.
117
{% block noscript_extra %}{% endblock %}
118
</noscript>
119
{% endblock -%}
···
9
-->
10
<link rel="preconnect" href="https://bsky.social">
11
<link rel="preconnect" href="https://go.bsky.app">
12
+
<title>{%- block head_title -%}Shattered Sky{%- endblock -%}</title>
13
14
<!-- Hello Humans! API docs at https://atproto.com -->
15
···
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="#1185fe">
94
<meta name="theme-color">
95
+
<meta name="application-name" content="Shattered Sky">
96
<meta name="generator" content="bskyweb">
97
+
<meta property="og:site_name" content="Shattered Sky">
98
<meta property="og:logo" content="{{ favicon }}">
99
<meta name="twitter:site" content="@bluesky" />
100
<link type="application/activity+json" href="" />
···
113
<noscript>
114
<h1 lang="en">JavaScript Required</h1>
115
<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.
116
+
<p lang="en">Learn more about Bluesky at <a href="https://bsky.social">bsky.social</a>, <a href="https://atproto.com">atproto.com</a>, and this fork of Bluesky (Shattered Sky) at <a href="https://github.com/Teqed/social-app/">GitHub</a>.
117
{% block noscript_extra %}{% endblock %}
118
</noscript>
119
{% endblock -%}
+1
-1
bskyweb/templates/error.html
+1
-1
bskyweb/templates/error.html
+3
-3
bskyweb/templates/feed.html
+3
-3
bskyweb/templates/feed.html
···
2
3
{% block head_title %}
4
{%- if feedView -%}
5
-
{{ feedView.DisplayName }} by @{{ feedView.Creator.Handle }} | Catsky Feed
6
{%- else -%}
7
-
Catsky
8
{%- endif -%}
9
{% endblock %}
10
11
{% block html_head_extra -%}
12
{%- if feedView -%}
13
-
<meta property="og:site_name" content="Catsky Social">
14
<meta property="og:type" content="website">
15
{%- if requestURI %}
16
<meta property="og:url" content="{{ requestURI }}">
···
2
3
{% block head_title %}
4
{%- if feedView -%}
5
+
{{ feedView.DisplayName }} by @{{ feedView.Creator.Handle }} | Shattered Sky Feed
6
{%- else -%}
7
+
Shattered Sky
8
{%- endif -%}
9
{% endblock %}
10
11
{% block html_head_extra -%}
12
{%- if feedView -%}
13
+
<meta property="og:site_name" content="Shattered Sky">
14
<meta property="og:type" content="website">
15
{%- if requestURI %}
16
<meta property="og:url" content="{{ requestURI }}">
+7
-7
bskyweb/templates/home.html
+7
-7
bskyweb/templates/home.html
···
1
{% extends "base.html" %}
2
3
-
{% block head_title %}Catsky{% endblock %}
4
5
{% block html_head_extra -%}
6
-
<meta property="og:title" content="Catsky" />
7
-
<meta name="twitter:title" content="Catsky" />
8
9
-
<meta name="description" content="mrrp mrrowww media as it should be. find your meowmunity among hundreds of cats, unleash your meows, and have some fun again :3" />
10
<meta name="og:description" content="mrrp mrrowww media as it should be. find your meowmunity among hundreds of cats, unleash your meows, and have some fun again :3" />
11
<meta name="twitter:description" content="mrrp mrrowww media as it should be. find your meowmunity among hundreds of cats, unleash your meows, and have some fun again :3" />
12
13
-
<meta property="og:url" content="https://catsky.social" />
14
-
<meta name="twitter:url" content="https://catsky.social" />
15
-
<link rel="canonical" href="https://catsky.social" />
16
17
<meta property="og:image" content="https://pds.tgirl.cloud/xrpc/com.atproto.sync.getBlob?did=did:plc:ctg5hooybw3rquejsfebsegs&cid=bafkreianap3iqgxlifqssuhut2ggiuitpmltw3lfvzq7tnzbsv26npzfxq" />
18
<meta property="twitter:image" content="https://pds.tgirl.cloud/xrpc/com.atproto.sync.getBlob?did=did:plc:ctg5hooybw3rquejsfebsegs&cid=bafkreianap3iqgxlifqssuhut2ggiuitpmltw3lfvzq7tnzbsv26npzfxq" />
···
1
{% extends "base.html" %}
2
3
+
{% block head_title %}Shattered Sky{% endblock %}
4
5
{% block html_head_extra -%}
6
+
<meta property="og:title" content="Shattered Sky" />
7
+
<meta name="twitter:title" content="Shattered Sky" />
8
9
+
<meta name="description" content="what's it all for..?" />
10
<meta name="og:description" content="mrrp mrrowww media as it should be. find your meowmunity among hundreds of cats, unleash your meows, and have some fun again :3" />
11
<meta name="twitter:description" content="mrrp mrrowww media as it should be. find your meowmunity among hundreds of cats, unleash your meows, and have some fun again :3" />
12
13
+
<meta property="og:url" content="https://social.shatteredsky.net" />
14
+
<meta name="twitter:url" content="https://social.shatteredsky.net" />
15
+
<link rel="canonical" href="https://social.shatteredsky.net" />
16
17
<meta property="og:image" content="https://pds.tgirl.cloud/xrpc/com.atproto.sync.getBlob?did=did:plc:ctg5hooybw3rquejsfebsegs&cid=bafkreianap3iqgxlifqssuhut2ggiuitpmltw3lfvzq7tnzbsv26npzfxq" />
18
<meta property="twitter:image" content="https://pds.tgirl.cloud/xrpc/com.atproto.sync.getBlob?did=did:plc:ctg5hooybw3rquejsfebsegs&cid=bafkreianap3iqgxlifqssuhut2ggiuitpmltw3lfvzq7tnzbsv26npzfxq" />
+3
-3
bskyweb/templates/post.html
+3
-3
bskyweb/templates/post.html
+4
-4
bskyweb/templates/profile.html
+4
-4
bskyweb/templates/profile.html
···
2
3
{% block head_title %}
4
{%- if profileView -%}
5
-
@{{ profileView.Handle }} on Catsky
6
{%- else -%}
7
-
Catsky
8
{%- endif -%}
9
{% endblock %}
10
11
{% block html_head_extra -%}
12
-
<meta property="og:site_name" content="Catsky Social">
13
<meta property="og:type" content="profile">
14
{%- if requestURI %}
15
<meta property="og:url" content="{{ requestURI }}">
···
51
<meta property="og:description" content="This profile requires authentication to view.">
52
<meta property="twitter:description" content="This profile requires authentication to view.">
53
{% endif %}
54
-
55
<script type="application/ld+json">
56
{
57
"@context": "https://schema.org",
···
2
3
{% block head_title %}
4
{%- if profileView -%}
5
+
@{{ profileView.Handle }} on Shattered Sky
6
{%- else -%}
7
+
Shattered Sky
8
{%- endif -%}
9
{% endblock %}
10
11
{% block html_head_extra -%}
12
+
<meta property="og:site_name" content="Shattered Sky">
13
<meta property="og:type" content="profile">
14
{%- if requestURI %}
15
<meta property="og:url" content="{{ requestURI }}">
···
51
<meta property="og:description" content="This profile requires authentication to view.">
52
<meta property="twitter:description" content="This profile requires authentication to view.">
53
{% endif %}
54
+
55
<script type="application/ld+json">
56
{
57
"@context": "https://schema.org",
+3
-3
default.nix
+3
-3
default.nix
···
2
{ lib, buildNpmPackage }:
3
4
buildNpmPackage {
5
-
pname = "catsky-social";
6
version = "0.1.0";
7
8
src = ./.;
···
10
npmDepsHash = lib.fakeHash;
11
12
meta = {
13
-
description = "soft social-app fork with niche toggles stolen from deer/zepplin and catppuccin'd ";
14
-
homepage = "https://github.com/NekoDrone/catsky-social";
15
license = lib.licenses.mit;
16
maintainers = with lib.maintainers; [ ];
17
mainProgram = "example";
···
2
{ lib, buildNpmPackage }:
3
4
buildNpmPackage {
5
+
pname = "shatteredsky-social";
6
version = "0.1.0";
7
8
src = ./.;
···
10
npmDepsHash = lib.fakeHash;
11
12
meta = {
13
+
description = "social-app fork with alternative appview; toggles from deer/zepplin; catppuccin'd ";
14
+
homepage = "https://github.com/Teqed/social-app";
15
license = lib.licenses.mit;
16
maintainers = with lib.maintainers; [ ];
17
mainProgram = "example";
+2
-2
docs/android-builds.md
+2
-2
docs/android-builds.md
···
2
3
Android builds are done via CI to avoid EAS (expo) and are published via releases to avoid artifact expiry and allow [obtainium](https://obtainium.imranr.dev/) to download and auto-update the app.
4
5
-
- "Catsky build" is for testing/etc NOT for release as these artifacts will expiry and won't be pushed out to obtainium users
6
-
- "Catsky release" is for production and will be pushed out to obtainium users and artifacts won't expire
···
2
3
Android builds are done via CI to avoid EAS (expo) and are published via releases to avoid artifact expiry and allow [obtainium](https://obtainium.imranr.dev/) to download and auto-update the app.
4
5
+
- "shatteredsky build" is for testing/etc NOT for release as these artifacts will expiry and won't be pushed out to obtainium users
6
+
- "shatteredsky release" is for production and will be pushed out to obtainium users and artifacts won't expire
+1
-1
flake.nix
+1
-1
flake.nix
+1
-1
google-services.json.example
+1
-1
google-services.json.example
+4
-4
justfile
+4
-4
justfile
···
36
postbuild-web:
37
# after doing the expo web build, we compress the bskyweb folder and send it to vps.
38
# no need to build the go binary as we'll do that on vps.
39
-
tar -czf catskyweb.tar.gz bskyweb/
40
-
rsync -avz -e "ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no" catskyweb.tar.gz ci@${VPS_IP}:/tmp/catsky/
41
-
rsync -avz -e "ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no" scripts/seraphDeploy.sh ci@${VPS_IP}:/tmp/catsky/
42
-
43
[group('dev')]
44
dev-android-setup: prebuild-android
45
yarn android
···
36
postbuild-web:
37
# after doing the expo web build, we compress the bskyweb folder and send it to vps.
38
# no need to build the go binary as we'll do that on vps.
39
+
tar -czf shatteredskyweb.tar.gz bskyweb/
40
+
rsync -avz -e "ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no" shatteredskyweb.tar.gz ci@${VPS_IP}:/tmp/shatteredsky-social/
41
+
rsync -avz -e "ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no" scripts/seraphDeploy.sh ci@${VPS_IP}:/tmp/shatteredsky-social/
42
+
43
[group('dev')]
44
dev-android-setup: prebuild-android
45
yarn android
+2
-2
scripts/seraphDeploy.sh
+2
-2
scripts/seraphDeploy.sh
+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://api.shatteredsky.net'
13
export const DEFAULT_SERVICE = BSKY_SERVICE
14
-
export const HELP_DESK_URL = `https://github.com/NekoDrone/catsky-social/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://social.shatteredsky.net/download'
···
11
export const BSKY_SERVICE_DID = 'did:web:bsky.social'
12
export const PUBLIC_BSKY_SERVICE = 'https://api.shatteredsky.net'
13
export const DEFAULT_SERVICE = BSKY_SERVICE
14
+
export const HELP_DESK_URL = `https://github.com/Teqed/social-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://social.shatteredsky.net/download'
+1
-1
src/lib/strings/headings.ts
+1
-1
src/lib/strings/headings.ts
+1
-1
src/lib/strings/url-helpers.ts
+1
-1
src/lib/strings/url-helpers.ts