Commit Graph
5 Commits
Author SHA1 Message Date
officer 7f2df667b7 drop the stray root icon.png
Left by the extraction on 2026-08-19: the old 3.5KB public/slskd.png was copied
to the plugin root, which is not a path anything reads. publishAssets copies
`assets/` only, so the icon that has always been served is assets/icon.png —
now 248KB of real artwork rather than the old logo.

Two copies of the same idea, one of them invisible, is how they drift.
2026-08-19 05:54:00 +00:00
Claude 077eb72b87 icon: transparent corners, so the tile is a tile
The app icon is flattened onto black because iOS rejects an alpha channel, and
copying that straight over made every dock tile an opaque black square. The tile
wants the frame's own rounded edge with the corners cut away — which is what the
icon this replaces already had, and what tile: bare means.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 06:28:58 +01:00
Claude 3f73ebdecb art: the redrawn icon, and the splash beside it
New master drawn to the current brief on 2026-08-19 — the Soulseek bird as the
hero with Officer Duck riding it, rather than the duck as the subject.

The splash ships here too. The platform draws no splash of its own; it is
carried because this repository is where the product's artwork lives, and the
phone app that fronts the same product needs somewhere to read it from. The two
are a pair: the icon is a reduction of the splash's world.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 06:27:19 +01:00
Claude 91e98b5f0d icon: the app's own artwork, at 256
The dock tile takes assets/icon.png when the plugin ships one and falls back to
the manifest's lucide glyph when it does not. This is the same icon the phone
shows, resized — one mark per product, wherever it appears.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 06:04:15 +01:00
officer c11f45c033 soulseek, extracted from the platform as a plugin
Seventh plugin out, and the first that was already dead. Soulseek had been
switched off since 2026-08-13: hono.ts had the router import and its mount
commented out, so createSidecarProxy never ran, registerProxiedPrefix was never
called, the slskd:server announcement fired into a void, and officer-slskd was
not in the ecosystem at all. The permission entry had been reduced to api: [],
which is why assertPermissionTotality was satisfied and the server booted
clean. The UI rendered perfectly and every request 404'd.

So this is a resurrection as well as a move.

The mount is now /api/soulseek, derived via mountPrefix from the appName — all
47 frontend call sites repointed from /slskd/. The credential key in
service_connections stays 'slskd': it names the daemon, not the route. Those
two strings differ on purpose and conflating them reads the wrong row.

The connection stays in core service_connections, as transmission does, so
'slskd' remains in a platform union this plugin cannot extend. Recorded in
PLUGIN.md. Unlike transmission this plugin does own a schema: favourites and
the two halves of the cached browse tree, which slskd has no concept of. Those
three tables had been dropped from the drizzle barrel, so bun db:push would
have deleted them on any server holding data.

313 palette classes converted to the semantic tone set, including a shared
PHASE_TONE the three transfer views previously each copied.
2026-08-19 02:55:02 +00:00