-
Notifications
You must be signed in to change notification settings - Fork 0
feat: Implement comprehensive issue status redesign system #735
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
- Created _issue-status-redesign/ directory with complete implementation guide - Finalized 11 status values (down from 14): removed Unconfirmed, Diagnosing, Diagnosed, Parts Ordered - Added 'Waiting on Owner' status to In Progress group - Included visual mockups, code examples, and verification checklist - Clarified field permissions and public report form behavior - Noted future color distinction improvements needed for non-status fields - Preserved all mockup code for implementation reference
Implements a 4-field metadata system for issues: - Status: 11 values in 3 groups (New, In Progress, Closed) - Severity: Cosmetic, Minor, Major, Unplayable (player-centric) - Priority: Low, Medium, High (member/admin only) - Consistency: Intermittent, Frequent, Constant BREAKING CHANGE: Database schema changes require reset for preview/staging. Consolidates migrations 0001-0006 into 0000_init-schema for clean V2 launch. Key changes: - New IssueBadgeGrid component with 3 variants (mini/half/normal) - Updated all forms with ARIA labels for accessibility - Enhanced public report form with severity/consistency fields - Comprehensive test coverage (37/40 E2E tests passing) - Removed PreBetaBanner and StatusIndicator components - Updated seed data with realistic status progression examples Test results: All unit/integration tests pass, smoke tests pass, 92.5% E2E pass rate (3 Mobile Chrome timing issues remaining).
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR implements a comprehensive 4-field metadata system for issues, replacing the single "status" field with Status (11 values), Severity (4 values), Priority (3 values), and Consistency (3 values). The changes include database schema updates, consolidated migrations, new type definitions, updated UI components with accessibility improvements, comprehensive test coverage, and E2E test updates.
Key changes:
- Consolidated 7 migrations into a single init schema for cleaner V2 launch
- Replaced old severity taxonomy (minor/playable/unplayable) with player-centric taxonomy (cosmetic/minor/major/unplayable)
- Added new Consistency field to track issue frequency
- Created new
IssueBadgeGridcomponent with full ARIA accessibility - Updated all forms, actions, services, and queries to support new fields
- Comprehensive test coverage with new integration tests and E2E workflows
Reviewed changes
Copilot reviewed 71 out of 77 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
src/server/db/schema.ts |
Added consistency field, updated severity/priority defaults, renamed resolvedAt→closedAt |
src/lib/types/database.ts |
Added IssueConsistency type, updated Issue type with proper enum types |
src/lib/issues/status.ts |
Complete rewrite with 11 statuses, new label/icon/style functions |
src/services/issues.ts |
Added updateIssueConsistency, updated timeline labels to use human-readable names |
src/components/issues/IssueBadgeGrid.tsx |
New component with 4 variants (mini/half/normal/strip) and ARIA support |
src/app/report/unified-report-form.tsx |
Added consistency field with aria-labels, updated severity options |
supabase/seed-users.mjs |
Updated seed data with new status/severity/consistency values |
drizzle/meta/_journal.json |
Consolidated migrations from 7 to 1 entry |
e2e/smoke/status-overhaul.spec.ts |
New E2E test verifying 4-badge system and status updates |
| Test files (20+) | Updated all tests for new field values and renamed fields |
| }); | ||
|
|
||
| test.afterEach(async ({ request }) => { | ||
| if (createdIssueId) { |
Copilot
AI
Jan 8, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This use of variable 'createdIssueId' always evaluates to false.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 75 out of 81 changed files in this pull request and generated no new comments.
feat: Implement comprehensive issue status redesign system
Summary
Implements a comprehensive 4-field metadata system for issues, replacing the single "status" field with Status, Severity, Priority, and Consistency fields. This overhaul provides richer context for issue tracking and improves the user experience with vibrant, accessible badge components.
Key improvements:
Breaking Changes
Important
This PR requires a database reset for preview/staging environments. The migration consolidates 7 previous migrations into a single clean init schema.
Migration strategy:
0000_init-schema.sqlpnpm run db:resetor equivalentChanges by Category
1. Database Schema
New fields added to
issuestable:status- Enum with 11 values (default:"new")severity- Enum with 4 values (default:"minor")priority- Enum with 3 values (default:"medium")consistency- Enum with 3 values (default:"intermittent")Migration consolidation:
0001through0006into0000_init-schema.sqlFiles changed:
src/server/db/schema.tsdrizzle/0000_init-schema.sqldrizzle/meta/*src/test/setup/schema.sql2. Type System
New types added:
IssueStatus- 11 status valuesIssueStatusGroup- 3 groups (new, in_progress, closed)IssueSeverity- 4 severity levelsIssuePriority- 3 priority levelsIssueConsistency- 3 consistency levelsFiles changed:
src/lib/types/database.tssrc/lib/types/index.ts3. Components
New component:
IssueBadgeGrid.tsx- Grid-based badge display with 3 variants (mini, half, normal)Updated components:
IssueRow.tsx- Uses badge grid instead of status indicatorRecentIssuesPanel.tsx- Mini variant badgesIssueSidebar.tsx- Full 1x4 badge stripSidebarActions.tsx- Update forms for all 4 fieldsIssueFilters.tsx- Filter by all metadata fieldsDeleted components:
StatusIndicator.tsx- Replaced by badge gridPreBetaBanner.tsx- Removed (was already commented out)Files changed:
src/components/issues/*src/app/(app)/dashboard/page.tsxsrc/app/(app)/issues/page.tsxsrc/app/(app)/m/[initials]/page.tsxsrc/app/(app)/m/[initials]/i/[issueNumber]/page.tsx4. Forms & Actions
Public report form:
Update forms (issue detail page):
update-issue-status-form.tsx- Grouped<optgroup>for statusupdate-issue-severity-form.tsx- Severity dropdownupdate-issue-priority-form.tsx- Priority dropdown (members only)update-issue-consistency-form.tsx- NEW Consistency dropdownARIA accessibility:
aria-labelattributesFiles changed:
src/app/report/unified-report-form.tsxsrc/app/report/actions.tssrc/app/report/schemas.tssrc/app/report/validation.tssrc/app/(app)/issues/actions.tssrc/app/(app)/issues/schemas.tssrc/app/(app)/m/[initials]/i/[issueNumber]/update-issue-*-form.tsx5. Business Logic
Status utilities:
getIssueStatusGroup()- Determine status group (new/in_progress/closed)getIssueStatusIcon()- Icon component for statusgetIssueStatusLabel()- Display label for statusMachine status derivation:
getMachineStatus()to use new severity levelsFiles changed:
src/lib/issues/status.tssrc/lib/machines/status.tssrc/lib/timeline/events.ts6. Styling
New CSS variables:
Badge styling:
Files changed:
src/app/globals.csssrc/app/layout.tsx(removed PreBetaBanner)7. Test Coverage
Unit tests:
status.test.ts- Status utility functionsstatus.ts(machines) - Machine status derivationissue-schemas.test.ts- Schema validationpublic-issue-schema.test.ts- Public form validationfactories.ts- Test data factoriesIntegration tests:
dashboard.test.ts- Dashboard data fetchingmachines.test.ts- Machine status logicissues.test.ts- Issue CRUD operationsissue-services.test.ts- NEW - Service layer testsE2E tests:
issues-crud.spec.ts- Updated for new fieldsnavigation.spec.ts- Updated assertionspublic-reporting.spec.ts- Updated for severity/consistencyemail-notifications.spec.ts- Updated ARIA labelsnotifications.spec.ts- Updated ARIA labelsstatus-overhaul.spec.ts- NEW - Comprehensive status workflow testFiles changed:
src/test/**/*.test.tse2e/smoke/*.spec.tse2e/full/*.spec.ts8. Seed Data
Enhanced seed data:
seed-users.mjsto use new status/severity valuesFiles changed:
supabase/seed-users.mjs9. Documentation
Implementation guide:
_issue-status-redesign/README.md- Comprehensive specificationFiles changed:
_issue-status-redesign/README.md_issue-status-redesign/*.png(mockups)Files removed:
_issue-status-redesign/mockups/**(TypeScript mockup files - no longer needed)Testing
Test results:
Remaining E2E failures (3):
Verification:
Migration Guide
For preview/staging environments:
Reset database:
Verify migration:
pnpm run typecheck pnpm run test pnpm run test:integrationStart dev server:
For production (future work):
Screenshots
Related Issues
Closes #[ISSUE_NUMBER]
Checklist
pnpm run preflightpasses