From adbfb8376727ed002a0420ce05641c3166c41dc9 Mon Sep 17 00:00:00 2001 From: Hunter Date: Sun, 8 Feb 2026 23:49:20 -0800 Subject: [PATCH] feat: wire renewal_date from cloud billing status (#8754) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Wire `renewal_date` from the cloud `/billing/status` response into the workspace subscription UI so users can see when their subscription renews. ## Problem The workspace billing adapter hardcoded `renewalDate: null` because the cloud billing status endpoint didn't return a renewal date. The `SubscriptionPanelContentWorkspace` component already has UI for displaying it — it just had no data. Personal Workspace (existing `cloud-subscription-status`): Screenshot 2026-02-08 at 7 54 53 PM Current missing data from `/billing/status`: Screenshot 2026-02-08 at 7 55 38 PM ## Solution - Add `renewal_date?: string` to `BillingStatusResponse` interface - Use `status.renewal_date ?? null` instead of hardcoded `null` in `useWorkspaceBilling` ### Related - Cloud PR: Comfy-Org/cloud#2370 (adds `renewal_date` to the endpoint) ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8754-feat-wire-renewal_date-from-cloud-billing-status-3026d73d365081c7ae51d79ef0633a1d) by [Unito](https://www.unito.io) --- src/composables/billing/useWorkspaceBilling.ts | 2 +- src/platform/workspace/api/workspaceApi.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/composables/billing/useWorkspaceBilling.ts b/src/composables/billing/useWorkspaceBilling.ts index def368e17..368e80277 100644 --- a/src/composables/billing/useWorkspaceBilling.ts +++ b/src/composables/billing/useWorkspaceBilling.ts @@ -47,7 +47,7 @@ export function useWorkspaceBilling(): BillingState & BillingActions { tier: status.subscription_tier ?? null, duration: status.subscription_duration ?? null, planSlug: status.plan_slug ?? null, - renewalDate: null, // Workspace billing uses cancel_at for end date + renewalDate: status.renewal_date ?? null, endDate: status.cancel_at ?? null, isCancelled: status.subscription_status === 'canceled', hasFunds: status.has_funds diff --git a/src/platform/workspace/api/workspaceApi.ts b/src/platform/workspace/api/workspaceApi.ts index 624d6d118..caf07db40 100644 --- a/src/platform/workspace/api/workspaceApi.ts +++ b/src/platform/workspace/api/workspaceApi.ts @@ -211,6 +211,7 @@ export interface BillingStatusResponse { billing_status?: BillingStatus has_funds: boolean cancel_at?: string + renewal_date?: string } export interface BillingBalanceResponse {