Skip to content

Complete operational UI/UX refactor - #1

Draft
heureuxchaquejour wants to merge 5 commits into
masterfrom
codex/ui-ux-complete-refactor
Draft

heureuxchaquejour wants to merge 5 commits into
masterfrom
codex/ui-ux-complete-refactor

Conversation

@heureuxchaquejour

@heureuxchaquejour heureuxchaquejour commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

Why

Setu's main workflows had inconsistent status language, browser-native prompts, weak mobile behavior, and no role-specific operational queue. This refactor keeps the Apps Script + Google Sheets foundation while making daily livestream operations faster, safer, and easier to audit.

Offline capability is intentionally out of scope. Neither Setu nor AppSheet offline use is required.

User impact

  • Role-aware Home action queue links directly to filtered equipment, program, return, and ticket workbenches.
  • Structured dialogs replace browser prompts for approval, rejection, issue, return, assignment, close, and reopen actions.
  • Draft equipment requests can be saved, edited, and submitted.
  • Inventory date-range availability and program place/time conflicts are checked before submission and revalidated on approval.
  • Tickets now expose reporter, priority, place, timestamps, comments, and activity history while remaining compatible with historical rows.
  • Mobile navigation and forms are rebuilt; Roster uses a phone agenda while desktop keeps the month view.
  • Home settings and Roster presets are separated; the legacy settings URL still resolves safely.
  • Loading, empty, success, retry, duplicate-submit, keyboard, focus, touch-target, and WCAG AA behavior are covered.

Data migration

  • Append-only schema-v2 migration; existing columns are neither deleted nor moved.
  • backupAndMigrateSheets() creates a whole-file backup first.
  • New Ticket fields: ReporterId, CreatedAt, UpdatedAt, Priority, and PlaceId.
  • Comments remain related by TicketId.
  • Migration helpers are idempotent and unit-tested against legacy column prefixes.

Required pre-deploy gate

This repository intentionally has no local .clasp.json or spreadsheet credentials. Therefore the real backup-copy rehearsal has not been run from this checkout. Before production migration, run the migration twice on a backup target and record:

  1. before/after row counts,
  2. second-run no-op/idempotency,
  3. request, ticket, and comment relationship integrity,
  4. historical ticket rendering.

Keep this PR as Draft until that external rehearsal is recorded.

Rollback

Revert the application deployment to the previous Apps Script version. Keep appended columns in place; do not delete or reorder original business data. The backup created by the migration is the recovery source if data verification fails.

Verification

  • npm run format:check — passed
  • npm run typecheck — passed
  • npm run build — passed
  • npm run test:unit — 2 files / 9 tests passed
  • npm run test:ui — 37 passed, 7 viewport-specific skips, 0 failed
  • GitHub Actions validate — passed on commit 35db429
  • axe scans — no critical or serious findings on Home, Inventory, Program form, Ticket detail, Roster, or Home settings
  • Manual browser verification — desktop layout metrics, mobile return dialog, Escape focus restoration, and screenshot rendering inspected

Test evidence

Complete matrix and scenario metadata: docs/test-evidence/ui-ux-refactor/README.md

Admin Home

Admin Home

Mobile return dialog

Mobile return dialog

Mobile Roster agenda

Mobile Roster agenda

Known limitations

  • The real Google Sheets backup-copy two-pass migration rehearsal requires deployment credentials/target selection outside this checkout.
  • No offline cache, offline editing, background synchronization, or AppSheet offline compatibility is implemented or tested.

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.

1 participant