Repository navigation
Conversation
Deploying podnotes with
|
| Latest commit: |
fbc8c7a
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://a01cf32b.podnotes.pages.dev |
| Branch Preview URL: | https://chhoumann-audit-ui-fixes.podnotes.pages.dev |
09d1bcf to
44e73a2
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 09d1bcfe35
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
44e73a2 to
9ebdb84
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 44e73a2d81
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
The queue identifies episodes by title everywhere (queue.add dedupes and queue.remove filters by title), so the context-menu membership check, the reorder index lookup, and the end-of-episode queue cleanup must match by title too. A composite-key check offered "Add to Queue" for a same-titled episode from another podcast, which queue.add then no-opped. Addresses the Codex review on #214.
9ebdb84 to
63edbde
Compare
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 63edbde1a4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
The queue identifies episodes by title everywhere (queue.add dedupes and queue.remove filters by title), so the context-menu membership check, the reorder index lookup, and the end-of-episode queue cleanup must match by title too. A composite-key check offered "Add to Queue" for a same-titled episode from another podcast, which queue.add then no-opped. Addresses the Codex review on #214.
Add isSameStoredEpisode, which matches a stored playlist/favorite entry by composite key and, for LEGACY entries saved without podcastName, by title alone (without matching a different podcast's same title). Use it for the favorites and playlist context-menu checks and the end-of-episode playlist cleanup, so a legacy entry is no longer treated as absent (duplicated on add, skipped on cleanup). Addresses the Codex review on #214.
63edbde to
9947269
Compare
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9947269e45
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- add a fullscreen button to video playback (no native controls) - fix the chapter-list active-row highlight to track currentTime (the reactive statement had no dependencies) and follow a clicked chapter - clear stale chapters on episode switch and ignore out-of-order fetches - give the progress bar an accessible name + human-readable aria-valuetext, and the chapter list aria-controls + descriptive seek labels - restore by composite key and end-of-episode cleanup by composite key, so a same-titled episode from another podcast isn't resumed/removed by mistake
…tion - add a keyboard/mobile reachable overflow (kebab) affordance that opens the episode context menu via showAtPosition (was right-click only) - only render the playlist context-menu separator when there are playlists - settle the dropped download promise from the context menu - show the playlist/queue name on grid tiles (and stop the name from clipping/overlapping the count by letting the card grow) - validate playlist names: reject empty names and refuse to overwrite an existing playlist (data loss); key the list so per-row delete state can't drift; reset the icon dropdown after add - remove the unreachable repeat-toggle dead code - enlarge the reorder-modal action buttons to a comfortable touch target
- make Refresh actually refresh all feeds in the Latest Episodes view - avoid duplicate loading indicators for a selected feed - treat a whitespace-only search as empty and live-update an open playlist - surface feed-load and search failures (invalid feed URL, iTunes errors) to the user instead of failing silently
The queue identifies episodes by title everywhere (queue.add dedupes and queue.remove filters by title), so the context-menu membership check, the reorder index lookup, and the end-of-episode queue cleanup must match by title too. A composite-key check offered "Add to Queue" for a same-titled episode from another podcast, which queue.add then no-opped. Addresses the Codex review on #214.
Add isSameStoredEpisode, which matches a stored playlist/favorite entry by composite key and, for LEGACY entries saved without podcastName, by title alone (without matching a different podcast's same title). Use it for the favorites and playlist context-menu checks and the end-of-episode playlist cleanup, so a legacy entry is no longer treated as absent (duplicated on add, skipped on cleanup). Addresses the Codex review on #214.
A custom playlist named like a built-in (Queue/Favorites/Local Files/Played) is ambiguous because those tiles come from separate stores, so an open custom playlist could silently switch to the built-in list on refresh. Reject those names on create. Addresses the follow-up Codex review on #214.
9947269 to
fbc8c7a
Compare
|
@codex review |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
The queue identifies episodes by title everywhere (queue.add dedupes and queue.remove filters by title), so the context-menu membership check, the reorder index lookup, and the end-of-episode queue cleanup must match by title too. A composite-key check offered "Add to Queue" for a same-titled episode from another podcast, which queue.add then no-opped. Addresses the Codex review on #214.
Add isSameStoredEpisode, which matches a stored playlist/favorite entry by composite key and, for LEGACY entries saved without podcastName, by title alone (without matching a different podcast's same title). Use it for the favorites and playlist context-menu checks and the end-of-episode playlist cleanup, so a legacy entry is no longer treated as absent (duplicated on add, skipped on cleanup). Addresses the Codex review on #214.
A custom playlist named like a built-in (Queue/Favorites/Local Files/Played) is ambiguous because those tiles come from separate stores, so an open custom playlist could silently switch to the built-in list on refresh. Reject those names on create. Addresses the follow-up Codex review on #214.
* feat(player): video fullscreen, live chapter highlight, accessible seek - add a fullscreen button to video playback (no native controls) - fix the chapter-list active-row highlight to track currentTime (the reactive statement had no dependencies) and follow a clicked chapter - clear stale chapters on episode switch and ignore out-of-order fetches - give the progress bar an accessible name + human-readable aria-valuetext, and the chapter list aria-controls + descriptive seek labels - restore by composite key and end-of-episode cleanup by composite key, so a same-titled episode from another podcast isn't resumed/removed by mistake * feat(ui): reachable context menu, visible playlist names, name validation - add a keyboard/mobile reachable overflow (kebab) affordance that opens the episode context menu via showAtPosition (was right-click only) - only render the playlist context-menu separator when there are playlists - settle the dropped download promise from the context menu - show the playlist/queue name on grid tiles (and stop the name from clipping/overlapping the count by letting the card grow) - validate playlist names: reject empty names and refuse to overwrite an existing playlist (data loss); key the list so per-row delete state can't drift; reset the icon dropdown after add - remove the unreachable repeat-toggle dead code - enlarge the reorder-modal action buttons to a comfortable touch target * fix(podcastview): search, refresh, and feed-load feedback - make Refresh actually refresh all feeds in the Latest Episodes view - avoid duplicate loading indicators for a selected feed - treat a whitespace-only search as empty and live-update an open playlist - surface feed-load and search failures (invalid feed URL, iTunes errors) to the user instead of failing silently * fix(queue): keep queue context-menu and cleanup checks title-based The queue identifies episodes by title everywhere (queue.add dedupes and queue.remove filters by title), so the context-menu membership check, the reorder index lookup, and the end-of-episode queue cleanup must match by title too. A composite-key check offered "Add to Queue" for a same-titled episode from another podcast, which queue.add then no-opped. Addresses the Codex review on #214. * fix(playlists): match legacy (title-only) entries in favorites/playlists Add isSameStoredEpisode, which matches a stored playlist/favorite entry by composite key and, for LEGACY entries saved without podcastName, by title alone (without matching a different podcast's same title). Use it for the favorites and playlist context-menu checks and the end-of-episode playlist cleanup, so a legacy entry is no longer treated as absent (duplicated on add, skipped on cleanup). Addresses the Codex review on #214. * fix(playlists): reject reserved built-in names when creating a playlist A custom playlist named like a built-in (Queue/Favorites/Local Files/Played) is ambiguous because those tiles come from separate stores, so an open custom playlist could silently switch to the built-in list on refresh. Reject those names on create. Addresses the follow-up Codex review on #214.
Summary
Part 2 of 2 from the behavioral audit: the UI / interaction fixes (player, chapters, context menu, playlists, podcast view). Stacked on #213 (base is
chhoumann/audit-logic-fixes); it will retarget tomasteronce #213 merges.Each change was driven through a real Obsidian dev vault, not just unit tests, because layout/render/interaction bugs don't show up in jsdom. That pass caught one regression in this set (a playlist-tile name overlapping its count), which is fixed here.
No audit tooling or spreadsheets are included; only code and tests.
What's added / fixed
Player, chapters, accessible seek
aria-valuetext; chapter list getsaria-controlsand descriptive seek labels.Context menu, playlists, validation
showAtPosition(it was right-click only).Podcast view
Verification
lint,format:check,typecheck,build: clean.check:a11y(svelte-check): 0 errors / 0 warnings.