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.
36 lines
2.2 KiB
Plaintext
36 lines
2.2 KiB
Plaintext
android: playlists, the import doors, the share sheet, You → Sources — and three bugs the walks found
|
|
|
|
The desktop's two playlist pages on the phone: the shelf (pinned first,
|
|
mosaic covers, badges, New playlist, Import) and the page (kind, Pinned
|
|
chip, description, the meta line's warnings, Play / Shuffle / more, a
|
|
filter, rows tagged unresolved / set audio / file missing). Sheets for a
|
|
card, the page's overflow, a row, pick-a-playlist, a prompt and a confirm;
|
|
Add to playlist on every track and record sheet; a removal undoable for
|
|
seven seconds from the neutral toast (notice.svelte.js); stream rows play
|
|
through the resolver as path-less entries, a set slice starts and ends at
|
|
its cues; Add to library / Download all tracks with the desktop's bulk
|
|
rules; nav.replace for a review that became the thing it made.
|
|
|
|
The import doors that need no file — a link (YouTube · Spotify · Apple
|
|
Music · TIDAL · Deezer), a pasted tracklist, a YouTube DJ set — with the
|
|
review screen and the desktop's catalog verification pass. A share plugin
|
|
crate (crates/tauri-plugin-share): Share → SoulStream from any app keeps
|
|
the text in a ShareActivity and the WebView hands it to the import when it
|
|
comes back to the front. You → Sources: the source-quality window and the
|
|
priority per mode.
|
|
|
|
Found by the walks and fixed: set_settings takes camelCase arguments, so
|
|
the phone's normalization and library-folder saves never landed;
|
|
Cover.svelte's non-eager wrapper has no layout box, so its intersection
|
|
observer never fired and row thumbnails never loaded (the Artists tab too);
|
|
a history push while a history.go was still in flight left the nav mirror
|
|
one entry ahead and the page blank after a confirmed delete — the mirror
|
|
now applies once per microtask and never pushes during a pending traversal.
|
|
|
|
The harness names unmocked commands, carries console warnings' frames (the
|
|
smoke bundle is built unminified), probes the history mirror on every step,
|
|
mocks app_status / play_local / waveform / lyrics_get / player_state and
|
|
applies settings patches, runs adb steps on the phone (the share intent),
|
|
and walks playlists, the imports, the share and the settings on both the
|
|
mock and the phone. ANDROID.md documents all of it.
|