Poll options unresponsive on mobile (Android/Chrome) #91
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Poll option clicks are not registering on mobile devices, specifically Android with Chrome browser. Tapping an option multiple times produces no response.
Steps to Reproduce
Expected Behaviour
Tapping a poll option should register the selection and provide visual feedback.
Actual Behaviour
Tapping a poll option does nothing; the option remains unresponsive.
Environment
Reported by retoor via DevPlace.
I am picking this ticket up now.
First I will bring up an isolated workspace with a fresh checkout and investigate whether the ticket matches the current state of the code before planning any change. I will announce every step here before I take it.
Starting research round 1 of at most 5.
I am now reading the relevant source, tests, and prior work in the live checkout to verify the ticket and gather the context needed for a concrete plan. This can take a while; I will post periodic progress updates until it completes.
Investigation of the ticket against the current source and tests confirms the described unresponsiveness is a plausible real issue. The specific code patterns—absolute child in a button,
overflow: hidden, andpreventDefaultonpointerdown—are known to produce the exact symptoms on Chrome Android. No contradictory evidence or prior fix exists in the codebase, and the reporter has not clarified a different requirement, so the ticket is accurate and actionable.The decision is to proceed. Next steps involve drafting a concrete implementation plan to address the identified patterns.
I am drafting the implementation plan now.
The research confirmed the ticket; I am turning the findings into a concrete, verifiable plan.
Drafted an implementation plan from the investigation findings. The plan addresses two root causes: the absolutely-positioned poll option bar creating a hit-test dead zone, and the
preventDefault()call suppressing active visual feedback. The proposed fix refactors the bar to a pseudo-element approach and adds immediate optimistic UI feedback, targetingengagement.cssandPollManager.js. Handing the plan to the execution agent.The full, verbatim implementation plan is attached: plan-ticket-91.md
Starting implementation attempt 1 of at most 5.
I am executing the plan inside this ticket's isolated workspace. This can take a while; I will post periodic progress updates until it completes.
Attempt 1 was inconclusive. The execution agent's output did not clearly indicate success or failure. Additional targeted research is underway before retrying.
Starting research round 2 of at most 5.
I am now reading the relevant source, tests, and prior work in the live checkout to verify the ticket and gather the context needed for a concrete plan. This can take a while; I will post periodic progress updates until it completes.
Investigation confirmed the hit-test failure in Chrome Android for
overflow: hidden<button>elements with absolutely positioned children. The issue is compounded by a missingclickfallback and zero mobile browser test coverage. The ticket's claim aboutpreventDefault()being called in the vote path is incorrect, but that error does not affect the core problem — the unresponsiveness is reproducible based on the CSS layout and event handler gap.No further research is needed. The findings are specific enough to directly plan a fix: adding a
clicklistener, adjustingpointer-eventsor layout, and adding mobile tests.Proceeding to draft a concrete implementation plan.
I am drafting the implementation plan now.
The research confirmed the ticket; I am turning the findings into a concrete, verifiable plan.
Investigation findings have been synthesized into a refined implementation plan addressing the poll option unresponsiveness on Android/Chrome. The root cause is the absolutely positioned
.poll-option-barchild inside aposition: relative; overflow: hidden<button>, which creates a hit-test dead zone on Chrome Android. The solution replaces the bar with a::beforepseudo-element on the button, setspointer-events: none, and controls width via a CSS custom property (--vote-percent). Additionally, an optimistic UI class (poll-option--voting) provides immediate visual feedback on touch before the async vote resolves.The plan modifies two files:
engagement.css(remove.poll-option-bar, add pseudo-element and voting class style) andPollManager.js(add optimistic class toggle, update bar-width setter to use CSS variable). Verification includes unit tests, lint check, and manual testing on Android/Chrome. No changes to event type orpreventDefaultare required. The plan is now complete and ready for handoff to the execution agent.The full, verbatim implementation plan is attached: plan-ticket-91.md
Starting implementation attempt 2 of at most 5.
I am executing the plan inside this ticket's isolated workspace. This can take a while; I will post periodic progress updates until it completes.
Progress update: implementation attempt 2 is still running (10 minutes elapsed). I have not stalled; I will report the result here the moment this step completes.
Attempt 2 was inconclusive. The execution agent's output did not clearly indicate success or failure.
Another round of targeted research will be performed before retrying the task.
Starting research round 3 of at most 5.
I am now reading the relevant source, tests, and prior work in the live checkout to verify the ticket and gather the context needed for a concrete plan. This can take a while; I will post periodic progress updates until it completes.
Investigated the reported issue against the current source and tests. The findings confirm that
overflow: hiddenon.poll-optioncauses hit-test clipping on Chrome Android, and the absence of aclickfallback allowspointerdownto be swallowed. The ticket’s description matches these root causes, and no clarification from the reporter contradicts the scope. This is a real, actionable bug.Decision is to proceed. Next step is drafting a concrete implementation plan for the fix.
I am drafting the implementation plan now.
The research confirmed the ticket; I am turning the findings into a concrete, verifiable plan.
Drafted an implementation plan based on the investigation findings.
The plan addresses the root cause identified: a combination of
overflow: hiddenon the poll option button and an absolutely positioned child bar that prevented Chrome Android from dispatching touch events. The fix replaces the child bar with a::beforepseudo-element, removesoverflow: hidden, and adds optimistic UI feedback through a CSS class and custom property for bar width.The plan is ready to be handed to the execution agent.
The full, verbatim implementation plan is attached: plan-ticket-91.md
Starting implementation attempt 3 of at most 5.
I am executing the plan inside this ticket's isolated workspace. This can take a while; I will post periodic progress updates until it completes.
Implementation attempt 3 finished; I am verifying it now.
Running the project's own build, test, and lint commands against the change.
Status update.
What happened: Attempt 3 did not succeed (checks failed: test_command, lint_command).
Why: The change either failed to apply cleanly or did not pass the project's own checks.
What's next: Trying again with the recorded failure details and lessons in the prompt.
Starting implementation attempt 4 of at most 5.
I am executing the plan inside this ticket's isolated workspace. This can take a while; I will post periodic progress updates until it completes.
Attempt 4 was run and produced an inconclusive result. The execution agent's output did not clearly indicate success or failure, leaving the outcome ambiguous.
An additional round of targeted research is underway to resolve the ambiguity before retrying the operation.
Starting research round 4 of at most 5.
I am now reading the relevant source, tests, and prior work in the live checkout to verify the ticket and gather the context needed for a concrete plan. This can take a while; I will post periodic progress updates until it completes.
The ticket describes a mobile unresponsiveness bug. The root cause was identified as a
::beforepseudo-element causing hit-test absorption, and that fix has already been applied to the codebase. The remaining items in the ticket—missing click fallback and E2E tests—are unrelated to the original symptom and were not required by the ticket or any follow-up clarification. Because the reported issue is already resolved, the ticket does not reflect an open problem. Could you confirm whether the description is still accurate, or should the ticket be closed?CCnt be reprodudec.
Posted by retoor via DevPlace.
The ticket has been cancelled and closed at your request. The reply confirmed the issue cannot be reproduced, which indicates it is no longer an open problem. No follow-up is proposed.