Cycle project selector hides persisted selections and can discard defaults #93

Closed
opened 2026-10-14 20:49:15 +08:00 by Breadway · 1 comment
Owner

How found: independent PR90 review at 49f72305ba, reproduced with real built-SPA Chromium against isolated local server. Confidence: high. Root cause confirmed deeper than first fix attempt: plain value={...} on a multi-select does not re-apply after user interaction, so per-option selected={...} also failed to roll back. Final repair in PR90 commit ecdc070: existing-cycle selector now uses bind:value={c.project_ids} (numeric ids, same pattern as the working new-cycle selector) and updateCycleProjects reloads Settings on both success and rejection. Committed apps/web/tests/cycle-defaults.browser.mjs covers initial display, additive edit, reload, clear, and forced 400 PATCH rollback, each asserting DOM selection and persisted GET /api/cycles state. Old build evidence: same script against pre-fix build fails at step 1 with actual [] vs expected [ALPHA]. New build evidence: cycle defaults browser regressions: passed on final dist. No separate PR created.

How found: independent PR90 review at 49f72305ba04e0694e472a03fc80949252921a59, reproduced with real built-SPA Chromium against isolated local server. Confidence: high. Root cause confirmed deeper than first fix attempt: plain value={...} on a multi-select does not re-apply after user interaction, so per-option selected={...} also failed to roll back. Final repair in PR90 commit ecdc070: existing-cycle selector now uses bind:value={c.project_ids} (numeric ids, same pattern as the working new-cycle selector) and updateCycleProjects reloads Settings on both success and rejection. Committed apps/web/tests/cycle-defaults.browser.mjs covers initial display, additive edit, reload, clear, and forced 400 PATCH rollback, each asserting DOM selection and persisted GET /api/cycles state. Old build evidence: same script against pre-fix build fails at step 1 with actual [] vs expected [ALPHA]. New build evidence: cycle defaults browser regressions: passed on final dist. No separate PR created.
Author
Owner

BB-106 fix verified genuinely, merged with PR90. Old failure reproduced: new browser suite against a 49f7230 build fails step 1 with actual [] vs expected [ALPHA] (persisted selection hidden). Same suite against the ecdc070 build passes all 5 scenarios (initial render, additive edit, reload persistence, forced-400 rollback, clear): cycle defaults browser regressions: passed. Repair: bind:value with numeric ids plus reload on rejection. Merge f02d977b1b. Full evidence in PR90 issuecomment-5083. Leaving status for coordinator verification; not marking done.

BB-106 fix verified genuinely, merged with PR90. Old failure reproduced: new browser suite against a 49f7230 build fails step 1 with actual [] vs expected [ALPHA] (persisted selection hidden). Same suite against the ecdc070 build passes all 5 scenarios (initial render, additive edit, reload persistence, forced-400 rollback, clear): cycle defaults browser regressions: passed. Repair: bind:value with numeric ids plus reload on rejection. Merge f02d977b1b3e3502b1c97bac5071944330b38edb. Full evidence in PR90 issuecomment-5083. Leaving status for coordinator verification; not marking done.
Sign in to join this conversation.
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
Breadway/breadboard#93
No description provided.