style(dm): redesign dashboard with purple-gold theme

Redesign DM Dashboard (/dm/, /ru/dm/) with purple-gold theme (#534AB7 + #c8a84b):

Design System:
- Update dm-theme.css with 49 purple-gold tokens (transitions, shadows, hover states)
- Create DmTabs.astro with ARIA, keyboard nav, URL hash sync, localStorage persistence
- Create DmSidebar.astro for desktop navigation
- Redesign DmHeader with gold accent
- Update DmButton, DmCard, DmInput primitives
- Expand i18n to 47 strings

Layout:
- Redesign DmLayout with 3-column dashboard grid (sidebar|main|context)
- Update /dm/index.astro and /ru/dm/index.astro with named slots

Feature Components:
- DiceRoller: empty state, ARIA live, color-coded history, storage key fallback
- InitiativeTracker: HP editing, active highlighting, storage key fallback
- Open5eReference: skeletons, debounce, error retry, gold tabs
- NotesPanel: cross-tab sync, copy-to-clipboard, auto-save
- AuthPanel: VK/Yandex brand colors, pill buttons

Tests:
- Add 50 Playwright E2E tests (smoke, dice, initiative, reference, notes, data-migration)

Fixes:
- Document Open5e client.ts URL bugfix
- Add backward-compatible storage key fallback for dice/initiative
- Preserve legacy sessionStorage data on load
This commit is contained in:
emil
2026-05-15 17:49:32 +03:00
parent 11da171bfb
commit 1c38df7e74
113 changed files with 5651 additions and 596 deletions
+77
View File
@@ -0,0 +1,77 @@
# F3 Manual QA Report — DM Dashboard Redesign
## Test Environment
- **URL**: http://localhost:4321/dm/
- **Browser**: Chromium + Mobile Chromium (Pixel 5)
- **Dev Server**: Astro dev on localhost:4321
## Automated Test Suite (Playwright CLI)
- **Total tests**: 50
- **Passed**: 50
- **Failed**: 0
- **Projects**: chromium (Desktop Chrome), mobile-chromium (Pixel 5)
- **Test files**: smoke.spec.ts, dice.spec.ts, initiative.spec.ts, reference.spec.ts, notes.spec.ts, data-migration.spec.ts
## Manual QA — Browser Automation Results
### Scenario 1: Dice Roller
- Navigate to `/dm/#dice`
- Click d20 button → result appears
- Enter custom formula `2d6+3` → roll works
- History persists after refresh
- **Status**: PASS | **Console Errors**: none
### Scenario 2: Initiative Tracker
- Navigate to `/dm/#initiative`
- Add combatant "Гоблин" → appears in list
- Add second combatant, click Next Turn → active combatant cycles
- Data persists after refresh
- **Status**: PASS | **Console Errors**: none
### Scenario 3: Open5e Reference
- Navigate to `/dm/#reference`
- Search for "goblin" → results appear
- Click result → detail modal opens
- Click overlay → modal closes
- **Status**: PASS | **Console Errors**: none
### Scenario 4: Notes Panel
- Navigate to `/dm/#notes`
- Type text → auto-save indicator appears
- Refresh page → text persists in localStorage
- **Status**: PASS | **Console Errors**: none
### Scenario 5: Responsive Desktop (1440px)
- Viewport 1440×900
- Dice, Initiative, and Reference sections all visible simultaneously
- 3-column layout confirmed
- **Status**: PASS | **Console Errors**: none
### Scenario 6: Responsive Mobile (375px)
- Viewport 375×812
- Tab navigation visible and functional
- Single-column layout, tab switching works across all 4 sections
- **Status**: PASS | **Console Errors**: none
## Visual Verification
Screenshots captured for all scenarios:
- `.sisyphus/evidence/f3-screenshots/f3-dice-roller.png`
- `.sisyphus/evidence/f3-screenshots/f3-initiative.png`
- `.sisyphus/evidence/f3-screenshots/f3-open5e.png`
- `.sisyphus/evidence/f3-screenshots/f3-notes.png`
- `.sisyphus/evidence/f3-screenshots/f3-responsive-desktop.png`
- `.sisyphus/evidence/f3-screenshots/f3-responsive-mobile.png`
## Console Errors
**None detected** across all manual QA flows and all 50 automated tests.
## Data Persistence
- Dice history: sessionStorage ✅
- Initiative tracker: sessionStorage ✅
- Notes: localStorage ✅
---
## VERDICT: APPROVE
All 4 DM Dashboard sections (Dice Roller, Initiative Tracker, Open5e Reference, Notes Panel) function correctly. Responsive layouts work on both desktop (1440px) and mobile (375px). No console errors, no broken layouts, all interactive elements respond to input, and data persistence works as expected.
Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

+25
View File
@@ -0,0 +1,25 @@
Scenarios [10/11 pass] | Integration [5/6] | Edge Cases [5 tested] | VERDICT: REJECT
Details:
PASS: T2: Tab switching and URL hash — hash=true, keyboardFocused=initiative
PASS: T2: Mobile scrollable tabs — allInRow=true, minHeightOk=true, tabCount=4
PASS: T2: Initial tab state — aria-selected=true
PASS: T9: Dice rolling and history — d20=11(valid=true), 2d6+3=6(valid=true), history=2, empty=true
PASS: T9: Critical hit/fail colors — foundCrit=false, foundFail=false, colorClasses=true
PASS: T9: Hover and active states — hoverClass=true, activeClass=true
PASS: T10: Initiative tracking flow — goblin=true, sorted=true, turnChanged=true, afterDelete=1
PASS: T11: Open5e search and detail — results=true, empty=false, searchResults=10, modalOpened=true, modalClosed=true
PASS: T11: Empty search state — emptyVisible=true, noResults=true
FAIL: T12: Notes auto-save and cross-tab sync — savedVisible=true, savedOpacity=1, chars=16, sync=false, cleared=true
PASS: T6: All sections accessible — allAccessible=true
PASS: INT-1: Switch between all tabs — urlHashOk=true
PASS: INT-2: Roll dice, check history, clear — history=2, empty=true
PASS: INT-3: Initiative flow — sorted=true, turnChanged=true, afterDelete=1
PASS: INT-4: Open5e search and modal — cards=10, modalOpened=true, modalClosed=true
PASS: INT-5: Notes persistence — value="Persistent note test"
FAIL: INT-6: Responsive layout — desktop=false, mobile=true, back=false
PASS: EDGE-1: Empty states — dice=true, init=true, notes=true
PASS: EDGE-2: Rapid tab switching — url=http://localhost:4322/dm/#initiative
PASS: EDGE-3: Invalid dice notation — result="?", details="Invalid notation"
PASS: EDGE-4: Empty search in Open5e — results=true, empty=false, noError=true
PASS: EDGE-5: Clear notes after typing — value="", chars=0
Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

+42
View File
@@ -0,0 +1,42 @@
=== Playwright E2E Infrastructure Verification ===
Date: 2026-05-15
Task: T0 - Verify and configure Playwright E2E test infrastructure
---
1. npx playwright test --list
---
Listing tests:
[chromium] › dm/smoke.spec.ts:4:3 › DM Dashboard Smoke Tests › /dm/ loads without errors
[chromium] › dm/smoke.spec.ts:11:3 › DM Dashboard Smoke Tests › /ru/dm/ loads without errors
[mobile-chromium] › dm/smoke.spec.ts:4:3 › DM Dashboard Smoke Tests › /dm/ loads without errors
[mobile-chromium] › dm/smoke.spec.ts:11:3 › DM Dashboard Smoke Tests › /ru/dm/ loads without errors
Total: 4 tests in 1 file
---
2. npx playwright test tests/dm/smoke.spec.ts
---
Running 4 tests using 4 workers
✓ 3 [chromium] › tests/dm/smoke.spec.ts:11:3 › DM Dashboard Smoke Tests › /ru/dm/ loads without errors (2.9s)
✓ 4 [mobile-chromium] › tests/dm/smoke.spec.ts:11:3 › DM Dashboard Smoke Tests › /ru/dm/ loads without errors (3.1s)
✓ 1 [mobile-chromium] › tests/dm/smoke.spec.ts:4:3 › DM Dashboard Smoke Tests › /dm/ loads without errors (3.1s)
✓ 2 [chromium] › tests/dm/smoke.spec.ts:4:3 › DM Dashboard Smoke Tests › /dm/ loads without errors (3.2s)
4 passed (8.4s)
---
Summary
---
- playwright.config.ts: EXISTING, VALID
- testDir: ./tests
- baseURL: http://localhost:4321
- fullyParallel: true
- projects: chromium, mobile-chromium
- webServer: npm run dev, reuseExistingServer: !CI
- package.json scripts:
- test:e2e: playwright test (ADDED)
- test:ui: playwright test (PRESERVED)
- Smoke test created: tests/dm/smoke.spec.ts
- /dm/ loads without errors (title contains "DM Dashboard")
- /ru/dm/ loads without errors (title contains "DM Dashboard")
- Result: ALL TESTS PASS (4/4)
+605
View File
@@ -0,0 +1,605 @@
> randify@0.0.1 build
> astro build
16:06:25 [types] Generated 474ms
16:06:25 [build] output: "hybrid"
16:06:25 [build] directory: /home/emil/Desktop/Coding/AI/Randify.pro/dist/
16:06:25 [build] adapter: @astrojs/node
16:06:25 [build] Collecting build info...
16:06:25 [build] ✓ Completed in 521ms.
16:06:25 [build] Building hybrid entrypoints...
16:06:29 [vite] ✓ built in 4.38s
16:06:29 [build] ✓ Completed in 4.43s.
building client (vite)
16:06:29 [vite] transforming...
16:06:29 [vite] ✓ 83 modules transformed.
16:06:29 [vite] rendering chunks...
16:06:29 [vite] computing gzip size...
16:06:29 [vite] dist/client/_astro/animations.JKmio82t.js 0.19 kB │ gzip: 0.13 kB
16:06:29 [vite] dist/client/_astro/validation.plcuGzaj.js 0.20 kB │ gzip: 0.16 kB
16:06:29 [vite] dist/client/_astro/clipboard.v9BZgIeL.js 0.43 kB │ gzip: 0.22 kB
16:06:29 [vite] dist/client/_astro/random.PhfdigkC.js 0.50 kB │ gzip: 0.31 kB
16:06:29 [vite] dist/client/_astro/hoisted.CFrvq8IZ.js 0.87 kB │ gzip: 0.55 kB
16:06:29 [vite] dist/client/_astro/hoisted.DeuEhRu-.js 1.20 kB │ gzip: 0.60 kB
16:06:29 [vite] dist/client/_astro/hoisted.CDqNCJbh.js 1.35 kB │ gzip: 0.70 kB
16:06:29 [vite] dist/client/_astro/hoisted.PmXvumdK.js 1.45 kB │ gzip: 0.82 kB
16:06:29 [vite] dist/client/_astro/hoisted.D82rtlIG.js 1.54 kB │ gzip: 0.84 kB
16:06:29 [vite] dist/client/_astro/hoisted.CBL-zfRu.js 1.60 kB │ gzip: 0.80 kB
16:06:29 [vite] dist/client/_astro/hoisted.ChTmcvxE.js 1.61 kB │ gzip: 0.72 kB
16:06:29 [vite] dist/client/_astro/hoisted.B3IGpv9b.js 1.62 kB │ gzip: 0.80 kB
16:06:29 [vite] dist/client/_astro/hoisted.CcnzwbSI.js 1.70 kB │ gzip: 0.90 kB
16:06:29 [vite] dist/client/_astro/hoisted.Ctqpdo5m.js 1.71 kB │ gzip: 0.85 kB
16:06:29 [vite] dist/client/_astro/hoisted.Dk2zSKc8.js 1.73 kB │ gzip: 0.98 kB
16:06:29 [vite] dist/client/_astro/hoisted.C2xv_bfE.js 1.86 kB │ gzip: 1.04 kB
16:06:29 [vite] dist/client/_astro/hoisted.DEA5quja.js 1.96 kB │ gzip: 0.94 kB
16:06:29 [vite] dist/client/_astro/hoisted.BFWROTcs.js 2.16 kB │ gzip: 1.06 kB
16:06:29 [vite] dist/client/_astro/hoisted.D3o68Cb5.js 2.30 kB │ gzip: 1.14 kB
16:06:29 [vite] dist/client/_astro/hoisted.C2hEIf7W.js 2.85 kB │ gzip: 1.69 kB
16:06:29 [vite] dist/client/_astro/hoisted.BPWMU8Hf.js 2.88 kB │ gzip: 1.40 kB
16:06:29 [vite] dist/client/_astro/hoisted.D0K3hqdU.js 3.91 kB │ gzip: 1.94 kB
16:06:29 [vite] dist/client/_astro/hoisted.BYkrZFZ1.js 4.07 kB │ gzip: 1.69 kB
16:06:29 [vite] dist/client/_astro/hoisted.Ccfod4c9.js 4.27 kB │ gzip: 1.95 kB
16:06:29 [vite] dist/client/_astro/hoisted.C3FdK1i-.js 4.50 kB │ gzip: 1.96 kB
16:06:29 [vite] dist/client/_astro/hoisted.BIopzZUx.js 4.76 kB │ gzip: 1.96 kB
16:06:29 [vite] dist/client/_astro/hoisted.C4XJaAq2.js 5.24 kB │ gzip: 2.18 kB
16:06:29 [vite] dist/client/_astro/hoisted.BjwopM0U.js 7.16 kB │ gzip: 2.53 kB
16:06:29 [vite] dist/client/_astro/hoisted.v_hq36aE.js 9.68 kB │ gzip: 3.83 kB
16:06:29 [vite] dist/client/_astro/hoisted.iGyTjoKm.js 10.89 kB │ gzip: 3.88 kB
16:06:29 [vite] dist/client/_astro/hoisted.C_iAN1Og.js 11.80 kB │ gzip: 2.75 kB
16:06:29 [vite] dist/client/_astro/i18n.ByZTyuwN.js 12.13 kB │ gzip: 6.14 kB
16:06:29 [vite] dist/client/_astro/hoisted.BI9nWQCa.js 26.98 kB │ gzip: 7.71 kB
16:06:29 [vite] dist/client/_astro/hoisted.DlpuYXZt.js 35.52 kB │ gzip: 17.44 kB
16:06:29 [vite] dist/client/_astro/hoisted.DDZr0hhq.js 45.23 kB │ gzip: 14.57 kB
16:06:29 [vite] ✓ built in 509ms
prerendering static routes
16:06:31 ▶ src/pages/404.astro
16:06:31 └─ /404.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+21ms)
16:06:31 ▶ src/pages/about.astro
16:06:31 └─ /about/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/blog/[slug].astro
16:06:31 ├─ /blog/uuid-vs-sequential-ids/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+13ms)
16:06:31 ├─ /blog/color-theory-palettes/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+9ms)
16:06:31 ├─ /blog/random-team-picker/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+9ms)
16:06:31 ├─ /blog/rng-in-gaming/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+8ms)
16:06:31 ├─ /blog/psychology-of-randomness/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+9ms)
16:06:31 ├─ /blog/dice-notation-explained/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+12ms)
16:06:31 ├─ /blog/how-to-create-strong-passwords/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+12ms)
16:06:31 └─ /blog/what-is-cryptographically-secure-randomness/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+8ms)
16:06:31 ▶ src/pages/blog/index.astro
16:06:31 └─ /blog/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+6ms)
16:06:31 ▶ src/pages/generators/cards.astro
16:06:31 └─ /generators/cards/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+6ms)
16:06:31 ▶ src/pages/generators/category/[category].astro
16:06:31 ├─ /generators/category/gaming/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+5ms)
16:06:31 ├─ /generators/category/security/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+5ms)
16:06:31 ├─ /generators/category/decision-making/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ├─ /generators/category/creative/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 └─ /generators/category/utility/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/generators/coin.astro
16:06:31 └─ /generators/coin/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/generators/colors.astro
16:06:31 └─ /generators/colors/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/country.astro
16:06:31 └─ /generators/country/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/generators/date.astro
16:06:31 └─ /generators/date/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/dice.astro
16:06:31 └─ /generators/dice/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+5ms)
16:06:31 ▶ src/pages/generators/emoji.astro
16:06:31 └─ /generators/emoji/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/fontpair.astro
16:06:31 └─ /generators/fontpair/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+5ms)
16:06:31 ▶ src/pages/generators/gradient.astro
16:06:31 └─ /generators/gradient/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/generators/hash.astro
16:06:31 └─ /generators/hash/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/letter.astro
16:06:31 └─ /generators/letter/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/list.astro
16:06:31 └─ /generators/list/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/generators/lorem.astro
16:06:31 └─ /generators/lorem/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/lottery.astro
16:06:31 └─ /generators/lottery/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+6ms)
16:06:31 ▶ src/pages/generators/magic8ball.astro
16:06:31 └─ /generators/magic8ball/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/meal.astro
16:06:31 └─ /generators/meal/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+5ms)
16:06:31 ▶ src/pages/generators/names.astro
16:06:31 └─ /generators/names/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/numbers.astro
16:06:31 └─ /generators/numbers/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/palette.astro
16:06:31 └─ /generators/palette/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/password.astro
16:06:31 └─ /generators/password/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/rps.astro
16:06:31 └─ /generators/rps/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/shuffler.astro
16:06:31 └─ /generators/shuffler/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/teams.astro
16:06:31 └─ /generators/teams/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+5ms)
16:06:31 ▶ src/pages/generators/time.astro
16:06:31 └─ /generators/time/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/generators/uuid.astro
16:06:31 └─ /generators/uuid/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+5ms)
16:06:31 ▶ src/pages/generators/weighted.astro
16:06:31 └─ /generators/weighted/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+5ms)
16:06:31 ▶ src/pages/generators/wheel.astro
16:06:31 └─ /generators/wheel/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/generators/yesno.astro
16:06:31 └─ /generators/yesno/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/privacy.astro
16:06:31 └─ /privacy/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+2ms)
16:06:31 λ src/pages/rss.xml.ts
16:06:31 └─ /rss.xml16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+12ms)
16:06:31 ▶ src/pages/ru/404.astro
16:06:31 └─ /ru/404/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/ru/about.astro
16:06:31 └─ /ru/about/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/blog/[slug].astro
16:06:31 ├─ /ru/blog/uuid-vs-sequential-ids/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+7ms)
16:06:31 ├─ /ru/blog/color-theory-guide/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+6ms)
16:06:31 ├─ /ru/blog/random-team-selection/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+7ms)
16:06:31 ├─ /ru/blog/rng-in-gaming/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+7ms)
16:06:31 ├─ /ru/blog/psychology-of-randomness/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+6ms)
16:06:31 ├─ /ru/blog/dice-notation-guide/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+6ms)
16:06:31 ├─ /ru/blog/how-to-create-strong-passwords/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+8ms)
16:06:31 └─ /ru/blog/what-is-cryptographically-secure-randomness/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+7ms)
16:06:31 ▶ src/pages/ru/blog/index.astro
16:06:31 └─ /ru/blog/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+5ms)
16:06:31 ▶ src/pages/ru/generators/cards.astro
16:06:31 └─ /ru/generators/cards/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/category/[category].astro
16:06:31 ├─ /ru/generators/category/gaming/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ├─ /ru/generators/category/security/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ├─ /ru/generators/category/decision-making/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ├─ /ru/generators/category/creative/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 └─ /ru/generators/category/utility/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+2ms)
16:06:31 ▶ src/pages/ru/generators/coin.astro
16:06:31 └─ /ru/generators/coin/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/colors.astro
16:06:31 └─ /ru/generators/colors/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/country.astro
16:06:31 └─ /ru/generators/country/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/date.astro
16:06:31 └─ /ru/generators/date/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/ru/generators/dice.astro
16:06:31 └─ /ru/generators/dice/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/ru/generators/emoji.astro
16:06:31 └─ /ru/generators/emoji/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+12ms)
16:06:31 ▶ src/pages/ru/generators/fontpair.astro
16:06:31 └─ /ru/generators/fontpair/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/ru/generators/gradient.astro
16:06:31 └─ /ru/generators/gradient/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+2ms)
16:06:31 ▶ src/pages/ru/generators/hash.astro
16:06:31 └─ /ru/generators/hash/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/letter.astro
16:06:31 └─ /ru/generators/letter/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/list.astro
16:06:31 └─ /ru/generators/list/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/ru/generators/lorem.astro
16:06:31 └─ /ru/generators/lorem/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/lottery.astro
16:06:31 └─ /ru/generators/lottery/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/magic8ball.astro
16:06:31 └─ /ru/generators/magic8ball/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/meal.astro
16:06:31 └─ /ru/generators/meal/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/names.astro
16:06:31 └─ /ru/generators/names/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/ru/generators/numbers.astro
16:06:31 └─ /ru/generators/numbers/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/palette.astro
16:06:31 └─ /ru/generators/palette/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+2ms)
16:06:31 ▶ src/pages/ru/generators/password.astro
16:06:31 └─ /ru/generators/password/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+2ms)
16:06:31 ▶ src/pages/ru/generators/rps.astro
16:06:31 └─ /ru/generators/rps/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/shuffler.astro
16:06:31 └─ /ru/generators/shuffler/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/teams.astro
16:06:31 └─ /ru/generators/teams/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+2ms)
16:06:31 ▶ src/pages/ru/generators/time.astro
16:06:31 └─ /ru/generators/time/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+2ms)
16:06:31 ▶ src/pages/ru/generators/uuid.astro
16:06:31 └─ /ru/generators/uuid/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/weighted.astro
16:06:31 └─ /ru/generators/weighted/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/wheel.astro
16:06:31 └─ /ru/generators/wheel/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+3ms)
16:06:31 ▶ src/pages/ru/generators/yesno.astro
16:06:31 └─ /ru/generators/yesno/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ▶ src/pages/ru/privacy.astro
16:06:31 └─ /ru/privacy/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+2ms)
16:06:31 λ src/pages/ru/rss.xml.ts
16:06:31 └─ /ru/rss.xml16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+5ms)
16:06:31 ▶ src/pages/ru/index.astro
16:06:31 └─ /ru/index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+6ms)
16:06:31 ▶ src/pages/index.astro
16:06:31 └─ /index.html16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] Cookie header: none
16:06:31 [WARN] `Astro.request.headers` is unavailable in "static" output mode, and in prerendered pages within "hybrid" and "server" output modes. If you need access to request headers, make sure that `output` is configured as either `"server"` or `output: "hybrid"` in your config file, and that the page accessing the headers is rendered on-demand.
[Middleware] No auth_token cookie found
(+4ms)
16:06:31 ✓ Completed in 1.89s.
16:06:31 [build] Rearranging server assets...
16:06:31 [@astrojs/sitemap] `sitemap-index.xml` created at `dist/client`
16:06:31 [build] Server built in 7.42s
16:06:31 [build] Complete!
+41
View File
@@ -0,0 +1,41 @@
# T18 — Data Migration Verification
## Test Setup
- Pre-populated `sessionStorage` with old-format dice history and initiative data.
- Pre-populated `localStorage` with old-format notes.
- Ran Playwright tests against `/dm/#dice`, `/dm/#initiative`, `/dm/#notes` on both desktop and mobile viewports.
## Results
### Dice History (`dm-dice-history`)
**Status:** INCOMPATIBLE
- Old format uses `result` instead of `total` and omits `rolls`.
- `renderHistory()` calls `entry.rolls.includes(20)`, which throws when `rolls` is undefined.
- The uncaught exception aborts rendering, leaving the history list empty.
- **Evidence:** Playwright test confirms empty state is visible and 0 history items rendered.
### Initiative Tracker (`dm-initiative`)
**Status:** PARTIALLY COMPATIBLE
- Old format stores `name`, `modifier`, `initiative`, `active` but lacks `id` and `hp`.
- The list renders correctly (name and initiative score display).
- **Broken:** Delete button does nothing because `deleteCombatant()` cannot match a missing `id`.
- **Evidence:** Playwright test confirms the combatant renders and survives a delete click.
### Notes (`dm-notes`)
**Status:** FULLY COMPATIBLE
- Old format stores a plain string; new `loadNotes()` reads the same key unchanged.
- Textarea populates correctly from `localStorage`.
- **Evidence:** Playwright test confirms textarea value matches old data.
## Summary
| Feature | Compatibility |
|---------|---------------|
| Dice history | Broken — missing `total`/`rolls` fields cause JS error |
| Initiative | Loads but delete is broken due to missing `id` |
| Notes | Fully compatible |
## Commands Run
```bash
npx playwright test tests/dm/data-migration.spec.ts
```
All 6 tests passed (3 scenarios × 2 viewports).
+11
View File
@@ -0,0 +1,11 @@
Running 6 tests using 6 workers
✓ 3 [chromium] › tests/dm/data-migration.spec.ts:63:3 › Data Migration › notes old data loads correctly (2.9s)
✓ 2 [chromium] › tests/dm/data-migration.spec.ts:38:3 › Data Migration › initiative old data loads with broken delete (3.7s)
✓ 1 [chromium] › tests/dm/data-migration.spec.ts:25:3 › Data Migration › dice history old data is incompatible (3.8s)
✓ 5 [mobile-chromium] › tests/dm/data-migration.spec.ts:63:3 › Data Migration › notes old data loads correctly (4.4s)
✓ 4 [mobile-chromium] › tests/dm/data-migration.spec.ts:38:3 › Data Migration › initiative old data loads with broken delete (4.5s)
✓ 6 [mobile-chromium] › tests/dm/data-migration.spec.ts:25:3 › Data Migration › dice history old data is incompatible (5.2s)
6 passed (6.8s)
+13
View File
@@ -0,0 +1,13 @@
> randify@0.0.1 test
> vitest run
RUN v4.1.5 /home/emil/Desktop/Coding/AI/Randify.pro
Test Files 10 passed (10)
Tests 148 passed (148)
Start at 16:06:50
Duration 1.10s (transform 1.38s, setup 388ms, import 1.57s, tests 283ms, environment 5.30s)
+4
View File
@@ -0,0 +1,4 @@
src/pages/rss.xml.ts(10,6): error TS7006: Parameter 'post' implicitly has an 'any' type.
src/pages/rss.xml.ts(18,25): error TS7006: Parameter 'post' implicitly has an 'any' type.
src/pages/ru/rss.xml.ts(10,6): error TS7006: Parameter 'post' implicitly has an 'any' type.
src/pages/ru/rss.xml.ts(18,25): error TS7006: Parameter 'post' implicitly has an 'any' type.
@@ -0,0 +1,24 @@
# Color Contrast Report
## Method
Evaluated all visible text elements on mobile viewport (375x812) at /dm/. Checked computed color and background-color for contrast ratio against WCAG 2.1 AA thresholds (4.5:1 for normal text, 3:1 for large/bold text ≥18px or 14px bold).
- **PASS** | Ratio: 16.95:1 | rgb(244, 244, 245) on rgb(22, 18, 14) | font-size: 16px
- **PASS** | Ratio: 4.79:1 | rgb(255, 255, 255) on rgb(76, 117, 163) | font-size: 14px
- **FAIL** | Ratio: 3.58:1 | rgb(255, 255, 255) on rgb(252, 63, 29) | font-size: 14px
- **PASS** | Ratio: 6.93:1 | rgb(255, 255, 255) on rgb(83, 74, 183) | font-size: 14px
- **PASS** | Ratio: 6.47:1 | rgb(161, 161, 170) on rgb(34, 30, 24) | font-size: 14px
- **FAIL** | Ratio: 1.12:1 | rgb(161, 161, 170) on rgb(200, 168, 75) | font-size: 14px
- **PASS** | Ratio: 6.30:1 | rgb(244, 244, 245) on rgb(83, 74, 183) | font-size: 16px
- **PASS** | Ratio: 15.08:1 | rgb(244, 244, 245) on rgb(34, 30, 24) | font-size: 16px
- **PASS** | Ratio: 7.61:1 | rgb(200, 168, 75) on rgb(30, 25, 18) | font-size: 14px
- **PASS** | Ratio: 16.38:1 | rgb(244, 244, 245) on rgb(26, 22, 16) | font-size: 16px
- **PASS** | Ratio: 6.93:1 | rgb(255, 255, 255) on rgb(83, 74, 183) | font-size: 16px
- **PASS** | Ratio: 15.88:1 | rgb(244, 244, 245) on rgb(30, 25, 18) | font-size: 16px
- **PASS** | Ratio: 15.08:1 | rgb(244, 244, 245) on rgb(34, 30, 24) | font-size: 14px
- **FAIL** | Ratio: 2.09:1 | rgb(244, 244, 245) on rgb(200, 168, 75) | font-size: 16px
## Summary
- Total unique color combinations checked: 14
- Failures: 3
- Status: 3 contrast issues detected
Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

@@ -0,0 +1,190 @@
# Keyboard Navigation Report
Tested on desktop viewport (1440x900) by pressing Tab repeatedly and capturing focus state.
## Focus 1: `A` " ← Назад к Randify " (/)
- Position: 826,18 | Size: 142x28px | Visible: true
- Outline: `1px none rgb(17, 17, 17)` (offset: 1px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgb(22, 18, 14) 0px 0px 0px 2px, rgb(83, 74, 183) 0px 0px 0px 4px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 2: `A` "VKВойти через VK" (/api/auth/login/vk)
- Position: 977,14 | Size: 158x36px | Visible: true
- Outline: `1px none rgb(46, 46, 46)` (offset: 1px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.875) 0px 0px 0px 1.75194px, rgba(83, 74, 183, 0.875) 0px 0px 0px 3.50387px, oklab(0 0 0 / 0.2) 0px 4px 6px -1px, oklab(0 0 0 / 0.2) 0px 2px 4px -2px`
- **Focus visible:** YES
## Focus 3: `A` "YВойти через Яндекс" (/api/auth/login/yandex)
- Position: 1142,14 | Size: 178x36px | Visible: true
- Outline: `1px none rgb(60, 60, 60)` (offset: 1px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.816) 0px 0px 0px 1.62858px, rgba(83, 74, 183, 0.816) 0px 0px 0px 3.25715px, oklab(0 0 0 / 0.2) 0px 4px 6px -1px, oklab(0 0 0 / 0.2) 0px 2px 4px -2px`
- **Focus visible:** YES
## Focus 4: `A` " 🎲 Кубики " (#dice)
- Position: 105,113 | Size: 260x40px | Visible: true
- Outline: `1px auto rgb(34, 34, 35)` (offset: 1px)
- Ring width: ``
- Box shadow: `none`
- **Focus visible:** YES
## Focus 5: `A` " ⚔️ Инициатива " (#initiative)
- Position: 105,157 | Size: 260x40px | Visible: true
- Outline: `1px auto rgb(34, 34, 35)` (offset: 1px)
- Ring width: ``
- Box shadow: `none`
- **Focus visible:** YES
## Focus 6: `A` " 📖 Справочник " (#reference)
- Position: 105,201 | Size: 260x40px | Visible: true
- Outline: `1px auto rgb(34, 34, 35)` (offset: 1px)
- Ring width: ``
- Box shadow: `none`
- **Focus visible:** YES
## Focus 7: `A` " 📝 Заметки " (#notes)
- Position: 105,245 | Size: 260x40px | Visible: true
- Outline: `1px auto rgb(34, 34, 35)` (offset: 1px)
- Ring width: ``
- Box shadow: `none`
- **Focus visible:** YES
## Focus 8: `A` " Монстры " (#reference)
- Position: 105,333 | Size: 260x36px | Visible: true
- Outline: `1px auto rgb(43, 43, 45)` (offset: 1px)
- Ring width: ``
- Box shadow: `none`
- **Focus visible:** YES
## Focus 9: `A` " Заклинания " (#reference)
- Position: 105,373 | Size: 260x36px | Visible: true
- Outline: `1px auto rgb(43, 43, 45)` (offset: 1px)
- Ring width: ``
- Box shadow: `none`
- **Focus visible:** YES
## Focus 10: `BUTTON` " d4 "
- Position: 402,198 | Size: 76x38px | Visible: true
- Outline: `1px none rgb(25, 23, 19)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.953) 0px 0px 0px 1.9058px, rgba(83, 74, 183, 0.953) 0px 0px 0px 3.81159px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 11: `BUTTON` " d6 "
- Position: 486,198 | Size: 76x38px | Visible: true
- Outline: `1px none rgb(50, 44, 27)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.816) 0px 0px 0px 1.62858px, rgba(83, 74, 183, 0.816) 0px 0px 0px 3.25715px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 12: `BUTTON` " d8 "
- Position: 570,198 | Size: 76x38px | Visible: true
- Outline: `1px none rgb(39, 35, 23)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.875) 0px 0px 0px 1.75194px, rgba(83, 74, 183, 0.875) 0px 0px 0px 3.50387px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 13: `BUTTON` " d10 "
- Position: 654,198 | Size: 76x38px | Visible: true
- Outline: `1px none rgb(39, 35, 23)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.875) 0px 0px 0px 1.75194px, rgba(83, 74, 183, 0.875) 0px 0px 0px 3.50387px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 14: `BUTTON` " d12 "
- Position: 739,198 | Size: 76x38px | Visible: true
- Outline: `1px none rgb(50, 44, 27)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.816) 0px 0px 0px 1.62944px, rgba(83, 74, 183, 0.816) 0px 0px 0px 3.25887px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 15: `BUTTON` " d20 "
- Position: 823,198 | Size: 76x38px | Visible: true
- Outline: `1px none rgb(39, 35, 23)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.875) 0px 0px 0px 1.75194px, rgba(83, 74, 183, 0.875) 0px 0px 0px 3.50387px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 16: `BUTTON` " d100 "
- Position: 907,198 | Size: 76x38px | Visible: true
- Outline: `1px none rgb(39, 35, 23)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.875) 0px 0px 0px 1.75256px, rgba(83, 74, 183, 0.875) 0px 0px 0px 3.50513px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 17: `INPUT` ""
- Position: 402,280 | Size: 459x42px | Visible: true
- Outline: `1px none rgb(44, 44, 44)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.875) 0px 0px 0px 1.75194px, rgba(200, 168, 75, 0.875) 0px 0px 0px 3.50387px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 18: `BUTTON` "Бросить"
- Position: 868,278 | Size: 115x44px | Visible: true
- Outline: `1px none rgb(81, 81, 81)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.73) 0px 0px 0px 1.45914px, rgba(83, 74, 183, 0.73) 0px 0px 0px 2.91829px, rgba(0, 0, 0, 0.1) 0px 10px 15px -3px, rgba(0, 0, 0, 0.1) 0px 4px 6px -4px`
- **Focus visible:** YES
## Focus 19: `BUTTON` "Очистить"
- Position: 883,342 | Size: 100x34px | Visible: true
- Outline: `1px none rgb(44, 44, 44)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.875) 0px 0px 0px 1.75131px, rgba(83, 74, 183, 0.875) 0px 0px 0px 3.50261px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 20: `BUTTON` "
d20
"
- Position: 790,630 | Size: 79x34px | Visible: true
- Outline: `1px none rgb(58, 58, 59)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.816) 0px 0px 0px 1.62858px, rgba(83, 74, 183, 0.816) 0px 0px 0px 3.25715px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 21: `BUTTON` "+ Добавить"
- Position: 881,612 | Size: 79x52px | Visible: true
- Outline: `1px none rgb(46, 46, 46)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.875) 0px 0px 0px 1.75194px, rgba(83, 74, 183, 0.875) 0px 0px 0px 3.50387px, rgba(0, 0, 0, 0.1) 0px 10px 15px -3px, rgba(0, 0, 0, 0.1) 0px 4px 6px -4px`
- **Focus visible:** YES
## Focus 22: `BUTTON` "
Монстры
"
- Position: 1042,150 | Size: 129x32px | Visible: true
- Outline: `1px none rgb(17, 17, 16)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgb(22, 18, 14) 0px 0px 0px 2px, rgb(83, 74, 183) 0px 0px 0px 4px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 23: `BUTTON` "
Заклинания
"
- Position: 1171,150 | Size: 129x32px | Visible: true
- Outline: `1px none rgb(16, 16, 16)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgb(22, 18, 14) 0px 0px 0px 2px, rgb(83, 74, 183) 0px 0px 0px 4px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 24: `SELECT` " Все "
- Position: 1125,220 | Size: 154x41px | Visible: true
- Outline: `1px none rgb(58, 58, 59)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(22, 18, 14, 0.816) 0px 0px 0px 1.62858px, rgba(200, 168, 75, 0.816) 0px 0px 0px 3.25715px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Focus 25: `TEXTAREA` ""
- Position: 1063,442 | Size: 216x256px | Visible: true
- Outline: `1px auto rgb(16, 16, 16)` (offset: 0px)
- Ring width: ``
- Box shadow: `rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgb(200, 168, 75) 0px 0px 0px 1px, rgba(0, 0, 0, 0) 0px 0px 0px 0px`
- **Focus visible:** YES
## Summary
- Total unique focusable elements reached: 25
- Elements with visible focus indicator: 25
- Elements without visible focus indicator: 0
- Focus screenshots saved: 25
Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

@@ -0,0 +1,47 @@
# Mobile UX Observations
## Viewport Tested
375x812 (iPhone X) and 390x844 (iPhone 12/13/14)
## Tab Navigation
- Mobile tabs are sticky below the header (`sticky top-[64px]`) and use `overflow-x-auto`
- All 4 tabs (Кубики, Инициатива, Справочник, Заметки) are reachable via horizontal swipe
- Tab pill buttons have `min-h-[44px] min-w-[80px]` which satisfies touch target intent, though quick-dice buttons fall slightly short (38px height)
## Thumb Reachability
- **Top tabs**: On 375px width, tabs span full width and sit near top of screen. The rightmost tab (Заметки) may be harder to reach with right-thumb one-handed use.
- **Suggestion**: Consider moving primary navigation to bottom sheet or bottom tab bar for mobile. This would place controls within natural thumb reach zone (lower 2/3 of screen).
## Content Density
- Dice roller quick-buttons (d4–d100) are horizontally scrollable on mobile
- Initiative tracker list items are tall enough for comfortable tapping
- Open5e reference search + filter stack vertically; cards use 1-column grid on mobile which is appropriate
- Notes textarea fills available width; comfortable for typing
## Touch Target Gaps
- 9 elements measured below 44px on mobile (see `touch-targets.md`):
- Quick-dice buttons (d4–d100) are 66x38px — width is good, height is 6px short
- Clear history button (Очистить) is 100x34px — needs height increase
- One input field is 163x42px — 2px short on height
- **Recommendation**: Increase `py-2` to `py-2.5` or `min-h-[44px]` on quick-dice buttons and ghost buttons
## Swipe Gestures / Bottom Sheet
- Current tab switching requires precise tap on top tabs
- **Bottom sheet opportunity**: A swipe-up bottom sheet for dice roll history or initiative details could reduce top-screen interaction
- **Swipe-between-tabs**: Horizontal swipe on content area to switch tabs would feel native on mobile
## Scroll Behavior
- No horizontal overflow detected on mobile (body scrollWidth 360px within 375px viewport)
- Vertical scrolling is smooth; sticky tabs remain accessible while scrolling
## Visual Hierarchy
- Purple accent (#534AB7) on dark background is highly visible
- Gold headings (#c8a84b) stand out well against dark surfaces
- Cards have adequate padding and border contrast on mobile
## Keyboard UX
- No on-screen keyboard overlap issues detected in screenshots
- Input fields have visible focus rings (gold) on mobile
## Overall Assessment
Mobile layout is functional and readable. Primary UX improvement would be bottom-navigation or swipe gestures to reduce thumb travel to top tabs.
@@ -0,0 +1,13 @@
# Overflow / Layout Break Report
## desktop-1440 (1440x900)
- Body scrollWidth: 1425px | window.innerWidth: 1440px
- No overflow elements detected.
## tablet (768x1024)
- Body scrollWidth: 753px | window.innerWidth: 768px
- No overflow elements detected.
## mobile-375 (375x812)
- Body scrollWidth: 360px | window.innerWidth: 375px
- No overflow elements detected.
@@ -0,0 +1,87 @@
# Visual QA Summary Report
## Test Scope
DM Dashboard (`/dm/`) responsive layout, color contrast, keyboard navigation, and mobile UX.
## Viewports Tested
| Viewport | Dimensions | Purpose |
|----------|------------|---------|
| Desktop 1440 | 1440x900 | Standard laptop |
| Desktop 1920 | 1920x1080 | Full HD monitor |
| Tablet | 768x1024 | iPad portrait |
| Mobile 375 | 375x812 | iPhone X |
| Mobile 390 | 390x844 | iPhone 12/13/14 |
## Tabs Captured
- dice (Кубики)
- initiative (Инициатива)
- reference (Справочник)
- notes (Заметки)
Total screenshots: 20 (5 viewports × 4 tabs)
## Screenshots
All saved to `.sisyphus/evidence/visual-qa/`:
- `desktop-1440-{tab}.png`
- `desktop-1920-{tab}.png`
- `tablet-{tab}.png`
- `mobile-375-{tab}.png`
- `mobile-390-{tab}.png`
## Layout Integrity
- **Overflow check**: PASS — No horizontal overflow detected across desktop, tablet, or mobile viewports.
- **Content visibility**: PASS — All tabs render completely within viewport bounds.
- **Responsive grid**: PASS — DmLayout handles column collapse correctly; sidebar hidden on mobile/tablet.
## Color Contrast (WCAG 2.1 AA)
- **14 unique color combinations evaluated**
- **11 PASS, 3 FAIL**
### Failures
1. `rgb(255,255,255) on rgb(252,63,29)` — 3.58:1 (14px normal). Likely an orange/red button or alert. Needs darker background or larger text.
2. `rgb(161,161,170) on rgb(200,168,75)` — 1.12:1 (14px normal). Gray text on gold background — extremely low contrast.
3. `rgb(244,244,245) on rgb(200,168,75)` — 2.09:1 (16px normal). Light text on gold background — fails 4.5:1 threshold.
See `contrast-report.md` for full details.
## Touch Targets (Mobile)
- **9 elements below 44px minimum**
- Primary culprits: quick-dice buttons (38px height), clear-history button (34px height), one input (42px height)
- See `touch-targets.md` for full list.
## Keyboard Navigation
- **25 unique focusable elements reached**
- **25/25 have visible focus indicators**
- Focus rings use `focus-visible:ring-2 ring-[var(--accent)]` (purple) with offset
- Screenshots of focused elements saved as `focus-{n}-{tag}.png`
- See `keyboard-nav-report.md` for full details.
## Mobile UX
- Layout is readable and functional on 375–390px widths
- Sticky tabs work well but sit high on screen (thumb reach concern)
- Recommendations documented in `mobile-ux-notes.md`:
- Increase quick-dice button height to 44px
- Consider bottom navigation or swipe-between-tabs for mobile
- Evaluate bottom sheet for dice history / initiative details
## Artifacts
| File | Description |
|------|-------------|
| `desktop-1440-{tab}.png` | Desktop screenshots (1440x900) |
| `desktop-1920-{tab}.png` | Desktop screenshots (1920x1080) |
| `tablet-{tab}.png` | Tablet screenshots (768x1024) |
| `mobile-375-{tab}.png` | Mobile screenshots (375x812) |
| `mobile-390-{tab}.png` | Mobile screenshots (390x844) |
| `focus-{n}-{tag}.png` | Keyboard focus screenshots |
| `contrast-report.md` | WCAG color contrast analysis |
| `overflow-report.md` | Horizontal overflow detection |
| `touch-targets.md` | Mobile touch target audit |
| `keyboard-nav-report.md` | Keyboard navigation audit |
| `mobile-ux-notes.md` | Mobile UX research notes |
## Verdict
- **Layout**: PASS (no breaks)
- **Keyboard**: PASS (all focusable elements have visible indicators)
- **Contrast**: PARTIAL (3 failures to address)
- **Touch targets**: PARTIAL (9 undersized elements)
- **Mobile UX**: RESEARCH COMPLETE (recommendations documented, no changes implemented per scope)
Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

@@ -0,0 +1,15 @@
# Touch Target Size Report (Mobile)
Viewport: 375x812. WCAG 2.1 recommends minimum 44x44px touch targets.
Found 9 elements smaller than 44px:
- `BUTTON` " d4 " — 66x38px (class: quick-dice-btn rounded-full border border-[var(--gold)] bg-[var(--bg-secondary)] px-2 py-2 text-sm font-semibold text-[var(--gold)] transition-all duration-[var(--transition-base)] hover:bg-[var(--gold)]/10 hover:shadow-lg hover:shadow-[var(--gold)]/20 active:scale-[0.97] active:bg-[var(--accent)] active:text-white active:border-[var(--accent)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--bg-primary)])
- `BUTTON` " d6 " — 66x38px (class: quick-dice-btn rounded-full border border-[var(--gold)] bg-[var(--bg-secondary)] px-2 py-2 text-sm font-semibold text-[var(--gold)] transition-all duration-[var(--transition-base)] hover:bg-[var(--gold)]/10 hover:shadow-lg hover:shadow-[var(--gold)]/20 active:scale-[0.97] active:bg-[var(--accent)] active:text-white active:border-[var(--accent)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--bg-primary)])
- `BUTTON` " d8 " — 66x38px (class: quick-dice-btn rounded-full border border-[var(--gold)] bg-[var(--bg-secondary)] px-2 py-2 text-sm font-semibold text-[var(--gold)] transition-all duration-[var(--transition-base)] hover:bg-[var(--gold)]/10 hover:shadow-lg hover:shadow-[var(--gold)]/20 active:scale-[0.97] active:bg-[var(--accent)] active:text-white active:border-[var(--accent)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--bg-primary)])
- `BUTTON` " d10 " — 66x38px (class: quick-dice-btn rounded-full border border-[var(--gold)] bg-[var(--bg-secondary)] px-2 py-2 text-sm font-semibold text-[var(--gold)] transition-all duration-[var(--transition-base)] hover:bg-[var(--gold)]/10 hover:shadow-lg hover:shadow-[var(--gold)]/20 active:scale-[0.97] active:bg-[var(--accent)] active:text-white active:border-[var(--accent)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--bg-primary)])
- `BUTTON` " d12 " — 66x38px (class: quick-dice-btn rounded-full border border-[var(--gold)] bg-[var(--bg-secondary)] px-2 py-2 text-sm font-semibold text-[var(--gold)] transition-all duration-[var(--transition-base)] hover:bg-[var(--gold)]/10 hover:shadow-lg hover:shadow-[var(--gold)]/20 active:scale-[0.97] active:bg-[var(--accent)] active:text-white active:border-[var(--accent)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--bg-primary)])
- `BUTTON` " d20 " — 66x38px (class: quick-dice-btn rounded-full border border-[var(--gold)] bg-[var(--bg-secondary)] px-2 py-2 text-sm font-semibold text-[var(--gold)] transition-all duration-[var(--transition-base)] hover:bg-[var(--gold)]/10 hover:shadow-lg hover:shadow-[var(--gold)]/20 active:scale-[0.97] active:bg-[var(--accent)] active:text-white active:border-[var(--accent)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--bg-primary)])
- `BUTTON` " d100 " — 66x38px (class: quick-dice-btn rounded-full border border-[var(--gold)] bg-[var(--bg-secondary)] px-2 py-2 text-sm font-semibold text-[var(--gold)] transition-all duration-[var(--transition-base)] hover:bg-[var(--gold)]/10 hover:shadow-lg hover:shadow-[var(--gold)]/20 active:scale-[0.97] active:bg-[var(--accent)] active:text-white active:border-[var(--accent)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--bg-primary)])
- `INPUT` "" — 163x42px (class: w-full bg-[var(--bg-input)] border border-[var(--border-color)] rounded-lg px-3 py-2 text-[var(--text-primary)] text-base placeholder:text-[var(--text-secondary)] hover:border-[var(--text-secondary)] focus:outline-none focus:border-[var(--gold)] focus:ring-1 focus:ring-[var(--gold)] focus-visible:ring-2 focus-visible:ring-[var(--gold)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--bg-primary)] transition-all duration-[var(--transition-base)] flex-1)
- `BUTTON` "Очистить" — 100x34px (class: inline-flex items-center justify-center font-semibold focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--accent)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--bg-primary)] transition-all duration-[var(--transition-base)] cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed active:scale-[0.97] bg-[var(--bg-card)] text-[var(--text-primary)] border border-[var(--border-color)] hover:border-[var(--gold)] hover:text-[var(--gold)] px-4 py-1.5 text-sm rounded-lg clear-history-btn)