/* ── the first run ──────────────────────────────────────────────── Every one of these is on state that STAYS: a sheet that is up, a counter, a field in the config, a row that is present or absent. Nothing here waits on a notice or a picker — both windows are shorter than the step's own wait plus the screenshot. */ "fresh-boot": (i) => i.setupUp && i.setupCards === "Where your music lives|Soulseek" && i.setupState === "private:out:todo" && i.setupWrites === 0 && /^dialog\/true\/Welcome to SoulStream\/focus$/.test(i.dlg) /* and nothing of the walk before it came through the reload: a phone that has just been installed has no session to restore */ && !i.mini && !i.a11yAnon && !i.a11yGhost && !i.a11yBad && !i.a11yState, /* the tour's own door to the sign-in, and the stamp that a tour which ran leaves behind whichever door closed it */ "fresh-community": (i) => !i.setupUp && i.title.startsWith("Community") && i.signIn === "Sign in to Soulseek" && i.setupWrites === 1 && i.setupState === "private:out:done", "fresh-home": (i) => !i.setupUp && i.setupNotes === 1 && i.setupRows === 2 && i.setupNoteText === "Choose your library folder|Sign in on Soulseek", "fresh-albums": (i) => i.title.startsWith("Your library") && i.setupNotes === 1 && i.setupRows === 2 && i.setupNoteText === "Choose your library folder|Sign in on Soulseek", "fresh-artists": (i) => i.title.startsWith("Your library") && i.setupNotes === 1 && i.setupRows === 2, "fresh-search": (i) => i.title.startsWith("Search") && i.setupNotes === 1 && i.setupRows === 2, /* the preview reads the real config and adds nothing to the counter */ "fresh-preview": (i) => i.setupUp && i.setupWrites === 1 && i.setupCards === "Where your music lives|Soulseek", /* a folder picked from the tour: the config moved, the permission the new folder needs is offered, and still nothing was stamped */ "fresh-folder": (i) => i.setupUp && i.setupState === "chosen:out:done" && i.setupWrites === 1 && /Allow all files access/.test(i.halfText), /* and the note loses the row it answered — because the config changed, not because a flag was flipped */ "fresh-fixed": (i) => !i.setupUp && i.setupNotes === 1 && i.setupRows === 1 && i.setupNoteText === "Sign in on Soulseek" && i.setupWrites === 1, /* the provisioned device is back, and it is NOT offered a first run */ "fresh-off": (i) => !i.setupUp && !i.setupNotes && i.setupState === "chosen:in:done" && !i.toast,