summaryrefslogtreecommitdiff
path: root/.coverage-baseline
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-09-21 18:24:16 +0000
committerClaude <noreply@anthropic.com>2026-09-21 18:24:16 +0000
commitcabe26374ef047c93bcebed83d70923631910fc0 (patch)
tree4fa05d7a94870ae579c27bda1d2266097ed31150 /.coverage-baseline
parent3eb15dbd84da689943f54d48a4d4974aa3d7f017 (diff)
Actually resolve shared links, and guard against dead code
Bug report from the phone: pasting a link produced "Could not parse feed: Unexpected <! (position:START_DOCUMENT...)" -- the XML parser meeting <!DOCTYPE html>. The cause was mine. SubscriptionResolver.findFeedLink and applePodcastId were written, unit-tested, documented as how the share sheet would work, and had zero call sites. The raw URL went straight to the parser. FeedResolver now does what I said the app already did: a direct feed resolves to itself, a show's web page resolves through its link rel=alternate, an Apple Podcasts link goes through the iTunes lookup, and a YouTube channel or playlist uses YouTube's own RSS endpoint. Both entry points -- the in-app add box and the share sheet -- go through it, so they cannot drift apart again. Verified on-device against real sites: thisamericanlife.org resolved to /podcast/rss.xml, a direct megaphone feed passed through unchanged, and a YouTube handle failed with an explanation rather than opaquely. Errors are now written for a person. "Unexpected <!" told the user nothing; "That's a web page, not a podcast feed, and it doesn't link to one" tells them what to do. A test asserts parser internals never reach the UI. Fixing the class, not just the instance: - A reachability test fails when a helper object's function has no production caller. Its first version passed on the very code it was written to catch, because a bare name also matches a KDoc cross-reference -- it now requires a call-shaped match. Verified by reintroducing the original bug and watching it fail. - That audit found a real functional gap, not just unused code: QueueRepository.advance had no caller, so an episode ending never advanced the queue. Playback now marks the episode played, advances, and starts the next one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
Diffstat (limited to '.coverage-baseline')
-rw-r--r--.coverage-baseline2
1 files changed, 1 insertions, 1 deletions
diff --git a/.coverage-baseline b/.coverage-baseline
index 65bf252..93f570e 100644
--- a/.coverage-baseline
+++ b/.coverage-baseline
@@ -1 +1 @@
-70.75
+71.77