Cleanup: pf2e subclasses + all native dialogs → themed Modals
- pf2e classes now show the defining 1st-level choice (instinct / doctrine / bloodline / mystery / racket / implement / thesis / …) in the wizard's subclass picker, like 5e. Curated PF2E_SUBCLASSES in pf2e/progression.ts, merged into the class during the wizard's pf2e enrich step. - replaced every remaining native dialog with a themed Modal: - PlayerView session-password prompt → password Modal - Settings cloud-conflict confirm → "Use cloud / Keep this device" Modal - SessionControl host-password prompt → host Modal (optional password) - MapEditor text-label prompt → label Modal (captures the click point) No window.confirm / window.prompt / window.alert remain in the app. Realtime e2e updated for the host Modal (Host → Start hosting). Gate: 293 unit + 35 e2e + 2 realtime; tsc + app/server build clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -20,6 +20,7 @@ test('GM hosts a session; a player on another device sees live combat', async ({
|
||||
await gm.getByRole('button', { name: 'Load sample campaign' }).click();
|
||||
await expect(gm.getByRole('heading', { name: 'Sample: Lost Mine' })).toBeVisible();
|
||||
await gm.getByRole('button', { name: 'Host' }).click();
|
||||
await gm.getByRole('button', { name: 'Start hosting' }).click();
|
||||
const code = (await gm.getByTestId('join-code').textContent())?.replace(/[^A-Z0-9]/g, '') ?? '';
|
||||
expect(code).toHaveLength(6);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user