From 1eef46467785f697d3df5f8a79775133de146c82 Mon Sep 17 00:00:00 2001 From: Michel de Graaf Date: Sat, 25 Jul 2026 00:54:49 +0200 Subject: [PATCH] refactor(website): cut the stock patterns out of the design MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Audited against the AI-design catalog. The world stays — the terminal aesthetic, the oxide accent, IBM Plex Mono are all chosen, and the audit cleared them. What went is the handful of defaults that had crept in underneath it. Eight feature cards at identical weight said every feature mattered equally. Search is what the client is for, so it takes a double-width cell and the grid drops to three up; eight cards plus that one double still comes out square. Each glyph sat in a 34px bordered square — the stock icon-in-a-chip treatment that ships with every component library. The glyphs are the real TUI's, so they now sit inline like the prompt markers they are. Callouts lose the coloured left rule. The catalog puts it plainly: a coloured left border is about as reliable a sign of generated design as an em-dash is in prose. The tone already lives in the label, which was saying the same thing twice. Thirteen arrow glyphs were typed into labels and link text. The leaving-the-site mark belongs to the control, not the copy, so Button draws it once, aria-hidden, and only when the link actually leaves. The "read more" arrows on internal links were pure flourish and are gone. The hero also drops "blazingly fast Rust", which TONE-OF-VOICE.md lists under banned, no exceptions. --- website/src/components/layout/nav.tsx | 5 ++++- website/src/components/ui/button.tsx | 8 ++++++++ website/src/components/ui/feature-card.tsx | 11 +++++++---- website/src/components/ui/panel.tsx | 10 +++++++--- website/src/pages/community.tsx | 8 ++++---- website/src/pages/docs.tsx | 8 ++++---- website/src/pages/home.tsx | 20 +++++++++++++------- website/src/pages/install.tsx | 2 +- 8 files changed, 48 insertions(+), 24 deletions(-) diff --git a/website/src/components/layout/nav.tsx b/website/src/components/layout/nav.tsx index 80c81df..3d48502 100644 --- a/website/src/components/layout/nav.tsx +++ b/website/src/components/layout/nav.tsx @@ -54,7 +54,10 @@ export const Nav = () => ( rel="noopener noreferrer" className="inline-flex h-[38px] items-center gap-1.5 rounded-md border border-hairline px-2.5 font-mono text-xs text-secondary hover:border-line hover:bg-[var(--bg-selection)] hover:text-primary sm:h-8" > - GitHub + GitHub + diff --git a/website/src/components/ui/button.tsx b/website/src/components/ui/button.tsx index 94166a9..bae2bd6 100644 --- a/website/src/components/ui/button.tsx +++ b/website/src/components/ui/button.tsx @@ -38,6 +38,11 @@ const isExternal = (href: string): boolean => /^https?:\/\//.test(href) * rather than a ` - + {
{alt.links.map((link) => ( ))}
@@ -247,7 +247,7 @@ export const Community = () => {

diff --git a/website/src/pages/docs.tsx b/website/src/pages/docs.tsx index a8bccaf..42dab38 100644 --- a/website/src/pages/docs.tsx +++ b/website/src/pages/docs.tsx @@ -187,7 +187,7 @@ export const Docs = () => { portmap tests whether your router will let peers connect back, worth running once.{' '} - More on being reachable → + More on being reachable

@@ -214,10 +214,10 @@ export const Docs = () => {
- - + +
diff --git a/website/src/pages/home.tsx b/website/src/pages/home.tsx index 78b74ec..51be5ce 100644 --- a/website/src/pages/home.tsx +++ b/website/src/pages/home.tsx @@ -117,8 +117,7 @@ export const Home = () => {

Search the network, share your files, browse someone’s collection, join - a room. It runs over ssh on the machine where your music already lives, and - it’s blazingly fast Rust 🦀. + a room. It runs over ssh on the machine where your music already lives.

@@ -126,7 +125,7 @@ export const Home = () => { Install - +
@@ -206,7 +205,7 @@ export const Home = () => { Reach for soulseek-rs-lib to build a custom client or an agent on the protocol directly.{' '} - Use the library → + Use the library

@@ -217,7 +216,7 @@ export const Home = () => { message, portmap. Point cron, a script, or an agent at them and read the output back. No daemon, no API to stand up.{' '} - See the commands → + See the commands

@@ -231,14 +230,21 @@ export const Home = () => { shell, so the same client works for scripting, cron jobs, and agents driving it programmatically. -
- {FEATURES.map((feature) => ( + {/* + Three up, not four, with search spanning two of them: it's the thing + the client is for, and eight cards at identical weight said the + opposite. Eight items plus that one double = nine cells, so the grid + still comes out square. + */} +
+ {FEATURES.map((feature, i) => ( {feature.body} diff --git a/website/src/pages/install.tsx b/website/src/pages/install.tsx index ecf0c95..c5dc603 100644 --- a/website/src/pages/install.tsx +++ b/website/src/pages/install.tsx @@ -122,7 +122,7 @@ export const Install = () => { opens.

- +

No Rust toolchain? Grab a prebuilt archive for your platform from the{' '}