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;
}
/* 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 {
border-top-width: 3px;
border-bottom-width: 2px;
@ -1764,6 +1968,45 @@ code {
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 {
width: 94%;
}

View file

@ -5,10 +5,10 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<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: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:url" content="https://fiwlabs.dev/">
<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.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 rel="stylesheet" href="css/style.css?v=5">
<link rel="stylesheet" href="css/editorial.css?v=5">
<link rel="stylesheet" href="css/style.css?v=6">
<link rel="stylesheet" href="css/editorial.css?v=6">
<link rel="icon" href="/favicon.ico" sizes="any">
<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>
<h1 id="hero-title">Alex <span id="glitch-name" data-text="/ Fi3w0">/ Fi3w0</span></h1>
<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,
then grow until they are useful to somebody else too.
</p>
@ -92,15 +92,15 @@
</div>
<div class="terminal-body">
<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 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>
</div>
<div class="profile-chip">
<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>
</aside>
</section>
@ -173,8 +173,8 @@
hot reload, readable config files, updates that can fail safely, and logs that say what went wrong.
</p>
<p>
I write Bash, Go, Lua, and modify Java directly. For Rust, Swift, and larger Kotlin, TypeScript, Python,
and QML builds, I use AI agents heavily, then review, test, and integrate the result myself.
I write Bash, Go, Lua, and Python directly, and modify Java. For heavier Rust, Swift, Kotlin,
TypeScript, and QML builds, I direct AI agents, then own the design, review, testing, and integration.
</p>
<div class="language-line">
<span>Ukrainian + Russian</span><span>Spanish</span><span>English C1</span>
@ -203,29 +203,54 @@
<article class="current-project reveal" aria-labelledby="tidewm-title">
<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>
<div class="tide-heading">
<img class="tide-mark" src="img/tidewm-logo.png" alt="" width="48" height="48" loading="lazy">
<h3 id="tidewm-title">TideWM</h3>
</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>
<div class="tag-row current-tags"><span>AI-assisted</span><span>Smithay</span><span>Rust</span><span>Wayland</span></div>
<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>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>
</div>
<div class="current-roadmap">
<p>Project shape</p>
<ol>
<li><span>01</span><div><strong>Foundation</strong><small>Rust compositor built directly on Smithay</small></div><b>base</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>03</span><div><strong>Visual direction</strong><small>Water/aqua render effects, still pending</small></div><b>next</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>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>Ocean</strong><small>One continuous 2D world with reefs, cameras, and bookmarks</small></div><b>done</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>Next pass</strong><small>More hardware coverage, feel tuning, Nvidia native, AUR</small></div><b>testing</b></li>
</ol>
</div>
<span class="current-watermark" aria-hidden="true">TIDE</span>
<div class="tide-ascii" id="tide-ascii" aria-hidden="true"></div>
</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">
<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>
@ -244,7 +269,7 @@
<span class="image-label">macOS Tahoe / Apple silicon</span>
</a>
<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>
<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">
@ -370,7 +395,7 @@
<header class="section-heading reveal">
<p class="section-index">04 / Tools</p>
<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>
<div class="stack-layout">
@ -418,7 +443,7 @@
<p>&copy; <span id="year">2026</span> Alex / Fi3w0</p>
</footer>
<script src="js/app.js?v=5" defer></script>
<script src="js/app.js?v=6" defer></script>
</body>
</html>