Commit Graph
150 Commits
Author SHA1 Message Date
Pamela Chia c0b3a86052 chore: add violation type to restriction banner (#36970) 2025-07-09 16:58:55 +12:00
Kevin Grüneberg 4984392edd fix: prevent double submission of plan change (#36765)
When changing the plan while also creating a payment method in the same breath, some customers double-clicked the confirm button leading to a double-submission and possibly leading to a state where the customer gets charged, but the plan change is not going through.
2025-06-30 19:03:59 +08:00
6f5982d635 Chore/update churn survey (#36722)
* update cancellation reasons

* update texts

* randomise options and only single select reasons

* label overrides and reason readability

* minor fixes

* fix reasons sending

* Fixes

* Adjust tooltip side

* improve header description

* add a label for radio options

* wrap shuffledReasons in useState so it doesn't randomly shuffle

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
Co-authored-by: Alaister Young <a@alaisteryoung.com>
2025-06-29 17:58:39 +08:00
Kevin Grüneberg 2c6c5d11e4 chore: cleanup pending subscription flags (#36692) 2025-06-26 18:05:04 +08:00
Kevin Grüneberg ae9ce3d010 fix: payment method selection (#36623) 2025-06-24 03:23:56 +00:00
Thomas 9f8cc1b438 Show credit balance also for partner billed organizations.
* When a Vercel customer downgrades in the middle of the billing cycle the get credits (no refund to card). To make that clearer, they need to be able to see their balance.
2025-06-24 14:24:44 +12:00
Kevin Grüneberg 680af04a06 fix: 3ds confirmation / downgrades (#36600)
- Remove captcha for downgrades to Free, it is not needed
- Properly handle 3DS if customer has multiple payment methods
- Move payment method invalidation to react-query
2025-06-23 19:03:27 +08:00
Stojan DimitrovskiandIvan Vasilov 4945ba1861 feat: add asymmetric JWT UI (#36519)
* original files from previous PR

* get rid of router in jwt-secrets to make it show up

* rename jwt-secrets page to jwt-signing-keys

* add jwt-signing-keys query

* add legacy jwt signing keys query

* wire-up JwtSecretKeysTable with queries

* add jwt signing keys page to settings menu

* deduplicate labels, descriptions, etc

* add create, update jwt-signing-key mutations

* update types

* remove unused components, to be refactored later

* make everything into a mostly working state

* legacy migration added

* put jwt keys page like api keys

* fully migrate legacy jwt secret page

* fix prettier

* fix typecheck ts-expect-error

* rm unneeded file

* Fix compile errors.

* Rename the files and move them to the same folder.

* Merge the two constant files.

* Fix the imports.

* Fix a bug in the API keys page when opening it in a new tab.

* Change the page to be at /signing-keys

* Fix some minor types.

* Break apart some of the components in the signing keys UI.

* Use a feature banner for the initial action.

* Make a create key dialog and move functionality there.

* Fix some cosmetic issues.

* Minor cosmetic fixes.

* Remove extra keys in RQ cache.

* Add a missing link

* Add a banner when the feature flag is false.

* Minor type fix.

* more tiny type fix

* fix error on create standby key

* add alert to prevent revoking legacy jwt secret without disabling legacy api keys first

---------

Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
2025-06-23 09:36:07 +12:00
Ignacio Dobronich 692f0b2d94 fix: update Change Plan modal caption and fix broken Compute Confirmation link (#36539)
* Pro Plan heading caption

* Fixed Comput costs docs link

* Revert to premium support

* Email support

* Fixed typing error in PaymentMethodSelection
2025-06-20 13:25:24 -03:00
Terry Sutton bd95e9a1b9 Chore/link to usage (#36404)
* Add link to usage page

* Add usage button
2025-06-20 13:12:47 -02:30
Etienne StalmansandJoshen Lim aeaf831648 feat: add UI to show MFA enforcement on org (#36439)
Disables organization selection if the org requires MFA but the user
does not have MFA enabled.
Add badges / hints to show that user has access to an Organization but
access is disabled because of MFA access requirement

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-06-20 14:51:11 +02:00
Kevin Grüneberg dff6074d30 feat: support pending changes for plan upgrades (#36430)
This PR implements the new flow to confirm subscription upgrades using Orb pending changes. This is backwards compatible and based on a flag exposed by the backend (`subscriptionPreview.pending_subscription_flow`).

Just like the organization creation, the entire flow is slightly different - instead of creating a payment method separately, the payment method is added inline while doing the upgrade and then attached to the customer. If payment fails, the upgrade will not go through. If payment requires additional action, the user needs to confirm the payment before allowing the upgrade.

For testing the new flow locally, toggle the flag in `flags.ts` on the backend.

Changes include
- No longer rely on the `changeType` from the plans endpoint as this is regularly out-of-sync and displays wrong up/downgrade info due to race conditions
- `readOnly` mode for Stripe elements if anything is loading/submitting
- Reduced prop drilling for some components
- Hide payment method and address selection on downgrade
2025-06-18 15:11:33 +08:00
Kevin Grüneberg 7e5850bc70 feat: prefill Stripe email + styling (#36457)
- Prefill email in Stripe form to set up Link faster or connect faster
- Overwrite a bit of styling so it looks less foreign
- Moved the Payment component from the NewOrgForm into it's own file and renamed it
2025-06-17 11:54:45 +08:00
Kevin Grüneberg ff318d07f0 feat: support pending changes (#36333)
Adds support for the new Orb pending subscription change flow that has been added to the backend.

By default, the new feature is disabled (enabled after merge on staging). If disabled, this should work just like before with the regular `confirmPayment` function that triggers 3DS if needed and properly lets a user confirm their additional factor.

With the new flag, we only create a payment method, as we will do another payment intent that is set up for future usage and that may require 3DS - so we avoid the possible double confirmation (setup confirmation + payment intent). The organization creation endpoint can either return a full organization (i.e. on Free Plan or immediate payment success) or a payment_intent_secret. In case of the secret being returned, we need to confirm the secret with the Stripe SDK.

Moved the Stripe Elements further down to avoid the entire form reloading (especially billing address) in case of a payment failure.
2025-06-13 10:27:09 +08:00
Kevin Grüneberg 28ebb85c85 fix: redirect to Vercel marketplace for plan change (#36351) 2025-06-12 15:31:58 +08:00
Kevin Grüneberg 2cd0f3c84d fix: possibly undefined breakdown in plan update modal (#36155) 2025-06-04 23:37:49 +08:00
Pamela Chia e65655981c chore: handle fair use alerts when pro plan (#36123) 2025-06-03 17:39:30 +08:00
Kevin Grüneberg 3b771c5533 fix: hide credit balance section if billed via partner (#35841) 2025-05-22 15:44:01 +02:00
Joshen Lim 9139418ef0 Chore/cleanup feature flags 130524 (#35648)
* Clean up reportsV2 feature flag

* Clean up edgeFunctionCreate feature flag

* Clean up creditTopUp feature flag

* Clean up allowOrioleDb feature flag
2025-05-14 16:56:27 +08:00
Joshen Lim fd98a08a4f Chore/default to new organization layout (#35515)
* Default to new organization layout + remove feature preview

* Remove feature preview

* Clean up LayoutUpdateBanner

* Clean up

* Fix

* Fixy fix

* Update comment

* Nit to fix layout shift
2025-05-13 11:25:35 +08:00
Kevin Grüneberg 77d99e0f04 chore: branching compute hours copy (#35524) 2025-05-07 15:31:03 +00:00
Kevin Grüneberg b4f6cc5cb8 fix: format currency (#35507) 2025-05-07 11:17:11 +12:00
Kevin Grüneberg e1bd23d66f fix: do not translate USD prices (#35466)
When translation tools go over prices, they wrongfully convert USD into other currencies without changing the price. $25 becomes Rp25 (Rupiah).

By using `translate='no'` we avoid the translation of pricing info. There are some tooltips left that are not covered yet, but this should be the majority already.

Kept the docs Pricing component as simple as possible, just wrapping in a span to avoid translation, not modifying any formatting.
2025-05-06 12:03:35 +08:00
Saxon Fletcher 3aadc009e6 feat: billing address, name and tax id for org creation/upgrade (#34922)
We currently get support requests about adding or amending invoices due to no billing address being set. Changes in this PR:
- Unify tax id and billing address into a single form
- Add ability to set billing name that diverges from org name
- Add ability to set billing address & tax id during org creation (only paid plans)
- Add ability to set billing address & tax id during plan upgrade
2025-05-02 10:10:41 +08:00
Jonathan Summers-MuirandJoshen Lim 08e5abc64a Chore: Support form | support access true as default (#35066)
* Update SupportFormV2.tsx

* Fix TS

* Update SupportFormV2.tsx

* Update SupportFormV2.tsx

* Small refactor after checking preview

* Clean up

* remove div

* Fix after merging master

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-04-16 21:10:47 +08:00
Kevin Grüneberg 679714fa75 feat: merged billing & invoices / billing tab in new org nav (#35008)
- Merge billing & invoices page
- Moved credits under payment method management to keep it closer to invoices
- Reduced invoice list to 5 by default
- Added "Billing" navigation item for new org nav
- Rewrote invoices links to use new billing invoices section
- Permanent redirect for organization invoices page
2025-04-16 19:19:39 +08:00
Kevin Grüneberg d05bbb669f perf: use subscription plan from org response (#34993) 2025-04-14 20:37:19 +08:00
Kevin Grüneberg def70f8011 feat: allow removing last payment method on free plan (#34896) 2025-04-14 17:36:38 +08:00
Kevin Grüneberg 5fa5118b35 chore: add warning if upgrade without projects (#34943) 2025-04-14 13:24:04 +08:00
Kevin Grüneberg 838c4227d0 chore: route credit package requests to sales instead of billing (#34951) 2025-04-14 09:10:33 +12:00
Kevin Grüneberg edd832bf14 fix: upcoming invoice compute costs (#34931) 2025-04-11 18:29:55 +08:00
Kevin Grüneberg 3ce7e400a1 feat: revamped invoice breakdown (#34861)
- Read Replica and Branching Compute is now explicitly listed (previously Read Replica compute was not distinguishable)
- All usage items have a link to their respective docs
- Branching Compute is aggregated into a single line item to avoid listing dozens of branches (they are listed in the tooltip still)
- Displays basic discounts with a strike-through price
- For Replica+Compute, it specifically lists the projects as sub line items, whereas other line items are not broken down, it's shown on the tooltip
- Compute credits are a sub line item under compute, rather than having it separate 
- Pricing is displayed on the tooltip
- Breakdown focuses on costs, rather than mixing cost, usage and line item pricing descriptions
- Avoid confusing users in the breakdown with hourly usage (for add-ons)
- Fixed number formatting to properly work with negative number and 0 (use 2 decimals)
- Upcoming Invoice Section is hidden for Free Plan users
2025-04-11 12:40:59 +08:00
Terry SuttonandJoshen Lim 9f6faa65bb Fix toggling of roles apply to all projects (#34871)
* Store initial state

* fixes

* Minor

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-04-11 10:41:07 +08:00
Kamil Ogórek c3a352331a ref: Fix all API types after Zod migration (#34903) 2025-04-11 10:28:08 +08:00
Alaister Young e3dae9ec36 chore: only load data in modals when they're visible (#34617)
* chore: only load data in modals when they're visible

* SidePanelGitHubRepoLinker

* scrolling is not my strong suit

* simple loading state for add new secret

* fix button width

* update to use shadcn

* fix ts
2025-04-02 16:41:47 +08:00
Kamil Ogórek 861fe9ec88 fix: Update TS checks according to latest API changes (#34372) 2025-03-25 14:24:52 +01:00
Joshen Lim 40ca927808 Chore/support updating email and unlinking identities (#33966)
* Support updating email address for email identity

* Support unlinking identity

* Deprecate AccountInformation component

* Invalidate identities after unlinking

* Address feedback

* Smol

* Fix type issues

* Update toast message

* Set up email change pending badge

* Fix

* Address feedback

* Resolve ts-expect-errors

* Fix TS issues + Fix GH icon on light mode + Address feedback
2025-03-21 17:15:05 +08:00
Pamela Chia 9793cf73ca chore: remove old plan dialog (#34291) 2025-03-19 21:21:39 +01:00
Kevin Grüneberg 5b7ffb586a chore: remove nano_enabled flag usage (#34286) 2025-03-19 18:54:57 +01:00
Saxon FletcherandKevin Grüneberg 7c04aadfa9 Feat/plan upgrade improvements (#33804)
* upgrade dialog changes

* plan upgrade modal

* update dialog improvements

* factor in customer balance

* copy

* add PH a/b test

* fix ts

* smol stuff

* fixes

* group compute fees

* smol edits

* Update SubscriptionPlanUpdateDialog.tsx

* Update SubscriptionPlanUpdateDialog.tsx

* partner billing

* downgrade

* margin

* show pricing info + filter out long tweets

* fix tooltip

---------

Co-authored-by: Kevin Grüneberg <k.grueneberg1994@gmail.com>
2025-02-27 13:31:27 +10:00
Long Hoang 69726689c9 chore: remove event enums (#33730)
* chore: remove event enums

* chore: remove more event enums

* chore: remove unused HomepageHeroRequestDemoClickedEvent

* chore: remove unused HomepageHeroRequestDemoClickedEvent

* chore: rename custom_report events to use underscores

* chore: remove telemetry enum

* chore: remove unused imports

* chore: remove enums from merged events

* chore: remove unused imports

* chore: add typedocs for module and hide exported types that are not events
2025-02-25 13:08:31 +08:00
Pamela Chia ea21e0837c fix: clarify peak connections (#33560)
* fix:  clarify peak connections

* fix: rearrange to concurrent peak connections
2025-02-13 04:06:44 +00:00
df9f410c50 docs(billing): complete rewrite
* deleted all old pages except from FAQs
* added pricing section to feature docs pages
* adjusted all links to new pages (on Dashboard, in docs, on Pricing page)
* configured redirects from old billing docs pages to new pages
---------
Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>
Co-authored-by: Kevin Grüneberg <k.grueneberg1994@gmail.com>
2025-02-12 21:05:18 +01:00
Kevin Grüneberg d78768cec4 feat: additional billing email addresses (#33408)
Customers can now set up additional billing email addresses themselves without having to reach out to us. This covers the following emails thus far:
- Invoice emails
- Payment failure emails

Dunning emails will still go out to all members to ensure visibility. The only thing this does not cover is payment receipts from Stripe, as Stripe still provides no API for setting additional emails (dashboard only for many years now)
2025-02-11 11:52:17 +08:00
Saxon FletcherandLong Hoang 15841c6bf3 track source when viewing plans (#33405)
* track source when viewing plans

* remove log

* rename event

* Update apps/studio/components/interfaces/Organization/BillingSettings/Restriction.tsx

Co-authored-by: Long Hoang <1732217+loong@users.noreply.github.com>

* Update apps/studio/components/interfaces/Organization/BillingSettings/BillingBreakdown/BillingMetric.tsx

Co-authored-by: Long Hoang <1732217+loong@users.noreply.github.com>

* Update apps/studio/components/interfaces/Organization/BillingSettings/Restriction.tsx

Co-authored-by: Long Hoang <1732217+loong@users.noreply.github.com>

* Update apps/studio/components/interfaces/Organization/BillingSettings/Restriction.tsx

Co-authored-by: Long Hoang <1732217+loong@users.noreply.github.com>

* added docs for tracking

* prettier

* chore: rename origins to give more hints on where these are coming from

---------

Co-authored-by: Long Hoang <1732217+loong@users.noreply.github.com>
2025-02-10 16:45:36 +10:00
Pamela Chia ff25c9c24c chore: add tracking on side panel open (#33349) 2025-02-05 22:27:09 +08:00
Pamela ChiaandJoshen Lim b6cefe5c25 Feat/add studio events (#33148)
* add tracking for help, feedback, import data, and example clicked

* clarify www pricing plan and add run sql query event

* add pricing plan cta tracking

* Add one more event to Import data from CSV

* Consistent copy

* Clean up and refactors

* Some fixes

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2025-02-03 20:08:30 +08:00
Kevin Grüneberg c96bd5c107 refactor: database size metric for Free Plan (#33039)
Instead of basing the database size metric for the Free Plan on summing up the average database size per project in the organization, we are going to simply enforce a database size limit of 0.5 GB per active project. Deleted projects are irrelevant and it should be much easier for customers to understand. We are querying the database size directly via the project to avoid delays.
2025-01-27 18:34:07 +08:00
Ivan Vasilov 52735e38bf chore: Rename all uses of Tooltip_Shadcn_ to just Tooltip (#32860)
* Rename all uses of Tooltip_Shadcn_ to just Tooltip.

* Fix a leftover change.
2025-01-20 22:23:45 +01:00
Francesco Sansalvadore ecd181bcd9 studio mobile v2 (#32630)
* improve some studio mobile layouts

* improve some studio mobile layouts

* improve settings

* assistant mobile

* assistant mobile

* assistant mobile

* responsive formlayout and new project layout

* improve dashboard pages headers

* improve dashboard auth pages

* mobile org settings

* mobile billing fixes

* adjust paused project container height

* remove comments

* triggers

* leftovers

* ai assistant

* fix errors

* remove 16px input size

* fix test

* merge access tokens settings page conflicsts

* smol integrations here and there
2025-01-17 19:07:35 +01:00