Skip to content

Material You 3 redesign of the GDIPS web app - #2

Open
flessan wants to merge 5 commits into
mainfrom
arena/3ce7a9ec-site
Open

flessan wants to merge 5 commits into
mainfrom
arena/3ce7a9ec-site

Conversation

@flessan

@flessan flessan commented Oct 8, 2026

Copy link
Copy Markdown
Member

What this does

Rebuilds the whole GDIPS front-end on a Material You 3 (Material Design 3) design system while keeping every existing feature, data flow and business rule intact.

Design system — main/assets/m3/

  • palettes.css — full tonal palettes (light + dark) with the M3 role mapping, generated from seed colours through CIELAB with gamut-clamped chroma. Six named seeds selectable via <html data-seed>.
  • tokens.css — type scale, shape, elevation, motion, spacing and z-index tokens, responsive helpers, Pusab display face.
  • components.css — buttons, icon buttons, chips, cards, lists, menus, dialogs, sheets, scrims, tabs, segmented buttons, switches, sliders, text fields, tables, expansion panels, snackbars, tooltips, progress/loading, with hover, focus, pressed, disabled, loading and error states.
  • color.js — dynamic colour engine: generate a palette from any seed, light/dark/system themes, seed picker, theme-colour meta sync, legacy theme-key bridge.
  • ui.js — drawer, menu, dialog, tab, segmented, chip, copy, range and reveal behaviours, snackbars, scroll locking.
  • gen_palette.py — the offline generator for palettes.css (contrast-safe container tones).

Pages

Boot menu, team, download, rating system, about, tools, 404, WhatsApp redirect, the feedback app plus terms/FAQ/contact, and the demon list, pemon list, impossible list, about and leaderboard pages — all rebuilt with app bars, navigation drawers/tabs, cards, data tables and responsive layouts in light and dark themes.

Behaviour preserved

Every id, class and data attribute the list application consumes is untouched: CSV loading, localStorage cache and offline fallback, search + suggestions, difficulty/sort menus, advanced filters, pagination and infinite scroll, grid/list view, favourites, recently viewed, completions, progress, achievements, ratings, reviews, statistics, comparison, recommendations, export, keyboard shortcuts, toasts, service-worker registration, the feedback table/cache/export/auto-refresh flow and the rating predictor thresholds.

The demon list pages now share one stylesheet and one application script, removing duplicated inline scripts/styles, a duplicated PapaParse include and dead per-page theme code.

Verification

  • Headless DOM pass over all 18 pages: no runtime errors (only the CDN-dependent scripts that this sandbox cannot fetch).
  • Functional tests: the list app fetches, renders, searches and filters; the feedback app renders, searches, filters and opens its detail dialog; theme switching and the dynamic-colour picker work.
  • Every palette variant (17) and nine runtime seeds pass WCAG AA 4.5:1 for all text role pairs.
  • HTML tag balance, duplicate ids, CSS brace balance and unresolved custom properties all clean; no broken internal links or asset references.

flessan and others added 2 commits October 8, 2026 05:24
Introduce main/assets/m3/, a self-contained Material 3 layer (tonal palettes
generated from a seed colour, design tokens, components, page patterns, a
runtime dynamic-colour generator and shared UI behaviour), and rebuild every
page on top of it without touching application logic.

Design system
- palettes.css: full light/dark tonal palettes with the M3 role mapping
  (primary, secondary, tertiary, neutral, neutral-variant, error + containers,
  inverse and fixed roles), generated by gen_palette.py through CIELAB with
  gamut-clamped chroma; six named seeds selectable with <html data-seed>.
- tokens.css: type scale, shape, elevation, motion, spacing and z-index tokens,
  plus responsive visibility helpers and the Pusab display face.
- components.css: buttons, icon buttons, chips, cards, lists, menus, dialogs,
  bottom sheets, scrims, tabs, segmented buttons, switches, sliders, text
  fields, tables, expansion panels, snackbars, tooltips, progress and loading
  indicators with hover/focus/pressed/disabled/loading/error states.
- color.js: dynamic colour engine (seed generation, light/dark/system themes,
  the seed picker, theme-colour meta sync, legacy theme-key bridge).
- ui.js: drawer, menu, dialog, tab, segmented, chip, copy, range and reveal
  behaviours, snackbars and scroll locking.

Pages
- Boot menu, team, download, rating system, about, tools, 404, WhatsApp
  redirect, feedback app and its terms/FAQ/contact pages, and the demon list,
  pemon list, impossible list, about and leaderboard pages all rebuilt as M3
  surfaces: app bars, navigation drawer/tabs, cards, data tables, dialogues
  and responsive layouts in light and dark themes.
- The demon list pages now share one stylesheet and one application script;
  the duplicated inline scripts and styles, the duplicate PapaParse include and
  the dead per-page theme code are gone. Every id, class and data attribute the
  list application consumes is preserved, so filtering, search, sorting,
  favourites, progress, achievements, ratings, reviews, statistics, comparison,
  recommendations, export and CSV loading behave exactly as before.

Verified with a headless DOM pass over all pages: no runtime errors, the list
app renders and filters data, the feedback app renders/searches/filters and
opens its detail dialog, theme switching and the dynamic-colour picker work,
and no internal links or asset references are broken.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
The generated dark container roles clamp to a tone that keeps at least 4.5:1
contrast against their on-container labels: the crimson seed (and any bright
runtime seed) previously landed at 4.4:1 for on-primary-container, so the
generator and the runtime colour engine now walk the tonal ramp until the pair
is readable. Verified across every named seed, the light/dark selectors and the
prefers-color-scheme fallback, plus nine runtime seeds.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Deploying gdips with  Cloudflare Pages  Cloudflare Pages

Latest commit: b176881
Status: ✅  Deploy successful!
Preview URL: https://30accb25.gdips.pages.dev
Branch Preview URL: https://arena-3ce7a9ec-site.gdips.pages.dev

View logs

flessan and others added 3 commits October 8, 2026 05:27
Add main/assets/m3/README.md: load order, colour roles and seeds, how to
regenerate the palettes, the typescale/spacing/shape/elevation tokens, the
component inventory, the declarative behaviour hooks and the accessibility and
print rules the system guarantees.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
Missing or broken assets
- Hotlinked logo (gdi.ps.fhgdps.com icon.png, 61 uses), imgur logo and the
  Wikipedia/yt3/rickgdps avatars are replaced with local files. New brand
  mark (assets/brand/) renders favicon, apple-touch, PWA and maskable icons.
  Contributor avatars are local initials SVGs (assets/people/).
- Font Awesome 6.4.0, PapaParse 5.3.2, Roboto Flex and JetBrains Mono are
  vendored under assets/vendor/ with their licenses, replacing cdnjs and
  Google Fonts requests.
- sw.js was registered by the demon list but did not exist; added a
  same-origin network-first shell cache.
- 404 page was served as error.html while _redirects pointed at 404.html;
  renamed to 404.html and switched its asset/link paths to root-absolute so
  deep unknown URLs render correctly.
- pages/id/rate.html loaded assets three levels up and was unstyled; replaced
  with 301 redirects to rating-system/.
- Removed unused batik.css and bg-pattern.png (695 KB).
- Sitemap rebuilt from the real page list (duplicate root entry removed).
- Manifest icons point to local files; theme colour matches the brand.

Polish
- Emoji (flag, heart, sparkles, gamepad, favicon emoji) replaced with icon
  font glyphs so they render consistently.
- App-bar rows share the content measure so header and body edges align;
  the feedback CTA no longer sits 8px from the viewport edge.
- Demon list error-state actions are labelled pills instead of clipped
  icon circles; the list chrome uses the GDIPS mark.
- Print control in the demon list gets an accessible name.
- Asset caching headers for /assets/* and no-cache for sw.js.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
Every link to the old dashboard host (gdi.ps.fhgdps.com) now points at a
local /dashboard route on the site. main/_redirects forwards /dashboard and
/dashboard/* with a 302 to https://gdips.wasmer.app/dashboard/..., so the
destination can change in one place.

php/page.php, README.md and .github/profile/README.md run outside Pages
routing, so they use the absolute https://gdips.wasmer.app URL instead.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant