fix: Added overflow-x:hidden to html/body, fixed mobile overflow on mod…

- "frontend/src/App.css"
- "frontend/index.html"

GSD-Task: S02/T02
This commit is contained in:
jlightner 2026-03-30 06:40:58 +00:00
parent 893105abd0
commit c575e76861
5 changed files with 126 additions and 2 deletions

View file

@ -93,7 +93,7 @@
- Estimate: 1h30m
- Files: frontend/src/App.css
- Verify: cd frontend && npm run build && echo 'Build OK' && echo "Remaining hex colors: $(grep -cE '#[0-9a-fA-F]{3,8}' src/App.css)" && echo "CSS var references: $(grep -c 'var(--' src/App.css)"
- [ ] **T02: Fix mobile responsive overflow issues and update index.html metadata** — Fix horizontal scroll on mobile viewports and update the HTML document metadata for the dark theme.
- [x] **T02: Added overflow-x:hidden to html/body, fixed mobile overflow on mode-toggle and creator-row stats, updated index.html title to "Chrysopedia" with dark theme-color meta tag** — Fix horizontal scroll on mobile viewports and update the HTML document metadata for the dark theme.
## Steps

View file

@ -0,0 +1,30 @@
{
"schemaVersion": 1,
"taskId": "T01",
"unitId": "M004/S02/T01",
"timestamp": 1774852628111,
"passed": false,
"discoverySource": "task-plan",
"checks": [
{
"command": "cd frontend",
"exitCode": 0,
"durationMs": 6,
"verdict": "pass"
},
{
"command": "npm run build",
"exitCode": 254,
"durationMs": 92,
"verdict": "fail"
},
{
"command": "echo 'Build OK'",
"exitCode": 0,
"durationMs": 6,
"verdict": "pass"
}
],
"retryAttempt": 1,
"maxRetries": 2
}

View file

@ -0,0 +1,82 @@
---
id: T02
parent: S02
milestone: M004
provides: []
requires: []
affects: []
key_files: ["frontend/src/App.css", "frontend/index.html"]
key_decisions: ["Added overflow-x:hidden to html,body as global safety net", "Used overflow:hidden + text-overflow:ellipsis on mode-toggle label for controlled truncation"]
patterns_established: []
drill_down_paths: []
observability_surfaces: []
duration: ""
verification_result: "npm run build exits 0. grep confirms overflow-x rule, updated title, and theme-color meta tag. Browser verification at 390px viewport confirms scrollWidth === clientWidth (no horizontal overflow). Visual verification on Home, Topics, and Creators pages at both viewport sizes confirms correct rendering."
completed_at: 2026-03-30T06:40:50.902Z
blocker_discovered: false
---
# T02: Added overflow-x:hidden to html/body, fixed mobile overflow on mode-toggle and creator-row stats, updated index.html title to "Chrysopedia" with dark theme-color meta tag
> Added overflow-x:hidden to html/body, fixed mobile overflow on mode-toggle and creator-row stats, updated index.html title to "Chrysopedia" with dark theme-color meta tag
## What Happened
---
id: T02
parent: S02
milestone: M004
key_files:
- frontend/src/App.css
- frontend/index.html
key_decisions:
- Added overflow-x:hidden to html,body as global safety net
- Used overflow:hidden + text-overflow:ellipsis on mode-toggle label for controlled truncation
duration: ""
verification_result: passed
completed_at: 2026-03-30T06:40:50.902Z
blocker_discovered: false
---
# T02: Added overflow-x:hidden to html/body, fixed mobile overflow on mode-toggle and creator-row stats, updated index.html title to "Chrysopedia" with dark theme-color meta tag
**Added overflow-x:hidden to html/body, fixed mobile overflow on mode-toggle and creator-row stats, updated index.html title to "Chrysopedia" with dark theme-color meta tag**
## What Happened
Applied five CSS changes (html/body overflow-x:hidden, mode-toggle label truncation, creator-row stats wrapping, app-header__right flex-wrap) and two HTML changes (title update, theme-color meta tag). Deployed to ub01 and visually verified at desktop (1280×800) and mobile (390×844) viewports — dark theme renders correctly, no horizontal scrollbar on any page, header wraps cleanly on mobile.
## Verification
npm run build exits 0. grep confirms overflow-x rule, updated title, and theme-color meta tag. Browser verification at 390px viewport confirms scrollWidth === clientWidth (no horizontal overflow). Visual verification on Home, Topics, and Creators pages at both viewport sizes confirms correct rendering.
## Verification Evidence
| # | Command | Exit Code | Verdict | Duration |
|---|---------|-----------|---------|----------|
| 1 | `cd frontend && npm run build` | 0 | ✅ pass | 2700ms |
| 2 | `grep -q 'overflow-x' frontend/src/App.css` | 0 | ✅ pass | 50ms |
| 3 | `grep -q '<title>Chrysopedia</title>' frontend/index.html` | 0 | ✅ pass | 50ms |
| 4 | `grep -q 'theme-color' frontend/index.html` | 0 | ✅ pass | 50ms |
| 5 | `grep -c 'var(--' frontend/src/App.css → 217` | 0 | ✅ pass | 50ms |
| 6 | `Browser: scrollWidth === clientWidth at 390px` | 0 | ✅ pass | 5000ms |
## Deviations
.topic-category__count has white-space:nowrap but didn't need fixing — text is short enough at 390px to fit naturally.
## Known Issues
Creators page returns API 422 on ub01 (pre-existing backend issue). Slice check grep -cE for hex colors returns 77 because :root block necessarily defines custom properties with hex values — all 77 are inside :root, zero outside.
## Files Created/Modified
- `frontend/src/App.css`
- `frontend/index.html`
## Deviations
.topic-category__count has white-space:nowrap but didn't need fixing — text is short enough at 390px to fit naturally.
## Known Issues
Creators page returns API 422 on ub01 (pre-existing backend issue). Slice check grep -cE for hex colors returns 77 because :root block necessarily defines custom properties with hex values — all 77 are inside :root, zero outside.

View file

@ -3,7 +3,8 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Chrysopedia Admin</title>
<meta name="theme-color" content="#0a0a12" />
<title>Chrysopedia</title>
</head>
<body>
<div id="root"></div>

View file

@ -128,6 +128,11 @@
padding: 0;
}
html,
body {
overflow-x: hidden;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
"Helvetica Neue", Arial, sans-serif;
@ -442,6 +447,9 @@ body {
.mode-toggle__label {
color: var(--color-text-on-header-label);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 6rem;
}
.mode-toggle__switch {
@ -736,6 +744,7 @@ body {
.app-header__right {
width: 100%;
justify-content: space-between;
flex-wrap: wrap;
}
}
@ -1872,6 +1881,8 @@ body {
.creator-row__stats {
margin-left: 0;
white-space: normal;
flex-wrap: wrap;
}
.creators-browse__title,