Skip to content

Sorry i made this by mistake - #722

Open
Zirren-Git wants to merge 1 commit into
off-grid-ai:mainfrom
Zirren-Git:arena/e602a693-ogam
Open

Zirren-Git wants to merge 1 commit into
off-grid-ai:mainfrom
Zirren-Git:arena/e602a693-ogam

Conversation

@Zirren-Git

@Zirren-Git Zirren-Git commented Oct 15, 2026 •

Copy link
Copy Markdown

Summary by CodeRabbit

  • New Features

    • All capabilities are now free, with no purchase, license key, or expiry required. Features are available when included in the app build.
    • The feature overview now shows what’s included and explains when an optional bundle isn’t available in a build.
    • Voice features display a helpful notice when they aren’t included, with a link to the Desktop companion.
  • Updates

    • Settings now labels the feature overview “Pro features” and no longer displays purchase promotions.
    • Sync and other optional features are available based on what’s included in the build, rather than license status.

Off Grid AI has no paid tier any more. Every capability the app has ships
unlocked for everyone: voice mode and on-device speech, custom personas,
draft-then-approve actions, MCP tools, and Personal Mesh sync.

Core no longer gates anything:
- selectHasProAccess() grants unconditionally. The credential and the
  licensed-device roster are still tracked (mesh pairing needs a device
  identity) but decide nothing.
- loadProFeatures() activates the optional pro bundle with no licence, no
  key, and no roster admission; the licence lifecycle that remains is
  bookkeeping, not enforcement.

Paywall surfaces removed:
- pricing copy (utils/proPricing), the Aha offer sheet and its trigger, the
  Settings upsell banner, the licence-key modal, the subscription management
  card, the expiry redirect, and the DEV "Turn off Pro" toggle.
- Pro entry points now route on whether this build carries the bundle (read
  from the screen/slot registries), never on entitlement: bundle -> the real
  feature, no bundle -> a Pro features screen that explains the build and
  sells nothing.

Docs and tests follow: README and the licensing plan state the free tier,
suites that asserted licence-gated access are replaced by suites asserting
the opposite, and the whole diff is annotated with why each seam survived.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: off-grid-ai/OGAM/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: a3ee397b-84e1-400a-9c43-c457a65a7404
📥 Commits

Reviewing files that changed from the base of the PR and between 285501b and b87e4b0.

📒 Files selected for processing: 60
  • App.tsx
  • README.md
  • __tests__/harness/proHarness.ts
  • __tests__/integration/licensing/proRuntimeExpiry.test.ts
  • __tests__/integration/onboarding/proBootFlow.test.ts
  • __tests__/integration/pro/everyFeatureIsFree.test.ts
  • __tests__/integration/pro/proAhaSheetPricing.rendered.test.tsx
  • __tests__/integration/pro/proExpiryRedirect.integration.test.tsx
  • __tests__/integration/pro/proPricingSettingsEntry.rendered.test.tsx
  • __tests__/integration/pro/proScreenNoDeviceLicenceShortcut.rendered.test.tsx
  • __tests__/integration/releaseCandidateE.rendered.test.tsx
  • __tests__/rntl/components/ProAhaSheet.test.tsx
  • __tests__/rntl/screens/ProDetailScreen.test.tsx
  • __tests__/rntl/screens/ProFeaturesScreen.test.tsx
  • __tests__/rntl/screens/SettingsScreen.test.tsx
  • __tests__/rntl/screens/ToolsScreen.test.tsx
  • __tests__/unit/hooks/useIsProActive.test.tsx
  • __tests__/unit/hooks/useOpenProTools.test.tsx
  • __tests__/unit/navigation/useProExpiryRedirect.test.tsx
  • __tests__/unit/services/proPrompt.test.ts
  • __tests__/unit/utils/proPricing.test.ts
  • docs/pro-licensing-plan.md
  • rules.md
  • src/bootstrap/loadProFeatures.ts
  • src/bootstrap/slotRegistry.ts
  • src/components/ChatInput/index.tsx
  • src/components/ProAhaSheet.tsx
  • src/components/index.ts
  • src/components/models/VoiceModelsEmptyState.tsx
  • src/components/models/VoiceModelsSheet.tsx
  • src/components/models/VoiceModelsUpsell.tsx
  • src/components/settings/ProUpsellBanner.tsx
  • src/components/settings/sectionRegistry.ts
  • src/constants/index.ts
  • src/hooks/useIsProActive.ts
  • src/hooks/useOpenProTools.ts
  • src/hooks/useOpenSync.ts
  • src/hooks/useProStatusLabel.ts
  • src/navigation/AppNavigator.tsx
  • src/navigation/navigationRef.ts
  • src/navigation/screenRegistry.ts
  • src/navigation/useProExpiryRedirect.ts
  • src/screens/ChatScreen/ChatMessageArea.tsx
  • src/screens/ChatScreen/index.tsx
  • src/screens/HomeScreen/index.tsx
  • src/screens/ModelsScreen/index.tsx
  • src/screens/ProDetailScreen/ProIncludedSection.tsx
  • src/screens/ProDetailScreen/ProManageSection.tsx
  • src/screens/ProDetailScreen/ProUnlockModal.tsx
  • src/screens/ProDetailScreen/index.tsx
  • src/screens/SettingsScreen.styles.ts
  • src/screens/SettingsScreen.tsx
  • src/services/generationService.ts
  • src/services/imageGenerationHelpers.ts
  • src/services/proEntitlementLifecycle.ts
  • src/services/proLicenseService.ts
  • src/services/proPrompt.ts
  • src/stores/appStore.ts
  • src/stores/proAccessSlice.ts
  • src/utils/proPricing.ts
💤 Files with no reviewable changes: 25
  • tests/unit/navigation/useProExpiryRedirect.test.tsx
  • tests/unit/services/proPrompt.test.ts
  • src/services/generationService.ts
  • tests/integration/licensing/proRuntimeExpiry.test.ts
  • src/screens/SettingsScreen.styles.ts
  • src/utils/proPricing.ts
  • src/components/settings/ProUpsellBanner.tsx
  • tests/integration/onboarding/proBootFlow.test.ts
  • tests/integration/pro/proPricingSettingsEntry.rendered.test.tsx
  • tests/integration/pro/proExpiryRedirect.integration.test.tsx
  • tests/integration/pro/proScreenNoDeviceLicenceShortcut.rendered.test.tsx
  • src/screens/ProDetailScreen/ProUnlockModal.tsx
  • src/navigation/useProExpiryRedirect.ts
  • tests/unit/utils/proPricing.test.ts
  • tests/rntl/components/ProAhaSheet.test.tsx
  • src/services/imageGenerationHelpers.ts
  • tests/rntl/screens/ProDetailScreen.test.tsx
  • tests/integration/pro/proAhaSheetPricing.rendered.test.tsx
  • src/components/index.ts
  • src/components/models/VoiceModelsUpsell.tsx
  • src/components/ProAhaSheet.tsx
  • src/constants/index.ts
  • src/screens/ChatScreen/index.tsx
  • src/screens/ProDetailScreen/ProManageSection.tsx
  • src/services/proPrompt.ts

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 7 remain after this review.

📝 Walkthrough

The app now loads available optional features without gating access on license status. It removes paid-tier prompts, purchase and license-key flows, and expiry redirects. Screens show bundle availability and provide explanatory fallbacks when optional features are absent.

Changes: Free Feature Access

Layer / File(s) Summary
Bundle loading and access state
src/bootstrap/loadProFeatures.ts, src/stores/*, src/services/proLicenseService.ts, src/services/proEntitlementLifecycle.ts, src/hooks/*, src/bootstrap/slotRegistry.ts, src/navigation/AppNavigator.tsx, src/navigation/screenRegistry.ts
loadProFeatures() activates an available bundle regardless of credential or device-admission status. License information remains in the store, and selectHasProAccess now returns true. Route availability uses registered screens.
Feature availability and fallback screens
src/components/ChatInput/index.tsx, src/components/models/*, src/screens/ChatScreen/ChatMessageArea.tsx, src/screens/HomeScreen/index.tsx, src/screens/ModelsScreen/index.tsx, src/screens/ProDetailScreen/*, src/screens/SettingsScreen*
Feature screens use bundle registration to determine availability. The Pro features screen describes included features and absent bundle surfaces. Voice and assistant fallbacks no longer offer purchase actions.
Purchase prompts and expiry redirects removed
App.tsx, src/components/ProAhaSheet.tsx, src/components/settings/ProUpsellBanner.tsx, src/navigation/*, src/screens/ChatScreen/index.tsx, src/screens/ProDetailScreen/*, src/services/*, src/utils/proPricing.ts
The app removes purchase prompts, pricing and license-key screens, Pro upsell surfaces, and the expiry redirect. Text and image generation retain share-prompt scheduling without Pro prompts.
Updated tests and free-feature documentation
__tests__/*, README.md, docs/pro-licensing-plan.md, rules.md
Tests cover bundle-based access, free-feature messaging, and absent-bundle behavior. Documentation describes the free-feature model and the remaining role of license plumbing.

Priority: ➖ Normal

Estimated code review effort: 4 (Complex) | ~60 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant App as App bootstrap
  participant Loader as loadProFeatures
  participant License as Pro license provider
  participant Store as App store
  participant Sync as Sync bootstrap
  participant Bundle as Optional pro bundle
  App->>Loader: Load available features
  Loader->>License: Read license information
  Loader->>Store: Record license projection
  Loader->>Sync: Register Sync bootstrap when available
  Loader->>Bundle: Activate bundle
Loading

Suggested reviewers: alichherawalla

Merge Risk: ⚪ Minimal · up to b87e4

No confirmed issue remains that should delay merging. The free-feature messaging accurately describes the available capabilities.

Pre-merge checks: Passed 2 · Failed 3

Failed Failed checks: 3 warnings

Check name Status Explanation Resolution
Description check Warning No pull request description was provided. The required summary, change type, testing details, and other template sections are missing. Add a description that follows the repository template. Summarize the free-feature and paywall changes, select the change type, document UI changes, report tests and platform validation, and add related issues or notes as applicable.
Docstring Coverage Warning Docstring coverage is 60.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 15 functions across 32 files. (3 skipped:… Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check Warning The title is unrelated to the pull request. The changes remove the paid tier and make features free, but the title only states that the change was made by mistake. Replace the title with a concise summary such as “Make every feature free and remove the paid tier.”
Passed Passed checks: 2 passed
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 60.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 15 functions across 32 files. (3 skipped: 3 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sonarqubecloud

Copy link
Copy Markdown

@Zirren-Git Zirren-Git changed the title Make every feature free: remove the paid tier and the paywall Sorry i made this by mistake Oct 15, 2026

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant