From effb42b6c6f082b1551504a2ebd3593672864f41 Mon Sep 17 00:00:00 2001 From: Pauljd Date: Wed, 4 Nov 2026 21:41:38 +0000 Subject: [PATCH] 0.110.0: After Dark: The Naughty List (fixed slots, holds, ident), built and replayed, not installed Co-Authored-By: Claude Opus 5.5 (1M context) --- android/app/build.gradle.kts | 4 +- .../java/tv/orbit/classic/AdventOnOrbit.kt | 36 +++++++++++++ .../main/java/tv/orbit/classic/BlockIdents.kt | 2 + .../java/tv/orbit/classic/ChannelScheduler.kt | 22 ++++---- .../main/java/tv/orbit/classic/EmbyClient.kt | 2 +- .../tv/orbit/classic/SecureMediaDataSource.kt | 2 +- .../main/java/tv/orbit/classic/WhatsOnPage.kt | 1 + .../main/res/raw/block_afterdark_naughty.mp4 | Bin 0 -> 99440 bytes .../res/raw/block_afterdark_naughty_sting.m4a | Bin 0 -> 14257 bytes .../tv/orbit/classic/AdventOnOrbitTest.kt | 16 ++++++ .../java/tv/orbit/classic/AdventReplayTest.kt | 23 ++++++-- docs/VERIFICATION-0.110.0.md | 49 ++++++++++++++++++ docs/replays/advent-and-naughty-0.110.0.txt | 45 ++++++++++++++++ 13 files changed, 183 insertions(+), 19 deletions(-) create mode 100644 android/app/src/main/res/raw/block_afterdark_naughty.mp4 create mode 100644 android/app/src/main/res/raw/block_afterdark_naughty_sting.m4a create mode 100644 docs/VERIFICATION-0.110.0.md create mode 100644 docs/replays/advent-and-naughty-0.110.0.txt diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index d8f2d4a..0230aca 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -9,8 +9,8 @@ android { applicationId = "tv.orbit.classic" minSdk = 26 targetSdk = 36 - versionCode = 159 - versionName = "0.109.1-advent" + versionCode = 160 + versionName = "0.110.0-naughty-list" } buildFeatures { compose = true } compileOptions { sourceCompatibility = JavaVersion.VERSION_17; targetCompatibility = JavaVersion.VERSION_17 } diff --git a/android/app/src/main/java/tv/orbit/classic/AdventOnOrbit.kt b/android/app/src/main/java/tv/orbit/classic/AdventOnOrbit.kt index 9880298..199ac2d 100644 --- a/android/app/src/main/java/tv/orbit/classic/AdventOnOrbit.kt +++ b/android/app/src/main/java/tv/orbit/classic/AdventOnOrbit.kt @@ -77,3 +77,39 @@ internal fun adventHeld(zone: ZoneId = ZoneId.systemDefault()): (PoolSeries, Lon return { film, atMs -> doors.any { (door, doorMs) -> (film.id == door.film.itemId || seriesKey(film.title) == seriesKey(door.film.title)) && kotlin.math.abs(atMs - doorMs) < ADVENT_HOLD_MS } } } + +/** + * After Dark: The Naughty List (approved by Paul on 4 November 2026; docs/after-dark-naughty-list-proposal.md): adult Christmas + * horror on weeknights at 23:00, kept apart from the family Advent. Built exactly as Advent's doors are: fixed slots from + * films verified on the box, each held out of every rotation either side of its night. + */ +internal class NaughtyNight(val at: LocalDateTime, val film: EventFilm) + +private fun night(day: Int) = LocalDateTime.of(2026, Month.DECEMBER, day, 23, 0) + +internal val NaughtyList: List = listOf( + NaughtyNight(night(3), EventFilm("Gremlins", 1984, "tt0087363", "5669960")), + NaughtyNight(night(10), EventFilm("Krampus", 2015, "tt3850590", "6387682")), + NaughtyNight(night(17), EventFilm("Better Watch Out", 2016, "tt4443658", "6398602")), + NaughtyNight(night(21), EventFilm("Saint", 2010, "tt1167675", "7317412")), + NaughtyNight(night(22), EventFilm("Anna and the Apocalypse", 2017, "tt6433880", "6045853")), + NaughtyNight(night(23), EventFilm("Black Christmas", 1974, "tt0071222", "6053560"))) + +internal const val NAUGHTY_WHY = "naughty list: " +internal const val NAUGHTY_KEY = "afterdark.naughty" + +internal fun naughtySlots(channel: Int, films: Map, zone: ZoneId = ZoneId.systemDefault()): List = + if (channel != AFTER_DARK_NUMBER) emptyList() else NaughtyList.mapNotNull { night -> + val film = films[night.film.itemId] ?: return@mapNotNull null + FixedSlot(night.at.atZone(zone).toInstant().toEpochMilli(), film, "$NAUGHTY_WHY${night.film.title}; fixed, approved 4 November 2026", NAUGHTY_KEY) + } + +/** Every December fixed film, Advent's and the Naughty List's, as (film, its time). */ +internal fun seasonalFilms(): List> = AdventDoors.map { it.film to it.at } + NaughtyList.map { it.film to it.at } + +/** [adventHeld] for every seasonal fixed film: Advent's doors and the Naughty List's nights. */ +internal fun seasonalHeld(zone: ZoneId = ZoneId.systemDefault()): (PoolSeries, Long) -> Boolean { + val fixed = seasonalFilms().map { (film, at) -> film to at.atZone(zone).toInstant().toEpochMilli() } + return { film, atMs -> fixed.any { (fixedFilm, fixedMs) -> + (film.id == fixedFilm.itemId || seriesKey(film.title) == seriesKey(fixedFilm.title)) && kotlin.math.abs(atMs - fixedMs) < ADVENT_HOLD_MS } } +} diff --git a/android/app/src/main/java/tv/orbit/classic/BlockIdents.kt b/android/app/src/main/java/tv/orbit/classic/BlockIdents.kt index 1b6c535..ba04734 100644 --- a/android/app/src/main/java/tv/orbit/classic/BlockIdents.kt +++ b/android/app/src/main/java/tv/orbit/classic/BlockIdents.kt @@ -55,6 +55,8 @@ internal val BlockIdents: Map = mapOf( // Advent on Orbit (approved 4 November 2026): one shared door for Doors 1 to 24, numbered and filled from the booking, and Door 25's own. ADVENT_DOOR_KEY to BlockIdent(R.raw.block_advent_door, R.raw.block_advent_door_sting, BlockOverlay.AdventDoor), ADVENT_DOOR_25_KEY to BlockIdent(R.raw.block_advent_door25, R.raw.block_advent_door25_sting, BlockOverlay.AdventDoor25), + // After Dark: The Naughty List (approved 4 November 2026): the whole title is in the clip. + NAUGHTY_KEY to BlockIdent(R.raw.block_afterdark_naughty, R.raw.block_afterdark_naughty_sting), ) + RingXNights.keys.associateWith { BlockIdent(R.raw.block_ringx_nights, R.raw.block_ringx_nights_sting, BlockOverlay.RingXNight) } /** Orbit's own names for Ring X's weekly nights (approved 3 November 2026), and each night's rope colour. */ diff --git a/android/app/src/main/java/tv/orbit/classic/ChannelScheduler.kt b/android/app/src/main/java/tv/orbit/classic/ChannelScheduler.kt index 39e576b..c20b129 100644 --- a/android/app/src/main/java/tv/orbit/classic/ChannelScheduler.kt +++ b/android/app/src/main/java/tv/orbit/classic/ChannelScheduler.kt @@ -80,25 +80,24 @@ internal class ChannelScheduler(private val store: ScheduleStore, private val cl val events = DriveInEvents.filter { !it.evening.isBefore(java.time.Instant.ofEpochMilli(now).atZone(java.time.ZoneId.systemDefault()).toLocalDate().minusDays(1)) } val eventFilms = withoutFailed(eventFilms(userId, session, events, now), failed).associateBy { it.id } val plan = planDriveIn(existing, films(DriveInMarqueeChannels), films(DriveInLateChannels), films(DriveInBillChannels), now, avoid = avoid, - events = events, eventFilms = eventFilms, note = { Log.i("OrbitSchedule", "channel=$DRIVE_IN_NUMBER $it") }, alsoHeld = adventHeld()) ?: return existing + events = events, eventFilms = eventFilms, note = { Log.i("OrbitSchedule", "channel=$DRIVE_IN_NUMBER $it") }, alsoHeld = seasonalHeld()) ?: return existing if (plan !== existing) store.savePlan(userId, DRIVE_IN_NUMBER, plan) Log.i("OrbitSchedule", "channel=$DRIVE_IN_NUMBER programmes=${plan.entries.size}") return plan } /** - * The Advent doors' verified films, read at most once a day, and only from mid-November, when the first door comes inside + * The Advent doors' and the Naughty List's verified films, read at most once a day, and only from mid-November, when the first door comes inside * a week's booking. A read that fails keeps the last verified list; with no verified film, a door simply isn't booked. */ private fun adventFilms(userId: String, session: EmbySampleSession, now: Long): List { - val first = AdventDoors.minOf { it.at.atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli() } - val last = AdventDoors.maxOf { it.at.atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli() } - if (now < first - SCHEDULE_AHEAD_MS - 2 * 24 * 60 * 60_000L || now > last) return emptyList() - val signature = "advent:" + AdventDoors.joinToString(",") { it.film.itemId } + val times = seasonalFilms().map { it.second.atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli() } + if (now < times.min() - SCHEDULE_AHEAD_MS - 2 * 24 * 60 * 60_000L || now > times.max()) return emptyList() + val signature = "advent:" + seasonalFilms().joinToString(",") { it.first.itemId } val saved = store.loadPool(userId, ADVENT_POOL)?.takeIf { it.signature == signature } if (saved != null && now - saved.fetchedAtMs < 24 * 60 * 60_000L) return saved.series return try { - val checks = session.readFilmChecks(AdventDoors.map { it.film to null }) + val checks = session.readFilmChecks(seasonalFilms().map { it.first to null }) Log.i("OrbitSchedule", "advent films=${checks.size} " + checks.values.groupingBy { it.reason }.eachCount().entries.joinToString(" ") { "${it.key.replace(' ', '_')}=${it.value}" }) withoutFailed(checks.values.mapNotNull { it.film }, store.loadFailed(userId)).also { store.savePool(userId, ADVENT_POOL, ScheduleStore.SavedPool(it, now, signature)) } } catch (failure: EmbyCheckException) { @@ -200,13 +199,14 @@ internal class ChannelScheduler(private val store: ScheduleStore, private val cl .also { othersMs = android.os.SystemClock.elapsedRealtime() - began } } // Advent on Orbit: this channel's doors as fixed slots, from films verified on the box; every film channel holds them back. - val fixed = if (programming.filmRestMs != null && AdventDoors.any { it.channel == number }) adventSlots(number, adventFilms(userId, session, now).associateBy { it.id }) else emptyList() + val fixed = if (programming.filmRestMs != null && (AdventDoors.any { it.channel == number } || number == AFTER_DARK_NUMBER)) + adventFilms(userId, session, now).associateBy { it.id }.let { films -> adventSlots(number, films) + naughtySlots(number, films) } else emptyList() val plan = topUpPlan(existing, base, pool?.series?.let { withoutFailed(it, store.loadFailed(userId)) }, now, programming.filmRestMs, programming.finishTogether, programming.dayParts, avoid = { show, startMs, endMs -> others(show, startMs, endMs) }, shuffle = programming.shuffleEpisodes, mixed = programming::mixes, weightOf = programming.tierWeights?.let { programming::weightOf }, adaptiveRest = programming.adaptiveFilmRest, stories = programming.storyGrouping, - fixed = fixed, held = adventHeld()) ?: throw EmbyCheckException("${programming.name} has no episodes to schedule.") - if (plan !== existing) plan.entries.filter { it.why.startsWith(ADVENT_WHY) && existing?.entries?.none { e -> e.startMs == it.startMs } != false } - .forEach { Log.i("OrbitSchedule", "channel=$number advent door=${it.why.removePrefix(ADVENT_WHY).substringBefore(';')} booked lateMin=${(it.startMs - (fixed.firstOrNull { f -> f.film.id == it.seriesId }?.startMs ?: it.startMs)) / 60_000}") } + fixed = fixed, held = seasonalHeld()) ?: throw EmbyCheckException("${programming.name} has no episodes to schedule.") + if (plan !== existing) plan.entries.filter { (it.why.startsWith(ADVENT_WHY) || it.why.startsWith(NAUGHTY_WHY)) && existing?.entries?.none { e -> e.startMs == it.startMs } != false } + .forEach { Log.i("OrbitSchedule", "channel=$number ${if (it.why.startsWith(ADVENT_WHY)) "advent door=" + it.why.removePrefix(ADVENT_WHY).substringBefore(';') else "naughty"} booked lateMin=${(it.startMs - (fixed.firstOrNull { f -> f.film.id == it.seriesId }?.startMs ?: it.startMs)) / 60_000}") } if (plan !== existing) store.savePlan(userId, number, plan) // Stage C, report only: every work any plan books, so "not yet shown on Orbit" has evidence. if (plan !== existing) runCatching { diff --git a/android/app/src/main/java/tv/orbit/classic/EmbyClient.kt b/android/app/src/main/java/tv/orbit/classic/EmbyClient.kt index a76b9db..e696e2c 100644 --- a/android/app/src/main/java/tv/orbit/classic/EmbyClient.kt +++ b/android/app/src/main/java/tv/orbit/classic/EmbyClient.kt @@ -66,7 +66,7 @@ internal class HttpsEmbyTransport(internal val deviceId: String = UUID.randomUUI connection.connectTimeout = 10_000 connection.readTimeout = request.readTimeoutMs ?: if (request.path == "/Sessions/Logout") 5_000 else 15_000 connection.setRequestProperty("Accept", "application/json") - connection.setRequestProperty("X-Emby-Authorization", "Emby Client=\"Orbit TV\", Device=\"Orbit TV\", DeviceId=\"$deviceId\", Version=\"0.109.1\"") + connection.setRequestProperty("X-Emby-Authorization", "Emby Client=\"Orbit TV\", Device=\"Orbit TV\", DeviceId=\"$deviceId\", Version=\"0.110.0\"") request.token?.let { connection.setRequestProperty("X-Emby-Token", it) } if (request.method == "POST") { val bytes = request.body.orEmpty().toByteArray(Charsets.UTF_8) diff --git a/android/app/src/main/java/tv/orbit/classic/SecureMediaDataSource.kt b/android/app/src/main/java/tv/orbit/classic/SecureMediaDataSource.kt index 2fa4a2d..2c50423 100644 --- a/android/app/src/main/java/tv/orbit/classic/SecureMediaDataSource.kt +++ b/android/app/src/main/java/tv/orbit/classic/SecureMediaDataSource.kt @@ -33,7 +33,7 @@ internal class SecureMediaDataSource(private val session: EmbySampleSession) : B next.instanceFollowRedirects = false next.connectTimeout = 10_000 next.readTimeout = 20_000 - next.setRequestProperty("User-Agent", "OrbitTV/0.109.1") + next.setRequestProperty("User-Agent", "OrbitTV/0.110.0") next.setRequestProperty("Accept-Encoding", "identity") session.mediaHeaders(address).forEach { (key, value) -> next.setRequestProperty(key, value) } if (dataSpec.position != 0L || dataSpec.length != C.LENGTH_UNSET.toLong()) { diff --git a/android/app/src/main/java/tv/orbit/classic/WhatsOnPage.kt b/android/app/src/main/java/tv/orbit/classic/WhatsOnPage.kt index 3ad381a..4e0508d 100644 --- a/android/app/src/main/java/tv/orbit/classic/WhatsOnPage.kt +++ b/android/app/src/main/java/tv/orbit/classic/WhatsOnPage.kt @@ -45,6 +45,7 @@ internal fun whatsOnRule(channel: Int, entry: ScheduleEntry, zone: ZoneId): Trip "premiere: first airing on Orbit" in why -> Triple("FIRST ON ORBIT", "A first airing on Orbit", 100) // An Advent door, only ever from its confirmed booking; its number is the broadcast's own date. why.startsWith(ADVENT_WHY) -> adventDoorNumber(entry.startMs, zone)?.let { Triple("ADVENT ON ORBIT ยท DOOR $it", "Advent on Orbit", 90) } + why.startsWith(NAUGHTY_WHY) -> Triple("THE NAUGHTY LIST", "After Dark's Christmas nightmares", 85) entry.presentation.isNotEmpty() && why.startsWith("event") -> Triple(if (channel == 401) "SPECIAL EVENT" else "WEEKLY EVENT", "A booked channel event", 80) why.contains("story: part 1 of") -> Triple("COMPLETE STORY", "A whole multi-part story, back to back", 60) entry.media.item.type == "Movie" && channel in 300..399 && hour in 19..22 -> Triple("TONIGHT'S FILM", "An evening film on a film channel", 40) diff --git a/android/app/src/main/res/raw/block_afterdark_naughty.mp4 b/android/app/src/main/res/raw/block_afterdark_naughty.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..39ddb9d321619b1500b0b9d2a48053372d9f8e77 GIT binary patch literal 99440 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 T{$s}fN%^0b_G|oq1O5I#7XU|q literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/raw/block_afterdark_naughty_sting.m4a b/android/app/src/main/res/raw/block_afterdark_naughty_sting.m4a new file mode 100644 index 0000000000000000000000000000000000000000..1cd5ae808c22303eb7bb40e9f20224e150abaf22 GIT binary patch literal 14257 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 z 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 K=lT1yyZ-|;dHYZR literal 0 HcmV?d00001 diff --git a/android/app/src/test/java/tv/orbit/classic/AdventOnOrbitTest.kt b/android/app/src/test/java/tv/orbit/classic/AdventOnOrbitTest.kt index 2ecdbad..994c2e3 100644 --- a/android/app/src/test/java/tv/orbit/classic/AdventOnOrbitTest.kt +++ b/android/app/src/test/java/tv/orbit/classic/AdventOnOrbitTest.kt @@ -101,4 +101,20 @@ class AdventOnOrbitTest { val empty = whatsOnPage(mapOf(612 to unbooked), null, at(12, 1, 13), london) assertTrue((listOfNotNull(empty.pick) + empty.tonight + empty.comingUp).none { it.tag.startsWith("ADVENT") }) } + + @Test fun theNaughtyListIsAfterDarksOwnAndApartFromAdvent() { + assertEquals(6, NaughtyList.size) + assertTrue(NaughtyList.all { it.at.hour == 23 && it.at.month == java.time.Month.DECEMBER && it.at.dayOfWeek !in setOf(java.time.DayOfWeek.FRIDAY, java.time.DayOfWeek.SATURDAY, java.time.DayOfWeek.SUNDAY) }) + assertTrue(NaughtyList.none { n -> AdventDoors.any { it.film.itemId == n.film.itemId } }) + val krampus = film("Krampus", 97, "6387682") + assertEquals(1, naughtySlots(AFTER_DARK_NUMBER, mapOf(krampus.id to krampus), london).size) + assertTrue(naughtySlots(612, mapOf(krampus.id to krampus), london).isEmpty()) + assertEquals(NAUGHTY_KEY, naughtySlots(AFTER_DARK_NUMBER, mapOf(krampus.id to krampus), london).single().presentation) + // Gremlins (3 December) is held on VHS and everywhere else around its night, and Klaus still for Advent. + val held = seasonalHeld(london) + assertTrue(held(film("Gremlins", 106, "5669960"), at(11, 25, 12))) + assertFalse(held(film("Gremlins", 106, "5669960"), at(11, 10, 12))) + assertTrue(held(klaus, at(12, 1, 12))) + assertTrue(BlockIdents.containsKey(NAUGHTY_KEY) && BlockIdents.containsKey(ADVENT_DOOR_KEY) && BlockIdents.containsKey(ADVENT_DOOR_25_KEY)) + } } diff --git a/android/app/src/test/java/tv/orbit/classic/AdventReplayTest.kt b/android/app/src/test/java/tv/orbit/classic/AdventReplayTest.kt index fa37bd1..10e3c28 100644 --- a/android/app/src/test/java/tv/orbit/classic/AdventReplayTest.kt +++ b/android/app/src/test/java/tv/orbit/classic/AdventReplayTest.kt @@ -48,7 +48,7 @@ class AdventReplayTest { val films = (0 until listed.length()).map { listed.getJSONObject(it) }.associate { o -> o.getString("id") to PoolSeries(o.getString("id"), o.getString("title"), listOf(PoolEpisode(o.getString("id"), "src", EpisodeMark(1, 1), o.getString("title"), o.getLong("ms")))) } - val held = if (advent) adventHeld(zone) else { _: PoolSeries, _: Long -> false } + val held = if (advent) seasonalHeld(zone) else { _: PoolSeries, _: Long -> false } val channels = SmartChannels.sortedBy { it.number }.filter { File(dir, "schedule-${it.number}.json").exists() && File(dir, "episodes-${it.number}.json").exists() } val plans = channels.associate { it.number to plan(File(dir, "schedule-${it.number}.json"))!! }.toMutableMap() val pools = channels.associate { it.number to pool(File(dir, "episodes-${it.number}.json")) } @@ -59,7 +59,7 @@ class AdventReplayTest { for (programming in channels) { val number = programming.number val others = clashesWith(plans.filterKeys { it != number }.values.toList()) - val fixed = if (advent && programming.filmRestMs != null) adventSlots(number, films, zone) else emptyList() + val fixed = if (advent && programming.filmRestMs != null) adventSlots(number, films, zone) + naughtySlots(number, films, zone) else emptyList() val next = topUpPlan(plans[number], ScheduleCursor(), pools[number], now, programming.filmRestMs, programming.finishTogether, programming.dayParts, zone, others, shuffle = programming.shuffleEpisodes, mixed = programming::mixes, weightOf = programming.tierWeights?.let { programming::weightOf }, adaptiveRest = programming.adaptiveFilmRest, stories = programming.storyGrouping, fixed = fixed, held = held) ?: continue @@ -82,10 +82,17 @@ class AdventReplayTest { out.appendLine("Door %2d %-3d %s %s".format(door.door, door.channel, door.film.title, if (booked == null) "NOT BOOKED" else "booked %s %02d:%02d (%+d min) %d min, key %s".format(at!!.toLocalDate(), at.hour, at.minute, (booked.startMs - doorStarts[door.door]!!) / 60_000, booked.media.durationMs / 60_000, booked.presentation))) } + for (night in NaughtyList) { + val booked = with[AFTER_DARK_NUMBER].orEmpty().firstOrNull { it.why.startsWith(NAUGHTY_WHY) && it.seriesId == night.film.itemId } + val at = booked?.let { Instant.ofEpochMilli(it.startMs).atZone(zone) } + val due = night.at.atZone(zone).toInstant().toEpochMilli() + out.appendLine("Naughty %s %s".format(night.film.title, if (booked == null) "NOT BOOKED" else "booked %s %02d:%02d (%+d min) %d min, key %s".format(at!!.toLocalDate(), at.hour, at.minute, (booked.startMs - due) / 60_000, booked.media.durationMs / 60_000, booked.presentation))) + } // Checks: no overlaps anywhere; committed bookings kept; no door film in any rotation within its hold; nothing changed on channels without doors before the holds. val overlaps = with.mapValues { (_, e) -> e.sortedBy { it.startMs }.zipWithNext().count { (a, b) -> a.endMs > b.startMs } }.filterValues { it > 0 } - val holdBreaks = with.flatMap { (number, entries) -> entries.filter { e -> !e.why.startsWith(ADVENT_WHY) && AdventDoors.any { d -> - (e.seriesId == d.film.itemId || seriesKey(e.media.item.title) == seriesKey(d.film.title)) && kotlin.math.abs(e.startMs - doorStarts[d.door]!!) < ADVENT_HOLD_MS } }.map { "$number ${it.media.item.title}" } } + val fixedTimes = seasonalFilms().map { (film, at) -> film to at.atZone(zone).toInstant().toEpochMilli() } + val holdBreaks = with.flatMap { (number, entries) -> entries.filter { e -> !e.why.startsWith(ADVENT_WHY) && !e.why.startsWith(NAUGHTY_WHY) && fixedTimes.any { (film, ms) -> + (e.seriesId == film.itemId || seriesKey(e.media.item.title) == seriesKey(film.title)) && kotlin.math.abs(e.startMs - ms) < ADVENT_HOLD_MS } }.map { "$number ${it.media.item.title}" } } .filter { line -> AdventDoors.none { d -> line.endsWith(d.film.title) } || true } val committed = SmartChannels.mapNotNull { p -> plan(File(dir, "schedule-${p.number}.json"))?.let { p.number to it } } .count { (number, plan) -> with[number]?.take(plan.entries.size) != plan.entries } @@ -109,6 +116,14 @@ class AdventReplayTest { out.appendLine(" %02d:%02d %3d min %s | %s".format(t.hour, t.minute, e.media.durationMs / 60_000, e.media.item.title, e.why.take(140))) } } + for (night in NaughtyList.filter { n -> with[AFTER_DARK_NUMBER].orEmpty().none { it.why.startsWith(NAUGHTY_WHY) && it.seriesId == n.film.itemId } }) { + val at = night.at.atZone(zone).toInstant().toEpochMilli() + out.appendLine("around ${night.film.title}:") + with[AFTER_DARK_NUMBER].orEmpty().filter { it.endMs > at - 6 * 60 * 60_000L && it.startMs < at + 60 * 60_000L }.forEach { e -> + val t = Instant.ofEpochMilli(e.startMs).atZone(zone) + out.appendLine(" %02d:%02d %3d min %s | %s".format(t.hour, t.minute, e.media.durationMs / 60_000, e.media.item.title, e.why.take(150))) + } + } File(dir, "advent-doors.txt").writeText(out.toString()) println(out) } diff --git a/docs/VERIFICATION-0.110.0.md b/docs/VERIFICATION-0.110.0.md new file mode 100644 index 0000000..710acbd --- /dev/null +++ b/docs/VERIFICATION-0.110.0.md @@ -0,0 +1,49 @@ +# 0.110.0: After Dark: The Naughty List, built and replayed, NOT installed + +This is built on 0.109.1 (Advent), as its own release. Paul approved the six films and dates, the ident and the tagline on 4 November 2026. **Not installed; nothing booked.** + +## What it adds + +**Six fixed slots on After Dark (305)** at 23:00, all weeknights clear of After Dark's Friday to Sunday events (`NaughtyList` in `AdventOnOrbit.kt`): + +| Date | Film | +|---|---| +| Thu 3 Dec | Gremlins | +| Thu 10 Dec | Krampus | +| Thu 17 Dec | Better Watch Out | +| Mon 21 Dec | Saint | +| Tue 22 Dec | Anna and the Apocalypse | +| Wed 23 Dec | Black Christmas (1974) | + +**The same mechanism as the Advent doors:** +- Each film is pinned by item and IMDb ID and verified on the box in the same daily read, which now covers 31 films. +- A film that fails isn't booked, and the slot only appends. +- `seasonalHeld` holds both lists' films out of every film channel's rotation, and the Drive-In's, for 14 days either side. That holds Gremlins on VHS and the Drive-In, and Black Christmas on Orbit Horror. +- None of these films is in Advent, and none of Advent's is here. + +**Presentation:** +- Key `afterdark.naughty`, with the approved preview's clip as `res/raw/block_afterdark_naughty.mp4` plus its sting. AFTER DARK, THE NAUGHTY LIST and "Not everyone makes the nice list." are in the clip. +- What's On shows **THE NAUGHTY LIST** for a booked night only. + +## Checks + +- 488 unit tests run, 0 failures. One new test covers: the six as approved, After Dark's alone, kept apart from Advent, the holds, and the idents present. Lint is unchanged. +- **Replay on the box's own files with Advent and The Naughty List together** (`docs/replays/advent-and-naughty-0.110.0.txt`): + +| Night | Starts | Late by | +|---|---|---| +| Gremlins | 23:11 | 11 min | +| Krampus | 23:01 | 1 min | +| Better Watch Out | 23:04 | 4 min | +| Saint | 23:01 | 1 min | +| Anna and the Apocalypse | 23:00 | on time | +| Black Christmas | 23:07 | 7 min | + + - **All six nights are booked.** + - **All 25 Advent doors are still booked.** With Gremlins also held on VHS, VHS's pool is smaller, so **Door 17 (Santa Claus: The Movie) starts at 18:28, 28 minutes late**. Doors 12 and 22 on Premiere are +16 and +14, as in 0.109.1. Every other door is within 4 minutes. + - No overlaps. + - 0 committed plans changed. + - 0 held films in any rotation. +- **Rollback:** reinstall 0.109.1, which has Advent only. A night already booked stays booked as an ordinary film. + +APK: `outputs/revision-0.110.0`, signed. **Not installed.** diff --git a/docs/replays/advent-and-naughty-0.110.0.txt b/docs/replays/advent-and-naughty-0.110.0.txt new file mode 100644 index 0000000..71b78c7 --- /dev/null +++ b/docs/replays/advent-and-naughty-0.110.0.txt @@ -0,0 +1,45 @@ +Door 1 612 The Polar Express booked 2026-12-01 18:01 (+1 min) 99 min, key advent.door +Door 2 306 Scrooged booked 2026-12-02 18:04 (+4 min) 101 min, key advent.door +Door 3 309 Get Santa booked 2026-12-03 18:01 (+1 min) 102 min, key advent.door +Door 4 301 Fred Claus booked 2026-12-04 18:03 (+3 min) 115 min, key advent.door +Door 5 306 Home Alone 2: Lost in New York booked 2026-12-05 18:02 (+2 min) 120 min, key advent.door +Door 6 612 Klaus booked 2026-12-06 18:01 (+1 min) 98 min, key advent.door +Door 7 301 The Christmas Chronicles booked 2026-12-07 18:00 (+0 min) 103 min, key advent.door +Door 8 306 The Santa Clause booked 2026-12-08 18:01 (+1 min) 97 min, key advent.door +Door 9 309 A Boy Called Christmas booked 2026-12-09 18:03 (+3 min) 106 min, key advent.door +Door 10 612 The Nightmare Before Christmas booked 2026-12-10 18:03 (+3 min) 76 min, key advent.door +Door 11 306 Jingle All the Way booked 2026-12-11 18:01 (+1 min) 93 min, key advent.door +Door 12 301 How the Grinch Stole Christmas booked 2026-12-12 18:16 (+16 min) 104 min, key advent.door +Door 13 612 Arthur Christmas booked 2026-12-13 18:01 (+1 min) 97 min, key advent.door +Door 14 306 A Christmas Story booked 2026-12-14 18:03 (+3 min) 93 min, key advent.door +Door 15 309 Nativity! booked 2026-12-15 18:01 (+1 min) 105 min, key advent.door +Door 16 612 A Christmas Carol booked 2026-12-16 18:03 (+3 min) 95 min, key advent.door +Door 17 306 Santa Claus: The Movie booked 2026-12-17 18:28 (+28 min) 108 min, key advent.door +Door 18 301 Red One booked 2026-12-18 18:04 (+4 min) 124 min, key advent.door +Door 19 306 National Lampoon's Christmas Vacation booked 2026-12-19 17:01 (+1 min) 97 min, key advent.door +Door 20 612 The Grinch booked 2026-12-20 18:01 (+1 min) 85 min, key advent.door +Door 21 309 Last Christmas booked 2026-12-21 18:02 (+2 min) 102 min, key advent.door +Door 22 301 White Christmas booked 2026-12-22 18:14 (+14 min) 120 min, key advent.door +Door 23 309 Scrooge booked 2026-12-23 18:00 (+0 min) 86 min, key advent.door +Door 24 301 Miracle on 34th Street booked 2026-12-24 18:03 (+3 min) 96 min, key advent.door +Door 25 612 The Muppet Christmas Carol booked 2026-12-25 17:02 (+2 min) 86 min, key advent.door25 +Naughty Gremlins booked 2026-12-03 23:11 (+11 min) 106 min, key afterdark.naughty +Naughty Krampus booked 2026-12-10 23:01 (+1 min) 97 min, key afterdark.naughty +Naughty Better Watch Out booked 2026-12-17 23:04 (+4 min) 89 min, key afterdark.naughty +Naughty Saint booked 2026-12-21 23:01 (+1 min) 87 min, key afterdark.naughty +Naughty Anna and the Apocalypse booked 2026-12-22 23:00 (+0 min) 108 min, key afterdark.naughty +Naughty Black Christmas booked 2026-12-23 23:07 (+7 min) 97 min, key afterdark.naughty + +overlaps: {} +committed plans changed: 0 +door films in rotation within the hold: 0 [] +channels whose bookings differ from the run without Advent: [301, 304, 305, 306, 309, 602, 603, 612, 613] + 301 first differs at 2026-12-04T13:07:46.770: Apollo 13 -> Mission: Impossible - Fallout | whole pool; picked from 20 rested films, last shown 205h ago; chosen so the fixed slot at 18:00 starts on time + 304 first differs at 2026-12-05T08:45:00.524: The Ring -> The Others | no block, whole pool; picked from 21 rested films, last shown 264h ago; deferred 1 airing elsewhere + 305 first differs at 2026-12-03T20:57:35.110: Critters -> Donnie Darko | block day; picked from 7 rested films, last shown 126h ago; chosen so the fixed slot at 23:00 starts on time + 306 first differs at 2026-11-24T02:23:34.603: Gremlins -> Mac and Me | whole pool; fallback: no film past its rest, so the longest waiting + 309 first differs at 2026-12-03T13:38:09.271: Control -> Control | whole pool; fallback: no film past its rest, so the longest waiting; chosen so the fixed slot at 18:00 starts + 602 first differs at 2026-12-20T08:01:02.325: Static Shock / S4 E8 / Now You See Him... -> The Batman / S3 E3 / A Dark Knight to Remember | block 6-15; weighted: lowest tally for its tier (412), others resting or just played + 603 first differs at 2026-12-28T10:36:23.734: The Transformers / S3 E13 / Madman's Paradise -> Exosquad / S2 E16 / Miracle | block 6-18; weighted: lowest tally for its tier (528), others resting or just played + 612 first differs at 2026-11-24T11:54:53.225: Klaus -> Castle in the Sky | whole pool; fallback: no film past its rest, so the longest waiting + 613 first differs at 2026-11-22T01:08:03.394: The Polar Express -> How to Train Your Dragon | whole pool; fallback: no film past its rest, so the longest waiting