v1.4.6 — missing-content protocol + realistic desktop viewport
Two fixes bundled.
1. Missing-content protocol — kills the most common agent loop
When the agent took an action and the verification snapshot didn't show what it expected, it would loop: retry, screenshot, retry, screenshot. Especially bad on chat replies that scroll off, spinners that finish too fast, toasts that fade.
Both fast and meticulous prompts (src/goal-agent.ts) now have a mandatory rule: if the snapshot doesn't show the expected content, the next tool call MUST be __tikHistory.find({ text, sinceMs: 30000 }) — not a retry, not another screenshot.
The 30-second mutation buffer (added in v1.4.5) disambiguates the failure for the agent — it doesn't have to guess whether the element was ephemeral, scrolled off, or never rendered. Buffer hits → pass with "verified programmatically (time-travel): …". Buffer empty → real failure.
Mandatory for any goal whose success criterion mentions a chat/message/reply, a notification/toast/banner, a loading/spinner state, an animation, or any text appearing on a feed-style or scrolling surface.
2. Realistic 2026 desktop viewport (1920×1080)
Default desktop fallback bumped from 1280×800 → 1920×1080 to match the actual resolution most US users have in 2026 (StatCounter: ~21.5% share, top resolution). The snapWidth function gains a 1920 wide-desktop bucket so consumers who request 1920 keep the resolution end-to-end (1920 → 1080 canvas at 9/16 — clean repeating fraction). Aligned across runner.ts, config.ts, plan.ts, single-video-editor.ts, remotion/Root.tsx.
Consumers who explicitly set viewport: 1280x800 (or any other) in their tiktest.md are unaffected — only the unspecified default changes.
Versions kept in sync
package.json→ 1.4.6plugin/.claude-plugin/plugin.json→ 1.4.6v1tag force-pushed to point at this commit