Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

3.8 KiB

Scratchpad — Bulk move tickets to a new board

  • Plan slug: bulk-move-tickets-to-new-board
  • Created: 2026-03-15

What This Is

Keep a lightweight, continuously-updated log of discoveries and decisions made while implementing this plan.

Prefer short bullets. Append new entries as you learn things, and also update earlier notes when a decision changes or an open question is resolved.

Decisions

  • (2026-03-15) Bulk move will use partial-success reporting identical in spirit to bulk delete so one invalid ticket does not block the entire selection.
  • (2026-03-15) Destination statuses in the dialog must be limited to statuses valid for the selected destination board, and the board's default status will be preselected.
  • (2026-03-15) Moving a ticket to a new board must clear category_id and subcategory_id to match existing single-ticket board-change behavior.
  • (2026-03-15) The dependency branch feature/board-specific-statuses was merged before planning so this work is based on board-owned ticket statuses.

Discoveries / Constraints

  • (2026-03-15) Existing bulk ticket actions live in packages/tickets/src/components/TicketingDashboard.tsx; bulk delete already has the desired partial-success UX shape.
  • (2026-03-15) Existing dashboard selection is page-based. This plan assumes bulk move acts on the currently selected tickets without changing selection semantics.
  • (2026-03-15) feature/board-specific-statuses changed status ownership, validation, APIs, migrations, and ticket UI behavior; bulk move should reuse that validation rather than invent its own board/status rules.
  • (2026-03-15) Likely server-side implementation points are packages/tickets/src/actions/ticketActions.ts and/or packages/tickets/src/actions/optimizedTicketActions.ts, depending on which path best preserves existing ticket update semantics.

Commands / Runbooks

  • (2026-03-15) Merge dependency branch: git merge feature/board-specific-statuses
  • (2026-03-15) Scaffold ALGA plan: python3 /Users/roberisaacs/.codex/skills/alga-plan/scripts/scaffold_plan.py "Bulk move tickets to a new board" --slug bulk-move-tickets-to-new-board
  • (2026-03-15) Relevant dashboard bulk-action source: packages/tickets/src/components/TicketingDashboard.tsx
  • (2026-03-15) Relevant ticket action source: packages/tickets/src/actions/ticketActions.ts
  • PRD: ee/docs/plans/2026-03-15-bulk-move-tickets-to-new-board/PRD.md
  • Bulk dashboard UI: packages/tickets/src/components/TicketingDashboard.tsx
  • Ticket action layer: packages/tickets/src/actions/ticketActions.ts
  • Optimized ticket update path: packages/tickets/src/actions/optimizedTicketActions.ts
  • Ticket detail board/status behavior: packages/tickets/src/components/ticket/TicketInfo.tsx
  • Board-scoped status branch artifacts now merged into this branch.

Open Questions

  • None currently.

Iteration Notes

  • (2026-03-15) Completed Move to Board header action visibility gating so bulk move is rendered only when hasSelection && canUpdateTickets.
  • (2026-03-15) Completed bulk-move dialog integration in TicketingDashboard.tsx:
    • Destination board/status loading and default preselect logic.
    • Confirm handler with per-ticket partial-success handling and refresh/selection behavior.
    • Close handler/state reset behavior.
  • (2026-03-15) Added moveTicketsToBoard action coverage in packages/tickets/src/actions/ticketActions.moveToBoard.test.ts for default status, override status, invalid status rejection, partial success, and permission failure behavior.
  • (2026-03-15) Added component contract coverage in packages/tickets/src/components/TicketingDashboard.moveBulk.contract.test.ts for all bulk move UI acceptance points plus non-regression bulk-delete checks.
  • (2026-03-15) Marked all plan features.json and tests.json items as implemented and prepared for checkpoint commit.