The member catalog does not say a plan change will wait for the end of a committed term #18

Open
opened 2026-09-21 07:18:06 +00:00 by cgalo5758 · 1 comment
Owner

What a person cannot do today

Learn, before clicking, what a minimum-term commitment does to a plan change. The catalog renders switch and cancel controls the same for everyone. The policy is applied after the click: a deferred change is scheduled for the end of the term and shown as scheduled, and a change under the fee policy is refused with an error banner.

What they should be able to do

Read the consequence on the control itself: active and immediate under the permissive policy, active and labelled as taking effect at the end of the committed term under the deferring one, disabled with the reason under the fee policy.

Why it matters

Correctness does not depend on it, because the endpoints decide the outcome either way. What the member loses is the chance to know the outcome before acting on it.

Where

internal/server/member_products.go, the per-ladder view model; internal/embeds/templates/partials/member_plans.html, the controls.

Done when

The view model carries the backing subscription's commitment end and early-termination policy for each enrolled ladder, and the control's label and enabled state branch on them. No subscription carries a commitment today, so the new branches render only once one is configured.

Migrated from status/issues.md at b7a0e15

## What a person cannot do today Learn, before clicking, what a minimum-term commitment does to a plan change. The catalog renders switch and cancel controls the same for everyone. The policy is applied after the click: a deferred change is scheduled for the end of the term and shown as scheduled, and a change under the fee policy is refused with an error banner. ## What they should be able to do Read the consequence on the control itself: active and immediate under the permissive policy, active and labelled as taking effect at the end of the committed term under the deferring one, disabled with the reason under the fee policy. ## Why it matters Correctness does not depend on it, because the endpoints decide the outcome either way. What the member loses is the chance to know the outcome before acting on it. ## Where [`internal/server/member_products.go`](https://git.coopcloud.tech/wiki-cafe/member-console/src/commit/b7a0e15/internal/server/member_products.go), the per-ladder view model; [`internal/embeds/templates/partials/member_plans.html`](https://git.coopcloud.tech/wiki-cafe/member-console/src/commit/b7a0e15/internal/embeds/templates/partials/member_plans.html), the controls. ## Done when The view model carries the backing subscription's commitment end and early-termination policy for each enrolled ladder, and the control's label and enabled state branch on them. No subscription carries a commitment today, so the new branches render only once one is configured. Migrated from status/issues.md at b7a0e15
cgalo5758 added the
kind
enhancement
area/billingarea/member-ui
labels 2026-09-21 07:18:06 +00:00
Author
Owner

The cancel confirmation is already half way there, and inconsistent. Under a live commitment whose policy defers, the Products page reads what follows the cancellation at the commitment end (cancellationTakesEffect in internal/server/member_products.go), but setCancelBodies dates the end with the billing period's renewal date. Once a subscription carries such a commitment, the body says "You keep Pro until" the period end, then names the plan that follows at the commitment end. The fix here should date the body with the same cancellationTakesEffect date.

The cancel confirmation is already half way there, and inconsistent. Under a live commitment whose policy defers, the Products page reads what follows the cancellation at the commitment end (`cancellationTakesEffect` in `internal/server/member_products.go`), but `setCancelBodies` dates the end with the billing period's renewal date. Once a subscription carries such a commitment, the body says "You keep Pro until" the period end, then names the plan that follows at the commitment end. The fix here should date the body with the same `cancellationTakesEffect` date.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wiki-cafe/member-console#18