Reset or Show pressed while the task cube is turning does not stick

Geschlossen
#558 0 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

@YEH-YU-YANG arbeitet bereits daran.

Seit 30.10.2026.

  • #560 von @YEH-YU-YANG — gemerged

Bewertung

Dieses Issue wurde noch nicht bewertet.

Beschreibung

Observed behavior

In a task that names the cube explainer, such as the default rubik task, Reset and Show do not hold when they are pressed while a turn is still swinging. The cube first shows the solved cube or the typed position, and then the turns still queued land on it. Applying R U R' U' and pressing Reset during the first turn ends on 21375642212111 with "Moves so far: R U R' U'" instead of the solved 12345671111111. Showing 21653471111312 the same way ends on 12673452213311, a different position from the one typed. docs/task-mode.md says a code typed from the public cases changes all three views, so a learner checking a public case against the cube is shown the wrong position.

Expected behavior

Reset ends on the solved cube and Show on the typed position, whatever was still turning; the turns asked for before either button is pressed are dropped.

Reproduction
  1. Open a task that names the cube explainer and start the attempt, so the cube is shown.
  2. Type R U R' U' into the cube's algorithm box and press Apply.
  3. While the first turn is still swinging (each turn takes about a quarter of a second), press Reset.
  4. Wait a second: the cube turns again, the history reads "Moves so far: R U R' U'", and the code reads 21375642212111.
  5. Repeat with 21653471111312 typed into the position box and Show pressed in step 3: the code ends on 12673452213311.

I ran these steps in Chromium on the task page as tests/browser/task-workspace.test.js serves it, with that file's stub task agent, camera and face detector; the cube is the page's own web/cube-view.js.

CodeTrial version

cargo run -- --version does not build here: the webrtc-sys C++ build fails with this machine's toolchain. The page comes from a checkout of main at 3bbbcf5 (3bbbcf5d924bfb22ececc82ca2543d71f810b225).

Environment

OS: Ubuntu 24.04.3 LTS
Browser: Chromium 156.0.8078.4 (the Playwright build)
Language: not applicable
Interview loop: task mode, the default rubik task
Problem: not applicable
REACTO or STAR step: not applicable
Reconnect: not applicable

Sanitized evidence

The task cube on main: R U R' U' applied, Reset pressed during the first turn, and two seconds later the cube has turned again and reads "Moves so far: R U R' U'"

run() queues each turn on busy and applies it after await swing(move) to whatever state is current by then (web/cube-view.js L390-L407). The Reset handler (L257-L262) and the Show handler (L304-L314) assign state and history at once, and neither cancels nor waits for the turns still queued, so those land on the replacement cube. The cube's state stays in the page; nothing is sent to the runtime, Jim or the review.

A fix that drops the turns asked for before a Reset or Show, with a browser test that fails on main, follows as a pull request.

Public data confirmation
  • I removed credentials, session tokens, candidate recordings, and personal interview content from this public report.
Vorherrschende Sprache
Rust
Sterne
215
Forks
141
Ø Merge
1 T. 12 Std.
Gemergte PRs (30 T.)
230

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus sysprog21/codetrial

Alle Issues in sysprog21/codetrial

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.