chore: backpack README + own-art test gaps (#103) #124

Merged
marco merged 2 commits from chore/backpack-followups into main 2026-07-22 06:24:20 +02:00
Owner

Summary

Closes #103 — polish follow-ups from the #100 backpack review.

  • README vs shipped UI: art/gump/container_backpack.README.md still told the artist the client draws Weapon/Armor equip slots + a visible 4×4 grid. #100 removed the slots and uses an invisible, free-placement, weight-bounded interior. Rewrote the composition section to the current panel (no slots, no grid; icons scatter/overlap; equip is a double-click).
  • Own-art bake tests: OwnArtTests only asserted Pixels.Length. Added: RGBA channel-order lock (catches a BGRA swap / dropped channel), semi-transparent alpha (128) survives the bake (the backpack interior is transparent — the property that matters), and the static/tree bottom-centre anchor branch.

The issue's hit-test boundary/gap item is already covered: BackpackLayoutTests was reworked to the free-placement API and asserts Contains' inclusive-left / exclusive-right boundary — noted in the closing rather than duplicated.

Screenshots / recording

No visible change (docs + tests only).

How it was tested

dotnet test green — IsoMmo.AssetExtractor.Tests 11 → 14 (the 3 new own-art asserts); whole solution builds 0 warnings; just lint clean.

Checklist

  • just lint passes (CSharpier + analyzers, zero warnings)
  • just test is green
  • The whole solution builds (client and tools included)
  • Multi-platform preserved
  • Tests added/updated for this change (OwnArtTests)
  • Linked the related issue (#103) and its Definition of Done is met
## Summary Closes #103 — polish follow-ups from the #100 backpack review. - **README vs shipped UI:** `art/gump/container_backpack.README.md` still told the artist the client draws Weapon/Armor equip slots + a visible 4×4 grid. #100 removed the slots and uses an **invisible, free-placement, weight-bounded** interior. Rewrote the composition section to the current panel (no slots, no grid; icons scatter/overlap; equip is a double-click). - **Own-art bake tests:** `OwnArtTests` only asserted `Pixels.Length`. Added: RGBA channel-order lock (catches a BGRA swap / dropped channel), semi-transparent alpha (128) survives the bake (the backpack interior is transparent — the property that matters), and the `static/tree` bottom-centre anchor branch. The issue's hit-test boundary/gap item is **already covered**: `BackpackLayoutTests` was reworked to the free-placement API and asserts `Contains`' inclusive-left / exclusive-right boundary — noted in the closing rather than duplicated. ## Screenshots / recording _No visible change (docs + tests only)._ ## How it was tested `dotnet test` green — `IsoMmo.AssetExtractor.Tests` 11 → 14 (the 3 new own-art asserts); whole solution builds 0 warnings; `just lint` clean. ## Checklist - [x] `just lint` passes (CSharpier + analyzers, zero warnings) - [x] `just test` is green - [x] The whole solution builds (client and tools included) - [x] Multi-platform preserved - [x] Tests added/updated for this change (`OwnArtTests`) - [x] Linked the related issue (#103) and its Definition of Done is met
feat(client): DEBUG-only harness to pilot the client (#122)
All checks were successful
ci / Lint & Test (pull_request) Successful in 1m43s
cbbfd965ce
A loopback TCP control channel (127.0.0.1:5199, newline request->response) compiled
only under #if DEBUG, so a shell or script can drive the running client and capture
screenshots to attach to PRs. Never in a Release build (verified: no Automation
types compiled in).

- Server-authoritative: commands inject the same intents a human sends (MoveRequest,
  Say, ...) or synthetic input the real UI reacts to (click/rightclick/drag/type/key);
  never fabricates server state.
- Built on a ClientApi facade (query visible state + issue intents) — the seam a future
  in-game scripting host (Lua/MoonSharp) will reuse.
- Commands: login, goto, move, say, open <admin|bag|doll>, click, rightclick, drag,
  type, key, screenshot, status, help. Queued off the socket thread, executed on the
  game loop (gestures span frames); screenshots captured after Draw.
- Command parsing is unit-tested (Client.Core). Dev admin allow-list adds 'debug'.
- Docs: docs/debug-harness.md; PR template + CLAUDE.md state the assistant-piloted
  screenshot process.
chore: fix backpack README + own-art test gaps (#103)
All checks were successful
ci / Lint & Test (pull_request) Successful in 1m32s
446a7d4146
- container_backpack.README.md described equip slots + a visible 4x4 grid the
  shipped panel doesn't have (#100 moved to an invisible free-placement, weight-
  bounded interior). Rewrite the composition section to the current panel.
- OwnArtTests only checked frame.Pixels.Length. Add: RGBA channel-order lock
  (catches a BGRA swap / dropped channel), semi-transparent alpha survives the
  bake (the backpack interior is transparent), and the static/tree bottom-centre
  anchor branch.

The hit-test boundary gap from the issue is already covered: BackpackLayoutTests
was reworked to the free-placement API and asserts Contains' inclusive-left/
exclusive-right boundary.
marco merged commit 80e0952486 into main 2026-07-22 06:24:20 +02:00
marco deleted branch chore/backpack-followups 2026-07-22 06:24:21 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marco/IsoMmo!124
No description provided.