From e4546e594081eb6198e1a88b9e8ce9e7360b8244 Mon Sep 17 00:00:00 2001 From: Michel de Graaf Date: Wed, 29 Jul 2026 11:24:18 +0200 Subject: [PATCH] docs(website): fold the docs page into five parts and drop the byline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The docs page carried three daemon sections in a row, each with its own numbered head, so the one story the daemon tells read as three. They are now sub-heads under 5 · the daemon. The agents section is gone, first run points at /install instead of assuming Homebrew, and the layout section shows the demo next to the pane descriptions rather than describing boxes nobody sees. The footer no longer signs the project with a personal name, and the TUI demo no longer shows a home directory that only exists on one machine. Community picks up the sharing etiquette cards and SeeleSeek; install and home lose a few em-dashes. --- website/public/agent-demo.svg | 2 +- website/src/components/layout/footer.tsx | 3 +- website/src/components/tui/data.ts | 2 +- website/src/lib/links.ts | 1 + website/src/lib/routes.ts | 2 +- website/src/pages/community.tsx | 171 ++++++++++++++------ website/src/pages/docs.tsx | 198 +++++++++++------------ website/src/pages/home.tsx | 55 ++++--- website/src/pages/install.tsx | 18 +-- 9 files changed, 253 insertions(+), 199 deletions(-) diff --git a/website/public/agent-demo.svg b/website/public/agent-demo.svg index 1bb0dcc..545112a 100644 --- a/website/public/agent-demo.svg +++ b/website/public/agent-demo.svg @@ -1 +1 @@ -▐▛███▜▌ClaudeCodev2.1.220▝▜█████▛▘▘▘▝▝~/src/rust/soulseek-rs─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────❯download the 4 latest tracks of Save Your Atoll using soulseek-rs❯--INSERT--⏺⏺I'llusethesoulseek-rsskillforthis.⏺Skill(soulseek-rs)⎿Successfullyloadedskill⏺Running1shellcommand…Running1shellcommand…⎿$soulseek-rswhoami--json2>&1;echo"EXIT:$status"You'veused82%ofyourweeklylimit·resets10am(Europe/Amsterdam)⏺Running2shellcommands…Running2shellcommands…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(3s)(ctrl+bctrl+b(twice)toruninbackground)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(4s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(5s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(7s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(8s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(9s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(11s)Pluginsupdated:3plugins·Run/reload-pluginstoapply⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(12s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(14s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(15s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(17s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(18s)⏺Running2shellcommands·19s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(19s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(21s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(22s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(23s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(25s)Ran2shellcommands⏺Two2026releasesexist(DisconnectEPandRidondanza).Letmepindownwhichisnewer.⎿$soulseek-rssearch'Save_Your_AtollRidondanza'--json--search-timeout20-n02>/dev/null|jq-r'.path'|sort-u;echo"EXIT:$status"⏺Running1shellcommand·3s…Running1shellcommand·4s…"EXIT:$status"(4s)Running1shellcommand·5s…"EXIT:$status"(5s)⏺Running1shellcommand·5s…Running1shellcommand·6s…"EXIT:$status"(6s)⏺Running1shellcommand·6s…Running1shellcommand·7s…Running1shellcommand·8s…"EXIT:$status"(8s)⏺Running1shellcommand·8s…Running1shellcommand·9s…"EXIT:$status"(9s)⏺Running1shellcommand·9s…Running1shellcommand·10s…⏺Running1shellcommand·11s…"EXIT:$status"(11s)Running1shellcommand·11s…⏺Running1shellcommand·12s…"EXIT:$status"(12s)Running1shellcommand·12s…⏺Running1shellcommand·13s…Running1shellcommand·14s…"EXIT:$status"(14s)⏺Running1shellcommand·14s…Running1shellcommand·15s…"EXIT:$status"(15s)⏺Running1shellcommand·15s…Running1shellcommand·16s…"EXIT:$status"(16s)⏺Running1shellcommand·16s…Running1shellcommand·17s…⏺Running1shellcommand·18s…"EXIT:$status"(18s)⏺Running1shellcommand·19s…Running1shellcommand·20s…"EXIT:$status"(20s)⏺Running1shellcommand·20s…Running1shellcommand·21s…Ran1shellcommand⏺Ridondanza(2026-05-23)isnewerthanDisconnectEP(2026-04-17).Its4SaveYourAtolloriginalsarethelatesttracks—the5thisanAlderaanremix.GrabbingthosefourinFLAC:⎿$soulseek-rssearch'Save_Your_AtollRidondanza'--json--search-timeout20-n02>/dev/null\|jq-c'select((.path|test("\\.flac$"))and(.path|test("ridondanza";"i"))and(.path|test("alderaan";"i")|not))'\|jq-s'sort_by(-.free_slot_n//0)'2>/dev/null||trueecho"---raw---"soulseek-rs…⏺Running1shellcommand·2s…soulseek-rs…(4s)soulseek-rs…(5s)soulseek-rs…(6s)soulseek-rs…(8s)soulseek-rs…(10s)⏺Running1shellcommand·10s…soulseek-rs…(11s)soulseek-rs…(12s)soulseek-rs…(14s)soulseek-rs…(15s)soulseek-rs…(16s)⏺Running1shellcommand·17s…soulseek-rs…(18s)soulseek-rs…(19s)soulseek-rs…(21s)Running1shellcommand·22s…soulseek-rs…(22s·2lines)⏺Running1shellcommand·22s…Running1shellcommand·23s…⏺Running1shellcommand·24s…soulseek-rs…(24s·2lines)Running1shellcommand·24s…⏺Running1shellcommand·25s…soulseek-rs…(25s·2lines)⏺Running1shellcommand·26s…soulseek-rs…(26s·2lines)Running1shellcommand·26s…Running1shellcommand·28s…soulseek-rs…(28s·2lines)⏺Running1shellcommand·28s…soulseek-rs…(29s·2lines)⏺Running1shellcommand·29s…Running1shellcommand·30s…soulseek-rs…(30s·2lines)⏺Running1shellcommand·30s…⏺Running1shellcommand·31s…soulseek-rs…(31s·2lines)Running1shellcommand·31s…Running1shellcommand·32s…Running1shellcommand·33s…soulseek-rs…(33s·2lines)Running1shellcommand·34s…soulseek-rs…(34s·2lines)⏺Running1shellcommand·34s…Running1shellcommand·35s…⏺Running1shellcommand·36s…soulseek-rs…(36s·2lines)⏺Running1shellcommand·37s…Running1shellcommand·38s…soulseek-rs…(38s·2lines)⏺Running1shellcommand·38s…Running1shellcommand·39s…soulseek-rs…(39s·2lines)⏺Running1shellcommand·39s…Running1shellcommand·40s…soulseek-rs…(40s·2lines)soulseek-rs…(42s·2lines)Running1shellcommand·42s…⏺Fourtracks,onepeer,freeslots,~132MBtotal.Downloading:|jq-c'select((.path|test("\\.flac$"))and(.path|test("alderaan";"i")|not)and.user=="beatrice.songbird2")'\|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(3s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(5s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(6s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(7s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(9s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(10s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(12s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(14s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(15s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(17s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(19s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(20s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(22s·2lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(23s·7lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(24s·7lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(26s·7lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(28s·7lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(30s·8lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(31s·9lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(32s·10lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(34s·13lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(35s·14lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(36s·15lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(38s·17lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(39s·19lines)⏺Running1shellcommand·41s…|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(41s·20lines)⏺Listing1directory,running2shellcommands…⎿$ls-lh/Users/micheldegraaf/Downloads/Soulseek/*santucci*.flacListed1directory,ran2shellcommands⏺Done—4filesin~/Downloads/Soulseek/,16-bitWEBFLAC,~126MBtotal:┌─────┬────────────┬──────┐│#│Track│Size│├─────┼────────────┼──────┤│01│Abisso│32M││02│Ridondanza│31M││03│Emersione│31M││04│Ascesa│32M│└─────┴────────────┴──────┘FromRidondanza(TS006,w/GabrieleSantucci)—released2026-05-23,theartist'snewest.VerifiednewerthantheDisconnectEP(2026-04-17)bycross-checkingscenefolderdates.├─────┼────────────┼──────┤❯ downloadthe4latesttracksofSaveYourAtollusingsoulseek-rs--INSERT--·Hashing…✳Hashing…✽Hashing…✶Hashing…·Levitating…✶Levitating…(2s·↓5tokens)✽Levitating…(3s·↓14tokens)✳Levitating…(3s·↓16tokens)·Levitating…(4s·↓16tokens·thinking)✽Levitating…(4s·↓16tokens·thinking)✶Levitating…(5s·↓16tokens·thinking)·Levitating…(6s·↓16tokens·thinking)✶Levitating…(6s·↓16tokens·thinkingeffort)✽Levitating…(7s·↓16tokens·thinking)✢Levitating…(7s·↓154tokens·thoughtfor3s)·Levitating…(8s·↓304tokens·thoughtfor3s)✻Levitating…(8s·↓341tokens·thoughtfor3s)✻Levitating…(9s·↓349tokens)·Levitating…(9s·↓404tokens)✳Levitating…(10s·↓412tokens)✽Levitating…(11s·↓419tokens)✳Levitating…(11s·↓419tokens·thinking)·Levitating…(12s·↓419tokens·thinking)✶Levitating…(12s·↓419tokens·thinkingeffort)✽Levitating…(13s·↓538tokens·thinking)✢Levitating…(13s·↓577tokens·thoughtfor1s)✢Levitating…(14s·↓603tokens·thoughtfor1s)✽Levitating…(14s·↓611tokens·thoughtfor1s)✶Levitating…(15s·↓614tokens)·Levitating…(16s·↓614tokens)⏺Running2shellcommands·2s…✶Levitating…(16s·↓614tokens)Running2shellcommands·3s…✽Levitating…(17s·↓679tokens)⏺Running2shellcommands·3s…✢Levitating…(17s·↓693tokens)Running2shellcommands·4s…✢Levitating…(18s·↓701tokens)⏺Running2shellcommands·4s…✽Levitating…(18s·↓703tokens)Running2shellcommands·5s…✶Levitating…(19s·↓703tokens)⏺Running2shellcommands·5s…·Levitating…(19s·↓703tokens)⏺Running2shellcommands·6s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(6s)✳Levitating…(20s·↓703tokens)Running2shellcommands·7s…✽Levitating…(20s·↓703tokens)⏺Running2shellcommands·7s…✳Levitating…(21s·↓703tokens)Running2shellcommands·8s…·Levitating…(22s·↓703tokens)⏺Running2shellcommands·8s…✻Levitating…(22s·↓703tokens)Running2shellcommands·9s…✻Levitating…(23s·↓703tokens)⏺Running2shellcommands·9s…·Levitating…(23s·↓703tokens)Running2shellcommands·10s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(10s)✳Levitating…(24s·↓703tokens)⏺Running2shellcommands·11s…✽Levitating…(25s·↓703tokens)Running2shellcommands·11s…✳Levitating…(25s·↓703tokens)⏺Running2shellcommands·12s…✢Levitating…(26s·↓703tokens)Running2shellcommands·12s…✻Levitating…(26s·↓703tokens)⏺Running2shellcommands·13s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(13s)✶Levitating…(27s·↓703tokens)Running2shellcommands·14s…·Levitating…(28s·↓703tokens)⏺Running2shellcommands·14s…✶Levitating…(28s·↓703tokens)Running2shellcommands·15s…✻Levitating…(29s·↓703tokens)⏺Running2shellcommands·15s…·Levitating…(29s·↓703tokens)Running2shellcommands·16s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(16s)✳Levitating…(30s·↓703tokens)⏺Running2shellcommands·17s…✽Levitating…(31s·↓703tokens)Running2shellcommands·17s…✳Levitating…(31s·↓703tokens)⏺Running2shellcommands·18s…·Levitating…(32s·↓703tokens)Running2shellcommands·18s…✶Levitating…(32s·↓703tokens)✽Levitating…(33s·↓703tokens)·Levitating…(33s·↓703tokens)Running2shellcommands·20s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(20s)✳Levitating…(34s·↓703tokens)⏺Running2shellcommands·21s…✽Levitating…(34s·↓703tokens)Running2shellcommands·21s…✶Levitating…(35s·↓703tokens)⏺Running2shellcommands·22s…·Levitating…(36s·↓703tokens)Running2shellcommands·22s…✻Levitating…(36s·↓703tokens)⏺Running2shellcommands·23s…✻Levitating…(37s·↓703tokens)Running2shellcommands·23s…·Levitating…(37s·↓703tokens)⏺Running2shellcommands·24s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(24s)✳Levitating…(38s·↓703tokens)Running2shellcommands·25s…✽Levitating…(39s·↓703tokens)⏺Running2shellcommands·25s…✳Levitating…(39s·↓703tokens)✢Levitating…(40s·↓703tokens)✻Levitating…(40s·↓703tokens)✻Levitating…(41s·↓703tokens·thinking)·Levitating…(41s·↓703tokens·thinking)✳Levitating…(42s·↓703tokens·thinkingeffort)✽Levitating…(42s·↓703tokens·thinking)✳Levitating…(43s·↓703tokens·thinking)·Levitating…(44s·↓703tokens·thinking)✻Levitating…(44s·↓703tokens·thinkingeffort)✻Levitating…(45s·↓703tokens·thinking)·Levitating…(45s·↓703tokens·thinking)✳Levitating…(46s·↓703tokens·thinkingeffort)✽Levitating…(46s·↓703tokens·thinking)✳Levitating…(47s·↓703tokens·thinking)·Levitating…(48s·↓703tokens·thinking)✻Levitating…(48s·↓703tokens·thinkingeffort)✻Levitating…(49s·↓703tokens·thinking)·Levitating…(49s·↓703tokens·thinking)✳Levitating…(50s·↓703tokens·thinkingeffort)✽Levitating…(50s·↓703tokens·thinking)✶Levitating…(51s·↓703tokens·stillthinking)·Levitating…(52s·↓791tokens·thoughtfor10s)✻Levitating…(52s·↓928tokens·thoughtfor10s)✻Levitating…(53s·↓1.1ktokens·thoughtfor10s)✢Levitating…(53s·↓1.2ktokens·thoughtfor10s)✳Levitating…(54s·↓1.4ktokens)✽Levitating…(55s·↓1.5ktokens)✳Levitating…(55s·↓1.5ktokens)·Levitating…(56s·↓1.5ktokens)Running1shellcommand·2s…✻Levitating…(56s·↓1.5ktokens)"EXIT:$status"(3s)✻Levitating…(57s·↓1.7ktokens)✢Levitating…(57s·↓1.7ktokens)⏺Running1shellcommand·4s…✳Levitating…(58s·↓1.7ktokens)✽Levitating…(59s·↓1.7ktokens)✳Levitating…(59s·↓1.7ktokens)·Levitating…(1m0s·↓1.7ktokens)✻Levitating…(1m1s·↓1.7ktokens)"EXIT:$status"(7s)✽Levitating…(1m1s·↓1.7ktokens)✢Levitating…(1m2s·↓1.7ktokens)✢Levitating…(1m2s·↓1.7ktokens)✽Levitating…(1m3s·↓1.7ktokens)✳Levitating…(1m4s·↓1.7ktokens)"EXIT:$status"(10s)·Levitating…(1m4s·↓1.7ktokens)✻Levitating…(1m5s·↓1.7ktokens)✻Levitating…(1m5s·↓1.7ktokens)·Levitating…(1m6s·↓1.7ktokens)✳Levitating…(1m6s·↓1.7ktokens)"EXIT:$status"(13s)✽Levitating…(1m7s·↓1.7ktokens)✢Levitating…(1m8s·↓1.7ktokens)✳Levitating…(1m8s·↓1.7ktokens)✽Levitating…(1m9s·↓1.7ktokens)✢Levitating…(1m10s·↓1.7ktokens)✢Levitating…(1m10s·↓1.7ktokens)✽Levitating…(1m11s·↓1.7ktokens)"EXIT:$status"(17s)✶Levitating…(1m11s·↓1.7ktokens)·Levitating…(1m12s·↓1.7ktokens)Running1shellcommand·18s…✳Levitating…(1m13s·↓1.7ktokens)"EXIT:$status"(19s)✻Levitating…(1m13s·↓1.7ktokens)✢Levitating…(1m14s·↓1.7ktokens)✳Levitating…(1m14s·↓1.7ktokens)"EXIT:$status"(21s)✽Levitating…(1m15s·↓1.7ktokens)✳Levitating…(1m16s·↓1.7ktokens)·Levitating…(1m16s·↓1.7ktokens)✻Levitating…(1m17s·↓1.7ktokens)✻Levitating…(1m17s·↓1.7ktokens)·Levitating…(1m18s·↓1.7ktokens·thinking)✳Levitating…(1m18s·↓1.7ktokens·thinkingeffort)✽Levitating…(1m19s·↓1.7ktokens·thinking)✳Levitating…(1m20s·↓1.7ktokens·thinking)·Levitating…(1m20s·↓1.7ktokens·thinking)✶Levitating…(1m21s·↓1.7ktokens·thinkingeffort)✻Levitating…(1m21s·↓1.7ktokens·thinking)·Levitating…(1m22s·↓1.7ktokens·thinking)✳Levitating…(1m22s·↓1.7ktokens·thinkingeffort)✽Levitating…(1m23s·↓1.7ktokens·thinking)✳Levitating…(1m24s·↓1.7ktokens·thinking)·Levitating…(1m24s·↓1.7ktokens·thinking)✻Levitating…(1m25s·↓1.7ktokens·thinkingeffort)✻Levitating…(1m25s·↓1.7ktokens·thinking)·Levitating…(1m26s·↓1.7ktokens·thinking)✢Levitating…(1m26s·↓1.8ktokens·thoughtfor9s)✽Levitating…(1m27s·↓2.0ktokens·thoughtfor9s)✶Levitating…(1m28s·↓2.1ktokens·thoughtfor9s)·Levitating…(1m28s·↓2.2ktokens·thoughtfor9s)✳Levitating…(1m29s·↓2.3ktokens)✽Levitating…(1m29s·↓2.4ktokens)✢Levitating…(1m30s·↓2.5ktokens)✳Levitating…(1m30s·↓2.5ktokens)✽Levitating…(1m31s·↓2.5ktokens)✢Levitating…(1m32s·↓2.5ktokens)·Levitating…(1m32s·↓2.6ktokens)✻Levitating…(1m33s·↓2.6ktokens)✶Levitating…(1m33s·↓2.6ktokens)·Levitating…(1m34s·↓2.6ktokens)soulseek-rs…(3s)✻Levitating…(1m35s·↓2.7ktokens)✽Levitating…(1m35s·↓2.8ktokens)·Levitating…(1m36s·↓2.8ktokens)✳Levitating…(1m36s·↓2.9ktokens)✽Levitating…(1m37s·↓2.9ktokens)✳Levitating…(1m38s·↓2.9ktokens)·Levitating…(1m38s·↓2.9ktokens)soulseek-rs…(7s)✻Levitating…(1m39s·↓2.9ktokens)✽Levitating…(1m39s·↓2.9ktokens)·Levitating…(1m40s·↓2.9ktokens)soulseek-rs…(9s)✳Levitating…(1m40s·↓2.9ktokens)✽Levitating…(1m41s·↓2.9ktokens)✢Levitating…(1m42s·↓2.9ktokens)✳Levitating…(1m42s·↓2.9ktokens)✽Levitating…(1m43s·↓2.9ktokens)✳Levitating…(1m44s·↓2.9ktokens)·Levitating…(1m44s·↓2.9ktokens)Running1shellcommand·13s…soulseek-rs…(13s)✻Levitating…(1m45s·↓2.9ktokens)✻Levitating…(1m45s·↓2.9ktokens)·Levitating…(1m46s·↓2.9ktokens)✳Levitating…(1m46s·↓2.9ktokens)✽Levitating…(1m47s·↓2.9ktokens)✳Levitating…(1m48s·↓2.9ktokens)·Levitating…(1m48s·↓2.9ktokens)soulseek-rs…(17s)✻Levitating…(1m49s·↓2.9ktokens)✽Levitating…(1m49s·↓2.9ktokens)✢Levitating…(1m50s·↓2.9ktokens)✢Levitating…(1m50s·↓2.9ktokens)✽Levitating…(1m51s·↓2.9ktokens)soulseek-rs…(20s)✢Levitating…(1m52s·↓2.9ktokens)·Levitating…(1m52s·↓2.9ktokens)⏺Running1shellcommand·21s…✽Levitating…(1m53s·↓2.9ktokens)✻Levitating…(1m53s·↓2.9ktokens)·Levitating…(1m54s·↓2.9ktokens)soulseek-rs…(23s·2lines)✳Levitating…(1m54s·↓2.9ktokens)✽Levitating…(1m55s·↓2.9ktokens)·Levitating…(1m56s·↓2.9ktokens)✳Levitating…(1m56s·↓2.9ktokens)Running1shellcommand·25s…✽Levitating…(1m57s·↓2.9ktokens)✳Levitating…(1m58s·↓2.9ktokens)·Levitating…(1m58s·↓2.9ktokens)⏺Running1shellcommand·27s…soulseek-rs…(27s·2lines)✻Levitating…(1m59s·↓2.9ktokens)✻Levitating…(1m59s·↓2.9ktokens)·Levitating…(2m0s·↓2.9ktokens)Running1shellcommand·29s…✳Levitating…(2m0s·↓2.9ktokens)✽Levitating…(2m1s·↓2.9ktokens)✳Levitating…(2m2s·↓2.9ktokens)·Levitating…(2m2s·↓2.9ktokens)✶Levitating…(2m3s·↓2.9ktokens)✻Levitating…(2m3s·↓2.9ktokens)soulseek-rs…(32s·2lines)✢Levitating…(2m4s·↓2.9ktokens)✳Levitating…(2m4s·↓2.9ktokens)✽Levitating…(2m5s·↓2.9ktokens)✳Levitating…(2m6s·↓2.9ktokens)·Levitating…(2m6s·↓2.9ktokens)soulseek-rs…(35s·2lines)✻Levitating…(2m7s·↓2.9ktokens)✽Levitating…(2m7s·↓2.9ktokens)Running1shellcommand·36s…·Levitating…(2m8s·↓2.9ktokens)soulseek-rs…(37s·2lines)✳Levitating…(2m9s·↓2.9ktokens)✽Levitating…(2m9s·↓2.9ktokens)·Levitating…(2m10s·↓2.9ktokens)✳Levitating…(2m10s·↓2.9ktokens)✽Levitating…(2m11s·↓2.9ktokens)✳Levitating…(2m12s·↓2.9ktokens)⏺Running1shellcommand·40s…·Levitating…(2m12s·↓2.9ktokens)Running1shellcommand·41s…soulseek-rs…(41s·2lines)✻Levitating…(2m13s·↓2.9ktokens)⏺Running1shellcommand·42s…✻Levitating…(2m13s·↓2.9ktokens)·Levitating…(2m14s·↓2.9ktokens)✳Levitating…(2m14s·↓2.9ktokens)✽Levitating…(2m15s·↓2.9ktokens)✳Levitating…(2m16s·↓2.9ktokens)·Levitating…(2m16s·↓2.9ktokens·thinking)✻Levitating…(2m17s·↓2.9ktokens·thinkingeffort)✻Levitating…(2m17s·↓3.0ktokens·thinking)✢Levitating…(2m18s·↓3.0ktokens·thoughtfor1s)✳Levitating…(2m18s·↓3.0ktokens·thoughtfor1s)✽Levitating…(2m19s·↓3.1ktokens·thoughtfor1s)✳Levitating…(2m20s·↓3.1ktokens·thoughtfor1s)·Levitating…(2m20s·↓3.1ktokens)✻Levitating…(2m21s·↓3.1ktokens)✻Levitating…(2m21s·↓3.1ktokens)Running1shellcommand·3s…·Levitating…(2m22s·↓3.2ktokens)✳Levitating…(2m22s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(4s)✽Levitating…(2m23s·↓3.2ktokens)✢Levitating…(2m24s·↓3.2ktokens)✢Levitating…(2m24s·↓3.2ktokens)✽Levitating…(2m25s·↓3.2ktokens)✶Levitating…(2m25s·↓3.2ktokens)⏺Running1shellcommand·7s…·Levitating…(2m26s·↓3.2ktokens)✶Levitating…(2m27s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(8s)✻Levitating…(2m27s·↓3.2ktokens)·Levitating…(2m28s·↓3.2ktokens)✳Levitating…(2m28s·↓3.2ktokens)✽Levitating…(2m29s·↓3.2ktokens)✳Levitating…(2m30s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(11s)✢Levitating…(2m30s·↓3.2ktokens)✻Levitating…(2m31s·↓3.2ktokens)✶Levitating…(2m31s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(13s)✢Levitating…(2m32s·↓3.2ktokens)✻Levitating…(2m33s·↓3.2ktokens)✻Levitating…(2m33s·↓3.2ktokens)✢Levitating…(2m34s·↓3.2ktokens)✳Levitating…(2m34s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(16s)✻Levitating…(2m35s·↓3.2ktokens)·Levitating…(2m36s·↓3.2ktokens)✳Levitating…(2m36s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(18s)✻Levitating…(2m37s·↓3.2ktokens)Running1shellcommand·19s…·Levitating…(2m38s·↓3.2ktokens)✳Levitating…(2m38s·↓3.2ktokens)✽Levitating…(2m39s·↓3.2ktokens)✶Levitating…(2m39s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(21s)·Levitating…(2m40s·↓3.2ktokens)✻Levitating…(2m41s·↓3.2ktokens)✻Levitating…(2m41s·↓3.2ktokens)⏺Running1shellcommand·23s…·Levitating…(2m42s·↓3.2ktokens)✳Levitating…(2m42s·↓3.2ktokens)✽Levitating…(2m43s·↓3.2ktokens)✳Levitating…(2m44s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(25s·7lines)✢Levitating…(2m44s·↓3.2ktokens)✽Levitating…(2m45s·↓3.2ktokens)✶Levitating…(2m45s·↓3.2ktokens)Running1shellcommand·27s…|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(27s·7lines)·Levitating…(2m46s·↓3.2ktokens)✽Levitating…(2m47s·↓3.2ktokens)✶Levitating…(2m47s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(29s·7lines)·Levitating…(2m48s·↓3.2ktokens)✻Levitating…(2m49s·↓3.2ktokens)✻Levitating…(2m49s·↓3.2ktokens)·Levitating…(2m50s·↓3.2ktokens)✳Levitating…(2m50s·↓3.2ktokens)✽Levitating…(2m51s·↓3.2ktokens)⏺Running1shellcommand·32s…✶Levitating…(2m52s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(33s·12lines)·Levitating…(2m52s·↓3.2ktokens)✻Levitating…(2m53s·↓3.2ktokens)✻Levitating…(2m53s·↓3.2ktokens)⏺Running1shellcommand·35s…·Levitating…(2m54s·↓3.2ktokens)✳Levitating…(2m54s·↓3.2ktokens)✽Levitating…(2m55s·↓3.2ktokens)✳Levitating…(2m56s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(37s·16lines)·Levitating…(2m56s·↓3.2ktokens)✻Levitating…(2m57s·↓3.2ktokens)✻Levitating…(2m57s·↓3.2ktokens)·Levitating…(2m58s·↓3.2ktokens)✳Levitating…(2m58s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(40s·20lines)✽Levitating…(2m59s·↓3.2ktokens)✢Levitating…(3m0s·↓3.2ktokens)✳Levitating…(3m0s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(42s·21lines)✽Levitating…(3m1s·↓3.2ktokens)✳Levitating…(3m2s·↓3.2ktokens)·Levitating…(3m2s·↓3.2ktokens)✻Levitating…(3m3s·↓3.2ktokens)✻Levitating…(3m3s·↓3.2ktokens)·Levitating…(3m4s·↓3.3ktokens·thinking)✢Levitating…(3m4s·↓3.3ktokens·thinkingeffort)Listing1directory,running2shellcommands…✽Levitating…(3m5s·↓3.3ktokens·thinking)✳Levitating…(3m6s·↓3.3ktokens·thoughtfor1s)✢Levitating…(3m6s·↓3.3ktokens·thoughtfor1s)┌─────┬────────┬──────┐│#│Track│Size│├─────┼────────┼──────┤│01│Abisso│32M│└─────┴────────┴──────┘⏺Done—4filesin~/Downloads/Soulseek/,16-bitWEBFLAC,~├─────│Track│Size│Skipped:the5thtrack,Ridondanza(AlderaanRemix)—aremixbysomeoneelse,sonotaSaveYourAtolltrack.Saythewordifyouwantit,ortheDisconnectEP's4tracksinstead.✻Brewedfor3m9s❯⏺Ridondanza(2026-05-23)isnewerthanDisconnectEP(2026-04-17).Its4SaveYourAtolloriginalsarethelatesttracks—the5thisanAlderaanremix.GrabbingthosefourinFLAC:Ran1shellcommand⏺Fourtracks,onepeer,freeslots,~132MBtotal.Downloading:Listed1directory,ran2shellcommands⏺Done—4filesin~/Downloads/Soulseek/,16-bitWEBFLAC,~126MBtotal:┌─────┬────────────┬──────┐│#│Track│Size││01│Abisso│32M││02│Ridondanza│31M││03│Emersione│31M││04│Ascesa│32M│└─────┴────────────┴──────┘FromRidondanza(TS006,w/GabrieleSantucci)—released2026-05-23,theartist'snewest.VerifiednewerthantheDisconnectEP(2026-04-17)bycross-checkingscenefolderdates.Skipped:the5thtrack,Ridondanza(AlderaanRemix)—aremixbysomeoneelse,sonotaSaveYourAtolltrack.Saythewordifyouwantit,ortheDisconnectEP's4tracksinstead.✻Brewedfor3m9s───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────❯────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── \ No newline at end of file +▐▛███▜▌ClaudeCodev2.1.220▝▜█████▛▘▘▘▝▝~/src/rust/soulseek-rs─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────❯download the 4 latest tracks of Save Your Atoll using soulseek-rs❯--INSERT--⏺⏺I'llusethesoulseek-rsskillforthis.⏺Skill(soulseek-rs)⎿Successfullyloadedskill⏺Running1shellcommand…Running1shellcommand…⎿$soulseek-rswhoami--json2>&1;echo"EXIT:$status"You'veused82%ofyourweeklylimit·resets10am(Europe/Amsterdam)⏺Running2shellcommands…Running2shellcommands…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(3s)(ctrl+bctrl+b(twice)toruninbackground)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(4s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(5s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(7s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(8s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(9s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(11s)Pluginsupdated:3plugins·Run/reload-pluginstoapply⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(12s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(14s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(15s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(17s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(18s)⏺Running2shellcommands·19s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(19s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(21s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(22s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(23s)⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(25s)Ran2shellcommands⏺Two2026releasesexist(DisconnectEPandRidondanza).Letmepindownwhichisnewer.⎿$soulseek-rssearch'Save_Your_AtollRidondanza'--json--search-timeout20-n02>/dev/null|jq-r'.path'|sort-u;echo"EXIT:$status"⏺Running1shellcommand·3s…Running1shellcommand·4s…"EXIT:$status"(4s)Running1shellcommand·5s…"EXIT:$status"(5s)⏺Running1shellcommand·5s…Running1shellcommand·6s…"EXIT:$status"(6s)⏺Running1shellcommand·6s…Running1shellcommand·7s…Running1shellcommand·8s…"EXIT:$status"(8s)⏺Running1shellcommand·8s…Running1shellcommand·9s…"EXIT:$status"(9s)⏺Running1shellcommand·9s…Running1shellcommand·10s…⏺Running1shellcommand·11s…"EXIT:$status"(11s)Running1shellcommand·11s…⏺Running1shellcommand·12s…"EXIT:$status"(12s)Running1shellcommand·12s…⏺Running1shellcommand·13s…Running1shellcommand·14s…"EXIT:$status"(14s)⏺Running1shellcommand·14s…Running1shellcommand·15s…"EXIT:$status"(15s)⏺Running1shellcommand·15s…Running1shellcommand·16s…"EXIT:$status"(16s)⏺Running1shellcommand·16s…Running1shellcommand·17s…⏺Running1shellcommand·18s…"EXIT:$status"(18s)⏺Running1shellcommand·19s…Running1shellcommand·20s…"EXIT:$status"(20s)⏺Running1shellcommand·20s…Running1shellcommand·21s…Ran1shellcommand⏺Ridondanza(2026-05-23)isnewerthanDisconnectEP(2026-04-17).Its4SaveYourAtolloriginalsarethelatesttracks—the5thisanAlderaanremix.GrabbingthosefourinFLAC:⎿$soulseek-rssearch'Save_Your_AtollRidondanza'--json--search-timeout20-n02>/dev/null\|jq-c'select((.path|test("\\.flac$"))and(.path|test("ridondanza";"i"))and(.path|test("alderaan";"i")|not))'\|jq-s'sort_by(-.free_slot_n//0)'2>/dev/null||trueecho"---raw---"soulseek-rs…⏺Running1shellcommand·2s…soulseek-rs…(4s)soulseek-rs…(5s)soulseek-rs…(6s)soulseek-rs…(8s)soulseek-rs…(10s)⏺Running1shellcommand·10s…soulseek-rs…(11s)soulseek-rs…(12s)soulseek-rs…(14s)soulseek-rs…(15s)soulseek-rs…(16s)⏺Running1shellcommand·17s…soulseek-rs…(18s)soulseek-rs…(19s)soulseek-rs…(21s)Running1shellcommand·22s…soulseek-rs…(22s·2lines)⏺Running1shellcommand·22s…Running1shellcommand·23s…⏺Running1shellcommand·24s…soulseek-rs…(24s·2lines)Running1shellcommand·24s…⏺Running1shellcommand·25s…soulseek-rs…(25s·2lines)⏺Running1shellcommand·26s…soulseek-rs…(26s·2lines)Running1shellcommand·26s…Running1shellcommand·28s…soulseek-rs…(28s·2lines)⏺Running1shellcommand·28s…soulseek-rs…(29s·2lines)⏺Running1shellcommand·29s…Running1shellcommand·30s…soulseek-rs…(30s·2lines)⏺Running1shellcommand·30s…⏺Running1shellcommand·31s…soulseek-rs…(31s·2lines)Running1shellcommand·31s…Running1shellcommand·32s…Running1shellcommand·33s…soulseek-rs…(33s·2lines)Running1shellcommand·34s…soulseek-rs…(34s·2lines)⏺Running1shellcommand·34s…Running1shellcommand·35s…⏺Running1shellcommand·36s…soulseek-rs…(36s·2lines)⏺Running1shellcommand·37s…Running1shellcommand·38s…soulseek-rs…(38s·2lines)⏺Running1shellcommand·38s…Running1shellcommand·39s…soulseek-rs…(39s·2lines)⏺Running1shellcommand·39s…Running1shellcommand·40s…soulseek-rs…(40s·2lines)soulseek-rs…(42s·2lines)Running1shellcommand·42s…⏺Fourtracks,onepeer,freeslots,~132MBtotal.Downloading:|jq-c'select((.path|test("\\.flac$"))and(.path|test("alderaan";"i")|not)and.user=="beatrice.songbird2")'\|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(3s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(5s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(6s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(7s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(9s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(10s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(12s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(14s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(15s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(17s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(19s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(20s)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(22s·2lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(23s·7lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(24s·7lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(26s·7lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(28s·7lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(30s·8lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(31s·9lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(32s·10lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(34s·13lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(35s·14lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(36s·15lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(38s·17lines)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(39s·19lines)⏺Running1shellcommand·41s…|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(41s·20lines)⏺Listing1directory,running2shellcommands…⎿$ls-lh~/Downloads/Soulseek/*santucci*.flacListed1directory,ran2shellcommands⏺Done—4filesin~/Downloads/Soulseek/,16-bitWEBFLAC,~126MBtotal:┌─────┬────────────┬──────┐│#│Track│Size│├─────┼────────────┼──────┤│01│Abisso│32M││02│Ridondanza│31M││03│Emersione│31M││04│Ascesa│32M│└─────┴────────────┴──────┘FromRidondanza(TS006,w/GabrieleSantucci)—released2026-05-23,theartist'snewest.VerifiednewerthantheDisconnectEP(2026-04-17)bycross-checkingscenefolderdates.├─────┼────────────┼──────┤❯ downloadthe4latesttracksofSaveYourAtollusingsoulseek-rs--INSERT--·Hashing…✳Hashing…✽Hashing…✶Hashing…·Levitating…✶Levitating…(2s·↓5tokens)✽Levitating…(3s·↓14tokens)✳Levitating…(3s·↓16tokens)·Levitating…(4s·↓16tokens·thinking)✽Levitating…(4s·↓16tokens·thinking)✶Levitating…(5s·↓16tokens·thinking)·Levitating…(6s·↓16tokens·thinking)✶Levitating…(6s·↓16tokens·thinkingeffort)✽Levitating…(7s·↓16tokens·thinking)✢Levitating…(7s·↓154tokens·thoughtfor3s)·Levitating…(8s·↓304tokens·thoughtfor3s)✻Levitating…(8s·↓341tokens·thoughtfor3s)✻Levitating…(9s·↓349tokens)·Levitating…(9s·↓404tokens)✳Levitating…(10s·↓412tokens)✽Levitating…(11s·↓419tokens)✳Levitating…(11s·↓419tokens·thinking)·Levitating…(12s·↓419tokens·thinking)✶Levitating…(12s·↓419tokens·thinkingeffort)✽Levitating…(13s·↓538tokens·thinking)✢Levitating…(13s·↓577tokens·thoughtfor1s)✢Levitating…(14s·↓603tokens·thoughtfor1s)✽Levitating…(14s·↓611tokens·thoughtfor1s)✶Levitating…(15s·↓614tokens)·Levitating…(16s·↓614tokens)⏺Running2shellcommands·2s…✶Levitating…(16s·↓614tokens)Running2shellcommands·3s…✽Levitating…(17s·↓679tokens)⏺Running2shellcommands·3s…✢Levitating…(17s·↓693tokens)Running2shellcommands·4s…✢Levitating…(18s·↓701tokens)⏺Running2shellcommands·4s…✽Levitating…(18s·↓703tokens)Running2shellcommands·5s…✶Levitating…(19s·↓703tokens)⏺Running2shellcommands·5s…·Levitating…(19s·↓703tokens)⏺Running2shellcommands·6s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(6s)✳Levitating…(20s·↓703tokens)Running2shellcommands·7s…✽Levitating…(20s·↓703tokens)⏺Running2shellcommands·7s…✳Levitating…(21s·↓703tokens)Running2shellcommands·8s…·Levitating…(22s·↓703tokens)⏺Running2shellcommands·8s…✻Levitating…(22s·↓703tokens)Running2shellcommands·9s…✻Levitating…(23s·↓703tokens)⏺Running2shellcommands·9s…·Levitating…(23s·↓703tokens)Running2shellcommands·10s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(10s)✳Levitating…(24s·↓703tokens)⏺Running2shellcommands·11s…✽Levitating…(25s·↓703tokens)Running2shellcommands·11s…✳Levitating…(25s·↓703tokens)⏺Running2shellcommands·12s…✢Levitating…(26s·↓703tokens)Running2shellcommands·12s…✻Levitating…(26s·↓703tokens)⏺Running2shellcommands·13s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(13s)✶Levitating…(27s·↓703tokens)Running2shellcommands·14s…·Levitating…(28s·↓703tokens)⏺Running2shellcommands·14s…✶Levitating…(28s·↓703tokens)Running2shellcommands·15s…✻Levitating…(29s·↓703tokens)⏺Running2shellcommands·15s…·Levitating…(29s·↓703tokens)Running2shellcommands·16s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(16s)✳Levitating…(30s·↓703tokens)⏺Running2shellcommands·17s…✽Levitating…(31s·↓703tokens)Running2shellcommands·17s…✳Levitating…(31s·↓703tokens)⏺Running2shellcommands·18s…·Levitating…(32s·↓703tokens)Running2shellcommands·18s…✶Levitating…(32s·↓703tokens)✽Levitating…(33s·↓703tokens)·Levitating…(33s·↓703tokens)Running2shellcommands·20s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(20s)✳Levitating…(34s·↓703tokens)⏺Running2shellcommands·21s…✽Levitating…(34s·↓703tokens)Running2shellcommands·21s…✶Levitating…(35s·↓703tokens)⏺Running2shellcommands·22s…·Levitating…(36s·↓703tokens)Running2shellcommands·22s…✻Levitating…(36s·↓703tokens)⏺Running2shellcommands·23s…✻Levitating…(37s·↓703tokens)Running2shellcommands·23s…·Levitating…(37s·↓703tokens)⏺Running2shellcommands·24s…⎿$soulseek-rssearch'SaveYourAtoll'--json--search-timeout25-n02>/dev/null;echo"EXIT:$status"(24s)✳Levitating…(38s·↓703tokens)Running2shellcommands·25s…✽Levitating…(39s·↓703tokens)⏺Running2shellcommands·25s…✳Levitating…(39s·↓703tokens)✢Levitating…(40s·↓703tokens)✻Levitating…(40s·↓703tokens)✻Levitating…(41s·↓703tokens·thinking)·Levitating…(41s·↓703tokens·thinking)✳Levitating…(42s·↓703tokens·thinkingeffort)✽Levitating…(42s·↓703tokens·thinking)✳Levitating…(43s·↓703tokens·thinking)·Levitating…(44s·↓703tokens·thinking)✻Levitating…(44s·↓703tokens·thinkingeffort)✻Levitating…(45s·↓703tokens·thinking)·Levitating…(45s·↓703tokens·thinking)✳Levitating…(46s·↓703tokens·thinkingeffort)✽Levitating…(46s·↓703tokens·thinking)✳Levitating…(47s·↓703tokens·thinking)·Levitating…(48s·↓703tokens·thinking)✻Levitating…(48s·↓703tokens·thinkingeffort)✻Levitating…(49s·↓703tokens·thinking)·Levitating…(49s·↓703tokens·thinking)✳Levitating…(50s·↓703tokens·thinkingeffort)✽Levitating…(50s·↓703tokens·thinking)✶Levitating…(51s·↓703tokens·stillthinking)·Levitating…(52s·↓791tokens·thoughtfor10s)✻Levitating…(52s·↓928tokens·thoughtfor10s)✻Levitating…(53s·↓1.1ktokens·thoughtfor10s)✢Levitating…(53s·↓1.2ktokens·thoughtfor10s)✳Levitating…(54s·↓1.4ktokens)✽Levitating…(55s·↓1.5ktokens)✳Levitating…(55s·↓1.5ktokens)·Levitating…(56s·↓1.5ktokens)Running1shellcommand·2s…✻Levitating…(56s·↓1.5ktokens)"EXIT:$status"(3s)✻Levitating…(57s·↓1.7ktokens)✢Levitating…(57s·↓1.7ktokens)⏺Running1shellcommand·4s…✳Levitating…(58s·↓1.7ktokens)✽Levitating…(59s·↓1.7ktokens)✳Levitating…(59s·↓1.7ktokens)·Levitating…(1m0s·↓1.7ktokens)✻Levitating…(1m1s·↓1.7ktokens)"EXIT:$status"(7s)✽Levitating…(1m1s·↓1.7ktokens)✢Levitating…(1m2s·↓1.7ktokens)✢Levitating…(1m2s·↓1.7ktokens)✽Levitating…(1m3s·↓1.7ktokens)✳Levitating…(1m4s·↓1.7ktokens)"EXIT:$status"(10s)·Levitating…(1m4s·↓1.7ktokens)✻Levitating…(1m5s·↓1.7ktokens)✻Levitating…(1m5s·↓1.7ktokens)·Levitating…(1m6s·↓1.7ktokens)✳Levitating…(1m6s·↓1.7ktokens)"EXIT:$status"(13s)✽Levitating…(1m7s·↓1.7ktokens)✢Levitating…(1m8s·↓1.7ktokens)✳Levitating…(1m8s·↓1.7ktokens)✽Levitating…(1m9s·↓1.7ktokens)✢Levitating…(1m10s·↓1.7ktokens)✢Levitating…(1m10s·↓1.7ktokens)✽Levitating…(1m11s·↓1.7ktokens)"EXIT:$status"(17s)✶Levitating…(1m11s·↓1.7ktokens)·Levitating…(1m12s·↓1.7ktokens)Running1shellcommand·18s…✳Levitating…(1m13s·↓1.7ktokens)"EXIT:$status"(19s)✻Levitating…(1m13s·↓1.7ktokens)✢Levitating…(1m14s·↓1.7ktokens)✳Levitating…(1m14s·↓1.7ktokens)"EXIT:$status"(21s)✽Levitating…(1m15s·↓1.7ktokens)✳Levitating…(1m16s·↓1.7ktokens)·Levitating…(1m16s·↓1.7ktokens)✻Levitating…(1m17s·↓1.7ktokens)✻Levitating…(1m17s·↓1.7ktokens)·Levitating…(1m18s·↓1.7ktokens·thinking)✳Levitating…(1m18s·↓1.7ktokens·thinkingeffort)✽Levitating…(1m19s·↓1.7ktokens·thinking)✳Levitating…(1m20s·↓1.7ktokens·thinking)·Levitating…(1m20s·↓1.7ktokens·thinking)✶Levitating…(1m21s·↓1.7ktokens·thinkingeffort)✻Levitating…(1m21s·↓1.7ktokens·thinking)·Levitating…(1m22s·↓1.7ktokens·thinking)✳Levitating…(1m22s·↓1.7ktokens·thinkingeffort)✽Levitating…(1m23s·↓1.7ktokens·thinking)✳Levitating…(1m24s·↓1.7ktokens·thinking)·Levitating…(1m24s·↓1.7ktokens·thinking)✻Levitating…(1m25s·↓1.7ktokens·thinkingeffort)✻Levitating…(1m25s·↓1.7ktokens·thinking)·Levitating…(1m26s·↓1.7ktokens·thinking)✢Levitating…(1m26s·↓1.8ktokens·thoughtfor9s)✽Levitating…(1m27s·↓2.0ktokens·thoughtfor9s)✶Levitating…(1m28s·↓2.1ktokens·thoughtfor9s)·Levitating…(1m28s·↓2.2ktokens·thoughtfor9s)✳Levitating…(1m29s·↓2.3ktokens)✽Levitating…(1m29s·↓2.4ktokens)✢Levitating…(1m30s·↓2.5ktokens)✳Levitating…(1m30s·↓2.5ktokens)✽Levitating…(1m31s·↓2.5ktokens)✢Levitating…(1m32s·↓2.5ktokens)·Levitating…(1m32s·↓2.6ktokens)✻Levitating…(1m33s·↓2.6ktokens)✶Levitating…(1m33s·↓2.6ktokens)·Levitating…(1m34s·↓2.6ktokens)soulseek-rs…(3s)✻Levitating…(1m35s·↓2.7ktokens)✽Levitating…(1m35s·↓2.8ktokens)·Levitating…(1m36s·↓2.8ktokens)✳Levitating…(1m36s·↓2.9ktokens)✽Levitating…(1m37s·↓2.9ktokens)✳Levitating…(1m38s·↓2.9ktokens)·Levitating…(1m38s·↓2.9ktokens)soulseek-rs…(7s)✻Levitating…(1m39s·↓2.9ktokens)✽Levitating…(1m39s·↓2.9ktokens)·Levitating…(1m40s·↓2.9ktokens)soulseek-rs…(9s)✳Levitating…(1m40s·↓2.9ktokens)✽Levitating…(1m41s·↓2.9ktokens)✢Levitating…(1m42s·↓2.9ktokens)✳Levitating…(1m42s·↓2.9ktokens)✽Levitating…(1m43s·↓2.9ktokens)✳Levitating…(1m44s·↓2.9ktokens)·Levitating…(1m44s·↓2.9ktokens)Running1shellcommand·13s…soulseek-rs…(13s)✻Levitating…(1m45s·↓2.9ktokens)✻Levitating…(1m45s·↓2.9ktokens)·Levitating…(1m46s·↓2.9ktokens)✳Levitating…(1m46s·↓2.9ktokens)✽Levitating…(1m47s·↓2.9ktokens)✳Levitating…(1m48s·↓2.9ktokens)·Levitating…(1m48s·↓2.9ktokens)soulseek-rs…(17s)✻Levitating…(1m49s·↓2.9ktokens)✽Levitating…(1m49s·↓2.9ktokens)✢Levitating…(1m50s·↓2.9ktokens)✢Levitating…(1m50s·↓2.9ktokens)✽Levitating…(1m51s·↓2.9ktokens)soulseek-rs…(20s)✢Levitating…(1m52s·↓2.9ktokens)·Levitating…(1m52s·↓2.9ktokens)⏺Running1shellcommand·21s…✽Levitating…(1m53s·↓2.9ktokens)✻Levitating…(1m53s·↓2.9ktokens)·Levitating…(1m54s·↓2.9ktokens)soulseek-rs…(23s·2lines)✳Levitating…(1m54s·↓2.9ktokens)✽Levitating…(1m55s·↓2.9ktokens)·Levitating…(1m56s·↓2.9ktokens)✳Levitating…(1m56s·↓2.9ktokens)Running1shellcommand·25s…✽Levitating…(1m57s·↓2.9ktokens)✳Levitating…(1m58s·↓2.9ktokens)·Levitating…(1m58s·↓2.9ktokens)⏺Running1shellcommand·27s…soulseek-rs…(27s·2lines)✻Levitating…(1m59s·↓2.9ktokens)✻Levitating…(1m59s·↓2.9ktokens)·Levitating…(2m0s·↓2.9ktokens)Running1shellcommand·29s…✳Levitating…(2m0s·↓2.9ktokens)✽Levitating…(2m1s·↓2.9ktokens)✳Levitating…(2m2s·↓2.9ktokens)·Levitating…(2m2s·↓2.9ktokens)✶Levitating…(2m3s·↓2.9ktokens)✻Levitating…(2m3s·↓2.9ktokens)soulseek-rs…(32s·2lines)✢Levitating…(2m4s·↓2.9ktokens)✳Levitating…(2m4s·↓2.9ktokens)✽Levitating…(2m5s·↓2.9ktokens)✳Levitating…(2m6s·↓2.9ktokens)·Levitating…(2m6s·↓2.9ktokens)soulseek-rs…(35s·2lines)✻Levitating…(2m7s·↓2.9ktokens)✽Levitating…(2m7s·↓2.9ktokens)Running1shellcommand·36s…·Levitating…(2m8s·↓2.9ktokens)soulseek-rs…(37s·2lines)✳Levitating…(2m9s·↓2.9ktokens)✽Levitating…(2m9s·↓2.9ktokens)·Levitating…(2m10s·↓2.9ktokens)✳Levitating…(2m10s·↓2.9ktokens)✽Levitating…(2m11s·↓2.9ktokens)✳Levitating…(2m12s·↓2.9ktokens)⏺Running1shellcommand·40s…·Levitating…(2m12s·↓2.9ktokens)Running1shellcommand·41s…soulseek-rs…(41s·2lines)✻Levitating…(2m13s·↓2.9ktokens)⏺Running1shellcommand·42s…✻Levitating…(2m13s·↓2.9ktokens)·Levitating…(2m14s·↓2.9ktokens)✳Levitating…(2m14s·↓2.9ktokens)✽Levitating…(2m15s·↓2.9ktokens)✳Levitating…(2m16s·↓2.9ktokens)·Levitating…(2m16s·↓2.9ktokens·thinking)✻Levitating…(2m17s·↓2.9ktokens·thinkingeffort)✻Levitating…(2m17s·↓3.0ktokens·thinking)✢Levitating…(2m18s·↓3.0ktokens·thoughtfor1s)✳Levitating…(2m18s·↓3.0ktokens·thoughtfor1s)✽Levitating…(2m19s·↓3.1ktokens·thoughtfor1s)✳Levitating…(2m20s·↓3.1ktokens·thoughtfor1s)·Levitating…(2m20s·↓3.1ktokens)✻Levitating…(2m21s·↓3.1ktokens)✻Levitating…(2m21s·↓3.1ktokens)Running1shellcommand·3s…·Levitating…(2m22s·↓3.2ktokens)✳Levitating…(2m22s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(4s)✽Levitating…(2m23s·↓3.2ktokens)✢Levitating…(2m24s·↓3.2ktokens)✢Levitating…(2m24s·↓3.2ktokens)✽Levitating…(2m25s·↓3.2ktokens)✶Levitating…(2m25s·↓3.2ktokens)⏺Running1shellcommand·7s…·Levitating…(2m26s·↓3.2ktokens)✶Levitating…(2m27s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(8s)✻Levitating…(2m27s·↓3.2ktokens)·Levitating…(2m28s·↓3.2ktokens)✳Levitating…(2m28s·↓3.2ktokens)✽Levitating…(2m29s·↓3.2ktokens)✳Levitating…(2m30s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(11s)✢Levitating…(2m30s·↓3.2ktokens)✻Levitating…(2m31s·↓3.2ktokens)✶Levitating…(2m31s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(13s)✢Levitating…(2m32s·↓3.2ktokens)✻Levitating…(2m33s·↓3.2ktokens)✻Levitating…(2m33s·↓3.2ktokens)✢Levitating…(2m34s·↓3.2ktokens)✳Levitating…(2m34s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(16s)✻Levitating…(2m35s·↓3.2ktokens)·Levitating…(2m36s·↓3.2ktokens)✳Levitating…(2m36s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(18s)✻Levitating…(2m37s·↓3.2ktokens)Running1shellcommand·19s…·Levitating…(2m38s·↓3.2ktokens)✳Levitating…(2m38s·↓3.2ktokens)✽Levitating…(2m39s·↓3.2ktokens)✶Levitating…(2m39s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(21s)·Levitating…(2m40s·↓3.2ktokens)✻Levitating…(2m41s·↓3.2ktokens)✻Levitating…(2m41s·↓3.2ktokens)⏺Running1shellcommand·23s…·Levitating…(2m42s·↓3.2ktokens)✳Levitating…(2m42s·↓3.2ktokens)✽Levitating…(2m43s·↓3.2ktokens)✳Levitating…(2m44s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(25s·7lines)✢Levitating…(2m44s·↓3.2ktokens)✽Levitating…(2m45s·↓3.2ktokens)✶Levitating…(2m45s·↓3.2ktokens)Running1shellcommand·27s…|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(27s·7lines)·Levitating…(2m46s·↓3.2ktokens)✽Levitating…(2m47s·↓3.2ktokens)✶Levitating…(2m47s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(29s·7lines)·Levitating…(2m48s·↓3.2ktokens)✻Levitating…(2m49s·↓3.2ktokens)✻Levitating…(2m49s·↓3.2ktokens)·Levitating…(2m50s·↓3.2ktokens)✳Levitating…(2m50s·↓3.2ktokens)✽Levitating…(2m51s·↓3.2ktokens)⏺Running1shellcommand·32s…✶Levitating…(2m52s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(33s·12lines)·Levitating…(2m52s·↓3.2ktokens)✻Levitating…(2m53s·↓3.2ktokens)✻Levitating…(2m53s·↓3.2ktokens)⏺Running1shellcommand·35s…·Levitating…(2m54s·↓3.2ktokens)✳Levitating…(2m54s·↓3.2ktokens)✽Levitating…(2m55s·↓3.2ktokens)✳Levitating…(2m56s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(37s·16lines)·Levitating…(2m56s·↓3.2ktokens)✻Levitating…(2m57s·↓3.2ktokens)✻Levitating…(2m57s·↓3.2ktokens)·Levitating…(2m58s·↓3.2ktokens)✳Levitating…(2m58s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(40s·20lines)✽Levitating…(2m59s·↓3.2ktokens)✢Levitating…(3m0s·↓3.2ktokens)✳Levitating…(3m0s·↓3.2ktokens)|soulseek-rsdownload--stdin--json--timeout300;echo"EXIT:$status"(42s·21lines)✽Levitating…(3m1s·↓3.2ktokens)✳Levitating…(3m2s·↓3.2ktokens)·Levitating…(3m2s·↓3.2ktokens)✻Levitating…(3m3s·↓3.2ktokens)✻Levitating…(3m3s·↓3.2ktokens)·Levitating…(3m4s·↓3.3ktokens·thinking)✢Levitating…(3m4s·↓3.3ktokens·thinkingeffort)Listing1directory,running2shellcommands…✽Levitating…(3m5s·↓3.3ktokens·thinking)✳Levitating…(3m6s·↓3.3ktokens·thoughtfor1s)✢Levitating…(3m6s·↓3.3ktokens·thoughtfor1s)┌─────┬────────┬──────┐│#│Track│Size│├─────┼────────┼──────┤│01│Abisso│32M│└─────┴────────┴──────┘⏺Done—4filesin~/Downloads/Soulseek/,16-bitWEBFLAC,~├─────│Track│Size│Skipped:the5thtrack,Ridondanza(AlderaanRemix)—aremixbysomeoneelse,sonotaSaveYourAtolltrack.Saythewordifyouwantit,ortheDisconnectEP's4tracksinstead.✻Brewedfor3m9s❯⏺Ridondanza(2026-05-23)isnewerthanDisconnectEP(2026-04-17).Its4SaveYourAtolloriginalsarethelatesttracks—the5thisanAlderaanremix.GrabbingthosefourinFLAC:Ran1shellcommand⏺Fourtracks,onepeer,freeslots,~132MBtotal.Downloading:Listed1directory,ran2shellcommands⏺Done—4filesin~/Downloads/Soulseek/,16-bitWEBFLAC,~126MBtotal:┌─────┬────────────┬──────┐│#│Track│Size││01│Abisso│32M││02│Ridondanza│31M││03│Emersione│31M││04│Ascesa│32M│└─────┴────────────┴──────┘FromRidondanza(TS006,w/GabrieleSantucci)—released2026-05-23,theartist'snewest.VerifiednewerthantheDisconnectEP(2026-04-17)bycross-checkingscenefolderdates.Skipped:the5thtrack,Ridondanza(AlderaanRemix)—aremixbysomeoneelse,sonotaSaveYourAtolltrack.Saythewordifyouwantit,ortheDisconnectEP's4tracksinstead.✻Brewedfor3m9s───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────❯────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── \ No newline at end of file diff --git a/website/src/components/layout/footer.tsx b/website/src/components/layout/footer.tsx index 9ad69c5..20c83b0 100644 --- a/website/src/components/layout/footer.tsx +++ b/website/src/components/layout/footer.tsx @@ -90,8 +90,7 @@ export const Footer = () => (
- MIT · © 2026 Michel de Graaf - No telemetry. Ever. + MIT · © 2026 soulseek-rs contributors {VERSION}
diff --git a/website/src/components/tui/data.ts b/website/src/components/tui/data.ts index 737bf00..62e5f33 100644 --- a/website/src/components/tui/data.ts +++ b/website/src/components/tui/data.ts @@ -30,7 +30,7 @@ export interface TransferRow { rateMbps?: number } -export const SHARE = '/Users/micheldegraaf/Downloads/Soulseek' +export const SHARE = '~/Downloads/Soulseek' export const SEARCHES: readonly SearchRow[] = [ { id: 's1', query: 'public domain field recordings', results: 606, status: 'Done' }, diff --git a/website/src/lib/links.ts b/website/src/lib/links.ts index fb9d282..33654ac 100644 --- a/website/src/lib/links.ts +++ b/website/src/lib/links.ts @@ -12,6 +12,7 @@ export const LINKS = { nicotine: 'https://nicotine-plus.org', slskd: 'https://github.com/slskd/slskd', slsknet: 'https://www.slsknet.org', + seeleseek: 'https://seeleseek.net', } as const export const VERSION = __APP_VERSION__ diff --git a/website/src/lib/routes.ts b/website/src/lib/routes.ts index e42a629..9f653d3 100644 --- a/website/src/lib/routes.ts +++ b/website/src/lib/routes.ts @@ -27,7 +27,7 @@ export const ROUTES = [ path: '/community', title: 'soulseek-rs, community', description: - 'How to help with soulseek-rs, and where to go when another Soulseek client fits you better. MIT licensed. No telemetry.', + 'Soulseek etiquette: what sharing asks of you, how to help with soulseek-rs, and where to go when another client fits you better.', }, ] as const satisfies readonly RouteMeta[] diff --git a/website/src/pages/community.tsx b/website/src/pages/community.tsx index 80b9469..f93eef2 100644 --- a/website/src/pages/community.tsx +++ b/website/src/pages/community.tsx @@ -22,6 +22,16 @@ const ALTERNATIVES: readonly Alternative[] = [ { label: 'Nicotine+', href: LINKS.nicotine }, ], }, + { + question: 'On a Mac and want it to feel like one?', + answer: ( + <> + SeeleSeek is native Swift and SwiftUI rather than Qt or Python, so it opens like + any other Mac app. macOS 15 or later, MIT licensed. + + ), + links: [{ label: 'SeeleSeek', href: LINKS.seeleseek }], + }, { question: 'Want feature completeness?', answer: ( @@ -49,22 +59,25 @@ const CITIZENSHIP = [ { glyph: '↑', color: 'var(--status-success)', - title: 'Share, and share real files', + title: 'Share something, anything', body: ( <> Point shares add at the collection you listen to. Full albums, - honest bitrates, nothing transcoded up from a lossy source and relabelled. + honest bitrates, nothing transcoded up from a lossy source and relabelled. Nobody + checks whether you reshared the exact file you took, only whether you offer + anything at all. ), }, { glyph: '≡', color: 'var(--status-info)', - title: 'Organize so others can find it', + title: 'Name it so a search can find it', body: ( <> - Artist and album folders, tagged files, readable names. Someone else’s search - only reaches you if your filenames say what the music is. + Artist, album, year, track. Most people search rather than browse, so your + filenames are the only route to you. One flat folder of untagged rips is + invisible. ), }, @@ -74,8 +87,9 @@ const CITIZENSHIP = [ title: 'Stay online', body: ( <> - Leave serve --follow running in a tmux session on the box that is - already on. A share that appears for an hour a week is close to no share at all. + Leave serve --follow running in tmux on the box that is already on, + or hand daemon to systemd. A share that appears an hour a week barely + counts. ), }, @@ -93,11 +107,24 @@ const CITIZENSHIP = [ { glyph: '@', color: 'var(--status-info)', - title: 'Answer people', + title: 'Ask before you take a discography', body: ( <> - Rooms and private messages are part of the client for a reason. Someone asking - where the rest of a discography went is worth a reply. + user <name> shows how someone is set up, and many spell out + their limits in their profile. One line from message send beats + getting banned mid-queue. Answer the people who write to you, too. + + ), + }, + { + glyph: '⇅', + color: 'var(--status-success)', + title: 'Size your slots for your uplink', + body: ( + <> + --upload-slots is not a score. Set it past what your uplink can feed + and everyone in the queue gets a trickle. Start low, raise it when uploads finish + fast. ), }, @@ -107,8 +134,21 @@ const CITIZENSHIP = [ title: 'Wait your turn', body: ( <> - Queues are one person’s upload bandwidth being divided up. Queue it, leave it, - come back later. Do not requeue the same file to jump the line. + A queue is one person’s upload bandwidth divided up. Queue it, leave it, + come back later. Requeuing to jump the line burns a slot someone else was waiting + on. + + ), + }, + { + glyph: '⚑', + color: 'var(--status-warning)', + title: 'Keep the files reachable', + body: ( + <> + Sharing off an external drive works until it is unmounted. Run{' '} + shares reindex once it is back, or your listing promises files that + error out when somebody asks. ), }, @@ -117,16 +157,71 @@ const CITIZENSHIP = [ export const Community = () => { return ( <> - - It’s mostly one person who’s been on Soulseek since the early 2000s. - Issues and pull requests are welcome, and if another client fits you better, use it. + + Soulseek exists because its users leave their collections open to each other. What + that asks of you, how to help with the client, and where to go if another one fits + you better.
- + + Every file you pull came off a machine somebody left running and spent years + filling. Records and live sets that exist nowhere else stay online because those + people keep them there. Download and share nothing back and you are a leech. + + + +

+ The protocol has no ratio and no tracker. Users decide for themselves who to + serve, and they check what you share before they queue you. +

+

+ Sharing costs you a directory and a process that stays up. It buys you a + catalogue that still exists in ten years, and peers who move you up the + queue because they browsed your files first. +

+
+ +
+
+ {CITIZENSHIP.map((item) => ( + + {item.body} + + ))} +
+
+ +

+ Some users restrict their files to buddies, often for fair reasons. A few sit + on rare releases and ask you to trade or pay for access. Read their profile, + then walk away from the ones charging admission; they thin out when people + stop playing along. +

+
+
+
+ +
+ + It’s mostly one person who’s been on Soulseek since the early 2000s. File an issue, open a pull request, or just say what’s missing. No contributor agreement, no template gymnastics. @@ -139,13 +234,10 @@ export const Community = () => {

Format and Clippy run clean on every push, and unit tests plus an end-to-end - suite against{' '} - soulfind{' '} - run in CI, so a green checkmark means it built and talked to a server. -

-

- soulfind is an open-source Soulseek server. Run it locally and you develop - against a real protocol implementation without touching the public network. + suite against soulfind run in CI, so a + green checkmark means it built and talked to a server. soulfind is an + open-source Soulseek server; run it locally to develop against a real protocol + implementation without touching the public network.

-
- - Decades of records, live sets, and pressings that never made it anywhere else, - kept online by people who care about them. None of this is enforced. It is just - how the network stays worth using. - -
- {CITIZENSHIP.map((item) => ( - - {item.body} - - ))} -
-
-
soulseek-rs has no graphical interface. If one of these fits you better, use it. @@ -231,7 +300,7 @@ export const Community = () => { MIT, and no strings.

- Free to use, copy, modify, and distribute. Copyright © 2026 Michel de Graaf. + Free to use, copy, modify, and distribute. Copyright © 2026 soulseek-rs contributors.

@@ -320,8 +320,8 @@ const Steps = () => ( ]} />

- You’ll find the binary at target/release/soulseek-rs. - Prebuilt archives for tagged releases are on the{' '} + The binary lands at target/release/soulseek-rs. Prebuilt archives for + tagged releases are on the{' '} releases page.

@@ -506,9 +506,9 @@ const Config = () => ( const Uninstall = () => (
- Three things exist on disk: the binary, the config, and the state — plus - the completion scripts and the agent skill, if you asked for those. Nothing else, - unless you point --log-file somewhere. No telemetry to opt out of. + Three things exist on disk: the binary, the config, and the state, plus the completion + scripts and the agent skill if you asked for those. Nothing else, unless you point{' '} + --log-file somewhere. No telemetry to opt out of.