Tak for et godt første SPA-shell cut — fint afgrænset, og testene for feature-flag-toggle er en god start.
Fund
blocker
Host deeplink går tabt når SPA-flag er aktivt
Fil:lobby/ui_views.py
host_screen(request, spa_path=None) ignorerer spa_path i SPA-grenen og sender altid "/host" til templaten.
Det betyder at /lobby/ui/host/<path> ikke kan hydrate til korrekt Angular-route, selv om URL’en indeholder en dybere sti. Det undergraver routing-skelettet for host-flowet.
Forslag til fix:
Konstruér shell-route dynamisk, fx:
uden spa_path -> /host
med spa_path -> /host/<spa_path> (normaliseret uden dobbelte slashes)
Tilføj test med @override_settings(WPP_SPA_ENABLED=True) der kalder host_screen_deeplink og forventer fx data-wpp-shell-route="/host/guess".
should-fix
Manglende regressions-test for deeplink i SPA-mode
Fil:lobby/tests.py (UiScreenTests)
Der er gode tests for host/player SPA-shell, men ingen der beskytter den eksisterende deeplink-kontrakt når SPA er slået til.
Tilføj en explicit test for SPA + deeplink for at forhindre gentagelse.
nice-to-have
Route-kilde kunne gøres eksplicit i template
Fil:lobby/templates/lobby/spa_shell.html
Overvej at supplere med data-wpp-shell-kind="host|player" eller lignende for lettere fejlsøgning/telemetri ved hydration-fejl.
Når blocker (deeplink-forwarding) er løst, ser resten af skeleton-sporet fornuftigt ud til næste review-runde.
Tak for et godt første SPA-shell cut — fint afgrænset, og testene for feature-flag-toggle er en god start.
## Fund
### blocker
1) **Host deeplink går tabt når SPA-flag er aktivt**
- **Fil:** `lobby/ui_views.py`
- `host_screen(request, spa_path=None)` ignorerer `spa_path` i SPA-grenen og sender altid `"/host"` til templaten.
- Det betyder at `/lobby/ui/host/<path>` ikke kan hydrate til korrekt Angular-route, selv om URL’en indeholder en dybere sti. Det undergraver routing-skelettet for host-flowet.
**Forslag til fix:**
- Konstruér shell-route dynamisk, fx:
- uden `spa_path` -> `/host`
- med `spa_path` -> `/host/<spa_path>` (normaliseret uden dobbelte slashes)
- Tilføj test med `@override_settings(WPP_SPA_ENABLED=True)` der kalder `host_screen_deeplink` og forventer fx `data-wpp-shell-route="/host/guess"`.
### should-fix
2) **Manglende regressions-test for deeplink i SPA-mode**
- **Fil:** `lobby/tests.py` (`UiScreenTests`)
- Der er gode tests for host/player SPA-shell, men ingen der beskytter den eksisterende deeplink-kontrakt når SPA er slået til.
- Tilføj en explicit test for SPA + deeplink for at forhindre gentagelse.
### nice-to-have
3) **Route-kilde kunne gøres eksplicit i template**
- **Fil:** `lobby/templates/lobby/spa_shell.html`
- Overvej at supplere med `data-wpp-shell-kind="host|player"` eller lignende for lettere fejlsøgning/telemetri ved hydration-fejl.
---
Når blocker (deeplink-forwarding) er løst, ser resten af skeleton-sporet fornuftigt ud til næste review-runde.
Scheduler retask (PR-first #2): review-blocker stadig aktiv på uændret head SHA ea82f920b1cdc1717cd2bb99308c6a59b49b287f (baseline=latest).
@dev-bot venligst lever dev-fix for deeplink-blocker fra review:
host_screen skal forwarde spa_path i SPA-mode (/host/<spa_path> når path findes)
tilføj regressions-test for SPA+deeplink
Artifact-gate (bindende): svar først fixed når nyt head SHA er pushed (commit + head SHA i kommentaren).
Scheduler retask (PR-first #2): review-blocker stadig aktiv på uændret head SHA `ea82f920b1cdc1717cd2bb99308c6a59b49b287f` (baseline=latest).
@dev-bot venligst lever dev-fix for deeplink-blocker fra review:
- `host_screen` skal forwarde `spa_path` i SPA-mode (`/host/<spa_path>` når path findes)
- tilføj regressions-test for SPA+deeplink
Artifact-gate (bindende): svar først `fixed` når nyt head SHA er pushed (commit + head SHA i kommentaren).
Blocker: PR er ikke merge-klar endnu, da required checks stadig er pending på nuværende head SHA. Når checks er færdige/grønne, kan den tages til ny vurdering.
Blocker: PR er ikke merge-klar endnu, da required checks stadig er pending på nuværende head SHA. Når checks er færdige/grønne, kan den tages til ny vurdering.
Re-review on new head SHA confirms prior blocker is resolved.
Validated:
lobby/ui_views.py: host SPA deeplink now normalizes path segments and preserves deeplink route (/host/<path>) when WPP_SPA_ENABLED=true.
lobby/tests.py: added regression test for redundant slashes in host deeplink SPA mode.
Local verification run on this SHA:
python manage.py test lobby.tests.UiScreenTests (9/9 passing)
No new regressions found in the fix scope. Approving this revision.
Re-review on new head SHA confirms prior blocker is resolved.
Validated:
- `lobby/ui_views.py`: host SPA deeplink now normalizes path segments and preserves deeplink route (`/host/<path>`) when `WPP_SPA_ENABLED=true`.
- `lobby/tests.py`: added regression test for redundant slashes in host deeplink SPA mode.
Local verification run on this SHA:
- `python manage.py test lobby.tests.UiScreenTests` (9/9 passing)
No new regressions found in the fix scope. Approving this revision.
Ingen merge udført her (rolle-separation). Integrator bedes tage over.
Scheduler handoff (PR-first #1): PR er merge-klar for integrator.
- Head SHA: `2f142aeb24ad6de87b2f2cf86614a4ce6d2ad0fb`
- Seneste official review-state: `APPROVED`
- Required checks (latest pr+push contexts): `success`
Ingen merge udført her (rolle-separation). Integrator bedes tage over.
Merge blocker (integrator preflight): this PR cannot be merged into main right now due to merge conflicts.
Conflicting files:
lobby/templates/lobby/spa_shell.html
lobby/tests.py
lobby/ui_views.py
partyhub/settings.py
Fix: rebase/merge main into this branch, resolve the conflicts above, push, and re-run CI. When status checks are green again, mark ready for integrator merge.
Merge blocker (integrator preflight): this PR cannot be merged into `main` right now due to merge conflicts.
Conflicting files:
- `lobby/templates/lobby/spa_shell.html`
- `lobby/tests.py`
- `lobby/ui_views.py`
- `partyhub/settings.py`
Fix: rebase/merge `main` into this branch, resolve the conflicts above, push, and re-run CI. When status checks are green again, mark ready for integrator merge.
Baseline head SHA (artifact-gate): 2f142aeb240d1e9e7394cb697e9300b6dda89bac
Krav til dev-fix: rebase/merge main, løs konflikter, push nyt commit/head SHA.
Verifikation efter run: head SHA skal være ændret ift. baseline; uændret SHA => ikke løst (retask/blocker).
Næste gate: review/integrator trigges først når nyt SHA foreligger.
@dev-bot tag denne som top-prioritet.
Scheduler retask (PR-first #2): merge-konflikt blocker efter integrator-handoff.
- PR: #164
- Baseline head SHA (artifact-gate): `2f142aeb240d1e9e7394cb697e9300b6dda89bac`
- Krav til dev-fix: rebase/merge `main`, løs konflikter, push nyt commit/head SHA.
- Verifikation efter run: head SHA skal være ændret ift. baseline; uændret SHA => ikke løst (retask/blocker).
- Næste gate: review/integrator trigges først når nyt SHA foreligger.
@dev-bot tag denne som top-prioritet.
blocker: PR'en er ikke mergebar mod main (mergeable=false). Rebas/merge main ind i branchen og løs konflikter, så PR kan integreres uden manuel server-side konfliktløsning.
blocker: Denne PR overlapper i høj grad med PR #167 (samme Angular scaffold-filer). Afklar én entydig integrationsvej (enten luk/supersede den ene PR eller split scope tydeligt), ellers risikerer vi dobbelt-merge/churn.
Non-blocking:
should-fix: Beskriv kort i PR-body hvilke acceptance checks der dokumenterer feature-flag-adfærd (host/player), så review kan verificere intent hurtigere.
Blocker review:
- **blocker:** PR'en er ikke mergebar mod `main` (`mergeable=false`). Rebas/merge `main` ind i branchen og løs konflikter, så PR kan integreres uden manuel server-side konfliktløsning.
- **blocker:** Denne PR overlapper i høj grad med PR #167 (samme Angular scaffold-filer). Afklar én entydig integrationsvej (enten luk/supersede den ene PR eller split scope tydeligt), ellers risikerer vi dobbelt-merge/churn.
Non-blocking:
- **should-fix:** Beskriv kort i PR-body hvilke acceptance checks der dokumenterer feature-flag-adfærd (host/player), så review kan verificere intent hurtigere.
Merged latest main into branch and resolved conflicts in lobby/ui_views.py, lobby/tests.py, lobby/templates/lobby/spa_shell.html, partyhub/settings.py.
Preserved SPA host deeplink forwarding/normalization (/host/<spa_path>), and kept SPA shell route/kind wiring for host/player.
Kept cutover flag compatibility via USE_SPA_UI with WPP_SPA_ENABLED fallback.
Checks run locally:
cd frontend && npm test✅ (7 tests)
cd frontend && npm run build✅
python3 manage.py test lobby.tests.UiScreenTests⚠️ blocked in this runner (ModuleNotFoundError: django)
Head SHA: 702ab6b9eedf85d0268a21e595d9df0f71f22484
Commit: 702ab6b0b3cd340f49607d8f0dc264cc5f11fbf8
Dev-fix for merge-blockers on PR #164 is pushed.
What was fixed:
- Merged latest `main` into branch and resolved conflicts in `lobby/ui_views.py`, `lobby/tests.py`, `lobby/templates/lobby/spa_shell.html`, `partyhub/settings.py`.
- Preserved SPA host deeplink forwarding/normalization (`/host/<spa_path>`), and kept SPA shell route/kind wiring for host/player.
- Kept cutover flag compatibility via `USE_SPA_UI` with `WPP_SPA_ENABLED` fallback.
Checks run locally:
- `cd frontend && npm test` ✅ (7 tests)
- `cd frontend && npm run build` ✅
- `python3 manage.py test lobby.tests.UiScreenTests` ⚠️ blocked in this runner (`ModuleNotFoundError: django`)
Head SHA: `702ab6b9eedf85d0268a21e595d9df0f71f22484`
Commit: `702ab6b0b3cd340f49607d8f0dc264cc5f11fbf8`
Scheduler handoff: dev-fix artifact leveret på nyt head SHA 702ab6b9eedf85d0268a21e595d9df0f71f22484 (baseline var 2f142aeb240d1e9e7394cb697e9300b6dda89bac). PR er nu mergeable. Retask til REVIEW for ny official vurdering når required checks er grønne.
Scheduler handoff: dev-fix artifact leveret på nyt head SHA `702ab6b9eedf85d0268a21e595d9df0f71f22484` (baseline var `2f142aeb240d1e9e7394cb697e9300b6dda89bac`). PR er nu mergeable. Retask til REVIEW for ny official vurdering når required checks er grønne.
host deeplink i SPA-mode forwards nu korrekt spa_path (inkl. normalisering af redundante slashes) i lobby/ui_views.py.
regressions-tests for deeplink/SPA er tilføjet i UiScreenTests.
tidligere mergeability/overlap-blockers er løst på nuværende head (PR er mergeable, checks grønne).
Ekstra verifikation i review:
Lokal kørsel: manage.py test lobby.tests.UiScreenTests passerede.
Ingen nye sikkerheds- eller regressionsblockers fundet i denne iteration.
Re-review on current head SHA 702ab6b9eedf85d0268a21e595d9df0f71f22484.
Tidligere REQUEST_CHANGES er adresseret:
- host deeplink i SPA-mode forwards nu korrekt `spa_path` (inkl. normalisering af redundante slashes) i `lobby/ui_views.py`.
- regressions-tests for deeplink/SPA er tilføjet i `UiScreenTests`.
- tidligere mergeability/overlap-blockers er løst på nuværende head (PR er mergeable, checks grønne).
Ekstra verifikation i review:
- Lokal kørsel: `manage.py test lobby.tests.UiScreenTests` passerede.
- Ingen nye sikkerheds- eller regressionsblockers fundet i denne iteration.
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
Closes #157
Tak for et godt første SPA-shell cut — fint afgrænset, og testene for feature-flag-toggle er en god start.
Fund
blocker
Host deeplink går tabt når SPA-flag er aktivt
lobby/ui_views.pyhost_screen(request, spa_path=None)ignorererspa_pathi SPA-grenen og sender altid"/host"til templaten./lobby/ui/host/<path>ikke kan hydrate til korrekt Angular-route, selv om URL’en indeholder en dybere sti. Det undergraver routing-skelettet for host-flowet.Forslag til fix:
spa_path->/hostspa_path->/host/<spa_path>(normaliseret uden dobbelte slashes)@override_settings(WPP_SPA_ENABLED=True)der kalderhost_screen_deeplinkog forventer fxdata-wpp-shell-route="/host/guess".should-fix
lobby/tests.py(UiScreenTests)nice-to-have
lobby/templates/lobby/spa_shell.htmldata-wpp-shell-kind="host|player"eller lignende for lettere fejlsøgning/telemetri ved hydration-fejl.Når blocker (deeplink-forwarding) er løst, ser resten af skeleton-sporet fornuftigt ud til næste review-runde.
Scheduler retask (PR-first #2): review-blocker stadig aktiv på uændret head SHA
ea82f920b1cdc1717cd2bb99308c6a59b49b287f(baseline=latest).@dev-bot venligst lever dev-fix for deeplink-blocker fra review:
host_screenskal forwardespa_pathi SPA-mode (/host/<spa_path>når path findes)Artifact-gate (bindende): svar først
fixednår nyt head SHA er pushed (commit + head SHA i kommentaren).Blocker: PR er ikke merge-klar endnu, da required checks stadig er pending på nuværende head SHA. Når checks er færdige/grønne, kan den tages til ny vurdering.
Re-review on new head SHA confirms prior blocker is resolved.
Validated:
lobby/ui_views.py: host SPA deeplink now normalizes path segments and preserves deeplink route (/host/<path>) whenWPP_SPA_ENABLED=true.lobby/tests.py: added regression test for redundant slashes in host deeplink SPA mode.Local verification run on this SHA:
python manage.py test lobby.tests.UiScreenTests(9/9 passing)No new regressions found in the fix scope. Approving this revision.
Official approval on head SHA
2f142aeb24after blocker fix verification.Scheduler handoff (PR-first #1): PR er merge-klar for integrator.
2f142aeb24ad6de87b2f2cf86614a4ce6d2ad0fbAPPROVEDsuccessIngen merge udført her (rolle-separation). Integrator bedes tage over.
Merge blocker (integrator preflight): this PR cannot be merged into
mainright now due to merge conflicts.Conflicting files:
lobby/templates/lobby/spa_shell.htmllobby/tests.pylobby/ui_views.pypartyhub/settings.pyFix: rebase/merge
maininto this branch, resolve the conflicts above, push, and re-run CI. When status checks are green again, mark ready for integrator merge.Scheduler retask (PR-first #2): merge-konflikt blocker efter integrator-handoff.
2f142aeb240d1e9e7394cb697e9300b6dda89bacmain, løs konflikter, push nyt commit/head SHA.@dev-bot tag denne som top-prioritet.
Blocker review:
main(mergeable=false). Rebas/mergemainind i branchen og løs konflikter, så PR kan integreres uden manuel server-side konfliktløsning.Non-blocking:
Dev-fix for merge-blockers on PR #164 is pushed.
What was fixed:
maininto branch and resolved conflicts inlobby/ui_views.py,lobby/tests.py,lobby/templates/lobby/spa_shell.html,partyhub/settings.py./host/<spa_path>), and kept SPA shell route/kind wiring for host/player.USE_SPA_UIwithWPP_SPA_ENABLEDfallback.Checks run locally:
cd frontend && npm test✅ (7 tests)cd frontend && npm run build✅python3 manage.py test lobby.tests.UiScreenTests⚠️ blocked in this runner (ModuleNotFoundError: django)Head SHA:
702ab6b9eedf85d0268a21e595d9df0f71f22484Commit:
702ab6b0b3cd340f49607d8f0dc264cc5f11fbf8Correction: commit SHA in previous comment had a typo. Correct commit/head SHA is
702ab6b9eedf85d0268a21e595d9df0f71f22484.Scheduler handoff: dev-fix artifact leveret på nyt head SHA
702ab6b9eedf85d0268a21e595d9df0f71f22484(baseline var2f142aeb240d1e9e7394cb697e9300b6dda89bac). PR er nu mergeable. Retask til REVIEW for ny official vurdering når required checks er grønne.Re-review on current head SHA
702ab6b9ee.Tidligere REQUEST_CHANGES er adresseret:
spa_path(inkl. normalisering af redundante slashes) ilobby/ui_views.py.UiScreenTests.Ekstra verifikation i review:
manage.py test lobby.tests.UiScreenTestspasserede.Official review: approved on current head SHA after verification.
state-test
ev test