    "lyrics-autosync-off": (i) => i.half.includes("up") && i.lyrAuto === "off",
    "lyrics-autosync-on": (i) => i.half.includes("up") && i.lyrAuto === "on",
    "sync-room": (i) => i.sync && i.syCount === "0 / 3" && !!i.syNow,
    "sync-tapped": (i) => i.sync && i.syCount === "2 / 3",
    "sync-undone": (i) => i.sync && i.syCount === "1 / 3",
    "sync-left": (i) => !i.sync && i.half.includes("up") && /1 of 3 lines timed/.test(i.halfText),
    "sync-resumed": (i) => i.sync && i.syCount === "1 / 3",
    "sync-all": (i) => i.sync && i.syCount === "3 / 3" && /every line/.test(i.syNow),
    "sync-saved": (i) => !i.sync && i.lyrLines === 3 && !i.toast,
    /* the save's own payload carries no auto-sync flag: the switch kept its */
    "sync-saved-sheet": (i) => i.half.includes("up") && i.lyrAuto === "off",
    "lyrics-reduced": (i) => /instrumental\.wav$/.test(i.trackPath) && !i.toast,
    "lyrics-original": (i) => !!i.trackPath && !/instrumental\.wav$/.test(i.trackPath) && !i.toast,
