Smart Playlist Episode Title Filtering#4073
Conversation
Adds a new "Episode Title" smart playlist rule that lets users filter episodes by a keyword in their title. This enables use cases like tracking a recurring guest across all podcasts or finding only "bonus" or "interview" episodes. Changes: - DB migration (v72): adds filterEpisodeTitle TEXT column to SJFilteredPlaylist - EpisodeFilter: new filterEpisodeTitle property and titleSmartRuleApplied flag - PlaylistQueryBuilder: UPPER LIKE query for title filtering - SmartPlaylistRule: new .episodeTitle case with filter_list icon - PlaylistPreviewViewModel: smartRuleIsApplied + ruleText for episodeTitle - PlaylistPreviewViewController: routes .episodeTitle to new VC - EpisodeTitleFilterViewController + EpisodeTitleFilterHeaderView: new UI - Localizable.strings + Strings+Generated.swift: new L10n keys https://claude.ai/code/session_01Lp52AVzQxNVDUJQqv3eaAY
PlaylistQueryBuilderTests: - testEpisodeTitleFilterIncludesLIKEClause: verifies LIKE clause is generated - testEpisodeTitleFilterEmptyStringProducesNoLIKEClause: empty = no filter - testEpisodeTitleFilterWhitespaceOnlyProducesNoLIKEClause: whitespace = no filter - testEpisodeTitleFilterUsesUppercaseComparison: UPPER() used for case-insensitivity - testEpisodeTitleFilterEscapesSingleQuotes: SQL injection safety (O'Brien -> O''Brien) - testEpisodeTitleFilterProducesValidSQLForAllClauses: all SelectClause variants - testEpisodeTitleFilterCombinesWithOtherFilters: plays nicely with starred/unplayed - testEpisodeTitleFilterReturnsMatchingEpisodes: integration with real in-memory DB - testEpisodeTitleFilterIsCaseInsensitive: bonus/BONUS/Bonus all return same rows - testEpisodeTitleFilterReturnsNoEpisodesForNonMatchingKeyword - testEpisodeTitleFilterMatchesPartialTitle - testEpisodeTitleFilterHandlesSingleQuoteInKeyword: single-quote in DB value - testEpisodeTitleCountMatchesEpisodeCount: count clause agrees with row count EpisodeFilterColumnConsistencyTests: - filterEpisodeTitle added to round-trip save/load assertions - filterEpisodeTitle set in createFullyPopulatedEpisodeFilter - titleSmartRuleApplied verified as NOT persisted (@GRDBIgnore) https://claude.ai/code/session_01Lp52AVzQxNVDUJQqv3eaAY
…erated code not being able to build
Add episode title filter to smart playlists
|
Nick Bachicha seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
|
Hello there, First of all I want to thank you for your contribution. Keep in mind while the feature has potencial, in order to be approved it will need to be added to all our supported platforms so it can be synced between all of them. I will add this PR to our internal suggestions for Playlists and will keep you posted when. we have updates regarding this. Once again thanks for your contribution. |
|
Thanks for the contribution @nicksterx I will check with our product team if we want to add this filter to playlists. |
|
@SergioEstevao as a user I would love this along with a folder rule |
That would be awesome! Let me know if there are any changes I need to make. Thank you! |
Fixes PCIOS- 4072
Hi I hope this is appropriate. I am not a swift dev but I am a .net/python dev. I wanted this feature for a while and I firgured this would also be a good opportunity for me to try claude code.
Add episode title filter functionality to Smart Playlists.
To test
Pictures
Checklist
CHANGELOG.md(https://docs.google.com/spreadsheets/d/107jqrutZhU0fVZJ19SBqxxVKbV2NWSdQC9MFYdLiAxc/edit?usp=sharing) to reflect any new or changed analytics.