android: the repair sheet, browse, every long-press sheet, You's last sections, the lyrics tools — and the walk's audio check made honest
The playlist repair (Find a local match: the library searched by the row's name, a pick relinks it through playlist_relink_item; an unknown row takes the track's identity). A peer's sheet on the raw results (play or save the folder, browse their files, message, buddy) and the Browse screen — the hub's Browse tab: a user's whole share with sizes and totals, a folder played or saved whole; a share can hold thousands of folders, so it filters and renders 80 at a time. "Look up a user" on Community → Buddies. The sheets the phone lacked: a queue row's (Play now, Move to next, Remove from queue), a catalog song's, a catalog card's and the record page's own, a raw file's (in the results and in Browse), a room name's, a buddy's, the now-playing Save (the desktop's Save menu for a streamed track or record). The artwork viewer with pinch zoom, one layer the back gesture peels. Search's recent searches and its spelling suggestion from the names this phone knows. You → Streaming, Downloads, Sharing, Lyrics, Album artwork, and Clear play history; a record's Re-fetch the cover. The lyrics tools on the sheet's face: the offset nudged and kept per track, another LRCLIB candidate chosen, the lookup forgotten and done again (lyrics.svelte.js, shared by the face and the lyrics sheet). The harness: every CDP call times out and the reload step re-attaches (a WebView that stopped answering hung a walk for ten minutes); the audio check counts SoulStream's own tracks' underruns from the mixer dump instead of the thread-wide counters that any app's notification moves — the afternoon's "dropouts" were other apps' sounds, and the browse of a 49,544-file share measured at zero; __settle resets every tab to its root through the nav; an adb step kind; the walks cover all of the above on the mock and on the phone.
This commit is contained in:
1 parent
6e39dc43f3
commit
26928b706d
21 files changed
+1294
-92
No files matched your search
@@ -1335,3 +1335,33 @@ html[data-motion="off"] *, html[data-motion="off"] *::before, html[data-motion="
|
||||
.bulkline .ring { width: 14px; height: 14px; flex: none; border-radius: 50%; border: 2px solid rgba(255, 255, 255, 0.15); border-top-color: var(--accent); animation: imp-spin 0.9s linear infinite; }
|
||||
.bulkline .bulkx { display: grid; place-items: center; width: 24px; height: 24px; flex: none; border-radius: 50%; color: var(--text-muted); }
|
||||
.bulkline .bulkx:active { background: rgba(255, 255, 255, 0.12); }
|
||||
|
||||
/* the repair sheet's search field, inside the half sheet */
|
||||
.halfsheet .sfield.plmatch { margin: 6px var(--pad) 8px; }
|
||||
|
||||
/* ── a peer's menu on a raw result, and the Browse screen ─────────────── */
|
||||
.peer-head .peer-menu { margin: -6px -6px -6px 2px; }
|
||||
.brw-head { display: flex; align-items: center; gap: 12px; padding: 12px var(--pad) 10px; }
|
||||
.brw-head .b { flex: 1; min-width: 0; }
|
||||
.brw-head .t { font-size: 18px; font-weight: 800; letter-spacing: -0.2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
||||
.brw-head .m { font-size: 12.5px; color: var(--text-muted); margin-top: 2px; }
|
||||
.brw-acts { display: flex; gap: 8px; padding: 2px 12px 8px; }
|
||||
.brw-acts .btn { flex: 1; height: 36px; font-size: 13px; gap: 6px; }
|
||||
.peer-file:disabled { opacity: 0.45; }
|
||||
|
||||
/* You → Sharing: the upload-slot stepper; a shared folder's path */
|
||||
.stepper { display: inline-flex; align-items: center; gap: 2px; flex: none; }
|
||||
.stepper .n { min-width: 24px; text-align: center; font-weight: 800; font-size: 14px; font-variant-numeric: tabular-nums; }
|
||||
.group .row .t.mono { font-family: ui-monospace, "Cascadia Mono", Consolas, monospace; font-size: 12.5px; font-weight: 600; }
|
||||
|
||||
/* Search: the spelling suggestion, inline in the note */
|
||||
.sec-note .dym { color: var(--accent-hover); font-weight: 750; padding: 0 2px; }
|
||||
|
||||
/* ── the artwork viewer: the cover alone, over everything ─────────────── */
|
||||
.viewer { position: fixed; inset: 0; z-index: 200; background: #000; display: grid; place-items: center; animation: viewer-in 160ms ease both; touch-action: none; overflow: hidden; }
|
||||
.viewer img { max-width: 100%; max-height: 100%; object-fit: contain; display: block; will-change: transform; transform-origin: center; }
|
||||
@keyframes viewer-in { from { opacity: 0; } to { opacity: 1; } }
|
||||
|
||||
/* the lyrics face's way to its tools */
|
||||
.lyr-tools { display: block; margin: 18px auto 8px; padding: 7px 14px; border-radius: 999px; background: rgba(255, 255, 255, 0.08); color: var(--text-secondary); font-size: 12.5px; font-weight: 700; }
|
||||
.lyr-tools:active { background: rgba(255, 255, 255, 0.14); }
|
||||
Reference in new issue
Block a user