Skip to content

Plan page smaller and shorter; collector fixes from the 0.3.7 report (migration 0021) - #231

Merged
MeharPro merged 4 commits into
mainfrom
fix/plan-page-compact
Nov 13, 2026
Merged

MeharPro merged 4 commits into
mainfrom
fix/plan-page-compact

Conversation

@MeharPro

@MeharPro MeharPro commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

The owner said the plan page felt "a tad bit zoomed in" and had "too much written in the plan details". This PR fixes both on an app's plan page (/account/billing?project=…) and on a new account's trial screen (/account with no app).

Card

  • Narrower: 440px instead of 560px.
  • Smaller type: the name is 24px instead of 34px, the price 15px instead of 22px, the lines 13.5px instead of 15px, the button 14.5px instead of 17px.
  • It shows the name, the price and the first 5 lines of Pro. The other 8 are folded under "8 more", a plain <details> with no script.
  • "Everything in Free" and "3 days free to start" are left out, since the button and the note under it already say that. The summary line that repeated the price is gone too.
  • The lines come from plans.ts pitchLines(), so both screens show the same list. billing/plans.json is unchanged, so the pricing page and Stripe are not affected.

Above the card

  • A just-added app's page shows one line, "Shop is in your account.", instead of a status line plus a notice box.
  • The "Problems fixed live this month: 0 of 100" line shows only once there are fixes to count, or when the app is observing only.

The whole plan page now fits on a 1024x768 screen. At phone width (375px) both screens have no horizontal scroll.

Checks

  • Collector tests: 842 pass. Two plan-page expectations were updated for the new text, and new checks cover the folded list and the usage line.
  • The strict tsc on telemetry-worker/src/index.ts is clean.
  • Nothing is deployed.

Collector fixes from the 0.3.7 test report

The CLI side of the report is on its own branch, fix/cli-037-report. This PR has the collector side.

Apply migration 0021 before deploying (0021_plans_v5_kept.sql; main already has 0020_reports.sql from #232):

npx --yes wrangler@4 d1 migrations apply genclass-dashboard --remote

Teams and seats

  • A team no longer drops to one seat at the deploy. That covered a per-app Pro subscription from before 13 Nov, and an account whose seats weren't written yet. Unknown seats on a paid per-developer plan now mean no seat limit.
  • Before, its members got a 404 on dashboards and a 402 from the command.

Apps that would have locked at the deploy

  • An app paid for on its own (bought before 13 Nov) is always covered, and it no longer takes one of Pro's 3 places.
  • An account subscription that is paying when 0021 is applied keeps covering as many apps as the account had then (accounts.apps_kept). The webhook clears that count when the subscription ends or another one replaces it.
  • A paid Pro on an account that also has GenClass's grant of Pro keeps the grant's room: every app, no seat limit.
  • A Free app that gets locked now says why: since 13 November 2026 Free covers one app, the oldest.

Team members in the command

  • They get the team's plan: its suggestion and ask limits and its name, and no offer to buy a second Pro.
  • New fields: cli.via (plan, team or open), plan.via: "team" in the overview, and team_plan in the account answer.

Choose a plan

  • 0021 marks every app that a paid plan or a grant covered at that point as chosen, so those apps open their dashboard instead of "Choose a plan".
  • A plan choice made from the command now opens the app's dashboard, not the website's setup tab with Guard and Heal ticked.

Wording

  • The command's offer drops "3 days free to start" once the account has used its trial.
  • A Pro owner with one seat is told to add seats in Manage billing, instead of "the plan is for one person".
  • The approval page says "Your terminal is signed in. You can close this tab." It no longer says to go back to the terminal.
  • A sign-up page reached from a command-line sign-in no longer offers the "Just trying it?" link to a dashboard without an account.

Cleanup

  • Removed the never-sold "apps per unit" code.
  • A locked Pro app's header shows Pro instead of Free.
  • The collector README and the notes in plans.json now describe version 5.

Left for the owner

  • The device approval page's length. AGENTS.md rule 12 makes its list of what a terminal can do a contract.
  • Pro's summary wording. It is synced to the Stripe product description.
  • Where a team member's new app should belong.
  • plan=team in the checkout link.

Checks: collector 849 tests pass, the genclass command's 188 tests pass against this collector, and the strict tsc is clean. Nothing is deployed.

🤖 Generated with Claude Code

MeharPro and others added 2 commits November 13, 2026 07:55
…olded

The owner: "a tad bit zoomed in and there's too much written in the plan details". On an app's plan page and a new
account's trial screen, Pro's card is narrower (440px) with smaller type and button, shows the name, the price and
the first 5 lines of the plan (plans.ts pitchLines: without "Everything in Free" and the trial's own line), and
folds the rest under "N more" (a details element, no script). The summary that repeated the price is gone. A
just-added app's page has one line under its heading instead of a status line and a notice box, and the month's
live fixes show only once there are some (or the app observes only). The whole page now fits a 1024x768 screen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… 5 keeps what it covered

From the 0.3.7 test report (the collector side; the CLI side is on its own branch):
- Seats: a paid per-seat plan whose seats are not known has no seat limit (seatsOf). A subscription bought per app
  under version 4 included the whole team, and a row the webhook has not written seats to (after a rollback) no
  longer cuts a team to one seat. Of two accesses to the same plan, the one with more seats wins.
- Apps: an app that pays for itself (version 4) is always covered and not counted in Pro's 3. An account
  subscription paying when migration 0020 is applied keeps covering as many apps as the account had
  (accounts.apps_kept), until it ends or another replaces it (the webhook clears it). A paid Pro under GenClass's
  grant of Pro keeps the grant's room (every app, no seat limit). A locked Free app's page says Free covers one
  app, the oldest, since 13 November 2026.
- A team's member works under the team's plan in the command (cli.ts workingAccess): suggestions and ask limits,
  the plan it names (overview plan.via "team", account team_plan), and no offer of a second Pro. cli.via says why
  the command works: "plan", "team" or "open" (nothing sold here).
- Migration 0020 also counts every app a paid plan or a grant covered then as chosen, so it opens its dashboard
  as before instead of "Choose a plan".
- A plan chosen from the genclass command goes on to the app's dashboard, not the website's setup.
- The command's offer drops "3 days free to start" once the trial was used.
- Pro with one seat: "add a seat for each member in Manage billing", never "the plan is for one person".
- The approval page says "Your terminal is signed in", never "go back to your terminal"; a sign-up from a
  command-line sign-in has no side door to a dashboard without an account.
- Removed the never-sold "apps per unit" code; a locked Pro app's header says Pro; README and plans.json notes
  are on version 5.

Apply migration 0020 before deploying this worker.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MeharPro MeharPro changed the title Plan page: Pro smaller and shorter, the first 5 lines with the rest folded Plan page smaller and shorter; collector fixes from the 0.3.7 report (migration 0020) Nov 13, 2026
@MeharPro MeharPro changed the title Plan page smaller and shorter; collector fixes from the 0.3.7 report (migration 0020) Plan page smaller and shorter; collector fixes from the 0.3.7 report (migration 0021) Nov 13, 2026
@MeharPro
MeharPro merged commit 05366f2 into main Nov 13, 2026
6 checks passed
@MeharPro
MeharPro deleted the fix/plan-page-compact branch November 13, 2026 14:12
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.

1 participant