docs(studio): dump-panel render sweep — all 26 windows verified
Rendered all 26 dump windows through the studio's --screenshot mode + a System.Drawing contact-sheet montage. The generic dump LayoutSource renders every panel with no crash; fidelity tracks static-chrome (in the dump) vs runtime content (slots/stats/appraise, not in the dump). Static-rich panels (vitals/toolbar/character/map/radar/effects/chat…) render great; runtime-only windows (examine) are correctly blank; inventory shows backdrop+frame but its nested sub-window chrome is sparse (next investigation). screenshots gitignored. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
f778b100b7
commit
2fe7b4a057
2 changed files with 46 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -90,3 +90,4 @@ C[-
|
|||
|
||||
# Junction to Claude Code per-project memory (Obsidian vault visibility)
|
||||
claude-memory
|
||||
studio-shots/
|
||||
|
|
|
|||
45
docs/research/2026-06-25-studio-dump-panel-sweep.md
Normal file
45
docs/research/2026-06-25-studio-dump-panel-sweep.md
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# UI Studio — dump-panel render sweep (2026-06-25)
|
||||
|
||||
All 26 windows in `docs/research/2026-06-25-retail-ui-layout-dump.json` were rendered through
|
||||
the studio's dump LayoutSource (`AcDream.App ui-studio --dump <slug> --screenshot <png>`) and
|
||||
read back as PNGs. Goal: verify the generic dump source renders every retail window, identify
|
||||
real render bugs vs. expected gaps.
|
||||
|
||||
## Verdict
|
||||
|
||||
The generic dump source renders **all 26 panels with no crash**. Render fidelity tracks how
|
||||
much of a panel is **static chrome** (present in the dump, so it draws) vs **runtime content**
|
||||
(slots, stats, appraise text — NOT in the dump, so it can't draw). This is the dump's nature,
|
||||
not a studio bug.
|
||||
|
||||
## Per-panel status (read from `studio-shots/`)
|
||||
|
||||
| Status | Panels |
|
||||
|--------|--------|
|
||||
| **Full / great** (frame + static content) | `vitals` (3 bars + heart/glyphs), `side_by_side_vitals`, `toolbar` (all spell/combat icons + backpack), `map`, `main_panel`, `radar` (disc), `character` (frame+tabs+scrollbar), `combat`, `powerbar`, `negative_effects`, `positive_effects`, `options`, `quests`, `social`, `spellbook`, `main_chat`, `floating_chat_1..4`, `environment_panel` |
|
||||
| **Partial** (chrome only; runtime content absent) | `inventory` — stone backdrop + top frame render, but the nested sub-window chrome (gm3DItemsUI / gmBackpackUI / paperdoll) is sparse and the slots are runtime-filled. **The one panel with a possible real gap — investigate the nested-layout / sub-window node handling.** |
|
||||
| **Blank** (runtime-only window, no static sprites in dump) | `examine` (appraise window — populated only on examine), and likely the small `indicators` / `smartbox` / `vitae` |
|
||||
|
||||
## Tooling shipped this sweep
|
||||
|
||||
- `--screenshot <path>` headless mode (`f778b10`): render the loaded panel (dump or dat) to a
|
||||
PNG off-screen via `PanelFbo` + `glReadPixels` + ImageSharp, then exit. Hidden window
|
||||
(`IsVisible=false`). The autonomous self-verification primitive.
|
||||
- Contact-sheet montage via PowerShell `System.Drawing` (one image, 26 thumbs) — the cheap
|
||||
per-sweep overview (`studio-shots/_contact.png`, gitignored).
|
||||
|
||||
## Rect basis (confirmed in `DumpLayout`)
|
||||
|
||||
Dump `rect` fields are ABSOLUTE retail screen coords; `DumpLayout` converts to parent-relative
|
||||
(`child.Left = child.Rect.X - parent.Rect.X`) and places the root at (0,0). Verified correct by
|
||||
the toolbar (icons land precisely) + vitals.
|
||||
|
||||
## Next (loop)
|
||||
|
||||
1. **Inventory nested chrome** — determine whether the sub-window content is missing because
|
||||
(a) those nodes are `Group`s with no static sprite (expected), or (b) `DumpLayout` isn't
|
||||
expanding a `base_layout_id` sub-layout reference (a fixable bug). Dump the inventory panel's
|
||||
node `widget_kind`/`rect`/`image_id` list and compare to what rendered.
|
||||
2. Spot-confirm the remaining blanks (`indicators`/`smartbox`/`vitae`) are runtime-only.
|
||||
3. The dump source is functionally complete as a static previewer; richer (live-data) previews
|
||||
are the dat-import + fixture path (the parked Task 4 bags/equip), not the dump path.
|
||||
Loading…
Add table
Add a link
Reference in a new issue