Files
SoulStream/handoff/rounds/patch-round8b.cjs
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

20 lines
1.1 KiB
JavaScript

// The artist page's discography cards carry the record sheet too: a long
// press on a family opens the sheet for its primary edition.
const fs = require('fs');
const p = 'F:/Coding/SoulStream/src/mobile/screens/Artist.svelte';
let s = fs.readFileSync(p, 'utf8');
const a = ` onclick={() => openFamily(f)}
/>`;
if (!s.includes(a) || s.indexOf(a) !== s.lastIndexOf(a)) throw new Error('family card anchor');
s = s.replace(a, () => ` onclick={() => openFamily(f)}
onmore={() => openHalf("catalogAlbum", { album: { ...(f.editions?.[0] ?? f), artist: name } })}
/>`);
if (!/import \{[^}]*\bopenHalf\b[^}]*\} from "\.\.\/nav\.svelte\.js"/.test(s)) {
const m = s.match(/import \{ ([^}]*) \} from "\.\.\/nav\.svelte\.js";/);
if (!m) throw new Error('nav import');
s = s.replace(m[0], `import { ${m[1]}, openHalf } from "../nav.svelte.js";`);
}
if (!/let \{[^}]*\bname\b[^}]*\} = \$props\(\)/.test(s)) throw new Error('the artist page has no `name` prop');
fs.writeFileSync(p, s);
console.log('artist cards carry the sheet');