on master help sign in
Merge pull request #1 from XXIIVV/master

Merge latestt

commitdb4f48206dc32593e16b9a132c9cadea391c081b authorAlexander Cobleigh <angellus.falsus@gmail.com> dateTue 9 Mar 2021, 19:31 (6 years ago) parentcf9e4d034f81c8
25 files changed+788−474
.github/ISSUE_TEMPLATE/broken-link.md+10 .github/ISSUE_TEMPLATE/hallway-issue.md+10 .github/ISSUE_TEMPLATE/inappropriate-content.md+14 .github/ISSUE_TEMPLATE/name-of-website.md−9 .github/ISSUE_TEMPLATE/portal-issue.md+10 .github/ISSUE_TEMPLATE/wiki-issue.md+10 .github/PULL_REQUEST_TEMPLATE/add-site.md+14 404.html+1−8 README.md+32−14 favicon.ico hallway.html−19 icon.black.large.svg+1 icon.black.svg+1−13 icon.white.svg+1−13 index.html+615−18 links/fonts.css−15 links/main.css+14−50 media/fonts/input_mono_medium.ttf media/fonts/input_mono_regular.ttf media/icon.black.large.svg+13 scripts/hallway.js−144 scripts/opml.js−11 scripts/portal.js−69 scripts/sites.js−91 webring.opml+42
.github/ISSUE_TEMPLATE/broken-link.mdnew file+10
@@ -0,0 +1,10 @@
1+---
2+name: Broken link
3+about: Report a broken link in the webring
4+title: ''
5+labels: broken link
6+assignees: neauoire, kodedninja, joshavanier, ckipp01
7+
8+---
9+
10+**Name of the site:**
.github/ISSUE_TEMPLATE/hallway-issue.mdnew file+10
@@ -0,0 +1,10 @@
1+---
2+name: Hallway issue
3+about: Report an issue with the Hallway
4+title: ''
5+labels: hallway
6+assignees: neauoire, kodedninja, joshavanier, ckipp01
7+
8+---
9+
10+**Please describe the issue in the hallway:**
.github/ISSUE_TEMPLATE/inappropriate-content.mdnew file+14
@@ -0,0 +1,14 @@
1+---
2+name: Inappropriate content
3+about: Report inappropriate content in the webring
4+title: ''
5+labels: ''
6+assignees: neauoire, kodedninja, joshavanier, ckipp01
7+
8+---
9+
10+**Name of the site:**
11+
12+
13+
14+**Please explain what is inappropriate and link if necessary:**
.github/ISSUE_TEMPLATE/name-of-website.mddeleted−9
@@ -1,9 +0,0 @@
1−---
2−name: name.of.website
3−about: Describe this issue template's purpose here.
4−
5−---
6−
7−```
8−Position of webring icon on site: ex: footer, header
9−```
.github/ISSUE_TEMPLATE/portal-issue.mdnew file+10
@@ -0,0 +1,10 @@
1+---
2+name: Portal issue
3+about: Report an issue with the Portal
4+title: ''
5+labels: portal
6+assignees: neauoire, kodedninja, joshavanier, ckipp01
7+
8+---
9+
10+**Please describe the issue in the portal:**
.github/ISSUE_TEMPLATE/wiki-issue.mdnew file+10
@@ -0,0 +1,10 @@
1+---
2+name: Wiki issue
3+about: Report an issue with the Wiki
4+title: ''
5+labels: wiki
6+assignees: neauoire, kodedninja, joshavanier, ckipp01
7+
8+---
9+
10+**Please describe the issue in the wiki:**
.github/PULL_REQUEST_TEMPLATE/add-site.mdnew file+14
@@ -0,0 +1,14 @@
1+---
2+name: add.site
3+about: Submitting a new site to the webring
4+title: ''
5+labels: ''
6+assignees: neauoire, kodedninja, joshavanier, ckipp01
7+
8+---
9+
10+**Position of webring icon on site:**
11+
12+ex: footer, header
13+
14+**Make sure the contact key is also filled out in case we need to contact you**
404.html+1−8
@@ -6,13 +6,6 @@ permalink: /404.html
66<head>
77 <meta charset="utf-8">
88 <title>Loading..</title>
9+ <meta http-equiv='refresh' content='0; url=index.html' />
910</head>
10−<body style='background:black'>
11− <script>
12− const parts = window.location.pathname.split("/")
13− const target = parts.slice(-1);
14− parts.splice(-1)
15− document.location.href = parts.join("/")+"/#"+target
16− </script>
17−</body>
1811</html>
README.md+32−14
@@ -1,6 +1,6 @@
11# Webring
22
3−This [webring](https://wiki.xxiivv.com/webring) is an attempt to inspire artists & developers to create and maintain their own website and share traffic among each other. The webring's aim is to share hand-crafted websites such as **diaries, wikis & portfolios**. To add yourself to the ring, submit an [edit](https://github.com/XXIIVV/webring/edit/master/scripts/sites.js) to this repository.
3+This [webring](https://wiki.xxiivv.com/webring) is an attempt to inspire artists & developers to create and maintain their own website and share traffic among each other. The webring's aim is to share rich hand-crafted websites such as **diaries, wikis & portfolios**.
44
55## Join the webring
66
@@ -8,27 +8,45 @@ This [webring](https://wiki.xxiivv.com/webring) is an attempt to inspire artists
88<a href='https://webring.xxiivv.com/#random' target='_blank'><img src='https://webring.xxiivv.com/icon.black.svg'/></a>
99```
1010
11−- Add the webring icon to your website html.
12−- Add your website information to the [sites.js](https://github.com/XXIIVV/webring/edit/master/scripts/sites.js) file. The `url` key is required, but you can also include `title`, `type`, `author`, `contact`, and `rss`.
13−- Submit a Pull Request with **the location of the webring icon** on your site.
11+1) Add the webring icon to your website html.
12+2) Add your website information to the [index.html](https://github.com/XXIIVV/webring/edit/master/index.html) file. Keep your link name short, and don't leave a trailing `/` in the `href` attribute. Use a sensible alphanumeric value for the id.
13+3) Submit a Pull Request with **the location of the webring icon** on your site. Pull requests with blank descriptions will be rejected.
1414
15−Alternatively, if you your website has a dark background, use `icon.white.svg`. If your website is complaining about *https*, go ahead and host the icon yourself. **Single page websites, and websites acting only as portals to other social platforms, will be rejected**.
15+Alternatively, if you your website has a dark background, use `icon.white.svg`. If your website is complaining about *https*, go ahead and host the icon yourself.
1616
17−### Circular Linking
17+### Webring criteria
1818
19−Instead of linking to the directory, you can also link to the next link in the ring by adding parts of your site or domain in the hash of the request url:
19+**Single page websites, websites acting only as portals to other social platforms, or websites with violent, racist, sexist or speciesist content will be rejected**.
20+
21+The aim of the webring is to display **hand-crafted personal** websites showcasing the creator's audio, visual or written works. Your business site is probably not the best fit for the webring, and will be rejected.
22+
23+If your website requires Javascript to display the majority of its content or to navigate, it will be rejected. Your website must count at least 10 pages and include an about page. You must have your own domain name, we do not accept `github.io` subdomains.
24+
25+If it's seen that your website is in violation to any of these rules your site will be removed from the webring. If you fix the issues, feel free to submit another PR to join back in.
26+
27+#### Adding your RSS/TWTXT
28+
29+To add an extra feed to your entry, add them within your `<li>` tag as follow:
2030
2131```
22−<a href='https://webring.xxiivv.com/#wiki.xxiivv' target='_blank' rel="noopener noreferrer"><img src='https://webring.xxiivv.com/icon.black.svg'/></a>
32+<li data-lang="en" id="xxiivv">
33+ <a href="https://wiki.xxiivv.com">xxiivv</a>
34+ <a href="https://wiki.xxiivv.com/links/tw.txt" class="twtxt">twtxt</a>
35+ <a href="https://wiki.xxiivv.com/links/rss.xml" class="rss">rss</a>
36+ <img src='https://wiki.xxiivv.com/media/services/button.gif'/>
37+</li>
2338```
2439
25−## API
40+[twtxt](https://twtxt.readthedocs.io/en/stable/) is a decentralized, minimalist microblogging service for hackers. You're welcome to add your twtxt feed alongside your RSS feed. If you're looking a minimal C99 client for twtxt, try [this](https://github.com/neauoire/twtxtc). The `button.gif` is a 88x31 icon hosted on your server.
41+
42+### Circular Linking
2643
27−This repository does not contain mature API capabilities, but there are a couple ways to request a list of sites and other information currently in the webring.
44+Instead of linking to the directory, you can also link to the next link in the ring by adding parts of your site or domain in the hash of the request url:
2845
29−- Request [sites.js on xxiivv](https://webring.xxiivv.com/scripts/sites.js) or [sites.js on github](https://raw.githubusercontent.com/XXIIVV/webring/master/scripts/sites.js) and parse it. An example can be seen [here](https://gist.github.com/ckipp01/2ab7ac42e2837b4359efeb76eb49bb54).
30−- If you'd like a already parsed list, [webring-checker.now.sh/sites](https://webring-checker.now.sh/sites) will return an json array of the site objects in the webring. See [webring-checker.now.sh](https://webring-checker.now.sh) for more info on what else is available.
46+```
47+<a href='https://webring.xxiivv.com/#xxiivv' target='_blank' rel="noopener noreferrer"><img src='https://webring.xxiivv.com/icon.black.svg'/></a>
48+```
3149
32−## Need Help?
50+## Help
3351
34−The ring is managed by [@neauoire](https://twitter.com/neauoire), but any member of the network is also welcome to join this repository as a collaborator to help manage new links and Pull Requests. Read more [here](https://wiki.xxiivv.com/webring).
52+The ring is managed by [@neauoire](https://merveilles.town/@neauoire), but any member of the network is also welcome to join this repository as a collaborator to help manage new links and Pull Requests. Read more about the webring [here](https://wiki.xxiivv.com/webring).
favicon.iconew file

Binary file not shown.

hallway.htmldeleted−19
@@ -1,19 +0,0 @@
1−<!DOCTYPE html>
2−<html lang="en">
3−<head>
4− <meta charset="utf-8">
5− <meta name="viewport" content="width=device-width, initial-scale=1.0">
6− <link rel="stylesheet" type="text/css" href="links/fonts.css"/>
7− <link rel="stylesheet" type="text/css" href="links/main.css"/>
8− <script src="scripts/hallway.js"></script>
9− <script src="scripts/sites.js"></script>
10− <title>Hallway</title>
11−</head>
12−<body>
13− <script>
14− const hallway = new Hallway(sites);
15− hallway.install(document.body);
16− hallway.start();
17− </script>
18−</body>
19−</html>
icon.black.large.svgnew file+1
@@ -0,0 +1 @@
1+<svg fill="none" height="300" stroke="#000" stroke-linecap="square" stroke-width="7" width="300" xmlns="http://www.w3.org/2000/svg"><path d="M201.962 210a60 60 0 10-103.924-60l-50 86.603"/><path d="M98.038 210a60 60 0 10103.924-60l-50-86.603"/><path d="M150 120a60 60 0 100 120h100"/></svg>
icon.black.svg+1−13
@@ -1,13 +1 @@
1−<svg class="vector" width="300px" height="300px" xmlns="http://www.w3.org/2000/svg" baseProfile="full" version="1.1" style="fill:none;stroke:black;stroke-width:28px;stroke-linecap:square;">
2− <g transform="translate(0,30)">
3− <g transform="translate(150,150),rotate(120,0,0)">
4− <path d="M0,-60 a60,60 0 1,0 0,120 l100,0"></path>
5− </g>
6− <g transform="translate(150,150),rotate(240,0,0)">
7− <path d="M0,-60 a60,60 0 1,0 0,120 l100,0"></path>
8− </g>
9− <g transform="translate(150,150),rotate(0,0,0)">
10− <path d="M0,-60 a60,60 0 1,0 0,120 l100,0"></path>
11− </g>
12− </g>
13−</svg>
1+<svg fill="none" height="300" stroke="#000" stroke-linecap="square" stroke-width="28" width="300" xmlns="http://www.w3.org/2000/svg"><path d="M201.962 210a60 60 0 10-103.924-60l-50 86.603"/><path d="M98.038 210a60 60 0 10103.924-60l-50-86.603"/><path d="M150 120a60 60 0 100 120h100"/></svg>
icon.white.svg+1−13
@@ -1,13 +1 @@
1−<svg class="vector" width="300px" height="300px" xmlns="http://www.w3.org/2000/svg" baseProfile="full" version="1.1" style="fill:none;stroke:white;stroke-width:28px;stroke-linecap:square;">
2− <g transform="translate(0,30)">
3− <g transform="translate(150,150),rotate(120,0,0)">
4− <path d="M0,-60 a60,60 0 1,0 0,120 l100,0"></path>
5− </g>
6− <g transform="translate(150,150),rotate(240,0,0)">
7− <path d="M0,-60 a60,60 0 1,0 0,120 l100,0"></path>
8− </g>
9− <g transform="translate(150,150),rotate(0,0,0)">
10− <path d="M0,-60 a60,60 0 1,0 0,120 l100,0"></path>
11− </g>
12− </g>
13−</svg>
1+<svg fill="none" height="300" stroke="#fff" stroke-linecap="square" stroke-width="28" width="300" xmlns="http://www.w3.org/2000/svg"><path d="M201.962 210a60 60 0 10-103.924-60l-50 86.603"/><path d="M98.038 210a60 60 0 10103.924-60l-50-86.603"/><path d="M150 120a60 60 0 100 120h100"/></svg>
index.html+615−18
@@ -1,20 +1,617 @@
11<!DOCTYPE html>
2−<html lang="en">
3−<head>
4− <meta charset="utf-8">
5− <meta name="viewport" content="width=device-width, initial-scale=1.0">
6− <link rel="stylesheet" type="text/css" href="links/fonts.css"/>
7− <link rel="stylesheet" type="text/css" href="links/main.css"/>
8− <script src="scripts/portal.js"></script>
9− <script src="scripts/sites.js"></script>
10− <script src="scripts/opml.js"></script>
11− <title>Webring</title>
12−</head>
13−<body>
14− <script>
15− const portal = new Portal(sites);
16− portal.install(document.body);
17− portal.start();
18− </script>
19−</body>
2+<html lang="en" id="rss">
3+ <head>
4+ <meta charset="utf-8">
5+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6+ <link rel="con" type="image/png" sizes="100x100" href="favicon.ico">
7+ <link rel="apple-touch-icon" type="image/png" sizes="100x100" href="favicon.ico">
8+ <title>Webring</title>
9+ </head>
10+ <body id="twtxt">
11+ <ol id="icons">
12+ <li data-lang="en" id="xxiivv">
13+ <a href="https://wiki.xxiivv.com">xxiivv</a>
14+ <a href="https://wiki.xxiivv.com/links/tw.txt" class="twtxt">twtxt</a>
15+ <a href="https://wiki.xxiivv.com/links/rss.xml" class="rss">rss</a>
16+ <img src='https://wiki.xxiivv.com/media/services/button.gif' />
17+ </li>
18+ <li data-lang="en" id="1">
19+ <a href="http://estevancarlos.com">estevancarlos</a>
20+ </li>
21+ <li data-lang="en" id="2">
22+ <a href="https://electro.pizza">electro pizza</a>
23+ <a href="https://electro.pizza/twtxt.txt" class="twtxt">twtxt</a>
24+ <a href="https://electro.pizza/feed.xml" class="rss">rss</a>
25+ </li>
26+ <li data-lang="en" id="3">
27+ <a href="https://avanier.now.sh">Arachne</a>
28+ <a href="https://avanier.now.sh/tw.txt" class="twtxt">twtxt</a>
29+ </li>
30+ <li data-lang="en" id="4">
31+ <a href="https://kaemura.com">kaemura</a>
32+ <a href="https://kaemura.com/twttxt.txt" class="twtxt">twtxt</a>
33+ </li>
34+ <li data-lang="en" id="5">
35+ <a href="https://bismuth.garden">bismuth.garden</a>
36+ <a href="https://bismuth.garden/feed.xml" class="rss">rss</a>
37+ </li>
38+ <li data-lang="en" id="6">
39+ <a href="https://hraew.autophagy.io">hraew.autophagy</a>
40+ </li>
41+ <li data-lang="en" id="8">
42+ <a href="https://anxl.faith">anxl.faith</a>
43+ </li>
44+ <li data-lang="fr" id="9">
45+ <a href="https://xvw.github.io">planet</a>
46+ <a href="https://xvw.github.io/twtxt/hallway.txt" class="twtxt">twtxt</a>
47+ <a href="https://xvw.github.io/atom.xml" class="rss">rss</a>
48+ </li>
49+ <li data-lang="en el" id="10">
50+ <a href="https://heracl.es">heracl.es</a>
51+ </li>
52+ <li data-lang="en" id="11">
53+ <a href="https://stecko.website">stecko.website</a>
54+ </li>
55+ <li data-lang="en" id="12">
56+ <a href="https://now.lectronice.com">now.lectronice.com</a>
57+ </li>
58+ <li data-lang="en" id="13">
59+ <a href="https://craze.co.uk">craze.co.uk</a>
60+ </li>
61+ <li data-lang="en" id="14">
62+ <a href="https://shaneckel.com">shaneckel</a>
63+ </li>
64+ <li data-lang="en" id="15">
65+ <a href="https://cblgh.org">cblgh</a>
66+ <a href="https://cblgh.org/twtxt.txt" class="twtxt">twtxt</a>
67+ </li>
68+ <li data-lang="en" id="16">
69+ <a href="https://ellugar.co">ellugar</a>
70+ <a href="http://feeds.ellugar.co/ellugar-logs" class="rss">rss</a>
71+ </li>
72+ <li data-lang="en" id="17">
73+ <a href="http://chigby.org">chigby</a>
74+ </li>
75+ <li data-lang="en" id="18">
76+ <a href="https://longest.voyage">longest.voyage</a>
77+ <a href="https://longest.voyage/index.xml" class="rss">rss</a>
78+ </li>
79+ <li data-lang="en" id="19">
80+ <a href="https://palomakop.tv">palomakop.tv</a>
81+ </li>
82+ <li data-lang="en" id="20">
83+ <a href="https://v-os.ca">v-os.ca</a>
84+ </li>
85+ <li data-lang="en" id="21">
86+ <a href="https://jmandel.xyz">jmandel.xyz</a>
87+ </li>
88+ <li data-lang="en" id="22">
89+ <a href="https://2d4.dev">2d4.dev</a>
90+ <a href="https://2d4.dev/tw.txt" class="twtxt">twtxt</a>
91+ </li>
92+ <li data-lang="en" id="23">
93+ <a href="https://nathanwentworth.co">nathanwentworth</a>
94+ </li>
95+ <li data-lang="en" id="24">
96+ <a href="https://uonai.space">uonai.space</a>
97+ </li>
98+ <li data-lang="en" id="25">
99+ <a href="http://controls.ee">controls.ee</a>
100+ </li>
101+ <li data-lang="en" id="26">
102+ <a href="https://wasin.io">wasin</a>
103+ </li>
104+ <li data-lang="en" id="27">
105+ <a href="https://inns.studio">inns.studio</a>
106+ </li>
107+ <li data-lang="en" id="28">
108+ <a href="http://kokorobot.ca">kokorobot.ca</a>
109+ <img src="https://kokorobot.ca/media/interface/button.png"/>
110+ </li>
111+ <li data-lang="en" id="29">
112+ <a href="https://ameyama.com">ameyama</a>
113+ <a href="https://ameyama.com/blog/rss.xml" class="rss">rss</a>
114+ </li>
115+ <li data-lang="en" id="30">
116+ <a href="https://wake.st">wake.st</a>
117+ <a href="https://wake.st/twtxt.txt" class="twtxt">twtxt</a>
118+ </li>
119+ <li data-lang="en" id="31">
120+ <a href="https://xarene.la">xarene.la</a>
121+ </li>
122+ <li data-lang="en" id="32">
123+ <a href="https://alex.zyzhang.me">alex.zyzhang.me</a>
124+ </li>
125+ <li data-lang="en" id="33">
126+ <a href="http://bildwissenschaft.vortok.info">vortok</a>
127+ </li>
128+ <li data-lang="en" id="34">
129+ <a href="https://jakofranko.github.com">jakofranko.github</a>
130+ </li>
131+ <li data-lang="en" id="35">
132+ <a href="https://aeriform.io">aeriform.io</a>
133+ </li>
134+ <li data-lang="en" id="37">
135+ <a href="http://npisanti.com">npisanti.com</a>
136+ <a href="http://npisanti.com/journal/rss.xml" class="rss">rss</a>
137+ </li>
138+ <li data-lang="en" id="38">
139+ <a href="https://underscorediscovery.ca">underscorediscovery</a>
140+ </li>
141+ <li data-lang="en" id="39">
142+ <a href="https://drisc.io">drisc</a>
143+ <a href="https://drisc.io/hallway/twtxt.txt" class="twtxt">twtxt</a>
144+ </li>
145+ <li data-lang="en" id="40">
146+ <a href="https://ricky.codes">ricky.codes</a>
147+ </li>
148+ <li data-lang="en" id="41">
149+ <a href="https://maxdeviant.com">maxdeviant</a>
150+ </li>
151+ <li data-lang="en" id="42">
152+ <a href="https://tynandebold.com">tynandebold</a>
153+ </li>
154+ <li data-lang="en" id="43">
155+ <a href="http://gytis.co">gytis.co</a>
156+ </li>
157+ <li data-lang="en" id="44">
158+ <a href="https://nomand.co">nomand.co</a>
159+ </li>
160+ <li data-lang="en" id="45">
161+ <a href="http://memoriata.com">memoriata</a>
162+ </li>
163+ <li data-lang="en" id="46">
164+ <a href="https://mmm.s-ol.nu">s-ol.nu</a>
165+ </li>
166+ <li data-lang="en" id="47">
167+ <a href="https://chad.is">chad.is</a>
168+ <a href="https://chad.is/rss.xml" class="rss">rss</a>
169+ </li>
170+ <li data-lang="en" id="48">
171+ <a href="https://smidgeo.com/bots">smidgeo.com/bots</a>
172+ </li>
173+ <li data-lang="en ru" id="49">
174+ <a href="https://iko.soy">iko.soy</a>
175+ </li>
176+ <li data-lang="en" id="50">
177+ <a href="http://atelieroilandsugar.com">atelieroilandsugar</a>
178+ </li>
179+ <li data-lang="en" id="51">
180+ <a href="https://magoz.is">magoz.is</a>
181+ </li>
182+ <li data-lang="en" id="52">
183+ <a href="https://szymonkaliski.com">szymonkaliski</a>
184+ <a href="https://szymonkaliski.com/feed.xml" class="rss">rss</a>
185+ </li>
186+ <li data-lang="en" id="53">
187+ <a href="https://phse.net">phse.net</a>
188+ <a href="https://phse.net/twtxt/merv.txt" class="twtxt">twtxt</a>
189+ <a href="https://phse.net/post/index.xml" class="rss">rss</a>
190+ </li>
191+ <li data-lang="en" id="54">
192+ <a href="https://rosano.ca">rosano.ca</a>
193+ <a href="https://rosano.ca/feed" class="rss">rss</a>
194+ </li>
195+ <li data-lang="en" id="56">
196+ <a href="https://gndclouds.cc">gndclouds.cc</a>
197+ </li>
198+ <li data-lang="en fr" id="57">
199+ <a href="https://xuv.be">xuv.be</a>
200+ </li>
201+ <li data-lang="en zh" id="58">
202+ <a href="https://dsdshcym.github.io">dsdshcym.github.io</a>
203+ </li>
204+ <li data-lang="en" id="60">
205+ <a href="https://boffosocko.com">boffosocko</a>
206+ </li>
207+ <li data-lang="en" id="61">
208+ <a href="https://hex22.org">hex22</a>
209+ <a href="https://t.seed.hex22.org/twtxt.txt" class="twtxt">twtxt</a>
210+ </li>
211+ <li data-lang="en" id="62">
212+ <a href="https://patrikarvidsson.com">patrikarvidsson</a>
213+ </li>
214+ <li data-lang="en" id="63">
215+ <a href="https://sophieleetmaa.com">sophieleetmaa</a>
216+ </li>
217+ <li data-lang="en" id="64">
218+ <a href="https://xinniw.github.io">xinniw.github</a>
219+ </li>
220+ <li data-lang="en" id="65">
221+ <a href="https://mboxed.github.io/sodatsu">sodatsu</a>
222+ <a href="https://mboxed.github.io/sodatsu/tw.txt" class="twtxt">twtxt</a>
223+ </li>
224+ <li data-lang="en" id="66">
225+ <a href="https://letters.vexingworkshop.com">vexingworkshop</a>
226+ </li>
227+ <li data-lang="en" id="67">
228+ <a href="https://tom.so">tom hackshaw</a>
229+ </li>
230+ <li data-lang="en" id="68">
231+ <a href="https://teknari.com">Teknari</a>
232+ <a href="https://teknari.com/feed.xml" class="rss">rss</a>
233+ </li>
234+ <li data-lang="es" id="69">
235+ <a href="https://colectivo-de-livecoders.gitlab.io">Colectivo de Livecoders</a>
236+ </li>
237+ <li data-lang="es" id="70">
238+ <a href="https://www.madewithtea.com">madewithtea</a>
239+ </li>
240+ <li data-lang="en" id="71">
241+ <a href="https://achance.at">Chance</a>
242+ <a href="https://feed.amorris.ca/hallway.txt" class="twtxt">twtxt</a>
243+ </li>
244+ <li data-lang="en" id="72">
245+ <a href="http://www.miha-co.ca">miha-co</a>
246+ </li>
247+ <li data-lang="en" id="73">
248+ <a href="https://buzzert.net">buzzert.net</a>
249+ </li>
250+ <li data-lang="en" id="75">
251+ <a href="https://xxiii.co">xxiii</a>
252+ <a href="https://serocell.com/feeds/serocell.xml" class="rss">rss</a>
253+ </li>
254+ <li data-lang="en" id="76">
255+ <a href="https://kor.nz">kor</a>
256+ <a href="https://kor.nz/twtxt.txt" class="twtxt">twtxt</a>
257+ </li>
258+ <li data-lang="en" id="77">
259+ <a href="https://lublin.se">lublin.se</a>
260+ <a href="https://lublin.se/twtxt.txt" class="twtxt">twtxt</a>
261+ </li>
262+ <li data-lang="en" id="78">
263+ <a href="https://zanneth.com">zanneth</a>
264+ </li>
265+ <li data-lang="en" id="79">
266+ <a href="https://eli.li">eli.li</a>
267+ <a href="https://txt.eli.li/twtxt/twtxt.txt" class="twtxt">twtxt</a>
268+ <a href="https://eli.li/feed.rss" class="rss">rss</a>
269+ </li>
270+ <li data-lang="en" id="80">
271+ <a href="https://gueorgui.net">gueorgui.net</a>
272+ <a href="https://gueorgui.net/feed.xml" class="rss">rss</a>
273+ </li>
274+ <li data-lang="en" id="81">
275+ <a href="https://www.tatecarson.com">Tate Carson</a>
276+ </li>
277+ <li data-lang="en" id="82">
278+ <a href="https://azlen.me">azlen.me</a>
279+ <a href="https://azlen.me/twtxt.txt" class="twtxt">twtxt</a>
280+ </li>
281+ <li data-lang="en" id="83">
282+ <a href="https://opguides.info">OpGuides</a>
283+ </li>
284+ <li data-lang="en" id="84">
285+ <a href="https://chrismaughan.com/">CMaughan</a>
286+ <a href="https://chrismaughan.com/twtxt.txt" class="twtxt">twtxt</a>
287+ </li>
288+ <li data-lang="en es" id="85">
289+ <a href="https://oddworlds.org/">oddworlds soliloquy</a>
290+ </li>
291+ <li data-lang="en" id="86">
292+ <a href="https://fundor333.com/">Fundor333</a>
293+ <a href="https://fundor333.com/twtxt.txt" class="twtxt">twtxt</a>
294+ </li>
295+ <li data-lang="en" id="87">
296+ <a href="https://cass.si">cass.si</a>
297+ </li>
298+ <li data-lang="en" id="88">
299+ <a href="https://dotcomboom.somnolescent.net/">somnolescent.net</a>
300+ <a href="https://dotcomboom.somnolescent.net/twtxt.txt" class="twtxt">twtxt</a>
301+ </li>
302+ <li data-lang="en" id="89">
303+ <a href="https://cadmican.neocities.org/">cadmican</a>
304+ </li>
305+ <li data-lang="en" id="90">
306+ <a href="https://resevoir.net">resevoir</a>
307+ <a href="https://resevoir.net/rss.xml" class="rss">rss</a>
308+ </li>
309+ <li data-lang="en" id="91">
310+ <a href="https://sixey.es/">sixey.es</a>
311+ </li>
312+ <li data-lang="en" id="92">
313+ <a href="https://tilde.town/~dustin/">0xdstn</a>
314+ </li>
315+ <li data-lang="en" id="93">
316+ <a href="http://www.jameschip.io">James Chip</a>
317+ <a href="http://www.jameschip.io/index.xml" class="rss">rss</a>
318+ </li>
319+ <li data-lang="en" id="94">
320+ <a href="https://patrick-is.cool">patrick-is.cool</a>
321+ </li>
322+ <li data-lang="en" id="95">
323+ <a href="https://icyphox.sh">icyphox.sh</a>
324+ <a href="https://icyphox.sh/blog/feed.xml" class="rss">rss</a>
325+ </li>
326+ <li data-lang="en" id="96">
327+ <a href="https://royniang.com">royniang.com</a>
328+ <a href="https://royniang.com/tw.txt" class="twtxt">twtxt</a>
329+ <a href="https://royniang.com/rss.xml" class="rss">rss</a>
330+ </li>
331+ <li data-lang="en" id="97">
332+ <a href="https://www.raul.earth/">raul altosaar</a>
333+ </li>
334+ <li data-lang="en" id="98">
335+ <a href="https://crlf.site">Cr;Lf;</a>
336+ <a href="https://crlf.site/feed.xml" class="rss">rss</a>
337+ </li>
338+ <li data-lang="en" id="99">
339+ <a href="https://www.johannesg.com">Jóhannes G. Þorsteinsson</a>
340+ </li>
341+ <li data-lang="en" id="100">
342+ <a href="https://provokeanalog.com">Provoke Analog</a>
343+ </li>
344+ <li data-lang="en" id="101">
345+ <a href="https://eti.tf">eti.tf</a>
346+ </li>
347+ <li data-lang="en" id="102">
348+ <a href="https://rezmason.net">rezmason.net</a>
349+ </li>
350+ <li data-lang="en cz" id="103">
351+ <a href="https://estfyr.net">estfyr.net</a>
352+ </li>
353+ <li data-lang="en" id="104">
354+ <a href="https://paysonwallach.com">paysonwallach.com</a>
355+ </li>
356+ <li data-lang="en" id="105">
357+ <a href="https://natwelch.com">Nat Welch</a>
358+ <a href="https://writing.natwelch.com/feed.rss" class="rss">rss</a>
359+ </li>
360+ <li data-lang="en" id="106">
361+ <a href="https://parkimminent.com">Park Imminent</a>
362+ </li>
363+ <li data-lang="en" id="107">
364+ <a href="https://aklsh.now.sh">aklsh</a>
365+ </li>
366+ <li data-lang="en" id="108">
367+ <a href="https://0xff.nu">Paul Glushak</a>
368+ <a href="https://0xff.nu/feed.xml" class="rss">rss</a>
369+ </li>
370+ <li data-lang="en ita" id="109">
371+ <a href="https://simone.computer">Simone's Computer</a>
372+ <a href="https://system32.simone.computer/rss.xml" class="rss">rss</a>
373+ </li>
374+ <li data-lang="en es" id="110">
375+ <a href="https://xj-ix.luxe">dreamspace</a>
376+ <a href="https://xj-ix.luxe/.well-known/twtxt/xjix.txt" class="twtxt">twtxt</a>
377+ <a href="https://xj-ix.luxe/feed.atom" class="rss">rss</a>
378+ </li>
379+ <li data-lang="en" id="111">
380+ <a href="https://simply.personal.jenett.org">jenett. simply. personal.</a>
381+ <a href="https://simply.personal.jenett.org/feed" class="rss">rss</a>
382+ </li>
383+ <li data-lang="en" id="112">
384+ <a href="http://q.pfiffer.org/">q.pfiffer.org</a>
385+ <a href="http://q.pfiffer.org/feed.xml" class="rss">rss</a>
386+ </li>
387+ <li data-lang="en" id="114">
388+ <a href="https://zvava.org">zvava</a>
389+ </li>
390+ <li data-lang="en" id="115">
391+ <a href="https://amorphic.space">amorphic.space</a>
392+ </li>
393+ <li data-lang="en nl" id="116">
394+ <a href="https://www.edwinwenink.xyz">Archive Fever</a>
395+ <a href="https://www.edwinwenink.xyz/index.xml" class="rss">rss</a>
396+ </li>
397+ <li data-lang="en fr" id="117">
398+ <a href="https://www.mentalnodes.com">Mental Nodes</a>
399+ <a href="https://www.mentalnodes.com/sitemap.xml" class="rss">rss</a>
400+ </li>
401+ <li data-lang="es" id="118">
402+ <a href="https://copiona.com">copiona</a>
403+ </li>
404+ <li data-lang="en nl" id="119">
405+ <a href="https://proycon.anaproy.nl">proycon</a>
406+ </li>
407+ <li data-lang="en" id="120">
408+ <a href="https://www.marginchronicles.com">margin chronicles</a>
409+ </li>
410+ <li data-lang="en" id="121">
411+ <a href="https://roytang.net">roytang.net</a>
412+ <a href="https://roytang.net/index.xml" class="rss">rss</a>
413+ </li>
414+ <li data-lang="en" id="122">
415+ <a href="https://materialfuture.net">MaterialFuture</a>
416+ <a href="https://www.materialfuture.net/rss.xml" class="rss">rss</a>
417+ </li>
418+ <li data-lang="en" id="123">
419+ <a href="https://solquemal.com/">solquemal</a>
420+ </li>
421+ <li data-lang="en" id="dampfkraft">
422+ <a href="https://dampfkraft.com">Dampfkraft</a>
423+ <a href="https://dampfkraft.com/index.rss" class="rss">rss</a>
424+ </li>
425+ <li data-lang="en" id="125">
426+ <a href="https://travisshears.com">travisshears</a>
427+ <a href="https://travisshears.com/apps/twtxt/twtxt.txt" class="twtxt">twtxt</a>
428+ <a href="https://travisshears.com/index.xml" class="rss">rss</a>
429+ </li>
430+ <li data-lang="en" id="126">
431+ <a href="https://awalvie.me">awalvie</a>
432+ </li>
433+ <li data-lang="en ru" id="futuristan">
434+ <a href="https://futuristan.io">futuristan.io</a>
435+ </li>
436+ <li data-lang="en" id="romain aubert">
437+ <a href="https://www.romainaubert.com/">romain aubert</a>
438+ <a href="https://www.romainaubert.com/twtxt.txt" class="twtxt">twtxt</a>
439+ <a href="https://www.romainaubert.com/feed.rss" class="rss">rss</a>
440+ </li>
441+ <li data-lang="en" id="ix5">
442+ <a href="https://ix5.org/">Felix Elsner</a>
443+ <a href="https://ix5.org/thoughts/feeds/all.atom.xml" class="rss">rss</a>
444+ </li>
445+ <li data-lang="en" id="128">
446+ <a href="https://www.juliendesrosiers.com/">Julien Desrosiers</a>
447+ <a href="https://www.juliendesrosiers.com/feed.xml" class="rss">rss</a>
448+ </li>
449+ <li data-lang="en" id="129">
450+ <a href="https://nchrs.xyz">nchrs.xyz</a>
451+ <a href="https://nchrs.xyz/rss.xml" class="rss">rss</a>
452+ </li>
453+ <li data-lang="en" id="northerinformation">
454+ <a href="https://nor.the-rn.info">Northern Information</a>
455+ <a href="https://nor.the-rn.info/feed.xml" class="rss">rss</a>
456+ </li>
457+ <li data-lang="en" id="131">
458+ <a href="https://matildepark.ca">Matilde Park</a>
459+ <a href="https://matildepark.ca/feed.xml" class="rss">rss</a>
460+ </li>
461+ <li data-lang="en" id="132">
462+ <a href="https://fdisk.space">ƒdisk.space</a>
463+ <a href="https://fdisk.space/rss.xml" class="rss">rss</a>
464+ </li>
465+ <li data-lang="en" id="deianeira">
466+ <a href="https://deianeira.co">deianeira.co</a>
467+ </li>
468+ <li data-lang="en" id="133">
469+ <a href="https://inqlab.net">inqlab.net</a>
470+ <a href="https://inqlab.net/posts.xml" class="rss">rss</a>
471+ </li>
472+ <li data-lang="en" id="134">
473+ <a href="https://abstractxan.xyz">abstractxan.xyz</a>
474+ </li>
475+ <li data-lang="en" id="135">
476+ <a href="https://mxmarin.ca">m-x marin</a>
477+ </li>
478+ <li data-lang="en" id="136">
479+ <a href="https://metasyn.pw">metasyn</a>
480+ <a href="https://metasyn.pw/rss.xml" class="rss">rss</a>
481+ </li>
482+ <li data-lang="en" id="137">
483+ <a href="https://www.milofultz.com">milofultz</a>
484+ <a href="https://milofultz.com/atom.xml" class="rss">rss</a>
485+ </li>
486+ <li data-lang="en" id="138">
487+ <a href="https://thomasorus.com">Thomasorus</a>
488+ </li>
489+ <li data-lang="en" id="neeasade">
490+ <a href="https://notes.neeasade.net/">neeasade</a>
491+ <a href="https://notes.neeasade.net/rss.xml" class="rss">rss</a>
492+ <li data-lang="en" id="139">
493+ <a href="https://notebook.wesleyac.com">wesleyac</a>
494+ <a href="https://notebook.wesleyac.com/atom.xml" class="rss">rss</a>
495+ </li>
496+ <li data-lang="en" id="140">
497+ <a href="https://irimi.one">irimi1</a>
498+ <a href="https://irimi.one/atom.xml" class="rss">rss</a>
499+ </li>
500+ <li data-lang="en" id="141">
501+ <a href="https://wolfmd.me">wolfmd</a>
502+ <a href="https://wolfmd.me/feed.xml" class="rss">rss</a>
503+ </li>
504+ <li data-lang="en" id="142">
505+ <a href="https://garden.tymon-zaniewski.xyz/">pxltr / tymon zaniewski</a>
506+ </li>
507+ <li data-lang="en" id="143">
508+ <a href="https://void.cc">automata / vilson vieira</a>
509+ </li>
510+ <li data-lang="en" id="144">
511+ <a href="https://hecanjog.com">he can jog</a>
512+ <a href="https://hecanjog.com/twtxt.txt" class="twtxt">twtxt</a>
513+ </li>
514+ <li data-lang="en" id="145">
515+ <a href="http://fragmentscenario.com/">fragmentscenario</a>
516+ </li>
517+ <li data-lang="en" id="146">
518+ <a href="https://mineralexistence.com/">Mineral Existence</a>
519+ <a href="https://mineralexistence.com/twtxt.txt" class="twtxt">twtxt</a>
520+ </li>
521+ <li data-lang="en" id="147">
522+ <a href="https://aless.co">anti-pattern / alessia bellisario</a>
523+ <a href="https://aless.co/rss.xml" class="rss">rss</a>
524+ </li>
525+ <li data-lang="en" id="148">
526+ <a href="https://weakty.com">weakty</a>
527+ </li>
528+ <li data-lang="en" id="149">
529+ <a href="https://0l.wtf">0l</a>
530+ <a href="https://0l.wtf/rss.xml" class="rss">rss</a>
531+ <a href="https://0l.wtf/twtxt.txt" class="twtxt">twtxt</a>
532+ </li>
533+ <li data-lang="en" id="150">
534+ <a href="https://mrshll.com">mrshll</a>
535+ </li>
536+ <li data-lang="en" id="151">
537+ <a href="https://everest-pipkin.com/">everest pipkin</a>
538+ </li>
539+ <li data-lang="fr" id="152">
540+ <a href="https://hugo.soucy.cc">hs0ucy</a>
541+ <a href="https://hugo.soucy.cc/index.xml" class="rss">rss</a>
542+ </li>
543+ <li data-lang="en" id="153">
544+ <a href="https://darch.dk">darch</a>
545+ <a href="https://darch.dk/twtxt.txt" class="twtxt">twtxt</a>
546+ <a href="https://darch.dk/feed/page:feed.xml" class="rss">rss</a>
547+ </li>
548+ <li data-lang="en" id="natehn">
549+ <a href="https://natehn.com">natehn</a>
550+ <a href="https://natehn.com/index.xml" class="rss">rss</a>
551+ </li>
552+ <li data-lang="en" id="pbatch">
553+ <a href="https://pbat.ch">pbatch</a>
554+ <a href="https://pbat.ch/twtxt.txt" class="twtxt">twtxt</a>
555+ </li>
556+ <li data-lang="en" id="156">
557+ <a href="https://dom.ink">dom</a>
558+ <a href="https://dom.ink/tw.txt" class="twtxt">twtxt</a>
559+ </li>
560+ <li data-lang="en" id="157">
561+ <a href="https://njoqi.me">njoqi</a>
562+ </li>
563+ <li data-lang="en" id="158">
564+ <a href="https://eric.jetzt">eric.jetzt</a>
565+ <a href="https://eric.jetzt/twtxt.txt" class="twtxt">twtxt</a>
566+ </li>
567+ <li data-lang="en" id="gr0k">
568+ <a href="https://www.gr0k.net">gr0k</a>
569+ <a href="https://www.gr0k.net/twtxt.txt" class="twtxt">twtxt</a>
570+ <a href="https://www.gr0k.net/blog/feed.xml" class="rss">rss</a>
571+ </li>
572+ <li data-lang="en" id="clarity">
573+ <a href="https://clarity.flowers">Clarity Flowers</a>
574+ </li>
575+ </ol>
576+ <footer>
577+ <p class="readme">
578+ This webring is an attempt to inspire artists &amp; developers to build their websites and share traffic amongst each other. The ring welcomes <b>hand-crafted wikis and portfolios</b>.
579+ </p>
580+ <p>
581+ To add yourself to the ring, submit a <a href="https://github.com/XXIIVV/webring#join-the-webring" target="_blank">pull request</a>.<br />
582+ Looking for something specific, use the <a href="https://lieu.cblgh.org" target="_blank">search</a>.<br />
583+ Found a broken link, please <a href="https://github.com/XXIIVV/webring/issues/new" target="_blank">report it</a>.<br /><br />
584+ <a href="#icons">Show icons</a> | <a href="#twtxt">Show twtxt</a> | <a href="#rss">Show rss</a><span class="hide"> | <a href="#">Hide Feeds</a></span> | <a href="https://lieu.cblgh.org/random" target="_blank">Random</a>
585+ </p>
586+ <img id="icon" src="icon.black.large.svg" alt="icon"/>
587+ </footer>
588+ <style>
589+:root { --color-alpha: white; --color-beta: black; }
590+body { padding: 0; margin: 0 0 0 0; background-color: var(--color-alpha); color: var(--color-beta); font-family: serif; max-width: 900px; }
591+body a { color: var(--color-beta); text-decoration: none; }
592+body a:hover { background-color: var(--color-beta); color: var(--color-alpha); }
593+body a:before { content: '{'; }
594+body a:after { content: '}'; }
595+body > ol { margin: 30px; padding: 0px 30px 30px; column-count: 3; display: block; border-bottom: 2px solid var(--color-beta); }
596+body > ol > li { padding-right: 30px; }
597+body > ol > li img { display: none; margin:5px; }
598+body > ol > li a.rss, body > ol > li a.twtxt { display: none; }
599+body > ol > li a:visited:before, body > ol > li a:visited:after { color: var(--color-alpha); }
600+body > footer { margin: 30px; }
601+body > footer > p { max-width: 600px; }
602+body > footer > p span.hide { display: none; }
603+body > footer > img { display: inline-block; width: 100px; margin-bottom: -5px; margin-bottom: 30px; }
604+body:target > ol li a.twtxt, html:target li a.rss { background: var(--color-beta); color: var(--color-alpha); display: inline; }
605+body:target > footer > p > span.hide, html:target footer > p > span.hide { display: inline; }
606+body > ol:target > li > img { display:block; }
607+body > ol > li:target a { color: var(--color-alpha); }
608+body > ol > li:target { background: var(--color-beta); }
609+@media screen and (max-width: 800px) { body > ol { column-count: 2; } }
610+@media screen and (max-width: 600px) { body > ol { column-count: 1; } }
611+@media (prefers-color-scheme: dark) {
612+ :root { --color-alpha: black; --color-beta: white; }
613+ #icon { filter: invert(100%); }
614+}
615+ </style>
616+ </body>
20617</html>
links/fonts.cssdeleted−15
@@ -1,15 +0,0 @@
1−/* Input Mono */
2−
3−@font-face {
4− font-family: 'input_mono_regular';
5− src: url('../media/fonts/input_mono_regular.ttf') format('truetype');
6− font-weight: normal;
7− font-style: normal;
8−}
9−
10−@font-face {
11− font-family: 'input_mono_medium';
12− src: url('../media/fonts/input_mono_medium.ttf') format('truetype');
13− font-weight: normal;
14− font-style: normal;
15−}
links/main.css+14−50
@@ -1,50 +1,14 @@
1−* { margin:0;padding:0;border:0;outline:0;text-decoration:none;font-weight:inherit;font-style:inherit;color:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;list-style:none;border-collapse:collapse;border-spacing:0; -webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}
2−
3−body { background:#f4f4f4; padding:0px; margin:0px; }
4−body div { display:block; background: #111;min-height: calc(100vh - 60px);width: calc(100vw - 60px);margin: 15px;color: #333;padding: 15px;font-family:'input_mono_regular', 'Monospaced','Courier New',courier;font-size:11px; position: relative; border-radius: 2px; color:white;}
5−body div ul { max-width: 800px; border-bottom: 2px solid white;padding-bottom: 15px;margin-bottom:15px; overflow: hidden;}
6−body div p { display:block; padding:0px 5px; line-height: 20px; max-width: 600px}
7−body div p a { text-decoration: underline;}
8−body div p a:hover { text-decoration: underline; }
9−body div p b { font-weight: normal; font-family: 'input_mono_medium' }
10−body div p.readme { max-width:500px; }
11−
12−/* Hallway */
13−
14−body #hallway .entry { line-height: 16px; display: block; position: relative; padding-left:140px; margin-bottom: 5px;border-bottom: 1px solid #333;padding-bottom: 5px; }
15−body #hallway .entry .date { color: #555;display: block;float:right; margin-left:20px;}
16−body #hallway .entry .author { font-family: 'input_mono_medium'; position: absolute;left: 0px; }
17−body #hallway .entry .author:after { content:":"; }
18−body #hallway .entry .body { max-width: 400px; }
19−body #hallway .entry .body a { text-decoration: underline; }
20−body #hallway .entry .body .channel { background: white;color: black;display: inline-block;padding: 0px 5px;line-height: 20px;border-radius: 2px; font-family: 'input_mono_medium'; }
21−body #hallway .entry.highlight .author { color:#555; }
22−body #hallway .entry:hover .author { color:#ccc; }
23−body #hallway .entry:hover .date { color:#ccc; }
24−body #hallway .entry:hover .body { color:#ccc; }
25−body #hallway p { padding-left: 60px;background-image: url(../icon.white.svg);background-size: 40px;background-repeat: no-repeat;background-position: 0px 0px; }
26−body #hallway ul { max-width: 100%; }
27−body #hallway ul li:last-child { border-bottom:0px; }
28−
29−/* Portal */
30−
31−body #portal #icon { display: block;width: 30px;height: 30px;background-image: url(../icon.white.svg);background-size: cover;background-repeat: no-repeat;position: absolute;bottom: 15px;right:15px;background-position: center;padding:0px }
32−body #portal ul { columns:3; }
33−body #portal ul li { display:block; padding-left:5px; text-overflow: ellipsis; text-transform: lowercase;}
34−body #portal ul li.wiki::after { content:"<wiki>"; color:#555; }
35−body #portal ul li.blog::after { content:"<blog>"; color:#555; }
36−body #portal ul li a { line-height: 20px; padding:0px 5px; text-decoration: none;}
37−body #portal ul li a:visited { color:#ccc; text-decoration: none;}
38−body #portal ul li a:hover { text-decoration: underline; }
39−
40−@media (max-width: 730px) {
41− body #portal ul li span.counter { display: none }
42−}
43−@media (max-width: 630px) {
44− body #portal ul { columns: 2 !important; }
45− body #portal ul li span.counter { display: none }
46−}
47−@media (max-width: 530px) {
48− body #portal ul { columns: 1 !important; }
49− body #portal ul li span.counter { display: inline }
50−}
1+body { padding: 0; margin: 0 0 0 0; font-family: serif; max-width: 900px }
2+body a { color: black; text-decoration: none }
3+body a:hover { background-color: black; color: white }
4+body a:before { content:'{' }
5+body a:after { content:'}' }
6+body > ol { margin: 30px; padding: 0px 30px 30px; column-count: 3; display: block; border-bottom:2px solid black }
7+body > ol > li { padding-right: 30px; margin-right:30px }
8+body > ol > li:target { background:black }
9+body > ol > li:target a { color: white }
10+body > footer { margin:30px }
11+body > footer > p { max-width: 600px }
12+body > footer > img { display: inline-block; width:100px; margin-bottom: -5px; margin-bottom:30px; }
13+@media screen and (max-width: 800px) { body > ol { column-count: 2; } }
14+@media screen and (max-width: 600px) { body > ol { column-count: 1; } }
media/fonts/input_mono_medium.ttfdeleted

Binary file not shown.

media/fonts/input_mono_regular.ttfdeleted

Binary file not shown.

media/icon.black.large.svgnew file+13
@@ -0,0 +1,13 @@
1+<svg class="vector" width="300px" height="300px" xmlns="http://www.w3.org/2000/svg" baseProfile="full" version="1.1" style="fill:none;stroke:black;stroke-width:5px;stroke-linecap:square;">
2+ <g transform="translate(0,30)">
3+ <g transform="translate(150,150),rotate(120,0,0)">
4+ <path d="M0,-60 a60,60 0 1,0 0,120 l100,0"></path>
5+ </g>
6+ <g transform="translate(150,150),rotate(240,0,0)">
7+ <path d="M0,-60 a60,60 0 1,0 0,120 l100,0"></path>
8+ </g>
9+ <g transform="translate(150,150),rotate(0,0,0)">
10+ <path d="M0,-60 a60,60 0 1,0 0,120 l100,0"></path>
11+ </g>
12+ </g>
13+</svg>
scripts/hallway.jsdeleted−144
@@ -1,144 +0,0 @@
1−'use strict'
2−
3−function Hallway (sites) {
4− const feeds = {}
5− this.sites = sites
6− this.el = document.createElement('div')
7− this.el.id = 'hallway'
8−
9− this.install = function (host) {
10− host.appendChild(this.el)
11− this.findFeeds()
12− }
13−
14− this.start = function () {
15− this.el.innerHTML = 'hello'
16− this.fetchFeeds()
17− }
18−
19− this.refresh = function () {
20− const entries = this.sortEntries()
21− let html = ''
22− for (const id in entries) {
23− html += `${this.templateEntry(entries[id])}\n`
24− }
25− this.el.innerHTML = `<ul>${html}</ul>${this._footer()}`
26− }
27−
28− // Entries
29−
30− this.sortEntries = function () {
31− const a = []
32− for (const id in feeds) {
33− const feed = feeds[id]
34− for (const i in feed.content) {
35− const entry = feed.content[i]
36− a.push(entry)
37− }
38− }
39− return a.sort(compare)
40− }
41−
42− this.templateEntry = function (entry) {
43− // Find mention
44− if (entry.body.indexOf('@<') > -1) {
45− const data = entry.body.split('@<').pop().split('>')[0]
46− const mention = data.split(' ')
47− const name = mention[0]
48− const path = mention[1]
49− entry.body = entry.body.replace(`@<${data}>`, `<a href='${path}'>@${name}</a>`)
50− }
51−
52− if (entry.body.substr(0, 1) === '/') {
53− const channel = entry.body.split(' ')[0]
54− entry.body = entry.body.replace(channel, `<span class='channel'>${channel}</span>`)
55− }
56−
57− const filter = window.location.hash.substr(1).replace(/\+/g, ' ').toLowerCase()
58− const highlight = filter == entry.author.toLowerCase()
59−
60− return `<li class='entry ${highlight ? 'highlight' : ''}'><span class='date'>${timeAgo(Date.parse(entry.date))}</span> <span class='author'>${entry.author}</span> <span class='body'>${entry.body}</span></li>`
61− }
62−
63− // Feeds
64−
65− this.findFeeds = function () {
66− console.log('Finding feeds..')
67− for (const id in sites) {
68− const site = sites[id]
69− if (site.feed && site.author) {
70− feeds[site.author] = { path: site.feed }
71− }
72− }
73− console.log(`Found ${Object.keys(feeds).length} feeds.`)
74− }
75−
76− this.fetchFeeds = function () {
77− console.log(`Fetching ${Object.keys(feeds).length} feeds..`)
78− for (const id in feeds) {
79− this.fetchFeed(id, feeds[id])
80− }
81− }
82−
83− this.fetchFeed = function (id, feed) {
84− console.log(`Fetching ${id}(${feed.path})..`)
85− Promise.all([ fetch(feed.path, { cache: 'no-store' }).then(x => x.text()) ]).then(([content]) => {
86− feeds[id].content = parseFeed(id, content)
87− this.refresh()
88− })
89− }
90−
91− // Extras
92−
93− this._footer = function () {
94− return '<p>The <b>Hallway</b> is a decentralized forum, to join the conversation, simply create yourself a <a href="https://twtxt.readthedocs.io/en/stable/user/twtxtfile.html">twtxt</a> feed and <a href="https://github.com/XXIIVV/Webring/">add it</a> to your entry in the <a href="index.html">webring</a>.</p>'
95− }
96−
97− // Utils
98−
99− function compare (a, b) {
100− return a.offset < b.offset ? -1 : a.offset > b.offset ? 1 : 0
101− }
102−
103− function parseFeed (author, feed) {
104− const lines = feed.split('\n')
105− const entries = []
106− for (const id in lines) {
107− const line = lines[id].trim()
108− if (line === '') { continue }
109− const parts = line.replace(' ', '\t').split('\t')
110− const date = parts[0].trim()
111− const body = parts[1].trim()
112− const offset = new Date() - new Date(date)
113− entries.push({ date, body, author, offset })
114− }
115− return entries
116− }
117−
118− function timeAgo (dateParam) {
119− const date = typeof dateParam === 'object' ? dateParam : new Date(dateParam)
120− const DAY_IN_MS = 86400000 // 24 * 60 * 60 * 1000
121− const today = new Date()
122− const yesterday = new Date(today - DAY_IN_MS)
123− const seconds = Math.round((today - date) / 1000)
124− const minutes = Math.round(seconds / 60)
125− const isToday = today.toDateString() === date.toDateString()
126− const isYesterday = yesterday.toDateString() === date.toDateString()
127−
128− if (seconds < 5) {
129− return 'now'
130− } else if (seconds < 60) {
131− return `${seconds} seconds ago`
132− } else if (seconds < 90) {
133− return 'about a minute ago'
134− } else if (minutes < 60) {
135− return `${minutes} minutes ago`
136− } else if (isToday) {
137− return `${Math.floor(minutes / 60)} hours ago`
138− } else if (isYesterday) {
139− return 'yesterday'
140− }
141−
142− return `${Math.floor(minutes / 1440)} days ago`
143− }
144−}
scripts/opml.jsdeleted−11
@@ -1,11 +0,0 @@
1−let outlines = sites.filter((site) => !!site.rss).map((site) => {
2− return `<outline type="rss" xmlUrl="${site.rss}" title="${site.title}"/>`
3−})
4−
5−let template = `<?xml version="1.0" encoding="UTF-8"?><opml version="1.1"><head></head><body>${outlines.join('')}</body></opml>`
6−
7−window.onload = function () {
8− let a = document.getElementById('opml')
9− a.setAttribute('href', 'data:text/plain;charset=utf-8,' + window.encodeURIComponent(template))
10− a.setAttribute('download', 'webring.opml')
11−}
scripts/portal.jsdeleted−69
@@ -1,69 +0,0 @@
1−'use strict'
2−
3−function Portal (sites) {
4− this.el = document.createElement('div')
5− this.el.id = 'portal'
6− this.sites = sites
7−
8− // Templates
9−
10− function _readme () {
11− return `<p class='readme'>This webring is an attempt to inspire artists & developers to build their own website and share traffic among each other. The ring welcomes personalized websites such as <b>diaries, wikis & portfolios</b>.</p><p>To add yourself to the ring, submit a <a href='https://github.com/XXIIVV/webring/edit/master/scripts/sites.js' target='_blank'>Pull Request</a>.<br />If you found a broken link, please <a href='https://github.com/XXIIVV/webring/issues/new' target='_blank'>report it</a>.</p>`
12− }
13−
14− function _buttons () {
15− return `<p class='buttons'><a href='#random' onClick="portal.reload('random')">Random</a> | <a href='https://github.com/XXIIVV/webring'>Information</a> <a id='icon' href='#random' onClick="portal.reload('random')"></a> | <a href="hallway.html">The Hallway</a> | <a id="opml">OPML</a></p>`
16− }
17−
18− function _directory (sites) {
19− return `
20− <ul>${sites.reduce((acc, site, id) => { return `${acc}<li class='${site.type}'><span class='counter'>${id})</span><a href='${site.url}'>${_name(site)}</a></li>` }, '')}</ul>\n${_readme()}${_buttons()}`
21− }
22−
23− function _name (site) {
24− return site.title ? site.title : `${site.url.split('//')[1]}`
25− }
26−
27− function _redirect (site) {
28− return `<p>Redirecting to <a href="${site.url}">${site.url}</a></p><meta http-equiv="refresh" content="3; url=${site.url}">
29− <p class='buttons'><a href='#' onClick="portal.reload('')">Directory</a> | <a href='#${site.url}' onClick="portal.reload('random')">Skip</a> | <a href='#random' onClick="portal.reload('random')">Random</a> | <a href='https://github.com/XXIIVV/webring'>Information</a> <a id='icon' href='#random' onClick="portal.reload('random')"></a></p>`
30− }
31−
32− //
33−
34− this.install = function (host) {
35− host.appendChild(this.el)
36− }
37−
38− this.start = function () {
39− this.el.innerHTML = window.location.hash && window.location.hash.length > 4 ? _redirect(this.next()) : _directory(this.sites)
40− }
41−
42− this.reload = function () {
43− setTimeout(() => { window.location.reload() }, 500)
44− }
45−
46− this.navigate = function (target) {
47− setTimeout(() => { window.location.href = target }, 3000)
48− }
49−
50− this.locate = function () {
51− const hash = window.location.hash.replace('#', '').trim()
52−
53− if (hash == 'random') {
54− return Math.floor(Math.random() * this.sites.length)
55− }
56−
57− for (const id in this.sites) {
58− const site = this.sites[id]
59− if (site.url.indexOf(hash) > -1) {
60− return parseInt(id)
61− }
62− }
63− return -1
64− }
65−
66− this.next = function (loc = this.locate()) {
67− return loc == this.sites.length - 1 ? this.sites[0] : this.sites[loc + 1]
68− }
69−}
scripts/sites.jsdeleted−91
@@ -1,91 +0,0 @@
1−'use strict'
2−
3−// Don't forget the comma! No trailing slashes
4−// protocol://url.domain.ext
5−
6−const sites = [
7− { url: 'https://wiki.xxiivv.com', title: 'xxiivv', type: 'wiki', author: 'Devine Lu Linvega', contact: 'aliceffekt@gmail.com', rss: 'https://wiki.xxiivv.com/links/rss.xml', feed: 'https://wiki.xxiivv.com/twtxt.txt' },
8− { url: 'http://estevancarlos.com' },
9− { url: 'https://electro.pizza', title: 'electro pizza', type: 'blog', author: 'rho', rss: 'https://electro.pizza/feed.xml', feed: 'https://electro.pizza/twtxt.txt' },
10− { url: 'https://ianjbattaglia.co' },
11− { url: 'https://avanier.now.sh/wiki', title: 'Ath', type: 'wiki', author: 'Josh Avanier', contact: 'joshavanier@protonmail.com' },
12− { url: 'http://kaemura.com' },
13− { url: 'https://liamcooke.com' },
14− { url: 'https://electricgecko.de' },
15− { url: 'https://wichniow.ski' },
16− { url: 'https://hraew.autophagy.io' },
17− { url: 'http://evenunto.net' },
18− { url: 'https://anxl.faith' },
19− { url: 'https://xvw.github.io', title: 'xvw.github.io', type: 'blog', author: 'Xavier Van de Woestyne', contact: 'xaviervdw@gmail.com', rss: 'https://xvw.github.io/atom.xml' },
20− { url: 'https://heracl.es' },
21− { url: 'https://felipecortez.net' },
22− { url: 'http://luminghao.com' },
23− { url: 'https://turelio.github.io' },
24− { url: 'https://spaceshipsin.space', title: 'spaceshipsin.space', type: 'hybrid', author: 'Gaeel Bradshaw-Rodriguez', contact: 'gaeel@spaceshipsin.space' },
25− { url: 'https://log.lectronice.com', title: 'lectrolog.', type: 'blog', author: 'lectronice', contact: 'i.love.spam@lectronice.com' },
26− { url: 'https://craze.co.uk' },
27− { url: 'https://shaneckel.com' },
28− { url: 'https://cblgh.org', title: 'cblgh.org', author: 'Alexander Cobleigh', contact: 'cabal://cblgh.org', feed: 'https://cblgh.org/twtxt.txt' },
29− { url: 'https://ellugar.co', title: 'ellugar', type: 'wiki', author: 'afk', contact: 'afk@ellugar.co', rss: 'http://feeds.ellugar.co/ellugar-logs' },
30− { url: 'http://hur.bet' },
31− { url: 'http://chigby.org' },
32− { url: 'https://longest.voyage' },
33− { url: 'https://palomakop.tv' },
34− { url: 'https://travisshears.com' },
35− { url: 'https://v-os.ca' },
36− { url: 'http://secretinternet.club' },
37− { url: 'https://jmandel.xyz' },
38− { url: 'https://systems.ws' },
39− { url: 'https://jamesin.space' },
40− { url: 'https://nathanwentworth.co' },
41− { url: 'https://eswat.ca' },
42− { url: 'https://uonai.space' },
43− { url: 'http://controls.ee' },
44− { url: 'https://wasin.io' },
45− { url: 'https://inns.studio' },
46− { url: 'http://kokorobot.ca' },
47− { url: 'https://ameyama.com', title: '雨山', type: 'blog', author: 'jrc03c', contact: 'josh@ameyama.com', rss: 'https://ameyama.com/blog/rss.xml' },
48− { url: 'https://wake.st' },
49− { url: 'https://xarene.la' },
50− { url: 'https://alex.zyzhang.me' },
51− { url: 'http://bildwissenschaft.vortok.info' },
52− { url: 'https://jakofranko.github.com' },
53− { url: 'https://aeriform.io' },
54− { url: 'http://blog.lucasdidthis.com' },
55− { url: 'http://npisanti.com', title: 'npisanti.com', author: 'Nicola Pisanti', contact: 'nicola@npisanti.com', rss: 'http://npisanti.com/journal/rss.xml' },
56− { url: 'https://underscorediscovery.ca' },
57− { url: 'https://drisc.io', title: 'drisc.io', type: 'wiki', author: 'Cory Driscoll', contact: 'cory@drisc.io', feed: 'https://drisc.io/hallway/twtxt.txt' },
58− { url: 'https://neufv.website' },
59− { url: 'https://ricky.codes' },
60− { url: 'https://maxdeviant.com' },
61− { url: 'https://tynandebold.com' },
62− { url: 'http://gytis.co' },
63− { url: 'https://nomand.co' },
64− { url: 'http://memoriata.com' },
65− { url: 'https://mmm.s-ol.nu' },
66− { url: 'https://chad.is' },
67− { url: 'https://smidgeo.com/bots' },
68− { url: 'https://iko.soy' },
69− { url: 'http://atelieroilandsugar.com' },
70− { url: 'https://magoz.is' },
71− { url: 'https://szymonkaliski.com' },
72− { url: 'https://phse.net', title: 'phse.net', type: 'blog', author: 'Stephen Lindberg', rss: 'https://phse.net/post/index.xml' },
73− { url: 'https://rosano.ca' },
74− { url: 'https://soyboysky.github.io' },
75− { url: 'https://gndclouds.cc' },
76− { url: 'https://xuv.be' },
77− { url: 'https://dsdshcym.github.io' },
78− { url: 'https://wiki.chronica.xyz', title: 'chronica', type: 'wiki', author: 'Chris Kipp', contact: 'ckipp@pm.me' },
79− { url: 'https://boffosocko.com' },
80− { url: 'https://hex22.org' },
81− { url: 'https://patrikarvidsson.com' },
82− { url: 'https://sophieleetmaa.com' },
83− { url: 'https://xinniw.github.io' },
84− { url: 'https://mboxed.github.io/forida' },
85− { url: 'https://letters.vexingworkshop.com' },
86− { url: 'https://tom.org.nz/about' },
87− { url: 'https://teknari.com' },
88− { url: 'https://colectivo-de-livecoders.gitlab.io/', title: 'Colectivo de Livecoders', type: 'blog', author: 'CLiC', contact: 'https://t.me/clic_laplata' },
89− { url: 'https://www.madewithtea.com', title: 'madewithtea.com', type: 'blog' },
90− { url: 'https://amorris.ca', title: 'amorris', author: 'Aaron Morris', type: 'blog', feed: 'https://feed.amorris.ca/hallway.txt' }
91−]
webring.opmlnew file+42
@@ -0,0 +1,42 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+<opml version="1.1">
3+ <head>
4+ <title>webring.opml</title>
5+ </head>
6+<body>
7+ <outline text="webring" title="webring">
8+ <outline text="&amp;Cr; &amp;Lf;" title="&amp;Cr; &amp;Lf;" description="" type="rss" version="RSS" htmlUrl="https://crlf.site/" xmlUrl="https://crlf.site/feed.xml"/>
9+ <outline text="0xFF" title="0xFF" description="" type="rss" version="RSS" htmlUrl="http://0xff.nu/" xmlUrl="https://0xff.nu/feed.xml"/>
10+ <outline text="Bismuth Garden" title="Bismuth Garden" description="" type="rss" version="RSS" htmlUrl="https://bismuth.garden/" xmlUrl="https://bismuth.garden/feed.xml"/>
11+ <outline text="Blog on Stephen Lindberg" title="Blog on Stephen Lindberg" description="" type="rss" version="RSS" htmlUrl="http://phse.net/post/" xmlUrl="https://phse.net/post/index.xml"/>
12+ <outline text="Chad Mazzola" title="Chad Mazzola" description="" type="rss" version="RSS" htmlUrl="https://chad.is/" xmlUrl="https://chad.is/rss.xml"/>
13+ <outline text="Dampfkraft" title="Dampfkraft" description="" type="rss" version="RSS" htmlUrl="https://dampfkraft.com/" xmlUrl="https://www.dampfkraft.com/index.rss"/>
14+ <outline text="dreamspace" title="dreamspace" description="" type="rss" version="RSS" htmlUrl="https://sunshinegardens.org/~xj9/feed.atom" xmlUrl="https://sunshinegardens.org/~xj9/rss.xml"/>
15+ <outline text="Edwin Wenink" title="Edwin Wenink" description="" type="rss" version="RSS" htmlUrl="https://www.edwinwenink.xyz/" xmlUrl="https://www.edwinwenink.xyz/index.xml"/>
16+ <outline text="electro·pizza" title="electro·pizza" description="" type="rss" version="RSS" htmlUrl="https://electro.pizza/" xmlUrl="https://electro.pizza/feed.xml"/>
17+ <outline text="ellugar Logs" title="ellugar Logs" description="" type="rss" version="RSS" htmlUrl="https://ellugar.co/logs" xmlUrl="http://feeds.ellugar.co/ellugar-logs"/>
18+ <outline text="ƒdisk.space" title="ƒdisk.space" description="" type="rss" version="RSS" htmlUrl="https://fdisk.space/" xmlUrl="https://fdisk.space/rss.xml"/>
19+ <outline text="icyphox's blog" title="icyphox's blog" description="" type="rss" version="RSS" htmlUrl="https://icyphox.sh/" xmlUrl="https://icyphox.sh/blog/feed.xml"/>
20+ <outline text="inqlab" title="inqlab" description="" type="rss" version="RSS" htmlUrl="http://inqlab.net/" xmlUrl="https://inqlab.net/posts.xml"/>
21+ <outline text="Julien Desrosiers" title="Julien Desrosiers" description="" type="rss" version="RSS" htmlUrl="https://www.juliendesrosiers.com/" xmlUrl="https://www.juliendesrosiers.com/feed.xml"/>
22+ <outline text="koikoi" title="koikoi" description="" type="rss" version="RSS" htmlUrl="https://royniang.com/Journal" xmlUrl="https://royniang.com/rss.xml"/>
23+ <outline text="Longest Voyage" title="Longest Voyage" description="" type="rss" version="RSS" htmlUrl="https://longest.voyage/" xmlUrl="https://longest.voyage/index.xml"/>
24+ <outline text="nchrs.xyz" title="nchrs.xyz" description="" type="rss" version="RSS" htmlUrl="https://nchrs.xyz/" xmlUrl="https://nchrs.xyz/rss.xml"/>
25+ <outline text="Nicola Pisanti's Journal" title="Nicola Pisanti's Journal" description="" type="rss" version="RSS" htmlUrl="http://npisanti.com/journal/" xmlUrl="http://npisanti.com/journal/rss.xml"/>
26+ <outline text="Northern Information" title="Northern Information" description="" type="rss" version="RSS" htmlUrl="https://nor.the-rn.info/" xmlUrl="https://nor.the-rn.info/feed.xml"/>
27+ <outline text="Quinlan Pfiffer's Site" title="Quinlan Pfiffer's Site" description="" type="rss" version="RSS" htmlUrl="http://q.pfiffer.org/" xmlUrl="https://q.pfiffer.org/feed.xml"/>
28+ <outline text="Resevoir" title="Resevoir" description="" type="rss" version="RSS" htmlUrl="https://resevoir.net/" xmlUrl="https://resevoir.net/rss.xml"/>
29+ <outline text="romainaubert" title="romainaubert" description="" type="rss" version="RSS" htmlUrl="https://romainaubert.com/" xmlUrl="https://romainaubert.com/feed.rss"/>
30+ <outline text="Roy Tang::All Content" title="Roy Tang::All Content" description="" type="rss" version="RSS" htmlUrl="https://roytang.net/" xmlUrl="https://roytang.net/index.xml"/>
31+ <outline text="serocell - media feed" title="serocell - media feed" description="" type="rss" version="RSS" htmlUrl="http://serocell.com/" xmlUrl="https://serocell.com/feeds/serocell.xml"/>
32+ <outline text="simply. personal." title="simply. personal." description="" type="rss" version="RSS" htmlUrl="https://simply.personal.jenett.org/" xmlUrl="https://simply.personal.jenett.org/feed/"/>
33+ <outline text="Szymon Kaliski" title="Szymon Kaliski" description="" type="rss" version="RSS" htmlUrl="http://github.com/dylang/node-rss" xmlUrl="https://szymonkaliski.com/feed.xml"/>
34+ <outline text="Teknari Blog" title="Teknari Blog" description="" type="rss" version="RSS" htmlUrl="https://www.teknari.com/blog" xmlUrl="https://teknari.com/feed.xml"/>
35+ <outline text="The James Chip RSS" title="The James Chip RSS" description="" type="rss" version="RSS" htmlUrl="https://www.jameschip.io/" xmlUrl="http://www.jameschip.io/index.xml"/>
36+ <outline text="Thoughts · Felix Elsner" title="Thoughts · Felix Elsner" description="" type="rss" version="RSS" htmlUrl="https://ix5.org/thoughts/" xmlUrl="https://ix5.org/thoughts/feeds/all.atom.xml"/>
37+ <outline text="Travis Shears Personal Site" title="Travis Shears Personal Site" description="" type="rss" version="RSS" htmlUrl="https://travisshears.com/" xmlUrl="https://travisshears.com/index.xml"/>
38+ <outline text="XXIIVV" title="XXIIVV" description="" type="rss" version="RSS" htmlUrl="https://wiki.xxiivv.com/ Journal" xmlUrl="https://wiki.xxiivv.com/links/rss.xml"/>
39+ <outline text="雨山" title="雨山" description="" type="rss" version="RSS" htmlUrl="http://ameyama.com/" xmlUrl="https://ameyama.com/blog/rss.xml"/>
40+ </outline>
41+ </body>
42+</opml>