Commit graph

649 commits

Author SHA1 Message Date
Adam Moussa
c30e8aa74b
fix(ci): assert the baked API URL in served JS assets (SH-300) (#184)
Some checks are pending
Frontend checks / Build and test (push) Waiting to run
Frontend checks / governance (push) Waiting to run
Frontend checks / Visual regression (push) Waiting to run
Deploy dev content / Deploy shoc-frontend-new-dev through Terraform (push) Waiting to run
Vite puts VITE_API_URL in hashed JS, not index.html. Scan every
referenced /assets file and reject staging or localhost there too.
2026-09-11 19:38:07 +00:00
Adam Moussa
f23c60ccc2
fix(ci): skip duplicate verify on content CD and ignore origin timeout drift (SH-300) (#183)
* fix(terraform): ignore origin response_completion_timeout in the release plan guard (SH-300)

AWS returns 0 when the timeout is unset. The provider writes null on
origin_path updates, so the first real CD plan failed closed.

* fix(ci): drop duplicate verify from the content CD workflow (SH-300)

Frontend checks already runs verify on PRs and pushes. Removing the
validate job also requires dropping needs: validate so dispatch can run.

* fix(terraform): equate origin timeout 0 and null only (SH-300)

Numeric timeout changes still fail closed. Rename the filter so it is
not read as an after_unknown allowlist.
2026-09-11 19:17:36 +00:00
Adam Moussa
7716b4afc8
fix(ci): confirm release prefix with s3api head-object (SH-300) (#182)
Some checks are pending
Frontend checks / Build and test (push) Waiting to run
Frontend checks / governance (push) Waiting to run
Frontend checks / Visual regression (push) Waiting to run
Validate and deploy / Validate production build (push) Waiting to run
Validate and deploy / Deploy shoc-frontend-new-dev through Terraform (push) Blocked by required conditions
grep -q closed the aws s3 ls pipe after a successful upload and failed the deploy.
2026-09-11 18:26:19 +00:00
Adam Moussa
69c24c1c2c
feat(terraform): ship dev content CD through Terraform (SH-300) (#180)
* feat(terraform): ship dev content CD through Terraform (SH-300)

GitHub uploads immutable release prefixes; Terraform owns live publish.
Push-to-dev stays off until TERRAFORM_CONTENT_CD_ENABLED is set.

* fix(terraform): align release-plan guard flags and CloudFront verify IAM (SH-300)
2026-09-11 13:40:14 -04:00
Adam Moussa
b24e6f3b9a
fix(cdk): keep the auto-delete Lambda description off the site bucket (SH-300) (#179)
Some checks are pending
Frontend checks / Build and test (push) Waiting to run
Frontend checks / governance (push) Waiting to run
Frontend checks / Visual regression (push) Waiting to run
* fix(cdk): keep the auto-delete Lambda description off the site bucket

* style(cdk): format the auto-delete Lambda path check
2026-09-11 13:21:00 -03:00
Adam Moussa
5b08bfa57b
Merge pull request #178 from Sea-Haven-Industries/feature/terraform-dev-adoption
feat(terraform): complete dev environment adoption (SH-300)
2026-09-11 11:33:41 -04:00
f532aa6059
feat(terraform): complete dev environment adoption (SH-300) 2026-09-11 11:22:28 -04:00
Adam Moussa
8b5281d357
ci(terraform-isolation): re-evaluate the gate on label changes (#177)
Some checks are pending
Frontend checks / Build and test (push) Waiting to run
Frontend checks / governance (push) Waiting to run
Frontend checks / Visual regression (push) Waiting to run
* ci(terraform-isolation): re-evaluate the gate on label changes

* test(terraform-isolation): lock the ci.yaml label-event contract

* fix(terraform-isolation): do not treat terraform markdown as a mixed change

* fix(ci): do not skip Frontend checks on isolation label events

* ci(terraform-isolation): run label retriggers in a dedicated workflow

* fix: apply eslint formatting

* fix: apply additional missed eslint formatting
2026-09-10 20:45:49 -04:00
Adam Moussa
763b82a77d
Merge pull request #159 from Sea-Haven-Industries/feature/frontend-terraform-adoption
Some checks are pending
Frontend checks / Build and test (push) Waiting to run
Frontend checks / governance (push) Waiting to run
Frontend checks / Terraform and application changes are isolated (push) Waiting to run
Frontend checks / Visual regression (push) Waiting to run
feat(terraform): adopt dev hosting into HCP Terraform, import-first (SH-300)
2026-09-10 19:59:08 -04:00
8ec91f0dac
ci: run the Terraform isolation gate as a job in the CI workflow 2026-09-10 19:37:27 -04:00
7ab6fa30e7
fix(terraform): lock provider hashes for linux and darwin platforms 2026-09-10 19:34:10 -04:00
0bc7e22884
docs(terraform): mark the isolation override as temporary 2026-09-10 19:22:43 -04:00
b71c0ad87b
docs: document the dev Terraform adoption runbook and gates
Two-phase runbook, ownership boundary, workspace invariants, rollback
per phase, and operational rules in terraform/README.md; CDK adoption
mode and the retired cd-cdk path in infra/cdk/README.md; gate matrix and
deployment section updates.
2026-09-10 19:15:14 -04:00
08da408a13
ci(governance): wire Terraform and CDK gates and isolate Terraform PRs
Governance now runs the import-plan checker tests, Terraform fmt and
validate for terraform/live/dev, the isolation gate tests, and the CDK
build, tests, and synth in both modes. A new terraform-isolation
workflow fails PRs that change terraform/** together with application
code; the terraform-isolation-override label is the reviewed exception.
Renovate gains the terraform manager.
2026-09-10 19:15:13 -04:00
87e79072ad
ci(deploy): make dev content deploy workflow_dispatch only
Remove the push-to-dev trigger and the org cd-cdk.yaml caller so CI no
longer runs cdk deploy during the adoption. The workflow assumes the
pinned dev role and runs the simple scripts/deploy-web.sh against a
pinned bucket and distribution, which keeps content deploys working
after CloudFormation relinquishes the stack outputs. Staging is
untouched.
2026-09-10 19:15:12 -04:00
82361e14b5
feat(cdk): add Terraform adoption retain mode
retainForTerraformAdoption=true adds the required ManageSiteInfrastructure
parameter, conditions the 13 transferred resources and the S3 auto-delete
custom resource on it, applies Retain policies, pins the live dev origin
ID, attaches the deploy boundary and HcpTerraformWorkspace tag, and
narrows the OIDC subject to StringEquals. Normal synthesis is unchanged;
template tests cover both modes.
2026-09-10 19:15:11 -04:00
78398482cf
feat(terraform): add dev root and import guard for HCP adoption
Port the reviewed dev root and environment-owned/inventory modules from
111eb556 with the 13 pinned dev identifiers. adoption_complete is pinned
to false in code; the root has no variables so a workspace variable
cannot change what applies. The tf-poc root, staging root, and tf-poc
map entries are dropped; staging constants stay only for the checker's
cross-environment negative tests.
2026-09-10 19:15:09 -04:00
Alexandre Brandizzi
73346371e5
Merge pull request #167 from Sea-Haven-Industries/feat/sh-298-sentry
Some checks are pending
Frontend checks / Build and test (push) Waiting to run
Frontend checks / governance (push) Waiting to run
Frontend checks / Visual regression (push) Waiting to run
Deploy / deploy (push) Waiting to run
Deploy / Upload private source maps (push) Blocked by required conditions
feat: add browser Sentry tracing (SH-298)
2026-09-10 15:52:28 -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
b7d531f554
Merge pull request #173 from Sea-Haven-Industries/feat/SH-186-schedule-clear
Some checks are pending
Frontend checks / Build and test (push) Waiting to run
Frontend checks / governance (push) Waiting to run
Frontend checks / Visual regression (push) Waiting to run
Deploy / deploy (push) Waiting to run
feat(work-orders): persist Schedule On clear for SH-186
2026-09-09 18:31:17 -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
8e0f7617aa
Merge pull request #172 from Sea-Haven-Industries/feat/SH-171-wo-documents
feat(work-orders): complete Extra Docs authorized attachment lifecycle
2026-09-09 18:17:59 -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
a7d359ffc4
Merge pull request #171 from Sea-Haven-Industries/fix/SH-181-vendor-save-gate
Some checks are pending
Frontend checks / Build and test (push) Waiting to run
Frontend checks / governance (push) Waiting to run
Frontend checks / Visual regression (push) Waiting to run
Deploy / deploy (push) Waiting to run
fix(workorders): correct vendor save behavior
2026-09-09 17:46:19 -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
ef2ba9da1f
Merge pull request #170 from Sea-Haven-Industries/feat/SH-299-completion-doc-diag
fix: restore work-order completion media uploads
2026-09-09 17:33:04 -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
793230f0c2
Merge pull request #168 from Sea-Haven-Industries/feat/SH-170-wo-inline-type-correction
Some checks failed
Frontend checks / Build and test (push) Has been cancelled
Frontend checks / governance (push) Has been cancelled
Frontend checks / Visual regression (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
feat(work-orders): align inline type correction with the board AAP
2026-09-07 12:19:18 -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
a766dc9c50
Merge pull request #169 from Sea-Haven-Industries/feat/SH-310-schedule-on-range
Some checks failed
Frontend checks / Build and test (push) Has been cancelled
Frontend checks / governance (push) Has been cancelled
Frontend checks / Visual regression (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
fix(work-orders): restore Range tab on Schedule On for inline and slide-over
2026-09-04 18:07:18 -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