@@ -1138,14 +1138,14 @@ export const MUSE_SPARK_FALLBACK_NOTICE =
11381138 * wired even when these models are hidden from the Freebuff picker. */
11391139export const FREEBUFF_ENABLE_MIMO_MODELS_IN_UI = true
11401140/** UI-only rollout switch for the DeepSeek Flash FAST MODE row
1141- * (`deepseek/deepseek-v4-flash-fast`). Off: no picker on any surface lists
1142- * the row (the CLI, Web and Desktop pickers read FREEBUFF_MODELS; the iOS and
1143- * Android catalogs carry the same switch by hand), while everything behind it
1144- * stays wired — the id is SUPPORTED and admitted, priced on DeepSeek's clock, routed
1145- * to DeepSeek direct alone, and runs the base3-fast harness — so a client
1146- * that sends the id gets the real thing. Flip to true to ship the row; the
1147- * tests that count picker rows follow this switch. */
1148- export const FREEBUFF_ENABLE_FAST_MODE_IN_UI = false
1141+ * (`deepseek/deepseek-v4-flash-fast`). On since 2026-10-04, for full access
1142+ * only (FREEBUFF_FULL_ACCESS_ONLY_MODEL_IDS). Off: no picker on any surface
1143+ * lists the row ( the CLI, Web and Desktop pickers read FREEBUFF_MODELS; the
1144+ * iOS and Android catalogs list it by hand), while everything behind it stays
1145+ * wired — the id is SUPPORTED and admitted at full access, priced on
1146+ * DeepSeek's clock, routed to DeepSeek direct alone, and runs the base3-fast
1147+ * harness. The tests that count picker rows follow this switch. */
1148+ export const FREEBUFF_ENABLE_FAST_MODE_IN_UI = true
11491149/** UI-only rollout switch for the streak indicator in the waiting room. */
11501150export const FREEBUFF_ENABLE_STREAK_IN_UI = true
11511151/** Local/debug switch: force the localhost free-mode country bypass into
@@ -1747,16 +1747,17 @@ const DEEPSEEK_V4_FLASH_MODEL = {
17471747 * from that grant at admission and runs a single direct lane in the router
17481748 * (web/src/llm-api/deepseek-router.ts).
17491749 *
1750- * Priced on DeepSeek's own clock (freebuff-freebucks.ts): 45 Freebucks in
1750+ * Priced on DeepSeek's own clock (freebuff-freebucks.ts): 50 Freebucks in
17511751 * the weekday window where DeepSeek direct doubles, 25 the rest of the time.
17521752 * The harness spends about 1.3x base3 per task, and DeepSeek direct bills
17531753 * 1.7x Luminal off-peak and 3.4x at peak on the same tokens.
17541754 *
17551755 * Everything else tracks the Flash row on purpose — the same DeepSeek data-use
17561756 * terms, the same effort ladder, and `multimodal: true` because the direct
1757- * lane is the one lane that reads images. Premium and plan-only at limited
1758- * access, on MiMo 2.6 Pro's terms: open to every full-access account, metered
1759- * in Freebucks at its own price.
1757+ * lane is the one lane that reads images. Full access only
1758+ * (FREEBUFF_FULL_ACCESS_ONLY_MODEL_IDS): open to every full-access account on
1759+ * any plan, metered in Freebucks at its own price, and not offered at limited
1760+ * access even with a plan.
17601761 */
17611762const DEEPSEEK_V4_FLASH_FAST_MODEL = {
17621763 id : FREEBUFF_DEEPSEEK_V4_FLASH_FAST_MODEL_ID ,
@@ -3061,9 +3062,9 @@ export const FREEBUFF_MODELS = [
30613062 GLM_V53_FLASH_MODEL ,
30623063 DEEPSEEK_V4_FLASH_MODEL ,
30633064 // FAST MODE beside the row it is a variant of (2026-09-26), behind
3064- // FREEBUFF_ENABLE_FAST_MODE_IN_UI until it ships . Order here only matters
3065+ // FREEBUFF_ENABLE_FAST_MODE_IN_UI. Order here only matters
30653066 // off the meter: every picker sorts its rows cheapest first once prices
3066- // arrive, and at 25-45 Freebucks this lands among the premium rows.
3067+ // arrive, and at 25-50 Freebucks this lands among the premium rows.
30673068 ...( FREEBUFF_ENABLE_FAST_MODE_IN_UI ? [ DEEPSEEK_V4_FLASH_FAST_MODEL ] : [ ] ) ,
30683069 // GPT-6 LUNA TAKES 5.6'S SLOT (2026-09-22). Same position, same tagline,
30693070 // half the price on the flex lane; 5.6 left this list in the same change and
@@ -4247,12 +4248,8 @@ export const FREEBUFF_LIMITED_TIER_PLAN_ONLY_MODEL_IDS: readonly string[] =
42474248 Object . freeze ( [
42484249 FREEBUFF_GPT_6_LUNA_MODEL_ID ,
42494250 FREEBUFF_MIMO_V26_PRO_MODEL_ID ,
4250- // Flash FAST MODE (2026-09-26), on MiMo 2.6 Pro's terms: three times the
4251- // Flash price, so plan-only where the free pool is 25 a day. Behind the
4252- // UI switch with the picker row: a plan cannot sell what no picker lists.
4253- ...( FREEBUFF_ENABLE_FAST_MODE_IN_UI
4254- ? [ FREEBUFF_DEEPSEEK_V4_FLASH_FAST_MODEL_ID ]
4255- : [ ] ) ,
4251+ // Flash fast mode is not here: it is not offered at limited access at all
4252+ // (FREEBUFF_FULL_ACCESS_ONLY_MODEL_IDS).
42564253 // Muse Spark 1.2 is excluded: it is not offered at limited access at all
42574254 // (not even with a plan), only kept for released binaries at full access.
42584255 ...FREEBUFF_PRO_ONLY_CATALOG_MODEL_IDS . filter (
@@ -4264,6 +4261,22 @@ export function isFreebuffLimitedTierPlanOnlyModelId(id: string): boolean {
42644261 return FREEBUFF_LIMITED_TIER_PLAN_ONLY_MODEL_IDS . includes ( id )
42654262}
42664263
4264+ /**
4265+ * Rows offered at FULL access only, on any plan or none. A limited-tier
4266+ * account does not see them, locked or otherwise, and a plan does not unlock
4267+ * them there, so they stay out of the geo-exempt set, the limited plan-only
4268+ * set and the plan-metered set alike.
4269+ *
4270+ * Flash fast mode (2026-10-04): a fan-out on DeepSeek direct at 25-50
4271+ * Freebucks an hour, which the limited tier's pool cannot carry.
4272+ */
4273+ export const FREEBUFF_FULL_ACCESS_ONLY_MODEL_IDS : readonly string [ ] =
4274+ Object . freeze ( [ FREEBUFF_DEEPSEEK_V4_FLASH_FAST_MODEL_ID ] )
4275+
4276+ export function isFreebuffFullAccessOnlyModelId ( id : string ) : boolean {
4277+ return FREEBUFF_FULL_ACCESS_ONLY_MODEL_IDS . includes ( id )
4278+ }
4279+
42674280export const FREEBUFF_WEB_GEO_EXEMPT_MODEL_IDS : readonly string [ ] = [
42684281 ...new Set < string > ( [
42694282 ...LIMITED_FREEBUFF_MODEL_IDS ,
@@ -4274,7 +4287,8 @@ export const FREEBUFF_WEB_GEO_EXEMPT_MODEL_IDS: readonly string[] = [
42744287 // This is deliberately broader than the global Pro set. Luna is free
42754288 // from the premium pool at full access but still plan-locked here;
42764289 // Gemini 3.8 Flash is plan-only at every tier.
4277- ! isFreebuffLimitedTierPlanOnlyModelId ( model . id ) ,
4290+ ! isFreebuffLimitedTierPlanOnlyModelId ( model . id ) &&
4291+ ! isFreebuffFullAccessOnlyModelId ( model . id ) ,
42784292 ) . map ( ( model ) => model . id ) ,
42794293 ] ) ,
42804294]
@@ -4557,12 +4571,10 @@ export const FREEBUFF_PLAN_METERED_CATALOG_MODEL_IDS: readonly string[] =
45574571 // With Luna: this list is what widens the limited tier for a subscriber,
45584572 // so a plan-only row missing here would be offered and then coerced away.
45594573 FREEBUFF_MIMO_V26_PRO_MODEL_ID ,
4560- // Flash fast mode (2026-09-26), for the same reason as MiMo 2.6 Pro —
4561- // and, like the picker row, only once FREEBUFF_ENABLE_FAST_MODE_IN_UI is
4562- // on: a plan can only cover a model a picker offers.
4563- ...( FREEBUFF_ENABLE_FAST_MODE_IN_UI
4564- ? [ FREEBUFF_DEEPSEEK_V4_FLASH_FAST_MODEL_ID ]
4565- : [ ] ) ,
4574+ // Flash fast mode is not here: this list is what widens the limited tier
4575+ // for a subscriber, and fast mode is full access only
4576+ // (FREEBUFF_FULL_ACCESS_ONLY_MODEL_IDS). A full-access subscriber pays for
4577+ // it in Freebucks like everyone else at full access.
45664578 // Muse Spark 1.3 (2026-09-28): the plans page promises every plan model in
45674579 // every country, so a limited-region subscriber must be able to open it.
45684580 // (1.2 is deliberately absent: it survives only for released binaries at
0 commit comments