From 768aa9f5176f509f367d4a9584721e1ef183c245 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:17:48 +0000 Subject: [PATCH 01/25] Update InstanceInfo.md wording --- InstanceInfo.md | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/InstanceInfo.md b/InstanceInfo.md index 6314c9a..dec8a94 100644 --- a/InstanceInfo.md +++ b/InstanceInfo.md @@ -1,5 +1,5 @@ -# 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":, @@ -7,9 +7,9 @@ inside of webpage you'll see a file called `instances.json` in that file you'll "descriptionLong"?:, "image"?:, "url"?:, - "language":, - "country":, - "display":, + "language":, + "country":, + "display":, "urls"?:{ "wellknown":, "api":, @@ -19,26 +19,27 @@ inside of webpage you'll see a file called `instances.json` in that file you'll }, "contactInfo"?:{ "discord"?:, - "github"?:, - "email"?:, - "spacebar":?:, - "matrix"?:, - "mastodon"?: + "github"?:, + "email"?:, + "spacebar":?:, + "matrix"?:, + "mastodon"?: } } ``` -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). +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. + # 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. +## 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 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. +If it's spacebar compatible then yes, it may be entered. Though if there are **too many incompatablities** however, 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 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 Spacebar 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. From a5cb25cc9d2c933c372f434ed4463810eaf3be50 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:18:27 +0000 Subject: [PATCH 02/25] Fix typos in InstanceInfo.md --- InstanceInfo.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/InstanceInfo.md b/InstanceInfo.md index dec8a94..8a75b08 100644 --- a/InstanceInfo.md +++ b/InstanceInfo.md @@ -3,9 +3,9 @@ Inside of `webpage` you'll see a file called `instances.json` in that file you'l ``` { "name":, - "description"?:, + "description"?:, "descriptionLong"?:, - "image"?:, + "image"?:, "url"?:, "language":, "country":, From edfaf75707d4b52a5d17eaa473ef86934c2b09d7 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:23:57 +0000 Subject: [PATCH 03/25] Enhance formatting in howToStaticallyHost.md Updated formatting for code snippets and improved clarity. --- howToStaticallyHost.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/howToStaticallyHost.md b/howToStaticallyHost.md index da8276a..1f8ccd8 100644 --- a/howToStaticallyHost.md +++ b/howToStaticallyHost.md @@ -1,13 +1,13 @@ ### How to statically host Fermi Fermi due to its service worker, will technically work without any of this, but here's what you need to keep in mind for statically hosting it. ### I will assume the following -* 404.html will be used for 404 responses -* index.html will be used when in that directory +* `404.html` will be used for 404 responses +* `index.html` will be used when in that directory * stuff like `/app` will just use the html file at `/app.html` Here's the other thing you need to do: -Firstly you'll need to build Fermi like normal and host out the ./dist/webpage directory. +Firstly you'll need to build Fermi like normal and host out the `./dist/webpage` directory. You need to make some rewrites, not redirects from these addresses: * `/channels/*` -> `/app.html` @@ -16,4 +16,4 @@ You need to make some rewrites, not redirects from these addresses: Other than these three rewrites, everything else should work as expected! -(the reason why the service worker can fix this is due to it doing the rewrites on the client side) +*(the reason why the service worker can fix this is due to it doing the rewrites on the client side)* From 4d98b42e338312aa0b24d01d5e5fd518cc18cc4e Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:24:42 +0000 Subject: [PATCH 04/25] Removed the small text Actually, it looks too small. Whoops! --- howToStaticallyHost.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/howToStaticallyHost.md b/howToStaticallyHost.md index 1f8ccd8..77f880a 100644 --- a/howToStaticallyHost.md +++ b/howToStaticallyHost.md @@ -16,4 +16,4 @@ You need to make some rewrites, not redirects from these addresses: Other than these three rewrites, everything else should work as expected! -*(the reason why the service worker can fix this is due to it doing the rewrites on the client side)* +*(the reason why the service worker can fix this is due to it doing the rewrites on the client side)* From 86fd93362df3226730d186664164581748d9efaf Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:25:58 +0000 Subject: [PATCH 05/25] Fix typos in SECURITY.md --- SECURITY.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 732ba78..02c0265 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,7 +2,7 @@ ## Supported Versions -Currently, I only support the most up to date version of jank client, there are no stable releases, but this is planned for in the future +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 | | ------- | ------------------ | @@ -11,4 +11,4 @@ Currently, I only support the most up to date version of jank client, there are ## Reporting a Vulnerability -If there's an issue please disclose it responsibly to me, or here on github privatly. +If there's an issue please disclose it responsibly to me, or here on Github privately. From 30952056467b81ca8915771da42e728d7a5b6f48 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:30:08 +0000 Subject: [PATCH 06/25] Fixed typos in CompressingImages.md --- CompressingImages.md | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/CompressingImages.md b/CompressingImages.md index a733b28..16e06df 100644 --- a/CompressingImages.md +++ b/CompressingImages.md @@ -2,40 +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 and png. +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) - +*(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 ``` -`all` may be replaced with `safe` if you want to be a bit safer +`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 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 ``` @@ -44,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. From 1be543ad0788c722ec4ded57dde20fe2639da063 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:30:52 +0000 Subject: [PATCH 07/25] Missed something (CompressingImages.md) Am I going too far with the typo fixing :trol: --- CompressingImages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CompressingImages.md b/CompressingImages.md index 16e06df..9e7b0db 100644 --- a/CompressingImages.md +++ b/CompressingImages.md @@ -2,7 +2,7 @@ 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 and PNG. +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. From e8180dd1f70055f8cbcfb114ae5971b639bbb9e8 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:33:49 +0000 Subject: [PATCH 08/25] Formatting Fixes in CoC markdown --- CODE_OF_CONDUCT.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 224acbf..9887eae 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,5 +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 arrise, though this is up to my(mathium05) sole discretion. -generally follow https://docs.spacebar.chat/contributing/conduct/ and you should be fine. Do not try to pull technicalities, this is a FOSS project, not a court of law. +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://docs.spacebar.chat/contributing/conduct/ and you should be fine. Do not try to pull technicalities, this is a FOSS project, not a court of law. Happy coding! From bdba05647ee4b448294b852d1492a8ed29b653b3 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:35:21 +0000 Subject: [PATCH 09/25] Full stop on pull request template --- .github/pull_request_template.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 076944d..6ff7a90 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,5 +1,5 @@ # Description -A description of the pull request +A description of the pull request. # Related issues -Any related issues, delete if there are none +Any related issues, delete if there are none. From a7d73e1ae33f17bd948b9c9bf14b3c9915226b8b Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:37:36 +0000 Subject: [PATCH 10/25] Improve bug report template formatting Updated the bug report template for clarity and consistency. --- .github/ISSUE_TEMPLATE/bug_report.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index dd84ea7..0d63832 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,6 +1,6 @@ --- name: Bug report -about: Create a report to help us improve +about: Create a report to help us improve. title: '' labels: '' assignees: '' @@ -25,14 +25,14 @@ If applicable, add screenshots to help explain your problem. **Desktop (please complete the following information):** - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] + - 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] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] + - 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. From 7c1364fc02fba75a3e379cb64e4341719f6618b2 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:38:50 +0000 Subject: [PATCH 11/25] Fix formatting and punctuation in feature request template --- .github/ISSUE_TEMPLATE/feature_request.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index bbcbbe7..28a8480 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,6 +1,6 @@ --- name: Feature request -about: Suggest an idea for this project +about: Suggest an idea for this project. title: '' labels: '' assignees: '' @@ -8,7 +8,7 @@ assignees: '' --- **Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] +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. From c562b5962d0444f22c6ad8f3445da0001c50f7cb Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:43:40 +0000 Subject: [PATCH 12/25] oEmbed Jank Client to Fermi --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 736dc48..4cf0f5f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -160,7 +160,7 @@ app.use("/", async (req: Request, res: Response) => { const link = `${host}/services/oembed?url=${encodeURIComponent(ref)}`; res.set( "Link", - `<${link}>; rel="alternate"; type="application/json+oembed"; title="Jank Client oEmbed format"`, + `<${link}>; rel="alternate"; type="application/json+oembed"; title="Fermi Client oEmbed format"`, ); } From f0fd5f530dcf3fcaadafa0b9c178ece274eb3c69 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:47:57 +0000 Subject: [PATCH 13/25] AI crawl block --- src/webpage/robots.txt | 67 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/src/webpage/robots.txt b/src/webpage/robots.txt index 08bfbaa..f0bd4a5 100644 --- a/src/webpage/robots.txt +++ b/src/webpage/robots.txt @@ -1,4 +1,69 @@ -User-agent: * +# Block all known AI crawlers and assistants +# from using content for training AI models. +# Source: https://robotstxt.com/ai +User-Agent: GPTBot +User-Agent: ClaudeBot +User-Agent: Claude-User +User-Agent: Claude-SearchBot +User-Agent: CCBot +User-Agent: Google-Extended +User-Agent: Applebot-Extended +User-Agent: Facebookbot +User-Agent: Meta-ExternalAgent +User-Agent: Meta-ExternalFetcher +User-Agent: diffbot +User-Agent: PerplexityBot +User-Agent: Perplexity‑User +User-Agent: Omgili +User-Agent: Omgilibot +User-Agent: webzio-extended +User-Agent: ImagesiftBot +User-Agent: Bytespider +User-Agent: TikTokSpider +User-Agent: Amazonbot +User-Agent: Youbot +User-Agent: SemrushBot-OCOB +User-Agent: Petalbot +User-Agent: VelenPublicWebCrawler +User-Agent: TurnitinBot +User-Agent: Timpibot +User-Agent: OAI-SearchBot +User-Agent: ICC-Crawler +User-Agent: AI2Bot +User-Agent: AI2Bot-Dolma +User-Agent: DataForSeoBot +User-Agent: AwarioBot +User-Agent: AwarioSmartBot +User-Agent: AwarioRssBot +User-Agent: Google-CloudVertexBot +User-Agent: PanguBot +User-Agent: Kangaroo Bot +User-Agent: Sentibot +User-Agent: img2dataset +User-Agent: Meltwater +User-Agent: Seekr +User-Agent: peer39_crawler +User-Agent: cohere-ai +User-Agent: cohere-training-data-crawler +User-Agent: DuckAssistBot +User-Agent: Scrapy +User-Agent: Cotoyogi +User-Agent: aiHitBot +User-Agent: Factset_spyderbot +User-Agent: FirecrawlAgent + +Disallow: / +DisallowAITraining: / + +# Block any non-specified AI crawlers (e.g., new +# or unknown bots) from using content for training +# AI models, while allowing the website to be +# indexed and accessed by bots. These directives +# are still experimental and may not be supported +# by all AI crawlers. +User-Agent: * +DisallowAITraining: / +Content-Usage: ai=n Disallow: /channel/ Allow: /invite/ Allow: /oauth2/ From 1349ef5568466617bce89d50cd4d401ea249d529 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:55:25 +0000 Subject: [PATCH 14/25] Jank to Fermi (audio.md) --- src/webpage/audio/audio.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/webpage/audio/audio.md b/src/webpage/audio/audio.md index a14e732..ca399b1 100644 --- a/src/webpage/audio/audio.md +++ b/src/webpage/audio/audio.md @@ -1,8 +1,8 @@ -# Jank Audio format -This is a markdown file that will try to describe the jank client audio format in sufficient detail so people will know how this weird custom format works into the future. -This is a byte-aligned format, which uses the sequence jasf in asci as a magic number at the start. +# Fermi Audio format +This is a markdown file that will try to describe the Fermi client audio format in sufficient detail so people will know how this weird custom format works into the future. +This is a byte-aligned format, which uses the sequence jasf in ASCI as a magic number at the start. -the next 8 bits will decide how many voices this file has/will provide, if the value is 255 you'll instead have a 16 bit number that follows for how many voices there are, this *should* be unused, but I wouldn't be totally surprised if it did get used. +The next 8 bits will decide how many voices this file has/will provide, if the value is 255 you'll instead have a 16 bit number that follows for how many voices there are, this *should* be unused, but I wouldn't be totally surprised if it did get used. then it'll parse for that many voices, which will be formatted like the following: name:String8; @@ -25,14 +25,14 @@ Given a non-zero length, this will parse the sounds as following: | 011 | absolute power of the next expression | | 012 | round the next expression | | 013 | Math.cos() on the next expression | -> note: -> -> this is likely to expand in the future as more things are needed, but this is just how it is right now. + +> [!NOTE] +> This is likely to expand in the future as more things are needed, but this is just how it is currently. Once you've read all of the sounds in the file, you can move on to parsing the tracks. This starts out by reading a u16 to find out how many tracks there are, then you'll go on to try and parse that many. -each track will then read a u16 to find out how long it is, then it'll read bytes as the following. -it'll first read the index(which is either a u8 or u16 depending on if the amount of voices was u8 or u16), which is the index of the voice 1-indexed, then if it's not 0 it'll parse two float32s in this order, the volume then the pitch of the sound, if it was 0 it'll instead read one 32f as a delay in the track. if it's a default sound it'll also read a third 32f for length +Each track will then read a u16 to find out how long it is, then it'll read bytes as the following. +It'll first read the index (which is either a u8 or u16 depending on if the amount of voices was u8 or u16), which is the index of the voice 1-indexed, then if it's not 0 it'll parse two float32s in this order, the volume then the pitch of the sound, if it was 0 it'll instead read one 32f as a delay in the track. If it's a default sound it'll also read a third 32f for length -then finally you'll parse the audios which are the complete tracks. you'll first parse a u16 to get how many audios there are, then for each audio you'll first parse a string8 for the name, then a u16 for the length then according to the length you'll go on to parse a u16 to get the track (1-indexed again) where if it's 0 you'll instead add a delay according to the next f32, how many ever times according to the length. +Then finally you'll parse the audios which are the complete tracks. You'll first parse a u16 to get how many audios there are, then for each audio you'll first parse a string8 for the name, then a u16 for the length then according to the length you'll go on to parse a u16 to get the track (1-indexed again) where if it's 0 you'll instead add a delay according to the next f32, how many ever times according to the length. From 507c0288c82226e81e390432ff1c27f9efa66d76 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 20:59:18 +0000 Subject: [PATCH 15/25] Jank to Fermi (audio) --- src/webpage/audio/index.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/webpage/audio/index.html b/src/webpage/audio/index.html index 5c61db1..9f4932e 100644 --- a/src/webpage/audio/index.html +++ b/src/webpage/audio/index.html @@ -3,9 +3,9 @@ - Jank Audio - - + Fermi Audio + + @@ -25,15 +25,15 @@

This will eventually be something

- I want to let the sound system of jank not be so hard coded, but I still need to work on + I want to let the sound system of Fermi not be so hard coded, but I still need to work on everything a bit before that can happen. Thanks for your patience.

why does this tool need to exist?

- For size reasons jank does not use normal sound files, so I need to make this whole format to + For size reasons Fermi does not use normal sound files, so I need to make this whole format to be more adaptable

- + From a313b3f2ffa2a0786a50c6c940702ec089d494dc Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 21:03:43 +0000 Subject: [PATCH 16/25] Jank to Fermi style.css --- src/webpage/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webpage/style.css b/src/webpage/style.css index 572ef35..369f6d7 100644 --- a/src/webpage/style.css +++ b/src/webpage/style.css @@ -3774,7 +3774,7 @@ fieldset input[type="radio"] { background: var(--primary-text-prominent); } -/* Jank Mobile */ +/* Fermi Mobile */ #maintoggle, #maintoggleicon { display: none; From 73aeaa1cbcc554c455152ba614c0f6c8e567036c Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 21:10:38 +0000 Subject: [PATCH 17/25] Formating fix (translations.md) --- translations.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations.md b/translations.md index 340ff87..b4886a4 100644 --- a/translations.md +++ b/translations.md @@ -1,5 +1,5 @@ # Translations -the translations are stored in `/src/webpage/translations` in this format. +The translations are stored in `/src/webpage/translations` in this format below. ```json { "@metadata": { @@ -13,7 +13,7 @@ the translations are stored in `/src/webpage/translations` in this format. ``` ## I want to help translate this -Please go to [https://translatewiki.net/wiki/Translating:JankClient](https://translatewiki.net/wiki/Translating:JankClient) to help translate this project +Please go to [https://translatewiki.net/wiki/Translating:Fermi](https://translatewiki.net/wiki/Translating:Fermi) to help translate this project. ## What is the format? It's the same format found [here](https://github.com/wikimedia/jquery.i18n#message-file-format), though we are not using jquery, and you might notice some of the strings use markdown, but most do not. From 34300ec8990915c8ee340c946902a066286f60e7 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 21:17:06 +0000 Subject: [PATCH 18/25] Jank to Fermi (index.html) --- src/webpage/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webpage/index.html b/src/webpage/index.html index 573cb14..09f952b 100644 --- a/src/webpage/index.html +++ b/src/webpage/index.html @@ -85,7 +85,7 @@


Date: Thu, 6 Nov 2025 21:19:12 +0000 Subject: [PATCH 19/25] Embed change description I assume "You shouldn't see this, but this is an invite URL" is wrong as it might embed out of Fermi/Spacebar with the description? --- src/webpage/invite.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/webpage/invite.html b/src/webpage/invite.html index a02ec2e..0e6158c 100644 --- a/src/webpage/invite.html +++ b/src/webpage/invite.html @@ -5,8 +5,8 @@ Fermi - - + + From 06a488238eb21b53c0bc380075157a359bf81060 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 21:23:22 +0000 Subject: [PATCH 20/25] Jank to Fermi --- src/utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils.ts b/src/utils.ts index 17af3fc..14b82e1 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -119,9 +119,9 @@ export async function inviteResponse( res.json({ type: "link", version: "1.0", - title: "Jank Client", + title: "Fermi Client", thumbnail: "/logo.webp", - description: "A spacebar client that has DMs, replying and more", + description: "A Spacebar client that has DMs, replying and more.", url: url.toString(), }); } From 9a84836241063a7389292f95518c25f5718e4683 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 21:26:34 +0000 Subject: [PATCH 21/25] Formatting fix and Jank to Fermi (package.json) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index faf0ee5..b71b499 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "jankclient", "version": "0.2.0", - "description": "A SpaceBar Client written in TS HTML and CSS to run, clone the repo and do either `npm start` or `bun start` both bun and node are supported, and both should function as expected. To access Jank Client after init simply go to http://localhost:8080/login and login with your username and password.", + "description": "A Spacebar Client written in TS, HTML and CSS. to run, clone the repo and do either `npm start` or `bun start` both bun and node are supported, and both should function as expected. To access Fermi Client after init simply go to http://localhost:8080/login and login with your username and password.", "main": ".dist/index.js", "type": "module", "scripts": { From 486d71728fe8a40ebcfed05607e4b1d302d696d6 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 21:33:14 +0000 Subject: [PATCH 22/25] Spacebar capitalise formatting (InstanceInfo.md) --- InstanceInfo.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/InstanceInfo.md b/InstanceInfo.md index 8a75b08..bc7feca 100644 --- a/InstanceInfo.md +++ b/InstanceInfo.md @@ -37,8 +37,8 @@ You can also add yourself to [this](https://github.com/spacebarchat/spacebarchat # Questions ## 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 spacebar is that allowed to be entered? -If it's spacebar compatible then yes, it may be entered. Though if there are **too many incompatablities** however, it may not be included, or may need a warning of sorts. +## If my instance isn't Spacebar is that allowed to be entered? +If it's Spacebar compatible then yes, it may be entered. Though if there are **too many incompatablities** however, 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 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? From 0f11b5318dd890c50046d849fd0c3bab8319783f Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 21:34:10 +0000 Subject: [PATCH 23/25] incompatibilities text fix (InstanceInfo.md) Typing perfectionist. --- InstanceInfo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InstanceInfo.md b/InstanceInfo.md index bc7feca..4585c47 100644 --- a/InstanceInfo.md +++ b/InstanceInfo.md @@ -38,7 +38,7 @@ You can also add yourself to [this](https://github.com/spacebarchat/spacebarchat ## 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 Spacebar is that allowed to be entered? -If it's Spacebar compatible then yes, it may be entered. Though if there are **too many incompatablities** however, it may not be included, or may need a warning of sorts. +If it's Spacebar 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 Spacebar 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? From e2bce816032078b23f160084f1969378b40fbe42 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 21:40:18 +0000 Subject: [PATCH 24/25] README.md formatting fix Also, I removed the old react client invite as it is now offline. --- README.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d1b14d1..c2a64ac 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Fermi is a [Spacebar](https://spacebar.chat) Client written in TS, HTML, and CSS 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 +or do the equivalent with bun. Both [Bun](https://bun.sh) and [Node.js](https://nodejs.org) are supported, and should function as expected. @@ -13,7 +13,7 @@ To access Fermi after starting, simply go to http://localhost:8080/login and eit If there are any issues please report them either here, or to me dirrectly on spacebar ## Adding instances to the dropdown -Please see [this](https://github.com/MathMan05/Fermi/blob/main/InstanceInfo.md) for how to add an instance to the dropdown picker +Please see [this](https://github.com/MathMan05/Fermi/blob/main/InstanceInfo.md) for how to add an instance to the dropdown picker. ## How to statically host Fermi [Click here](./howToStaticallyHost.md) ## RoadMap @@ -21,12 +21,9 @@ You can view the current roadmap on https://github.com/users/MathMan05/projects/ ## 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. ## Link -The official SpaceBar server for Fermi https://fermi.chat/invite/USgYJo?instance=https%3A%2F%2Fspacebar.chat - -old invite for the official client https://dev.app.spacebar.chat/invite/USgYJo - -The current hosted instance of Fermi https://fermi.chat/ +The official Spacebar server for Fermi: https://fermi.chat/invite/USgYJo?instance=https%3A%2F%2Fspacebar.chat +The current hosted instance of Fermi: https://fermi.chat/ ## Star History From 1325fd4ac4142462e44043014072af1b92a647f9 Mon Sep 17 00:00:00 2001 From: ErrorOliver Date: Thu, 6 Nov 2025 21:43:47 +0000 Subject: [PATCH 25/25] Update InstanceInfo.md with additional context Clarified the disadvantages of being listed on the Spacebar instances list. --- InstanceInfo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InstanceInfo.md b/InstanceInfo.md index 4585c47..6deb0c8 100644 --- a/InstanceInfo.md +++ b/InstanceInfo.md @@ -32,7 +32,7 @@ Anything with a `?` in-front of its `:` are optional, though you must either inc 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. +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 such as not being on the Fermi Discovery list which shows Guilds more higher up on the Fermi client, etc. # Questions ## Do I have to do this to let Fermi Client connect to my server?