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.
33 lines
2.0 KiB
Plaintext
33 lines
2.0 KiB
Plaintext
android: a playlist file, picked
|
|
|
|
The storage plugin grew `pick_file` beside `pick_folder` and `pick_image`:
|
|
the document sheet with the caller's own filter, answered with a path Rust
|
|
can open. A document already on this phone hands its path over as it lies —
|
|
the document sibling of the same volume:relative id the folder picker
|
|
resolves, plus the Downloads provider's raw: — so a 300 MB pick copies
|
|
nothing; one that has no path is copied into cacheDir/picked under its own
|
|
name, and only as far as the caller allows, because a playlist is kilobytes
|
|
and a DJ set is not. Those copies are swept at the start of every pick,
|
|
which pick_image's never were.
|
|
|
|
The import sheet has its fifth door, on round 24's screen, wait card and
|
|
review, and the note that apologised for its absence says the one true thing
|
|
about it instead. `playlist_import_probe` took a path and a name the way
|
|
`playlist_import_folder` took a path, and the name is the load-bearing half:
|
|
the parser picks its format off the extension and titles the draft from the
|
|
stem, so a cache copy under an invented name would have read every playlist
|
|
as plain text. The mock walk drives the door and both of the picker's
|
|
refusals through round 31's fail door; the phone walk opens the real sheet
|
|
and dismisses it with BACK, reading nothing and writing nothing.
|
|
|
|
The brief asked for a second consumer — sending a file in a chat — and there
|
|
is nothing behind it: `community_pick_file` is the persona layer's three
|
|
native dialogs, `soulseek-client` has `say_room` and `message_user` and
|
|
nothing that sends a file, and both frontends' thread composers are text
|
|
only. Nothing was invented for it. The plugin command is general enough — a
|
|
caller's own filter, a zero-copy path, a bounded copy — that the one reader
|
|
still waiting, the local set listener the phone puts off by design, needs no
|
|
further plugin change. Playlist export is not on that list and never was:
|
|
writing a document out is the share plugin's errand, not a picker's. The
|
|
Kotlin is unbuilt — nothing on this machine compiles it.
|