Arthur Bassi
adc5a4b33e
fix(work-orders): use the saved work order type for uplift allowance
...
The create API uses the saved type, so an unsaved draft must not change the allowance.
2026-10-01 14:53:13 +00:00
Arthur Bassi
144fc0792c
fix(work-orders): keep in-flight uplift requests on the slide-over
...
Point notification deep links at the Uplifts tab and follow the unsaved
Info draft. Block close while an evidence scan is still running.
2026-10-01 14:53:13 +00:00
Arthur Bassi
9bcaadc555
fix(work-orders): open uplifts from the slide-over and send evidence (SH-388)
...
Dispatchers need the design surface from the column and the detail,
and an optional evidence file is sent only after the scan passes.
2026-10-01 14:52:45 +00:00
Alexandre Brandizzi
9fbc166d2f
Merge pull request #287 from Sea-Haven-Industries/fix/ab/sh413-services-registry-thr_9fpik7tdmw
...
Frontend checks / static (push) Waiting to run
Frontend checks / build (push) Waiting to run
Frontend checks / unit (push) Waiting to run
Frontend checks / Visual regression (push) Waiting to run
Frontend checks / browser-smoke (push) Waiting to run
Frontend checks / governance (push) Waiting to run
Frontend checks / ci-complete (push) Blocked by required conditions
Deploy Web / Resolve target (push) Waiting to run
Deploy Web / Deploy SPA to (push) Blocked by required conditions
SH-413: use registry Services in work-order assignment and filters
2026-10-01 00:05:14 +00:00
Alexandre Brandizzi
e5eed78fd2
fix(workorders): bind renamed service label to selected ID
2026-09-30 20:45:40 -03:00
Alexandre Brandizzi
bb8d56d334
fix(workorders): preserve service identity and recover missing links
2026-09-30 20:33:39 -03:00
Alexandre Brandizzi
5ee2f6f374
test(workorders): seed service registry in browser fixtures
2026-09-30 19:43:06 -03:00
Alexandre Brandizzi
7090f6fb04
style(workorders): format registry status component
2026-09-30 19:29:17 -03:00
Alexandre Brandizzi
3b58bceb3d
fix(workorders): preserve table and service drafts
2026-09-30 19:22:33 -03:00
Alexandre Brandizzi
48fc415d54
fix(workorders): guard service-linked type changes
2026-09-30 19:00:55 -03:00
Alexandre Brandizzi
d40d4eaffb
refactor(workorders): meet maintainability gate
2026-09-30 18:43:00 -03:00
Alexandre Brandizzi
ffbf60d16a
fix(workorders): complete service query wiring
2026-09-30 18:24:24 -03:00
Alexandre Brandizzi
64246db1f0
fix(workorders): surface service registry query states
2026-09-30 18:10:39 -03:00
Alexandre Brandizzi
4a7da7cbd5
fix(workorders): retain compatible inactive services
2026-09-30 17:51:31 -03:00
Alexandre Brandizzi
690820f0b9
fix(workorders): order service reassignment around type updates
2026-09-30 17:47:27 -03:00
Alexandre Brandizzi
e35bd2983e
fix(workorders): retain completed service snapshot labels
2026-09-30 17:16:41 -03:00
Alexandre Brandizzi
18fefef9a3
fix(workorders): preserve service history on slide-over saves
2026-09-30 17:14:10 -03:00
Alexandre Brandizzi
24107ee3b2
fix(workorders): match renamed service filter aliases
2026-09-30 17:04:44 -03:00
Alexandre Brandizzi
315a26c07d
fix(workorders): use service registry in list controls
2026-09-30 17:01:38 -03:00
Alexandre Brandizzi
29d235e133
Merge pull request #286 from Sea-Haven-Industries/fix/ab/sh411-empty-technician-thr_9fpik7tdmw
...
Frontend checks / static (push) Waiting to run
Frontend checks / build (push) Waiting to run
Frontend checks / unit (push) Waiting to run
Frontend checks / Visual regression (push) Waiting to run
Frontend checks / browser-smoke (push) Waiting to run
Frontend checks / governance (push) Waiting to run
Frontend checks / ci-complete (push) Blocked by required conditions
Deploy Web / Resolve target (push) Waiting to run
Deploy Web / Deploy SPA to (push) Blocked by required conditions
fix(workorders): preserve explicit no-technician choice
2026-09-29 23:28:14 +00:00
Alexandre Brandizzi
1746ded434
test(e2e): open wizard technician picker from its No technician state
2026-09-29 20:22:31 -03:00
Alexandre Brandizzi
64c53e9da0
fix(workorders): preserve explicit no-technician choice
2026-09-29 20:06:05 -03:00
Alexandre Brandizzi
316cafccaa
fix(work-orders): satisfy technician assignment types
2026-09-29 19:30:48 -03:00
Alexandre Brandizzi
55b5441d71
refactor(work-orders): keep technician assignment paths maintainable
2026-09-29 19:26:34 -03:00
Alexandre Brandizzi
262c93b41c
test(work-orders): assert completed status as display text
2026-09-29 19:13:51 -03:00
Alexandre Brandizzi
fdbb602e0c
test(work-orders): exercise reachable completion controls
2026-09-29 19:10:46 -03:00
Alexandre Brandizzi
5b4da11631
test(work-orders): use visible vendor and technician pickers
2026-09-29 19:05:34 -03:00
Alexandre Brandizzi
1c9b909861
style(work-orders): format technician dialog state
2026-09-29 18:50:08 -03:00
Alexandre Brandizzi
bfdc2dbdec
fix(work-orders): retain technician state across editors
2026-09-29 18:42:19 -03:00
Alexandre Brandizzi
5adde3723b
fix(work-orders): preserve explicit empty technician assignment
2026-09-29 18:22:30 -03:00
Alexandre Brandizzi
24cbd09a60
Merge pull request #284 from Sea-Haven-Industries/fix/ab/sh-357-pending-table-only-thr_9fpik7tdmw
...
Frontend checks / static (push) Waiting to run
Frontend checks / build (push) Waiting to run
Frontend checks / unit (push) Waiting to run
Frontend checks / Visual regression (push) Waiting to run
Frontend checks / browser-smoke (push) Waiting to run
Frontend checks / governance (push) Waiting to run
Frontend checks / ci-complete (push) Blocked by required conditions
Deploy Web / Resolve target (push) Waiting to run
Deploy Web / Deploy SPA to (push) Blocked by required conditions
SH-357: remove Pending from existing work order status menu
2026-09-29 16:22:11 +00:00
Alexandre Brandizzi
5ace29eda4
test: expect Pending disabled on dated inline draft
2026-09-29 13:12:11 -03:00
Alexandre Brandizzi
7d5d015602
fix: require undated drafts for Pending status
2026-09-29 13:04:51 -03:00
Alexandre Brandizzi
4771f6f8eb
test: cover pending schedule date promotion
2026-09-29 12:52:02 -03:00
Alexandre Brandizzi
a61ab1919a
test: find pending creation in unscheduled results
2026-09-29 12:43:38 -03:00
Alexandre Brandizzi
52b682283c
test: scope pending wizard selection assertion
2026-09-29 12:33:15 -03:00
Alexandre Brandizzi
123b1ec9b5
test: cover pending work order status workflows
2026-09-29 12:25:56 -03:00
Alexandre Brandizzi
c5d0429fa2
style(work-orders): format status menu expectations
2026-09-29 11:46:12 -03:00
Alexandre Brandizzi
b6d5ad8a1e
fix(work-orders): hide Pending from existing status menus
2026-09-29 11:28:26 -03:00
Alexandre Brandizzi
73c7094102
Merge pull request #275 from Sea-Haven-Industries/feat/ab/sh-335-wo-site-dialog
...
Frontend checks / static (push) Waiting to run
Frontend checks / build (push) Waiting to run
Frontend checks / unit (push) Waiting to run
Frontend checks / Visual regression (push) Waiting to run
Frontend checks / browser-smoke (push) Waiting to run
Frontend checks / governance (push) Waiting to run
Frontend checks / ci-complete (push) Blocked by required conditions
Deploy Web / Resolve target (push) Waiting to run
Deploy Web / Deploy SPA to (push) Blocked by required conditions
Work Order Site dialog saves contacts and notes to the site
2026-09-28 23:45:53 +00:00
Alexandre Brandizzi
301fe44b0c
fix(workorders): Site dialog loads legacy site contacts and locks fields while saving
...
A site saved before the contacts list existed maps with no contacts, only
the legacy contact/phone fields. The site-record sync read the contacts
list alone, so the dialog blanked the POC, blocked a notes-only Save until
the contact was retyped, and when the work order had no POC the legacy
autofill made the diff report a contact edit nobody made. The legacy
contact is now the site's main contact for display, baseline and request.
Save sends the values it had when clicked, so the dialog's fields are now
disabled while the site update is in flight instead of accepting edits
that neither save would include.
The site-update mutation already toasts its own failure, so it sets
meta.suppressErrorToast and the global mutation toast no longer repeats it.
2026-09-25 19:52:03 -03:00
Alexandre Brandizzi
53dcb6af9e
fix(workorders): Site dialog hides per-contact notes when it edits the site record
...
Site contacts carry only a name and a phone (LocationContact, and the
Sites page contact rows), so PATCH contact-info has nowhere to put an
additional contact's note. The Notes box on each additional contact card
let a dispatcher type one under copy saying contacts are saved to the
site record, but the note only reached this work order's copy and no
other work order at the site ever saw it.
The additional-contact Notes box is now hidden while the dialog edits the
site record. It stays where contacts are saved to the work order only:
inline create, the wizard, and an existing work order whose site record
failed to load.
2026-09-25 19:36:15 -03:00
Alexandre Brandizzi
6a6d519ed7
Merge pull request #276 from Sea-Haven-Industries/fix/ab/sh-403-reset-code-hardening
...
Frontend checks / static (push) Has been cancelled
Frontend checks / build (push) Has been cancelled
Frontend checks / unit (push) Has been cancelled
Frontend checks / Visual regression (push) Has been cancelled
Frontend checks / browser-smoke (push) Has been cancelled
Frontend checks / governance (push) Has been cancelled
Deploy Web / Resolve target (push) Has been cancelled
Frontend checks / ci-complete (push) Has been cancelled
Deploy Web / Deploy SPA to (push) Has been cancelled
fix(auth): send reset email and code in the request body
2026-09-25 22:21:20 +00:00
Alexandre Brandizzi
a554aa049e
Merge pull request #282 from Sea-Haven-Industries/fix/ab/sh-408-has-uplift-live-status
...
fix(work-orders): keep uplift history reachable on closed work orders
2026-09-25 22:21:17 +00:00
Alexandre Brandizzi
f36a07c99c
fix(workorders): Site dialog clears the previous site's contact on a site switch
...
Picking another site on an existing work order kept the old site's POC
name, phone and notes in the fields. When the new site's record failed
to load, the dialog never synced it, Save stayed enabled, and the work
order pointing at the new site was saved with the previous site's
contact and notes as its override.
A site switch now empties the POC name and phone for every work order,
and the notes for existing ones, so the fields hold either the new
site's record or what the dispatcher types for it.
2026-09-25 19:17:24 -03:00
Alexandre Brandizzi
810fa5d5b0
Merge pull request #283 from Sea-Haven-Industries/fix/ab/sh-406-no-revoke-auto-approved
...
Hide Revoke from admins on auto-approved uplifts
2026-09-25 22:17:01 +00:00
Alexandre Brandizzi
a27695b217
Merge pull request #274 from Sea-Haven-Industries/feat/ab/sh-385-invite-registration
...
feat(team-members): invite registration wizard and resend invite (SH-385)
2026-09-25 22:16:36 +00:00
Alexandre Brandizzi
3cdb5e7d7b
Merge pull request #281 from Sea-Haven-Industries/feat/ab/sh-317-a4-pagination
...
feat(comp-doc): A4 multi-page completion document preview
2026-09-25 22:16:32 +00:00
Alexandre Brandizzi
b55938104a
fix(workorders): Site dialog sends only complete contacts without site ids to the work order
...
The Site dialog loads extra contacts from the site record with their site
contact ids so the site request can update rows in place. buildSiteDialogPatch
copied those rows verbatim into the work-order patch, so onSave received
siteContactId (and half-filled rows) even though the type documents that the
id is never sent on work-order patches. The wire serializer already stripped
both, but the patch handed to the board did not.
Run the patch's extra contacts through normalizeAdditionalContacts, the same
helper the work-order serializer uses, so the patch carries only complete
name/phone/notes rows. An emptied list still clears the work order's copy.
The site request keeps its ids because it is built from the form fields.
2026-09-25 19:04:32 -03:00
Alexandre Brandizzi
727588ab52
fix(comp-doc): keep the page pill current on re-layout and stamp NOT REQUIRED on the sheet
...
The page being read is re-derived after every render and every observed
resize, not only when the page count changes. The NOT REQUIRED stamp is
rendered inside the first sheet, above its greyed-out content, instead of
floating over the scroll panel.
2026-09-25 18:49:13 -03:00