v0.2.0:36 — Launch-special remaining: "N remaining", drop the total

Buy-page tier card's "Limited: N of M remaining" line now reads
just "Limited: N remaining". The total cap (M) is operator-private
— there's no upside to exposing initial launch volume to buyers,
and it can make a tier feel smaller than the operator intends.

Symmetric landing-page change (index.html dynamic tier-card JS)
ships alongside in a separate commit on the keysat-xyz-landing
repo.

Cosmetic; no API or schema change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Grant
2026-05-11 18:26:43 -05:00
parent a0995c9c31
commit e05d357a5a
2 changed files with 8 additions and 4 deletions
+5 -3
View File
@@ -1166,7 +1166,7 @@ fn render_tier_picker(
// the launch-meta div as an in-flow element — that coupling
// made cross-card row alignment impossible).
// - featured_ribbon: absolutely-positioned diagonal banner
// - launch_meta_html: in-flow "Limited: X of Y remaining"
// - launch_meta_html: in-flow "Limited: N remaining"
// - original_price_html: in-flow struck-through original
let (featured_ribbon, launch_meta_html, original_price_html) = if let Some(code) = featured {
let tagline = if code.kind == "percent" {
@@ -1179,11 +1179,13 @@ fn render_tier_picker(
"LAUNCH SPECIAL".to_string()
};
let remaining = code.max_uses.map(|m| (m - code.used_count).max(0)).unwrap_or(-1);
// Display: "Limited: N remaining" (not "N of M remaining").
// The total cap is operator-private — buyers don't need to
// infer launch volume from the M.
let launch_meta = if remaining > 0 {
format!(
"<div class=\"tier-launch-meta\">Limited: {} of {} remaining</div>",
"<div class=\"tier-launch-meta\">Limited: {} remaining</div>",
remaining,
code.max_uses.unwrap_or(0)
)
} else {
String::new()