Skip to content

chore: sync main onto upstream tag v1.6.0 - #11

Merged
escooterclinic merged 150 commits into
mainfrom
chore/sync-upstream-v1.6.0
Aug 12, 2026
Merged

chore: sync main onto upstream tag v1.6.0#11
escooterclinic merged 150 commits into
mainfrom
chore/sync-upstream-v1.6.0

Conversation

@escooterclinic

Copy link
Copy Markdown

Resyncs main onto upstream tag v1.6.0 (4d08b0b). main was 258 commits behind the real upstream and had never been measured against it — until 5a924c5 the upstream remote named a dead mirror.

Target is the tag, not HEAD (operator decision, 2026-08-12): upstream's main has been red since 2026-08-11, npm ci failing with EUSAGE / Missing: oxc-parser@0.144.0. Re-checked before starting — both Docker jobs still failing at 63a2968. Our fix for it, reqcore-inc/reqcore#271, is open and unreviewed.

measure before after
behind v1.6.0 148 0
files differing (3-dot, vs upstream/main) 27 26

26 is close to the floor: 21 of them are permanent overlay — the 8 workflow deletions, verify.sh/verify-e2e.sh/check-no-workflows.sh/install-hooks.sh/.githooks/, deploy.sh, release.sh, sync-upstream.sh/.sync-upstream.conf, the divergence doc, .nvmrc, .gitignore. Only 5 are content deltas.

Conflicts, resolved by reading both sides

No --ours/--theirs anywhere.

  • package.json — kept this fork's engines/private and the range-form security overrides; took upstream's licence/repository/homepage metadata, scripts and dependency bumps. Every override floor is now max(ours, upstream's pin), so the range form never lowers a version upstream had already reached.
  • README.md — upstream deliberately dropped the openalternative/Railway badges and rewrote the nav line; taken. Their CI badges stay out — they point at workflows this fork deletes.
  • tests/unit/ai-config-schema.test.ts — duplicate intent: both sides independently repaired the same stale file. Upstream's assertions are a strict superset, so theirs stands, with our record of how they went stale folded into the docblock.
  • package-lock.json — regenerated, not hand-merged.

Three carried "fixes" that were not reimposed

As predicted: the test script and the node:22.22-alpine base image were already upstream and collapsed silently. The third, server/utils/logger.ts, did not — it merged cleanly and broke typecheck. Our options-object BatchLogRecordProcessor belongs to sdk-logs 0.221; this tree is on upstream's 0.219. Reverted to positional. Only the gate caught it.

Two new deviations, both documented

  • ai / @ai-sdk/* ceilings. The tail of every current AI-SDK major is under advisory, and @ai-sdk/provider-utils 4.0.41+ pulls undici ^5.29.0all of undici 5.x sits inside GHSA-vrm6-8vpv-qv8q, the one HIGH that fails the gate. There is no fixed release inside these majors; the fix is ai 7 / @ai-sdk 4, a breaking upgrade through the scoring and shortlisting path. That needs its own review, not a sync — filed separately.
  • unhead override raised to >=3.3.1. Upstream pins 2.1.13 while their own nuxt 4.4.8 asks for ^2.1.15; nuxt 4.5.2 — the first release outside the nuxt advisory — needs ^3.3.1. The exact pin was already dragging their tree backwards, and here it broke npm ci outright.

⚠️ Worth knowing: main's "0 vulnerabilities" was an artefact of a frozen lockfile. origin/main's own package.json, resolved fresh today, yields 10 advisories including 2 high. This branch yields 0.

Also fixed

sync-upstream.sh merged upstream/main on the first attempt despite an explicit UPSTREAM_BRANCH=v1.6.0 — the conf was sourced after the environment, so it silently won. That is the exact ref the operator chose the tag to avoid. Canonical copy fixed in claude-code-policy with a mutation-checked regression test; twenty/ still carries the old one and is named in the follow-up.

Verified, not assumed

./verify.sh                                exit 0   (556 tests, 44 files)
npm audit --audit-level=high               exit 0   0 vulnerabilities
npm ci in node:22.22-alpine (npm 10.9.8)   exit 0
npm ci locally (npm 11.11.1)               exit 0
docker build, full 27 steps, real image    exit 0
./check-no-workflows.sh                    exit 0

Both npm versions matter and neither is optional: the image ships npm 10.9.8, but npm 10.9.8's resolver hoists cac@7 and cannot nest the cac@6 @bomb.sh/tab needs — producing a lockfile its own npm ci rejects. An npm 11-resolved lockfile satisfies both.

Nothing deploys from main; esc-live is a separate branch and a separate resync.

dependabot Bot and others added 30 commits April 27, 2026 04:44
Bumps the production-dependencies group with 10 updates:

| Package | From | To |
| --- | --- | --- |
| [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) | `3.1033.0` | `3.1037.0` |
| [@better-auth/sso](https://github.com/better-auth/better-auth/tree/HEAD/packages/sso) | `1.6.5` | `1.6.9` |
| [@nuxtjs/i18n](https://github.com/nuxt-modules/i18n) | `10.2.4` | `10.3.0` |
| [@posthog/nuxt](https://github.com/PostHog/posthog-js/tree/HEAD/packages/nuxt) | `1.7.0` | `1.7.13` |
| [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) | `4.2.3` | `4.2.4` |
| [better-auth](https://github.com/better-auth/better-auth/tree/HEAD/packages/better-auth) | `1.6.5` | `1.6.9` |
| [nodemailer](https://github.com/nodemailer/nodemailer) | `8.0.5` | `8.0.6` |
| [posthog-node](https://github.com/PostHog/posthog-js/tree/HEAD/packages/node) | `5.29.2` | `5.30.4` |
| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.2.3` | `4.2.4` |
| [vue](https://github.com/vuejs/core) | `3.5.32` | `3.5.33` |


Updates `@aws-sdk/client-s3` from 3.1033.0 to 3.1037.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.1037.0/clients/client-s3)

Updates `@better-auth/sso` from 1.6.5 to 1.6.9
- [Release notes](https://github.com/better-auth/better-auth/releases)
- [Changelog](https://github.com/better-auth/better-auth/blob/main/packages/sso/CHANGELOG.md)
- [Commits](https://github.com/better-auth/better-auth/commits/@better-auth/sso@1.6.9/packages/sso)

Updates `@nuxtjs/i18n` from 10.2.4 to 10.3.0
- [Release notes](https://github.com/nuxt-modules/i18n/releases)
- [Changelog](https://github.com/nuxt-modules/i18n/blob/main/CHANGELOG.md)
- [Commits](nuxt-modules/i18n@v10.2.4...v10.3.0)

Updates `@posthog/nuxt` from 1.7.0 to 1.7.13
- [Release notes](https://github.com/PostHog/posthog-js/releases)
- [Changelog](https://github.com/PostHog/posthog-js/blob/main/packages/nuxt/CHANGELOG.md)
- [Commits](https://github.com/PostHog/posthog-js/commits/@posthog/nuxt@1.7.13/packages/nuxt)

Updates `@tailwindcss/vite` from 4.2.3 to 4.2.4
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.4/packages/@tailwindcss-vite)

Updates `better-auth` from 1.6.5 to 1.6.9
- [Release notes](https://github.com/better-auth/better-auth/releases)
- [Changelog](https://github.com/better-auth/better-auth/blob/main/packages/better-auth/CHANGELOG.md)
- [Commits](https://github.com/better-auth/better-auth/commits/better-auth@1.6.9/packages/better-auth)

Updates `nodemailer` from 8.0.5 to 8.0.6
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](nodemailer/nodemailer@v8.0.5...v8.0.6)

Updates `posthog-node` from 5.29.2 to 5.30.4
- [Release notes](https://github.com/PostHog/posthog-js/releases)
- [Changelog](https://github.com/PostHog/posthog-js/blob/main/packages/node/CHANGELOG.md)
- [Commits](https://github.com/PostHog/posthog-js/commits/posthog-node@5.30.4/packages/node)

Updates `tailwindcss` from 4.2.3 to 4.2.4
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.4/packages/tailwindcss)

Updates `vue` from 3.5.32 to 3.5.33
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](vuejs/core@v3.5.32...v3.5.33)

---
updated-dependencies:
- dependency-name: "@aws-sdk/client-s3"
  dependency-version: 3.1037.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: "@better-auth/sso"
  dependency-version: 1.6.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@nuxtjs/i18n"
  dependency-version: 10.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: "@posthog/nuxt"
  dependency-version: 1.7.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@tailwindcss/vite"
  dependency-version: 4.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: better-auth
  dependency-version: 1.6.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: nodemailer
  dependency-version: 8.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: posthog-node
  dependency-version: 5.30.4
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: tailwindcss
  dependency-version: 4.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: vue
  dependency-version: 3.5.33
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
- Implemented property loading and attachment helpers in `properties.ts` for managing custom properties.
- Created Zod schemas for property definitions and configurations in `schemas/property.ts`.
- Introduced shared types and utility functions for properties in `shared/properties.ts`.

Co-authored-by: Copilot <copilot@github.com>
- PropertyValueEditor: replace v-model with cast (invalid esbuild assignment target) with :value + @input handlers for text/long_text/date inputs

- useSavedViews: avoid UnwrapRef widening by typing ref<T> via cast
Security:
- property URL validator restricts to http(s) schemes (block javascript:/data: XSS)

Validation/correctness:
- propertyConfigSchema drops passthrough() so malformed configs are rejected
- createPropertyDefinitionSchema superRefine rejects jobId for candidate properties
- properties POST uses isNull(jobId) instead of eq(jobId, null) so org-global displayOrder works
- properties reorder enforces single (entityType, jobId) scope across submitted ids
- applications/candidates list endpoints schema-validate propertyFilters (max 20, allow-list ops, reject isEmpty)
- entityIdsMatchingFilters rejects isEmpty operator (cannot compute complement here)
- loadPropertyEntriesForEntities supports per-entity job filtering via entityJobIds map (no cross-job leak)

UX:
- saved view settings persist propertyFilters for both applications and candidates pages
- PropertyFilterBar splits chip into adjacent buttons so the remove affordance is keyboard/SR-accessible
- replace 'as never' casts with PropertyEntry[] on application/candidate detail pages

Cleanup:
- remove unused sql import in applications/index.get.ts and unused defById in properties.ts
- update PUT route docs: pass null to clear (matches validator)
- Implemented ApplicationDetailDrawer.vue for displaying application details, including status transitions, notes editing, and properties.
- Implemented CandidateDetailDrawer.vue for displaying candidate details, including contact information, applications, and documents.
- Enhanced UI with improved styling and responsiveness.
- Added functionality for scheduling interviews and handling document previews.

Co-authored-by: Copilot <copilot@github.com>
…sistency

Co-authored-by: Copilot <copilot@github.com>
…d element references and state management

Co-authored-by: Copilot <copilot@github.com>
… views

Co-authored-by: Copilot <copilot@github.com>
feat: add property management utilities and schemas
Bumps [googleapis/release-please-action](https://github.com/googleapis/release-please-action) from 4 to 5.
- [Release notes](https://github.com/googleapis/release-please-action/releases)
- [Changelog](https://github.com/googleapis/release-please-action/blob/main/CHANGELOG.md)
- [Commits](googleapis/release-please-action@v4...v5)

---
updated-dependencies:
- dependency-name: googleapis/release-please-action
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
…uction-dependencies-443db5cc29

chore(deps): bump the production-dependencies group with 10 updates
…ogleapis/release-please-action-5

chore(actions): bump googleapis/release-please-action from 4 to 5
…in--components--reqcore

chore: release v1.4.0
- Added nonce-based Content Security Policy (CSP) middleware to replace 'unsafe-inline' directive for script-src.
- Generates a unique nonce per request and injects it into the CSP header.
- Skips nonce generation for API endpoints, Nuxt assets, and static files.

feat: add pgDumpEnv utility to secure environment variable handling

- Introduced pgDumpEnv utility to build a sanitized environment for pg_dump.
- Only allows a minimal set of system variables and PGPASSWORD to prevent leaking sensitive application secrets.

test: add unit tests for pgDumpEnv utility

- Created comprehensive tests for pgDumpEnv to ensure application secrets are not leaked.
- Validated that only allowed environment variables are forwarded to child processes.

fix: enhance rate limiting logic and add tests

- Updated rate limiting implementation to warn about in-memory state across replicas.
- Added unit tests to verify rate limiting behavior, including request limits and header emissions.

test: add security tests for recent fixes

- Implemented tests for various security fixes including nonce-based CSP, HKDF key separation, and rate limiting enforcement in CI environments.
- Ensured that all security measures are validated and functioning as intended.

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
…roduction

Co-authored-by: Copilot <copilot@github.com>
feat: implement nonce-based CSP middleware for enhanced security
Bumps the production-dependencies group with 14 updates:

| Package | From | To |
| --- | --- | --- |
| [@ai-sdk/anthropic](https://github.com/vercel/ai/tree/HEAD/packages/anthropic) | `3.0.71` | `3.0.74` |
| [@ai-sdk/google](https://github.com/vercel/ai/tree/HEAD/packages/google) | `3.0.64` | `3.0.67` |
| [@ai-sdk/openai](https://github.com/vercel/ai/tree/HEAD/packages/openai) | `3.0.53` | `3.0.58` |
| [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) | `3.1037.0` | `3.1041.0` |
| [@opentelemetry/api-logs](https://github.com/open-telemetry/opentelemetry-js) | `0.215.0` | `0.216.0` |
| [@opentelemetry/exporter-logs-otlp-http](https://github.com/open-telemetry/opentelemetry-js) | `0.215.0` | `0.216.0` |
| [@opentelemetry/resources](https://github.com/open-telemetry/opentelemetry-js) | `2.7.0` | `2.7.1` |
| [@opentelemetry/sdk-logs](https://github.com/open-telemetry/opentelemetry-js) | `0.215.0` | `0.216.0` |
| [@posthog/nuxt](https://github.com/PostHog/posthog-js/tree/HEAD/packages/nuxt) | `1.7.13` | `1.7.21` |
| [ai](https://github.com/vercel/ai/tree/HEAD/packages/ai) | `6.0.168` | `6.0.174` |
| [nodemailer](https://github.com/nodemailer/nodemailer) | `8.0.6` | `8.0.7` |
| [nuxt](https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt) | `4.4.2` | `4.4.4` |
| [posthog-node](https://github.com/PostHog/posthog-js/tree/HEAD/packages/node) | `5.30.4` | `5.33.0` |
| [zod](https://github.com/colinhacks/zod) | `4.3.6` | `4.4.2` |


Updates `@ai-sdk/anthropic` from 3.0.71 to 3.0.74
- [Release notes](https://github.com/vercel/ai/releases)
- [Changelog](https://github.com/vercel/ai/blob/@ai-sdk/anthropic@3.0.74/packages/anthropic/CHANGELOG.md)
- [Commits](https://github.com/vercel/ai/commits/@ai-sdk/anthropic@3.0.74/packages/anthropic)

Updates `@ai-sdk/google` from 3.0.64 to 3.0.67
- [Release notes](https://github.com/vercel/ai/releases)
- [Changelog](https://github.com/vercel/ai/blob/@ai-sdk/google@3.0.67/packages/google/CHANGELOG.md)
- [Commits](https://github.com/vercel/ai/commits/@ai-sdk/google@3.0.67/packages/google)

Updates `@ai-sdk/openai` from 3.0.53 to 3.0.58
- [Release notes](https://github.com/vercel/ai/releases)
- [Changelog](https://github.com/vercel/ai/blob/@ai-sdk/openai@3.0.58/packages/openai/CHANGELOG.md)
- [Commits](https://github.com/vercel/ai/commits/@ai-sdk/openai@3.0.58/packages/openai)

Updates `@aws-sdk/client-s3` from 3.1037.0 to 3.1041.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.1041.0/clients/client-s3)

Updates `@opentelemetry/api-logs` from 0.215.0 to 0.216.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@experimental/v0.215.0...experimental/v0.216.0)

Updates `@opentelemetry/exporter-logs-otlp-http` from 0.215.0 to 0.216.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@experimental/v0.215.0...experimental/v0.216.0)

Updates `@opentelemetry/resources` from 2.7.0 to 2.7.1
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@v2.7.0...v2.7.1)

Updates `@opentelemetry/sdk-logs` from 0.215.0 to 0.216.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-js/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-js@experimental/v0.215.0...experimental/v0.216.0)

Updates `@posthog/nuxt` from 1.7.13 to 1.7.21
- [Release notes](https://github.com/PostHog/posthog-js/releases)
- [Changelog](https://github.com/PostHog/posthog-js/blob/main/packages/nuxt/CHANGELOG.md)
- [Commits](https://github.com/PostHog/posthog-js/commits/@posthog/nuxt@1.7.21/packages/nuxt)

Updates `ai` from 6.0.168 to 6.0.174
- [Release notes](https://github.com/vercel/ai/releases)
- [Changelog](https://github.com/vercel/ai/blob/ai@6.0.174/packages/ai/CHANGELOG.md)
- [Commits](https://github.com/vercel/ai/commits/ai@6.0.174/packages/ai)

Updates `nodemailer` from 8.0.6 to 8.0.7
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](nodemailer/nodemailer@v8.0.6...v8.0.7)

Updates `nuxt` from 4.4.2 to 4.4.4
- [Release notes](https://github.com/nuxt/nuxt/releases)
- [Commits](https://github.com/nuxt/nuxt/commits/v4.4.4/packages/nuxt)

Updates `posthog-node` from 5.30.4 to 5.33.0
- [Release notes](https://github.com/PostHog/posthog-js/releases)
- [Changelog](https://github.com/PostHog/posthog-js/blob/main/packages/node/CHANGELOG.md)
- [Commits](https://github.com/PostHog/posthog-js/commits/posthog-node@5.33.0/packages/node)

Updates `zod` from 4.3.6 to 4.4.2
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](colinhacks/zod@v4.3.6...v4.4.2)

---
updated-dependencies:
- dependency-name: "@ai-sdk/anthropic"
  dependency-version: 3.0.74
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@ai-sdk/google"
  dependency-version: 3.0.67
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@ai-sdk/openai"
  dependency-version: 3.0.58
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@aws-sdk/client-s3"
  dependency-version: 3.1041.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: "@opentelemetry/api-logs"
  dependency-version: 0.216.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: "@opentelemetry/exporter-logs-otlp-http"
  dependency-version: 0.216.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: "@opentelemetry/resources"
  dependency-version: 2.7.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: "@opentelemetry/sdk-logs"
  dependency-version: 0.216.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: "@posthog/nuxt"
  dependency-version: 1.7.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: ai
  dependency-version: 6.0.174
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: nodemailer
  dependency-version: 8.0.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: nuxt
  dependency-version: 4.4.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: posthog-node
  dependency-version: 5.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: zod
  dependency-version: 4.4.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
…uction-dependencies-09cdec8072

chore(deps): bump the production-dependencies group with 14 updates
Update existing overrides:
- axios: >=1.13.6 -> >=1.16.1 (fixes prototype pollution, SSRF, CRLF injection,
  null byte injection, credential injection, header injection, DoS — 13 CVEs
  including GHSA-w9j2-pvgh-6h63, GHSA-pmwg-cvhr-8vh7, GHSA-3w6x-2g7m-8v23, etc.)
- devalue: >=5.6.4 -> >=5.8.1 (fixes DoS via sparse array — GHSA-77vg-94rm-hx3p)

Add new overrides:
- fast-xml-builder: >=1.2.0 (fixes attribute injection, comment value regex bypass
  — GHSA-5wm8-gmm8-39j9, GHSA-45c6-75p6-83cc)
- kysely: >=0.28.17 (fixes JSON-path traversal injection — GHSA-pv5w-4p9q-p3v2)
- simple-git: >=3.36.0 (fixes RCE — GHSA-hffm-xvc3-vprc)
- protobufjs: >=8.3.0 (fixes code injection, DoS, prototype injection — 7 CVEs
  including GHSA-66ff-xgx4-vchm, GHSA-2pr8-phx7-x9h3, GHSA-fx83-v9x8-x52w, etc.
  transitive via @opentelemetry/otlp-transformer 0.216+)
- Set fast-xml-parser to version 5.7.1
- Updated minimatch to 10.2.5
- Updated glob to 13.0.6
- Set @isaacs/brace-expansion to version 5.0.1
- Updated axios to version 1.16.1
- Updated rollup to 4.60.1
- Updated esbuild to 0.28.0
- Updated serialize-javascript to 7.0.5
- Updated underscore to 1.13.8
- Updated h3 to 1.15.11
- Updated unhead to 2.1.13
- Set uuid to version 14.0.0
- Set fast-xml-builder to version 1.2.0
- Kept kysely at version 0.28.17
- Kept simple-git at version 3.36.0
- Kept protobufjs at version 8.3.0
…in--components--reqcore

chore: release v1.5.0
- Updated @better-auth/sso from ^1.6.9 to ^1.6.16
- Updated better-auth from ^1.6.1 to ^1.6.16
- Updated nuxt from ^4.4.4 to ^4.4.8
- Updated @crowdin/cli from ^4.14.0 to ^4.14.2
- Updated @playwright/test from ^1.58.2 to ^1.60.0
- Updated @types/node from ^25.2.3 to ^25.9.3
- Updated tsx from ^4.21.0 to ^4.22.4
- Updated vitest from ^4.1.0 to ^4.1.8
- Updated vue-tsc from ^3.2.5 to ^3.3.4
- Updated wait-on from ^9.0.4 to ^9.0.10
- Updated fast-xml-parser from 5.7.1 to 5.8.0
JoachimLK and others added 28 commits July 11, 2026 15:58
- Update tab styling to use a pill-based navigation.
- Implement compact empty states for sections in the overview tab.
- Reduce vertical spacing and improve component density throughout the
  dashboard view.
Bumps the dev-dependencies group with 4 updates: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [tsx](https://github.com/privatenumber/tsx), [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) and [vue-tsc](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc).


Updates `@types/node` from 25.9.4 to 25.9.5
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `tsx` from 4.23.0 to 4.23.1
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](privatenumber/tsx@v4.23.0...v4.23.1)

Updates `vitest` from 4.1.9 to 4.1.10
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.10/packages/vitest)

Updates `vue-tsc` from 3.3.6 to 3.3.7
- [Release notes](https://github.com/vuejs/language-tools/releases)
- [Changelog](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/language-tools/commits/v3.3.7/packages/tsc)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 25.9.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: tsx
  dependency-version: 4.23.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: vitest
  dependency-version: 4.1.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: vue-tsc
  dependency-version: 3.3.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
…dependencies-ad78d71c5a

chore(dev-deps): bump the dev-dependencies group with 4 updates
…n-page

feat: Redesign application confirmation page
- Replace standard email invitations with integrated candidate
  conversation threads
- Add `RESEND_RECEIVING_API_KEY` and associated environment
  configuration for inbound email handling
- Limit outbound candidate messages for Free plan organizations
- Update database schema to track interview personal notes and message
  history
- Add manual fallback link for email delivery failures
Move database URL logic to a shared utility and integrate it into the
environment validation schema. This ensures Railway preview environments
with malformed `DATABASE_URL` strings are automatically corrected during
startup. Additionally, update the auth handler to return JSON errors
instead of throwing server errors to prevent masking validation
failures.
Update billing logic to track started candidate conversations rather
than
total outbound messages. This allows unlimited messaging within existing

threads for free users while capping the number of distinct
conversations.
- Add `candidateMessageAttachment` table for persistent storage
- Implement S3 upload/download and cleanup logic
- Update frontend components to allow file attachments
- Add validation and erasure support for attachments
- Added a security disclaimer to the attachment list for inbound files.
- Added a 21 MB limit check for the request content-length to prevent
  unnecessary memory buffering of oversized multipart requests.
- Move application status transition to interview stage to server-side
  logic upon interview creation to ensure consistency.
- Update the messaging panel layout to move secondary actions like
  "Open in inbox" and refresh into a more compact footer area.
- Add expand/collapse functionality to the message composer
- Refine visual styling for the messaging panel and attachments
- Protect against race conditions between email status webhooks and send
  operations by preventing status updates if a provider status exists
feat: Refactor interview scheduling and add messaging
- Enable required email verification for production sign-ups.
- Add denylist for disposable email domains to prevent account spam.
- Enforce rolling-hour outbound message rate limits for candidate emails
  and interview invitations.
- Update sign-in/up flows to handle unverified sessions and verification
  resends.
- Require Content-Length for attachment uploads to prevent unbounded
  memory buffering.
- Use advisory locks and idempotency checks to prevent concurrent
  submission races for interview responses.
…nd-guard

security: Implement email verification and anti-abuse safeguards
Changed email verification from a sign-in gate to an action-gate. Users
can now sign in immediately after registration, but must verify their
email before performing actions that trigger outbound emails (e.g.,
invitations or candidate messages). Added `EmailVerificationBanner.vue`
to guide users through the verification process post-sign-in.
Move the database URL resolution logic to the test fixtures and
automatically verify test account emails during the sign-up flow to
bypass email verification requirements.
…tion

security: Defer email verification to outbound actions
…in--components--reqcore

chore: release v1.6.0
… the resolved target

The conf was sourced AFTER the environment defaults, so an explicit
`UPSTREAM_BRANCH=v1.6.0 ./sync-upstream.sh` was silently overwritten by the
conf's UPSTREAM_BRANCH=main and merged upstream's HEAD instead — which is
exactly the ref we were avoiding, upstream main being red.

Environment now wins over the file, UPSTREAM_REF can name a tag directly, the
fetch pulls tags, and the script prints the resolved commit it is about to
merge rather than only a ref name.

Template defect: the identical copy is in claude-code-policy
policy/gate-template/sync-upstream.sh and in twenty/.
Upstream carries workflows this org cannot run — GitHub Actions is blocked
org-wide by a billing condition, so each one reports failure for an account
reason and checks nothing. This repo's gate is ./verify.sh, enforced by
.githooks/pre-push, and ./check-no-workflows.sh fails if they come back.

Target is the TAG v1.6.0, not upstream HEAD: upstream's main has been red
since 2026-08-11 (npm ci fails, EUSAGE / Missing oxc-parser@0.144.0; our
reqcore-inc/reqcore#271 fixes it and is still open). Re-checked at sync time
with gh run list --branch main; both Docker jobs still failing at 63a2968.

Four real conflicts, resolved by reading both sides:

  package.json  kept this fork's engines/private and the range-form security
                overrides, took upstream's licence/repository/homepage metadata,
                scripts and dependency bumps. Every override floor is now
                max(ours, upstream's v1.6.0 pin), so switching an exact pin to a
                range never lowers a version upstream had already reached.
  README.md     upstream deliberately dropped the openalternative/Railway badges
                and replaced the nav line — taken. Their CI badges stay out: they
                point at workflows this fork deletes and would report an account
                failure forever.
  tests/unit/ai-config-schema.test.ts
                duplicate intent — both sides independently repaired the same
                stale file. Upstream's assertions are a strict superset (GCP
                metadata SSRF, name trim, the 80-char cap, the maxTokens ceiling),
                so theirs stands, with this fork's record of HOW they went stale
                folded into the docblock.
  package-lock.json  regenerated, not hand-merged.

Carried changes that were NOT reimposed, because upstream's tree is right:

  server/utils/logger.ts  back to the POSITIONAL BatchLogRecordProcessor. The
                options-object form belongs to sdk-logs 0.221; this tree is on
                upstream's 0.219, whose resources ^2.8.0 already clears the
                @opentelemetry/core <2.8.0 advisory the 0.221 bump existed for.
                This one merged CLEANLY and broke typecheck — only the gate
                caught it.

Two deviations added, both recorded in docs/UPSTREAM-DIVERGENCE.md:

  * ai / @ai-sdk ceilings. The tail of every current AI-SDK major is under
    advisory, and provider-utils 4.0.41+ pulls undici ^5.29.0 — all of undici
    5.x is inside GHSA-vrm6-8vpv-qv8q, the one HIGH that fails the gate. No fix
    exists inside these majors; the fix is ai 7 / @ai-sdk 4, a breaking upgrade
    through the scoring path that needs its own review, not a sync.
  * unhead override raised to >=3.3.1. Upstream pins 2.1.13 while their own
    nuxt 4.4.8 asks for ^2.1.15, and nuxt 4.5.2 — the first release outside the
    nuxt advisory — needs ^3.3.1. The exact pin was already forcing their tree
    backwards, and it broke `npm ci` outright here.

Also fixes sync-upstream.sh, which merged upstream/main on the first attempt
despite an explicit UPSTREAM_BRANCH=v1.6.0: the conf was sourced after the
environment. Canonical copy fixed in claude-code-policy with a mutation-checked
regression test.

Verified, not assumed:
  ./verify.sh                                    exit 0 (556 tests, 44 files)
  npm audit --audit-level=high                   exit 0, 0 vulnerabilities
  npm ci in node:22.22-alpine (npm 10.9.8)       exit 0
  npm ci locally (npm 11.11.1)                   exit 0
  docker build (full 27 steps, real image)       exit 0
  ./check-no-workflows.sh                        exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants