fix: Hebrew word list, PWA banner, keyboard sofit, UX improvements#182
fix: Hebrew word list, PWA banner, keyboard sofit, UX improvements#182
Conversation
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (93)
📝 WalkthroughWalkthroughThis pull request adds comprehensive part-of-speech (POS) label translations across 60+ languages, implements PWA installation functionality with a fixed banner UI, introduces POS translation utilities, enables keyboard final-form variant state propagation, and adds logging to the definitions pipeline. It also updates the app manifest for PWA support. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Browser as Browser/PWA
participant Game as Game Page
participant GameStore as Game Store
participant Plugin as PWA Plugin
User->>Browser: Opens game page
Plugin->>GameStore: Watch gameOver (immediate)
alt Game already over on load
GameStore-->>Plugin: gameOver = true (immediate)
Plugin->>Plugin: setTimeout(showBanner)
else Game in progress
User->>Game: Makes guess
Game->>GameStore: updateGameState
GameStore-->>Plugin: gameOver changes to true
Plugin->>Plugin: showBanner()
end
alt bannerShown guard passes
Plugin->>Browser: Display PWA install banner
User->>Browser: Clicks install or dismiss
Browser->>Plugin: $pwaInstall.install() or dismiss()
Plugin->>Plugin: Set bannerShown = true
Browser-->>User: Install prompt or close banner
else bannerShown already set
Plugin->>Plugin: Skip banner display
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
📝 Coding Plan
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
## Hebrew (P0 — root cause of 8.5% completion rate) - Unblock 57,483 Hebrew words from blocked → valid tier Common words like ישראל, אנחנו, ילדים, מחלקה were blocked, causing "word not valid" for normal Hebrew guesses. Hebrew was the only language with 57% blocked (others: 0-4%). ## Keyboard sofit colors (Hebrew + Greek) - Fix updateKeyColor() to propagate colors to final↔regular form pairs via final_form_map (Hebrew: כ↔ך מ↔ם נ↔ן פ↔ף צ↔ץ, Greek: σ↔ς). Previously only diacritic variants were linked, not positional forms. ## PWA install banner - Restore PWA install banner missing since Nuxt migration (Flask had <div id="pwa-install-banner"> + <pwa-install>, never ported) - Fix manifest.json icon paths: /static/favicon/ → /favicon/ (Flask legacy) - Add <link rel="manifest"> to head (PWA module doesn't inject in all cases) - Register pwa-install as Vue custom element (suppress warnings) - Show banner on game over (win or loss), not just win - Handle beforeinstallprompt arriving after game already completed - Update manifest description to 79 languages ## UX - Add share icon (SVG) to both share buttons in StatsModal - Add part-of-speech translation support in StatsModal definition display ## Analytics - Remove PostHog event skip list (was blocking guess_submit, guess_time, first_guess_delay from reaching PostHog) ## Diagnostics - Add logging to definition system (resolveDefinitionsDir, loadKaikkiFile, fetchDefinition) to diagnose why 57 languages return 404 on production ## Translations - Add/update language_config.json for 79 languages with UI translation keys - Add new configs for languages that had none (ckb, cs, el, eo, qya, rw, sl, tk, tlh)
4c15927 to
17908a7
Compare
Summary
blocked→valid. Hebrew had 57% of words blocked (every other language: 0-4%), causing common words like ישראל, אנחנו, ילדים to be rejected as "not valid". This was the root cause of Hebrew's 8.5% completion rate (vs 37% baseline).updateKeyColor()now propagates colors to final↔regular form pairs (Hebrew כ↔ך מ↔ם נ↔ן פ↔ף צ↔ץ, Greek σ↔ς). Previously only diacritic variants were linked./static/favicon/→/favicon/). Show on game over (win or loss). Handlebeforeinstallprompttiming edge cases.Risks
This is a large PR touching 92 files. Key risks:
blocked→valid. No words were added or removed — only thetierfield changed. Risk: some blocked words may be genuine garbage (transliterations, fragments). Follow-up LLM curation planned.@vite-pwa/nuxtmodule in unexpected ways on Render.Test plan
[DEFS]and[KAIKKI]entries after deploySummary by CodeRabbit
New Features
Localization
Bug Fixes