Follow Discord
Sweep 22 Oct 2026 · 21:04Z Build v2.1.309 528 read Stable v2.1.308 Latest v2.1.308 Next v2.1.309 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.197 ·

Promotional Launch Pricing in Model Picker

Entry
JSON All of v2.1.197
EntryKind: in v2.1.197,
New FeaturesSection of the release
What

When Sonnet 5 is on a launch promotion, the model picker displays the promo price with the regular list price struck through next to it.

Details
  • During the promo period, the Sonnet 5 entry shows: ~~$3/$15~~ $2/$10 per Mtok · promo through [date]
  • The promo expiry date is read from the cedar_basin key in the remote server config (AI()?.cedar_basin). Dlo() parses the value and returns it only if Date.now() < parsedMs (live gate); once the date has passed Dlo() returns undefined and no promo UI is rendered
  • Rlo() formats the raw date string using toLocaleDateString("en-US", { month: "short", day: "numeric", timeZone: "UTC" }), producing e.g. "Jun 29"
  • The description field carries the promo price ($2/$10 per Mtok · promo through …) so plain-text consumers read it unambiguously; rich pickers (the CLI model-selector component) additionally prepend chalk.dim.strikethrough(promoListPrice) before the first $X/$Y token in description, producing the struck-through display
  • When no promo is active the description falls back to C1(jte) — the standard pricing description string
  • The "Sonnet 5 (1M context)" entry (Nlo()) follows the same pattern; when running in a standalone/operator context (Ao() returns true) all pricing is omitted and only "Sonnet 5 for long sessions" is shown
  • Third-party provider users (Bedrock, Vertex, etc.) do not see promo pricing: gBn() applies the promo display block only when ud() returns false (first-party API key users)
  • This is a new UI field: promoListPrice added to the model row schema specifically to support struck-through rendering in rich pickers; description always carries only the promo price so plain-text consumers are unaffected
Evidence

Promo gate function Dlo() reading AI()?.cedar_basin; formatter Rlo() (search for "$2/$10 per Mtok" and "promoListPrice"); rich-picker rendering (search for "dim.strikethrough"); schema documentation (search for "@internal List price (e.g. \$3/$15\)")

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

See this entry in the whole of v2.1.197 →

Feedback