* docs(work-orders): add pending BE contract checklist for design parity gaps
* feat(work-orders): confirm dialog when duplicate wo number detected
* fix(work-orders): show duplicate wo number dialog on wizard create
* docs(work-orders): align pr description with jira and qa residuals
* style(work-orders): prettier wizard duplicate dialog files
* refactor(workorders): extract wizard state hook and list overlays
* fix(work-orders): check duplicate numbers globally
* fix(work-orders): exhaust fuzzy pages for exact WO number lookup
Prevent accepting duplicates that fall outside the first fuzzy search page.
* style(work-orders): format editable WO number cell for Prettier gate
* fix(work-orders): 0-based WO search page and stale duplicate guard
* fix(work-orders): sync draft WO# ref in effect for duplicate guard [SH-189]
* fix(work-orders): extract WO number editor under max-lines gate
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(work-orders): harden duplicate WO number checks [SH-189]
* fix(work-orders): sync wizard refs in effects and exhaust duplicate WO lookup
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(work-orders): extract hooks to satisfy max-lines governance gate
Co-authored-by: Cursor <cursoragent@cursor.com>
* style(work-orders): format wizard state hook for Prettier gate
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(work-orders): search one-character WO numbers for duplicates
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
Sync with latest dev (CompDoc/completedDate from PR #45) and resolve
conflicts while preserving slide-over detail, workOrderVersion on media
mutations, and the consolidated list page hook.
Restore vendors, e2e, and page-header to origin/dev so this PR stays an uplift-only vertical slice and clears the VendorFiltersDrawer maintainability gate.
* docs(work-orders): add pending BE contract checklist for design parity gaps
* feat(work-orders): add mentions in work-order comments composer
* docs(work-orders): align pr description with jira and qa residuals
* refactor(workorders): split work order view page into view components
* fix(work-orders): export comment assignment vendor input types for view hook
* fix(work-orders): drop preferredContact from vendor update payload
Align with WorkOrderVendorUpdatePayload on current dev so the mentions branch typechecks.
* fix(work-orders): remove Preferred Contact from WO vendor editor (SH-180)
EOF
* fix(work-orders): harden comment mentions and clear draft on success
* fix(work-orders): harden mention highlight boundary and submit catch [SH-217]
* fix(work-orders): keep mention cursor sync on current value [SH-217]
* fix(work-orders): keep mention menu open after typing @
Pass live text into syncCursor instead of a render-time valueRef.
Add a composer interaction regression for @ autocomplete visibility.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Alexandre Brandizzi <alex_brandizzi@hotmail.com>
* docs(work-orders): add pending BE contract checklist for design parity gaps
* feat(work-orders): add technician affordance in wo vendor dialog
* fix(work-orders): defer technician create until vendor dialog save
* docs(work-orders): align pr description with jira and qa residuals
* fix(vendors): harden draft technician optional field typing
* refactor(workorders): extract vendor dialog body footer and save hook
* fix(work-orders): coerce null company vendor for add-technician prop
* fix(work-orders): preserve draft technician staging on save [SH-193]
* fix(work-orders): select technicians by stable id [SH-193]
Keep selectedKey as explicit dialog state (SiteDialog pattern) so same-name drafts do not collide with existing vendors, and cover the regression with interaction tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Alexandre Brandizzi <alex_brandizzi@hotmail.com>
Restore vendors and page-header to origin/dev so this PR stays the WO
slide-over/media slice only. Remove stale godfile baseline entries now
under the 500-line cap.
* feat(work-orders): align Due Date and Past Due with SH-132 FE contract [SH-132]
* fix(work-orders): highlight Schedule On for unscheduled rows
Restore forceScheduleHighlight for Unscheduled section rows while keeping Due Date highlight for past-due and attempt feedback.
Co-authored-by: Cursor <cursoragent@cursor.com>
* test(work-orders): cover unscheduled Schedule On highlight [SH-132]
Add row-level public-interface regression proving Unscheduled rows force-highlight Schedule On, not Due Date (SH-165).
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Alexandre Brandizzi <alex_brandizzi@hotmail.com>
mapUpliftSummary no longer treats row status as uplift primaryStatus, getUpliftCellLabel hides pills without hasUplift, and vendor submit filters blank new technicians.
Omit empty new technician rows on save and route Active to Inactive through VendorDeactivationDialog, blocking sparse isActive:false updates.
Co-authored-by: Cursor <cursoragent@cursor.com>