Skip to content

release: playable game — guide tooltips, own text, sprint, daily, mistakes review, white background, text diet - #35

Merged
prodelt merged 24 commits into
mainfrom
integrate/playable-game
Oct 5, 2026
Merged

prodelt merged 24 commits into
mainfrom
integrate/playable-game

Conversation

@prodelt

@prodelt prodelt commented Oct 5, 2026

Copy link
Copy Markdown
Owner

One integration branch merging the evening's feature PRs so CI runs once on the combination and conflicts are resolved once:

Conflicts resolved: router.tsx (sprint, own text, daily routes side by side), messages/home (mistakes-review copy over the text diet), messages/map (text diet + own-text keys).

Merging this PR closes the individual PRs as merged.

🤖 Generated with Claude Code

prodelt and others added 21 commits October 5, 2026 23:32
A small <Tip> wraps a control: the bubble shows on hover and keyboard focus,
is read out through aria-describedby, hides on Esc and shifts sideways so it
never leaves the viewport. It replaces the native title on the sound toggle,
settings cog, "Про гру" button, each rail destination and the season card;
rail bubbles sit to the right of the item.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
First-time testers said the screens carry too much text. Shorten the
visible sentences to the first-minute rules (sentence <= 15 words, verb
first, the fact kept as a number or label): Map block goals, stage
finish criteria, mastery and review hints; Result coach lines, comparison,
rhythm intro, practice/test notes; Home race lead and empty weak spot.
Placeholders are unchanged, so no component changes. The result e2e
spec follows the shorter practice lines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The light theme's paper was a pink tint and the shell drew drifting pink
gradient blobs behind every screen. The page is now plain white, the deep
paper a neutral light grey (#f4f5f7), and the hairlines, faint ink, nav
dimmed and sage tint lose their red hue. White panels on the white page
read by a neutral 1px edge at 3.2:1. The red ember hero cards stay.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t button

The Home weak-spot panel becomes "Робота над помилками": the 2-3 weakest
keys and transitions as chips (hover/focus hint explains each), one button
that starts the existing review drill built from all of them (real words
once Stage 2 is open), and an empty state that points to the first exercise.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nger clips it

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A lazy /sprint route: words from the learner's open letters only, an
endless line, a 60 s countdown that starts on the first keystroke, then
pace, accuracy and the per-language best kept in localStorage. A sprint
under the accuracy floor sets no best. It records no Attempt, so no XP,
mastery, sync or unlocks. Entry: a button on the Review screen once
Stage 2 words are open.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…actice

A "Own text" button (T) beside free practice on the map opens /own, a lazy
route. The text is decoded as strict UTF-8 (20 KB, .txt/.md only, no NUL),
markdown markup is stripped, typographic quotes/dashes/ellipsis become
keyboard characters, characters the active layout cannot type are named in
the error, and long texts are cut at a sentence end. The run reuses
ExerciseRun in practice mode, recorded like free practice.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
/daily shows today's challenge, a done-today state and the count of
consecutive cleared days. The words are a seeded shuffle of the 300 most
frequent bank words, seeded by the local date and the language, so every
learner of a language types the same text that day. The run reuses the
ordinary exercise route and result screen under `<layout>.daily`; those
attempts are filtered out of progress, so they earn no XP, mastery or
unlocks. Cleared days are kept in localStorage as well.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, smaller line

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tiles inside panels (option cards, segments, rows) draw `--color-paper`,
so a white paper made them vanish. `paper` is now the neutral grey tile
(#f4f5f7, deep #eceef1) and the light theme paints the page itself with
`paper-raised` white.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Layout check, mode hints, start hint, hand placement and the mechanics note drop to one short line each, with no "we".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A learner who picks "never touch-typed" now opens the anchors run
(yq.run.anchors / qwerty.run.anchors, "Ряд · а") that the Start Card
names, instead of the first closed key «п» (run.KeyG). The other levels
still open at the first closed key. Unlock rules are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rate/playable-game

# Conflicts:
#	apps/web/messages/home/en.json
#	apps/web/messages/home/uk.json
…ayable-game

# Conflicts:
#	apps/web/messages/map/en.json
#	apps/web/messages/map/uk.json
#	apps/web/src/app/router.tsx
…rate/playable-game

# Conflicts:
#	apps/web/src/app/router.tsx
@vercel

vercel Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
typing-race Ready Ready Preview Oct 5, 2026 8:48pm UTC

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@prodelt
prodelt merged commit 4bf8082 into main Oct 5, 2026
4 of 6 checks passed

This branch was successfully deployed

1 active deployment
Preview — 51f29e25 Deployed Oct 5, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant