Skip to content

Reimplement the salvageable UI/UX from #679 and #686#794

Draft
nopara73 wants to merge 1 commit into
masterfrom
codex/salvage-ui-rebuild
Draft

Reimplement the salvageable UI/UX from #679 and #686#794
nopara73 wants to merge 1 commit into
masterfrom
codex/salvage-ui-rebuild

Conversation

@nopara73

@nopara73 nopara73 commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Important

Deep reimplementation in progress. This draft is not ready for review or merge.

The earlier homepage-only pass and its validation claims are obsolete. This PR is being expanded into a product-by-product reimplementation of the salvageable intent from #679 and #686 on current master. Final test counts and screenshots will be added only after the branch is frozen and the exact final build passes every gate below.

Reimplementation contract

  • No merge, cherry-pick, generated JavaScript, committed screenshot, audit diary, or stale PR branch code.
  • Keep current master as the behavioral baseline and preserve canonical routes, payloads, rankings, competition rules, storage safety, asset versioning, and responsive flow behavior.
  • Bring over product ideas only when they are truthful, harmonious with DESIGN.md, and demonstrably safer than the reference implementation.
  • One authoritative implementation for every score/rank/state; no hardcoded competition facts or duplicate client ranking algorithms.
  • Honest loading, empty, partial, unavailable, error, retry, and stale-request states.
  • Keyboard, focus restoration, reduced motion, 44px direct targets, 200% zoom, long names/content, storage denial, malformed API data, and narrow/short viewports are release requirements.

Product-by-product plan

  • Establish the current-master baseline and inspect both reference PRs as product proposals rather than patch sources.
  • Build an acceptance ledger covering worthy intent, explicit rejection, domain risk, implementation owner, and required evidence.
  • Finish the shared semantic design layer: disciplined green/amber/red roles, dark sport chrome framing warm readable surfaces, stable type/spacing, focus, targets, and reduced motion.
  • Homepage: authoritative server-rendered field summary, honest unavailable state, one primary hierarchy, and clean handoff to the real standings.
  • Ultimate League: dense readable controls/table, Pro-before-Amateur preservation, honest sparse/error states, stable mobile overflow, and safe best-rank cues.
  • Athlete dossier and evidence viewer: loading/error/retry, partial clocks, proof fallback/full-resolution failure, history/Escape/backdrop ownership, inert background, and focus restoration.
  • Events and badges: UTC grouping, truthful pulse counts, accessible disclosures/deep links, compact non-reflowing badges, and embedded Event-board compatibility.
  • Play hub and returning-athlete tools: stable primary action, bounded athlete lookup, safe autocomplete, storage-denied recovery, URL/history synchronization, and responsive dashboard.
  • Pheno/Bortz calculators and progress: semantic journey steps, strict calendar/chronology checks, keyboard-visible focus, cancellation of stale transitions/results/rank loads, bfcache preservation, and clock-specific rank previews.
  • Application, proof, edit, and review: one immutable seven-stage model, task-first layouts, bounded/validated file processing, truthful HEIC/PDF behavior, cropper focus trap/recovery, single-flight submission, and failure-safe controls.
  • Guess My Age: explicit idle/submitting/success/error/closed states, whole-operation timeout, stale-athlete cancellation, strict accepted-response schema, no failure-side reveal/persistence/discount, and modal label/focus restoration.
  • Longevitymaxxing Challenge: current 14-day scoring truth, practice vs scored zero, active/resting states, indefinite participation copy, commitment privacy, retry focus, and no fabricated metrics.
  • Generated About/History/Ruleset: canonical language, source-owned generation, reproducibility, malformed hash safety, readable navigation, and no rule changes hidden in copy.
  • Media, recovery, legal, and subscription surfaces: same-origin whitelisted archive, historical-material honesty, true 404 status preservation, calm 5xx pages, privacy-text preservation, and bounded unsubscribe retry.
  • Cross-site hardening: no unsafe dynamic HTML, unguarded storage/JSON, accidental controller route ownership, raw unversioned injected assets, new runtime origin, nested interactive control, or generated artifact.
  • Freeze the source and run the exact-build gate: TypeScript check/build, serialized .NET build, all focused suites, then the complete test suite with no redesign skips.
  • Run the exact-build browser matrix at 1440×900, 1366×768, 768×1024, 390×844, 375×667, 320×700, short landscape, reduced motion, keyboard-only, long content, and effective 200% zoom; require no console/page errors, failed first-party resources, target violations, or horizontal overflow.
  • Capture the final states under ignored .artifacts/, upload them as GitHub-hosted PR assets, add grouped screenshot evidence here, audit the staged diff, push, wait for every GitHub check, fix failures, and only then mark ready.

Concrete defects already found during the expanded pass

  • Unreachable or route-stealing media actions and a friendly 404 path that accidentally became a redirect/200 after status-page re-execution.
  • Application/profile controls that advertised HEIC support without converting before Cropper, plus unbounded raw file and PDF dependency/render waits.
  • Proof uploads that could exceed the server data-URL contract, accept unconverted HEIC, lock controls during failure, or lose keyboard focus after removal/retry.
  • Calculator races where an old animation/rank result could overwrite a newer calculation, invalid calendar dates could pass, and back-forward restoration erased unsaved edits.
  • Guess My Age requests that could remain submitting forever and a legacy marker path that could grant a perfect-guess discount without an accepted exact response.
  • Event, leaderboard, Challenge, application, edit-profile, and returning-athlete directory requests with ineffective or missing timeout paths.
  • Challenge presentation that mixed historical check-ins with the current scoring window and could show a standing for resting/unscored participants.
  • Proof/dossier viewer history, inertness, fallback failure, drawer gestures, clear-filter semantics, and several hidden or undersized focus/target problems.
  • Generated competition copy that inverted the signed biological-age convention and media copy that presented a stale 2025 archive as current.

This list is evidence of why the branch remains a draft, not a claim that the work is complete.

Final evidence (pending exact-build gate)

Final commands, test counts, browser measurements, hosted screenshots, CI links, and the staged-file audit will replace this section after all work above is accepted. Screenshots will not be committed to the repository.

Reference-only prior experiments: #679, #686.

Closes #538

@cursor

cursor Bot commented Jul 16, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_0dd79907-42fa-4ac1-ac7d-719a6462071d)

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d1d663b897

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +212 to +214
if (!string.Equals(GetRequestCanonicalPath(context), "/", StringComparison.OrdinalIgnoreCase))
{
return string.Empty;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve a heading when suppressing the scoreboard

When the same index.html shell is served for /athlete/..., /league/..., and /flag/... (checked Invoke, which maps those routes to index.html), this branch returns an empty string for the only new h1 source. Because the commit also removed the old hidden <h1> from index.html and leaderboard-content.html does not provide one, those non-home index routes now render with no primary heading, which regresses accessibility/SEO for athlete and league pages. Consider leaving a fallback h1 when the homepage scoreboard is omitted.

Useful? React with 👍 / 👎.

@github-actions

Copy link
Copy Markdown

.NET test coverage

  • Line coverage: 65.5%
  • Branch coverage: 50.1%

@nopara73
nopara73 marked this pull request as draft July 16, 2026 15:50
@nopara73 nopara73 changed the title [codex] Rebuild the homepage competition first impression Reimplement the salvageable UI/UX from #679 and #686 Jul 16, 2026
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.

Engineer the first-viewport website impression

1 participant