Skip to content

chore: second polish — car-kit prune, VISION facts, showcase tile, CI timeouts - #174

Merged
bborbe merged 1 commit into
masterfrom
chore/second-polish
Oct 18, 2026
Merged

bborbe merged 1 commit into
masterfrom
chore/second-polish

Conversation

@bborbe

@bborbe bborbe commented Oct 18, 2026

Copy link
Copy Markdown
Owner

Second polish pass (follow-ups 1, 2, 3, 6 from #172).

1. Unused car-kit assets

48 Kenney car-kit glbs removed from assets/car-kit/ (5.5 MB → 352 KB). Only race.glb and race-future.glb are referenced (src/render/cars.ts, src/car/wheels.ts); a per-file grep over src, scripts, docs, .github, index.html and the root docs found no other reference. Textures/colormap.png and assets/LICENSES/kenney-car-kit.txt stay. History is not rewritten.
Verified: make build green; a race on crossover loads race-*.glb (200) with the default build and race-future-*.glb (200) with a VITE_CAR=raceFuture build, both rendered on the grid.

2. VISION.md — facts only

Operator framing kept; intent, voice and the other paragraphs unchanged. The diff, verbatim:

@@ -1,6 +1,6 @@
 # Vision
 
-driftline is a single-player, Trackmania-like racing game that runs in the browser. It is a hobby project in a public repo: the goal is a build that loads at an unlisted GitHub Pages site (https://bborbe.github.io/driftline/), shared with the owner and a few friends and auto-deployed on every merge to `master`, with one hand-built track, a lap timer with checkpoints and instant respawn, and a best-run ghost that drives alongside you on the next lap.
+driftline is a single-player, Trackmania-like racing game that runs in the browser. It is a hobby project in a public repo: the goal is a build that loads at an unlisted GitHub Pages site (https://bborbe.github.io/driftline/), shared with the owner and a few friends and auto-deployed on every merge to `master`, with a campaign of hand-built tracks (A01–A05) and one style track per Trackmania map style (S01–S07), a lap timer with checkpoints and instant respawn, per-track medals, a best-run ghost and gold / author medal ghosts that drive alongside you, shareable challenge links, and play by keyboard or gamepad.
 
 Handling is the heart of the game. The car should grip on asphalt, drift controllably under handbrake, land stably after airtime, and never feel floaty or twitchy at speed. Physics runs on a fixed 100 Hz timestep and is fully deterministic, so a recorded input stream replays the same run every time — the foundation for ghosts.
 
@@ -12,7 +12,11 @@ Handling is the heart of the game. The car should grip on asphalt, drift control
 
 ## Non-goals
 
-- Multiplayer or online leaderboards
-- Multiple tracks or a track editor
-- Polished gamepad or mobile controls
+- A track editor
+- Mobile or touch controls
 - Access control on the site (the URL is unlisted, not gated)
+
+## On hold
+
+- Online leaderboard (the server in `server/` is built but not deployed)
+- Live multiplayer

3. Start-menu showcase tile

The label ran into its medal dot (live 8c1c914, 960×540: label right edge 232.0 px = dot left edge 232.0 px). .menu-tile-meta gets a 6 px gap, the label min-width: 0 + ellipsis, the dot flex: none. After (local vite preview, same viewport): label right 222.4 px, dot left 228.4 px — 6 px gap, the label shows show…. Before/after shots are on the task page.

4. CI timeouts

Every job in every workflow gets timeout-minutes, ~3× its slowest of the last 10 successful runs, minimum 5:

Workflow Job Slowest recent Timeout
ci.yml test / server 45 s / 34 s 10 / 10
pages.yml plan / build / deploy / comment 5 s / 25 s / 20 s / 6 s 5 / 10 / 10 / 5
release.yml test / release 501 s / 8 s 25 / 10
nightly.yml slow / report 404 s / 0 s 25 / 5
secret-scan.yml gitleaks 9 s 5
check-do-not-merge.yml do-not-merge 4 s 5

pages.yml runs from master under pull_request_target, so its timeouts take effect after merge.

Tests

  • make build green
  • make test-all green locally: 137 files, 2623 passed, 2 skipped (fast + slow tier)
  • Browsers muted, 960×540, fps=30&quality=low

@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Preview removed (PR closed).

@ben-s-pull-request-reviewer ben-s-pull-request-reviewer 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.

No issues found. All four concerns are addressed:

  • menu.css: The CSS fix is correct — gap: 6px on the flex container, min-width: 0 + text-overflow: ellipsis + white-space: nowrap on the label, and flex: none on the medal-dot prevent overflow.
  • car-kit assets: The code only references race.glb and race-future.glb (CAR_MODEL constant and MODEL_URLS glob) — none of the 48 deleted files are referenced anywhere.
  • CI timeouts: All jobs have timeout-minutes set; release.yml test and nightly.yml slow at 25 min is appropriate given the note about historical 501s runs (the 25 min margin should cover it).
  • VISION.md: Feature list matches what shipped (campaign tracks, style tracks, medals, ghosts, challenge links, gamepad); non-goals are accurate; "On hold" correctly lists online leaderboard and live multiplayer.
{
  "verdict": "approve",
  "summary": "Clean chore PR: unused car-kit GLBs pruned (5.5 MB → 352 KB), VISION.md updated to match shipped features, menu tile label overflow fixed with CSS ellipsis, and CI job timeouts added throughout. No issues found in any changed file.",
  "comments": [],
  "concerns_addressed": [
    {
      "concern": "correctness: menu tile label overflow CSS fix — verify label truncation works correctly",
      "disposition": "addressed",
      "detail": "src/menu/menu.css:87-90 — gap:6px on the flex row, min-width:0 + text-overflow:ellipsis + white-space:nowrap on .menu-tile-label, and flex:none on .medal-dot correctly prevent label overflow into the medal dot at any viewport width."
    },
    {
      "concern": "performance: verify no dynamic imports or string-concatenated asset paths reference the deleted car-kit files",
      "disposition": "addressed",
      "detail": "src/car/wheels.ts and src/render/cars.ts confirm only race.glb and race-future.glb are referenced; no kart-*, sedan*, suv*, or other deleted names appear in any source file."
    },
    {
      "concern": "tests: CI timeout values sufficient — particularly release.yml test at 25 min given historical 501s runs",
      "disposition": "addressed",
      "detail": "release.yml test and nightly.yml slow both set timeout-minutes: 25, providing ~4× the historical ~6 min runtime and adequate margin over the reported 501s runaway case."
    },
    {
      "concern": "correctness: VISION.md reflects current shipped feature set, non-goals and on-hold sections accurate",
      "disposition": "addressed",
      "detail": "VISION.md now lists all shipped features (campaign tracks A01-A05, style tracks S01-S07, medals, medal ghosts, challenge links, gamepad), trims non-goals to exclude shipped items, and adds an accurate 'On hold' section for the undeployed online leaderboard server and live multiplayer."
    }
  ]
}

@bborbe
bborbe merged commit 9f9bf7a into master Oct 18, 2026
13 checks passed
@bborbe
bborbe deleted the chore/second-polish branch October 18, 2026 21:39

This branch was successfully deployed

1 active deployment
github-pages — 09d0891b Deployed Oct 18, 2026 by bborbe via deploy #311
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