Skip to content

fix(frontend): match the multilingual designs from the end-to-end run (D-02, D-06, D-07, D-11, D-16, D-19, D-24) - #139

Merged
navidshad merged 2 commits into
devfrom
ml/e2e-dashboard-fixes
Oct 16, 2026
Merged

navidshad merged 2 commits into
devfrom
ml/e2e-dashboard-fixes

Conversation

@navidshad

Copy link
Copy Markdown
Contributor

What

Fixes the dashboard gaps the multilingual round 1 end-to-end run found, so the screens match the Dashboard design artifact and the UX spec.

Row Before After
D-19 Starter pack A long list of all 150 chunks with "Mark as heard"; the Persian translation sat on the far right One chunk at a time: band chip, group, phrase with a play button, the translation right under it (right to left, Vazirmatn), "Next chunk", "12 of 150 chunks heard · About 2 min a day", a finish state, "Skip for now. It stays on Today." and the full skip. A full daily intake shows "That is all for today".
D-11 Board, new language "Watch something… with the extension" and "Browse bundles"; pack card with a ghost "Open" The design's "Save your first German phrase" card with "Add a phrase" (opens Bundles) and "Get the Chrome extension", and the starter pack as an equal card ("Optional. 150 short phrases with sound…", Start).
D-24 Chat test After the last answer the page stayed scrolled down, so "Your start point" was cut off The result starts from the top. There is no voice input for text answers today, so no microphone; step 2 now says "Type your answers." instead of "Type or talk".
D-07 Add a language Page title and box title both "German is in your languages" Page title "You are all set", box title "German is in your languages".
D-06 / B-06 Languages Coming-later row only inside the card grid, no heading; Tell me forgot the press on reload A "Coming later" heading with every learning language that has enabled: false (Portuguese). Tell me reads interests from get-language-state, so "Got it" comes back after a reload; with no interests field it keeps this visit's press and starts at "Tell me" after a reload.
D-16 Start a session "German, explained i…" cut off Summary values wrap.
D-02 Header at 375 px The language pill ran over the breadcrumb At phone width the pill shows the chip only (the name stays in its label) and the breadcrumb shows only the page name.

ui/ changes: StLanguageMenu hides the name below sm, StAppShell keeps a gap between title and header-right, one new icon (solar:add-circle-bold-duotone).

How it was tested

  • Vitest: the language store's interests (read from state, fallback, optimistic press, rollback, normalizing). All 126 unit tests pass.
  • Playwright (chromium and Mobile Chrome, all 74 tests pass): the one-chunk starter pack (translation under the phrase and right to left, progress, finish, Go to Today), Skip for now, the intake-full state, the new-language board copy and links, the pack card's Start, the chat test result in view with the scroll at the top, "You are all set", Coming later with interests and after a reload, Tell me without interests, the step 2 copy, the Start a session summary wrapping, and no overlap at 375 px.

Not covered: the real interests field is being added on the server now; the client accepts a list of codes (or { language } rows) and ignores anything else.

🤖 Generated with Claude Code

navidshad and others added 2 commits October 16, 2026 03:47
… (D-02, D-06, D-07, D-11, D-16, D-19, D-24)

- Starter pack (D-19): one chunk at a time with sound, band chip and group,
  "Next chunk", "12 of 150 chunks heard", a finish state, "Skip for now" and the
  full skip. The own-language translation sits right under its phrase.
- Board, new language (D-11): "Save your first German phrase" with "Add a phrase"
  and "Get the Chrome extension", and the starter pack as an equal card with Start.
- Chat test (D-24): the result starts from the top, so "Your start point" is not
  cut off. No voice input exists for text, so step 2 says "Type your answers".
- Add a language (D-07): the done step's page title is "You are all set".
- Languages (D-06, B-06): "Coming later" heading for every learning language with
  enabled: false. Tell me reads `interests` from get-language-state, so "Got it"
  survives a reload, and falls back to this visit's press when the field is missing.
- Start a session (D-16): the summary values wrap instead of being cut off.
- Header (D-02): at phone width the pill is the chip alone and the breadcrumb shows
  only the page name, so they never overlap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@navidshad
navidshad merged commit 194d95d into dev Oct 16, 2026
6 checks passed
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.3.0-dev.30 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant