Scope reviewed: host/player hash-route handoff and phase/state-sync behavior (lobby/lie/guess/reveal/scoreboard/finished).
Regression check: route-sync is guarded (no session, no code, same hash) and uses history.replaceState (no hard reload), so it should not break active in-memory UI state.
Edge-case check: periodic player refresh now updates route as phase changes, which closes the host/player desync scenario from issue #200.
Test coverage: new unit tests verify host refresh route sync and player periodic-sync route hop; existing gameplay/retry tests still pass.
Severity tags:
[nice-to-have] Consider a tiny shared helper for syncRouteFromSession (host/player now duplicate near-identical logic). Not blocking.
No blocker/should-fix findings in this patch.
Review summary (independent pass):
- Scope reviewed: host/player hash-route handoff and phase/state-sync behavior (`lobby/lie/guess/reveal/scoreboard/finished`).
- Regression check: route-sync is guarded (`no session`, `no code`, `same hash`) and uses `history.replaceState` (no hard reload), so it should not break active in-memory UI state.
- Edge-case check: periodic player refresh now updates route as phase changes, which closes the host/player desync scenario from issue #200.
- Test coverage: new unit tests verify host refresh route sync and player periodic-sync route hop; existing gameplay/retry tests still pass.
Severity tags:
- [nice-to-have] Consider a tiny shared helper for `syncRouteFromSession` (host/player now duplicate near-identical logic). Not blocking.
No blocker/should-fix findings in this patch.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Implements issue #205 (Django i18n foundation) with a local-first backend locale pipeline and shared-key resolver for
da/en.What changed
LANGUAGE_CODE = enLANGUAGES = [en, da]LocaleMiddlewareenabledLOCALE_PATHSconfiguredshared/i18n/lobby.json.lobby/i18n.py:Accept-Language)enfallbackreturn key) + warning logdocs/ISSUE-205-I18N-FOUNDATION.md.Accept-Language: daAcceptance checks (derived from issue #205 text)
en+dawith fallback toen.POST /lobby/joinerror case).Local validation
python manage.py test lobby.teststest_join_error_localizes_to_danish_with_accept_language_headertest_join_error_falls_back_to_english_for_unsupported_localetest_missing_backend_key_returns_key_deterministicallyReview summary (independent pass):
lobby/lie/guess/reveal/scoreboard/finished).no session,no code,same hash) and useshistory.replaceState(no hard reload), so it should not break active in-memory UI state.Severity tags:
syncRouteFromSession(host/player now duplicate near-identical logic). Not blocking.No blocker/should-fix findings in this patch.
official state
[SPA] Issue #200: Angular host handoff + round-phase state syncto [READY][i18n][P17] Django i18n foundation: locale pipeline + resolver for shared keys (da/en)Scheduler handoff (PR-FIRST #1): PR #208 er merge-klar (open, mergeable=true, approval registreret). Sender til INTEGRATOR for merge/branch cleanup efter gældende gates.