feat: polish featured project cards
This commit is contained in:
parent
98beb0cbf4
commit
ccdd2d6e40
2 changed files with 451 additions and 19 deletions
|
|
@ -2142,6 +2142,438 @@ code {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Product-led project cards: quieter surfaces, tighter hierarchy, and real
|
||||||
|
product evidence in place of the earlier oversized ASCII treatments. */
|
||||||
|
.current-project-tide {
|
||||||
|
min-height: 36rem;
|
||||||
|
border: 1px solid rgba(143, 212, 208, 0.55);
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 8% 100%, rgba(92, 196, 192, 0.16), transparent 28rem),
|
||||||
|
linear-gradient(135deg, #102832 0%, #101d26 58%, #0c171e 100%);
|
||||||
|
color: var(--text);
|
||||||
|
grid-template-columns: minmax(0, 1.4fr) minmax(21rem, 0.72fr);
|
||||||
|
box-shadow: 0 1.8rem 5rem rgba(3, 9, 13, 0.24);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide:hover {
|
||||||
|
transform: translateY(-0.2rem);
|
||||||
|
border-color: var(--cyan);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide::after {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 0;
|
||||||
|
right: 24%;
|
||||||
|
bottom: -14rem;
|
||||||
|
width: 44rem;
|
||||||
|
height: 25rem;
|
||||||
|
border: 1px solid rgba(143, 212, 208, 0.12);
|
||||||
|
border-radius: 50%;
|
||||||
|
box-shadow:
|
||||||
|
0 -2.5rem 0 rgba(143, 212, 208, 0.025),
|
||||||
|
0 -5rem 0 rgba(143, 212, 208, 0.025),
|
||||||
|
0 -7.5rem 0 rgba(143, 212, 208, 0.025);
|
||||||
|
content: "";
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-project-main {
|
||||||
|
padding: clamp(2rem, 4vw, 3.8rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-meta {
|
||||||
|
border-bottom-color: rgba(143, 212, 208, 0.3);
|
||||||
|
color: var(--muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-meta > span:last-child {
|
||||||
|
color: var(--cyan);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-meta i {
|
||||||
|
border-radius: 50%;
|
||||||
|
background: var(--lime);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-kicker {
|
||||||
|
margin: clamp(3.2rem, 7vw, 6rem) 0 0.9rem;
|
||||||
|
color: var(--cyan);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .tide-heading {
|
||||||
|
gap: clamp(0.8rem, 1.8vw, 1.4rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .tide-heading h3 {
|
||||||
|
color: var(--paper);
|
||||||
|
font-size: clamp(4.2rem, 7.4vw, 7.4rem);
|
||||||
|
line-height: 0.88;
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .tide-mark {
|
||||||
|
width: clamp(3rem, 4.5vw, 4.2rem);
|
||||||
|
height: clamp(3rem, 4.5vw, 4.2rem);
|
||||||
|
filter: drop-shadow(0 0.7rem 1rem rgba(60, 166, 182, 0.22));
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-project-main > p:not(.current-kicker) {
|
||||||
|
max-width: 50rem;
|
||||||
|
margin: 1.8rem 0 0;
|
||||||
|
color: #c7d4d2;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
line-height: 1.72;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tide-proof {
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
display: grid;
|
||||||
|
max-width: 48rem;
|
||||||
|
margin: 2rem 0 1.7rem;
|
||||||
|
border-top: 1px solid rgba(143, 212, 208, 0.32);
|
||||||
|
border-bottom: 1px solid rgba(143, 212, 208, 0.2);
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tide-proof div {
|
||||||
|
padding: 1rem 0.9rem 1rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tide-proof div + div {
|
||||||
|
padding-left: 1rem;
|
||||||
|
border-left: 1px solid rgba(143, 212, 208, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tide-proof strong,
|
||||||
|
.tide-proof span {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tide-proof strong {
|
||||||
|
color: var(--lime);
|
||||||
|
font-family: var(--display);
|
||||||
|
font-size: clamp(1.2rem, 2vw, 1.8rem);
|
||||||
|
font-weight: 400;
|
||||||
|
letter-spacing: -0.04em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tide-proof span {
|
||||||
|
margin-top: 0.2rem;
|
||||||
|
color: var(--muted);
|
||||||
|
font-size: 0.57rem;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-tags {
|
||||||
|
color: var(--muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-repo-link {
|
||||||
|
color: var(--text);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-roadmap {
|
||||||
|
z-index: 2;
|
||||||
|
padding: clamp(2rem, 3.2vw, 3rem);
|
||||||
|
border-left: 1px solid rgba(143, 212, 208, 0.26);
|
||||||
|
background: rgba(7, 18, 24, 0.42);
|
||||||
|
color: var(--text);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-roadmap > p {
|
||||||
|
color: var(--cyan);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-roadmap ol {
|
||||||
|
border-top-color: rgba(143, 212, 208, 0.55);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-roadmap li {
|
||||||
|
min-height: 6.2rem;
|
||||||
|
border-bottom-color: rgba(143, 212, 208, 0.2);
|
||||||
|
grid-template-columns: 1.7rem minmax(0, 1fr) auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-roadmap li > span {
|
||||||
|
color: #6ca3a7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-roadmap strong {
|
||||||
|
color: var(--text);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-roadmap small {
|
||||||
|
max-width: 28rem;
|
||||||
|
color: #9eb1b2;
|
||||||
|
line-height: 1.45;
|
||||||
|
overflow-wrap: anywhere;
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-roadmap li > b {
|
||||||
|
background: rgba(200, 238, 128, 0.12);
|
||||||
|
color: var(--lime);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-roadmap li:last-child > b {
|
||||||
|
background: rgba(240, 153, 110, 0.12);
|
||||||
|
color: var(--coral-bright);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-watermark {
|
||||||
|
right: auto;
|
||||||
|
bottom: -0.24em;
|
||||||
|
left: -0.04em;
|
||||||
|
color: rgba(143, 212, 208, 0.045);
|
||||||
|
font-size: clamp(10rem, 18vw, 17rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-visual-flux {
|
||||||
|
min-height: 36rem;
|
||||||
|
padding: 0;
|
||||||
|
border-color: rgba(186, 177, 238, 0.55);
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at 88% 12%, rgba(184, 146, 255, 0.2), transparent 24rem),
|
||||||
|
linear-gradient(145deg, #1a1d2a, #111821 72%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-visual-flux::after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-frame {
|
||||||
|
position: absolute;
|
||||||
|
top: 2.2rem;
|
||||||
|
right: 2.2rem;
|
||||||
|
bottom: 6.5rem;
|
||||||
|
left: 2.2rem;
|
||||||
|
display: grid;
|
||||||
|
min-width: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
border: 1px solid rgba(237, 241, 233, 0.28);
|
||||||
|
background: #0d1015;
|
||||||
|
box-shadow: 1rem 1rem 0 rgba(111, 92, 170, 0.14);
|
||||||
|
grid-template-rows: auto minmax(0, 1fr);
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-bar {
|
||||||
|
display: grid;
|
||||||
|
min-height: 2.9rem;
|
||||||
|
padding: 0 1rem;
|
||||||
|
border-bottom: 1px solid rgba(237, 241, 233, 0.16);
|
||||||
|
color: var(--muted);
|
||||||
|
font-family: var(--mono);
|
||||||
|
font-size: 0.58rem;
|
||||||
|
letter-spacing: 0.06em;
|
||||||
|
grid-template-columns: auto 1fr auto;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.9rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-bar > span {
|
||||||
|
display: flex;
|
||||||
|
gap: 0.35rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-bar i {
|
||||||
|
width: 0.55rem;
|
||||||
|
height: 0.55rem;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: var(--coral);
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-bar i:nth-child(2) {
|
||||||
|
background: var(--yellow);
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-bar i:nth-child(3) {
|
||||||
|
background: var(--lime);
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-bar b {
|
||||||
|
color: var(--text);
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-bar em {
|
||||||
|
color: var(--cyan);
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-visual-flux .flux-product-shot {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
min-height: 0;
|
||||||
|
border: 0;
|
||||||
|
filter: saturate(0.84) contrast(1.04);
|
||||||
|
object-fit: cover;
|
||||||
|
object-position: left center;
|
||||||
|
transform: none;
|
||||||
|
transition: filter 250ms ease, transform 500ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-visual-flux:hover .flux-product-shot {
|
||||||
|
filter: saturate(1) contrast(1.03);
|
||||||
|
transform: scale(1.012);
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-caption {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 3;
|
||||||
|
right: 2.2rem;
|
||||||
|
bottom: 1.5rem;
|
||||||
|
display: flex;
|
||||||
|
min-width: 18rem;
|
||||||
|
padding: 0.65rem 0.8rem;
|
||||||
|
border: 1px solid rgba(237, 241, 233, 0.25);
|
||||||
|
background: #171d27;
|
||||||
|
color: var(--text);
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-visual-flux .flux-product-caption img {
|
||||||
|
width: 2.8rem;
|
||||||
|
height: 2.8rem;
|
||||||
|
border-radius: 22%;
|
||||||
|
filter: none;
|
||||||
|
object-fit: contain;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-caption span,
|
||||||
|
.flux-product-caption strong,
|
||||||
|
.flux-product-caption small {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-caption strong {
|
||||||
|
font-family: var(--mono);
|
||||||
|
font-size: 0.68rem;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-caption small {
|
||||||
|
margin-top: 0.15rem;
|
||||||
|
color: var(--muted);
|
||||||
|
font-size: 0.55rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-visual-flux .image-label {
|
||||||
|
right: auto;
|
||||||
|
bottom: 1.8rem;
|
||||||
|
left: 2.2rem;
|
||||||
|
border-color: rgba(237, 241, 233, 0.22);
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-links {
|
||||||
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 68rem) {
|
||||||
|
.current-project-tide {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .current-roadmap {
|
||||||
|
border-top: 1px solid rgba(143, 212, 208, 0.26);
|
||||||
|
border-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-links {
|
||||||
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-links > *:nth-child(odd) {
|
||||||
|
padding-left: 0;
|
||||||
|
border-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-links > *:nth-child(n + 3) {
|
||||||
|
border-top: 2px solid var(--ink);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 52rem) {
|
||||||
|
.current-project-tide .current-kicker {
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.current-project-tide .tide-heading h3 {
|
||||||
|
font-size: clamp(3.2rem, 15vw, 5rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tide-proof {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tide-proof div,
|
||||||
|
.tide-proof div + div {
|
||||||
|
padding: 0.75rem 0;
|
||||||
|
border-top: 1px solid rgba(143, 212, 208, 0.18);
|
||||||
|
border-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tide-proof div:first-child {
|
||||||
|
border-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-visual-flux {
|
||||||
|
min-height: 27rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-frame {
|
||||||
|
top: 1rem;
|
||||||
|
right: 1rem;
|
||||||
|
bottom: 5.8rem;
|
||||||
|
left: 1rem;
|
||||||
|
box-shadow: 0.55rem 0.55rem 0 rgba(111, 92, 170, 0.14);
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-bar {
|
||||||
|
padding: 0 0.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-caption {
|
||||||
|
right: 1rem;
|
||||||
|
bottom: 0.9rem;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-visual-flux .image-label {
|
||||||
|
bottom: 1.2rem;
|
||||||
|
left: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-links {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-links > * + *,
|
||||||
|
.contact-links > *:nth-child(n + 3) {
|
||||||
|
padding-left: 0;
|
||||||
|
border-top: 0;
|
||||||
|
border-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 36rem) {
|
||||||
|
.current-project-tide .current-project-main,
|
||||||
|
.current-project-tide .current-roadmap {
|
||||||
|
padding: 1.35rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flux-product-caption {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.project-visual-flux .image-label {
|
||||||
|
right: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media print {
|
@media print {
|
||||||
.site-header,
|
.site-header,
|
||||||
.signal-strip {
|
.signal-strip {
|
||||||
|
|
|
||||||
38
index.html
38
index.html
|
|
@ -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&family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=Archivo+Black&family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&display=swap" rel="stylesheet">
|
||||||
<link rel="stylesheet" href="css/style.css?v=6">
|
<link rel="stylesheet" href="css/style.css?v=7">
|
||||||
<link rel="stylesheet" href="css/editorial.css?v=6">
|
<link rel="stylesheet" href="css/editorial.css?v=7">
|
||||||
|
|
||||||
<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">
|
||||||
|
|
@ -201,7 +201,7 @@
|
||||||
<p>Public repositories, installable mods, and rougher ideas that started on my own machines.</p>
|
<p>Public repositories, installable mods, and rougher ideas that started on my own machines.</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<article class="current-project reveal" aria-labelledby="tidewm-title">
|
<article class="current-project current-project-tide 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> Functional pre-release</span><span>v0.90 / daily-driver path</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>
|
||||||
|
|
@ -210,11 +210,16 @@
|
||||||
<h3 id="tidewm-title">TideWM</h3>
|
<h3 id="tidewm-title">TideWM</h3>
|
||||||
</div>
|
</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>
|
<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="tide-proof" aria-label="TideWM project facts">
|
||||||
|
<div><strong>2</strong><span>spatial engines</span></div>
|
||||||
|
<div><strong>~63 MB</strong><span>nine glass windows</span></div>
|
||||||
|
<div><strong>live</strong><span>config reload</span></div>
|
||||||
|
</div>
|
||||||
<div class="tag-row current-tags"><span>Smithay</span><span>Rust</span><span>Wayland</span><span>GPL-3.0</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">↗</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">↗</span></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="current-roadmap">
|
<div class="current-roadmap">
|
||||||
<p>Project shape</p>
|
<p>Core systems</p>
|
||||||
<ol>
|
<ol>
|
||||||
<li><span>01</span><div><strong>Classic</strong><small>BSP, master/stack, cascade, workspaces, Depth Deck</small></div><b>done</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>02</span><div><strong>Ocean</strong><small>One continuous 2D world with reefs, cameras, and bookmarks</small></div><b>done</b></li>
|
||||||
|
|
@ -223,7 +228,6 @@
|
||||||
</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>
|
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article class="project-feature project-feature-scorium reveal" data-repo="Scorium">
|
<article class="project-feature project-feature-scorium reveal" data-repo="Scorium">
|
||||||
|
|
@ -253,20 +257,15 @@
|
||||||
|
|
||||||
<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-product-frame">
|
||||||
<img class="flux-icon" src="img/flux-icon.png" alt="" width="256" height="256" loading="lazy">
|
<span class="flux-product-bar" aria-hidden="true"><span><i></i><i></i><i></i></span><b>Flux / Workbench</b><em>LOCAL</em></span>
|
||||||
<span class="flux-tags" aria-hidden="true"><span>SwiftUI</span><span>AppKit</span><span>Local-first</span></span>
|
<img class="flux-product-shot" src="img/flux-overview.jpg" alt="Flux media workbench showing a download ready to add to the processing queue" width="1600" height="922" loading="lazy">
|
||||||
<span class="flux-stack" aria-hidden="true">
|
|
||||||
<b>Tool stack</b>
|
|
||||||
<span class="flux-stack-row"><span>01</span><span>FFmpeg<small>transcode + inspect</small></span></span>
|
|
||||||
<span class="flux-stack-row"><span>02</span><span>yt-dlp<small>downloads</small></span></span>
|
|
||||||
<span class="flux-stack-row"><span>03</span><span>Apple Vision<small>subject isolation</small></span></span>
|
|
||||||
<span class="flux-stack-row"><span>04</span><span>Sparkle<small>auto updates</small></span></span>
|
|
||||||
</span>
|
</span>
|
||||||
<span class="flux-status" aria-hidden="true"><i></i> pre-flight checks passed</span>
|
<span class="flux-product-caption" aria-hidden="true">
|
||||||
<span class="flux-watermark" aria-hidden="true">FLUX</span>
|
<img src="img/flux-icon.png" alt="" width="256" height="256" loading="lazy">
|
||||||
<div class="flux-ascii" id="flux-ascii" aria-hidden="true"></div>
|
<span><strong>Native by design</strong><small>SwiftUI · AppKit · local processing</small></span>
|
||||||
<span class="image-label">macOS Tahoe / Apple silicon</span>
|
</span>
|
||||||
|
<span class="image-label">Current interface / macOS</span>
|
||||||
</a>
|
</a>
|
||||||
<div class="project-feature-copy">
|
<div class="project-feature-copy">
|
||||||
<div class="project-meta"><span>Native media workbench</span><span>SwiftUI / AppKit / macOS</span></div>
|
<div class="project-meta"><span>Native media workbench</span><span>SwiftUI / AppKit / macOS</span></div>
|
||||||
|
|
@ -428,6 +427,7 @@
|
||||||
<h2 id="contact-title" class="reveal">Say hello.</h2>
|
<h2 id="contact-title" class="reveal">Say hello.</h2>
|
||||||
<p class="contact-copy reveal">Linux, infrastructure, self-hosting, Minecraft tooling, or a strange project you cannot stop thinking about are all good reasons to message me.</p>
|
<p class="contact-copy reveal">Linux, infrastructure, self-hosting, Minecraft tooling, or a strange project you cannot stop thinking about are all good reasons to message me.</p>
|
||||||
<div class="contact-links reveal">
|
<div class="contact-links reveal">
|
||||||
|
<a href="mailto:alex@fiwlabs.dev"><span>Email</span><small>alex@fiwlabs.dev</small><b>→</b></a>
|
||||||
<a href="https://github.com/Fi3w0" target="_blank" rel="noreferrer"><span>GitHub</span><small>@Fi3w0</small><b>↗</b></a>
|
<a href="https://github.com/Fi3w0" target="_blank" rel="noreferrer"><span>GitHub</span><small>@Fi3w0</small><b>↗</b></a>
|
||||||
<a href="https://t.me/fi3w0" target="_blank" rel="noreferrer"><span>Telegram</span><small>@fi3w0</small><b>↗</b></a>
|
<a href="https://t.me/fi3w0" target="_blank" rel="noreferrer"><span>Telegram</span><small>@fi3w0</small><b>↗</b></a>
|
||||||
<button type="button" id="copy-discord"><span>Discord</span><small id="discord-label">fi3w0 - click to copy</small><b aria-hidden="true">+</b></button>
|
<button type="button" id="copy-discord"><span>Discord</span><small id="discord-label">fi3w0 - click to copy</small><b aria-hidden="true">+</b></button>
|
||||||
|
|
@ -443,7 +443,7 @@
|
||||||
<p>© <span id="year">2026</span> Alex / Fi3w0</p>
|
<p>© <span id="year">2026</span> Alex / Fi3w0</p>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="js/app.js?v=6" defer></script>
|
<script src="js/app.js?v=7" defer></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue