Codex/pricing permissions refactor#1055
Merged
JhumanJ merged 47 commits intomain-v2OpnForm/OpnForm:main-v2from Mar 28, 2026
codex/pricing-permissions-refactorOpnForm/OpnForm:codex/pricing-permissions-refactorCopy head branch name to clipboard
Merged
Codex/pricing permissions refactor#1055JhumanJ merged 47 commits intomain-v2OpnForm/OpnForm:main-v2from codex/pricing-permissions-refactorOpnForm/OpnForm:codex/pricing-permissions-refactorCopy head branch name to clipboard
JhumanJ merged 47 commits intomain-v2OpnForm/OpnForm:main-v2from
codex/pricing-permissions-refactorOpnForm/OpnForm:codex/pricing-permissions-refactorCopy head branch name to clipboard
Conversation
…vements as per V2 design
…ormatting standards.
- Updated the PdfEditorNavbar.vue to change the tag from ProTag to PlanTag, aligning with the new pricing structure. - Adjusted the import statement accordingly to reflect the component name change. These changes enhance the clarity and consistency of the PDF editor's user interface.
- Removed the legacy `RequireProPlan` middleware and replaced it with a more flexible `RequirePlan` middleware that checks for the required tier based on workspace context. - Updated various controllers and services to utilize the new tier-checking logic, ensuring that feature access is correctly gated based on the workspace's plan. - Enhanced error responses to include required and current tier information for better user feedback. - Introduced a new method in the `Workspace` model to check if the workspace meets the required tier for specific features. - Adjusted tests to reflect the changes in plan requirements and feature access logic. These changes improve the clarity and maintainability of plan-related logic throughout the application.
- Updated the `User` model to replace the `hasActiveDefaultSubscription` method with `hasActivePaidSubscription`, which checks for any active paid subscriptions. - Adjusted the `Workspace` model to maintain consistent subscription filtering. - Modified tests to use string literals for subscription names instead of constants for better clarity. - Renamed `ProTag` to `PlanTag` in the EmailIntegration component for improved semantic clarity. These changes enhance the subscription management logic and improve code readability across the application.
- Changed the expected status code for unauthorized version restoration from 403 to 402. - Updated the response assertion to include the required tier information for better clarity in error messages. These modifications enhance the accuracy of the test cases related to version restoration and improve user feedback on subscription requirements.
- Added `plan_tier` to the `FormResource` to provide workspace plan information. - Updated various components to utilize `plan_tier` for feature access checks, replacing previous `is_pro` checks. - Introduced a new `requireFeature` method in `usePlanFeatures` to streamline feature access validation and prompt subscription upgrades when necessary. - Improved error handling and user feedback for features requiring specific plan tiers. These changes improve the clarity and maintainability of plan-related logic and enhance user experience by providing accurate subscription requirements.
- Updated the `plans.php` configuration to better categorize features under 'PRO' and 'BUSINESS' tiers. - Modified the `FeatureComparison.vue` component to reflect accurate file upload limits and integration statuses. - Enhanced the `SubscriptionModal.vue` to utilize a computed property for selected plan pricing, improving clarity in pricing display. - Cleaned up the `usePlanFeatures.js` by removing fallback pricing and features, relying on the manifest for accurate data. These changes streamline the feature access logic and enhance the user interface for plan comparisons and subscription details.
- Eliminated the `form_features` from the plan manifest response in the API. - Removed related functions and logic from `usePlanFeatures.js`, simplifying feature access checks. - Updated the `getRequiredTier` function to rely solely on standard features. These changes streamline the feature management process and enhance code clarity by focusing on core plan features.
- Added 'price_yearly_per_month' to each plan tier in the configuration for clearer pricing options. - Simplified the API response for the '/plan-manifest' route to return the complete tier information directly. - Refactored the `usePlanFeatures.js` to utilize the new tier structure, enhancing clarity in tier access and pricing retrieval. These changes improve the pricing model and streamline the handling of plan features across the application.
- Updated the `FeatureComparison.vue` component to dynamically retrieve plan labels and prices using the `getTierDisplayName` and `getPlanPrice` functions. - Simplified the pricing structure by utilizing computed properties for plan data, enhancing clarity and maintainability. - Adjusted the `pricing.vue` component to reflect the new plan features structure, ensuring accurate display of plan details and features. These changes improve the user interface for pricing comparisons and streamline the integration of plan features across the application.
…FAQ entry for discount eligibility. This update streamlines the pricing display while ensuring users can still find information about available discounts.
- Updated the `hasFormFeature` method to include checks for feature overrides in workspaces, improving accuracy in feature access validation. - Refactored the `getFeatures` method to merge workspace and form features more efficiently, ensuring no overlap in free workspace payloads. - Added a new test case to verify that free workspaces do not have access to paid features, enhancing test coverage for feature access logic. These changes improve the clarity and reliability of feature access management in the billing service.
- Adjusted the `Navbar.vue` component to enhance spacing and visibility of navigation links across different screen sizes. - Updated `UpgradeBanner.vue` to ensure proper formatting and consistency in script tags. - Enhanced `FormHistory.vue` with a dynamic tooltip for better user feedback based on loading state. - Improved `PasswordStrengthIndicator.vue` regex for password validation to include additional special characters. - Refined `MonthlyYearlySelector.vue` for better user interaction and visual feedback on billing options. - Streamlined `SubscriptionModal.vue` layout for clearer presentation of upgrade options and improved user experience. - Enhanced `Testimonials.vue` with dynamic styling and additional review links for better engagement. - Updated `Oidc.vue` to remove unnecessary whitespace for cleaner code. - Refactored `checkout.vue` and `error.vue` to improve checkout flow and user alerts. These changes enhance the overall user interface and experience across various components, ensuring better accessibility and clarity.
- Updated `FeatureComparison.vue` to enhance table structure and styling for better responsiveness and readability. - Simplified the pricing display logic in `pricing.vue` by removing unnecessary suffixes for plan prices. - Enhanced `Features.vue` with a new desktop layout for better feature presentation and user engagement. These changes improve the overall user experience and visual consistency across pricing and feature components.
Move displayed plan pricing to a backend-backed catalog and tighten feature access checks so unknown keys fail closed. This keeps pricing aligned with the server source of truth and closes gaps introduced by the new permissions model.
- Updated `PdfNotSupportedException` to allow nullable message parameter for better flexibility in error handling. - Refactored `HealthCheckController` to utilize the Redis factory for connection checks, enhancing reliability in health status reporting. - Modified `UserInvite` model to accept nullable `validUntil` parameter, improving data handling. - Adjusted `Version` model's `diff` method to accept nullable `againstVersion` parameter for better compatibility. - Cleaned up `TemplatesSlider.vue` by removing unused mounted lifecycle hook. - Simplified `usePlanCatalog` by initializing the catalog with an empty tiers object, improving clarity. - Enhanced integration page to conditionally display fallback content based on availability, improving user experience.
Update pricing CTAs so hosted paid plans use upgrade language when they lead into checkout, and remove self-hosted card buttons that should not present actions.
…eatures, and refactor login and register pages for improved design and functionality
Closed
* Add Playwright E2E coverage and CI gating Add a Docker-backed Playwright E2E stack, cover key auth and form flows, and run the suite before deploy in GitHub Actions. This also adds stable UI selectors and switches the E2E throttle bypass to an app environment-based flow. * Fix E2E API readiness check Avoid using a database-dependent HTTP route to detect API readiness in the E2E bootstrap. Wait for artisan to become available instead so CI does not fail while the container is still migrating. * Track E2E client environment in CI * Harden E2E auth readiness checks
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.
No description provided.