fix(entitlements): gate remaining paid-feature UI, drop stale beta pricing copy (#921)

* fix(entitlements): gate remaining paid-feature UI and drop stale beta pricing copy

Second post-cutover sweep. Non-payers still hit live controls that 403 at
the server gate, plus dead plan names in the inbox guide:

- document-inbox guide: remove "Gratis under beta för Open-användare /
  Pro-planen / Se priser" (plans that no longer exist); inbox stays free,
  AI extraction is pitched as part of the subscription
- payslip send button (RunProgressBar): disabled + tooltip without
  email_send; the free PDF download next to it is untouched
- skattekonto "Synkronisera nu": disabled + tooltip without skatteverket
- invoice post-create send-now dialog: skipped without email_send (the
  invoice page's SendInvoiceDialog carries the upsell)
- recurring-invoice auto_send checkbox: disabled + UpgradeNote without
  email_send, and force-unchecked so edit mode can't PATCH it back on
- AgentChat composer: replaced with UpgradeNote without ai, covering
  deep links to /chat/* and conversations opened before expiry
- /onboarding/agent server page: hasCapability(ai) redirect to
  /settings/billing before the gated composer stream starts

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(entitlements): address review findings on the gating sweep

- AgentChat: the mount effect auto-fired the first /api/agent/invoke on a
  fresh start regardless of capability; now returns early without ai, and
  Regenerate/Correction re-invokes are guarded too (real find by review bot)
- recurring auto_send upsell copy moved to i18n (auto_send_requires_subscription,
  sv+en) matching the rest of the dialog
- disabled-button tooltips wrapped in a span (payslip send + skattekonto
  sync): browsers suppress title on disabled elements

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Jakob Wennberg
2026-07-07 14:22:14 +02:00
committed by GitHub
co-authored by Claude Opus 4.7
parent ed7a178ac6
commit a566a42aec
9 changed files with 87 additions and 35 deletions
+2
View File
@@ -2754,6 +2754,7 @@
"validation_min_one_row": "At least one row required",
"send_hour_label": "Send at",
"send_hour_hint": "Swedish time",
"auto_send_requires_subscription": "Automatic sending requires a subscription. Invoices are still created as drafts each period.",
"auto_send_missing_email": "The customer has no email address. Add one to the customer to enable automatic sending."
},
"invoice_send_dialog": {
@@ -4546,6 +4547,7 @@
"action_continue": "Continue",
"action_book": "Post",
"action_send_payslips": "Send payslips",
"payslips_send_requires_subscription": "Emailing payslips requires a subscription. Download the PDFs for free.",
"action_send_payslips_again": "Send again",
"action_download_payslips": "Download all",
"action_download_agi": "Download AGI file (XML)",
+2
View File
@@ -2754,6 +2754,7 @@
"validation_min_one_row": "Minst en rad krävs",
"send_hour_label": "Skicka klockan",
"send_hour_hint": "Svensk tid",
"auto_send_requires_subscription": "Automatiskt utskick kräver ett abonnemang. Fakturorna skapas ändå som utkast varje period.",
"auto_send_missing_email": "Kunden saknar e-postadress. Lägg till en e-postadress på kundkortet för att kunna skicka automatiskt."
},
"invoice_send_dialog": {
@@ -4546,6 +4547,7 @@
"action_continue": "Fortsätt",
"action_book": "Bokför",
"action_send_payslips": "Skicka lönebesked",
"payslips_send_requires_subscription": "Utskick av lönebesked via e-post kräver ett abonnemang. Ladda ner PDF:erna gratis.",
"action_send_payslips_again": "Skicka igen",
"action_download_payslips": "Ladda ner alla",
"action_download_agi": "Ladda ner AGI-fil (XML)",