Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1962 commits
Select commit Hold shift + click to select a range
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
afb0a60
feat: better dark theme
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
f576703
Merge branch 'main' into lizzie/dark-neon-theme
Jul 31, 2026
7be6dc6
i think we can do with this style
Jul 31, 2026
64bd5d4
Merge branch 'pr-462'
Jul 31, 2026
656638a
feat: better poll styling (and fix white mode polls)
Jul 31, 2026
f7513c6
make polls use accent colour
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
c28ce8e
feat: make 'Mark as read' topmost option for guilds
Aug 1, 2026
8eba4f1
feat: link icon
Aug 1, 2026
8b48a73
oops forgot le css
Aug 1, 2026
191ca7c
feat: bound guild descs so they dont overflow
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
45f63be
use guildDesc
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
e4df861
feat: gallery size images equally
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
5bb7ec3
feat: make white mode text darker
Aug 5, 2026
58c4499
feat: pfp banner aligned to profile
Aug 5, 2026
a7e6ec2
fix z-index bug
Aug 5, 2026
60c2282
reverse tri-select order
Aug 5, 2026
b29be52
Merge branch 'main' of ssh://codeberg.org/MelodyChat/Fermi into Esthe…
Aug 5, 2026
cdedf50
fix the hover bugs
Aug 5, 2026
6bd4a15
feat: more compact friend list
Aug 5, 2026
a0b317a
fix sticker in messages
Aug 5, 2026
9732009
fix: align channel names vertically
Aug 5, 2026
e584de6
use child selector
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
c386328
update padding to match the chatbox's height
Aug 6, 2026
ce71de8
Codebergs File Editor Is making Me angry
Aug 6, 2026
bed19cf
fix minor embed fix
Aug 9, 2026
c3740b2
fix invite bug
Aug 9, 2026
412a195
seperate emoji/sticker settings for animation
Aug 9, 2026
f9f12b4
Merge branch 'pr-521'
Aug 10, 2026
abe4c7b
Merge branch 'pr-519'
Aug 10, 2026
68f74e9
Merge branch 'pr-513'
Aug 10, 2026
1e1684f
Merge branch 'pr-512'
Aug 10, 2026
35d5937
Merge branch 'pr-484'
Aug 10, 2026
9aef389
Merge branch 'pr-498'
Aug 10, 2026
2b088d8
Merge branch 'pr-482'
Aug 10, 2026
ccaf1c6
Merge branch 'pr-516'
Aug 10, 2026
5ba799e
Merge branch 'pr-469'
Aug 10, 2026
1a39489
update dark-accent
Aug 10, 2026
910ace8
Merge branch 'main' into pr-451
Aug 10, 2026
0637f2f
slight goof
Aug 10, 2026
c0693f1
correct embed colors
Aug 10, 2026
d037dce
fix video
Aug 10, 2026
1ba801c
feat: make Night Sky a separate theme, bring back old theme as default
Aug 10, 2026
33da164
fixup accent
Aug 10, 2026
79b39f9
WAIT restore
Aug 10, 2026
5edd86c
nightsky accent
Aug 10, 2026
c334f99
Merge branch 'pr-523'
Aug 10, 2026
f2c7ec7
Localisation updates from https://translatewiki.net.
translatewiki Aug 10, 2026
e25da19
oops files were backwards
Aug 10, 2026
2d2f92c
Merge branch 'main' of ssh://codeberg.org/MelodyChat/Fermi
Aug 10, 2026
5f1bf95
maybe this'll fix it? lol
Aug 11, 2026
46abf9d
add free text support
Aug 11, 2026
1d8c618
send textarea value
Aug 11, 2026
bc40375
oops, types
Aug 11, 2026
5578132
fix return type
Aug 11, 2026
92b44d0
fix type
Aug 11, 2026
3b361e4
friend req number
Aug 11, 2026
58d314a
remove debugger
Aug 11, 2026
492450a
those should not be there
Aug 12, 2026
dbaa798
Localisation updates from https://translatewiki.net.
translatewiki Aug 13, 2026
7833c54
add librepay badge
Aug 14, 2026
aa659a6
Merge branch 'main' of ssh://codeberg.org/MelodyChat/Fermi
Aug 14, 2026
512fc75
hover events for discovery/adding a guild
Aug 15, 2026
60bc7b0
make it a bit more tollirent
Aug 15, 2026
c649cfd
hopefully reduce flickering
Aug 15, 2026
6cfae0c
fix minor typebox regression
Aug 15, 2026
bd340b3
fix it a bit better
Aug 15, 2026
5f884f0
update typebox
Aug 15, 2026
7336e38
don't fetch members from channels you can't see
Aug 16, 2026
a886971
Localisation updates from https://translatewiki.net.
translatewiki Aug 17, 2026
dac1bb9
fix up Webhook management
Aug 18, 2026
63f0177
better NightSky contrast
Aug 18, 2026
8cbadbf
Merge branch 'main' of ssh://codeberg.org/MelodyChat/Fermi
Aug 18, 2026
4da177b
put icon update later
Aug 18, 2026
fd9aeb1
copy code
Aug 18, 2026
18b0e78
Sticker source update
Aug 18, 2026
bc8969a
use popup class instead
Aug 18, 2026
51a26c7
that should have not existed
Aug 18, 2026
e417996
oops
Aug 18, 2026
e2f5863
false
Aug 18, 2026
51cbe33
update dock pfp
Aug 18, 2026
a395dcc
submit text
Aug 18, 2026
64a9f88
pronouns everywhere1
Aug 18, 2026
d2f9d85
sort relationships
Aug 18, 2026
4f393e6
why firefox
Aug 20, 2026
573c4a2
Add channel hover text
Aug 20, 2026
6a46c6a
set defualt names
Aug 20, 2026
a3bd614
block is red now
Aug 20, 2026
c4bc5ed
Localisation updates from https://translatewiki.net.
translatewiki Aug 20, 2026
f8a3188
move .github to .forgejo
Aug 20, 2026
b75de8e
build fermi
Aug 20, 2026
fc0843f
codeberg?
Aug 20, 2026
5f7b8b1
match betterer
Aug 20, 2026
1233277
maybe this setting?
Aug 20, 2026
34c3a2f
I should build it shouldn't I?
Aug 20, 2026
1421bc6
on tags
Aug 20, 2026
02e60e5
write tags
Aug 20, 2026
1ad3af8
use more modern node features and drop bun
Aug 20, 2026
bb60505
update build
Aug 20, 2026
828de07
update README
Aug 20, 2026
91ad47e
tarbal it first apparently
Aug 20, 2026
d5603c4
this might work
Aug 20, 2026
155a30a
oops
Aug 20, 2026
ee08bcc
oops 2
Aug 20, 2026
1ac3879
echo notes
Aug 20, 2026
62ba2ac
put it back
Aug 20, 2026
4294bc7
verbose
Aug 21, 2026
8be2e89
oops 3
Aug 21, 2026
a37c7fa
add todo
Aug 21, 2026
af509b6
changed the wrong one
Aug 21, 2026
f0e5127
put that in the correct dir
Aug 21, 2026
d82d694
maybe write it?
Aug 21, 2026
b853961
that is now file
Aug 21, 2026
d63bcd6
tar dist itself
Aug 21, 2026
a98d40b
maybe?
Aug 21, 2026
819a7a1
maybe?
Aug 21, 2026
c740380
maybe include the ref name
Aug 21, 2026
52bb684
I swear if this works
Aug 21, 2026
a75e38d
that didn't help
Aug 21, 2026
cc469c4
don't format to see results
Aug 21, 2026
665c4c9
missed a quote
Aug 21, 2026
c0c814a
points-at HEAD
Aug 21, 2026
fcc3e47
worth a shot
Aug 21, 2026
970927f
I give up for now
Aug 21, 2026
a05c274
zip it better
Aug 21, 2026
c141c3e
recursive
Aug 21, 2026
41e6d23
no need for the git pull
Aug 21, 2026
f8d9d66
change the name
Aug 21, 2026
becc68d
made the zip
Aug 21, 2026
2b15fc2
get config
Aug 21, 2026
950c68b
check and enforce max bio/pronouns
Aug 21, 2026
bf4d652
fix pronouns bug
Aug 21, 2026
7469637
fermi codeberg connection support
Aug 21, 2026
e49cd26
fix z-index issue
Aug 22, 2026
68f813b
unused
Aug 22, 2026
87f352a
Localisation updates from https://translatewiki.net.
translatewiki Aug 24, 2026
d888f25
improve custom notification sound sysyem
Aug 24, 2026
c1de80e
use promise lock and add an await
Aug 26, 2026
8eb2984
Localisation updates from https://translatewiki.net.
translatewiki Aug 27, 2026
85a0da8
fix gif picker event
Aug 28, 2026
512ad95
Merge branch 'main' of ssh://codeberg.org/MelodyChat/Fermi
Aug 28, 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 .forgejo/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 .forgejo/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 .forgejo/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.
44 changes: 44 additions & 0 deletions .forgejo/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Build Fermi

on:
push:
tags:
- "0.*"
- "1.*"

jobs:
makeRelease:
name: makeRelease
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 build
run: npm run build
- name: Write desc
id: desc
run: |
cat >> $FORGEJO_OUTPUT <<EOF
NOTES<<STRING
$(git tag --points-at HEAD -n99 --format="%(contents)")
STRING
EOF
- name: tar it
run: mkdir release; tar -czvf release/release.tar.gz dist/*
- name: zip it
run: zip release/release.zip -r dist/*
- uses: actions/forgejo-release@v2.13.4
with:
direction: upload
url: https://codeberg.org/
repo: MelodyChat/fermi
token: ${{ secrets.CODEBERG_TOKEN }}
tag: ${{ github.ref_name }}
release-dir: release/
release-notes: ${{ steps.desc.outputs.NOTES }}

18 changes: 18 additions & 0 deletions .forgejo/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 .forgejo/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.
34 changes: 21 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,31 @@
# Jank Client
Jank Client is a [Spacebar](https://spacebar.chat) Client written in TS, HTML, and CSS.
# Fermi
<a href="https://liberapay.com/Mathium05/donate"><img src="https://img.shields.io/liberapay/patrons/Mathium05.svg?logo=liberapay"></a>

To run it, clone the repo and do `npm install`, then
`node index.js`
or do the equivalent with bun
Fermi is a [Harmony](https://redir.fermi.chat/server) Client written in TS, HTML, and CSS.

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

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 build it, clone the repo and run `npm install`, then `npm run build`
To run it, use `npm start`

If there are any issues please report them either here, or to me dirrectly on spacebar
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 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