Add Sandcastle, remove WizardExtra, fix wizard height (#1405, #1436) - #1
Open
ArendPeter wants to merge 349 commits into
Open
Add Sandcastle, remove WizardExtra, fix wizard height (#1405, #1436)#1ArendPeter wants to merge 349 commits into
ArendPeter wants to merge 349 commits into
Conversation
…_yarn/multi-c6f6658ed3 Bump path-to-regexp and express
fix(security): prevent X-Forwarded-For IP spoofing
…commented out Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Corrected a comment typo regarding the return of roundResults.
…ults preview link, and fix layout/styling across components
…esults viewers regardless of vote count, and render DraftWarning and AdminResultControls independently
…ogic and simplify checkbox settings
… result visibility and election state labels
… improve election state labels
…_yarn/form-data-4.0.6 Bump form-data from 4.0.5 to 4.0.6
…_yarn/esbuild-0.28.1 Bump esbuild from 0.28.0 to 0.28.1
…_yarn/qs-6.15.2 Bump qs from 6.15.1 to 6.15.2
Moves the QA step into Phase 2 alongside implement/review, scoped to each issue's own branch, and posts results as a comment on the issue being worked instead of creating a separate QA issue at the end. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Reviewer now posts the QA summary/steps comment on the issue itself after finishing its review, removing the need for a separate QA sandbox run. Merging completed branches into main is now gated behind a --merge flag instead of running automatically every invocation. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Prevents an issue that already has a QA comment from being re-selected by future planning runs before it's merged. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Add Sandcastle AI agent workflow
Removes WizardExtra.tsx and the two-page sliding animation. Election creation via "Customize in editor" or multi-race "Next" now applies sensible defaults (open access, device-ID auth) and navigates directly to /admin/build_ballot. Key decisions: - onCustomize sets voter_access='open', voter_id=true, contact_email from authenticated user (or empty string if anonymous) - ConfirmationDialogProvider gains optional dismissable field: X button resolves the confirm promise with null; callers that omit it are unaffected (still get boolean) - MultiRaceTitleSection sub-component (defined in Wizard.tsx) reads/ writes election title and description via useElection; "Next" button disabled until title is non-empty - wizard.publish_confirm.cancel changed from "See more options" to "Customize in editor" - Old template-picker tests removed; new tests cover Customize path, multi-race default auth, and dismiss-dialog-returns-to-page-1 Files changed: - packages/frontend/src/components/ElectionForm/Wizard/Wizard.tsx (rewritten) - packages/frontend/src/components/ElectionForm/Wizard/WizardExtra.tsx (deleted) - packages/frontend/src/components/ConfirmationDialogProvider.tsx - packages/frontend/src/i18n/en.yaml - testing/tests/create-election.spec.ts Notes: - E2E tests not runnable in this env (requires docker compose up); tsc and backend unit tests pass - TransitionBox animation removed; multi-race section appears/hides via conditional render instead Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Merge duplicate ElectionContextProvider imports into a single default+ named import, and drop the redundant `.length < 1` check on the already-falsy title guard. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Task: QA regression where the wizard started small and snapped tall as the user clicked through options (introduced by the WizardExtra removal in Equal-Vote#1405). Key decisions: - Replaced conditional rendering ({condition && <Component/>}) with TransitionBox wrappers so both RaceForm and MultiRaceTitleSection are always in the layout (only visibility/opacity changes) - RaceForm uses a non-absolute TransitionBox so it holds space and keeps the wizard at its maximum height from the start - MultiRaceTitleSection uses absolute={true} so it overlays the RaceForm without adding extra height (matching the old two-page layout approach) - Added a Playwright regression test that asserts the wizard height before race-type selection is within 80% of the height after selecting "Just one" (single race) Files changed: - packages/frontend/src/components/ElectionForm/Wizard/Wizard.tsx - testing/tests/create-election.spec.ts Notes: - E2E tests require docker compose up; tsc errors in wizard files are pre-existing (unbuilt shared module), not introduced here Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Reword the inline comments to describe why each measurement/assertion exists (regression-guard for the snap-taller behavior) instead of narrating what the next line does. Also drop the misleading "Scroll to wizard" comment — the click on Create Election is what brings it into view. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The wizard now keeps both branches mounted for height consistency, so multiple "Next" buttons exist in the DOM at once — scope clicks with .first() to avoid strict-mode violations. full-runthrough.spec.ts was also stale from before wizard page 2 was removed: it filled the title after the (now disabled-until-filled) Next click and expected an intermediate voter-restriction page that no longer exists; updated it to match the new direct-to-build_ballot flow with device-ID auth applied by default. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ArendPeter
force-pushed
the
sandcastle/issue-1436
branch
from
July 15, 2026 19:36
8b6b9c2 to
e36eca2
Compare
…ibutionOfEqualSupportGraph Fix Distribution of Equal Support graph dropping skipped-candidate ballots
…ing-fix Fix CSV ballot export: escape fields and download directly via Blob
…mballots Stream anonymizedBallots from a DB cursor in random order
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.sandcastle/) with plan, implement, review, QA, and merge phasesWizardExtra.tsxand the two-page sliding animation; "Customize in editor" and multi-race "Next" now apply sensible defaults and navigate directly to/admin/build_ballotTransitionBoxwrappers so the wizard renders at its maximum height from the start, eliminating the snap-taller regression introduced by Remove wizard page 2 (WizardExtra) Equal-Vote/bettervoting#1405Test plan
docker compose upand open the election creation wizard/admin/build_ballotwith sensible defaults (open access, device-ID auth)cd testing && npx playwright test tests/create-election.spec.ts --reporter=listConfirmationDialogProviderdismissable (X button) works in dialogs that opt in🤖 Generated with Claude Code