Open
Conversation
…nal configurability (#3110) ### Motivation The conditional configurability V0 feature requires new condition types in the data layer to support dynamic paywall component visibility based on variables, packages, and extended intro/promo offer conditions. ### Description - Adds `Variable`, `Package`, `SelectedPackage` data classes to `ComponentOverride.Condition` sealed interface - Extends `IntroOffer` and `PromoOffer` conditions from simple objects to data classes with `operator` and `value` fields (backwards compatible with legacy format) - Adds `EqualityOperator`, `ArrayOperator`, and `ConditionValue` types for condition evaluation - Updates `ConditionSerializer` to handle new types with fallback to `Unsupported` on parse errors - Comprehensive unit tests for deserialization, backwards compatibility, unknown types, and malformed data **Tasks:** PW-169 (1.1–1.13) Co-authored-by: Cursor <cursoragent@cursor.com>
This was referenced Feb 18, 2026
Member
Author
This stack of pull requests is managed by Graphite. Learn more about stacking. |
…on evaluation (#3111) ### Motivation The `selected_package` condition allows paywall components to change their appearance based on which package the user has selected (e.g., show different text when annual vs monthly is selected). ### Description - Introduces `ConditionContext` to carry evaluation state (`selectedPackageId`, `currentPackageId`, `customVariables`) - Extends `buildPresentedPartial` to accept `ConditionContext` parameter - Implements `SelectedPackage` condition evaluation with `in` / `not in` operators - Threads selected package ID from all component state classes through to condition evaluation - Unit tests for `selected_package` condition evaluation (in, not in, no selection) --------- Co-authored-by: Cursor <cursoragent@cursor.com>
…, and extended intro/promo condition evaluation (#3112) ### Motivation Completes the V0 condition evaluation logic. - With variable conditions paywalls can adapt based on developer custom variables. - Selected package conditions let components change based on which package the user has selected. - Intro/promo conditions now support explicit operator (`=`/`!=`) and value fields for more precise control. ### Description - Implements `Variable` condition evaluation with equality comparison and type coercion (string, bool, int, double) - Implements `SelectedPackage` condition evaluation against the currently selected package ID - Implements extended `IntroOffer` and `PromoOffer` evaluation with `operator` (`=`/`!=`) and `value` fields - Removes `Package` condition (not used by backend or dashboard) - Threads `customVariables` through `ConditionContext` to all component state classes - Wires `customVariables` from `PaywallState.Loaded` into the evaluation pipeline Co-authored-by: Cursor <cursoragent@cursor.com>
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #3117 +/- ##
==========================================
- Coverage 79.22% 79.22% -0.01%
==========================================
Files 347 347
Lines 13911 13948 +37
Branches 1884 1893 +9
==========================================
+ Hits 11021 11050 +29
- Misses 2109 2112 +3
- Partials 781 786 +5 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

THIS IS A BASE BRANCH NO NEED TO REVIEW
Add support for Conditional Configurability in paywalls
Ability to set rules for:
And ability to configure component/Package visibility