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.
46 lines
2.9 KiB
Plaintext
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.
|