Skip to content

Add results export choice modal#221

Merged
markboenigk merged 3 commits into
benevolentbandwidth:mainfrom
Gill87:codex/results-export-choice-overlay
Jul 9, 2026
Merged

Add results export choice modal#221
markboenigk merged 3 commits into
benevolentbandwidth:mainfrom
Gill87:codex/results-export-choice-overlay

Conversation

@Gill87

@Gill87 Gill87 commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Replace the Results page's standalone Send action with a single Export action that opens a choice modal.
  • Let users choose between the existing WhatsApp send flow and the existing JSON export flow.

Motivation

Changes

  • Frontend: add ExportMethodModal with inline SVG glyphs for WhatsApp and JSON export choices.
  • Frontend: route the Results page Export action through the new choice modal, then open SendRoutesModal or ExportRoutesModal.
  • Frontend: remove top-level Send buttons from desktop and mobile Results controls while keeping per-route export behavior unchanged.
  • Tests: add unit coverage for export method labels and Playwright coverage for the desktop/mobile export-choice flow.

Validation

Frontend

  • npm --prefix app/ui run lint
    • Passed with eslint --max-warnings=0.
  • npm --prefix app/ui run format:check
    • Passed: all matched files use Prettier style.
  • npm --prefix app/ui run typecheck
    • Passed with tsc --noEmit.
  • npm --prefix app/ui run test
    • Passed: 24 files, 115 tests.
  • npm --prefix app/ui run build
    • Not run; change is limited to client-side Results UI and was covered by typecheck, lint, unit tests, and targeted browser flow.
  • npm --prefix app/mobile run lint
    • Not run; mobile app is out of scope for this frontend web-only change.
  • npm --prefix app/mobile run typecheck
    • Not run; mobile app is out of scope for this frontend web-only change.
  • npx playwright test tests/e2e/optimize-flow.spec.ts -g "results export opens method choices before existing flows" --reporter=line
    • Passed: 1 Chromium test covering desktop and mobile-width Results controls.

Backend

  • cmake --preset dev
    • Not run; backend is out of scope.
  • .github/scripts/check-backend-static.sh build/dev
    • Not run; backend is out of scope.
  • cmake --build --preset dev --parallel
    • Not run; backend is out of scope.
  • ctest --preset dev --output-on-failure --no-tests=error -LE 'e2e|docker'
    • Not run; backend is out of scope.
  • docker compose -f deploy/compose/docker-compose.arm64.yml --env-file deploy/env/http-server.arm64.env config
    • Not run; backend/infrastructure is out of scope.

Risk

  • Low. The change is limited to Results page action wiring and reuses the existing WhatsApp and JSON modals.
  • Main risk is a UI regression in the new modal path; covered by targeted Playwright validation.

Rollout and Recovery

  • Roll out with the normal frontend deploy.
  • Recovery is to revert this PR, restoring separate Send and Export top-level actions.

High-Signal PR Checklist

  • The summary states the user-visible or operational outcome, not just file names.
  • The motivation explains why this change is needed now.
  • The change list separates frontend, backend, infrastructure, and documentation work where applicable.
  • Validation includes exact commands run, relevant output, and any checks intentionally skipped.
  • Risks, migrations, feature flags, and rollback steps are called out when relevant.
  • Screenshots or request/response examples are included for UI and API behavior changes.
    • Not included; targeted browser test covers the UI flow and no API behavior changed.

@markboenigk markboenigk merged commit 0817acb into benevolentbandwidth:main Jul 9, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants