Episode detail sheet (source article, summary, open bookmark) #8
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Tapping an episode opens a detail sheet that reconnects the podcast to the
bookmark it came from: source article, AI summary, "Open bookmark," and delete.
Motivation
Right now an episode is a title + date with no way back to its origin. Podcasts
are generated from bookmarks — the detail view should let you jump to the
source, re-read, or manage the episode.
Current state of the code
PodcastEntryalready storesarticleUrl,parentBookmarkUrl,title,createdAt, and nowplayedAt.PodcastLibraryView/EpisodePickerViewrows currently only play or exposeswipe/context actions — add a tap target that presents the detail sheet.
marks://bookmark?url=deep link orpresent
BrowserViewdirectly.Bookmark.aiSummary/ClaudeService.enrichwhenthe parent bookmark is known.
Behavior
(if available), "Open bookmark", "Share episode", "Delete".
Implemented in PR #4 (
feat/podcast-app-experience). Shipped:EpisodeDetailViewwith title, source domain, created date, played badge, and actions (Play/Pause, Mark Played, Open Source, Share, Delete). Reachable from the Podcasts tab (row tap + context menu) and the episode picker. All mutations route through thePodcastLibrarystore so the tab badge stays in sync.Two deliberate deviations from the original spec, left as follow-ups:
aiDatais keyed by bookmark id, but aPodcastEntryonly carries the article/bookmark URL. Surfacing the summary would require recoupling the deliberately-decoupled Podcasts tab toBookmarksViewModel. Deferred pending that coupling decision.marks://bookmark?url=deep link, which risks sheet-stacking from within the detail sheet. Safari is reliable; in-app open can be added if desired.Both earlier deviations are now resolved (same PR/branch):
BookmarksViewModel, added a URL-keyedAISummaryStorethatBookmarksViewModelpopulates as it enriches/loads bookmarks; the detail sheet reads it by episode URL.BrowserViewas a nested sheet (the generator is threaded throughPodcastLibraryView/EpisodePickerView). Open in Safari and Share remain.#8 is fully implemented.