Commit graph

1195 commits

Author SHA1 Message Date
renovate[bot]
48786940d5
fix(deps): update tanstack query to v5.104.0 2026-10-01 00:12:18 +00:00
Alexandre Brandizzi
9fbc166d2f
Merge pull request #287 from Sea-Haven-Industries/fix/ab/sh413-services-registry-thr_9fpik7tdmw
Some checks are pending
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
Some checks are pending
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
Some checks are pending
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
Some checks are pending
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
Some checks failed
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
Alexandre Brandizzi
a2d03f9461 fix(work-orders): keep uplift history reachable on closed work orders
The Uplift column hid its trigger on a Completed or Canceled work order
with no live uplift, so once cancelled/revoked uplifts stop counting as
"has uplift", their read-only history had no way in. The cell now always
opens the uplifts dialog; closed work orders show a dash instead of Manage.
2026-09-25 18:14:53 -03:00
Alexandre Brandizzi
18127c0f30 fix(uplifts): hide Revoke from admins on auto-approved uplifts
Admins may revoke only admin-approved uplifts. The Work Order Uplifts
dialog showed Revoke to whoever requested an auto-approved uplift, so an
admin requester saw it and was sent into the optional-reason revoke flow.
2026-09-25 18:14:06 -03:00