Files
LlamaCasty/HANDOFF.md
T

55 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HANDOFF — Session State
## Branch / Commit State
**`main`**, dirty working tree being committed as one unit (web source rendering fix — user-confirmed
working). **NOT pushed — user rule: never push without explicit instruction (2026-08-24).** No feature
branches pre-1.0: all work lands on `main` per work unit.
## The web-source rendering work (2026-08-28) — CURRENT MODEL: canvas-size viewport + content crop
**Root cause finally isolated:** hosting the page at the ELEMENT-box size clips full-bleed widgets
(designed for ~1920×1080) to their upper-left chunk inside a small viewport — "image truncated to
the upper-left corner regardless of scaling." That truncation persisted across every earlier
model because all of them rendered the page at the box (or a mix); e917c41's full 1920×1080
render was the only one that showed full content, and its letterbox dead space was purely the
display `Uniform` + the box aspect mismatch — not the render.
**The model (implemented, visual verification pending):**
- `Services/WebView2Manager.cs` — page renders at the MASTER CANVAS size (1920×1080), stable,
never tracked: full-bleed widgets render FULL (no upper-left truncation); dragging the box never
reflows the page; `overflow:hidden` (html+body) + transparent-bg injection. After each nav
`QueryContentBoundsAsync` reads the page's real content rect
(`scrollWidth/scrollHeight` vs `innerWidth/innerHeight`) and `CaptureFrame` **crops to the
actual content bounds anchored at (0,0)**. Immediate capture on `NavigationCompleted`.
- `MainWindow.xaml` — web `<Image>` `Stretch="Fill"`: the cropped 1920×1080 frame maps flush under
the box (Box == widget bounds at every size, pinned (0,0), no dead space).
- Invariants: **render at canvas size; crop to content; Fill to box.**
**Property panel / sliders (2026-08-28):** web URI ✕ clears the textbox; web ✓/✕ icon buttons
`IsTabStop="False"` so Tab walks X→Y→W→H→URI; Slider style `IsMoveToPointEnabled="True"`
restores click-anywhere-on-bar. All three confirmed fixed by the creator.
Build: 0 warnings; tests 4/4. Rejected for the record: box-sized viewport (upper-left truncation),
fixed 1920×1080 + `Uniform` (letterbox dead space), CSS margin/100% reset (enlarged gap),
viewport==box (reflow/truncation/scrollbars).
## Key facts / landmines
- **App running locks `ytLive.exe`** → build fails MSB3027 until creator exits the app.
- **Startup diagnostics:** unhandled exceptions + checkpoints go to `%APPDATA%\ytLlive\startup.log`
(`Helpers/AppLog.cs`). On a silent startup crash, read that.
- **Pre-existing test failures (unrelated to web source, do not chase):**
`AudioPipelineTests.Mix_HonorsProviderGains_AndGameMute_KillsTheLoopback` +
`RoundClipInteractionTests.Round_Clip_Corner_Is_Grabbable_And_Shape_Is_Circle`.
- **Real-MainWindow tests MUST set `LayoutPathOverride`** — DB pollution wiped real data once.
- **Good Dog Rule:** ONE integration test per change; no new feature branches pre-1.0.
- **Scope Lock:** declare the file list, run `scripts/scope-check.sh` before every commit.
- **Every feature change ships memory updates in the SAME commit** — `TASKS.md` status + this file.
- No `CODING.md`; conventions live in `AGENTS.md` + `ai.md`.
## Next steps
1. AWAIT creator's verdict on viewport==box (geometry-agnostic) rendering — visual check with a
widget URL at several box sizes; the selection frame must snap flush with no padding.
2. Follow-up only if the creator asks: graceful handling of navigation errors / invalid URIs (TASK 17 ×9).
3. Continue queue: TASK 18 local recording, TASK 21 media source, TASK 22 audio sync offset.