Cinematic's last two session errors. With these it loads clean, survives a session start,
survives a UI probe and **draws** — all four of the harness's runtime columns.
**`UnitCastingInfo`/`UnitChannelInfo` as bare globals** is an export, not a feature: the
namespaced pair was already built with the whole contract in `cast_info` (the two return
shapes, the millisecond unit, every position this client leaves nil and why), and these hand
out the **same function values** the `C_Spell` table holds, so the two spellings cannot drift.
Six calls of each in `Cinematic/Camera.lua` and its siblings, unguarded. `CastingInfo`/
`ChannelInfo` stay namespace-only: nothing on this install calls them bare, and pfUI reaches
the one it wants through the namespace (`libdebuff.lua:887`).
**`IsMouseButtonDown` needed a feed before it could be built honestly, and the reason it was
declined is why.** `compat/classic_api/input.rs` had said no on the grounds that the only
press state here is `Model::mouse_down_on`, which the pointer layer fills *only* for a press
that landed on a frame — and `Cinematic/Camera.lua:612` asks in order to spot a right-drag **on
the world**, which is exactly what that map cannot see. Answering from it would have been wrong
for the one caller.
So `Model::mouse_buttons` is new: `[Left, Right, Middle, Button4, Button5]`, pushed each frame
from `ButtonInput<MouseButton>` beside the modifiers. Placed there deliberately rather than
with the pointer feed below it, because that feed is skipped for a cursor off the window or a
hidden UI, and "is the right button still held" has to stay true through both — which is the
camera's question. Both spellings (`RightButton` and `Button2`), no argument means any button
as upstream's does, and a button no device has answers not-down rather than raising.
The reference capture of the real client's `_G` has no mouse-button getter at all, and
`ClassicAPI.dll` carries the name, so it is compat's rather than a 1.12 gap.
Corpus: 100 addons, 85 ok / 1 fail, roster identical. benilla-ui 2082 passed. Chain green.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn