Repository navigation
Conversation
… closes every tooltip Testers could not find the new modes: Sprint sat behind /review, Own text behind a Map key, Daily was a small link. Home now has a sixth, quiet row of four cards (glyph, name, one line). Sprint is dimmed until Stage 2 opens and Mistakes until there are weak spots; their Tip says how they open. Daily shows a "готово" chip once cleared today. The row is a lazy chunk so the initial JS stays under 150 KB, and a coach-mark step points at it. On screens up to 900 px tall the session steps become one line of chips and the vertical rhythm tightens, so Continue's Start button is never clipped (it already was at 1024x768). The status bar's stats, the layout switch and Home's weak-spot chips now use the shared Tip, so Esc hides their bubble. Daily's "Днів поспіль" becomes "Викликів поспіль" so it no longer reads as the Streak. CoachMarks' keydown listener joins the seam exemptions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ground note Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, and the audit's copy gaps
Accessibility (D2):
- The status bar's Level, Streak and Race Rating, the rail's Season card, Home's weak chips and
Profile's badges are named groups/items whose name says the value; the stage's scroll area is a
named region ("Вміст екрана").
- e2e: expectFocusablesNamed reads Chromium's accessibility tree and fails on any focusable node
without a role or a name; viewport-1024 and the new viewport-390 run it on every screen.
Phone, 390x844 (D3):
- /about gets a phone layout: one column, type sized to the screen, the hero card and lede no
longer cut (scrollWidth 462 -> 390). The method cells no longer stack on top of each other:
the shell's .stage grid placement leaked onto them at every width.
- The bottom dock spans the full width with five even tabs; the rail's side tooltips are hidden
on a phone.
- Sprint, Daily and Own text ask for a physical keyboard on a phone like every training route
(Sprint's header overlapped itself at 390).
- e2e/viewport-390.spec.ts: 14 routes, no sideways scroll, nothing cut, axe, named focus stops,
and the dock's even spacing.
Copy and logic:
- First run: picking a language switches the status bar's УКР/ENG at once, and the switch picks
in the flow (past step 1 it returns to the level step for the new layout).
- The attempt-type buttons keep one pair of names in both states: «Тренувальна спроба» /
«Залікова спроба».
- Academy: "mechanics" is decided per exercise, from whether its lines hold letter groups that
are not words; «the · you» and other word drills no longer say «Рядки не є словами».
- Result: after a cleared practice attempt the headline asks for the test only when «Далі»
opens it (practiceAdvice); otherwise it says the floor is cleared. Unit-tested.
- Profile badges: locked is a dashed edge, a lock glyph and muted text at >= 4.5:1, never
opacity, so axe passes in light, dark and low vision.
- e2e: the coach-line assertions follow the shortened result copy; the weak-transition line is
checked to name both fingers in full and not to overflow.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #40 (
feat/modes-row): this branch starts from it, so the diff againstmainincludes #40 until that merges. Main is frozen for judging; do not merge.Why
A jury-style audit (D2, D3, B3) and CI on 80d8375 found focus stops without a name, a cut-off
/abouton a phone, a half-width dock, a first-run language switch that lagged, mismatched mode labels, a wrong "mechanics" marker, a result headline that disagreed with «Далі», low-contrast locked badges, and stale coach-line e2e.What
group "Рівень 1: 10 з 160 XP"). The tooltip stays as the description. The stage scroll area isregion "Вміст екрана". NewexpectFocusablesNamed(e2e harness) reads Chromium's accessibility tree over CDP and fails on any focusable node without a role or a name.viewport-1024andviewport-390run it on every screen./aboutgets a phone layout: one column, type sized to the screen, nothing cut. The method cells also stopped stacking on one spot at every width, because the shell's.stagegrid placement had leaked onto them. The dock now spans 0–390 with five even tabs. Sprint, Daily and Own text show the "physical keyboard" notice on a phone like other training routes (Sprint's header overlapped at 390). Newe2e/viewport-390.spec.ts(modelled on viewport-1024) covers 14 routes: no sideways scroll, nothing cut at the edge, axe, named focus stops, plus the dock's even spacing.practiceAdvice, used by both the headline andnextStartMode. The headline asks for the test only when «Далі» opens it. When the coach points elsewhere (the next key) it says «Точність 98,0%, поріг 95% взято.» and the card names the destination. Unit-tested, including a check that the two never disagree.scrollWidth at 390×844 (before → after)
/about/,/map,/races,/groups,/profile,/settings,/licences,/privacy,/formulas,/about/project,/own,/sprint,/daily/formulaskeeps its level table in its own focusable scroll area, which is intentional./sprintshowed a broken header at 390 and now shows the keyboard notice.Tests
pnpm check: green (809 unit tests).pnpm build: initial JS 149.6 KB gzip (149.3 on feat(home): Modes row (Daily, Sprint, Own text, Mistakes) + Esc closes every tooltip #40).CI=1):viewport-39015/15,viewport-102414/14,home,academy,exercise -g mechanics: 41 passed.result,path-progress,stage1-moves,stage2: 39/39.shell,meta-screens: 20/20.settings -g "Profile|first run"(all three themes) andmeta-screens:137: passed./about, the dock, Profile badges in light and dark, the first-run switch, the pre-start mode pair, the result coach line, and the Academy marker.🤖 Generated with Claude Code