summaryrefslogtreecommitdiff
path: root/.superpowers
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-10-19 09:12:23 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-10-19 09:12:23 +0000
commitd96c876752e95a17169d18729dd1897d2dc5731f (patch)
tree49a0e30d2930ff06db9bec1dc15ba27f5e45fc9a /.superpowers
parentd3538646200832583b6662dbdd4c292a1cfe8141 (diff)
Replace the skip readout rows with three numbers and tappable marks
Served / declared / cut on one line, a two-colour legend, and marks on the track that name themselves and seek when tapped. The per-break list and the permanent-None intro/outro rows are gone. Coverage: dropped 94.23 -> 94.15 because covered readout code was deleted. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
Diffstat (limited to '.superpowers')
-rw-r--r--.superpowers/sdd/2026-10-12-break-kinds-and-furniture-toggle/timeline-readout-report.md22
-rw-r--r--.superpowers/sdd/2026-10-12-break-kinds-and-furniture-toggle/timeline-readout.pngbin0 -> 105109 bytes
2 files changed, 22 insertions, 0 deletions
diff --git a/.superpowers/sdd/2026-10-12-break-kinds-and-furniture-toggle/timeline-readout-report.md b/.superpowers/sdd/2026-10-12-break-kinds-and-furniture-toggle/timeline-readout-report.md
new file mode 100644
index 0000000..8c53a09
--- /dev/null
+++ b/.superpowers/sdd/2026-10-12-break-kinds-and-furniture-toggle/timeline-readout-report.md
@@ -0,0 +1,22 @@
+# Timeline readout report
+
+## Changed
+- `SkipSummary.kt`: `EpisodeSkips` is now `served`, `declared`, `cut`, `status` plus derived `numbers`. No lists, no per-break strings, no intro/outro. `SkipSummary.episode(episode, ranges)` lost its `show` param. Removed `BreakLine`, `breakLines`, `offset`, `describe`, `insertedAds` (the gap of served minus declared is now what the line lets you see). Added `LEGEND_ADVERTISING`, `LEGEND_OWN_AUDIO`.
+- New `BreakTrack.kt` (pure): `markAt(marks, fraction, slop)`, `trackFraction(x, width, inset)`, `describeMark`, `markStartMs`. Split out of SkipSummary because detekt TooManyFunctions fired at 14; threshold NOT raised.
+- `EpisodeScreen.kt`: readout moved directly under the scrubber (above the buttons, so on screen without scrolling). `BreakMarks` is now a 28dp tappable strip under the slider (tap -> `BreakTrack.markAt` with 24px slop -> name shown below + `seekTo(start)`); colours tertiary (advertising) / secondary (own audio) / surfaceVariant (track) / onSurface (selected outline), all from MaterialTheme, no alpha. Dropped unused `show` plumbing.
+
+## Wording
+`Served 29:34 · Declared 22:05 · Cut 6:15` (unknown parts omitted, line absent if none known). Status line only when no breaks: `Not checked yet` / `None found` / waiting text / `Can't check this copy; redownload to get the server's` (all pinned strings unchanged). Legend: `Advertising (always cut)`, `Show's own audio (follows your setting)` (each only if that kind is present). Tap text: `Ad break, 5:00 - 10:00` via `describeKind`.
+
+## Tests
+Deliberately changed (the removed behaviour): intro/outro offset tests, per-break line tests, insertedAds tests, declared/measured/total tests -- rewritten against the new fields. Pinned describeKind/isAdvertising/markers tests unchanged. Added: three-number line, each unknown case, no-breaks, 37-break regression guard (no Collection field, no per-break text), status cases, hit-testing (inside, between, slop, overlap, none, trackFraction, describeMark).
+- Red: stubbed API, `gradle-test testDebugUnitTest -- --rerun-tasks` -> 738 tests, 15 failures (assertion errors).
+- Green: 738 tests, 0 failures, exit 0. detekt via gradle-report: 0 findings, exit 0.
+
+## Device
+emulator-5554 (doot_test_api36), debug build installed, seeded one episode (Grass Apes, 1325000 declared, 1774000 served, one intro + two ad breaks) into listen.db. Screenshot: `.superpowers/sdd/2026-10-12-break-kinds-and-furniture-toggle/timeline-readout.png`. Dark theme only; numbers, strip, legend all above the fold. Tap-on-mark NOT exercised on device (canvas has no label for android-ui, blind adb taps forbidden); its logic is unit-tested only.
+
+## Noticed, not changed
+- Seeded kind='rss' crashes the app on read (enum is PODCAST); my seed error, not a bug.
+- Cold start on the emulator ANRs the first launch (114MB APK); retry worked.
+- Light theme not checked by eye (colours are all theme roles).
diff --git a/.superpowers/sdd/2026-10-12-break-kinds-and-furniture-toggle/timeline-readout.png b/.superpowers/sdd/2026-10-12-break-kinds-and-furniture-toggle/timeline-readout.png
new file mode 100644
index 0000000..56e75d3
--- /dev/null
+++ b/.superpowers/sdd/2026-10-12-break-kinds-and-furniture-toggle/timeline-readout.png
Binary files differ