Skip to content

feat(frontend): show that paid-only AI video generators are unavailable during the trial - #2062

Open
giladresisi wants to merge 1 commit into
stagingfrom
feat/no-video-gen-on-trial
Open

giladresisi wants to merge 1 commit into
stagingfrom
feat/no-video-gen-on-trial

Conversation

@giladresisi

Copy link
Copy Markdown
Collaborator

What kind of change does this PR introduce?

Feature (frontend only, composer AI Video picker and the billing plan cards). Three disclosure points were added, all driven by the trial flag each video generator already returns from GET /media/video-options and by user.isTrailing / user.allowTrial from the user context:

  1. apps/frontend/src/components/launches/ai.video.tsx: in AiVideoModal, every generator whose trial is false gets a muted "Paid plans only, not available during the trial" line under its button while the organisation is trialing. The same line is rendered above the Generate button inside the per-type form, so a user auto-selected into a single generator sees it too.
  2. apps/frontend/src/components/billing/main.billing.component.tsx: the Features list of each plan card gets a muted "Some AI video generators are available after the trial ends" line under the bullets, only when the plan includes video credits and the viewer either can still start a trial or is on one.
  3. Two new translation keys (video_paid_plans_only, ai_videos_paid_only_note) in the English source, translated into the other locales with lingo.dev.

Deliberately unchanged: the server-side 406 gate in MediaService, the /allowed pre-check, the global finish-trial dialog, credit accounting and the generators themselves. Trial-excluded generators stay visible and clickable, so the existing "finish the trial, charge me now" flow still handles the click. There is no generator-specific logic; a future generator with trial: false is covered automatically. On self-hosted installs isTrailing is always false, so nothing new renders there.

Why was this change needed?

A Cloud user on the 7-day trial only learns that a generator is unavailable after clicking Generate, through the global 406 dialog. Nothing on the plans page, the billing feature list or the video type picker says so up front. A customer bought Standard early because of that and complained about misleading advertising. The generator that carries a real per-generation cost (currently Seedance 2.0) is held back during the trial; Image Text Slides works during the trial, which is why the billing wording says "some".

Other information:

Testing done: frontend type-check and eslint on the two changed files show no new findings (the one remaining tsc error, on subscription.provider, is pre-existing and on an untouched line). The UI was not exercised in a browser; the QA steps below are the intended manual check.

Docs follow-up: gitroomhq/postiz-docs PR (linked in a comment once opened) documents the trial restriction and renames the leftover Veo3 mentions; merge it only after this change is deployed.

QA

  1. Run locally with Stripe keys set (so isTrailing is honoured) and mark a test organisation as trialing, e.g. set Organization.isTrailing = true in the local DB, then log in as a member of that organisation.
  2. Open the composer, click AI Video. Expected: the Seedance 2.0 option shows the muted "Paid plans only, not available during the trial" line under it; Image Text Slides shows no label.
  3. Click Seedance 2.0. Expected: the same line appears above the Generate button. Click Generate. Expected: the existing "You are currently on trial" dialog with the finish-trial button still appears.
  4. Open Settings, Billing. Expected: each plan card that lists "AI Videos per month" shows "Some AI video generators are available after the trial ends" under its feature bullets.
  5. Repeat step 4 with a fresh organisation that has no subscription yet (allowTrial true, isTrailing false). Expected: the same billing line is shown; the picker labels from step 2 are not, since the organisation is not trialing.
  6. Set the organisation to isTrailing = false with an active subscription (allowTrial false). Expected: no label in the picker, no line on the billing cards.
  7. Unset STRIPE_PUBLISHABLE_KEY (self-hosted mode). Expected: nothing new renders anywhere.

Checklist:

Put a "X" in the boxes below to indicate you have followed the checklist;

  • I have read the CONTRIBUTING guide.
  • I have signed the Contributor License Agreement (CLA) (ICLA for individuals, CCLA for entities).
  • I confirm I have not used AI to submit this PR or generate code for it.
  • I checked that there were no similar issues or PRs already open for this.
  • This PR fixes just ONE issue
  • I have filled in the QA section above with real steps to verify this change.

🤖 Generated with Claude Code

https://claude.ai/code/session_01JYKE228pePE6YjDq31Vv7j

…le during the trial

Label trial-excluded generators in the AI Video picker and form, and add a caveat under the AI Videos plan bullet while a trial is relevant to the viewer. Driven by each generator's trial flag and user.isTrailing; server gate unchanged.
@strix-security

strix-security Bot commented Sep 10, 2026 •

Copy link
Copy Markdown

Strix Security Review

No security issues found.

Updated for ee2d828.


Reviewed by Strix
Re-run review · Configure security review settings

@postiz-agent

postiz-agent Bot commented Sep 10, 2026 •

Copy link
Copy Markdown

✅ Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
✅ Open Source Security 0 0 0 0 0 issues
✅ Licenses 0 0 0 0 0 issues
✅ Code Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@giladresisi

Copy link
Copy Markdown
Collaborator Author

Docs follow-up: gitroomhq/postiz-docs#249 (merge after this is deployed).

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

contribution:approved Approved contributor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant