diff --git a/ai/tasks/done/TASK-263-fix-juno-beach-map-image-extension.md b/ai/tasks/done/TASK-263-fix-juno-beach-map-image-extension.md new file mode 100644 index 0000000..a974418 --- /dev/null +++ b/ai/tasks/done/TASK-263-fix-juno-beach-map-image-extension.md @@ -0,0 +1,94 @@ +--- +id: TASK-263 +title: Fix Juno Beach map image extension +status: done +type: frontend +team: Frontend Senior +supporting_teams: [] +roadmap_item: foundation +priority: medium +--- + +# TASK-263 - Fix Juno Beach map image extension + +## Goal + +Ensure the Juno Beach day map image resolves to an existing `.webp` asset so `/assets/img/maps/junobeach-day.webp` stops returning 404 after deployment. + +## Context + +The current match page can resolve Juno Beach day to: + +- `./assets/img/maps/junobeach-day.webp` + +The reported filesystem mismatch was: + +- existing incorrect file: `frontend/assets/img/maps/junobeach-day.web` +- expected file: `frontend/assets/img/maps/junobeach-day.webp` + +The map image resolver already emits `.webp` paths, so the scoped correction is the asset extension only. + +## Steps + +1. Read repository context and frontend role guidance. +2. Inspect the map resolver and current match page references. +3. Confirm the Juno Beach asset extension in `frontend/assets/img/maps`. +4. Search for other `.web` files in the maps directory. +5. Validate the task scope and document the result. + +## Files to Read First + +- `AGENTS.md` +- `ai/architecture-index.md` +- `ai/repo-context.md` +- `ai/orchestrator/frontend-senior.md` +- `frontend/assets/js/map-image-resolver.js` +- `frontend/partida-actual.html` + +## Expected Files to Modify + +- `frontend/assets/img/maps/junobeach-day.web` -> `frontend/assets/img/maps/junobeach-day.webp` +- `ai/tasks/done/TASK-263-fix-juno-beach-map-image-extension.md` + +## Constraints + +- Do not change the map resolver unless necessary. +- Do not change JavaScript. +- Do not touch other maps unless more `.web` files are detected in `frontend/assets/img/maps`. +- Do not touch weapons, clans, brands or other assets. +- Do not touch backend, scheduler, RCON, TeamKills, server configuration, port `27001`, Elo/MMR, Comunidad Hispana #03 or `ai/system-metrics.md`. +- Do not include `tmp/` or unrelated prior changes. +- Do not commit or push. + +## Validation + +- `git status --short --untracked-files=all -- frontend/assets/img/maps` +- `Test-Path frontend/assets/img/maps/junobeach-day.webp` +- `Test-Path frontend/assets/img/maps/junobeach-day.web` +- `Get-ChildItem frontend/assets/img/maps -Filter *.web` +- `git diff --name-only` + +## Outcome + +At execution time, `frontend/assets/img/maps/junobeach-day.web` was already absent and `frontend/assets/img/maps/junobeach-day.webp` was present. No JavaScript or resolver changes were needed. + +No other `.web` files were found under `frontend/assets/img/maps`. + +Validation results: + +- `git status --short --untracked-files=all -- frontend/assets/img/maps` showed untracked map `.webp` assets already present in the worktree, including `frontend/assets/img/maps/junobeach-day.webp`. +- `Test-Path frontend/assets/img/maps/junobeach-day.webp` returned `True`. +- `Test-Path frontend/assets/img/maps/junobeach-day.web` returned `False`. +- `Get-ChildItem frontend/assets/img/maps -Filter *.web` returned no files. +- `git diff --name-only` showed only pre-existing tracked changes outside this task: `ai/system-metrics.md`, `frontend/assets/img/clans/250hispania-shield.png`, and `frontend/assets/img/clans/250hispania.png`. + +Deployment/browser validation remains to be performed after the asset changes are deployed: + +- `GET https://comunidadhll.devzamode.es/assets/img/maps/junobeach-day.webp` should return `200`. +- `/partida-actual.html?server=comunidad-hispana-01` should not log a 404 for `junobeach-day.webp`. + +## Change Budget + +- Modified files: 1 documentation file. +- Asset state confirmed in `frontend/assets/img/maps`. +- No backend, scheduler, RCON, server configuration or unrelated assets changed. diff --git a/ai/tasks/done/TASK-265-publish-map-and-clan-image-assets.md b/ai/tasks/done/TASK-265-publish-map-and-clan-image-assets.md new file mode 100644 index 0000000..069d4d9 --- /dev/null +++ b/ai/tasks/done/TASK-265-publish-map-and-clan-image-assets.md @@ -0,0 +1,163 @@ +--- +id: TASK-265 +title: Publish map and clan image assets +status: done +type: frontend +team: Frontend Senior +supporting_teams: [] +roadmap_item: foundation +priority: high +--- + +# TASK-265 - Publish map and clan image assets + +## Goal + +Publish the map and clan image assets that the public frontend is already trying to load, so production stops returning 404 for known image URLs such as `/assets/img/maps/junobeach-day.webp`. + +## Context + +The frontend map resolver builds `.webp` paths under `./assets/img/maps/`. Several resolver variants were present in the working tree but not yet tracked. The current landing clan list also references `./assets/img/clans/250hispania-shield.png`. + +This task is a publishing task only. It does not change frontend JavaScript, backend code, scheduler behavior, RCON configuration, server configuration, Elo/MMR, TeamKills or `Comunidad Hispana #03`. + +## Steps + +1. Audit pending map and clan image changes. +2. Check frontend references for maps and clans. +3. Confirm whether `250hispania.png` is still referenced. +4. Publish only scoped map/clan assets and related task docs. +5. Validate the staged commit scope before committing. + +## Files to Read First + +- `AGENTS.md` +- `ai/architecture-index.md` +- `ai/repo-context.md` +- `ai/orchestrator/frontend-senior.md` +- `frontend/assets/js/map-image-resolver.js` +- `frontend/assets/js/main.js` + +## Expected Files to Modify + +- `frontend/assets/img/maps/*.webp` +- `frontend/assets/img/clans/250hispania-shield.png` +- `frontend/assets/img/clans/250hispania.png` +- `ai/tasks/done/TASK-263-fix-juno-beach-map-image-extension.md` +- `ai/tasks/done/TASK-265-publish-map-and-clan-image-assets.md` + +## Constraints + +- Do not execute `ai-platform run`. +- Do not touch backend, scheduler, RCON, port `27001`, server configuration, TeamKills, Elo/MMR or Comunidad Hispana #03. +- Do not touch `ai/system-metrics.md`. +- Do not include `tmp/`. +- Do not include `TASK-204` or `TASK-242`. +- Do not include `frontend/assets/img/weapons/` or `frontend/assets/img/brands/`. +- Do not use `git add .`. +- Do not include unrelated prior changes. + +## Audit + +Frontend map references: + +- `frontend/historico-partida.html` loads `./assets/js/map-image-resolver.js`. +- `frontend/partida-actual.html` loads `./assets/js/map-image-resolver.js`. +- `frontend/assets/js/map-image-resolver.js` resolves map images to `./assets/img/maps/${mapId}-${environment}.webp` and `./assets/img/maps/unknown-${environment}.webp`. + +Frontend clan references: + +- `frontend/assets/js/main.js` references `./assets/img/clans/250hispania-shield.png`. +- No frontend reference to `./assets/img/clans/250hispania.png` was found. + +Decision for `250hispania.png`: + +- Delete `frontend/assets/img/clans/250hispania.png` from the published set because the frontend now references `250hispania-shield.png` and no remaining frontend references to the old filename were found. +- Publish the modified `frontend/assets/img/clans/250hispania-shield.png`. + +## Maps Added + +42 new map assets were pending and should be published: + +- `frontend/assets/img/maps/carentan-dusk.webp` +- `frontend/assets/img/maps/carentan-night.webp` +- `frontend/assets/img/maps/carentan-rain.webp` +- `frontend/assets/img/maps/driel-dawn.webp` +- `frontend/assets/img/maps/driel-night.webp` +- `frontend/assets/img/maps/elalamein-dusk.webp` +- `frontend/assets/img/maps/elsenbornridge-dawn.webp` +- `frontend/assets/img/maps/elsenbornridge-dusk.webp` +- `frontend/assets/img/maps/elsenbornridge-night.webp` +- `frontend/assets/img/maps/foy-night.webp` +- `frontend/assets/img/maps/hill400-dusk.webp` +- `frontend/assets/img/maps/hill400-night.webp` +- `frontend/assets/img/maps/hurtgenforest-night.webp` +- `frontend/assets/img/maps/junobeach-dawn.webp` +- `frontend/assets/img/maps/junobeach-day.webp` +- `frontend/assets/img/maps/junobeach-night.webp` +- `frontend/assets/img/maps/kharkov-night.webp` +- `frontend/assets/img/maps/kursk-night.webp` +- `frontend/assets/img/maps/main-menu.webp` +- `frontend/assets/img/maps/mortain-dusk.webp` +- `frontend/assets/img/maps/mortain-night.webp` +- `frontend/assets/img/maps/mortain-overcast.webp` +- `frontend/assets/img/maps/omahabeach-dusk.webp` +- `frontend/assets/img/maps/purpleheartlane-dawn.webp` +- `frontend/assets/img/maps/purpleheartlane-day.webp` +- `frontend/assets/img/maps/purpleheartlane-night.webp` +- `frontend/assets/img/maps/remagen-day.webp` +- `frontend/assets/img/maps/remagen-night.webp` +- `frontend/assets/img/maps/smolensk-dusk.webp` +- `frontend/assets/img/maps/smolensk-night.webp` +- `frontend/assets/img/maps/stalingrad-day.webp` +- `frontend/assets/img/maps/stalingrad-dusk.webp` +- `frontend/assets/img/maps/stalingrad-night.webp` +- `frontend/assets/img/maps/stalingrad-overcast.webp` +- `frontend/assets/img/maps/stmariedumont-night.webp` +- `frontend/assets/img/maps/stmariedumont-rain.webp` +- `frontend/assets/img/maps/stmereeglise-dawn.webp` +- `frontend/assets/img/maps/stmereeglise-night.webp` +- `frontend/assets/img/maps/tobruk-dusk.webp` +- `frontend/assets/img/maps/unknown-day.webp` +- `frontend/assets/img/maps/unknown.webp` +- `frontend/assets/img/maps/utahbeach-night.webp` + +## Clan Assets + +Clan asset changes to publish: + +- Modified: `frontend/assets/img/clans/250hispania-shield.png` +- Deleted: `frontend/assets/img/clans/250hispania.png` + +No other clan files were pending in the initial scoped status. + +## Validation + +Pre-commit checks: + +- `git status --short --untracked-files=all -- frontend/assets/img/maps frontend/assets/img/clans` +- `Get-ChildItem frontend/assets/img/maps -Recurse -Filter *.webp` +- `Get-ChildItem frontend/assets/img/clans -Recurse -Force` +- `rg -n "assets/img/maps|junobeach-day\.webp|map-image-resolver|frontend/assets/js/map-image-resolver\.js" frontend -S` +- `rg -n "assets/img/clans|250hispania\.png|250hispania-shield\.png|clan|shield" frontend -S` +- `Test-Path frontend/assets/img/maps/junobeach-day.webp` +- `Get-ChildItem frontend/assets/img/maps -Filter *.web` +- sample path checks for `junobeach-day.webp`, `junobeach-dawn.webp`, `junobeach-night.webp`, `stmariedumont-night.webp`, `purpleheartlane-day.webp`, `remagen-day.webp`, and `unknown.webp` +- `git diff --name-status -- frontend/assets/img/maps frontend/assets/img/clans` +- `git diff --cached --name-only` + +Post-deploy public validation: + +- `GET https://comunidadhll.devzamode.es/assets/img/maps/junobeach-day.webp` should return `200`. +- Open `/partida-actual.html?server=comunidad-hispana-01` and confirm map images no longer 404. +- Open the landing page and confirm the 250 Hispania clan shield loads from `assets/img/clans/250hispania-shield.png`. + +## Outcome + +The scoped publish set includes only map assets, clan assets and related task documentation. Weapons, brands, backend, scheduler, RCON, server configuration, `ai/system-metrics.md`, `tmp/`, `TASK-204` and `TASK-242` are excluded. + +`TASK-263` is included because it directly documents the `junobeach-day.webp` extension fix included in this publish set. + +## Change Budget + +This task intentionally exceeds the usual small file count because it publishes a batch of static binary assets required by existing frontend URLs. No code behavior changes are included. diff --git a/frontend/assets/img/clans/250hispania-shield.png b/frontend/assets/img/clans/250hispania-shield.png index a7adf08..a90e8a1 100644 Binary files a/frontend/assets/img/clans/250hispania-shield.png and b/frontend/assets/img/clans/250hispania-shield.png differ diff --git a/frontend/assets/img/clans/250hispania.png b/frontend/assets/img/clans/250hispania.png deleted file mode 100644 index ff134fe..0000000 Binary files a/frontend/assets/img/clans/250hispania.png and /dev/null differ diff --git a/frontend/assets/img/maps/carentan-dusk.webp b/frontend/assets/img/maps/carentan-dusk.webp new file mode 100644 index 0000000..204f80a Binary files /dev/null and b/frontend/assets/img/maps/carentan-dusk.webp differ diff --git a/frontend/assets/img/maps/carentan-night.webp b/frontend/assets/img/maps/carentan-night.webp new file mode 100644 index 0000000..dd67440 Binary files /dev/null and b/frontend/assets/img/maps/carentan-night.webp differ diff --git a/frontend/assets/img/maps/carentan-rain.webp b/frontend/assets/img/maps/carentan-rain.webp new file mode 100644 index 0000000..84c1216 Binary files /dev/null and b/frontend/assets/img/maps/carentan-rain.webp differ diff --git a/frontend/assets/img/maps/driel-dawn.webp b/frontend/assets/img/maps/driel-dawn.webp new file mode 100644 index 0000000..224c6eb Binary files /dev/null and b/frontend/assets/img/maps/driel-dawn.webp differ diff --git a/frontend/assets/img/maps/driel-night.webp b/frontend/assets/img/maps/driel-night.webp new file mode 100644 index 0000000..045dc65 Binary files /dev/null and b/frontend/assets/img/maps/driel-night.webp differ diff --git a/frontend/assets/img/maps/elalamein-dusk.webp b/frontend/assets/img/maps/elalamein-dusk.webp new file mode 100644 index 0000000..eb2b6e9 Binary files /dev/null and b/frontend/assets/img/maps/elalamein-dusk.webp differ diff --git a/frontend/assets/img/maps/elsenbornridge-dawn.webp b/frontend/assets/img/maps/elsenbornridge-dawn.webp new file mode 100644 index 0000000..a153783 Binary files /dev/null and b/frontend/assets/img/maps/elsenbornridge-dawn.webp differ diff --git a/frontend/assets/img/maps/elsenbornridge-dusk.webp b/frontend/assets/img/maps/elsenbornridge-dusk.webp new file mode 100644 index 0000000..a153783 Binary files /dev/null and b/frontend/assets/img/maps/elsenbornridge-dusk.webp differ diff --git a/frontend/assets/img/maps/elsenbornridge-night.webp b/frontend/assets/img/maps/elsenbornridge-night.webp new file mode 100644 index 0000000..edd96e0 Binary files /dev/null and b/frontend/assets/img/maps/elsenbornridge-night.webp differ diff --git a/frontend/assets/img/maps/foy-night.webp b/frontend/assets/img/maps/foy-night.webp new file mode 100644 index 0000000..7c9750a Binary files /dev/null and b/frontend/assets/img/maps/foy-night.webp differ diff --git a/frontend/assets/img/maps/hill400-dusk.webp b/frontend/assets/img/maps/hill400-dusk.webp new file mode 100644 index 0000000..b3bd4fa Binary files /dev/null and b/frontend/assets/img/maps/hill400-dusk.webp differ diff --git a/frontend/assets/img/maps/hill400-night.webp b/frontend/assets/img/maps/hill400-night.webp new file mode 100644 index 0000000..d621460 Binary files /dev/null and b/frontend/assets/img/maps/hill400-night.webp differ diff --git a/frontend/assets/img/maps/hurtgenforest-night.webp b/frontend/assets/img/maps/hurtgenforest-night.webp new file mode 100644 index 0000000..7ee573b Binary files /dev/null and b/frontend/assets/img/maps/hurtgenforest-night.webp differ diff --git a/frontend/assets/img/maps/junobeach-dawn.webp b/frontend/assets/img/maps/junobeach-dawn.webp new file mode 100644 index 0000000..581047d Binary files /dev/null and b/frontend/assets/img/maps/junobeach-dawn.webp differ diff --git a/frontend/assets/img/maps/junobeach-day.webp b/frontend/assets/img/maps/junobeach-day.webp new file mode 100644 index 0000000..581047d Binary files /dev/null and b/frontend/assets/img/maps/junobeach-day.webp differ diff --git a/frontend/assets/img/maps/junobeach-night.webp b/frontend/assets/img/maps/junobeach-night.webp new file mode 100644 index 0000000..581047d Binary files /dev/null and b/frontend/assets/img/maps/junobeach-night.webp differ diff --git a/frontend/assets/img/maps/kharkov-night.webp b/frontend/assets/img/maps/kharkov-night.webp new file mode 100644 index 0000000..fdc7215 Binary files /dev/null and b/frontend/assets/img/maps/kharkov-night.webp differ diff --git a/frontend/assets/img/maps/kursk-night.webp b/frontend/assets/img/maps/kursk-night.webp new file mode 100644 index 0000000..be45ca4 Binary files /dev/null and b/frontend/assets/img/maps/kursk-night.webp differ diff --git a/frontend/assets/img/maps/main-menu.webp b/frontend/assets/img/maps/main-menu.webp new file mode 100644 index 0000000..fae6634 Binary files /dev/null and b/frontend/assets/img/maps/main-menu.webp differ diff --git a/frontend/assets/img/maps/mortain-dusk.webp b/frontend/assets/img/maps/mortain-dusk.webp new file mode 100644 index 0000000..d4dda88 Binary files /dev/null and b/frontend/assets/img/maps/mortain-dusk.webp differ diff --git a/frontend/assets/img/maps/mortain-night.webp b/frontend/assets/img/maps/mortain-night.webp new file mode 100644 index 0000000..99cc254 Binary files /dev/null and b/frontend/assets/img/maps/mortain-night.webp differ diff --git a/frontend/assets/img/maps/mortain-overcast.webp b/frontend/assets/img/maps/mortain-overcast.webp new file mode 100644 index 0000000..799dd66 Binary files /dev/null and b/frontend/assets/img/maps/mortain-overcast.webp differ diff --git a/frontend/assets/img/maps/omahabeach-dusk.webp b/frontend/assets/img/maps/omahabeach-dusk.webp new file mode 100644 index 0000000..71ad03c Binary files /dev/null and b/frontend/assets/img/maps/omahabeach-dusk.webp differ diff --git a/frontend/assets/img/maps/purpleheartlane-dawn.webp b/frontend/assets/img/maps/purpleheartlane-dawn.webp new file mode 100644 index 0000000..c069120 Binary files /dev/null and b/frontend/assets/img/maps/purpleheartlane-dawn.webp differ diff --git a/frontend/assets/img/maps/purpleheartlane-day.webp b/frontend/assets/img/maps/purpleheartlane-day.webp new file mode 100644 index 0000000..c069120 Binary files /dev/null and b/frontend/assets/img/maps/purpleheartlane-day.webp differ diff --git a/frontend/assets/img/maps/purpleheartlane-night.webp b/frontend/assets/img/maps/purpleheartlane-night.webp new file mode 100644 index 0000000..34a882c Binary files /dev/null and b/frontend/assets/img/maps/purpleheartlane-night.webp differ diff --git a/frontend/assets/img/maps/remagen-day.webp b/frontend/assets/img/maps/remagen-day.webp new file mode 100644 index 0000000..77be1f6 Binary files /dev/null and b/frontend/assets/img/maps/remagen-day.webp differ diff --git a/frontend/assets/img/maps/remagen-night.webp b/frontend/assets/img/maps/remagen-night.webp new file mode 100644 index 0000000..2acf6c7 Binary files /dev/null and b/frontend/assets/img/maps/remagen-night.webp differ diff --git a/frontend/assets/img/maps/smolensk-dusk.webp b/frontend/assets/img/maps/smolensk-dusk.webp new file mode 100644 index 0000000..f6be446 Binary files /dev/null and b/frontend/assets/img/maps/smolensk-dusk.webp differ diff --git a/frontend/assets/img/maps/smolensk-night.webp b/frontend/assets/img/maps/smolensk-night.webp new file mode 100644 index 0000000..6bee14b Binary files /dev/null and b/frontend/assets/img/maps/smolensk-night.webp differ diff --git a/frontend/assets/img/maps/stalingrad-day.webp b/frontend/assets/img/maps/stalingrad-day.webp new file mode 100644 index 0000000..130c805 Binary files /dev/null and b/frontend/assets/img/maps/stalingrad-day.webp differ diff --git a/frontend/assets/img/maps/stalingrad-dusk.webp b/frontend/assets/img/maps/stalingrad-dusk.webp new file mode 100644 index 0000000..3718741 Binary files /dev/null and b/frontend/assets/img/maps/stalingrad-dusk.webp differ diff --git a/frontend/assets/img/maps/stalingrad-night.webp b/frontend/assets/img/maps/stalingrad-night.webp new file mode 100644 index 0000000..b2f0cc3 Binary files /dev/null and b/frontend/assets/img/maps/stalingrad-night.webp differ diff --git a/frontend/assets/img/maps/stalingrad-overcast.webp b/frontend/assets/img/maps/stalingrad-overcast.webp new file mode 100644 index 0000000..931053b Binary files /dev/null and b/frontend/assets/img/maps/stalingrad-overcast.webp differ diff --git a/frontend/assets/img/maps/stmariedumont-night.webp b/frontend/assets/img/maps/stmariedumont-night.webp new file mode 100644 index 0000000..7c7350d Binary files /dev/null and b/frontend/assets/img/maps/stmariedumont-night.webp differ diff --git a/frontend/assets/img/maps/stmariedumont-rain.webp b/frontend/assets/img/maps/stmariedumont-rain.webp new file mode 100644 index 0000000..ec934d6 Binary files /dev/null and b/frontend/assets/img/maps/stmariedumont-rain.webp differ diff --git a/frontend/assets/img/maps/stmereeglise-dawn.webp b/frontend/assets/img/maps/stmereeglise-dawn.webp new file mode 100644 index 0000000..a8992a7 Binary files /dev/null and b/frontend/assets/img/maps/stmereeglise-dawn.webp differ diff --git a/frontend/assets/img/maps/stmereeglise-night.webp b/frontend/assets/img/maps/stmereeglise-night.webp new file mode 100644 index 0000000..89c493a Binary files /dev/null and b/frontend/assets/img/maps/stmereeglise-night.webp differ diff --git a/frontend/assets/img/maps/tobruk-dusk.webp b/frontend/assets/img/maps/tobruk-dusk.webp new file mode 100644 index 0000000..723e1e2 Binary files /dev/null and b/frontend/assets/img/maps/tobruk-dusk.webp differ diff --git a/frontend/assets/img/maps/unknown-day.webp b/frontend/assets/img/maps/unknown-day.webp new file mode 100644 index 0000000..fae6634 Binary files /dev/null and b/frontend/assets/img/maps/unknown-day.webp differ diff --git a/frontend/assets/img/maps/unknown.webp b/frontend/assets/img/maps/unknown.webp new file mode 100644 index 0000000..fae6634 Binary files /dev/null and b/frontend/assets/img/maps/unknown.webp differ diff --git a/frontend/assets/img/maps/utahbeach-night.webp b/frontend/assets/img/maps/utahbeach-night.webp new file mode 100644 index 0000000..e07d41d Binary files /dev/null and b/frontend/assets/img/maps/utahbeach-night.webp differ