feat(website): add the fl.narl.io site
Check and Windows preview / check (anvil) (push) Successful in 49s
Check and Windows preview / check (crucible) (push) Successful in 48s
Check and Windows preview / check (knurl) (push) Successful in 40s
Check and Windows preview / check (lathe) (push) Successful in 41s
Check and Windows preview / check (patina) (push) Successful in 56s
Check and Windows preview / check (rivet) (push) Successful in 45s
Check and Windows preview / check (temper) (push) Successful in 43s
Check and Windows preview / check (weld) (push) Successful in 1m20s
Check and Windows preview / previews (push) Successful in 1m15s
Check and Windows preview / windows (push) Successful in 2m31s

Astro site for the suite: a home page with the plugin cards, install
steps, principles, the metalwork names and the ideas on the bench, one
page per plugin, and the Impressum and privacy policy. Plugin names,
versions, download links and editor previews come from the catalog, the
wrapper manifests and docs/*/assets at build time.

Served by unprivileged nginx in Docker behind Traefik on fl.narl.io,
the same setup as proton.narl.io: no access logs, CSP 'self', no
JavaScript, legal pages filled from the environment at start.
This commit is contained in:
nvrl committed 2026-11-06 11:30:12 +01:00
1 parent 5cc3770737
commit 7e1776bb04
40 files changed
+8515

No files matched your search

+80
View File
@@ -0,0 +1,80 @@
---
import { IDEAS, REPO } from '../data/plugins';
---
<section id="bench" class="section">
<div class="container">
<div class="section-head">
<p class="eyebrow">On the bench</p>
<h2>What could come next</h2>
<p>
Ideas from the <a href={`${REPO}/src/branch/main/docs/ideas.md`}>ideas list</a>, each written against a problem
seen in bass-music production. Most of the new ones are about texture. These are ideas, not promises.
</p>
</div>
<ul class="grid" role="list">
{
IDEAS.map((idea) => (
<li class={idea.texture ? 'texture' : undefined}>
<div class="head">
<h3>{idea.name}</h3>
{idea.texture && <span class="badge badge-accent">Texture</span>}
</div>
<p class="label">{idea.role}</p>
<p class="text">{idea.text}</p>
</li>
))
}
</ul>
</div>
</section>
<style>
.grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 1rem;
margin: 0;
padding: 0;
list-style: none;
}
li {
display: grid;
align-content: start;
gap: 0.45rem;
padding: 1.4rem 1.5rem 1.5rem;
border: 1px dashed var(--line-strong);
border-radius: var(--radius);
background: rgb(255 255 255 / 0.012);
}
.head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
}
h3 {
font-size: 1.4rem;
letter-spacing: 0.06em;
text-transform: uppercase;
}
.text {
font-size: 0.975rem;
}
@media (max-width: 960px) {
.grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 600px) {
.grid {
grid-template-columns: 1fr;
}
}
</style>