Describe the bug
Confirming one optimistic-store action while another is still pending can hold a later, independent signal update. A memo combines the signal with a card ID that neither action changes:
const condition = createMemo(() => drag() === cards[0].id);
After the first action confirms and updates the authoritative store, a later task calls setDrag("0"). The second action remains open. latest(drag) becomes "0", but drag() stays unset and isPending(drag) is true.
Your Example Website or App
https://s.olid.uk/id/NBFwGIwhSsasiGpLj_HX7g
Steps to Reproduce the Bug or Issue
- Open the playground, click Build, then Run reproduction.
- Observe
drag: unset, latest: 0, and pending: true.
The button starts two optimistic moves, confirms the first while the second is pending, awaits a timer to separate the drag write into a later task, then sets drag. No explicit flush() is used.
Expected behavior
The independent signal update should publish: drag: 0 and pending: false, while the second move remains pending.
Platform
- OS: Linux
- Browser: Chromium 153.0.8010.12
- Solid:
mizulu/solid2@6958367 preview build (compiler and runtime)
Additional context
The earlier repros in #3688 and #3698 pass with this build. Controls also publish the drag update when only one move is open, when both moves stay open, or when the first settles before the second starts. The distinguishing sequence is confirming the first move after the second has started but before it settles.
Describe the bug
Confirming one optimistic-store action while another is still pending can hold a later, independent signal update. A memo combines the signal with a card ID that neither action changes:
After the first action confirms and updates the authoritative store, a later task calls
setDrag("0"). The second action remains open.latest(drag)becomes"0", butdrag()stays unset andisPending(drag)istrue.Your Example Website or App
https://s.olid.uk/id/NBFwGIwhSsasiGpLj_HX7g
Steps to Reproduce the Bug or Issue
drag: unset,latest: 0, andpending: true.The button starts two optimistic moves, confirms the first while the second is pending, awaits a timer to separate the drag write into a later task, then sets
drag. No explicitflush()is used.Expected behavior
The independent signal update should publish:
drag: 0andpending: false, while the second move remains pending.Platform
mizulu/solid2@6958367preview build (compiler and runtime)Additional context
The earlier repros in #3688 and #3698 pass with this build. Controls also publish the drag update when only one move is open, when both moves stay open, or when the first settles before the second starts. The distinguishing sequence is confirming the first move after the second has started but before it settles.