Skip to content

feat(billing): add Max plan to nova with cancel/resume flow#1024

Merged
graphite-app[bot] merged 1 commit into
mainfrom
max-plan-integration
May 31, 2026
Merged

feat(billing): add Max plan to nova with cancel/resume flow#1024
graphite-app[bot] merged 1 commit into
mainfrom
max-plan-integration

Conversation

@MaheshtheDev
Copy link
Copy Markdown
Member

@MaheshtheDev MaheshtheDev commented May 30, 2026

Integrate the new api_max plan ($100/mo, $130 credits) from mono into the
nova web app, mirroring mono's tier semantics.

  • Tiers: insert api_max between pro and scale; resolves to Pro-tier for feature gates while displaying as "Max" (queries.ts, use-token-usage)
  • Billing page: Max plan card ("Most Popular"), checkout/cancel/invoice wiring; advanced carousel page now 3-up (Max/Scale/Enterprise); Scale builds on Max
  • Carousel auto-opens to the page holding the current plan (Max/Scale/ Enterprise users land on their own card instead of Free+Pro)
  • Cancel: retention dialog listing what you lose + type-to-confirm "CANCEL"
  • Cancel/resume state mirroring console: detect canceledAt-scheduled cancellation, show "Cancelling" pill + "Cancels on {date} · N days left", and a "Resume plan" (uncancel) action

@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented May 30, 2026

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
supermemory-app 53c971a Commit Preview URL

Branch Preview URL
May 31 2026, 07:13 PM

Copy link
Copy Markdown
Member Author


How to use the Graphite Merge Queue

Add the label Main to this PR to add it to the merge queue.

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@MaheshtheDev MaheshtheDev marked this pull request as ready for review May 30, 2026 23:10
@graphite-app graphite-app Bot requested a review from Dhravya May 30, 2026 23:10
@claude
Copy link
Copy Markdown

claude Bot commented May 30, 2026

Claude finished @MaheshtheDev's task in 1m 1s —— View job


Re-reviewing PR after new commits

  • Check if previous timestamp normalization issue was fixed
  • Review the fix for correctness
  • Check for any new issues introduced
  • Update review summary

Overview: Re-reviewed after commit 594a9da which addresses the timestamp normalization bug from the previous review.

Fix verified: The cancelEndsAt calculation at billing.tsx:594-595 now correctly uses normalizeTimestamp() before computing the days remaining. This ensures Stripe timestamps (which may be in seconds) are properly converted to milliseconds before comparison with Date.now().

Issues found: None — the previous issue has been fixed correctly.

Score: 10/10

Clean implementation. The fix properly reuses the existing normalizeTimestamp helper, and the days calculation now works correctly regardless of whether the backend returns Unix timestamps in seconds or milliseconds. Ready to ship.

@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented May 30, 2026

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
supermemory-mcp 53c971a May 31 2026, 07:11 PM

Copy link
Copy Markdown

@claude claude Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overview: Adds Max plan ($100/mo) between Pro and Scale with full cancel/resume flow mirroring the console experience.

Issues found:

  • One potential timestamp normalization bug in the cancel countdown calculation — if the backend returns Unix timestamps in seconds (common for Stripe), the "days left" display will be incorrect. See inline comment.

Score: 9/10

Clean implementation overall. The plan tier ordering is consistent across all files, the cancel confirmation UX with type-to-confirm is solid, and the resume flow properly uses the autumn SDK's uncancel action. The auto-open carousel logic for advanced plan users is a nice touch. Just needs the timestamp fix before shipping.

Comment thread apps/web/components/settings/billing.tsx
@sreedharsreeram sreedharsreeram self-requested a review May 31, 2026 19:09
@graphite-app
Copy link
Copy Markdown

graphite-app Bot commented May 31, 2026

Merge activity

Integrate the new api_max plan ($100/mo, $130 credits) from mono into the
nova web app, mirroring mono's tier semantics.

- Tiers: insert api_max between pro and scale; resolves to Pro-tier for feature gates while displaying as "Max" (queries.ts, use-token-usage)
- Billing page: Max plan card ("Most Popular"), checkout/cancel/invoice wiring; advanced carousel page now 3-up (Max/Scale/Enterprise); Scale builds on Max
- Carousel auto-opens to the page holding the current plan (Max/Scale/ Enterprise users land on their own card instead of Free+Pro)
- Cancel: retention dialog listing what you lose + type-to-confirm "CANCEL"
- Cancel/resume state mirroring console: detect canceledAt-scheduled cancellation, show "Cancelling" pill + "Cancels on {date} · N days left", and a "Resume plan" (uncancel) action
@graphite-app graphite-app Bot force-pushed the max-plan-integration branch from 594a9da to 53c971a Compare May 31, 2026 19:10
@graphite-app graphite-app Bot merged commit 53c971a into main May 31, 2026
7 of 8 checks passed
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.

2 participants