fix: stop sticky jump-to-present bottom repins#337
Conversation
Sentry Preview Error TriageNo Sentry errors found for this PR's preview deployment as of Tue, 23 Jun 2026 15:14:09 GMT. This comment updates automatically after each push. |
Deploying with
|
| Status | Preview URL | Commit | Alias | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! | https://pr-337-charm.justin-tech.workers.dev | d2b5595 | pr-337 |
Tue, 23 Jun 2026 15:15:56 GMT |
Code Coverage OverviewLanguages: JavaScript JavaScript / code-coverage/vitestThe overall coverage remains at 27%, unchanged from the branch. Code Coverage is in Public Preview. Learn more and provide us with your feedback. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ee886dfd24
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -0,0 +1,5 @@ | |||
| --- | |||
| 'charm-client': patch | |||
There was a problem hiding this comment.
Point the changeset at the Charm package
This repo's release config defines a single package from package.json (name: "charm") via [package] in knope.toml, and the documented single-package changeset form is default: patch; there is no configured charm-client package. With this frontmatter the release tooling will not apply this entry to the app's version/changelog, so this fix can be omitted from the release notes or break release preparation. Please target default or charm instead.
Useful? React with 👍 / 👎.
Description
Fixes #328
Keep the keyboard-close recovery from snapping readers back to live bottom after they have already scrolled away during the same keyboard session. The repin path now only fires when the session started at bottom and the timeline is still bottom-pinned at keyboard-dismiss time.
Type of change
Checklist:
AI disclosure:
The change tightens
shouldRepinBottomAfterKeyboardCloseso the keyboard-dismiss recovery only repins when the room both started the keyboard session at live bottom and is still at bottom when the viewport expands again.RoomTimelinenow passes the current bottom state into that guard, which stops the close-animation path from dragging an off-bottom reader back to present after they intentionally scrolled upward. The keyboard-bottom recovery tests were updated to cover the new guard, and a patch changeset was added for the user-facing regression.Validation
pnpm lintpnpm fmt:checkpnpm typecheckpnpm test:runpnpm knippnpm build