feat: refresh projects from GitHub

This commit is contained in:
Fi3w0 2026-08-11 16:48:12 +02:00
parent e3970d3480
commit 98beb0cbf4
2 changed files with 288 additions and 20 deletions

View file

@ -885,6 +885,210 @@ code {
font-size: 0.86rem; font-size: 0.86rem;
} }
/* Scorium is code-native, so its project visual is a small editorial
language specimen rather than a fake product screenshot. */
.project-visual-scorium {
display: block;
overflow: hidden;
background:
linear-gradient(rgba(17, 23, 26, 0.08) 1px, transparent 1px),
linear-gradient(90deg, rgba(17, 23, 26, 0.08) 1px, transparent 1px),
var(--paper-deep);
background-size: 2.25rem 2.25rem;
color: var(--text);
}
.project-visual-scorium::before {
position: absolute;
z-index: 0;
top: -16%;
right: -5%;
width: 55%;
height: 72%;
transform: rotate(12deg);
background: var(--coral);
content: "";
clip-path: polygon(26% 0, 100% 0, 100% 78%, 0 100%);
}
.scorium-window {
position: absolute;
z-index: 2;
top: 8%;
right: 8%;
bottom: 21%;
left: 7%;
display: grid;
overflow: hidden;
border: 3px solid var(--ink);
background: #111b20;
box-shadow: 0.9rem 0.9rem 0 rgba(17, 23, 26, 0.2);
grid-template-rows: auto 1fr auto;
}
.scorium-titlebar {
display: grid;
min-height: 3.5rem;
padding: 0 1rem;
border-bottom: 2px solid rgba(237, 241, 233, 0.22);
color: var(--muted);
font-family: var(--mono);
font-size: 0.62rem;
letter-spacing: 0.04em;
grid-template-columns: auto 1fr auto;
align-items: center;
gap: 1rem;
}
.scorium-titlebar b {
color: var(--coral-bright);
letter-spacing: 0.13em;
}
.scorium-titlebar span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.scorium-titlebar i {
color: var(--lime);
font-style: normal;
}
.scorium-code {
align-self: center;
min-width: 0;
margin: 0;
padding: clamp(1.2rem, 3vw, 2.2rem);
overflow: hidden;
border: 0;
background: transparent;
color: var(--text);
font: 500 clamp(0.67rem, 1.05vw, 0.93rem)/1.65 var(--mono);
white-space: pre;
}
.scorium-code .scorium-dim {
display: inline-block;
width: 2.25em;
color: #60737b;
font-weight: 400;
}
.scorium-line {
display: block;
min-height: 1.65em;
}
.scorium-indent {
display: inline-block;
width: 2.2em;
}
.scorium-indent-double {
width: 4.4em;
}
.scorium-code b {
color: var(--cyan);
font-weight: 600;
}
.scorium-code em {
color: var(--coral-bright);
font-style: normal;
}
.scorium-code strong {
color: var(--lime);
font-weight: 500;
}
.scorium-code i {
color: var(--yellow);
font-style: normal;
}
.scorium-diagnostic {
display: flex;
min-height: 2.9rem;
padding: 0 1rem;
border-top: 2px solid rgba(237, 241, 233, 0.16);
color: var(--muted);
font-family: var(--mono);
font-size: 0.61rem;
letter-spacing: 0.03em;
align-items: center;
gap: 0.65rem;
}
.scorium-diagnostic i {
width: 0.55rem;
height: 0.55rem;
flex: 0 0 auto;
background: var(--lime);
}
.scorium-pipeline {
position: absolute;
z-index: 2;
right: 2rem;
bottom: 2rem;
left: 2rem;
display: flex;
padding-top: 0.8rem;
border-top: 3px solid var(--ink);
color: var(--ink);
font-family: var(--mono);
font-size: clamp(0.54rem, 0.8vw, 0.68rem);
letter-spacing: 0.05em;
text-transform: uppercase;
align-items: center;
justify-content: space-between;
gap: 0.6rem;
}
.scorium-pipeline b {
font-weight: 600;
}
.scorium-pipeline i {
color: #765b4d;
font-style: normal;
}
.scorium-watermark {
position: absolute;
z-index: 1;
right: -0.04em;
bottom: -0.2em;
color: rgba(17, 23, 26, 0.1);
font-family: var(--display);
font-size: clamp(7rem, 15vw, 14rem);
letter-spacing: -0.08em;
line-height: 0.8;
pointer-events: none;
}
.project-visual-scorium .image-label {
z-index: 3;
right: auto;
bottom: auto;
left: 0;
top: 0;
transform: translate(-2px, -100%);
}
.project-feature-scorium .project-feature-copy {
border-top-color: var(--coral);
}
.scorium-tags {
margin: -0.2rem 0 1.4rem;
color: var(--muted);
}
.project-facts { .project-facts {
border-top-width: 3px; border-top-width: 3px;
border-bottom-width: 2px; border-bottom-width: 2px;
@ -1764,6 +1968,45 @@ code {
min-height: 20rem; min-height: 20rem;
} }
.project-visual-scorium {
min-height: 28rem;
}
.scorium-window {
top: 6%;
right: 1.1rem;
bottom: 19%;
left: 1.1rem;
box-shadow: 0.55rem 0.55rem 0 rgba(17, 23, 26, 0.2);
}
.scorium-titlebar {
min-height: 3rem;
}
.scorium-titlebar span {
display: none;
}
.scorium-titlebar {
grid-template-columns: 1fr auto;
}
.scorium-code {
padding: 1rem;
font-size: clamp(0.56rem, 2.35vw, 0.72rem);
}
.scorium-pipeline {
right: 1rem;
bottom: 1.35rem;
left: 1rem;
}
.scorium-pipeline i {
display: none;
}
.project-card-cool { .project-card-cool {
width: 94%; width: 94%;
} }

View file

@ -5,10 +5,10 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>Fi3w0 / Alex - Systems Builder</title> <title>Fi3w0 / Alex - Systems Builder</title>
<meta name="description" content="Alex, also known as Fi3w0, builds Linux and macOS desktop tools, homelab infrastructure, server tooling, and configurable Minecraft frameworks."> <meta name="description" content="Alex, also known as Fi3w0, builds TideWM, Scorium, Linux and macOS desktop tools, homelab infrastructure, and configurable server tooling.">
<meta property="og:title" content="Fi3w0 / Alex - Systems Builder"> <meta property="og:title" content="Fi3w0 / Alex - Systems Builder">
<meta property="og:description" content="Linux, homelabs, server tooling, and the systems holding everything up."> <meta property="og:description" content="TideWM, Scorium, Linux desktops, homelabs, and the systems holding everything up.">
<meta property="og:type" content="website"> <meta property="og:type" content="website">
<meta property="og:url" content="https://fiwlabs.dev/"> <meta property="og:url" content="https://fiwlabs.dev/">
<meta property="og:image" content="https://fiwlabs.dev/img/moonlit-shell.jpg"> <meta property="og:image" content="https://fiwlabs.dev/img/moonlit-shell.jpg">
@ -19,8 +19,8 @@
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Archivo+Black&amp;family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&amp;display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Archivo+Black&amp;family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&amp;display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/style.css?v=5"> <link rel="stylesheet" href="css/style.css?v=6">
<link rel="stylesheet" href="css/editorial.css?v=5"> <link rel="stylesheet" href="css/editorial.css?v=6">
<link rel="icon" href="/favicon.ico" sizes="any"> <link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" href="/icon.svg" type="image/svg+xml"> <link rel="icon" href="/icon.svg" type="image/svg+xml">
@ -68,7 +68,7 @@
<p class="eyebrow"><span class="status-dot" aria-hidden="true"></span> alex@fiw:~ $ cat about.txt</p> <p class="eyebrow"><span class="status-dot" aria-hidden="true"></span> alex@fiw:~ $ cat about.txt</p>
<h1 id="hero-title">Alex <span id="glitch-name" data-text="/ Fi3w0">/ Fi3w0</span></h1> <h1 id="hero-title">Alex <span id="glitch-name" data-text="/ Fi3w0">/ Fi3w0</span></h1>
<p class="hero-intro"> <p class="hero-intro">
I make Linux and macOS desktop tools, run a homelab, and publish Minecraft server mods. I build a Wayland desktop, a programmable configuration language, macOS tools, and Minecraft server mods.
Most of my projects start as something I wanted for my own machine or server, Most of my projects start as something I wanted for my own machine or server,
then grow until they are useful to somebody else too. then grow until they are useful to somebody else too.
</p> </p>
@ -92,15 +92,15 @@
</div> </div>
<div class="terminal-body"> <div class="terminal-body">
<p><span class="prompt">$</span> git status --short</p> <p><span class="prompt">$</span> git status --short</p>
<p class="terminal-output"><span>M</span> homelab/<br><span>M</span> minecraft-mods/<br><span>??</span> desktop-experiments/</p> <p class="terminal-output"><span>M</span> TideWM/<br><span>M</span> Scorium/<br><span>??</span> next-system/</p>
<p><span class="prompt">$</span> cat NOTES</p> <p><span class="prompt">$</span> cat NOTES</p>
<p class="terminal-output">linux + macos / servers / modding<br>automation / config / self-hosting</p> <p class="terminal-output">wayland + rust / config languages<br>automation / servers / self-hosting</p>
<p class="terminal-note"># there is always something unfinished</p> <p class="terminal-note"># there is always something unfinished</p>
</div> </div>
<div class="profile-chip"> <div class="profile-chip">
<img src="img/avatar.png" alt="Fi3w0's GitHub avatar" width="460" height="460"> <img src="img/avatar.png" alt="Fi3w0's GitHub avatar" width="460" height="460">
<div><strong>Alex / Fi3w0</strong><span>Linux, servers, mods</span></div> <div><strong>Alex / Fi3w0</strong><span>Systems over categories</span></div>
</div> </div>
</aside> </aside>
</section> </section>
@ -173,8 +173,8 @@
hot reload, readable config files, updates that can fail safely, and logs that say what went wrong. hot reload, readable config files, updates that can fail safely, and logs that say what went wrong.
</p> </p>
<p> <p>
I write Bash, Go, Lua, and modify Java directly. For Rust, Swift, and larger Kotlin, TypeScript, Python, I write Bash, Go, Lua, and Python directly, and modify Java. For heavier Rust, Swift, Kotlin,
and QML builds, I use AI agents heavily, then review, test, and integrate the result myself. TypeScript, and QML builds, I direct AI agents, then own the design, review, testing, and integration.
</p> </p>
<div class="language-line"> <div class="language-line">
<span>Ukrainian + Russian</span><span>Spanish</span><span>English C1</span> <span>Ukrainian + Russian</span><span>Spanish</span><span>English C1</span>
@ -203,29 +203,54 @@
<article class="current-project reveal" aria-labelledby="tidewm-title"> <article class="current-project reveal" aria-labelledby="tidewm-title">
<div class="current-project-main"> <div class="current-project-main">
<div class="current-meta"><span><i aria-hidden="true"></i> Daily-driver compositor</span><span>AI-assisted / evolving</span></div> <div class="current-meta"><span><i aria-hidden="true"></i> Functional pre-release</span><span>v0.90 / daily-driver path</span></div>
<p class="current-kicker">Wayland compositor / Rust</p> <p class="current-kicker">Wayland compositor / Rust</p>
<div class="tide-heading"> <div class="tide-heading">
<img class="tide-mark" src="img/tidewm-logo.png" alt="" width="48" height="48" loading="lazy"> <img class="tide-mark" src="img/tidewm-logo.png" alt="" width="48" height="48" loading="lazy">
<h3 id="tidewm-title">TideWM</h3> <h3 id="tidewm-title">TideWM</h3>
</div> </div>
<p>A water-themed Wayland compositor built on Smithay, made because I wanted to see how far I could take it. Tiling (BSP and master/stack), multi-monitor, XWayland, workspaces, and IPC already run as my daily driver; the signature aqua render effects are next.</p> <p>A Wayland desktop that feels like water, built in Rust on Smithay. Under the ripples, wave transitions, glass, shadows, and window sway is a real tiling compositor with multi-monitor, XWayland, IPC, screencasting, and two spatial engines you can switch live.</p>
<div class="tag-row current-tags"><span>AI-assisted</span><span>Smithay</span><span>Rust</span><span>Wayland</span></div> <div class="tag-row current-tags"><span>Smithay</span><span>Rust</span><span>Wayland</span><span>GPL-3.0</span></div>
<a class="text-link current-repo-link" href="https://github.com/Fi3w0/TideWM" target="_blank" rel="noreferrer">View repository <span aria-hidden="true">&nearr;</span></a> <a class="text-link current-repo-link" href="https://github.com/Fi3w0/TideWM" target="_blank" rel="noreferrer">View repository <span aria-hidden="true">&nearr;</span></a>
</div> </div>
<div class="current-roadmap"> <div class="current-roadmap">
<p>Project shape</p> <p>Project shape</p>
<ol> <ol>
<li><span>01</span><div><strong>Foundation</strong><small>Rust compositor built directly on Smithay</small></div><b>base</b></li> <li><span>01</span><div><strong>Classic</strong><small>BSP, master/stack, cascade, workspaces, Depth Deck</small></div><b>done</b></li>
<li><span>02</span><div><strong>Tiling &amp; compat</strong><small>BSP/master-stack layouts, multi-monitor, XWayland</small></div><b>done</b></li> <li><span>02</span><div><strong>Ocean</strong><small>One continuous 2D world with reefs, cameras, and bookmarks</small></div><b>done</b></li>
<li><span>03</span><div><strong>Visual direction</strong><small>Water/aqua render effects, still pending</small></div><b>next</b></li> <li><span>03</span><div><strong>Water stack</strong><small>Ripples, waves, glass, caustics, sway, depth, and buoyancy</small></div><b>done</b></li>
<li><span>04</span><div><strong>Development method</strong><small>AI-assisted implementation, tested and reviewed by me</small></div><b>method</b></li> <li><span>04</span><div><strong>Next pass</strong><small>More hardware coverage, feel tuning, Nvidia native, AUR</small></div><b>testing</b></li>
</ol> </ol>
</div> </div>
<span class="current-watermark" aria-hidden="true">TIDE</span> <span class="current-watermark" aria-hidden="true">TIDE</span>
<div class="tide-ascii" id="tide-ascii" aria-hidden="true"></div> <div class="tide-ascii" id="tide-ascii" aria-hidden="true"></div>
</article> </article>
<article class="project-feature project-feature-scorium reveal" data-repo="Scorium">
<a class="project-visual project-visual-scorium" href="https://github.com/Fi3w0/Scorium" target="_blank" rel="noreferrer" aria-label="View Scorium on GitHub">
<span class="scorium-window" aria-hidden="true">
<span class="scorium-titlebar"><b>SCORIUM</b><span>examples/services.scor</span><i>v0.1.0</i></span>
<code class="scorium-code"><span class="scorium-line"><span class="scorium-dim">01</span> <em>@base_port</em> = <strong>8000</strong></span><span class="scorium-line"><span class="scorium-dim">02</span></span><span class="scorium-line"><span class="scorium-dim">03</span> <b>server</b> {</span><span class="scorium-line"><span class="scorium-dim">04</span><span class="scorium-indent"></span>host = <i>localhost</i></span><span class="scorium-line"><span class="scorium-dim">05</span><span class="scorium-indent"></span>port = <em>base_port</em> + <strong>80</strong></span><span class="scorium-line"><span class="scorium-dim">06</span><span class="scorium-indent"></span>timeout = <strong>5s</strong></span><span class="scorium-line"><span class="scorium-dim">07</span> }</span><span class="scorium-line"><span class="scorium-dim">08</span></span><span class="scorium-line"><span class="scorium-dim">09</span> <b>for</b> i = <strong>1</strong>, <strong>3</strong> <b>do</b></span><span class="scorium-line"><span class="scorium-dim">10</span><span class="scorium-indent"></span>worker {</span><span class="scorium-line"><span class="scorium-dim">11</span><span class="scorium-indent scorium-indent-double"></span>name = worker-$i</span><span class="scorium-line"><span class="scorium-dim">12</span><span class="scorium-indent"></span>}</span><span class="scorium-line"><span class="scorium-dim">13</span> <b>end</b></span></code>
<span class="scorium-diagnostic"><i></i> parsed · sandboxed · schema valid</span>
</span>
<span class="scorium-pipeline" aria-hidden="true"><b>source</b><i>&rarr;</i><b>parse</b><i>&rarr;</i><b>evaluate</b><i>&rarr;</i><b>validate</b><i>&rarr;</i><b>apply</b></span>
<span class="scorium-watermark" aria-hidden="true">.SCOR</span>
<span class="image-label">Readable config / programmable core</span>
</a>
<div class="project-feature-copy">
<div class="project-meta"><span>Newest release</span><span>Rust / Lua 5.4 / pre-1.0</span></div>
<h3>Scorium</h3>
<p>A readable, embeddable configuration framework: declarative for simple files, programmable when repetition or conditions appear. It combines typed values, precise diagnostics, built-in schema validation, a canonical formatter, and sandboxed Lua—with no filesystem, network, or process access by default.</p>
<ul class="project-facts">
<li><strong>5</strong><span>focused Rust crates</span></li>
<li><strong>5</strong><span>CLI workflows</span></li>
<li><strong>0</strong><span>ambient system access</span></li>
</ul>
<div class="tag-row scorium-tags"><span>Source-available</span><span>PolyForm Strict</span><span>Sandboxed</span></div>
<a class="text-link" href="https://github.com/Fi3w0/Scorium" target="_blank" rel="noreferrer">Read the repository <span aria-hidden="true">&nearr;</span></a>
</div>
</article>
<article class="project-feature reveal" data-repo="Flux"> <article class="project-feature reveal" data-repo="Flux">
<a class="project-visual project-visual-flux" href="https://github.com/Fi3w0/Flux" target="_blank" rel="noreferrer" aria-label="View Flux on GitHub"> <a class="project-visual project-visual-flux" href="https://github.com/Fi3w0/Flux" target="_blank" rel="noreferrer" aria-label="View Flux on GitHub">
<span class="flux-chrome" aria-hidden="true"><i></i><i></i><i></i></span> <span class="flux-chrome" aria-hidden="true"><i></i><i></i><i></i></span>
@ -244,7 +269,7 @@
<span class="image-label">macOS Tahoe / Apple silicon</span> <span class="image-label">macOS Tahoe / Apple silicon</span>
</a> </a>
<div class="project-feature-copy"> <div class="project-feature-copy">
<div class="project-meta"><span>Latest project</span><span>SwiftUI / AppKit / macOS</span></div> <div class="project-meta"><span>Native media workbench</span><span>SwiftUI / AppKit / macOS</span></div>
<h3>Flux</h3> <h3>Flux</h3>
<p>A native macOS media workbench: convert, download, edit, and compose media in one focused app. FFmpeg, yt-dlp, and Apple Vision underneath, pre-flight checks that explain failures before a job ever starts, and everything processed locally.</p> <p>A native macOS media workbench: convert, download, edit, and compose media in one focused app. FFmpeg, yt-dlp, and Apple Vision underneath, pre-flight checks that explain failures before a job ever starts, and everything processed locally.</p>
<ul class="project-facts"> <ul class="project-facts">
@ -370,7 +395,7 @@
<header class="section-heading reveal"> <header class="section-heading reveal">
<p class="section-index">04 / Tools</p> <p class="section-index">04 / Tools</p>
<h2 id="stack-title">What is usually open in my terminal.</h2> <h2 id="stack-title">What is usually open in my terminal.</h2>
<p class="stack-intro">Kitty as the daily emulator, running on a MacBook (macOS) — my main device — SSH'd out to the Arch desktop and the Ubuntu server for everything else.</p> <p class="stack-intro">Kitty on a MacBook Air M4 is the main console, SSH'd out to the Arch desktop, ThinkPad T14, and Ubuntu server for everything else.</p>
</header> </header>
<div class="stack-layout"> <div class="stack-layout">
@ -418,7 +443,7 @@
<p>&copy; <span id="year">2026</span> Alex / Fi3w0</p> <p>&copy; <span id="year">2026</span> Alex / Fi3w0</p>
</footer> </footer>
<script src="js/app.js?v=5" defer></script> <script src="js/app.js?v=6" defer></script>
</body> </body>
</html> </html>