Implements typy v0 from #254: a focused, one-word typing game with timed, 50-word, endless, and accelerating tempo runs.
Changes
Keyboard and phone input, correction feedback, adjustable advancement, and upcoming-word preview.
Weighted common words, local pasted passages, cached Venice topic passages, and a shared daily 60-second passage and board.
Explicitly shared results with recomputed scores, original-timing replay, ghost races, and real 1200×630 PNG social previews.
A self-contained Cloudflare Worker under typy/, with KV persistence and an atomic quota Durable Object. The deployment script reuses the existing operator path and checks committed/generated source integrity.
Validation
13 game tests and 16 backend tests pass.
Independent desktop and phone review passed after keyboard activation and long-word layout fixes.
Real local browser integration passed: save → public result reload → replay scrub → ghost race; valid PNG preview; identical daily passage across requests.
All 43 committed files were independently compared with the tested local Git blob hashes: zero mismatches.
Review, screenshots, test scripts, and receipts are in typy/evidence/ and typy/test/.
The merged typy tree exactly matches the independently reviewed feature tree. Public health returned the merged SHA and revision, with KV and quota bindings ready.
Repository CI run 2357 passed before merge. This existing workflow covers the factory and quc; typy's 29 tests were run separately and passed.
Live browser integration passed on the merged deployment: explicit save, public result reload, matching recomputed score, original-timing replay and scrub, ghost race, and a real 1200×630 PNG preview (4,279 bytes). Test result: https://typy.yolopreneur.lol/r/ee5827c875ef40049621ee94 . Its automated score is test data, not a human benchmark; no synthetic daily-board entry was written.
Daily requests returned identical 300-word canonical passages.
Independent live visual/play acceptance passed 10 checks at desktop 1440 px and phone emulation 390/360 px, with no overflow or uncaught script errors. That pass observed feature revision 6ff0c224e981f397; deployed application bytes are identical after merge.
Both the cloud test browser and operator Mac returned HTTP 200 for the app. The operator verified normal HTTPS and the final health revision; no DNS or WAF changes were needed. The cloud browser required its environment's CA workaround and browser-native fetch because its separate Node request client could not resolve the host.
Remaining external blocker
Real Venice generation was attempted. The configured account returned HTTP 402: “Insufficient USD or Diem balance to complete request.” A direct provider call confirmed the same result (receipt mac-f49aa2ec7fbf4283b2a3115e4e96453d). The app displays a recoverable source error.
Topic generation and caching are implemented and backend-tested, but successful live generation/cache acceptance remains blocked until this account has credits: https://venice.ai/settings/api . No purchase or billing change was made. Common words, pasted text, all play modes, daily passage, sharing, replay, and ghost races remain usable. topics: true in health means the key is configured; it does not attest account balance.
Refs #254; leave its final acceptance open for the provider-funding check.
Implements typy v0 from #254: a focused, one-word typing game with timed, 50-word, endless, and accelerating tempo runs.
## Changes
- Keyboard and phone input, correction feedback, adjustable advancement, and upcoming-word preview.
- Weighted common words, local pasted passages, cached Venice topic passages, and a shared daily 60-second passage and board.
- Explicitly shared results with recomputed scores, original-timing replay, ghost races, and real 1200×630 PNG social previews.
- A self-contained Cloudflare Worker under typy/, with KV persistence and an atomic quota Durable Object. The deployment script reuses the existing operator path and checks committed/generated source integrity.
## Validation
- 13 game tests and 16 backend tests pass.
- Independent desktop and phone review passed after keyboard activation and long-word layout fixes.
- Real local browser integration passed: save → public result reload → replay scrub → ghost race; valid PNG preview; identical daily passage across requests.
- All 43 committed files were independently compared with the tested local Git blob hashes: zero mismatches.
- Review, screenshots, test scripts, and receipts are in typy/evidence/ and typy/test/.
## Deployment and live acceptance — 2026-10-24
- Live app: https://typy.yolopreneur.lol/
- Merged main source: `5c8d0d9889b569e7df69d264d860d5bab1f24a22`.
- Cloudflare Worker `time-typy`, revision `d81c8bfd4647f847`; deployment receipt `mac-92fb8ef23a424e5393db01c10c70daaa`.
- The merged typy tree exactly matches the independently reviewed feature tree. Public health returned the merged SHA and revision, with KV and quota bindings ready.
- Repository CI [run 2357](https://teahub.xyz/teahubxyz/time/actions/runs/2357) passed before merge. This existing workflow covers the factory and quc; typy's 29 tests were run separately and passed.
- Live browser integration passed on the merged deployment: explicit save, public result reload, matching recomputed score, original-timing replay and scrub, ghost race, and a real 1200×630 PNG preview (4,279 bytes). Test result: https://typy.yolopreneur.lol/r/ee5827c875ef40049621ee94 . Its automated score is test data, not a human benchmark; no synthetic daily-board entry was written.
- Daily requests returned identical 300-word canonical passages.
- Independent live visual/play acceptance passed 10 checks at desktop 1440 px and phone emulation 390/360 px, with no overflow or uncaught script errors. That pass observed feature revision `6ff0c224e981f397`; deployed application bytes are identical after merge.
- Both the cloud test browser and operator Mac returned HTTP 200 for the app. The operator verified normal HTTPS and the final health revision; no DNS or WAF changes were needed. The cloud browser required its environment's CA workaround and browser-native fetch because its separate Node request client could not resolve the host.
### Remaining external blocker
Real Venice generation was attempted. The configured account returned HTTP 402: “Insufficient USD or Diem balance to complete request.” A direct provider call confirmed the same result (receipt `mac-f49aa2ec7fbf4283b2a3115e4e96453d`). The app displays a recoverable source error.
Topic generation and caching are implemented and backend-tested, but successful live generation/cache acceptance remains blocked until this account has credits: https://venice.ai/settings/api . No purchase or billing change was made. Common words, pasted text, all play modes, daily passage, sharing, replay, and ghost races remain usable. `topics: true` in health means the key is configured; it does not attest account balance.
Refs #254; leave its final acceptance open for the provider-funding check.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Implements typy v0 from #254: a focused, one-word typing game with timed, 50-word, endless, and accelerating tempo runs.
Changes
Validation
Deployment and live acceptance — 2026-10-24
5c8d0d9889b569e7df69d264d860d5bab1f24a22.time-typy, revisiond81c8bfd4647f847; deployment receiptmac-92fb8ef23a424e5393db01c10c70daaa.6ff0c224e981f397; deployed application bytes are identical after merge.Remaining external blocker
Real Venice generation was attempted. The configured account returned HTTP 402: “Insufficient USD or Diem balance to complete request.” A direct provider call confirmed the same result (receipt
mac-f49aa2ec7fbf4283b2a3115e4e96453d). The app displays a recoverable source error.Topic generation and caching are implemented and backend-tested, but successful live generation/cache acceptance remains blocked until this account has credits: https://venice.ai/settings/api . No purchase or billing change was made. Common words, pasted text, all play modes, daily passage, sharing, replay, and ghost races remain usable.
topics: truein health means the key is configured; it does not attest account balance.Refs #254; leave its final acceptance open for the provider-funding check.