Skip to content

Smart Playlist Episode Title Filtering#4073

Open
nicksterx wants to merge 4 commits into
Automattic:trunkfrom
nicksterx:trunk
Open

Smart Playlist Episode Title Filtering#4073
nicksterx wants to merge 4 commits into
Automattic:trunkfrom
nicksterx:trunk

Conversation

@nicksterx

Copy link
Copy Markdown
📘 Part of: #
4072

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

  1. Open Playlists
  2. Click the plus in the top right corner to create a new playlist
  3. Name your playlist for example "John Mulaney"
  4. Click Make into Smart Playlist
  5. At the bottom of Smart Playlist options select episode title
  6. In the text field for Episode Title contains type "John Mulaney"
  7. It should show you a preview of all of your podcast episodes that should meet that condition
  8. Save the playlist
  9. Enjoy

Pictures

Step Screenshot
1. Playlists empty state
2. New playlist creation
3. Smart rules selection
4. Episode title filter
5. Smart playlist preview
6. Smart rules summary

Checklist

claude and others added 4 commits March 14, 2026 01:28
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
Add episode title filter to smart playlists
@nicksterx nicksterx requested a review from a team as a code owner March 14, 2026 22:49
@nicksterx nicksterx requested review from SergioEstevao and removed request for a team March 14, 2026 22:49
@CLAassistant

CLAassistant commented Mar 14, 2026

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 3 committers have signed the CLA.

✅ nicksterx
❌ Nick Bachicha
❌ claude


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.

@SergioEstevao

Copy link
Copy Markdown
Contributor

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.

@SergioEstevao

Copy link
Copy Markdown
Contributor

Thanks for the contribution @nicksterx I will check with our product team if we want to add this filter to playlists.

@CookieyedCodes

Copy link
Copy Markdown

@SergioEstevao as a user I would love this along with a folder rule
-with the option to sort by folder order-

@nicksterx

Copy link
Copy Markdown
Author

Thanks for the contribution @nicksterx I will check with our product team if we want to add this filter to playlists.

That would be awesome! Let me know if there are any changes I need to make. Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants