fix(pro): sync /pro pricing copy to the #4563 catalog change (regen tiers + locales + rebuild bundle)#4574
Conversation
…nge (#4563 follow-up) #4563 changed Starter/Business marketingFeatures in the product catalog but didn't re-run scripts/generate-product-config.mjs, leaving the generated /pro view model stale ('1,000 requests/day' instead of '...included' + '60 requests/minute'). The path-filtered pro-test freshness gate didn't fire because #4563 touched only convex/, not pro-test/. Rebuild of public/pro/ follows in this PR. Claude-Session: https://claude.ai/code/session_01SjVX3GyMBmC2XyFWCHogN1
…follow-up) The /pro PricingSection renders features from the i18n locales (tArray, with generated/tiers.json only as ?? fallback), so the catalog copy change in #4563 didn't reach the page — en.json/fa.json still said '1,000 requests/day'. Sync both locale overrides to the catalog ('60 requests/minute' + '1,000 requests/day included') and rebuild the committed public/pro bundle (Vercel serves it as-is, never rebuilds it). Only en/fa carry this override; other locales inherit. Old copy is fully gone from public/pro. Claude-Session: https://claude.ai/code/session_01SjVX3GyMBmC2XyFWCHogN1
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryThis PR fixes stale pricing copy on the
Confidence Score: 5/5Safe to merge — the change is limited to pricing copy strings in locale files, a generated view-model, and a committed static bundle rebuild; no logic, API, or data-flow code is touched. All three layers that serve the live page (locale JSON, the generated tiers fallback, and the committed Vite bundle) are consistently updated to the same new strings. The old bare '1,000 requests/day' string is absent from every rebuilt chunk. Old bundle files are properly deleted and HTML entry points reference the new filenames. The only observation is a pre-existing condition in fa.json that this PR neither introduces nor worsens. No files require special attention. fa.json has a pre-existing full-file duplication with en.json that is worth a follow-up clean-up ticket, but it does not affect the correctness of this change. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["convex/config/productCatalog.ts\n(source of truth)"] -->|"generate-product-config.mjs\n(manual step)"| B["pro-test/src/generated/tiers.json\n(view-model fallback)"]
A -.->|"#4563 changed catalog\nbut didn't regen"| B
C["pro-test/src/locales/en.json\n(live i18n source)"] -->|"tArray('pricing.tiers.api.features')"| E
D["pro-test/src/locales/fa.json\n(live i18n source)"] -->|"tArray(...)"| E
B -->|"?? fallback only"| E["PricingSection.tsx\n(renders features)"]
E -->|"Vite build"| F["public/pro/assets/*.js\n(served as-is by Vercel)"]
F -->|"referenced by"| G["public/pro/index.html\npublic/pro/welcome.html"]
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
A["convex/config/productCatalog.ts\n(source of truth)"] -->|"generate-product-config.mjs\n(manual step)"| B["pro-test/src/generated/tiers.json\n(view-model fallback)"]
A -.->|"#4563 changed catalog\nbut didn't regen"| B
C["pro-test/src/locales/en.json\n(live i18n source)"] -->|"tArray('pricing.tiers.api.features')"| E
D["pro-test/src/locales/fa.json\n(live i18n source)"] -->|"tArray(...)"| E
B -->|"?? fallback only"| E["PricingSection.tsx\n(renders features)"]
E -->|"Vite build"| F["public/pro/assets/*.js\n(served as-is by Vercel)"]
F -->|"referenced by"| G["public/pro/index.html\npublic/pro/welcome.html"]
|
Follow-up to #4563. #4563 changed the Starter/Business
marketingFeaturesin the product catalog but left the/promarketing page showing the old pricing copy.Two layers were stale (the second one is the user-visible one)
scripts/generate-product-config.mjswritespro-test/src/generated/tiers.jsonfrom the catalog, but feat(api): per-tier API rate limits — Phase 1 (per-account burst + usage meter + safety ceiling) #4563 never re-ran it, so the generated view-model still said "1,000 requests/day". The path-filtered pro-test freshness gate didn't catch it because feat(api): per-tier API rate limits — Phase 1 (per-account burst + usage meter + safety ceiling) #4563 only touchedconvex/, notpro-test//public/pro/.PricingSection.tsxrenders features fromtArray('pricing.tiers.api.features')withtiers.jsononly as a??fallback. So the page actually reads from the locale overrides, anden.json/fa.jsonstill said "1,000 requests/day" with no "60 requests/minute". Regenerating tiers.json alone would not have changed the page.Fix
pro-test/src/generated/tiers.json(keeps the generated file in sync; satisfies the freshness gate).en.json,fa.json— the only locales carrying this array; others inherit) to the catalog copy: add "60 requests/minute", change "1,000 requests/day" → "1,000 requests/day included".public/pro/bundle (Vercel serves it as-is and never rebuilds pro-test).Verified: the bare "1,000 requests/day" string is gone from every tracked
public/pro/chunk; a freshpro-testrebuild leavespublic/pro/clean (freshness gate passes deterministically).Known follow-up (separate issue worth filing)
The /pro pricing copy is duplicated across the catalog,
tiers.json, and the i18n locales, and they drift independently — and the freshness gate's path filter (pro-test/∪public/pro/) misses catalog-only changes that feed pro-test. A catalog change shouldn't require manually remembering to regen + rebuild + re-translate. Candidate fixes: make the gate also trigger onconvex/config/productCatalog.ts, and/or make /pro source pricing features from one place.https://claude.ai/code/session_01SjVX3GyMBmC2XyFWCHogN1