Compare commits

...

195 commits

Author SHA1 Message Date
OTKUSteyler
bc1c315089 Merge remote-tracking branch 'upstream/main' 2026-02-23 19:27:04 +01:00
OTKUSteyler
bdb8216baa
Delete src/assets/icons/Cumcord.png 2026-02-15 23:43:49 +01:00
OTKUSteyler
f6972bb964
Add files via upload 2026-02-15 23:43:27 +01:00
OTKUSteyler
ec908963bf
Delete src/assets/icons/shiggy.png 2026-02-15 23:43:14 +01:00
OTKUSteyler
0a901de7ef
Add files via upload 2026-02-15 23:42:54 +01:00
OTKUSteyler
0ae6b217c3
Add files via upload 2026-02-15 23:41:55 +01:00
OTKUSteyler
30e325d1e6
Update build.mjs 2026-02-08 23:05:19 +01:00
OTKUSteyler
b17686afdf
Update build.mjs 2026-02-08 23:03:58 +01:00
OTKUSteyler
eb72692e57 Merge remote-tracking branch 'upstream/main' 2026-02-08 20:22:17 +01:00
OTKUSteyler
ee83314fb6
Merge branch 'kmmiio99o:main' into main 2026-01-31 23:15:54 +01:00
OTKUSteyler
feb03a25f6
Merge branch 'kmmiio99o:main' into main 2026-01-26 20:35:32 +01:00
OTKUSteyler
add94265ae
Update index.ts 2026-01-25 16:14:51 +01:00
OTKUSteyler
dbb0b4bd9e
Update label from 'GoonCold' to '💦GoonCord💦' 2026-01-25 16:12:31 +01:00
OTKUSteyler
1f3a5262b7
Rename ShiggyCord to GoonCord in settings 2026-01-25 16:06:46 +01:00
OTKUSteyler
1450dc20af
Merge branch 'kmmiio99o:main' into main 2026-01-25 11:59:31 +01:00
OTKUSteyler
9fd141a158
Enhance module fixes with comments and error handling
Added a comment explaining the purpose of the module fixes and improved error handling for timestamp localization.
2026-01-17 23:01:11 +01:00
OTKUSteyler
68660a2e06
Improve timestamp handling and scoreCommand patching
Refactor timestamp handling and patch scoreCommand for null checks.
2026-01-17 23:00:06 +01:00
OTKUSteyler
9984b28e45
Update index.ts 2026-01-17 20:45:52 +00:00
OTKUSteyler
2afe338c87
Merge branch 'kmmiio99o:main' into main 2026-01-16 21:27:51 +00:00
OTKUSteyler
ef3fd12199
Update build.mjs 2026-01-14 20:38:58 +00:00
OTKUSteyler
f111ad4cea
Update build.yaml 2026-01-14 20:37:01 +00:00
OTKUSteyler
d85f28012d Merge remote-tracking branch 'upstream/main' 2026-01-14 21:35:28 +01:00
OTKUSteyler
e49f1f9f06
Update index.ts 2026-01-14 20:29:42 +00:00
OTKUSteyler
1ef5817cdb
Fix formatting in release.yml 2026-01-14 20:28:06 +00:00
OTKUSteyler
075a83c41c
Update build.mjs 2026-01-14 20:26:21 +00:00
OTKUSteyler
7758595fbd
Add files via upload 2026-01-14 05:10:25 +00:00
OTKUSteyler
e10cd63ea0
Update debug.ts 2026-01-14 05:03:10 +01:00
OTKUSteyler
08f2eba392
Update serve.mjs 2026-01-14 04:53:54 +01:00
OTKUSteyler
e201bc5839
Merge branch 'kmmiio99o:main' into main 2026-01-10 19:00:16 +00:00
OTKUSteyler
110ecaf19a
Rename output file from shiggycord.js to gooncord.js 2026-01-09 23:27:55 +00:00
OTKUSteyler
68281d0b6c
Delete Stuff/All I Want For Christmas (Is Fark).mp3 2026-01-09 23:22:14 +00:00
OTKUSteyler
02ebd331de
Delete Stuff/uwu 2026-01-09 23:21:56 +00:00
OTKUSteyler
eeb9c9ddcb
Fix missing newline at end of debug.ts 2026-01-05 22:49:12 +00:00
OTKUSteyler
ac9fef7e03
Fix missing newline at end of background.tsx 2026-01-05 22:46:48 +00:00
OTKUSteyler
ac5caa747d
Fix missing newline at end of debug.ts 2026-01-05 22:44:11 +00:00
OTKUSteyler
4f7df6de63
Delete src/core/ui/settings/pages/Plugins/CorePlugins.tsx 2026-01-05 16:17:23 +00:00
OTKUSteyler
90d4d47303 Merge branch 'dev' 2026-01-05 17:07:46 +01:00
OTKUSteyler
dcd8811652 Revert "Merge remote-tracking branch 'upstream/main' into dev"
This reverts commit 81b32a491e, reversing
changes made to 179679f215.
2026-01-05 01:36:09 +01:00
OTKUSteyler
225c1e13a0 Revert "Merge branch 'main' of https://github.com/OTKUSteyler/GoonCord"
This reverts commit 5205d8559f, reversing
changes made to 945acc1738.
2026-01-05 01:35:37 +01:00
OTKUSteyler
f910478079
Add files via upload 2026-01-05 00:30:45 +00:00
OTKUSteyler
69c02e1fb5
Update build.mjs 2026-01-05 00:23:34 +00:00
OTKUSteyler
abde8e96a7 Merge remote-tracking branch 'upstream/main' 2026-01-05 01:21:28 +01:00
OTKUSteyler
98e5509bd5 Revert "Merge branch 'main' of https://github.com/OTKUSteyler/GoonCord"
This reverts commit 5205d8559f, reversing
changes made to 945acc1738.
2026-01-05 00:44:20 +01:00
OTKUSteyler
a7844b86e3
Fix background patching for chat messages component 2026-01-02 09:41:02 +00:00
OTKUSteyler
262562f050
Update debug.ts 2026-01-02 09:39:44 +00:00
OTKUSteyler
b12d44d10e
Update index.ts 2026-01-02 09:36:45 +00:00
OTKUSteyler
e9e8efbb66
Update debug.ts 2026-01-02 09:34:41 +00:00
OTKUSteyler
e0a85bb003
Clean up debug.ts by removing comments
Removed commented sections for Debugger State, React DevTools, and Core Utils.
2026-01-02 09:32:10 +00:00
OTKUSteyler
77bfd4ef15
Update build.mjs 2026-01-02 09:23:32 +00:00
OTKUSteyler
0931d85c74
Update version format in build script 2026-01-02 09:20:33 +00:00
OTKUSteyler
1d0aa92b62
Update background.tsx 2026-01-02 09:18:30 +00:00
OTKUSteyler
f6b285ff22
Update index.ts 2026-01-02 09:12:53 +00:00
OTKUSteyler
64a4df26fc
Update background.tsx 2026-01-02 09:07:49 +00:00
OTKUSteyler
e38c785aae
Update index.tsx 2026-01-01 23:42:43 +00:00
OTKUSteyler
2d96fad40e
Update build.mjs 2026-01-01 23:27:07 +00:00
OTKUSteyler
0990faa41d
Refactor patchStorage to improve theme handling 2026-01-01 23:21:10 +00:00
OTKUSteyler
dc93b81ae1
Update build.mjs 2026-01-01 23:17:53 +00:00
OTKUSteyler
2448c87def
Update release.yml 2026-01-01 23:15:51 +00:00
OTKUSteyler
5205d8559f Merge branch 'main' of https://github.com/OTKUSteyler/GoonCord 2026-01-02 00:10:20 +01:00
OTKUSteyler
6bbf0a3c07
Merge branch 'kmmiio99o:main' into main 2025-12-27 17:09:13 +01:00
OTKUSteyler
af23275735
Update About.tsx 2025-12-27 02:10:26 +01:00
OTKUSteyler
0e25a20ba0
Update index.tsx 2025-12-27 02:08:45 +01:00
OTKUSteyler
b0e1180182
Add files via upload 2025-12-27 02:07:05 +01:00
OTKUSteyler
68dc8238c3
Enhance debug info header with emoji 2025-12-27 02:05:08 +01:00
OTKUSteyler
7f99346971
Update default.json 2025-12-27 02:04:24 +01:00
OTKUSteyler
401165eb34
Update index.ts 2025-12-27 01:59:46 +01:00
OTKUSteyler
19d3493322
Update build.mjs 2025-12-27 01:56:03 +01:00
OTKUSteyler
a56b432fba
Update index.ts 2025-12-27 01:50:29 +01:00
OTKUSteyler
414cf25ae8
Update default.json 2025-12-27 01:48:06 +01:00
OTKUSteyler
1523b51108
Rename command from 'debug' to 'Goon' 2025-12-27 01:45:59 +01:00
OTKUSteyler
20d6ff15ea
Update release.yml 2025-12-27 01:44:02 +01:00
OTKUSteyler
036de69acd
Update README.md 2025-12-27 01:42:10 +01:00
OTKUSteyler
945acc1738 Merge branch 'dev' 2025-12-27 01:36:29 +01:00
OTKUSteyler
5fa10f606a Merge branch 'main' of https://github.com/OTKUSteyler/GoonCord 2025-12-26 09:44:06 +01:00
OTKUSteyler
36336f738f
Update Twitter/X embed URL to use fxtwitter.com 2025-12-24 00:47:08 +01:00
OTKUSteyler
5cdd217017
Update index.ts 2025-12-24 00:43:15 +01:00
OTKUSteyler
cd4679913a
Update index.tsx 2025-12-19 11:40:14 +01:00
OTKUSteyler
a4009897c2
Update index.tsx 2025-12-19 11:37:03 +01:00
OTKUSteyler
1352abed03
Update index.tsx 2025-12-19 11:15:00 +01:00
OTKUSteyler
47be786461
Add files via upload 2025-12-19 09:59:27 +01:00
OTKUSteyler
aa90f479e8
Create uwu 2025-12-19 09:59:05 +01:00
OTKUSteyler
87cd9ab347
Update index.ts 2025-12-16 00:10:48 +01:00
OTKUSteyler
5b4cc43637
Update index.ts 2025-12-16 00:00:55 +01:00
OTKUSteyler
8b9fa8d964
Update index.ts 2025-12-15 23:59:04 +01:00
OTKUSteyler
01a8686542
Update index.ts 2025-12-15 23:51:24 +01:00
OTKUSteyler
52bc899440
Update default.json 2025-12-11 19:27:40 +01:00
OTKUSteyler
0512796945
Add files via upload 2025-12-11 18:00:13 +01:00
OTKUSteyler
0a92bc4363
Update About.tsx 2025-12-11 14:44:08 +01:00
OTKUSteyler
7273bd52fa
Update index.ts 2025-12-11 14:40:43 +01:00
OTKUSteyler
985355976e
Update index.ts 2025-12-11 14:30:22 +01:00
OTKUSteyler
3f92812707
Update index.ts 2025-12-11 13:58:42 +01:00
OTKUSteyler
57fc0b2ab2
Update panel.tsx 2025-12-11 11:13:35 +01:00
OTKUSteyler
86ca221428
Update default.json 2025-12-11 09:56:55 +01:00
OTKUSteyler
0d7a5b8612
Update index.ts 2025-12-11 09:54:08 +01:00
OTKUSteyler
f31e0d0587
Update index.tsx 2025-12-11 09:53:19 +01:00
OTKUSteyler
4427217cb2
Update reload.ts 2025-12-11 09:51:27 +01:00
OTKUSteyler
c297b946f4
Update debug.ts 2025-12-11 09:50:56 +01:00
OTKUSteyler
077616dca1
Update build.mjs 2025-12-11 08:52:57 +01:00
OTKUSteyler
c007af6500
Update build.mjs 2025-12-11 08:50:28 +01:00
OTKUSteyler
36febf010c
Update build.mjs 2025-12-11 08:49:45 +01:00
OTKUSteyler
f6b18053d9
Update build.mjs 2025-12-11 08:47:08 +01:00
OTKUSteyler
9a1ab563b7
Update release.yml 2025-12-11 07:44:09 +01:00
OTKUSteyler
a0766a8ddc
Update release.yml 2025-12-11 07:41:37 +01:00
OTKUSteyler
08a6017103
Update README.md 2025-12-11 07:40:20 +01:00
OTKUSteyler
4c10ace879 Update ThemeInfoActionSheet.tsx 2025-12-10 21:43:06 +01:00
OTKUSteyler
2216045a50 Update index.tsx 2025-12-10 21:43:06 +01:00
OTKUSteyler
9894d8e8c4 Update README.md 2025-12-10 21:43:06 +01:00
OTKUSteyler
0dfa1e0a0a Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
926b393c0f Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
f688e4dfc6 Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
9f1f3cf5f3 Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
c7f2c1fad8 Update ThemeInfoActionSheet.tsx 2025-12-10 21:43:06 +01:00
OTKUSteyler
b1df00ac39 Update AddonPage.tsx 2025-12-10 21:43:06 +01:00
OTKUSteyler
60af217859 Update AddonCard.tsx 2025-12-10 21:43:06 +01:00
OTKUSteyler
6e34da9d91 Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
07f7566c13 Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
66ae261fe3 Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
e8b9a337b5 Update index.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
c965aa5907 Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
3f709f82cc Update build.mjs 2025-12-10 21:43:06 +01:00
OTKUSteyler
972d7e7836 Update release.yml 2025-12-10 21:43:06 +01:00
OTKUSteyler
335bb4ab5e Update build.mjs 2025-12-10 21:43:06 +01:00
OTKUSteyler
a4dd0601b0 Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
d2e9499d6f Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
a0bc249936 Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
46eeaa27c4 Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
6a34ad83ef Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
a628bf2850 Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
ff2e341a1a Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
4f6f5b636b Delete internals directory 2025-12-10 21:43:06 +01:00
OTKUSteyler
fdcc756281 Delete polyfills directory 2025-12-10 21:43:06 +01:00
OTKUSteyler
5750fff8d7 Delete factories.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
923039adb2 Delete filters.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
153e459665 Delete finders.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
2e75085b72 Delete global.d.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
6347f7d86e Delete index.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
829cb397a8 Delete entry.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
b791dfe045 Delete lazy.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
6a20f5cdf3 Delete modules.d.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
b5279af2c5 Delete types.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
f56b894e4a Delete common directory 2025-12-10 21:43:06 +01:00
OTKUSteyler
f18029cfc2 Delete debug directory 2025-12-10 21:43:06 +01:00
OTKUSteyler
78c9999e97 Delete commands directory 2025-12-10 21:43:06 +01:00
OTKUSteyler
bd177b9bf1 Delete wrappers.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
21bdd39803 Delete ui directory 2025-12-10 21:43:06 +01:00
OTKUSteyler
f8047bb853 Delete api directory 2025-12-10 21:43:06 +01:00
OTKUSteyler
ba344ac3fb Delete addons directory 2025-12-10 21:43:06 +01:00
OTKUSteyler
b474285180 Delete utils directory 2025-12-10 21:43:06 +01:00
OTKUSteyler
0ac9ee6dd3 Add files via upload 2025-12-10 21:43:06 +01:00
OTKUSteyler
55233fda91 Update build.yaml 2025-12-10 21:43:06 +01:00
OTKUSteyler
ac17136640 Update index.tsx 2025-12-10 21:43:06 +01:00
OTKUSteyler
b99e851af9 Update About.tsx 2025-12-10 21:43:06 +01:00
OTKUSteyler
5e5d635a09 Update index.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
dac035fb5f Update build.mjs 2025-12-10 21:43:06 +01:00
OTKUSteyler
16cd982554 Update release.yml 2025-12-10 21:43:06 +01:00
OTKUSteyler
7396fca9fc Update build.mjs 2025-12-10 21:43:06 +01:00
OTKUSteyler
0b6d648615 Update build.mjs 2025-12-10 21:43:06 +01:00
OTKUSteyler
3449b76df3 Update build.mjs 2025-12-10 21:43:06 +01:00
OTKUSteyler
9b416830ab Update release.yml 2025-12-10 21:43:06 +01:00
OTKUSteyler
9922386c18 Update index.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
1ebb81bf96 Update build.yaml 2025-12-10 21:43:06 +01:00
OTKUSteyler
c3f619dc79 Update release.yml 2025-12-10 21:43:06 +01:00
OTKUSteyler
8f9444ab54 Update README.md 2025-12-10 21:43:06 +01:00
OTKUSteyler
19d0419a2f Update index.ts 2025-12-10 21:43:06 +01:00
OTKUSteyler
23083003e9 Add files via upload 2025-12-10 21:43:01 +01:00
OTKUSteyler
0861a24c0c Add files via upload 2025-12-10 21:43:01 +01:00
OTKUSteyler
13593d8f41 Delete src/assets/icons/wwww 2025-12-10 21:43:01 +01:00
OTKUSteyler
c0c910a2b3 Add files via upload 2025-12-10 21:43:01 +01:00
OTKUSteyler
2a1eccff80 Create wwww 2025-12-10 21:43:01 +01:00
OTKUSteyler
3ca0f5443a Delete src/assets directory 2025-12-10 21:43:01 +01:00
OTKUSteyler
bed19ed24b Delete src/src/assets/icons directory 2025-12-10 21:43:01 +01:00
OTKUSteyler
8909be4543 Create icons 2025-12-10 21:43:01 +01:00
OTKUSteyler
c079a9ecae Delete src/src/assets/icons/a 2025-12-10 21:43:01 +01:00
OTKUSteyler
de3194fecc Add files via upload 2025-12-10 21:43:01 +01:00
OTKUSteyler
92f22ba309 Create a 2025-12-10 21:43:01 +01:00
OTKUSteyler
75625016a9 Delete src/assets/icons/shiggy.png 2025-12-10 21:43:01 +01:00
OTKUSteyler
ec673af07b Update release.yml 2025-12-10 21:43:01 +01:00
OTKUSteyler
867810ecf9 Update index.ts 2025-12-10 21:43:01 +01:00
OTKUSteyler
80ce7006ba Update build.mjs 2025-12-10 21:43:01 +01:00
OTKUSteyler
9beb2576a2 Delete src/assets/icons/cum.png 2025-12-10 21:43:01 +01:00
OTKUSteyler
016a4589ea Add files via upload 2025-12-10 21:43:01 +01:00
OTKUSteyler
7d068dcf17 Rename cum.png to shiggy.png 2025-12-10 21:43:01 +01:00
OTKUSteyler
1ec1ac535a Delete src/assets/icons/shiggy.png 2025-12-10 21:43:01 +01:00
OTKUSteyler
18b5e4d66a Add files via upload 2025-12-10 21:43:01 +01:00
OTKUSteyler
af881aaf07 Create shiggy.png 2025-12-10 21:43:01 +01:00
OTKUSteyler
daaeceed91 Delete src/assets/icons/shiggy.png 2025-12-10 21:43:01 +01:00
OTKUSteyler
d8a6d14088 Update package.json 2025-12-10 21:42:38 +01:00
OTKUSteyler
29d35c42e2 Update README.md 2025-12-10 21:42:38 +01:00
OTKUSteyler
a982c7cd1d Update README.md 2025-12-10 21:42:38 +01:00
OTKUSteyler
1232995cd9 Update debug.ts 2025-12-10 21:42:38 +01:00
OTKUSteyler
c95e5062d0 Update debug.ts 2025-12-10 21:42:38 +01:00
OTKUSteyler
d1380a5772 Update release.yml 2025-12-10 21:42:38 +01:00
OTKUSteyler
3339e7ce02 Update debug.ts 2025-12-10 21:42:38 +01:00
OTKUSteyler
81f0f5c2c5 Update default.json 2025-12-10 21:42:38 +01:00
OTKUSteyler
cc31d09118 Update README.md 2025-12-10 21:40:55 +01:00
23 changed files with 387 additions and 83 deletions

View file

@ -53,4 +53,4 @@ jobs:
git fetch origin
git checkout github || git checkout -b github
git merge origin/main --no-edit --allow-unrelated-histories
git push --force origin github
git push --force origin github

View file

@ -98,7 +98,7 @@ jobs:
tag_name: ${{ steps.prepare.outputs.tag }}
name: Release ${{ steps.prepare.outputs.tag }}
files: |
dist/shiggycord.js
dist/shiggycord.min.js
dist/gooncord.js
dist/gooncord.min.js
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -1,39 +1,40 @@
# ShiggyCord [![Discord](https://img.shields.io/discord/1427396621905432699?style=social&logo=discord&label=ShiggyCord)](https://discord.shiggycord.dev)
# GoonCord [![Discord](https://img.shields.io/discord/1427396621905432699?style=social&logo=discord&label=ShiggyCord)](https://discord.gg/nQykFF9Ud6)
Bundle based on Kettu, made just for fun
An unofficial fork of ShiggyGord, made just for fun
Idea taken from me
## Installing
### Android
- Rooted: [Shiggy Xposed](https://github.com/kmmiio99o/ShiggyXposed)
- Rooted: [Goon Xposed](https://github.com/OTKUSteyler/GoonXposed)
- Non-Rooted: [Shiggy Manager](https://github.com/kmmiio99o/ShiggyManager)
- Non-Rooted: [Goon Manger](https://github.com/OTKUSteyler/GoonManager)
### Android/iOS
- **Injecting bundle:**
```url
https://github.com/kmmiio99o/ShiggyCord/releases/latest/download/shiggycord.js
https://github.com/OTKUSteyler/GoonCord/releases/latest/download/gooncord.js
```
## Building
1. Install a ShiggyCord loader with loader config support (any mentioned in the [Installing](#installing) section).
1. Install a GoonCord loader with loader config support (any mentioned in the [Installing](#installing) section).
1. Go to Settings > General and enable Developer Settings.
1. Clone the repo:
```
git clone https://github.com/kmmiio99o/Shiggycord.git
git clone https://github.com/OTKUSteyler/GoonCord.git
```
1. Install dependencies:
```
bun i
```
1. Build ShiggyCord's code:
1. Build GoonCord's code:
```
bun run build
```
1. In the newly created `dist` directory, run a HTTP server. I recommend [http-server](https://www.npmjs.com/package/http-server).
1. Go to Settings > Developer enabled earlier. Enable `Load from custom url` and input the IP address and port of the server (e.g. `http://192.168.1.236:4040/shiggycord.js`) in the new input box labelled `ShiggyCord URL`.
1. Restart Discord. Upon reload, you should notice that your device will download ShiggyCord's bundled code from your server, rather than GitHub.
1. Go to Settings > Developer enabled earlier. Enable `Load from custom url` and input the IP address and port of the server (e.g. `http://192.168.1.236:4040/gooncord.js`) in the new input box labelled `GoonCord URL`.
1. Restart Discord. Upon reload, you should notice that your device will download GoonCord's bundled code from your server, rather than GitHub.
1. Make your changes, rebuild, reload, go wild!
Alternatively, you can directly *serve* the bundled code by running `bun run serve`. `shiggycord.js` will be served on your local address under the port 4040. You will then insert `http://<local ip address>:4040/shiggycord.js` as a custom url and reload. Whenever you restart your mobile client, the script will rebuild the bundle as your client fetches it.
Alternatively, you can directly *serve* the bundled code by running `bun run serve`. `gooncord.js` will be served on your local address under the port 4040. You will then insert `http://<local ip address>:4040/gooncord.js` as a custom url and reload. Whenever you restart your mobile client, the script will rebuild the bundle as your client fetches it.

View file

@ -1,9 +1,9 @@
{
"name": "ShiggyCord",
"name": "GoonCord",
"private": true,
"author": {
"name": "kmmiio99o",
"url": "https://github.com/kmmiio99o"
"name": "OTKUSteyler",
"url": "https://github.com/OTKUSteyler/GoonCord"
},
"scripts": {
"build": "node scripts/build.mjs",

View file

@ -30,12 +30,12 @@ let context = null;
const config = {
entryPoints: ["src/entry.ts"],
bundle: true,
outfile: "dist/shiggycord.js",
outfile: "dist/gooncord.js",
format: "iife",
splitting: false,
// Enable minification by default for release builds (when a release-branch is provided).
// This keeps development builds unminified for easier debugging.
minify: true,
minify: false,
external: [],
supported: {
// Hermes does not actually support const and let, even though it syntactically
@ -141,7 +141,7 @@ if (isThisFileBeingRunViaCLI) {
printBuildSuccess(context.hash, releaseBranch, timeTook);
const { timeTook: minifiedTimeTook } = await buildBundle({
minify: true,
minify: false,
outfile: config.outfile.replace(/\.js$/, ".min.js"),
});

View file

@ -19,7 +19,7 @@ export function serve(options) {
if (pathname?.endsWith(".js")) {
try {
let fileToServe;
if (pathname === "/shiggycord.min.js") {
if (pathname === "/gooncord.min.js") {
const { config, context, timeTook } = await buildBundle({
minify: true,
});
@ -30,7 +30,7 @@ export function serve(options) {
true,
);
fileToServe = config.outfile.replace(/\.js$/, ".min.js");
} else if (pathname === "/shiggycord.js") {
} else if (pathname === "/gooncord.js") {
const { config, context, timeTook } = await buildBundle();
printBuildSuccess(context.hash, args["release-branch"], timeTook);
fileToServe = config.outfile;
@ -55,7 +55,7 @@ export function serve(options) {
server.listen(args.port ?? 4040);
console.info(chalk.bold.yellowBright("Serving ShiggyCord on:"));
console.info(chalk.bold.yellowBright("Serving GoonCord on:"));
const netInterfaces = os.networkInterfaces();
for (const netinterfaces of Object.values(netInterfaces)) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View file

@ -8,7 +8,7 @@ import { messageUtil } from "@metro/common";
export default () =>
<ApplicationCommand>{
name: "debug",
name: "Goon",
description: Strings.COMMAND_DEBUG_DESC,
options: [
{
@ -20,8 +20,8 @@ export default () =>
execute([ephemeral], ctx) {
const info = getDebugInfo();
const content = [
"**ShiggyCord Debug Info**",
`> ShiggyCord: ${info.bunny.version} (${info.bunny.loader.name} ${info.bunny.loader.version})`,
"**💦GoonCord Goon Info💦**",
`> GoonCord: ${info.bunny.version} (${info.bunny.loader.name} ${info.bunny.loader.version})`,
`> Discord: ${info.discord.version} (${info.discord.build})`,
`> React: ${info.react.version} (RN ${info.react.nativeVersion})`,
`> Hermes: ${info.hermes.version} (bcv${info.hermes.bytecodeVersion})`,
@ -29,11 +29,13 @@ export default () =>
`> Device: ${info.device.model}`,
].join("\n");
if (ephemeral?.value) {
messageUtil.sendBotMessage(ctx.channel.id, content);
} else {
const fixNonce = (BigInt(Date.now() - 1420070400000) << 22n).toString();
messageUtil.sendMessage(ctx.channel.id, { content }, void 0, {nonce:fixNonce});
}
}
};
if (ephemeral?.value) {
messageUtil.sendBotMessage(ctx.channel.id, content);
} else {
const fixNonce = Date.now().toString();
messageUtil.sendMessage(ctx.channel.id, { content }, void 0, {
nonce: fixNonce,
});
}
},
};

View file

@ -190,7 +190,7 @@ export default () =>
if (ephemeral?.value) {
messageUtil.sendBotMessage(ctx.channel.id, content);
} else {
const fixNonce = (BigInt(Date.now() - 1420070400000) << 22n).toString();
const fixNonce = Date.now().toString();
messageUtil.sendMessage(ctx.channel.id, { content }, void 0, {
nonce: fixNonce,
});

View file

@ -4,10 +4,10 @@ import { BundleUpdaterManager } from "@lib/api/native/modules";
export default () =>
<ApplicationCommand>{
name: "reload",
name: "ReGoon",
description: Strings.COMMAND_RELOAD_DESC,
options: [],
execute() {
BundleUpdaterManager.reload();
},
};
};

View file

@ -4,15 +4,13 @@
"ARE_YOU_SURE_TO_CLEAR_DATA": "Are you sure you wish to clear the data of {name}?",
"ARE_YOU_SURE_TO_DELETE_PLUGIN": "Are you sure you wish to delete {name}? This will clear all of the plugin's data.",
"ARE_YOU_SURE_TO_DELETE_THEME": "Are you sure you wish to delete {name}?",
"AUTO_DEBUGGER": "Automatically connect to Debugger",
"AUTO_DEVTOOLS": "Automatically connect to Devtools",
"ASSET_BROWSER": "Asset Browser",
"ASSET_TYPES": "Asset Types",
"IMAGE_FILES": "Image Files",
"TEXT_FILES": "Text Files",
"BRAND": "Brand",
"SHIGGYCORD": "ShiggyCord",
"SHIGGYCORD_URL": "ShiggyCord URL",
"SHIGGYCORD": "💦GoonCord💦",
"SHIGGYCORD_URL": "GoonCord URL",
"BROWSER": "Browser",
"BYTECODE": "Bytecode",
"CANCEL": "Cancel",
@ -24,14 +22,13 @@
"CLEAR_DATA_SUCCESSFUL": "Cleared data for {name}",
"CODEBERG": "Codeberg",
"CODENAME": "Codename",
"COMMAND_DEBUG_DESC": "Send ShiggyCord debug info.",
"COMMAND_DEBUG_DESC": "Send GoonCord debug info.",
"COMMAND_DEBUG_OPT_EPHEMERALLY": "Send debug info ephemerally.",
"COMMAND_EVAL_DESC": "Evaluate JavaScript code.",
"COMMAND_EVAL_OPT_ASYNC": "Whether to support 'await' in code. Must explicitly return for result (default: false)",
"COMMAND_EVAL_OPT_CODE": "The code to evaluate.",
"COMMAND_PLUGINS_DESC": "Send list of installed plugins.",
"COMMAND_PLUGINS_OPT_EPHEMERALLY": "Send plugins list ephemerally.",
"COMMAND_RELOAD_DESC": "Reload Discord.",
"COMPONENT": "Component",
"CONFIRMATION_LINK_IS_A_TYPE": "This link is a **{urlType, select, plugin {Plugin} theme {Theme} other {Add-on}}**, would you like to install it?",
"CONNECT_TO_DEBUG_WEBSOCKET": "Connect to debug WebSocket",
@ -42,7 +39,6 @@
"DEBUG": "Debug",
"DEBUGGER_URL": "Debugger URL",
"DELETE": "Delete",
"DEVTOOLS_URL": "DevTools URL",
"DESC_EXTRACT_FONTS_FROM_THEME": "Looks out for \"fonts\" field in your currently applied theme and install it.",
"DEVELOPER": "Developer",
"DEVELOPER_SETTINGS": "Developer Settings",
@ -70,9 +66,8 @@
"LABEL_EXTRACT_FONTS_FROM_THEME": "Extract font from theme",
"LINKS": "Links",
"LOAD_FROM_CUSTOM_URL": "Load from custom URL",
"LOAD_FROM_CUSTOM_URL_DEC": "Load ShiggyCord from a custom endpoint.",
"LOAD_FROM_CUSTOM_URL_DEC": "Load GoonCord from a custom endpoint.",
"LOAD_REACT_DEVTOOLS": "Load React DevTools",
"SHIGGY_URL": "ShiggyCord URL",
"LOADER": "Loader",
"MACHINE_ID": "Machine ID",
"MANUFACTURER": "Manufacturer",
@ -95,7 +90,7 @@
"PLUGINS": "Plugins",
"REFETCH": "Refetch",
"RELOAD": "Reload",
"RELOAD_DISCORD": "Reshiggy your Discord",
"RELOAD_DISCORD": "ReGoon your Discord",
"RELOAD_IN_NORMAL_MODE": "Reload in Normal Mode",
"RELOAD_IN_NORMAL_MODE_DESC": "Safe mode currently enabled, tap to reload in normal mode",
"RELOAD_IN_SAFE_MODE": "Reload in Safe Mode",
@ -124,7 +119,7 @@
"UH_OH": "Uh Oh",
"UNINSTALL": "Uninstall",
"UNINSTALL_TITLE": "Uninstall {title}",
"URL_PLACEHOLDER": "https://github.com/kmmiio99o/ShiggyCord",
"URL_PLACEHOLDER": "https://github.com/OTKUSteyler/GoonCord",
"VERSION": "Version",
"VERSIONS": "Versions"
}

View file

@ -51,7 +51,7 @@ export function initFetchI18nStrings() {
_loadedLocale.add(resolvedLocale);
fetch(
`https://raw.githubusercontent.com/kmmiio99o/i18n/main/resources/${resolvedLocale}/shiggycord.json`,
`https://raw.githubusercontent.com/OTKUSteyler/i18n/main/resources/${resolvedLocale}/gooncord.json`,
)
.then((r) => r.json())
.then((strings) => (_loadedStrings[resolvedLocale] = strings))

View file

@ -42,19 +42,19 @@ function transformLinks(content: string, config: FixEmbedSettings): string {
if (config.instagram) {
result = result.replace(
/https?:\/\/(?:www\.)?instagram\.com(\/[^\s]+)/gi,
"https://uuinstagram.com$1",
"https://kkinstagram.com$1",
);
}
// TikTok: Replace domain, keep path
if (config.tiktok) {
result = result.replace(
/https?:\/\/(?:www\.)?tiktok\.com(\/[^\s]+)/gi,
"https://tnktok.com$1",
"https://tiktokez.com$1",
);
// TikTok short links (vm.tiktok.com)
result = result.replace(
/https?:\/\/vm\.tiktok\.com\/([A-Za-z0-9]+)\/?/gi,
"https://vm.tnktok.com/$1",
"https://vm.tiktokez.com/$1",
);
}
// Reddit: Replace domain, keep path

View file

@ -33,7 +33,7 @@ export default defineCorePlugin({
) {
// Ensure options exists and has a nonce
options = options || {};
options.nonce = options.nonce || (BigInt(Date.now() - 1420070400000) << 22n).toString();
options.nonce = options.nonce || Date.now().toString();
// Call original with fixed parameters
return originalSendMessage.call(

View file

@ -0,0 +1,301 @@
import { defineCorePlugin } from "..";
import { findByProps } from "@metro";
import { logger } from "@lib/utils/logger";
import { settings } from "@lib/api/settings";
import { React } from "@metro/common";
const { TableRowGroup, TableRow, TableSwitchRow, Stack } = findByProps(
"TableRowGroup",
"TableRow",
"TableSwitchRow",
"Stack",
);
const { ScrollView } = require("react-native");
// Get ReactNative for NativeModules
const { ReactNative } = window as any;
const { DCDSoundManager } = ReactNative?.NativeModules || {};
// Sound settings type
type SoundSettings = {
enabled: boolean;
probability: number;
};
declare module "@lib/api/settings" {
interface Settings {
startupSound?: SoundSettings;
}
}
const soundUrl =
"https://github.com/OTKUSteyler/GoonCord/raw/refs/heads/main/Stuff/All%20I%20Want%20For%20Christmas%20(Is%20Fark).mp3";
const soundId = 6971;
let soundDuration = -1;
let timeoutId: NodeJS.Timeout | null = null;
let isPlaying = false;
let isPrepared = false;
// Function to prepare the sound
const prepareSound = function (): Promise<any> {
return new Promise(function (resolve) {
if (!DCDSoundManager) {
logger.error("DCDSoundManager not available");
resolve(null);
return;
}
DCDSoundManager.prepare(
soundUrl,
"music",
soundId,
function (error: any, sound: any) {
if (error) {
logger.error("Failed to prepare sound:", error);
resolve(null);
} else {
resolve(sound);
}
},
);
});
};
// Function to play the sound
async function playSound() {
if (!DCDSoundManager) {
logger.error("DCDSoundManager not available for playback");
return;
}
if (isPlaying) {
if (timeoutId != null) clearTimeout(timeoutId);
DCDSoundManager.stop(soundId);
isPlaying = false;
}
isPlaying = true;
try {
await DCDSoundManager.play(soundId);
if (soundDuration > 0) {
timeoutId = setTimeout(function () {
isPlaying = false;
DCDSoundManager.stop(soundId);
timeoutId = null;
}, soundDuration);
}
} catch (error) {
logger.error("Error playing sound:", error);
isPlaying = false;
}
}
// Check if we should play based on probability
function shouldPlaySound(): boolean {
const probability = settings.startupSound?.probability ?? 2;
const random = Math.random() * 100;
return random <= probability;
}
export default defineCorePlugin({
manifest: {
id: "bunny.enhancements",
version: "0.1.0",
type: "plugin",
spec: 3,
main: "",
display: {
name: "Shiggy Enhancements",
description:
"Fixes common discord bugs because discord wont, and adds some features. (Originally Kettu Enhancements)",
authors: [{ name: "cocobo1" }, { name: "Shiggy Team" }],
},
},
SettingsComponent() {
const { useState, useEffect } = React;
const [config, setConfig] = useState<SoundSettings>({
enabled: settings.startupSound?.enabled ?? true,
probability: settings.startupSound?.probability ?? 2,
});
useEffect(() => {
settings.startupSound = config;
}, [config]);
const updateConfig = (
key: keyof SoundSettings,
value: boolean | number,
) => {
setConfig((prev) => ({ ...prev, [key]: value }));
};
// Get UI components including TextInput
const {
TableRowGroup: _TRG,
TableRow: _TR,
TableSwitchRow: _TSR,
Stack: _S,
TextInput: _TextInput,
} = findByProps(
"TableRowGroup",
"TableRow",
"TableSwitchRow",
"Stack",
"TextInput",
);
// Fallback if table components aren't available
if (!_TRG || !_TSR || !_TR || !_S) {
const FallbackText =
"Startup Sound UI unavailable (missing TableRow components).";
return React.createElement(
ScrollView,
{ style: { flex: 1, padding: 12 } },
FallbackText,
);
}
const TableRowGroup = _TRG;
const TableRow = _TR;
const TableSwitchRow = _TSR;
const Stack = _S;
const TextInput = _TextInput;
// Handle probability input change
const handleProbabilityChange = (v: string) => {
const num = parseInt(v);
if (!isNaN(num) && num >= 0 && num <= 100) {
updateConfig("probability", num);
} else if (v === "") {
updateConfig("probability", 0);
}
};
// Create settings elements
const settingsElements = [];
// Startup Sound toggle with probability display
settingsElements.push(
React.createElement(
TableRowGroup,
{ title: "Startup Sound", key: "startup-sound" },
React.createElement(TableSwitchRow, {
label: "Enable Startup Sound",
value: config.enabled,
onValueChange: (v: boolean) => updateConfig("enabled", v),
}),
React.createElement(TableRow, {
label: "Play Chance",
subLabel: `Current: ${config.probability}% chance to play on startup`,
}),
),
);
// Probability input in its own invisible group
if (TextInput) {
settingsElements.push(
React.createElement(
TableRowGroup,
{ title: "", key: "probability-input-group" },
React.createElement(TextInput, {
placeholder: "Enter probability (0-100)",
value: config.probability.toString(),
onChange: handleProbabilityChange,
key: "probability-input",
}),
),
);
}
// About section
settingsElements.push(
React.createElement(
TableRowGroup,
{ title: "About", key: "about" },
React.createElement(TableRow, {
label: "Description",
subLabel:
"Shiggy Enhancements, more options, more features. Originally Kettu Enhancements with additinal features.",
disabled: true,
}),
),
);
return React.createElement(
ScrollView,
{ style: { flex: 1 } },
React.createElement(
Stack,
{ spacing: 8, style: { padding: 10 } },
...settingsElements,
),
);
},
start() {
logger.log("Shiggy Enhancements: Starting plugin");
// Initialize sound settings
settings.startupSound = settings.startupSound || {
enabled: false,
probability: 2,
};
// Check if DCDSoundManager is available
if (!DCDSoundManager) {
logger.error("DCDSoundManager not found - startup sound disabled");
return;
}
// Play startup sound if enabled and probability check passes
if (settings.startupSound.enabled && shouldPlaySound()) {
logger.log(
`Attempting to play startup sound (${settings.startupSound.probability}% chance)`,
);
// Always prepare the sound fresh each time
prepareSound()
.then(function (sound) {
if (sound) {
isPrepared = true;
soundDuration = sound.duration || 5000;
logger.log(`Sound prepared, duration: ${soundDuration}ms`);
playSound();
logger.log(
`Startup sound played (${settings.startupSound?.probability}% chance)`,
);
} else {
logger.error("Failed to prepare sound");
}
})
.catch((error) => {
logger.error("Error in sound preparation:", error);
});
} else if (settings.startupSound.enabled) {
logger.log(
`Startup sound skipped due to probability (${settings.startupSound?.probability}% chance)`,
);
}
},
stop() {
logger.log("Shiggy Enhancements: Stopping plugin");
// Stop and cleanup audio
if (DCDSoundManager && isPlaying) {
DCDSoundManager.stop(soundId);
isPlaying = false;
}
if (timeoutId) {
clearTimeout(timeoutId);
timeoutId = null;
}
// Reset preparation state so it can play again next time
isPrepared = false;
},
});

View file

@ -11,7 +11,7 @@ export { shiggycordIcon };
export default function initSettings() {
registerSection({
name: "ShiggyCord",
name: "💦GoonCord💦",
items: [
{
key: "SHIGGYCORD",

View file

@ -97,7 +97,7 @@ export default function About() {
variant="text-md/medium"
style={{ textAlign: "center", marginTop: 4 }}
>
Shiggy your discord client!
Goon your discord client!
</Text>
</View>

View file

@ -32,19 +32,7 @@ export default function General() {
const navigation = NavigationNative.useNavigation();
// Custom Community Card Button
const CommunityCardButton = ({
icon,
label,
subLabel,
color,
onPress,
}: {
icon?: number | { uri: string };
label: string;
subLabel?: string | null;
color?: string;
onPress?: () => void;
}) => (
const CommunityCardButton = ({ icon, label, subLabel, color, onPress }) => (
<TouchableOpacity style={{ flex: 1 }} onPress={onPress} activeOpacity={0.7}>
<Card
style={{
@ -72,7 +60,7 @@ export default function General() {
}}
>
<TableRow.Icon
source={icon as any}
source={icon}
style={{
tintColor: "#FFFFFF",
width: 24,
@ -125,8 +113,8 @@ export default function General() {
>
<TableRowGroup title="App Information">
<TableRow
label="ShiggyCord"
icon={<TableRow.Icon source={{ uri: shiggycordIcon ?? "" }} />}
label="💦GoonCord💦"
icon={<TableRow.Icon source={{ uri: shiggycordIcon }} />}
trailing={<TableRow.TrailingText text={debugInfo.bunny.version} />}
/>
<TableRow

View file

@ -702,7 +702,7 @@ export default function Plugins() {
// Use the insertion order of pluginSettings so newly-installed plugins
// (which add entries to pluginSettings) appear first.
const installedBnIds = Object.keys(pluginSettings || {})
.filter((id) => registeredPlugins.has(id))
.filter((id) => registeredPlugins.has(id) && !isCorePlugin(id))
.slice()
.reverse();
@ -710,12 +710,12 @@ export default function Plugins() {
.map((id) => registeredPlugins.get(id)!)
.map(unifyBunnyPlugin);
// Merge lists: show Vendetta-managed plugins first,
// Merge lists: show Vendetta-managed plugins first (recent first),
// then Bunny-installed externals (recent first).
const allPlugins = [...vdPlugins, ...bnPlugins];
// Include core plugins in the list
return allPlugins;
// Filter out core plugins from the list
return allPlugins.filter((plugin) => !isCorePlugin(plugin.id));
}}
ListHeaderComponent={() => null}
installAction={{

View file

@ -126,5 +126,5 @@ export default async () => {
}
// Final ready log for basic UI availability.
logger.log("ShiggyCord is ready.");
logger.log("GoonCord is ready.");
};

View file

@ -12,22 +12,39 @@ const mmkvStorage = proxyLazy(() => {
export default function patchStorage() {
const patchedKeys = new Set(["ThemeStore", "SelectivelySyncedUserSettingsStore"]);
const sanitizedKeys = new Set<string>();
const patches = [
after("get", mmkvStorage, ([key], ret) => {
if (!_colorRef.current || !patchedKeys.has(key)) return;
if (!patchedKeys.has(key)) return;
const state = findInTree(ret._state, s => typeof s.theme === "string");
if (state) state.theme = _colorRef.key;
if (!state) return;
const lastSetDiscordTheme = _colorRef.lastSetDiscordTheme ?? "darker";
if (/^bn-theme-\d+$/.test(state.theme) && !/^bn-theme-\d+$/.test(lastSetDiscordTheme) && !sanitizedKeys.has(key)) {
try {
const newVal = { ...ret._state, theme: lastSetDiscordTheme };
mmkvStorage.set(key, newVal);
sanitizedKeys.add(key);
} catch (e) {
}
state.theme = lastSetDiscordTheme;
return;
}
if (_colorRef.current) state.theme = _colorRef.key;
}),
before("set", mmkvStorage, ([key, value]) => {
if (!patchedKeys.has(key)) return;
const json = JSON.stringify(value);
const lastSetDiscordTheme = _colorRef.lastSetDiscordTheme ?? "darker";
const replacementTheme = /^bn-theme-\d+$/.test(lastSetDiscordTheme) ? "darker" : lastSetDiscordTheme;
const replaced = json.replace(
/"theme":"bn-theme-\d+"/,
`"theme":${JSON.stringify(lastSetDiscordTheme)}`
`"theme":${JSON.stringify(replacementTheme)}`
);
return [key, JSON.parse(replaced)];

View file

@ -401,4 +401,4 @@ export function initDebugger() {
logger.error("Failed to connect to ReactDevTools during startup:", e);
}
}
}
}

View file

@ -57,15 +57,15 @@ export function patchPanelUI(unpatches: (() => void | boolean)[]) {
after("default", findByNameLazy("getScreens", false), (_a, screens) => ({
...screens,
VendettaCustomPage: {
title: "ShiggyCord",
title: "GoonCord",
render: () => <CustomPageRenderer />,
},
BUNNY_CUSTOM_PAGE: {
title: "ShiggyCord",
title: "GoonCord",
render: () => <CustomPageRenderer />,
},
SHIGGYCORD_CUSTOM_PAGE: {
title: "ShiggyCord",
title: "GoonCord",
render: () => <CustomPageRenderer />,
},
})),