diff --git a/content/privacy.md b/content/privacy.md new file mode 100644 index 0000000..c1a7351 --- /dev/null +++ b/content/privacy.md @@ -0,0 +1,74 @@ +--- +title: "Privacy" +description: "What CoreDesktop, its installer, its website and its error reports collect, and what Federated Computer does with it." +sections: + - type: hero + compact: true + eyebrow: "Last updated November 8, 2026" + title: "Privacy." + subhead: "CoreDesktop doesn't watch what you do. There's no telemetry, no analytics and no tracking. We only receive what your machine has to send to download CoreDesktop and its updates, and a log when you choose to send us one." + visual: false + + - type: text + id: summary + kicker: "In short" + headline: "What reaches us, and when." + body: | + This policy covers Federated CoreDesktop: the scripts installed on your machine, the installer at `federated.sh`, this website, and the error reports you can send us. It's provided by Federated Computer, Inc. ("we"). + + - **Nothing is collected in the background.** CoreDesktop has no telemetry or usage statistics, and this website has no analytics, cookies or trackers. + - **Downloads are seen by our servers.** When you install CoreDesktop, update it, or it checks for an update, your machine connects to our servers, which see its IP address, as any server does. + - **Error reports are your choice.** If an install or update fails, CoreDesktop asks whether to send us the log. Nothing is sent unless you say yes, and you can read it first. + - **We don't sell or share your data** with anyone for advertising or any other purpose. + + - type: text + id: website + kicker: "This website" + headline: "Plain pages, nothing else." + body: | + coredesktop.computer is a set of static pages. It sets no cookies, runs no analytics, and loads nothing from other companies: its fonts and images are served from the site itself. Links to other sites, such as Gitea, Arch Linux or a project's home page, take you to those sites, under their own policies. + + - type: text + id: installing-and-updating + kicker: "Installing and updating" + headline: "What our servers see." + body: | + Installing CoreDesktop downloads the installer from `federated.sh` and CoreDesktop itself from our Gitea server, `gitea.federated.computer`. Afterwards, `update` and `refresh` download the latest version from Gitea, and a background check asks Gitea whether there's a newer version: a few minutes after you log in, then every four hours. + + Like any web server, ours see each connection's IP address and time, what was requested, and the name of the program making the request (such as `git` or `wget`). Nothing that identifies you or your machine beyond that is sent. We use these server logs only to run and protect the servers, and keep them for at most 30 days. + + Most of what CoreDesktop installs comes from elsewhere: Arch Linux and its mirrors, the Arch User Repository, Flathub, GitHub and the projects' own sites. Your machine downloads from those directly, so they see its IP address under their own policies, and we receive nothing from them. + + - type: text + id: error-reports + kicker: "Error reports" + headline: "Only when you say yes." + body: | + When an install or update fails, CoreDesktop offers to send its log so we can work out what went wrong and fix it. It never sends one without asking, and never asks when there's no one at the terminal. You can also send a log yourself with `report`. [How reports work](/utilities/#report). + + **What's sent.** The output of the install or update that failed, CoreDesktop's version, the kernel's version, the names of the steps that failed, and the versions of your [sibling projects](/siblings/), by name and version only. + + **What's taken out first, on your machine.** Your user name, your machine's name, your home folder's path, email addresses, IP addresses and Tailscale machine names are replaced with placeholders before anything is sent. The log can still contain other things that appeared in the output, such as the names of packages, of files outside your home folder, or of servers you use. Press `v` when asked, or run `report --view`, to read exactly what would be sent. + + **Where it goes.** The report goes to our server at `federated.sh`, which keeps a copy for up to 90 days, so none is lost if something fails along the way. It's then filed as an issue in a private repository on our Gitea server, which only the Federated Computer people working on CoreDesktop can read. We keep it there for as long as we need it to understand and fix the problem. + + **Your IP address.** To stop anyone flooding us with reports, the server counts how many come from each address. It keeps addresses for that in memory only, for at most a day, and doesn't store them with your report or in its logs. Our web server's ordinary logs see the connection, as described [above](#installing-and-updating). + + **How we use reports.** Only to find and fix problems in CoreDesktop and its sibling projects. We may use AI tools, such as Anthropic's Claude, to help read a report and work out a fix. We only use AI services under terms that don't let the provider train its models on what we send them. + + - type: text + id: other-services + kicker: "Other services" + headline: "What you connect yourself." + body: | + Some things CoreDesktop sets up connect to services that aren't ours, and only when you set them up: AI assistants such as Claude Code, Tailscale, Bitwarden, and the apps you install. They follow their own privacy policies. `configure` connects your machine to your own [Federated Core](https://federated.computer), which is your server, not ours; nothing about that connection is sent to us. + + - type: text + id: your-choices + kicker: "Your choices" + headline: "Ask us anything, or ask us to delete it." + body: | + Email [privacy@federated.computer](mailto:privacy@federated.computer) with any question about this policy. To have a report deleted, or to find out what we hold about you, send us its report ID (it's printed when the report is sent) and we'll take care of it. + + If we change this policy, we'll update it here and change the date at the top. A change to what CoreDesktop sends would come with an update to CoreDesktop itself, so you can read it in its [source](https://gitea.federated.computer/Federated_Computer/coredesktop) first. +--- diff --git a/content/system.md b/content/system.md index a7a44f0..de816cf 100644 --- a/content/system.md +++ b/content/system.md @@ -134,7 +134,7 @@ sections: - ["Services", "Avahi, Bluetooth, CUPS, fwupd, GDM, NetworkManager, sshd, Docker, Tailscale, ufw and systemd-oomd are turned on. Your user is added to the docker group"] - ["Snapper", "btrfs only: a config for `/` in `/etc/snapper/configs/root`"] - ["NVIDIA", "Only if it installs the driver: `/etc/mkinitcpio.conf.d/nvidia.conf` and NVIDIA's suspend services"] - - ["Your home folder", "Lines in `~/.bashrc` (CoreDesktop's shell setup, `~/.local/bin` on PATH, the Bitwarden SSH agent), the commands in `~/.local/bin` (update, refresh, sibling, version, configure, audit), GNOME extensions and their settings, Claude Code's `~/.claude/settings.json` if you had none, a user timer that checks for updates, and a user service that pauses your Core's email if its password stops working"] + - ["Your home folder", "Lines in `~/.bashrc` (CoreDesktop's shell setup, `~/.local/bin` on PATH, the Bitwarden SSH agent), the commands in `~/.local/bin` (update, refresh, sibling, version, configure, audit, report), GNOME extensions and their settings, Claude Code's `~/.claude/settings.json` if you had none, a user timer that checks for updates, and a user service that pauses your Core's email if its password stops working"] - ["configure", "Only for what you set up: your Nextcloud files mount in `/etc/fstab`, GNOME Online Accounts, passwords in your GNOME keyring, and the backup timer"] - type: text @@ -149,7 +149,7 @@ sections: ``` systemctl --user disable --now coredesktop-update-check.timer coredesktop-backup.timer coredesktop-email-watch.service rm -f ~/.config/systemd/user/coredesktop-* - rm -f ~/.local/bin/{update,refresh,sibling,version,configure,audit} + rm -f ~/.local/bin/{update,refresh,sibling,version,configure,audit,report} rm -rf ~/.local/share/coredesktop ~/.local/share/siblings ~/.local/state/coredesktop ~/.config/coredesktop ``` diff --git a/content/utilities.md b/content/utilities.md index 6520073..0501b12 100644 --- a/content/utilities.md +++ b/content/utilities.md @@ -83,6 +83,22 @@ sections: - type: callout text: "To keep a package you use directly off that list for good, run `sudo pacman -D --asexplicit `. And if an update ever barfs, check the **Latest News** on [archlinux.org](https://archlinux.org) for fixes." + - type: text + id: report + kicker: "report" + headline: "When something goes wrong, tell us." + body: | + If an install or update fails, it offers to send its log to the CoreDesktop team, so we can find the problem and fix it for everyone: + + ``` + Send this log to the CoreDesktop team, so we can look into what went wrong? + [v] view what would be sent, [y] send, [N] don't send: + ``` + + Nothing is sent unless you say yes, and nothing is asked when there's no one at the terminal. Press `v` to read exactly what would be sent. Before anything leaves your machine, your user name, host name, home folder, email addresses, IP addresses and Tailscale names are replaced. Along with the log go CoreDesktop's version, the kernel's, the names of the steps that failed, and your sibling projects' versions. You get a report ID to mention if you contact us. The [privacy policy](/privacy/#error-reports) says what happens to a report. + + To send a log later, run `report` for the newest one, or `report ` for another from `~/.local/state/coredesktop/logs/`. `report --view` shows what would be sent and sends nothing. + - type: command id: refresh kicker: "refresh" diff --git a/hugo.toml b/hugo.toml index 0fec56a..d2f5b6d 100644 --- a/hugo.toml +++ b/hugo.toml @@ -120,6 +120,10 @@ disableKinds = ["taxonomy", "term", "RSS", "sitemap", "robotsTXT"] name = "MIT License" url = "/contribute/#license" weight = 30 +[[menu.footer_project]] + name = "Privacy" + url = "/privacy/" + weight = 35 [[menu.footer_project]] name = "Federated Computer" url = "https://federated.computer" diff --git a/layouts/partials/head.html b/layouts/partials/head.html index fdf6ac6..c0ddced 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -6,7 +6,6 @@ - - - + + diff --git a/static/css/fonts.css b/static/css/fonts.css new file mode 100644 index 0000000..28cfcbc --- /dev/null +++ b/static/css/fonts.css @@ -0,0 +1,123 @@ +/* Inter and JetBrains Mono, served from this site rather than Google Fonts, so a visit + contacts no third party. Both are under the SIL Open Font License 1.1. Taken from + Google Fonts' CSS: variable fonts, so one file per subset covers every weight. */ + +/* Inter, latin-ext */ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(../fonts/inter-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* Inter, latin */ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(../fonts/inter-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +/* Inter, latin-ext */ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(../fonts/inter-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* Inter, latin */ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(../fonts/inter-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +/* Inter, latin-ext */ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(../fonts/inter-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* Inter, latin */ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(../fonts/inter-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +/* Inter, latin-ext */ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(../fonts/inter-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* Inter, latin */ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(../fonts/inter-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +/* JetBrains Mono, latin-ext */ +@font-face { + font-family: 'JetBrains Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(../fonts/jetbrains-mono-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* JetBrains Mono, latin */ +@font-face { + font-family: 'JetBrains Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(../fonts/jetbrains-mono-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +/* JetBrains Mono, latin-ext */ +@font-face { + font-family: 'JetBrains Mono'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(../fonts/jetbrains-mono-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +/* JetBrains Mono, latin */ +@font-face { + font-family: 'JetBrains Mono'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(../fonts/jetbrains-mono-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/static/fonts/Inter-OFL.txt b/static/fonts/Inter-OFL.txt new file mode 100644 index 0000000..21f6aff --- /dev/null +++ b/static/fonts/Inter-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/static/fonts/JetBrainsMono-OFL.txt b/static/fonts/JetBrainsMono-OFL.txt new file mode 100644 index 0000000..821a3da --- /dev/null +++ b/static/fonts/JetBrainsMono-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/static/fonts/inter-latin-ext.woff2 b/static/fonts/inter-latin-ext.woff2 new file mode 100644 index 0000000..479d010 Binary files /dev/null and b/static/fonts/inter-latin-ext.woff2 differ diff --git a/static/fonts/inter-latin.woff2 b/static/fonts/inter-latin.woff2 new file mode 100644 index 0000000..d15208d Binary files /dev/null and b/static/fonts/inter-latin.woff2 differ diff --git a/static/fonts/jetbrains-mono-latin-ext.woff2 b/static/fonts/jetbrains-mono-latin-ext.woff2 new file mode 100644 index 0000000..82f9668 Binary files /dev/null and b/static/fonts/jetbrains-mono-latin-ext.woff2 differ diff --git a/static/fonts/jetbrains-mono-latin.woff2 b/static/fonts/jetbrains-mono-latin.woff2 new file mode 100644 index 0000000..4d09cda Binary files /dev/null and b/static/fonts/jetbrains-mono-latin.woff2 differ