Each rendered plant was fetching 12 files (base + 11 masks) at 0.4-1.5s
per request on the free tier - a cold garden load fired ~250 requests.
Build now packs all 542 images into a data-URI atlas emitted as a
hashed immutable asset; the client resolves art from it with in-memory
memoization of images, masks, and in-flight loads. Falls back to
network paths if the atlas is missing.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Stop replaying stale agent-event view jumps on load
Yufok1+1: Claude Fable 5
e43bb65
The HUD applied the latest stored agent event's UI intent on every
fresh open, teleporting players to whatever tab the agent last touched
(lately the Smoke Room). First poll is now a silent baseline; only
events arriving during play move the view.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Open Telegram link in a new tab so it works inside the HF iframe
Yufok1+1: Claude Fable 5
b2c833c
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Splash: browser visitors get a pitch line and Open in Telegram button
Yufok1+1: Claude Fable 5
62170e1
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Chat v2: player DMs and agent voice in the Smoke Room
Yufok1+1: Claude Fable 5
c1f0c16
DMs: private threads between growers with conversation list, tap-a-name
to DM from the room, same guards as world chat (no links/handles, rate
limit, 280 chars); ghost names 404, the broker declines small talk.
Agent tools smoke_read/smoke_say under a new 'social' scope let an
authorized agent speak as its player - sharing the player's rate
bucket. Private channels deferred until the guild system.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fix overlay prop typing; disable grow buttons while growing
Yufok1+1: Claude Fable 5
dd065e2
Grow buttons now read "Growing" and stay disabled from timer start to
maturity; also fixes exactOptionalPropertyTypes errors that slipped
into the previous commit.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Overlay live countdown chips on growing seedling sprites
Yufok1+1: Claude Fable 5
bf36b76
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Cache-bust app entry: version-stamped open URLs
Yufok1+1: Claude Fable 5
55fdd27
Bot open buttons carry a per-boot version param and the splash enters
game.html with a fresh stamp, so stale webview caches can never serve
an old build again.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The Smoke Room: world chat tab
Yufok1+1: Claude Fable 5
947cd1b
Public in-game chat open to free players. Text only, 280-char cap,
5-second per-user rate limit, and a hard filter on links/handles so
the room can never become a storefront. Last 200 messages kept in
world state; client polls every 2.5s in a new Smoke Room tab.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Real-time growth: growTime days become wall-clock seconds
Yufok1+1: Claude Fable 5
6212a21
Growing a seed starts a seedling timer (growTime trait, 1 day = 1s,
clamped 10-300s); seedlings mature automatically when it elapses, even
while the player is away. Breeding and cloning now require MATURE
plants, making growth a real time sink and growTime a strategy stat.
Client shows live countdowns on seedlings and auto-refreshes on
maturation; agent tools report grow status and wait times.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Free-to-play model: 25 lifetime free crosses, pass gates features not entry
Yufok1+1: Claude Fable 5
bd2a0cb
Entry is now free. Free players get FREE_BREED_LIMIT lifetime breeds
(default 25), unlimited cross prediction, full leaderboards, and
read-only market access. The Breeder's Pass gates cloning, market
writes, Agent Control sessions, and breeding past the limit. Splash,
bot copy, and README updated; gardens are never deleted.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Port WEED-SIM from Reddit/Devvit to Telegram Mini App on HF Space
Yufok1+1: Claude Fable 5
3f61b9c
Replace Devvit runtime with platform adapter: file-backed KV under a
Storage Bucket mount, Telegram initData HMAC identity with stable
persisted usernames, Breeder's Pass entitlements via Telegram Stars
(invoice + self-configuring payment webhook). Client runs as a Telegram
WebApp; splash gates entry; agent handoff and agent_bootstrap now point
external agents at /external/mcp with the session-token header. Reddit
plumbing (menu, triggers, post, devvit.json) removed. Node 22 Dockerfile
replaces the Python/FastAPI app; README regains HF Space frontmatter.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Checkpoint Devvit v0.0.26
Yufok1+1: Claude Opus 4.8
616ae7b
Rarity schema + granulated rarity depictions, and a new-plant NEW badge
so freshly bred seeds are not lost in the alphabetized seed list.
- Add src/shared/valuation.ts: 9-tier rarity schema (common -> primordial)
with bounded rarityIndex (0-100 collectibility, generation saturates so
top tiers stay scarce) and unbounded rarityScore (market valuation);
exported via shared/index.ts
- Depict tiers per seed card: rarity-* left-border colors + primordial
glow and matching rarity-chip text colors (index.css, game.tsx:1900)
- NEW badge for freshly bred seeds: newSeedIds diffed against
knownSeedIdsRef, keyed by seed id so it survives sorting, cleared by
acknowledgeNew; is-new pulse + new-badge (game.tsx, index.css)
- breeder: de-dupe offspring strain name against existing seeds
- lab/predictCross: summary_only + downsample to shrink payload
- color: add vibrance() helper; api: summary_only request field;
agentLink route adjustments
Co-Authored-By: Claude Opus 4.8 <noreply@anthr…