summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-07-14 16:50:57 -0500
committerGitHub <[email protected]>2026-07-14 16:50:57 -0500
commit8a52a60b14aa510983c173825e16636fca73dac9 (patch)
tree49bbddc15922aa7f03a3ca84f86cb039f4835e8a
parent210c69e48c2af4d1fdb53c0654ed33a21688696c (diff)
downloadskunky-art-8a52a60b14aa510983c173825e16636fca73dac9.tar.gz
skunky-art-8a52a60b14aa510983c173825e16636fca73dac9.tar.bz2
skunky-art-8a52a60b14aa510983c173825e16636fca73dac9.zip
documentation & metadata cleanup (#1)
* hard wrap LICENSE for readability * translate TODO.md from Russian to English * clean up TODO.md into a proper GFM todo list * fix: remove dead service links and add working links * update README to reflect new repository and structure
-rwxr-xr-xINSTANCES.md11
-rwxr-xr-xLICENSE21
-rwxr-xr-xREADME.md74
-rwxr-xr-xTODO.md48
-rwxr-xr-xinstances.json74
5 files changed, 98 insertions, 130 deletions
diff --git a/INSTANCES.md b/INSTANCES.md
index 38cd5bb..97488cf 100755
--- a/INSTANCES.md
+++ b/INSTANCES.md
@@ -1,11 +1,6 @@
-JSON variant should be used from master — https://git.macaw.me/skunky/SkunkyArt/raw/branch/master/instances.json
+JSON variant should be used from main:
+[instances.json](https://github.com/zerolabsco/SkunkyArt/blob/dev/instances.json)
|Instance|Yggdrasil|I2P|Tor|NSFW|Proxifying|Modified Sources|Country|
|:------:|:-------:|:-:|:-:|:--:|:--------:|:--------------:|:-----:|
-|[lost-skunk.cc](https://lost-skunk.cc/skunkyart)|[Yes](http://[201:f137:d1ac:920e:cd42:bfd1:1e83:da1d]/skunkyart)|No|No| No | Yes | No | Finland |
-|[orehus.club](https://sa.orehus.club)|No|No|No| Yes | No | No | Germany |
-|[bloat.cat](https://skunky.bloat.cat)|No|No|No| Yes | Yes | No | Germany |
-|[lumaeris.com](https://skunkyart.lumaeris.com)|No|No|No| Yes | Yes | No | Germany |
-|[art.bloat.cat](https://art.bloat.cat)|No|No|No| Yes | Yes | No | Germany |
-|[dc09.ru](https://sa.dc09.ru)|No|No|No| No | Yes | No | Russia |
-|[opnxng.com](https://da.opnxng.com)|No|No|No| Yes | Yes | No | Singapore |
+|[zerolabs.sh](https://art.zerolabs.sh)|No|No|[Yes](http://mplqs2jxkjd5wxak3zjv55oxyadf4vwzx6ksgj4ztftndjl6elgsf4qd.onion)| Yes | No | No | United States |
diff --git a/LICENSE b/LICENSE
index 6b41092..951a648 100755
--- a/LICENSE
+++ b/LICENSE
@@ -2,12 +2,25 @@ X11 License
Copyright (C) 1996 X Consortium
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium.
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings in
+this Software without prior written authorization from the X Consortium.
X Window System is a trademark of X Consortium, Inc.
diff --git a/README.md b/README.md
index e5f404d..dda1e80 100755
--- a/README.md
+++ b/README.md
@@ -1,51 +1,73 @@
> [!NOTE]
-> Currently, due to school, I cannot actively develop this project :(
-> However, this does not mean that development has stopped. Just wait for the summer. For questions, write either to the Matrix room or to me in DM.
+> This is a fork of [SkunkyArt](https://git.macaw.me/skunky/SkunkyArt). The
+> upstream repository has not been updated in over a year, contains a number of
+> unresolved bugs, and all of its previously listed instances were found to be
+> dead links. This fork exists to keep the project maintained.
<img src="static/images/logo.png" alt="SkunkyArt" title="SkunkyArt Logo" width="20%" loading="lazy"/>
-[![Matrix room](https://img.shields.io/badge/matrix-000000?style=for-the-badge&logo=Matrix&logoColor=white)](https://go.kde.org/matrix/#/#skunkyart:gnulinux.club)
-
-Instances: [`INSTANCES.md`](/skunky/SkunkyArt/src/branch/master/INSTANCES.md)
+Instances: [`INSTANCES.md`](INSTANCES.md)
# EN 🇺🇸
## Description
-SkunkyArt 🦨 — alternative frontend for DevianArt, which works without JS.
-## Build (translated via DeepL)
-It is recommended to build with the 'embed' tag because it embeds the presets in the binary. If you plan to modify the templates, then do not use this tag. You can also add the `-ldflags "-w -s"` argument (GCCGO has a different name for it — `gccgoflags`) to reduce the size of the output file. Here is an example:
+SkunkyArt 🦨 — an alternative frontend for DeviantArt that works entirely
+without JavaScript.
+
+## Build
+It is recommended to build with the 'embed' tag because it embeds the presets in
+the binary. If you plan to modify the templates, then do not use this tag. You
+can also add the `-ldflags "-w -s"` argument (GCCGO has a different name for it
+— `gccgoflags`) to reduce the size of the output file. Here is an example:
`go build -tags embed -ldflags "-w -s"`
-Pre-compiled binaries can be found in the [Releases](https://git.macaw.me/skunky/skunkyart/releases) tab.
## Setup
-The sample config is in the `config.example.json` file. For custom config, use `--config` option.
-See the [`SETUP.md`](/skunky/SkunkyArt/src/branch/master/SETUP.md) file for more info about directives.
+The sample config is in the `config.example.json` file. For custom config, use
+the `--config` option.
+
+See the [`SETUP.md`](SETUP.md) file for more info about directives.
+
## Adding instance to the list
-To do this, you must either make a PR by adding your instance to the `instances.json` and `INSTANCES.md` files (you can use `--add-instance` cli-argument to automatically add the instance to these files), or create an Issue, or report it to the room in Matrix. Keep in mind that your instance must comply with the following rules:
-1. the Instance must not use Cloudflare.
-2. If your instance has modified source code, you need to publish it to any free platform. For example, Github and Gitlab are not.
+To do this, you must either make a PR by adding your instance to the
+`instances.json` and `INSTANCES.md` files (you can use `--add-instance`
+cli-argument to automatically add the instance to these files) or create an
+Issue.
+
## Acknowledgements
* [vlnst](https://git.bloat.cat/vlnst) — wrote a Docker file.
-* [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) — helped me understand Go and gave me a lot of useful advice on this language.
-* [meoww](https://codeberg.org/meoww) — translated some sentences into English and wrote a service for openrc
+* [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) — helped me understand Go
+ and gave me a lot of useful advice on this language.
+* [meoww](https://codeberg.org/meoww) — translated some sentences into English
+ and wrote a service for openrc
# RU 🇷🇺
## Описание
-SkunkyArt 🦨 — альтернативный фронтенд к DeviantArt, который полностью работает без JS (JavaScript).
+SkunkyArt 🦨 — альтернативный фронтенд к DeviantArt, который полностью работает
+без JS (JavaScript).
+
## Сборка
-Рекомендуется производить сборку с тегом 'embed', поскольку он встраивает заготовки в бинарный файл. Если вы планируете изменять заготовки, то не используйте этот тег. Также вы можете добавить аргумент `-ldflags "-w -s"` (у GCCGO он называется по-другому — `gccgoflags`) для уменьшения размера выходного файла. Вот пример:
+Рекомендуется производить сборку с тегом 'embed', поскольку он встраивает
+заготовки в бинарный файл. Если вы планируете изменять заготовки, то не
+используйте этот тег. Также вы можете добавить аргумент `-ldflags "-w -s"` (у
+GCCGO он называется по-другому — `gccgoflags`) для уменьшения размера выходного
+файла. Вот пример:
`go build -tags embed -ldflags "-w -s"`
-Готовые бинари находятся во вкладке [Releases](https://git.macaw.me/skunky/skunkyart/releases).
## Настройка
-Пример конфига находится в файле `config.example.json`. Чтобы указать свой конфиг, используйте cli-аргумент `--config`.
-См. [`SETUP-RU.md`](/skunky/SkunkyArt/src/branch/master/SETUP-RU.md) для информации о настройки фронтенда.
+Пример конфига находится в файле `config.example.json`. Чтобы указать свой
+конфиг, используйте cli-аргумент `--config`.
+
+См. [`SETUP-RU.md`](SETUP-RU.md) для информации о настройки фронтенда.
+
## Добавление инстанса в список
-Чтобы это сделать, вы должны либо сделать PR, добавив в файлы `instances.json` и `INSTANCES.md` свой инстанс (можете воспользоваться cli-аргументом `--add-instance`, который автоматически это сделает), либо создать Issue, или сообщить о нём в комнате в Matrix. Учтите, что ваш инстанс должен соблюсти следущие правила:
-1. Инстанс не должен использовать Cloudflare итп.
-2. Если ваш инстанс имеет модифицированный исходный код, то вам нужно опубликовать его на любую свободную площадку. Например, Github и Gitlab таковыми не являются.
+Чтобы это сделать, вы должны либо сделать PR, добавив в файлы `instances.json` и
+`INSTANCES.md` свой инстанс (можете воспользоваться cli-аргументом
+`--add-instance`, который автоматически это сделает), либо создать Issue.
+
## Благодарности
* [vlnst](https://git.bloat.cat/vlnst) — написал Docker-файл.
-* [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) — помог разобраться в Go и много чего полезного посоветовал по этому языку.
-* [meoww](https://codeberg.org/meoww) — перевела некоторые предложения на английский язык и написала сервис для openrc \ No newline at end of file
+* [Лис⚛](https://go.kde.org/matrix/#/@fox:matrix.org) — помог разобраться в Go и
+ много чего полезного посоветовал по этому языку.
+* [meoww](https://codeberg.org/meoww) — перевела некоторые предложения на
+ английский язык и написала сервис для openrc
diff --git a/TODO.md b/TODO.md
index 01bc524..e5b372e 100755
--- a/TODO.md
+++ b/TODO.md
@@ -1,23 +1,27 @@
-# v1.3.x
-* Почистить говнокод
-* Добавить фильтры поиска
-* ~~Сделать порт под FreeBSD~~ ✔️
-* **Доделать парсинг описания**
-* ~~Реализовать стрипы в ежедневных артах~~ ✔️
-* ~~Исправить баг с навигацией по страницам~~ ✔️
-* ~~Сделать нормальное отображение ошибок~~ ✔️
-* ~~Сделать единицы в конфиге более понятными~~ ✔️
-* Добавить чекер инстанса на работоспособность
-* ~~Добавить просмотр понравившихся артов пользователю~~ ✔️
-* Добавить возможность включить темплейты в бинарник [P]
-* ~~Реализовать миниатюры и оптимизировать CSS под маленькие экраны~~ ✔️
-* Написать Makefile и скрипт для автоматического развёртывания инстанса
-* Исправить баг с эмоджи, когда некоторые кастомные эмоции могут не отображаться
-* ~~Добавить аргумент &filename, который будет выдавать файл с нормально выглядещем именем~~ ✔️
-* ~~Улучшить систему кеширования: добавить рейтинг для удаления и копирование изображений в ОЗУ~~ ✔️
-# v1.4
-* Реализовать API
-* Реализовать темы
-* Перейти на арены в кеше
-* Реализовать многоязычный интерфейс
+# TODO
+## v1.3.x
+
+- [ ] Clean up the messy code
+- [ ] Add search filters
+- [x] Make a port for FreeBSD
+- [ ] **Finish parsing the description**
+- [x] Implement strips in daily arts
+- [x] Fix the page navigation bug
+- [x] Make proper error display
+- [x] Make the units in the config more understandable
+- [ ] Add an instance checker for availability
+- [x] Add viewing of a user's liked arts
+- [ ] Add the ability to embed templates into the binary `[P]`
+- [x] Implement thumbnails and optimize CSS for small screens
+- [ ] Write a Makefile and a script for automatic instance deployment
+- [ ] Fix the emoji bug where some custom emotes may not display
+- [x] Add a `&filename` argument that serves the file with a properly formatted name
+- [x] Improve the caching system: add a rating for eviction and copy images into RAM
+
+## v1.4
+
+- [ ] Implement an API
+- [ ] Implement themes
+- [ ] Switch to arenas in the cache
+- [ ] Implement a multilingual interface
diff --git a/instances.json b/instances.json
index ceec4f6..2cd6709 100755
--- a/instances.json
+++ b/instances.json
@@ -1,82 +1,16 @@
{
"instances": [
{
- "title": "lost-skunk.cc",
- "country": "Finland",
+ "title": "zerolabs.sh",
+ "country": "United States",
"urls": {
- "ygg": "http://[201:f137:d1ac:920e:cd42:bfd1:1e83:da1d]/skunkyart",
- "clearnet": "https://lost-skunk.cc/skunkyart"
- },
- "settings": {
- "proxy": true,
- "nsfw": false
- }
- },
- {
- "title": "orehus.club",
- "country": "Germany",
- "urls": {
- "clearnet": "https://sa.orehus.club"
+ "tor": "http://mplqs2jxkjd5wxak3zjv55oxyadf4vwzx6ksgj4ztftndjl6elgsf4qd.onion",
+ "clearnet": "https://art.zerolabs.sh"
},
"settings": {
"proxy": false,
"nsfw": true
}
- },
- {
- "title": "bloat.cat",
- "country": "Germany",
- "urls": {
- "clearnet": "https://skunky.bloat.cat"
- },
- "settings": {
- "proxy": true,
- "nsfw": true
- }
- },
- {
- "title": "lumaeris.com",
- "country": "Germany",
- "urls": {
- "clearnet": "https://skunkyart.lumaeris.com"
- },
- "settings": {
- "proxy": true,
- "nsfw": true
- }
- },
- {
- "title": "art.bloat.cat",
- "country": "Germany",
- "urls": {
- "clearnet": "https://art.bloat.cat"
- },
- "settings": {
- "proxy": true,
- "nsfw": true
- }
- },
- {
- "title": "dc09.ru",
- "country": "Russia",
- "urls": {
- "clearnet": "https://sa.dc09.ru"
- },
- "settings": {
- "proxy": true,
- "nsfw": false
- }
- },
- {
- "title": "opnxng.com",
- "country": "Singapore",
- "urls": {
- "clearnet": "https://da.opnxng.com"
- },
- "settings": {
- "proxy": true,
- "nsfw": true
- }
}
]
}