Files
SoulStream/handoff/rounds/ins-r30-doc-notdone.txt
T
KeelrLeek 9f0601027c android: the handoff — the pending rounds, the pipeline, and what is unverified
Everything written this session that has not been through the device: rounds 43
to 48 (each patch adversarially verified, 43's transient-notice expectation
fixed), a partial round 49, the pipeline scripts, the Android Auto design and
the icon comparison mock. Also the two harness changes that were never A/B'd —
adaptive waits, which may only shorten a declared wait and never lengthen it,
and a ship that runs the mock walk and the deploy at the same time. The A/B and
its 255-step baseline are in handoff/tools; main stays at what the phone has
actually walked.
2026-09-14 07:57:41 -05:00

46 lines
2.9 KiB
Plaintext

## Not done yet
Thirty rounds in, this is the honest map: what is deliberately absent, what
is waiting on Rust, and what is simply smaller than the rest. Most of what
the backend exposes and the phone never calls is a whole module it has no
business calling, so the list is by module — that is the reason, not the
symptom.
- **Off by design — the private layer.** Spaces, holdings, the sealed inbox,
friends by key, shared playlists, Who has it, the persona and its profile,
and the Soulseek↔persona link: sixty-six commands across ten modules
(`freenet` 7, `friends` 7, `holdings` 8, `inbox` 3, `persona` 6, `profile`
4, `proposals` 3, `shared_playlists` 13, `slsk_link` 5, `spaces` 10).
Freenet on the phone is a later experiment; the network side is in, and
rooms and chat are built and mock-walked. A live room is Kyle's to join.
- **Off by design — the desktop's own machinery.** The tag-import pipeline
(all sixteen of `import.rs`: its audition, its cover report, its portable
root — which is the import session's root, not the library folder); hover
previews (all eight of `preview.rs`), and with them the three pause/fade
acknowledgements that live there because they exist only to hand silence
between the main player and the preview player; the mini window, the glass
mode, Show in folder and SMTC; the updater (the phone's own build of it
answers honestly that there is no channel here, and the version is in You,
from `app_status`); the hero GPU upscaler, the cover-wordmark OCR and its
debug tools. The phone shows a wordmark the page carries; it does not run
the pipeline that makes one — and it does not fetch a 3000px cover upgrade
over mobile data for a screen that cannot show it, which is why
`catalog_cover` and `invalidate_catalog_cover` stay here too.
- **Off by design — external runtimes.** yt-dlp and deno, the vocal
separator, the lyric alignment models, and the listener door that needs
them.
- **Waiting on Rust, not on a picker.** Playlist EXPORT: `tauri-plugin-dialog`
does open Android's create-document sheet from Rust, but it answers with a
`content://` URI and `playlist_export` writes with `std::fs::write`, which
cannot take one. It needs a ContentResolver write, or the bytes handed to
an outbound share intent — and `crates/tauri-plugin-share` is inbound-only
today. Playlist-FILE import wants a `pick_file` in the storage plugin,
beside the `pick_folder` and `pick_image` it already has.
- **Still desktop-only, smaller.** Drag reorder (Move up / down / to the top
stand in), catalog track previews, the full discography page, and the
fused-artist portrait verdict — that last one needs the identity merge the
phone does not run, so porting it means porting the merge first.
- **Per library folder.** Follows and the play history live in the library
folder, so the phone's own folder starts empty of both; they arrive with a
shared library.