Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1831 commits
Select commit Hold shift + click to select a range
bf67eb2
redo roles
MathMan05 Jul 11, 2026
e86d889
Merge pull request #346 from MathMan05/depSpacebar
MathMan05 Jul 12, 2026
24a676d
small VC fixes
MathMan05 Jul 12, 2026
8f1ef0c
update CI
MathMan05 Jul 12, 2026
51d53ed
v4?
MathMan05 Jul 12, 2026
97492a5
npx run
MathMan05 Jul 12, 2026
d0245fe
tsc conf changes
MathMan05 Jul 12, 2026
8f3cb24
update everything to codeberg
MathMan05 Jul 12, 2026
5144ef7
star history unneeded for coderberg
MathMan05 Jul 12, 2026
e8f5942
update project URL again
MathMan05 Jul 12, 2026
8769dfe
change mention role logic slightly
MathMan05 Jul 12, 2026
0321c1f
fix reaction bug
MathMan05 Jul 12, 2026
f75caf6
fix dumb error
MathMan05 Jul 12, 2026
b90ee6f
| unknown to ?
MathMan05 Jul 12, 2026
61170f3
switch to XML based RSS feed reader
MathMan05 Jul 12, 2026
3ea23b2
handle 500 errors
MathMan05 Jul 12, 2026
90a24e9
fix removing emoji slightly
MathMan05 Jul 12, 2026
41f8826
remove some logs
MathMan05 Jul 12, 2026
97e528a
more fonts for firefox
MathMan05 Jul 12, 2026
e5c5a45
fix up some types
MathMan05 Jul 12, 2026
942580d
nonce to higher up
MathMan05 Jul 12, 2026
c81d3a7
other stuff to higher up
MathMan05 Jul 12, 2026
70072a7
mention everyone next to everything else
MathMan05 Jul 12, 2026
9d2efc6
fix and simplify permission checking
MathMan05 Jul 12, 2026
1c42caf
member map fixes
MathMan05 Jul 13, 2026
a72eed2
member as getter
MathMan05 Jul 13, 2026
6a5ae58
clean up guild logic some
MathMan05 Jul 13, 2026
0333c7b
fix migration of settings
MathMan05 Jul 13, 2026
8e06b27
just save it always
MathMan05 Jul 13, 2026
58faf46
nullish
MathMan05 Jul 13, 2026
ecfb96b
pfps in user search
MathMan05 Jul 13, 2026
9959b45
don't show people who can't see the channel
MathMan05 Jul 13, 2026
984ad31
slight refactor
MathMan05 Jul 13, 2026
c43fdf3
don't store the guild id dirrectly
MathMan05 Jul 13, 2026
5134e56
make logic less sloppy
MathMan05 Jul 13, 2026
d492736
shoot, forgot to hit save
MathMan05 Jul 13, 2026
9fe96f1
fix up replying to welcomes
MathMan05 Jul 13, 2026
b009a09
shoot, fix DMS
MathMan05 Jul 13, 2026
559f212
rename
MathMan05 Jul 13, 2026
a6b3b41
oop
MathMan05 Jul 13, 2026
5519c2d
N
MathMan05 Jul 13, 2026
5382e68
small changes
MathMan05 Jul 14, 2026
11aeb22
readonlyinth
MathMan05 Jul 14, 2026
0b018eb
more readonly
MathMan05 Jul 14, 2026
f33a104
everything is private
MathMan05 Jul 14, 2026
b66b740
set more stuff to readonly
MathMan05 Jul 14, 2026
2913a81
don't use member list for member json updates
MathMan05 Jul 14, 2026
471f48f
fix unreads bug
MathMan05 Jul 14, 2026
75666dc
give auth
MathMan05 Jul 14, 2026
123ba8d
fetch users id
MathMan05 Jul 14, 2026
c0e59b6
fix invites
MathMan05 Jul 14, 2026
898ebba
safe link should only trust http and https
MathMan05 Jul 14, 2026
6d6d079
actually it shouldn't process at all if it's bad
MathMan05 Jul 14, 2026
9996f67
bump nodejs version
MathMan05 Jul 14, 2026
f2d04f5
oops
MathMan05 Jul 14, 2026
194229a
fix perms for server update
MathMan05 Jul 15, 2026
fe5805b
don't store order if it's not needed
MathMan05 Jul 15, 2026
63a7e52
oop
MathMan05 Jul 15, 2026
d242033
add a TODO
Jul 15, 2026
2452973
use safelink for badges
Jul 16, 2026
033d931
check for http/https for video embeds
Jul 16, 2026
f9748f5
make goback redirs safe
Jul 16, 2026
4419bc4
use toString() instead
Jul 16, 2026
6271b38
Merge pull request 'make goback redirs safe' (#360) from bunnisa/Ferm…
Jul 16, 2026
a7715b8
settings update
Jul 17, 2026
1591837
better emoji reconition
Jul 17, 2026
128b6f9
perf updates and perm selection updates
Jul 18, 2026
1af7590
screw up fix
Jul 18, 2026
b140caf
oops
Jul 18, 2026
98ffac0
hopefully fix video attachment size
Jul 18, 2026
ebce3f6
forgot to remove true
Jul 18, 2026
0368cf8
fix nsfw pannel bug
Jul 18, 2026
1d7c3cb
fix some bugs
Jul 18, 2026
5b0e965
black folder support
Jul 18, 2026
cb9c979
update Harmony icon
Jul 18, 2026
7aa1c13
fix firefox bug and make a setting out of it
Jul 18, 2026
6b166a6
Gif providors update
Jul 19, 2026
bc44ddb
fix edit bug
Jul 19, 2026
8191c6b
syntax highlighting
Jul 20, 2026
354fc1d
not global
Jul 20, 2026
7c10956
json support
Jul 20, 2026
9f25db8
wrong keyword
Jul 20, 2026
f9e3e13
fix function names
Jul 20, 2026
5eb5209
fix C settings and add go
Jul 20, 2026
c14f8aa
fix spacing issues
Jul 20, 2026
3e3df08
fix typo
Jul 20, 2026
94755ca
Localisation updates from https://translatewiki.net.
translatewiki Jul 20, 2026
c45cc4e
better highlighting
Jul 20, 2026
6e29611
fix stuttery mention search
Jul 20, 2026
daeb3e6
remove ultra-excesive logging
Jul 20, 2026
e67adcf
Merge branch 'main' of ssh://codeberg.org/MelodyChat/Fermi
Jul 20, 2026
42e46dc
remove prev log
Jul 20, 2026
732abe6
message edit change
Jul 20, 2026
56a5152
image disp for banners/avatars
Jul 20, 2026
d1b1e48
send files by themselves on mobile
Jul 20, 2026
ebe109f
Add C# as language, fix typo
Jul 21, 2026
b41459a
Allow for first line shebang
Jul 21, 2026
7e36dbc
fermi VC updates
Jul 22, 2026
4439f96
close all voices on main WS close
Jul 22, 2026
0d667d1
Merge pull request 'Add C# Syntax Highlighting' (#363) from TheBrambl…
Jul 22, 2026
a2b47aa
move python over to c-like and new multiline string
Jul 22, 2026
89038d4
shoot, missed a debug log
Jul 22, 2026
7954263
missed a \
Jul 22, 2026
610843b
missed another log
Jul 22, 2026
32b9f95
move to dataset
Jul 22, 2026
e93e96e
Localisation updates from https://translatewiki.net.
translatewiki Jul 23, 2026
1099df4
fix webhook detection
Jul 23, 2026
c10fec1
merge main
Jul 23, 2026
df601b3
Merge branch 'main' of ssh://codeberg.org/MelodyChat/Fermi
Jul 23, 2026
07045ba
fix member code
Jul 23, 2026
69f0c8d
client side fix for webhook bug
Jul 23, 2026
93e1d81
turn off most of the SW
Jul 23, 2026
6c5fff8
fix tsc check
Jul 23, 2026
4b6b35d
Domain verification
Jul 25, 2026
59495fe
Localisation updates from https://translatewiki.net.
translatewiki Jul 27, 2026
3332450
add holy C
Jul 27, 2026
1ee9c86
add c++ and rust lang highlights
Jul 27, 2026
3bcbfed
add more rust keywords
Jul 27, 2026
adef946
Merge pull request 'add c++ and rust lang highlights' (#379) from Est…
Jul 27, 2026
7d1795c
Merge branch 'main' of ssh://codeberg.org/MelodyChat/Fermi
Jul 27, 2026
4c52ff1
edit cancel button
Jul 27, 2026
1add3ee
fix firefox markdown editing
Jul 27, 2026
8cb1938
that's a typo
Jul 27, 2026
9ff8e5f
fix: add native video embed rendering to Embed class
Star123451 Jul 28, 2026
d961384
fix ogg
Jul 28, 2026
7ac0ac5
Merge branch 'main' into fix/video-embeds
Jul 28, 2026
688ecb7
fix mentions in DMs
Jul 28, 2026
2774e8b
fix disapearing group DM icon
Jul 28, 2026
bb87342
mute DMs
Jul 28, 2026
eacc731
Merge branch 'main' into fix/video-embeds
Jul 28, 2026
888b843
add shortcuts
Jul 28, 2026
d3041ce
remove log
Jul 28, 2026
a7e53ad
Merge branch 'main' into fix/video-embeds
Jul 29, 2026
971f3ea
redo video logic a bit
Jul 29, 2026
bbd4a20
copy media URL
Jul 29, 2026
7e2217b
classic case of no one though to do this
Jul 29, 2026
d4e9e80
update embed
Jul 29, 2026
1e589e5
feat: make 'Today at xx:xx AM/PM' just be 'xx:xx AM/PM' for brevity
Jul 29, 2026
b64073f
feat: make favorited stars be high contrast w.r.t to the images they'…
Jul 29, 2026
341a8e1
unknown file changes
Jul 29, 2026
221fa97
make updating permissions work less bad
Jul 29, 2026
82180be
make guild update on update
Jul 29, 2026
a5cfdb0
fix perms
Jul 29, 2026
2fb3986
feat: prefix channels with # sign when relevant
Jul 29, 2026
5788b26
Merge branch 'pr-411'
Jul 29, 2026
f22a13f
merge and fixes
Jul 29, 2026
2f047b5
Merge branch 'pr-410'
Jul 29, 2026
35c8c86
enable disabled features
Jul 29, 2026
80e8eb8
rid of weird shading
Jul 29, 2026
875b3fb
show results of poll
Jul 29, 2026
f0370b1
feat: mutual guilds box be the same size as mutual friends
Jul 30, 2026
b228c93
fix: vertical alignment of links on user profile
Jul 30, 2026
a900332
Merge pull request 'fix: vertical alignment of links on user profile'…
Jul 30, 2026
8121877
Merge pull request 'feat: mutual guilds box be the same size as mutua…
Jul 30, 2026
9168eb1
lets try 100
Jul 30, 2026
42e0aa3
feat: softer banner shadow drop, text shadow to make more readable te…
Jul 30, 2026
0cd7df3
feat: better folder styling
Jul 30, 2026
c750210
feat: make servers guild colour slightly darker than docked bg
Jul 30, 2026
ea1b745
feat: open attachments in new tab
Jul 30, 2026
d891869
feat: proper i18n translated SI size suffixes
Jul 30, 2026
5285c07
feat: add java, kotlin as supported languages
Jul 30, 2026
f9710e5
may as well add glslang
Jul 30, 2026
ae3cdd2
Mayyy as well add HLSL
Jul 30, 2026
546f057
feat: actually fetch verify_key for applications
Jul 30, 2026
238ced3
NOT BOT TOKEN
Jul 30, 2026
d1d21ee
Localisation updates from https://translatewiki.net.
translatewiki Jul 30, 2026
d110b2a
Merge branch 'pr-434'
Jul 30, 2026
965d8a2
Merge branch 'pr-448'
Jul 30, 2026
836c505
Merge branch 'pr-454'
Jul 30, 2026
b07bb59
Merge branch 'pr-455'
Jul 30, 2026
2189d0a
Merge branch 'pr-457'
Jul 30, 2026
7743b05
Merge branch 'pr-458'
Jul 30, 2026
bec8d8f
Merge branch 'main' of ssh://codeberg.org/MelodyChat/Fermi
Jul 30, 2026
fcb9317
Merge branch 'pr-450'
Jul 30, 2026
12e74a0
feat: implement alpha decorations
Jul 30, 2026
27c743b
copy channel URL
Jul 30, 2026
f0e35ea
shorten channel name
Jul 30, 2026
0c622b9
don't let it overflow
Jul 30, 2026
30a1236
mutral guilds click event
Jul 30, 2026
01e8b38
re-render reply box
Jul 30, 2026
8597775
feat: fix 'duck resizing' video player bug, do not preload all videos
Jul 30, 2026
70c9b7d
feat: vertically align emojis, make reactions slightly bigger
Jul 31, 2026
64bd5d4
Merge branch 'pr-462'
Jul 31, 2026
9ab6a8b
feat: larget 'Upload files here' box
Jul 31, 2026
cab7804
remove extra space
Jul 31, 2026
4a8e9c7
retry and fail message
Jul 31, 2026
daf6133
feat: copy group (and individual) DMs channel URL
Aug 1, 2026
8eba4f1
feat: link icon
Aug 1, 2026
8b48a73
oops forgot le css
Aug 1, 2026
112bd25
feat: align attachment preview horz/vert
Aug 1, 2026
4254e6f
feat: line break so i can type long words without remorse
Aug 1, 2026
5b1aa87
Merge branch 'pr-490'
Aug 1, 2026
6bb2544
Merge branch 'pr-491'
Aug 1, 2026
c1efd92
Merge branch 'main' of ssh://codeberg.org/MelodyChat/Fermi into Esthe…
Aug 1, 2026
efc9682
smaller link
Aug 1, 2026
bb29929
math made a better icon
Aug 1, 2026
144384a
even better icon
Aug 1, 2026
56b0537
fix: word-break breaking up perfectly fine words
Aug 2, 2026
e73feae
make typebox into a seperate class for fewer bugs
Aug 2, 2026
9614172
fix TSC errors
Aug 2, 2026
5e2751e
Merge branch 'main' into pr-412
Aug 2, 2026
cbd620b
blur a bit
Aug 2, 2026
9fd285f
fix: syntax highlight on white mode
Aug 3, 2026
1de56b9
fix yellow
Aug 3, 2026
c3f3914
BETTER code highlight
Aug 3, 2026
8731fe7
fix small tiny issue with parser
Aug 3, 2026
561940e
fix: friend button on white mode
Aug 3, 2026
ea3eae4
fix: banner text colours on white mode
Aug 3, 2026
9f4ea79
Localisation updates from https://translatewiki.net.
translatewiki Aug 3, 2026
c2a1c8f
firefox MD fixes
Aug 4, 2026
97ec9fc
Merge branch 'main' of ssh://codeberg.org/MelodyChat/Fermi
Aug 4, 2026
8e23f00
Merge branch 'pr-495'
Aug 4, 2026
da0e47c
Merge branch 'pr-497'
Aug 4, 2026
dc0676b
Merge branch 'pr-496'
Aug 4, 2026
00b59f6
delete unreachable code
Aug 4, 2026
3352716
feat: more contextual notifications
Aug 4, 2026
4286726
Merge branch 'pr-499'
Aug 4, 2026
c2e4d69
Merge branch 'main' into lizzie/emoji-react-asasa
Aug 4, 2026
93e2845
better reaction min width
Aug 4, 2026
de77b72
fix: join button
Aug 4, 2026
3ea4291
Merge branch 'pr-500'
Aug 4, 2026
717f215
fix: bottom cutoff of member list
Aug 4, 2026
e24e747
feat: more visible mentions on white mode
Aug 4, 2026
de8ae7d
fix: gif picker on white mode
Aug 4, 2026
930911e
keep same blackness colour
Aug 4, 2026
551e40b
feat: make 'BOT' and 'WEBHOOK' be in white letters always
Aug 4, 2026
259edd7
vert align
Aug 4, 2026
6d593a6
use userbg for text, oops!
Aug 4, 2026
0f32bbb
increase to 75%
Aug 4, 2026
ff470e2
feat: add bash and json highlight
Aug 4, 2026
af57946
not json
Aug 4, 2026
c107273
feat: stylized scrollbar
Aug 4, 2026
cac9a77
delete unused class
Aug 4, 2026
ecf0b4d
Merge branch 'pr-510'
Aug 4, 2026
0608508
Merge branch 'pr-504'
Aug 4, 2026
5c09bc4
Merge branch 'main' into pr-511
Aug 4, 2026
fc08e26
slight change
Aug 4, 2026
9a3f370
Merge branch 'pr-508'
Aug 4, 2026
23d24f6
Merge branch 'pr-506'
Aug 4, 2026
e69e584
Merge branch 'pr-505'
Aug 4, 2026
7e3bd18
group DM fix
Aug 4, 2026
a7e6ec2
fix z-index bug
Aug 5, 2026
60c2282
reverse tri-select order
Aug 5, 2026
cdedf50
fix the hover bugs
Aug 5, 2026
a0b317a
fix sticker in messages
Aug 5, 2026
fac8a15
Localisation updates from https://translatewiki.net.
translatewiki Aug 6, 2026
f05ca63
that was meant to be static
Aug 6, 2026
605e9ba
Merge branch 'main' of ssh://codeberg.org/MelodyChat/Fermi
Aug 6, 2026
bed19cf
fix minor embed fix
Aug 9, 2026
c3740b2
fix invite bug
Aug 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
414 changes: 414 additions & 0 deletions .dependency-cruiser.cjs

Large diffs are not rendered by default.

38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve.
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser: [e.g. Chrome, Safari]
- Browser Version: [e.g. 22]

**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1, Android 16]
- Browser: [e.g. stock browser, safari]
- Browser Version: [e.g. 22]

**Additional context**
Add any other context about the problem here.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project.
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Example: I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
5 changes: 5 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Description
A description of the pull request.

# Related issues
Any related issues, delete if there are none.
18 changes: 18 additions & 0 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Docker Image CI

on:
push:
branches: [ "not right now" ]
pull_request:
branches: [ "not right now" ]

jobs:

build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Build the Docker image
run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)
20 changes: 20 additions & 0 deletions .github/workflows/tsc-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: TSC check CI

on:
push:
pull_request:

jobs:
tsc:
name: tsc
runs-on: codeberg-tiny
steps:
- uses: actions/checkout@v4
- name: install node v22
uses: actions/setup-node@v1
with:
node-version: 22
- name: npm i
run: npm i
- name: npm run tsc
run: npm run tsc --noEmit
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -135,4 +135,8 @@ CC
uptime.json
.directory
.dist/
bun.lockb
bun.lockb
src/webpage/translations/langs.js

build.js
dependency-graph.svg
13 changes: 13 additions & 0 deletions .swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"$schema": "https://swc.rs/schema.json",
"jsc": {
"parser": {
"syntax": "typescript",
"tsx": false
},

"target": "es2024"
},
"sourceMaps": true,
"minify": true
}
5 changes: 5 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Code of conduct
It's nothing complicated, I want to foster a nice community, if there's any issues feel free to contact me in any way you see fit, though please don't create problems for me. I'm just one person and I want to work on this project, not community management. I will likely start with a warning or two if any issues arise, though this is up to my (mathium05) sole discretion.
Generally follow https://redir.fermi.chat/coc and you should be fine. Do not try to pull technicalities, this is a FOSS project, not a court of law.

Happy coding!
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This ain't exactly rocket science, please just describe what you've done, and follow all normal steps, it may take a few days for me to get back to you, life happens. Just try to keep the pull requests fairly small, so adding one thing or fixing one thing, but you may fix multiple bugs in one patch if they're either related or small enough. These are all soft rules and I am going to be more lenient.
30 changes: 19 additions & 11 deletions CompressingImages.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,39 @@ This is for in the future when I want to compress more images or anyone else for
# Lossless

### https://squoosh.app/
good at reducing the pallet, a first step for images that have a limited number of colors, bad at actually compressing things though, for all formats except webp.
Good at reducing the pallet, a first step for images that have a limited number of colors, bad at actually compressing things though, for all formats except WEBP and PNG.

## PNGs:
good ratios, though not as good as other options, though better compatibility
Good ratios, though not as good as other options, though better compatibility.
### oxipng
*(you can also use through squoosh with the same results)*
Seems to be the best of all of the options, not sure if it's all you would need, but it did shrink pngs further than the other two tools afterwards.
```bash
oxipng -o max --strip all --alpha <filename here>
```
`all` may be replaced with `safe` if you want to be a bit safer.

### pngcrush
Good, but should be ran before optipng, but isn't as good as it, use in tandom
Good, but should be ran before optipng, but isn't as good as it, use in tandom.
### optipng
The best tool to really shrink pngs to be as small as they can be.
The second best tool to really shrink pngs to be as small as they can be.

## WEBP
it's better than png, though I have a feeling more could be done to compress these
It's better than png, though I have a feeling more could be done to compress these
### cwebp
so far this seems to be the best way to compress webp images with a command that kinda looks like this one
So far this seems to be the best way to compress WEBP images with a command that kinda looks like this one:
```bash
cwebp -lossless -z 9 in.webp -o out.webp
```
while for all other formats squoosh is not recommended, for webp it'll be identical due to cwebp using the same libary as squoosh.
While for all other formats squoosh is not recommended, for WEBP it'll be identical due to cWEBP using the same libary as squoosh.

## AVIF
As far as I can tell, this format just sucks at its job, at least for lossless images

## JPEGXL
Really good at compression size, though it's not supported anywhere outside of safari as of now.
Really good at compression size, though it's not supported anywhere outside of Safari as of now.
### cjxl
this command should do the trick for compressing
This command should do the trick for compressing:
```bash
cjxl input.png output.jxl -q 100 -e 10
```
Expand All @@ -35,6 +43,6 @@ cjxl input.png output.jxl -q 100 -e 10

## SVGs:
### https://svgomg.net/
great tool, if anyone knows how to squish them further, let me know, some manual work may go a long way to help shrink svgs, though I'm not doing that right now lol.
Great tool! If anyone knows how to squish them further, let me know! Some manual work may go a long way to help shrink SVGs, though I'm not doing that right now lol.

I may look into other formats soon as well, though these are the main two I'm currently using
I may look into other formats soon as well, though these are the main two I'm currently using.
18 changes: 18 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM node:26-bullseye AS builder

WORKDIR /devel
RUN apt-get update ; apt-get upgrade -y ; apt-get install -y build-essential
COPY . .
RUN npm i ; npm run build

FROM node:26-alpine

EXPOSE 8080
WORKDIR /exec
RUN apk add --update nodejs npm
COPY --from=builder /devel/ .
RUN adduser -D jankclient

USER jankclient

CMD ["npm", "start"]
48 changes: 24 additions & 24 deletions InstanceInfo.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# How to add your instance to Jank Client
inside of webpage you'll see a file called `instances.json` in that file you'll need to add your instance and its information in the following format if you want your instance to be a part of the drop down.
# How to add your instance to Fermi Client
Inside of `webpage` you'll see a file called `instances.json` in that file you'll need to add your instance and its information in the following format if you want your instance to be a part of the dropdown.
```
{
"name":<name>,
"description"?:<short description>,
"description"?:<A short description>,
"descriptionLong"?:<A description for the instance that can be longer>,
"image"?:<URL to image repersenting your instance>,
"image"?:<URL to image representing your instance>,
"url"?:<The URL that can be used to get your wellknown>,
"language":<what language your server is in>,
"country":<what country your server is in>,
"display":<true or false depending on wether it should display>,
"language":<What language your server is in>,
"country":<What country your server is in>,
"display":<True or false depending on wether it should display>,
"urls"?:{
"wellknown":<wellknown URL>,
"api":<API URL>,
Expand All @@ -19,26 +19,26 @@ inside of webpage you'll see a file called `instances.json` in that file you'll
},
"contactInfo"?:{
"discord"?:<Discord @>,
"github"?:<github profile URL>,
"email"?:<email address>,
"spacebar":?:<spacebar username>,
"matrix"?:<matrix account>,
"mastodon"?:<mastodon account>
"github"?:<Github profile URL>,
"email"?:<Email address>,
"harmony":?:<Harmony username>,
"matrix"?:<Matrix account>,
"mastodon"?:<Mastodon account>
}
}
```
anything with a `?` in-front of its `:` are optional, though you must either include `"URL"` or `"URLs"`, but you may include both, though the client will most likely ignore `"URLs"` in favor of `"URL"`, though it may use `"URLs"` as a fallback if `"URL"` does not resolve, do not rely on this behavior.
wellknown should be a url that can resolve the wellknown, but it should only be the base URL and not the full wellknown url.
Anything with a `?` in-front of its `:` are optional, though you must either include `"URL"` or `"URLs"`, but you may include both, though the client will most likely ignore `"URLs"` in favor of `"URL"`, though it may use `"URLs"` as a fallback if `"URL"` does not resolve, do not rely on this behavior.
`wellknown` should be a url that can resolve, but it should only be the base URL and not the full wellknown URL.
Some of these values may not be used right now, though they will likely be used in the future, so feel free to fill out what you like, though the more you fill out the more information we can give the users about your instance in the future.
language should be [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1_codes).
Country should be [ISO 8166-2 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
You can also add yourself to [this](https://github.com/spacebarchat/spacebarchat/tree/master/instances) list, and you should, though there are some disadvantages to only being in that list
`language` should be [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1_codes).
`country` should be [ISO 8166-2 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

# Questions
## Do I have to do this to let Jank Client connect to my server?
No, you may choose to not do this, this just makes it easier for people using Jank Client to find and use your instance as it's in the dropdown menu for instances, though the user may enter any instance they please.
## If my instance isn't spacebar is that allowed to be entered?
If it's spacebar compatable, yes it may be entered, though if there are too many incompatablities, it may not be included, or may need a warning of sorts.
## I'm hosting my own instance of spacebar and would like to change the defualt instance on my instance of Jank Client to my own instance.
## Do I have to do this to let Fermi Client connect to my server?
No, you may choose to not do this, this just makes it easier for people using Fermi Client to find and use your instance as it's in the dropdown menu for instances, though the user may enter any instance they please.
## If my instance isn't Harmony is that allowed to be entered?
If it's Harmony compatible then yes, it may be entered. Though if there are **too many incompatibilities** however, it may not be included, or may need a warning of sorts.
## I'm hosting my own instance of Harmony and would like to change the default instance on my instance of Fermi Client to my own instance.
Just change the first entry in the list to your own, and it should connect without issue.
## Why would I put my instance in this list over the official spacebar list?
While putting your instance in the other list will get it to show up on jank client, this list does have more settings, and will show up earlier in the results, though either list will work to get in the dropdown menu
## Why would I put my instance in this list over the official Harmony list?
While putting your instance in the other list will get it to show up on Fermi client, this list does have more settings, and will show up earlier in the results, though either list will work to get in the dropdown menu.
31 changes: 18 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,28 @@
# Jank Client
Jank Client is a [Spacebar](https://spacebar.chat) Client written in TS, HTML, and CSS.
# Fermi
Fermi is a [Harmony](https://redir.fermi.chat/server) Client written in TS, HTML, and CSS.

To run it, clone the repo and do `npm install`, then
`node index.js`
or do the equivalent with bun
![](src/webpage/home/SS1.webp)

To build it, clone the repo and run `npm install`, then `npm run build`
To run it, use `npm start`
or do the equivalent with bun.

Both [Bun](https://bun.sh) and [Node.js](https://nodejs.org) are supported, and should function as expected.

To access Jank Client after starting, simply go to http://localhost:8080/login and either register a new account, or log in with your email and password.
To access Fermi after starting, simply go to http://localhost:8080/login and either register a new account, or log in with your email and password.

If there are any issues please report them either here, or to me dirrectly on spacebar
If there are any issues please report them either here, or to me dirrectly on Harmony
## Adding instances to the dropdown
Please see [this](https://github.com/MathMan05/JankClient/blob/main/InstanceInfo.md) for how to add an instance to the dropdown picker
Please see [this](https://codeberg.org/MelodyChat/Fermi/src/branch/main/InstanceInfo.md) for how to add an instance to the dropdown picker.
## How to statically host Fermi
[Click here](./howToStaticallyHost.md)
## RoadMap
You can view the current roadmap on https://github.com/users/MathMan05/projects/1.

You can view the current roadmap on https://codeberg.org/MelodyChat/Fermi/projects/59942.
## AI Code
AI code due to not being GPLv3 compatable is not allowed in this repo. I thought this didn't need to be said, but it does.
And to be clear, *any* use of AI is not allowed in Fermi.
## Link
The official SpaceBar server for Jank Client https://jankclient.greysilly7.xyz/invite/USgYJo?instance=https%3A%2F%2Fspacebar.chat
The official Harmony server for Fermi: https://redir.fermi.chat/invite

old invite for the official client https://dev.app.spacebar.chat/invite/USgYJo
The current hosted instance of Fermi: https://fermi.chat/

The current hosted instance of JankClient https://sb-jankclient.vanillaminigames.net
14 changes: 14 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Security Policy

## Supported Versions

Currently, I only support the most up to date version of Fermi client, there are no stable releases, but this is planned for in the future

| Version | Supported |
| ------- | ------------------ |
| main | :white_check_mark: |


## Reporting a Vulnerability

If there's an issue please disclose it responsibly to me, or here on Github privately.
Loading