Skip to content

[Episode Chat] Redesign the upgrade screen - #6122

Merged
sztomek merged 5 commits into
feat/episode-chat-remove-episode-details-entryfrom
feat/episode-chat-upgrade-screen
Oct 13, 2026
Merged

sztomek merged 5 commits into
feat/episode-chat-remove-episode-details-entryfrom
feat/episode-chat-upgrade-screen

Conversation

@sztomek

@sztomek sztomek commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Description

Replaces the "Ask about this episode" paywall with the standard Plus upgrade flow, with a new episode chat page that matches Figma. This PR is now based on #6146, the top of the episode chat stack, because the player is the only entry point left.

Entry point

  • "Ask about this episode" in the player now opens OnboardingFlow.Upsell(OnboardingUpgradeSource.EPISODE_CHAT) when EpisodeChatAccess says the user needs Plus.
  • Tapping the action again while the upgrade flow is opening is ignored, so a double tap doesn't open it twice. The guard resets when the player is shown again.
  • ChatPaywallFragment, ChatPaywallViewModel, ChatPaywall and their test are removed. The chat module no longer depends on payment or settings.
  • Analytics: the episode_chat_paywall_shown/dismissed/subscribe_tapped events are no longer sent. The flow sends the standard upgrade events (plus_promotion_shown, etc.) with source = episode_chat. Automattic/EventHorizonSchemas#140 removes the old events.

Episode chat page in the upgrade flow

  • The title is "Ask about this episode:", followed by a "See all Plus features" link and three sample chat bubbles that slide in (EpisodeChatAnimation).
  • The plan picker, CTA and terms come from the shared upgrade screen, so prices, trials, intro offers and installments behave like every other upgrade source.
  • "See all Plus features" scrolls to the features list.
  • It uses theme colours, so it works in light and dark themes.

Strings

  • Added onboarding_episode_chat_title, onboarding_episode_chat_question_1, onboarding_episode_chat_answer and onboarding_episode_chat_question_2.
  • Removed the unused chat_paywall_title, chat_preview_ai_1, chat_preview_user_1, chat_preview_ai_2 and chat_preview_user_2, together with their translations, the same way Remove the referrals tooltip from the Profile tab #6103 did.

Fixes POC-951 https://linear.app/a8c/issue/POC-951/upgrade-screen-redesign
Figma fYQpVraWFho92vaX08U6A1-fi-279_13373

Testing Instructions

Use a debug build with "Episode Chat" on and "Episode Chat: Free Beta" off in Beta features, and an account without Plus.

  1. Play Radiolab › Grass Apes, open the full-screen player, then ⋯ › Ask about this episode.
  2. ✅ The upgrade flow opens on the episode chat page. The bubbles slide in, and Yearly is selected with "Save X%", the price per year and per week.
  3. Tap Monthly. ✅ It becomes selected, and the button changes to "Subscribe to Plus".
  4. Tap the button. ✅ The Google Play purchase sheet opens. Logcat shows the upgrade events with source=episode_chat.
  5. Go back and tap "See all Plus features". ✅ The features list shows.
  6. Switch between the light and dark themes. ✅ Both look right.
  7. Set the device font size to the largest. ✅ The plans and button are still visible.

Screenshots or Screencast

collage

Checklist

  • If this is a user-facing change, I have added an entry in CHANGELOG.md
  • Ensure the linter passes (./gradlew spotlessApply to automatically apply formatting/linting)
  • I have considered whether it makes sense to add tests for my changes
  • All strings that need to be localized are in modules/services/localization/src/main/res/values/strings.xml
  • Any jetpack compose components I added or changed are covered by compose previews
  • I have updated (or requested that someone edit) the Event Horizon schema to reflect any new or changed analytics.

I have tested any UI changes...

  • with different themes
  • with a landscape orientation
  • with the device set to have a large display and font size
  • for accessibility with TalkBack

@dangermattic

dangermattic commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator
1 Warning
⚠️ This PR is larger than 500 lines of changes. Please consider splitting it into smaller PRs for easier and faster reviews.

Generated by 🚫 Danger

@claude

claude Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @sztomek's task in 1m 7s —— View job


No blocking issues. The pricing helpers moved to services/payment with the same maths. preselectedBillingCycle defaults to Yearly, so existing Upsell callers keep their behaviour. The fragment reads the latest selected billing cycle when a button is tapped, so the chosen plan reaches the upgrade flow correctly. The removed strings have no remaining references.

Non-blocking

  • modules/features/chat/src/main/kotlin/au/com/shiftyjelly/pocketcasts/chat/ui/ChatPaywall.kt:174: in landscape, or on short screens with the largest font and display size, the plan rows and the button can push the button off-screen with no way to scroll to it. Please check landscape, which the checklist leaves untested, and let the whole column scroll if it clips. [Episode Chat] Redesign the upgrade screen #6122 (comment)

Nits

@sztomek sztomek added [Type] Feature Adding a new feature. [Project] Episode Chat [Area] Upgrade Screen Any updates to the upgrade screen labels Oct 5, 2026
@sztomek sztomek added this to the 8.23 milestone Oct 5, 2026
@sztomek
sztomek marked this pull request as ready for review October 5, 2026 11:31
@sztomek
sztomek requested a review from a team as a code owner October 5, 2026 11:31
@sztomek
sztomek requested review from geekygecko and removed request for a team October 5, 2026 11:31
@claude

claude Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @sztomek's task in 58s —— View job


The custom chat paywall has been replaced by an EPISODE_CHAT page in the standard upgrade flow. That means ChatPaywall.kt is gone, and both earlier findings (landscape clipping, no tap feedback on the plan rows) no longer apply. The new page uses the same layout as the other upgrade pages, and the module and string cleanup is consistent. One blocking issue: the episode chat paywall analytics events are no longer sent.

Blocking

  • modules/features/podcasts/src/main/java/au/com/shiftyjelly/pocketcasts/podcasts/view/episode/EpisodeFragment.kt:1340: when a non-Plus user taps "Chat with Episode", episode_chat_paywall_shown, subscribe_tapped and dismissed stop firing, because they were only sent from the deleted ChatPaywallFragment. Either track EpisodeChatPaywallShownEvent here with the episode and podcast UUIDs, or retire the events on purpose and update the schema and the description, which still says subscribe_tapped is tracked. [Episode Chat] Redesign the upgrade screen #6122 (comment)

@sztomek
sztomek force-pushed the feat/episode-chat-upgrade-screen branch from 26d0bca to c8e9cee Compare October 9, 2026 16:08
@claude

claude Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @sztomek's task in 1m 28s —— View job


The new EPISODE_CHAT page follows the same pattern as the other contextual upgrade pages. The player now opens OnboardingFlow.Upsell(EPISODE_CHAT) for non-Plus users. The earlier analytics finding is settled: the description now says the episode_chat_paywall_* events are retired, and nothing references them any more. One blocking issue: the PR removes the Episode details entry point, but the description doesn't say so.

Blocking

  • modules/features/podcasts/src/main/java/au/com/shiftyjelly/pocketcasts/podcasts/view/episode/EpisodeFragment.kt: nobody, Plus or not, can open episode chat from Episode details any more. Commits 81c0a28, 73ff393 and b82b438 delete the "Chat with Episode" row, openChat, the access check in EpisodeFragmentViewModel and the chat module dependency, which leaves the player shelf as the only entry point. The description and testing step 1 still say Episode details opens the upgrade flow. If the removal is intended, update the description and point the testing steps at the player. If not, drop those three commits and open OnboardingFlow.Upsell(OnboardingUpgradeSource.EPISODE_CHAT) from Episode details for non-Plus users. (GitHub rejected the inline comment on this file, so the finding is only here.)

@sztomek
sztomek changed the base branch from main to feat/episode-chat-remove-episode-details-entry October 9, 2026 16:09
@sztomek sztomek mentioned this pull request Oct 9, 2026
5 of 10 tasks
@claude

claude Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @sztomek's task in 41s —— View job


The branch was rebased onto #6146, and I reviewed all four commits again. The earlier blocking finding about the Episode details entry point is resolved: that removal now sits in the base PR, and the description now points the testing steps at the player. I found no new issues. The new EPISODE_CHAT page follows the same pattern as the other contextual upgrade pages. The tap guard on the player always resets, because MainActivity always starts OnboardingActivity, which pauses the fragment and resumes it on return. Nothing still refers to the removed paywall classes or strings.

@wpmobilebot wpmobilebot modified the milestones: 8.23, 8.24 Oct 12, 2026
@wpmobilebot

Copy link
Copy Markdown
Collaborator

Version 8.23 has now entered code-freeze, so the milestone of this PR has been updated to 8.24.

@sztomek
sztomek force-pushed the feat/episode-chat-remove-episode-details-entry branch from b82b438 to b71d78a Compare October 12, 2026 10:05
@sztomek
sztomek force-pushed the feat/episode-chat-upgrade-screen branch from a6de5d5 to d3d1e68 Compare October 12, 2026 10:05
@claude

claude Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @sztomek's task in 28s —— View job


This push only rebased the same four commits onto the updated base (b71d78a), and the PR's own diff hasn't changed since my last review. No earlier findings are still open, and nothing in modules/ or app/ still refers to the removed paywall classes or strings.

@sztomek
sztomek force-pushed the feat/episode-chat-remove-episode-details-entry branch from b71d78a to 4800344 Compare October 12, 2026 15:58
@sztomek
sztomek force-pushed the feat/episode-chat-upgrade-screen branch from d3d1e68 to c0f6134 Compare October 12, 2026 15:58
@claude

claude Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @sztomek's task in 26s —— View job


This push rebased the same four commits onto the updated base (4800344) again, and the PR's own diff hasn't changed since my last review. No earlier findings are still open, and nothing outside the translation files still refers to the removed paywall classes, events or strings.

@geekygecko geekygecko left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will worked well in my testing.

There was a minor issue with the messages when they were animating in they're getting clipped. If possible, it would be good to fix this.

@claude

claude Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @sztomek's task in 26s —— View job


The only new commit, cf5d69e, sets CompositingStrategy.ModulateAlpha on each bubble's graphicsLayer in EpisodeChat.kt. That should fix the clipping @geekygecko reported. While a bubble faded in (alpha < 1), its layer was drawn offscreen, and that offscreen buffer is cut to the layer's bounds, which chopped off the answer bubble's shadow. With ModulateAlpha the alpha is applied as the bubble draws, so the shadow can extend past those bounds. I haven't run it on a device, so this is from reading the code. No new issues, and no earlier findings are still open.

@sztomek
sztomek merged commit 143d36f into feat/episode-chat-remove-episode-details-entry Oct 13, 2026
20 checks passed
@sztomek
sztomek deleted the feat/episode-chat-upgrade-screen branch October 13, 2026 08:50
@claude claude Bot mentioned this pull request Oct 14, 2026
5 of 10 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Area] Upgrade Screen Any updates to the upgrade screen [Project] Episode Chat [Type] Feature Adding a new feature.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants