Ended-session strip: New shell does nothing; the strip moves away from the pointer #185

Closed
opened 2026-10-12 08:30:40 +00:00 by kayg · 3 comments
Owner

Owner, production 2026-10-12 ~13:45 IST, desktop Chrome: two restored kayg@monitor01 windows show 'Session ended · + New shell · ×'. Clicking New shell does nothing; the strip moves away when the pointer approaches. Top pill says 0 sessions. On monitor01 no shells for uid 1001 exist (22 root shells alive), so 'ended' is correct. Fix on release-prod-4 (batch 4 reworks this strip, #168) — job: designer, branch ended-strip-fix.

Owner, production 2026-10-12 ~13:45 IST, desktop Chrome: two restored kayg@monitor01 windows show 'Session ended · + New shell · ×'. Clicking New shell does nothing; the strip moves away when the pointer approaches. Top pill says 0 sessions. On monitor01 no shells for uid 1001 exist (22 root shells alive), so 'ended' is correct. Fix on release-prod-4 (batch 4 reworks this strip, #168) — job: designer, branch ended-strip-fix.
Author
Owner

Finding (reproduced on origin/release-prod-3w 4855e033 and origin/release-prod-4 61bdbd9f, production build, test double, two restored windows on ended sessions):

Both symptoms have one root cause, in the web strip, not the server.

  • The ended strip is centred with transform: translate(-50%, -50%) (sessions.css), and it also carries the shared .ui-pill class. .ui-pill:active:not(:disabled) { transform: scale(var(--ui-press-scale)) } (packages/ui/styles.css) matches the strip whenever any child (the button, the text) is pressed, and it REPLACES the centring transform.
  • Measured: at rest the strip is x=335.9 y=472 w=297 h=38; 200 ms after pointerdown on New shell it is x=489.0 y=491.6 w=288 h=36.9. It jumps about 153 px right and 19 px down, out from under the pointer, on every press (the pill's 140 ms transform transition makes it glide). That is "the toast avoids my cursor": it dodges at the moment of pressing, not on hover (hover keeps the bounding box identical across 40 pointermove events).
  • Pointerdown lands on the button, the strip then moves away, pointerup lands elsewhere, so the browser fires no click on the button: "New shell does nothing". A very quick tap that releases before the transform applies still works, which is why it is flaky. The same defect hit the bottom "Run again" strip (translateX(-50%)); on touch the strip uses transform: none, so phones were not affected.
  • Server side is fine: the double answers the attach for a gone session with Close(session ended) and a later open succeeds; no Rust change needed. 3w and release-prod-4 do not differ here (no CSS or strip code in the diff between them).

Fix (branch ended-strip-fix): the strip is placed with auto margins (no transform), neither it nor its hover state changes, only its buttons press. New shell reports a refusal in the strip with the reason and a Try again; Enter on the focused ended window starts the new shell. Spec: apps/tracer/test/ended-strip.spec.ts (fails on 3w with "the strip moved while pressed").

Head: 361fc7ff on origin/ended-strip-fix (base 61bdbd9f). Gate: bun run check clean; bun test src 163 pass; transfer-budget exit 0; ended-strip spec 4/4; sessions-canvas and dead-session flake under host load 40-75 (the same tests fail on the unmodified base 61bdbd9f; the dead-session sidebar-count test fails on 61bdbd9f itself).

Finding (reproduced on origin/release-prod-3w 4855e033 and origin/release-prod-4 61bdbd9f, production build, test double, two restored windows on ended sessions): Both symptoms have one root cause, in the web strip, not the server. - The ended strip is centred with `transform: translate(-50%, -50%)` (sessions.css), and it also carries the shared `.ui-pill` class. `.ui-pill:active:not(:disabled) { transform: scale(var(--ui-press-scale)) }` (packages/ui/styles.css) matches the strip whenever any child (the button, the text) is pressed, and it REPLACES the centring transform. - Measured: at rest the strip is x=335.9 y=472 w=297 h=38; 200 ms after pointerdown on New shell it is x=489.0 y=491.6 w=288 h=36.9. It jumps about 153 px right and 19 px down, out from under the pointer, on every press (the pill's 140 ms transform transition makes it glide). That is "the toast avoids my cursor": it dodges at the moment of pressing, not on hover (hover keeps the bounding box identical across 40 pointermove events). - Pointerdown lands on the button, the strip then moves away, pointerup lands elsewhere, so the browser fires no click on the button: "New shell does nothing". A very quick tap that releases before the transform applies still works, which is why it is flaky. The same defect hit the bottom "Run again" strip (translateX(-50%)); on touch the strip uses `transform: none`, so phones were not affected. - Server side is fine: the double answers the attach for a gone session with Close(session ended) and a later open succeeds; no Rust change needed. 3w and release-prod-4 do not differ here (no CSS or strip code in the diff between them). Fix (branch ended-strip-fix): the strip is placed with auto margins (no transform), neither it nor its hover state changes, only its buttons press. New shell reports a refusal in the strip with the reason and a Try again; Enter on the focused ended window starts the new shell. Spec: apps/tracer/test/ended-strip.spec.ts (fails on 3w with "the strip moved while pressed"). Head: 361fc7ff on origin/ended-strip-fix (base 61bdbd9f). Gate: bun run check clean; bun test src 163 pass; transfer-budget exit 0; ended-strip spec 4/4; sessions-canvas and dead-session flake under host load 40-75 (the same tests fail on the unmodified base 61bdbd9f; the dead-session sidebar-count test fails on 61bdbd9f itself).
Author
Owner

Orchestrator: DEPLOYED web-only to production (no restart; server start time unchanged 09:13:06 UTC): release-prod-4 @ 4d1b1950 = 3aec316e + ended-strip-fix. Root cause: .ui-pill:active replaced the strip centring transform, the strip jumped ~153 px on press, pointerup landed off the button so no click fired. Strip spec 4/4, tsc clean, bun test src 163 pass, transfer budget pass.

Orchestrator: DEPLOYED web-only to production (no restart; server start time unchanged 09:13:06 UTC): release-prod-4 @ 4d1b1950 = 3aec316e + ended-strip-fix. Root cause: .ui-pill:active replaced the strip centring transform, the strip jumped ~153 px on press, pointerup landed off the button so no click fired. Strip spec 4/4, tsc clean, bun test src 163 pass, transfer budget pass.
Author
Owner

Closed by the orchestrator during the 2026-10-28 handover (#254), on the owner's request to close finished issues. Evidence: Ended-strip fix (361fc7ff) is in dev and release-prod-live; deployed as 4d1b1950. Reopen if anything is still missing.

Closed by the orchestrator during the 2026-10-28 handover (#254), on the owner's request to close finished issues. Evidence: Ended-strip fix (361fc7ff) is in dev and release-prod-live; deployed as 4d1b1950. Reopen if anything is still missing.
kayg closed this issue 2026-10-28 17:53:06 +00:00
Sign in to join this conversation.
No labels
launch-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/infraternal#185
No description provided.