Commit graph

518 commits

Author SHA1 Message Date
Codex Review Integration
2844d97a36 feat(work-orders): show the vendor location map in the Vendor dialog
The last of SH-271's five acceptance bullets. The Work Order Vendor dialog
gets one composed address line from the vendor dropdown payload, not the
structured parts the form and detail drawer hold, so the preview takes the
line directly — it is saved data either way, and the completeness rule exists
to stop a map of half-typed input, not to reject a stored address.

The dialog's hand-built maps URL now goes through the shared helper, so the
link and the preview cannot drift apart.
2026-09-10 16:36:09 -03:00
Codex Review Integration
aa707cb370 feat(vendors): structure the address into Street/City/State with autocomplete
The Vendor form carried one free-text "Address (optional)" line, with City,
State and Zip already present but hidden behind display:none, and a separate
"Google Maps URL" input someone had to paste into by hand.

Street Address, City and State are now three required fields. Typing three
characters in Street Address offers up to four candidates; picking one fills
all three at once, and typing without picking stays plain free text. The
Google Maps URL input is gone — the location is derived from the address, the
Street Address itself is the link in view mode, and a keyless map preview
renders once all three parts are present. Zip stays in the payload but out of
the form; the ticket scopes the visible set to three.

The suggestion algorithm, candidate cities and copy are ported from the
approved prototype rather than invented, so dev and design agree on what a
dispatcher sees. Suggestions are deterministic for a given input on purpose:
a reshuffling list moves a row out from under the pointer mid-click.

Test fixtures that predate the requirement now carry an address, so each test
still fails for the reason it is about. The two drawer tests asserting the
stored-URL "Open in Google Maps" row are rewritten to the behaviour that
replaced it.

Delivers SH-271.
2026-09-10 16:31:56 -03:00
Codex Review Integration
fdd97c24f9 Merge branch 'dev' into feat/sh-298-sentry
Three conflicts, all where dev refactored code this branch had instrumented:

- api.ts — dev extracted the session-expiry helper into
  lib/auth/expire-session. Took dev's import, dropped the now-duplicate local
  copy, kept the tracing import.
- work-order-board-documents-api.ts — dev replaced the ky upload with
  uploadFormWithProgress, an XHR path that exists because ky's
  onUploadProgress streams the body and browsers refuse that over HTTP/1.1.
  Kept dev's helper and wrapped it in traceHttpOperation so the upload stays
  instrumented; neither change is lost.
- work-orders-api.test.ts — kept both mock surfaces, since the merged
  work-orders-api calls apiRequestRaw while other code uses the ky instance.

getMediaContent arrived from dev calling `api.get` directly, which this file
no longer imports; routed it through apiRequestRaw like its siblings, which
also brings it under tracing.
2026-09-10 14:44:12 -03:00
Arthur Bassi
1fdecdd45d Merge remote-tracking branch 'origin/dev' into feat/SH-186-schedule-clear 2026-09-09 18:18:11 -03:00
Arthur Bassi
117f7949f5 fix(work-orders): pass HTTP status into Extra Docs error helper 2026-09-09 18:05:03 -03:00
Arthur Bassi
15de3fca0a Merge remote-tracking branch 'origin/dev' into feat/SH-186-schedule-clear 2026-09-09 17:47:37 -03:00
Arthur Bassi
11743caa61 Merge remote-tracking branch 'origin/dev' into feat/SH-171-wo-documents 2026-09-09 17:46:41 -03:00
Arthur Bassi
eab83f6562 Merge branch 'dev' into feat/SH-171-wo-documents 2026-09-09 17:46:10 -03:00
Arthur Bassi
54671baf5c Merge remote-tracking branch 'origin/dev' into fix/SH-181-vendor-save-gate 2026-09-09 17:33:58 -03:00
Arthur Bassi
a54fcaae9f fix(work-orders): persist extra media placement 2026-09-09 17:09:28 -03:00
Arthur Bassi
252c0d0856 fix(work-orders): remove stale schedule clear handlers 2026-09-09 17:09:26 -03:00
Arthur Bassi
ba69706fcf fix(work-orders): make extra document opening reliable 2026-09-09 17:09:26 -03:00
Arthur Bassi
3bb7acde2d fix(work-orders): preserve staged vendor selection 2026-09-09 17:09:26 -03:00
Arthur Bassi
c71d9482ec feat(work-orders): align Schedule On clear with shared demotion path
Board Clear uses empty-week patch; slide-over Save derives Pending via mergeAutoSchedulePatch.
2026-09-09 15:44:49 -03:00
Arthur Bassi
dee1578efe feat(work-orders): persist Schedule On clear from board and slide-over
Clearing a concrete date must go through the shared schedule patch so status can revert to Pending.
2026-09-09 10:23:23 -03:00
Arthur Bassi
e761e0dae5 test(work-orders): drop Photos categorize-after-upload assertion 2026-09-08 13:53:17 -03:00
Arthur Bassi
1607bac8ad fix(work-orders): align Extra Docs and Photos copy with AAP 2026-09-08 13:48:02 -03:00
Arthur Bassi
47f78fec89 feat(work-orders): open Extra Docs through authorized content 2026-09-08 11:33:21 -03:00
Arthur Bassi
edf4a51d4c feat(work-orders): fetch Extra Docs via authenticated content GET 2026-09-08 11:31:12 -03:00
Arthur Bassi
599e38aae3 feat(work-orders): add media content API path 2026-09-08 11:30:04 -03:00
Arthur Bassi
4006145ef8 feat(work-orders): keep Photos allowlist media-only at 50MB 2026-09-08 11:28:48 -03:00
Arthur Bassi
807d8ac1a8 feat(work-orders): match Extra Docs AAP accept copy 2026-09-08 11:28:37 -03:00
Arthur Bassi
6c765e8b42 feat(work-orders): align Extra Docs accept and 50MB limits 2026-09-08 11:27:52 -03:00
Arthur Bassi
747515870e fix(workorders): correct vendor save behavior 2026-09-07 20:48:30 -03:00
Arthur Bassi
74e5c58e5d fix(work-orders): restore completion media uploads over HTTP/1.1
Use XHR for media progress so Ky does not stream the body on HTTP/1.1
(Vite proxy), and keep completion vs extra tiles from mixing after upload.
2026-09-07 15:19:39 -03:00
Arthur Bassi
dc9cc07a73
Merge branch 'dev' into feat/SH-170-wo-inline-type-correction 2026-09-07 11:51:30 -03:00
Arthur Bassi
ccdad96170 fix(work-orders): persist type via PATCH and lock completed rows 2026-09-07 11:39:12 -03:00
Arthur Bassi
f51f6bd493 chore(work-orders): keep type/severity audit rules after merging origin/dev 2026-09-04 16:41:42 -03:00
Arthur Bassi
418eb3749d fix(work-orders): restore Range tab on Schedule On for inline and slide-over
Share Week/Date/Range on inline, board, and slide-over DateCell.
A selected range lands on the start day, matching the wizard.
2026-09-04 15:59:53 -03:00
Arthur Bassi
b0c58958ae
Merge branch 'dev' into feat/SH-169-wo-inline-lifecycle 2026-09-04 14:47:38 -03:00
Arthur Bassi
3ed8600beb fix(work-orders): promote dated pre-schedule picks to Scheduled
Align create, wizard, and board status patches with AAP maybeAutoSchedule.
Include the previous status in audit copy when the API sends it.
2026-09-04 14:31:08 -03:00
Alexandre Brandizzi
d6163e7eb6
Merge branch 'dev' into feat/sh-298-sentry 2026-09-04 14:23:41 -03:00
Arthur Bassi
b8349783a7 chore(work-orders): keep carry-over display and local board row-order 2026-09-04 13:46:04 -03:00
Arthur Bassi
9f9aa5c824 fix(work-orders): restore AAP span grip while keeping keyboard reorder 2026-09-04 13:27:53 -03:00
Codex Review Integration
fa866c5ea7 fix(observability): preserve HTTP error status 2026-09-03 21:51:40 -03:00
Codex Review Integration
207199559f feat(observability): identify and scrub Sentry transactions 2026-09-03 17:12:49 -03:00
Arthur Bassi
27ddeb2903 feat(work-orders): align inline type correction with the board AAP
Keep type correction on the board: Type & severity, SEV toast, and audit copy.
2026-09-03 16:30:10 -03:00
Codex Review Integration
dc313dc50a fix: capture React root errors in Sentry 2026-09-03 15:53:50 -03:00
Codex Review Integration
a24002bc24 feat: activate Sentry deployment environments 2026-09-03 15:10:01 -03:00
Arthur Bassi
370b2a68ad fix(work-orders): align reorder grip button box-model with prior span
Reset display, vertical-align, and box-sizing so visual snapshots stay on the approved grip.
2026-09-03 14:42:22 -03:00
Arthur Bassi
3a8f41a444 fix(work-orders): keep explicit wizard status picks on dated drafts
Derive Scheduled or Pending only when the patch touches schedule fields, matching the board path.
2026-09-03 14:42:19 -03:00
Codex Review Integration
c1863c4274 feat: add browser Sentry tracing 2026-09-03 13:59:13 -03:00
Arthur Bassi
9fc67516ca fix(work-orders): derive lifecycle status only when the schedule patch changes 2026-09-03 13:35:26 -03:00
Arthur Bassi
ddd83ffec1 fix(work-orders): skip canceled keyboard reorder and persist destination-week order 2026-09-03 13:34:28 -03:00
Arthur Bassi
c2d1add79c fix(work-orders): persist AAP auto-schedule on a single board patch
Merge derived status once so dated rows cannot stay Pending or Incomplete.
Create and wizard demote Scheduled when there is no concrete date.
2026-09-03 11:13:24 -03:00
Arthur Bassi
9cc9bc4dfb feat(work-orders): align inline lifecycle transitions with AAP
Use the prototype status list and gates on the board and wizard.
Auto-derive Scheduled or Pending from a concrete schedule date.
2026-09-02 15:11:31 -03:00
Arthur Bassi
dc178340de feat(work-orders): persist board row order locally and support keyboard reorder
Keep same-day WO order across refresh and sign-out in the same browser.
Add keyboard reorder on the row grip.
2026-09-02 11:07:27 -03:00
Arthur Bassi
bc1e7a1fa2 fix(work-orders): keep carry-over rows in day reorder and one-char search 2026-09-02 09:47:34 -03:00
Arthur Bassi
08e00c213d
Merge branch 'dev' into feat/sh-167-wo-board-carry-over 2026-09-02 09:32:58 -03:00
Arthur Bassi
426889427c feat(work-orders): show carry-over pill and map day-tab for prior-week WOs
Keep source week visible and map weekday tabs without rewriting schedule.
2026-09-01 14:16:52 -03:00