MorphPlanFeatures class

What a given MorphPlan is allowed to do. The runtime gate is always wants AND allows: • wants = the dev's opt-in via MorphFeatures on the provider • allows = an instance of this class derived from the resolved plan

The dev never instantiates this directly — it lands on BuildContext.morphPlanFeatures once the validator has resolved the plan. PlanGate / requireMorphProfessional use it to gate UI access.

Naming note: this class is MorphPlanFeatures (not MorphFeatures) because the latter is already the dev-facing opt-in flag bag from the commercial-features module. Keeping them distinct means callers can pattern-match wants && allows without type collisions.

Mirrors PlanService.PlanFeatures in chameleon-backend — when a flag moves between tiers, both files have to change in lockstep.

Annotations

Constructors

MorphPlanFeatures({required MorphPlan plan})
const

Properties

aiInsights → bool
no setter
analyticsDashboard → bool
no setter
batteryAware → bool
no setter
batteryAwareUI → bool
no setter
behavioralAnalyticsLocal → bool
no setter
behavioralSuggestions → bool
no setter
behavioralV2 → bool
V2 behavioral intelligence — zone reorder, morphing, suggestion engine. The umbrella flag every other Pro+ V2 widget keys off.
no setter
chargePatternPredictor → bool
no setter
circadianRhythm → bool
no setter
claudeInsights → bool
no setter
customInfrastructure → bool
no setter
darkModeAuto → bool
no setter
dashboardExporter → bool
no setter
fatigueBaseline → bool
no setter
fatigueCognitiveDetection → bool
no setter
fatigueDetection → bool
no setter
gpsAccelerometerFusion → bool
no setter
gpsContext → bool
no setter
gpsContextUI → bool
no setter
gripDetection → bool
no setter
hashCode → int
The hash code for this object.
no setteroverride
industryPresets → bool
no setter
interruptionRecoveryAdvanced → bool
no setter
interruptionRecoveryBasic → bool
Scroll position only — no checkout/transfer/KYC contexts.
no setter
metricsReporter → bool
no setter
morphZone → bool
no setter
multiStepWorkflow → bool
no setter
no setter
no setter
plan → MorphPlan
final
recoveryAdvanced → bool
Rich context-aware recovery (cart, transfer, KYC step, …).
no setter
recoveryContextual → bool
no setter
reorderableColumn → bool
no setter
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
sla → bool
no setter
sonnetTheme → bool
Premium Claude Sonnet for theme generation. Free silent-degrades to Haiku server-side (same JSON shape).
no setter
sso → bool
no setter
suggestionEngine → bool
no setter
systemPreferences → bool
no setter
themeGeneration → bool
no setter
whiteLabel → bool
no setter

Methods

check(String featureName, bool condition, MorphPlan requiredPlan) → bool
Returns condition and, when blocked in debug builds, prints a pointer to the upgrade URL. Used internally by the check… shortcuts below. Production builds never log (the assert closure is stripped).
checkAiInsights() → bool
checkAnalyticsDashboard() → bool
checkBatteryAware() → bool
checkBatteryAwareUI() → bool
checkBehavioralSuggestions() → bool
checkClaudeInsights() → bool
checkFatigueDetection() → bool
checkGpsContext() → bool
checkGripDetection() → bool
checkSuggestionEngine() → bool
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
override