summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreudoxia <uplink@distress.network>2021-08-25 00:39:15 -0400
committereudoxia <uplink@distress.network>2021-08-25 00:39:15 -0400
commit77cbd1ef231aab991702bab717ac6c6aac652ad2 (patch)
tree83a205e36978eb1830470dd17a95662d2d5fbc7b
parentdf7b120905fef1b7dd047926b8f7e388c4489c98 (diff)
software/web: initialization (+ rebuild)
-rwxr-xr-xindex.html1
-rwxr-xr-xinfo/index.html1
-rwxr-xr-xmeta/index.html1
-rwxr-xr-xmeta/sitemap/index.html3
-rwxr-xr-xmeta/styletest/index.html1
-rwxr-xr-xmeta/todo/index.html1
-rwxr-xr-xnav.html1
-rwxr-xr-xsitemap.xml6
-rwxr-xr-xsoftware/index.html9
-rwxr-xr-xsoftware/src.md2
-rw-r--r--software/web/index.html171
-rw-r--r--software/web/src.md112
-rwxr-xr-xvisual/composite/index.html1
-rwxr-xr-xvisual/index.html1
-rwxr-xr-xvisual/logotype/index.html1
-rwxr-xr-xwritten/index.html1
16 files changed, 308 insertions, 5 deletions
diff --git a/index.html b/index.html
index 7bebb57..be8de32 100755
--- a/index.html
+++ b/index.html
@@ -34,6 +34,7 @@
<span aria-hidden="true">│   ├───</span><a href="/meta/styletest">styletest</a>
<span aria-hidden="true">│   └───</span><a href="/meta/todo">todo</a>
<span aria-hidden="true">├───</span><a href="/software">software</a>
+<span aria-hidden="true">│   └───</span><a href="/software/web">web</a>
<span aria-hidden="true">├───</span><a href="/visual">visual</a>
<span aria-hidden="true">│   ├───</span><a href="/visual/composite">composite</a>
<span aria-hidden="true">│   └───</span><a href="/visual/logotype">logotype</a>
diff --git a/info/index.html b/info/index.html
index 536ac37..2aec794 100755
--- a/info/index.html
+++ b/info/index.html
@@ -49,6 +49,7 @@
<span aria-hidden="true">│   ├───</span><a href="/meta/styletest">styletest</a>
<span aria-hidden="true">│   └───</span><a href="/meta/todo">todo</a>
<span aria-hidden="true">├───</span><a href="/software">software</a>
+<span aria-hidden="true">│   └───</span><a href="/software/web">web</a>
<span aria-hidden="true">├───</span><a href="/visual">visual</a>
<span aria-hidden="true">│   ├───</span><a href="/visual/composite">composite</a>
<span aria-hidden="true">│   └───</span><a href="/visual/logotype">logotype</a>
diff --git a/meta/index.html b/meta/index.html
index 6ef69e3..eee3be3 100755
--- a/meta/index.html
+++ b/meta/index.html
@@ -42,6 +42,7 @@
<span aria-hidden="true">│   ├───</span><a href="/meta/styletest">styletest</a>
<span aria-hidden="true">│   └───</span><a href="/meta/todo">todo</a>
<span aria-hidden="true">├───</span><a href="/software">software</a>
+<span aria-hidden="true">│   └───</span><a href="/software/web">web</a>
<span aria-hidden="true">├───</span><a href="/visual">visual</a>
<span aria-hidden="true">│   ├───</span><a href="/visual/composite">composite</a>
<span aria-hidden="true">│   └───</span><a href="/visual/logotype">logotype</a>
diff --git a/meta/sitemap/index.html b/meta/sitemap/index.html
index 0e929a4..a412f3f 100755
--- a/meta/sitemap/index.html
+++ b/meta/sitemap/index.html
@@ -19,7 +19,7 @@ pre a:hover {text-decoration: none; color: #111; background-color: #ddd;}
pre a:active {text-decoration: none; color: #ddd;}
</style>
<title>Sitemap &mdash; DistressNetwork°</title>
-<meta http-equiv="last-modified" content="2021-02-01 00:24:46-05:00" />
+<meta http-equiv="last-modified" content="2021-08-25 00:37:59-04:00" />
</head>
<body>
@@ -31,6 +31,7 @@ pre a:active {text-decoration: none; color: #ddd;}
<span aria-hidden="true">│   ├───</span><a href="/meta/styletest">styletest</a>
<span aria-hidden="true">│   └───</span><a href="/meta/todo">todo</a>
<span aria-hidden="true">├───</span><a href="/software">software</a>
+<span aria-hidden="true">│   └───</span><a href="/software/web">web</a>
<span aria-hidden="true">├───</span><a href="/visual">visual</a>
<span aria-hidden="true">│   ├───</span><a href="/visual/composite">composite</a>
<span aria-hidden="true">│   └───</span><a href="/visual/logotype">logotype</a>
diff --git a/meta/styletest/index.html b/meta/styletest/index.html
index d96070e..5842d48 100755
--- a/meta/styletest/index.html
+++ b/meta/styletest/index.html
@@ -178,6 +178,7 @@ Level Three</p>
<span aria-hidden="true">│   ├───</span><a href="/meta/styletest">styletest</a>
<span aria-hidden="true">│   └───</span><a href="/meta/todo">todo</a>
<span aria-hidden="true">├───</span><a href="/software">software</a>
+<span aria-hidden="true">│   └───</span><a href="/software/web">web</a>
<span aria-hidden="true">├───</span><a href="/visual">visual</a>
<span aria-hidden="true">│   ├───</span><a href="/visual/composite">composite</a>
<span aria-hidden="true">│   └───</span><a href="/visual/logotype">logotype</a>
diff --git a/meta/todo/index.html b/meta/todo/index.html
index e531015..f99de36 100755
--- a/meta/todo/index.html
+++ b/meta/todo/index.html
@@ -34,6 +34,7 @@
<span aria-hidden="true">│   ├───</span><a href="/meta/styletest">styletest</a>
<span aria-hidden="true">│   └───</span><a href="/meta/todo">todo</a>
<span aria-hidden="true">├───</span><a href="/software">software</a>
+<span aria-hidden="true">│   └───</span><a href="/software/web">web</a>
<span aria-hidden="true">├───</span><a href="/visual">visual</a>
<span aria-hidden="true">│   ├───</span><a href="/visual/composite">composite</a>
<span aria-hidden="true">│   └───</span><a href="/visual/logotype">logotype</a>
diff --git a/nav.html b/nav.html
index 080b06d..5ea6ec2 100755
--- a/nav.html
+++ b/nav.html
@@ -7,6 +7,7 @@
<span aria-hidden="true">│   ├───</span><a href="/meta/styletest">styletest</a>
<span aria-hidden="true">│   └───</span><a href="/meta/todo">todo</a>
<span aria-hidden="true">├───</span><a href="/software">software</a>
+<span aria-hidden="true">│   └───</span><a href="/software/web">web</a>
<span aria-hidden="true">├───</span><a href="/visual">visual</a>
<span aria-hidden="true">│   ├───</span><a href="/visual/composite">composite</a>
<span aria-hidden="true">│   └───</span><a href="/visual/logotype">logotype</a>
diff --git a/sitemap.xml b/sitemap.xml
index f3871da..35a3611 100755
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -8,13 +8,15 @@ xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://distress.network/meta/</loc><lastmod>2020-11-21T21:30:37-05:00</lastmod></url>
-<url><loc>https://distress.network/meta/sitemap/</loc><lastmod>2021-02-01T00:24:46-05:00</lastmod></url>
+<url><loc>https://distress.network/meta/sitemap/</loc><lastmod>2021-08-25T00:37:59-04:00</lastmod></url>
<url><loc>https://distress.network/meta/styletest/</loc><lastmod>2021-08-14T22:50:50-04:00</lastmod></url>
<url><loc>https://distress.network/meta/todo/</loc><lastmod>2020-12-31T21:02:55-05:00</lastmod></url>
-<url><loc>https://distress.network/software/</loc><lastmod>2020-12-24T02:03:37-05:00</lastmod></url>
+<url><loc>https://distress.network/software/</loc><lastmod>2021-08-25T00:36:43-04:00</lastmod></url>
+
+<url><loc>https://distress.network/software/web/</loc><lastmod>2021-08-25T00:27:08-04:00</lastmod></url>
<url><loc>https://distress.network/visual/</loc><lastmod>2020-12-19T21:03:36-05:00</lastmod></url>
diff --git a/software/index.html b/software/index.html
index 1742658..2597280 100755
--- a/software/index.html
+++ b/software/index.html
@@ -12,14 +12,14 @@
<script src="/js/bg.js"></script>
<title>Executable Software Works &mdash; DistressNetwork°</title>
<meta name="description" content="&laquo;EXOCORTICES.&raquo; &mdash; This directory contains documentation of all software-based works." />
-<meta http-equiv="last-modified" content="2020-12-24 02:03:37-05:00" />
+<meta http-equiv="last-modified" content="2021-08-25 00:36:43-04:00" />
</head>
<body>
<header>
<div class="bomber">EXOCORTICES.</div>
<hr>
<div class="identcontainer">
-<div class="ident"><time datetime="2020-12-24 02:03:37-05:00">201224</time>––––<a href="https://distress.network">DistressNetwork°</a></div>
+<div class="ident"><time datetime="2021-08-25 00:36:43-04:00">210825</time>––––<a href="https://distress.network">DistressNetwork°</a></div>
<img class="headerlogo" src="/media/distressnetwork-b.svg" alt="">
</div>
</header>
@@ -28,6 +28,10 @@
<div class="leading">This directory contains documentation of all software-based works.</div>
<hr>
<p>Source code and executable files for these programs are published within the DistressNetwork° <a href="https://git.distress.network">Git repository</a>.</p>
+
+<ul>
+<li>The <a href="software/web">web maintenance tools</a> <a href="https://git.distress.network/web">(repository)</a> contains a collection of tools for the maintenance of the DistressNetwork° website.</li>
+</ul>
</main>
<nav>
<pre>
@@ -38,6 +42,7 @@
<span aria-hidden="true">│   ├───</span><a href="/meta/styletest">styletest</a>
<span aria-hidden="true">│   └───</span><a href="/meta/todo">todo</a>
<span aria-hidden="true">├───</span><a href="/software">software</a>
+<span aria-hidden="true">│   └───</span><a href="/software/web">web</a>
<span aria-hidden="true">├───</span><a href="/visual">visual</a>
<span aria-hidden="true">│   ├───</span><a href="/visual/composite">composite</a>
<span aria-hidden="true">│   └───</span><a href="/visual/logotype">logotype</a>
diff --git a/software/src.md b/software/src.md
index 0dda816..ff5acd0 100755
--- a/software/src.md
+++ b/software/src.md
@@ -4,3 +4,5 @@ leading: This directory contains documentation of all software-based works.
Source code and executable files for these programs are published within the DistressNetwork° [Git repository](https://git.distress.network).
+
+- The [web maintenance tools](software/web) [(repository)](https://git.distress.network/web) contains a collection of tools for the maintenance of the DistressNetwork° website.
diff --git a/software/web/index.html b/software/web/index.html
new file mode 100644
index 0000000..e831af1
--- /dev/null
+++ b/software/web/index.html
@@ -0,0 +1,171 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<link rel="stylesheet" href="/fonts/fonts.css">
+<link rel="stylesheet" href="/css/main.css">
+<link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png">
+<link rel="manifest" href="/favicon/site.webmanifest">
+<title>Website Maintenance Tools &mdash; DistressNetwork°</title>
+<meta http-equiv="last-modified" content="2021-08-25 00:27:08-04:00" />
+</head>
+<body>
+<div class="contentlevel">
+<main>
+<div class="leading">A collection of tools for the maintenance of this website.</div>
+<hr>
+<nav class="toc">
+<ul>
+<li><a href="#Overview">Overview</a></li>
+<li><a href="#md.sh">md.sh</a>
+<ul>
+<li><a href="#Dependencies">Dependencies</a></li>
+<li><a href="#Document%20Metadata">Document Metadata</a></li>
+</ul></li>
+<li><a href="#plain.sh">plain.sh</a>
+<ul>
+<li><a href="#Page%20Title">Page Title</a></li>
+</ul></li>
+<li><a href="#svgtex.sh">svgtex.sh</a></li>
+<li><a href="#Other%20Tools">Other Tools</a>
+<ul>
+<li><a href="#front.sh">front.sh</a></li>
+<li><a href="#nav.sh">nav.sh</a></li>
+<li><a href="#reload.sh">reload.sh</a></li>
+<li><a href="#sitemap.sh">sitemap.sh</a></li>
+<li><a href="#urlencode">urlencode</a></li>
+</ul></li>
+</ul>
+</nav>
+<h1 id="Overview">Overview</h1>
+
+<p>These scripts must be executed from within their residing directory only, and depend on adjacent files within it in order to function. For convenience it is recommended to create symlinks within this directory to all website directories under maintenance.</p>
+
+<h1 id="md.sh">md.sh</h1>
+
+<p><code>md.sh</code> is a static site generator from Markdown files.</p>
+
+<p>The script may be executed with a single argument corresponding to the webpage directory containing the input Markdown file, which should be named <code>src.md</code>. The output HTML file, named <code>index.html</code>, will be located in the same directory.</p>
+
+<pre><code>.&#47;md.sh &#60;target directory&#62;
+</code></pre>
+
+<p>Alternatively, the script may be given two arguments, pointing to the input file and output file paths respectively.</p>
+
+<pre><code>.&#47;md.sh &#60;input md&#62; &#60;output html&#62;
+</code></pre>
+
+<h2 id="Dependencies">Dependencies</h2>
+
+<ul>
+<li>Required: <a href="https://kristaps.bsd.lv/lowdown">lowdown</a>, <a href="https://github.com/jhawthorn/fzy">fzy</a></li>
+<li>Optional: any C compiler</li>
+</ul>
+
+<h2 id="Document%20Metadata">Document Metadata</h2>
+
+<p>The input file may begin with metadata key-value declarations, as specified by <a href="https://kristaps.bsd.lv/lowdown/lowdown.5.html#Metadata">lowdown(5)</a>. <code>md.sh</code> recognizes and formats the following:</p>
+
+<ul>
+<li><code>title</code>, for the HTML page title;</li>
+<li><code>bomber</code>, for the header splash text;</li>
+<li><code>leading</code>, for the page&#39;s leading phrase;</li>
+<li><code>opts</code>, for further configuration options described below.</li>
+</ul>
+
+<p>Page options are denoted by any combination of the following characters:</p>
+
+<ul>
+<li><code>c</code>, to generate a table of contents;</li>
+<li><code>f</code>, to suppress generation of the page footer;</li>
+<li><code>h</code>, to suppress generation of the page header.</li>
+</ul>
+
+<p>The table of contents generation may malfunction if two header names are identical within the page.</p>
+
+<h1 id="plain.sh">plain.sh</h1>
+
+<p><code>plain.sh</code> converts plain text files to HTML documents.</p>
+
+<pre><code>.&#47;plain.sh &#60;input txt&#62; &#60;output html&#62;
+</code></pre>
+
+<h2 id="Page%20Title">Page Title</h2>
+
+<p>The HTML page title may be specified within the input document using the following declaration:</p>
+
+<pre><code>&#60;!--title: ... --&#62;
+</code></pre>
+
+<p>where <code>...</code> is the page title.</p>
+
+<h1 id="svgtex.sh">svgtex.sh</h1>
+
+<p><code>svgtex.sh</code> renders LaTeX math mode commands as SVG files.</p>
+
+<pre><code>echo "&#60;equation&#62;" | .&#47;svgtex.sh &#60;output path&#62;
+</code></pre>
+
+<h1 id="Other%20Tools">Other Tools</h1>
+
+<h2 id="front.sh">front.sh</h2>
+
+<p><code>front.sh</code> generates the <a href="/">front page</a>.</p>
+
+<pre><code>.&#47;front.sh &#60;output html&#62;
+</code></pre>
+
+<h2 id="nav.sh">nav.sh</h2>
+
+<p><code>nav.sh</code> generates the sitemap navigation pane. Installation of <a href="http://mama.indstate.edu/users/ice/tree/">tree</a> is required.</p>
+
+<pre><code>.&#47;nav.sh &#60;source dir&#62; &#60;output file&#62;
+</code></pre>
+
+<h2 id="reload.sh">reload.sh</h2>
+
+<p><code>reload.sh</code> is a meta-script which updates the website&#39;s front page, navigation listings, and XML sitemap, and can optionally regenerate all of the webpages at once.</p>
+
+<pre><code>.&#47;reload.sh [-r]
+</code></pre>
+
+<h2 id="sitemap.sh">sitemap.sh</h2>
+
+<p><code>sitemap.sh</code> generates the website&#39;s <a href="/sitemap.xml">XML sitemap</a>, as specified by <a href="https://www.sitemaps.org/protocol.html">sitemaps.org</a>.</p>
+
+<pre><code>.&#47;sitemap.sh &#60;target dir&#62; &#60;output xml&#62;
+</code></pre>
+
+<h2 id="urlencode">urlencode</h2>
+
+<p><code>urlencode</code> is a small C program which converts a string into a URL-encoded format.</p>
+
+<pre><code>echo "&#60;string&#62;" | .&#47;urlencode
+</code></pre>
+</main>
+<nav>
+<pre>
+<a href="/" aria-label="root">·</a>
+<span aria-hidden="true">├───</span><a href="/info">info</a>
+<span aria-hidden="true">├───</span><a href="/meta">meta</a>
+<span aria-hidden="true">│   ├───</span><a href="/meta/sitemap">sitemap</a>
+<span aria-hidden="true">│   ├───</span><a href="/meta/styletest">styletest</a>
+<span aria-hidden="true">│   └───</span><a href="/meta/todo">todo</a>
+<span aria-hidden="true">├───</span><a href="/software">software</a>
+<span aria-hidden="true">│   └───</span><a href="/software/web">web</a>
+<span aria-hidden="true">├───</span><a href="/visual">visual</a>
+<span aria-hidden="true">│   ├───</span><a href="/visual/composite">composite</a>
+<span aria-hidden="true">│   └───</span><a href="/visual/logotype">logotype</a>
+<span aria-hidden="true">└───</span><a href="/written">written</a>
+</pre>
+</nav>
+</div>
+<footer>
+<p><a href="/info">About.</a> <a href="mailto:uplink@distress.network">Contact.</a> <a href="/cw.html">Content Warning.</a> <a href="https://git.distress.network">Git.</a> <a href="/meta/sitemap">Sitemap.</a> <a href="https://creativecommons.org/licenses/by-sa/4.0">CC BY-SA 4.0.</a></p>
+<img src="/media/distressnetwork-w.svg" alt="">
+</footer>
+</body>
+</html>
diff --git a/software/web/src.md b/software/web/src.md
new file mode 100644
index 0000000..37533f6
--- /dev/null
+++ b/software/web/src.md
@@ -0,0 +1,112 @@
+title: Website Maintenance Tools
+leading: A collection of tools for the maintenance of this website.
+opts: ch
+
+# Overview
+
+These scripts must be executed from within their residing directory only, and depend on adjacent files within it in order to function. For convenience it is recommended to create symlinks within this directory to all website directories under maintenance.
+
+# md.sh
+
+`md.sh` is a static site generator from Markdown files.
+
+The script may be executed with a single argument corresponding to the webpage directory containing the input Markdown file, which should be named `src.md`. The output HTML file, named `index.html`, will be located in the same directory.
+
+```
+./md.sh <target directory>
+```
+
+Alternatively, the script may be given two arguments, pointing to the input file and output file paths respectively.
+
+```
+./md.sh <input md> <output html>
+```
+
+## Dependencies
+
+- Required: [lowdown](https://kristaps.bsd.lv/lowdown), [fzy](https://github.com/jhawthorn/fzy)
+- Optional: any C compiler
+
+## Document Metadata
+
+The input file may begin with metadata key-value declarations, as specified by [lowdown(5)](https://kristaps.bsd.lv/lowdown/lowdown.5.html#Metadata). `md.sh` recognizes and formats the following:
+
+- `title`, for the HTML page title;
+- `bomber`, for the header splash text;
+- `leading`, for the page's leading phrase;
+- `opts`, for further configuration options described below.
+
+Page options are denoted by any combination of the following characters:
+
+- `c`, to generate a table of contents;
+- `f`, to suppress generation of the page footer;
+- `h`, to suppress generation of the page header.
+
+The table of contents generation may malfunction if two header names are identical within the page.
+
+# plain.sh
+
+`plain.sh` converts plain text files to HTML documents.
+
+```
+./plain.sh <input txt> <output html>
+```
+
+## Page Title
+
+The HTML page title may be specified within the input document using the following declaration:
+
+```
+<!--title: ... -->
+```
+where `...` is the page title.
+
+# svgtex.sh
+
+`svgtex.sh` renders LaTeX math mode commands as SVG files.
+
+```
+echo "<equation>" | ./svgtex.sh <output path>
+```
+
+# Other Tools
+
+## front.sh
+
+`front.sh` generates the [front page](/).
+
+```
+./front.sh <output html>
+```
+
+## nav.sh
+
+`nav.sh` generates the sitemap navigation pane. Installation of [tree](http://mama.indstate.edu/users/ice/tree/) is required.
+
+```
+./nav.sh <source dir> <output file>
+```
+
+## reload.sh
+
+`reload.sh` is a meta-script which updates the website's front page, navigation listings, and XML sitemap, and can optionally regenerate all of the webpages at once.
+
+```
+./reload.sh [-r]
+```
+
+## sitemap.sh
+
+`sitemap.sh` generates the website's [XML sitemap](/sitemap.xml), as specified by [sitemaps.org](https://www.sitemaps.org/protocol.html).
+
+```
+./sitemap.sh <target dir> <output xml>
+```
+
+## urlencode
+
+`urlencode` is a small C program which converts a string into a URL-encoded format.
+
+```
+echo "<string>" | ./urlencode
+```
diff --git a/visual/composite/index.html b/visual/composite/index.html
index 7c5f61f..4f6329c 100755
--- a/visual/composite/index.html
+++ b/visual/composite/index.html
@@ -48,6 +48,7 @@
<span aria-hidden="true">│   ├───</span><a href="/meta/styletest">styletest</a>
<span aria-hidden="true">│   └───</span><a href="/meta/todo">todo</a>
<span aria-hidden="true">├───</span><a href="/software">software</a>
+<span aria-hidden="true">│   └───</span><a href="/software/web">web</a>
<span aria-hidden="true">├───</span><a href="/visual">visual</a>
<span aria-hidden="true">│   ├───</span><a href="/visual/composite">composite</a>
<span aria-hidden="true">│   └───</span><a href="/visual/logotype">logotype</a>
diff --git a/visual/index.html b/visual/index.html
index e21a3d8..5ea55ae 100755
--- a/visual/index.html
+++ b/visual/index.html
@@ -41,6 +41,7 @@
<span aria-hidden="true">│   ├───</span><a href="/meta/styletest">styletest</a>
<span aria-hidden="true">│   └───</span><a href="/meta/todo">todo</a>
<span aria-hidden="true">├───</span><a href="/software">software</a>
+<span aria-hidden="true">│   └───</span><a href="/software/web">web</a>
<span aria-hidden="true">├───</span><a href="/visual">visual</a>
<span aria-hidden="true">│   ├───</span><a href="/visual/composite">composite</a>
<span aria-hidden="true">│   └───</span><a href="/visual/logotype">logotype</a>
diff --git a/visual/logotype/index.html b/visual/logotype/index.html
index 3ae9d0b..f8c78a2 100755
--- a/visual/logotype/index.html
+++ b/visual/logotype/index.html
@@ -68,6 +68,7 @@
<span aria-hidden="true">│   ├───</span><a href="/meta/styletest">styletest</a>
<span aria-hidden="true">│   └───</span><a href="/meta/todo">todo</a>
<span aria-hidden="true">├───</span><a href="/software">software</a>
+<span aria-hidden="true">│   └───</span><a href="/software/web">web</a>
<span aria-hidden="true">├───</span><a href="/visual">visual</a>
<span aria-hidden="true">│   ├───</span><a href="/visual/composite">composite</a>
<span aria-hidden="true">│   └───</span><a href="/visual/logotype">logotype</a>
diff --git a/written/index.html b/written/index.html
index c4603ab..255a106 100755
--- a/written/index.html
+++ b/written/index.html
@@ -54,6 +54,7 @@
<span aria-hidden="true">│   ├───</span><a href="/meta/styletest">styletest</a>
<span aria-hidden="true">│   └───</span><a href="/meta/todo">todo</a>
<span aria-hidden="true">├───</span><a href="/software">software</a>
+<span aria-hidden="true">│   └───</span><a href="/software/web">web</a>
<span aria-hidden="true">├───</span><a href="/visual">visual</a>
<span aria-hidden="true">│   ├───</span><a href="/visual/composite">composite</a>
<span aria-hidden="true">│   └───</span><a href="/visual/logotype">logotype</a>