framesieve 0.4.0: reference diff mode - #1
Merged
Merged
Conversation
… adaptive) New opt-in diff.mode "reference" (default stays "previous", fully backward compatible): compares each frame against the last EMITTED frame instead of the previous one, so a transient change that reverts to that baseline is dropped and only a change that persists for the new policy.referencePersistMs (default 3000) is emitted. A deterministic temporal filter for "important changes only" (a hover tooltip that comes and goes vs text that is typed and stays); judging whether a persistent change matters stays the caller's/VLM's job. Two-mask design: the adaptive weight is now driven by frame-to-frame motion (BlockGrid.step takes score + motion masks; DiffEngine returns both), while the gate keys off baseline divergence - so a held overlay keeps a high score and emits, and a chronically moving region is still down-weighted. diff.commit() advances the reference on emit (prime and threshold only, never keepalive) and runs synchronously in recordEmit so an async transform cannot desync it. Default "previous" mode decides identically to 0.3.0: existing fixtures and examples/meeting/timeline.jsonl are byte-for-byte unchanged (verified by regenerating goldens with no diff). New fixture tooltip-blip pins the transient-drop behavior on real PNG frames. Coordinated release: adapters 0.3.0 and cli 0.2.0 bump their framesieve range to ^0.4.0 (no adapter/CLI code change); redact peer/dev ranges bumped for workspace consistency (still unpublished). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WyitJEKkrbE4VYXnk2buwA
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
framesieve 0.4.0 - reference diff mode
Adds a third, opt-in diff mode so the gate can drop transient changes and only forward ones that stick.
What
diff.mode: "reference"(default stays"previous"): compares each frame against the last emitted frame instead of the previous one. A change that appears then reverts to that baseline before it persists is dropped (a hover tooltip that comes and goes); a change that stays for the newpolicy.referencePersistMs(default 3000) is emitted and becomes the new baseline (text typed, a panel that opens and stays).diff.algorithm: downsample/pixel/edge) x what to compare against (diff.mode: previous/reference).How
BlockGrid.steptakes score + motion masks;DiffEnginereturns both), the gate by baseline divergence - so a held overlay keeps a high score and emits, while a chronically moving region is still down-weighted.diff.commit()advances the reference on emit (prime/threshold only, never keepalive), synchronously inrecordEmitso an async transform cannot desync it.Backward compatibility
"previous"mode decides identically to 0.3.0: existing fixtures andexamples/meeting/timeline.jsonlare byte-for-byte unchanged (goldens regenerate with no diff). New fixturetooltip-blippins the transient-drop on real PNG frames.Coordinated release
framesieverange to^0.4.0(no adapter/CLI code change); redact ranges bumped (still unpublished).Verification
npm run build && npm test && npm run lint && npm run smoke:packall green (133 tests). Clean install resolves with no nestedframesievecopies.🤖 Generated with Claude Code
https://claude.ai/code/session_01WyitJEKkrbE4VYXnk2buwA