Public
Georgian-first browser game hub. Play a little closer to home.
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.

Latest: Khinkali Rush neighborhood expansion (v3)

Khinkali Rush now adds eight earned-coin upgrades, six recurring neighbors with friendship stories and permanent gifts, three service styles, optional perfect portions, and eight announced rush themes across its ten shifts. The guided first order stays simple. Existing restaurant stars and unlocked shifts are migrated, with a backup when storage permits; earlier restaurant players receive a one-time 40-coin renovation gift. New wallet, gifts and friendship state remains browser-local. No real-money purchases or trackers were added.

Current implementation, controls, storage and test limitations: restaurant/README.md. Model tests: tests/restaurant-simulations.ts (185 assertions over 80 full shift configurations and additional system checks). Hosted source/HTTP checks: tests/verify-restaurant.ts (37 checks). The downloadable browser harness contains 43 in-memory Chromium checks, not a live-origin browser E2E test. All other game modules remain unchanged. Notes below describe earlier releases.

Latest update: Khinkali Rush restaurant rebuild

Khinkali Rush now uses its own full-scene Canvas 2D restaurant at the same /play/khinkali-rush/ URL. Walking customers, patience-driven expressions, animated cooking and serving, a guided first order, ten shifts, drag delivery, sound and local saves replace its earlier panel interface. See restaurant/README.md for current rules, architecture, verification and remaining manual checks. The original collection notes below describe the preceding release; their shared-runtime, shared-sound and postcard details no longer apply to the rebuilt Khinkali Rush. Its previous saves are retained but not imported into the new progression. No other game source was changed.

Tamashi · თამაში

A Georgian-first home for small browser games. Version 0.2.0, first arcade collection.

Live: https://tamashi.val.run/
English: https://tamashi.val.run/en
Source ZIP: https://tamashi.val.run/source.zip

Playable collection

GameThis release
Supra StackExisting separate game, unchanged.
Tbilisi Hop10 street-crossing levels, three helpers, stamps, puddles and endless mode.
Grape Escape12 seeded match-three levels, harvest targets, vines, crates, special pieces and hints.
Khinkali Rush10 kitchen shifts, three fillings, two pots, guest patience and Bebo's helping hands.
Caucasus Peaks10 goat-platforming climbs, moving/crumbling ledges, ribbons, cloud rescue and endless mode.
Alphabet QuestPlayable preview with 32 demo words, six guesses, practice and a date-seeded daily preview. Not a reviewed dictionary or full daily launch.

The four new arcade games provide 42 levels. The longer multi-chapter campaigns in the design plan are not included yet. Alphabet Quest remains visibly labeled as a preview and its detail page is not indexed; native vocabulary review is a release prerequisite. Have a fluent Georgian speaker review all UI copy and humor before audience launch.

Architecture

Deno + Hono JSX render the hub on the server. Browser interactions use plain JavaScript. The new games use Canvas 2D or ordinary DOM controls and original SVG/Canvas artwork. No browser package CDN, downloaded game assets, accounts, ads, analytics or payments are included.

index.ts                       Hono routes, headers and static-asset allowlist
frontend/catalog.ts            Original catalog and localized copy
frontend/arcade-catalog.ts      Release records and copy overrides
frontend/root.tsx               Main SSR layouts and metadata
frontend/arcade-page.tsx        New game pages and opt-in preview page
frontend/components/ui.tsx      Shared hub components and illustrations
frontend/client.js             Favorites, search, player and sharing
frontend/styles.css            Hub design system
arcade/routes.ts               /play/:slug/ pages and dated HTML shell
arcade/index.html               Shared game shell and Bebo illustration
arcade/style.css                Responsive game styles and animations
arcade/app.js                   Game selection and boot/error handling
arcade/shared.js                Pause, audio, maps, local saves and menus
arcade/art.js                   Original drawing primitives
arcade/hop.js                   Tbilisi Hop
arcade/grapes.js                Grape Escape and its match engine
arcade/kitchen.js               Khinkali Rush
arcade/peaks.js                 Caucasus Peaks
arcade/words.js                 Limited word preview and guess evaluation
scripts/source-archive.ts       Explicit public-source ZIP allowlist
scripts/check-live.ts           Original published-site smoke checks
scripts/check-arcade-live.ts    Published collection/asset/ZIP checks
scripts/create-private-repo.sh  Optional authenticated GitHub CLI setup
 tests/verify.ts                SSR and emulated hub-DOM checks
 tests/verify-arcade.ts         Game route, indexing, asset and source-hash checks

The HTTP entry is index.ts. Publishing its branch deploys it. Asset paths include the Val version; relative game-module imports stay on that version. Only named browser assets are served by the immutable route. Raw player pages are noindex; released game detail pages remain indexable.

Hub routes: /ka, /en, /:lang/games, /:lang/games/:slug, /:lang/favorites, /:lang/about, /:lang/privacy.

New players: /play/tbilisi-ride/, /play/grape-escape/, /play/khinkali-rush/, /play/caucasus-peaks/, /play/alphabet-quest/. Add ?lang=en for English; Georgian is the default. The retained tbilisi-ride slug preserves the original catalog link while its title is Tbilisi Hop.

Utility routes: /health, /api/games, /sitemap.xml, /robots.txt, /source, /source.zip.

Progress and privacy

All new game state remains on the browser's Tamashi origin. Persistent keys:

  • tamashi:favorites:v1 and tamashi:recent:v1 for the hub.
  • tamashi:game:<slug>:v1 for best scores, stars and unlocked levels.
  • tamashi:arcade:sound:v1 for sound preference; off by default.
  • tamashi:album:v1 for a simple postcard-title shelf shared by the new games.
  • tamashi:word-demo:<YYYY-MM-DD>:v1 for the daily preview attempt. The server supplies the Asia/Tbilisi date when loading a player page.

Privacy-page clearing removes only favorites and history. Each game's in-app reset asks for confirmation and clears only that game's level progress. Sound, postcard and daily-preview records remain; browser site-data settings can remove all Tamashi local records. Storage denial does not prevent gameplay, but persistence can then be unavailable. There is no cloud save, account synchronization or verified global leaderboard.

Supra Stack integration

Existing project: omriluz/supra-stack.

Original endpoint: https://omriluz--01a080c9879371ca822a748c007e90d2.web.val.run/

The collection leaves its source, mechanics, origin and save keys unchanged. The original game loads only after a click and retains its existing sandbox permissions. Its interface is English. Embedded and standalone progress may differ because of browser storage partitioning; use Open original game for an earlier standalone save. The new games' postcard shelf does not pretend to import Supra Stack achievements.

New same-origin players receive popup permission for their explicit navigation links. They still cannot access camera, microphone or geolocation. No network score submission or tracking is included. Hosting can process ordinary request data.

Validation

The release has 116 local Chromium gameplay/interface checks: 74 rules/progression checks and 42 interaction checks. These include automated completions of all 42 arcade levels, all 32 demo answers, repeated-letter evaluation, daily-preview persistence, real pointer/keyboard activation, pause, replay retention, selective reset, denied storage and Georgian layouts at 320 pixels.

Those browser tests load the source in memory, with emulated localStorage, because live browser navigation was unavailable in the build environment. They are not live-origin end-to-end tests or human difficulty balancing. The downloadable implementation/test bundle includes the browser harness and reports.

Run tests/verify.ts inside Val Town for 104 SSR/hub-DOM checks. Run tests/verify-arcade.ts for 70 route, asset, indexing and raw-source parity checks. The latter compares ten game-source hashes with the browser-tested files, not the transpiled network output. Run both scripts/check-live.ts and scripts/check-arcade-live.ts after publishing to test the actual production HTTP origin and source export.

Physical Android/iOS playtesting, native Georgian review, difficulty tuning and full-screen/share-dialog checks remain necessary before a production audience launch. See ARCADE-RELEASE.md for scope and remaining work.

Source visibility and GitHub

The current Val Town project has public source. The allowlisted /source.zip export is also public and contains code only. Never place secrets in source; use project environment variables. Remove the export route before making future server source private. A private GitHub repository would not change Val Town source visibility.

The connected GitHub search could not find Tamashi, and direct access to omriluz/tamashi returned 404. This release has not been committed to GitHub, and no automatic GitHub-to-Val-Town synchronization is configured. The GitHub connector does not expose repository creation. The existing scripts/create-private-repo.sh remains an optional, explicit authenticated CLI path to create and push a private repository; it refuses to overwrite an existing repository or remote.