Skip to content

fix(client): synchronize companion anchors on direct motion - #1249

Closed
DoodleBears wants to merge 2 commits into
mainfrom
codex/1248-companion-release-anchor
Closed

DoodleBears wants to merge 2 commits into
mainfrom
codex/1248-companion-release-anchor

Conversation

@DoodleBears

@DoodleBears DoodleBears commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Issue #1248 · Parent #1177 · Agent claim

Closes #1248 · Refs #1177 · Task codex/local/01a11734-bb09-7f01-9d45-adc0f5df6269

Why the change

Releasing a Window Companion in reduced motion could return the character to the floor before its connector followed, so direct motion now presents the character and bubble origin together.

Special things to note

Change outline

 pointer / keyboard / cancellation / motion-policy / resize
-  commit character → wait for animation frame → commit bubble origin
+  mounted presentation → project anchor at next position + commit character together
 existing visible animation-frame sampling and disposal remain

Real DSH reduced-motion release — Chinese, 1559 × 865, dark

Same isolated Profile, identities, history, viewport, theme and native drag/release scenario; new reply marker and sidebar unread count differ. These settled PNGs do not show the transient defect. An independent read-only observer measures the first rAF callback after trusted native pointerup:

Observation Before After
Character bottom 865px 865px
Head top / connector screen Y 769px / 32px 769px / 769px
Origin error 737px 0px
Later reading/theme/keyboard/release samples 120 aligned 120 aligned
Before: settled after the mismatch After: settled with synchronized origin
Actual settled baseline release Actual corrected reduced-motion release

Continuous baseline recording · Continuous corrected recording, 36.167s. Silent official MCP output, container-remuxed only; downloadable repository WebM files, no inline video-player claim. The first observed callback is not proof about every compositor frame; no invented first-frame screenshot is supplied.

Corrected reading and native keyboard movement — both themes

Light reading Light after arrow keys Dark reading
Actual light reduced-motion reading with genuine transient tool cover Actual native keyboard movement Actual dark reading

Two exact new Bot-authored replies are checked against canonical Channel messages. Native pause controls stop walking; public character focus retains reading. All four phases remain in one document, cards upright and within the viewport; Avatar Appearance/image fields are unchanged. Console inspection found0JavaScript errors; owned test pages/browser closed.

The initial baseline setup timed out waiting for visible cards despite real replies. That attempt is preserved privately. A subsequent baseline adds live-stream and outside-focus preconditions, without claiming which change caused recovery, and exposes the737px defect. Sanitized qualification · Setup and limits.

Validation

Mounted public-View regression: red before the fix (300px stale origin), green after, inspecting the immediate committed DOM without another animation frame. Focused8tests, Client144files/1,038tests, typecheck, lint/source policy, format, bilingual ledgers and build pass; existing warnings remain. No local Windows full-suite pass is claimed. Full current-head CI37879666979 passed in5m40s, including repository tests, build and generated-output checks. Final Standards and Spec reviews against85e9dfbe each report0actionable findings. All5published images and2recording links were verified in the actual GitHub page; the verification browser was closed. Ready for review; no merge performed.

Pointer and policy updates committed the character before the frame loop committed its bubble origin, leaving a stale tether on reduced-motion release. Present both together through the mounted view lifecycle. This correction was first produced under the existing #1177 task claim before discovering that PR #1183 had concurrently merged its preceding head.

Issue: #1248

Refs: #1177

Agent-Task: codex/local/01a11734-bb09-7f01-9d45-adc0f5df6269
Keep the 737px failed first-release observation alongside the corrected 0px observation, real canonical replies, five screenshots and two continuous silent recordings. Capture source fbb2975 is tree-identical to dedicated follow-up 426167c; settled PNGs do not show the transient.

Issue: #1248

Agent-Task: codex/local/01a11734-bb09-7f01-9d45-adc0f5df6269
@coderabbitai

coderabbitai Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 3 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 17d34392-569f-4e88-afec-893286da0787
📥 Commits

Reviewing files that changed from the base of the PR and between 85e9dfb and 803be5e.

⛔ Files ignored due to path filters (7)
  • docs/assets/pr/1248-companion-release-anchor/reduced-keyboard-light.png is excluded by !**/*.png
  • docs/assets/pr/1248-companion-release-anchor/reduced-reading-dark.png is excluded by !**/*.png
  • docs/assets/pr/1248-companion-release-anchor/reduced-reading-light.png is excluded by !**/*.png
  • docs/assets/pr/1248-companion-release-anchor/reduced-released-reading-dark.png is excluded by !**/*.png
  • docs/assets/pr/1248-companion-release-anchor/release-after.webm is excluded by !**/*.webm
  • docs/assets/pr/1248-companion-release-anchor/release-before-settled-dark.png is excluded by !**/*.png
  • docs/assets/pr/1248-companion-release-anchor/release-before.webm is excluded by !**/*.webm
📒 Files selected for processing (6)
  • CHANGELOG.md
  • CHANGELOG.zh.md
  • docs/assets/pr/1248-companion-release-anchor/README.md
  • docs/assets/pr/1248-companion-release-anchor/qualification.json
  • packages/client/src/client/window-companion-view.tsx
  • packages/client/test/window-companion-view.test.ts
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Contributor Author

Closing as superseded: the same direct-motion correction is already on main (9a01a3e). packages/client/src/client/window-companion-view.tsx there commits the character and bubble origin together through presentPoint on pointer release, keyboard movement, cancellation, motion-policy changes and resize, and the regression keeps the Avatar tether aligned through resize and the first reduced-motion release commit in packages/client/test/window-companion-view.test.ts passes on main. The code arrived with the #1180 integration noted on #1248, so this PR now only conflicts. Its evidence media stays reachable from this PR.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Window Companion: synchronize bubble anchors on direct motion and reduced-motion release

1 participant