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.