Skip to content

Frozen snapshot: silos-stable#774

Open
jthrilly wants to merge 5134 commits into
silos-stable-basefrom
silos-stable
Open

Frozen snapshot: silos-stable#774
jthrilly wants to merge 5134 commits into
silos-stable-basefrom
silos-stable

Conversation

@jthrilly

@jthrilly jthrilly commented Jun 5, 2026

Copy link
Copy Markdown
Member

This PR backs a frozen Netlify deployment of the silos-stable branch.

  • silos-stable is pinned to the head of next at the time of branching (commit 057be822).
  • It is intentionally not kept in sync with next — future pushes to next will not update this branch or its deployment.
  • The base is silos-stable-base, an isolated branch pointing at the repo's root commit, so the diff is self-contained and this PR does not imply merging into main.

Do not merge — this is a tracking/deploy artifact only.

🤖 Generated with Claude Code

jthrilly and others added 30 commits April 23, 2026 19:31
Providers (components/Providers) already wraps DialogProvider, and both
Fresco and Storybook render children inside Providers. The four removed
usages nested a second DialogProvider underneath:

- InterviewShell (Fresco renders inside Providers)
- StoryInterviewShell (Storybook preview decorator uses Providers)
- ProtocolSchemas.stories decorator
- ArrayField.stories decorator

Dialog library's own documentation stories and unit tests keep their
explicit DialogProvider — those are scoped by design.
- Remove unused disableSync prop from StoryInterviewShell and all story
  call sites. Sync is now always a no-op in stories.
- Extract shared isValidAssetType guard to lib/interviewer/contract/assets.ts
  so live (mapInterviewPayload) and preview (page.tsx) share one source
  of truth for the Prisma-to-ResolvedAsset type coercion.
Dialogs opened during an interview (e.g. pedigree wizard steps) render
components that call useSelector. DialogProvider renders its dialogs at
its own location in the tree, not where useDialog() is called — so a
single app-root DialogProvider (in components/Providers) leaves dialog
content mounting OUTSIDE the Redux Provider that lives inside
InterviewShell, causing 'could not find react-redux context value' at
the first useSelector call.

The two-level nesting is intentional: outer DialogProvider for app
dialogs, inner one inside the Redux Provider for interview-scoped
dialogs. Restored in both InterviewShell and StoryInterviewShell with
an explanatory comment.
…e or clear

move session token to useRef, generate fresh uuid after retreive, clear, and resetKey changes. avoids unpredictable billing
Bumps [uuid](https://github.com/uuidjs/uuid) from 13.0.0 to 14.0.0.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md)
- [Commits](uuidjs/uuid@v13.0.0...v14.0.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-version: 14.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@prisma/adapter-neon](https://github.com/prisma/prisma/tree/HEAD/packages/adapter-neon) from 7.7.0 to 7.8.0.
- [Release notes](https://github.com/prisma/prisma/releases)
- [Commits](https://github.com/prisma/prisma/commits/7.8.0/packages/adapter-neon)

---
updated-dependencies:
- dependency-name: "@prisma/adapter-neon"
  dependency-version: 7.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@aws-sdk/s3-request-presigner](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/packages/s3-request-presigner) from 3.1029.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/packages/s3-request-presigner/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.1037.0/packages/s3-request-presigner)

---
updated-dependencies:
- dependency-name: "@aws-sdk/s3-request-presigner"
  dependency-version: 3.1037.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) from 6.5.0 to 6.7.0.
- [Release notes](https://github.com/webpro-nl/knip/releases)
- [Commits](https://github.com/webpro-nl/knip/commits/knip@6.7.0/packages/knip)

---
updated-dependencies:
- dependency-name: knip
  dependency-version: 6.7.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [mapbox-gl](https://github.com/mapbox/mapbox-gl-js) from 3.21.0 to 3.22.0.
- [Release notes](https://github.com/mapbox/mapbox-gl-js/releases)
- [Changelog](https://github.com/mapbox/mapbox-gl-js/blob/main/CHANGELOG.md)
- [Commits](mapbox/mapbox-gl-js@v3.21.0...v3.22.0)

---
updated-dependencies:
- dependency-name: mapbox-gl
  dependency-version: 3.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
- Add isDevelopment flag to interviewer contract; host wrappers source it
  from env.NODE_ENV, removing direct process.env reads (and lint disables)
  inside lib/interviewer
- Memoize Redux store creation in InterviewShell and ref-anchor onSync so
  inline host callbacks don't trigger store recreation on re-render
- Replace VersionedProtocol with CurrentProtocol throughout runtime code:
  contract type narrows to schema 8, protocol selectors drop their
  defensive casts, and previewProtocol now uses the same JSON-parsing
  Prisma extension as protocol (factored into a shared helper)
- Storybook payload bridge imports the shared isValidAssetType instead of
  redefining validAssetTypes locally
- Rewrite getAssetManifest reduce as Object.fromEntries
…_yarn/next/mapbox-gl-3.22.0

build(deps): bump mapbox-gl from 3.21.0 to 3.22.0
…_yarn/next/knip-6.7.0

build(deps-dev): bump knip from 6.5.0 to 6.7.0
…_yarn/next/aws-sdk/s3-request-presigner-3.1037.0

build(deps): bump @aws-sdk/s3-request-presigner from 3.1029.0 to 3.1037.0
…_yarn/next/prisma/adapter-neon-7.8.0

build(deps): bump @prisma/adapter-neon from 7.7.0 to 7.8.0
…_yarn/next/uuid-14.0.0

build(deps): bump uuid from 13.0.0 to 14.0.0
Move lib/pedigree-layout into lib/interviewer/Interfaces/FamilyPedigree
since the FamilyPedigree stage is its only consumer.
…arch-token

Use UUIDv4 for mapbox search session_token
- Bump @aws-sdk/client-s3 to match @aws-sdk/s3-request-presigner
  (private-handlers type collision between divergent SDK versions)
- Drop unused exports flagged by knip; convert NodeShapes and
  ParentEdgeSchema to plain type definitions since neither was
  used at runtime
- Ignore .worktrees/** in eslint to fix lint OOM and spurious errors
jthrilly and others added 27 commits May 15, 2026 13:35
pnpm 10+ resolves the global bin directory as `$PNPM_HOME/bin`, but
pnpm/action-setup sets PNPM_HOME to `.../node_modules/.bin` (already a
bin dir), so `pnpm add -g` ends up writing to `.bin/bin` which isn't on
PATH. Using `npm install -g` sidesteps the issue since setup-node puts
npm's global bin on PATH.
v2 of the shared action fixes the pnpm 10+ global-bin-dir issue by
configuring `pnpm config set global-bin-dir "$PNPM_HOME"`, which lets
`pnpm add -g` work again. Revert the netlify workflow's npm workaround
back to `pnpm add -g netlify-cli` accordingly. Pinned to commit SHA per
shared-action best practice.
…ols-meta

feat(api): add protocols-meta endpoint
`mode: delete-on-completion` posts a comment that auto-deletes when the
job ends, so it requires `message` or `file-path`. The intent here is
to remove any prior failure comment when this run succeeds — that's
`mode: delete`, which works by `comment-tag` alone.
…push

Two related changes for the next-branch (sandbox-dev) Netlify project,
which has auto-builds disabled and is fed exclusively via API trigger:

1. Add scripts/netlify-deploy.sh — triggers a build via the Netlify API,
   then polls /deploys/<id> until a terminal state. Exits non-zero on
   error/failed/rejected/skipped/canceled or on timeout, so the CI step
   actually fails when the underlying deploy fails (previously the curl
   fire-and-forget reported success even for broken deploys).

2. Add netlify-deploy-production.yml — fires on push to next and calls
   the same script to trigger a production-context build. Netlify's own
   `pnpm build:platform` command runs migrations + initialization, so
   the workflow itself does no DB setup.

Also restrict the preview workflow to PRs whose base is next, so it
doesn't fire for PRs targeting main (which use a different deploy
path).
With auto-builds re-enabled, Netlify deploys pushes to next directly
via its git integration. The explicit API-triggered production workflow
is redundant. Preview workflow + scripts/netlify-deploy.sh stay (still
used to trigger and gate-on-outcome for PR previews).
Netlify auto-deploys pushes to next, but Netlify notifications on this
project don't support production-deploy events. Add a workflow that
fires on push to next, finds the deploy by commit SHA, polls it to a
terminal state, and reports the outcome as a real GitHub Actions check
(so it shows up alongside other PR/commit checks and can be marked
required).

The new scripts/netlify-await-deploy.sh handles the two-phase polling:
discovery (deploy may not exist immediately after push) then state
polling. Shares no code with scripts/netlify-deploy.sh by design — the
trigger flow and the observe flow are short enough that a shared
polling helper is more friction than the ~25 line duplication.
- Bump @codaco/fresco-ui to 2.11.0, @codaco/interview to 1.0.0-alpha.21,
  @codaco/protocol-validation to 11.6.0, @codaco/shared-consts to 5.1.0
- Add @codaco/protocol-utilities (synthetic interview generation split out
  of @codaco/interview); import generateNetwork from there
- Source StageMetadataSchema from @codaco/shared-consts (now regular zod,
  not zod/mini) — it's no longer exported from @codaco/interview
- Replace local components/DataTable with @codaco/fresco-ui/DataTable;
  keep the nuqs URL-state wrappers under components/DataTable/nuqs
- Inline the small ColumnFiltersStateSchema in useClientDataTable, its
  only consumer
- Drop @faker-js/faker, luxon, @types/luxon — only used by the removed
  DataTable stories and date filter
…wing

fresco-ui's TableCell hard-codes whitespace-nowrap on every td. The
activity feed's free-form message text couldn't wrap, forcing the column
wider than the available space and showing a horizontal scrollbar. Wrap
the cell content in a div with whitespace-normal so the text wraps;
nowrap on the td still does its job for badge/timestamp columns.
Bumps [fflate](https://github.com/101arrowz/fflate) from 0.8.2 to 0.8.3.
- [Release notes](https://github.com/101arrowz/fflate/releases)
- [Changelog](https://github.com/101arrowz/fflate/blob/master/CHANGELOG.md)
- [Commits](101arrowz/fflate@v0.8.2...v0.8.3)

---
updated-dependencies:
- dependency-name: fflate
  dependency-version: 0.8.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [tsx](https://github.com/privatenumber/tsx) from 4.22.0 to 4.22.3.
- [Release notes](https://github.com/privatenumber/tsx/releases)
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)
- [Commits](privatenumber/tsx@v4.22.0...v4.22.3)

---
updated-dependencies:
- dependency-name: tsx
  dependency-version: 4.22.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…_yarn/next/fflate-0.8.3

build(deps-dev): bump fflate from 0.8.2 to 0.8.3
…_yarn/next/tsx-4.22.2

build(deps-dev): bump tsx from 4.22.0 to 4.22.3
- Update minor/patch deps (AWS SDK, base-ui, motion, posthog, storybook,
  vitest, sass, etc.) to newest policy-compliant versions
- Bump chromatic 16->17 and concurrently 9->10 (major)
- Update @codaco/* packages: fresco-ui 2.11.1, interview alpha.22,
  protocol-validation 11.6.1, tailwind-config alpha.19
- Migrate toast calls from 'type' to 'variant' prop (fresco-ui 2.11.1 API change)
- Add minimumReleaseAgeExclude entries for freshly-published @codaco packages
- @codaco/fresco-ui 2.11.1 -> 2.11.2
- @codaco/interview 1.0.0-alpha.22 -> 1.0.0-alpha.23
- @codaco/network-exporters 1.0.2 -> 1.0.3
- Refresh minimumReleaseAgeExclude entries, prune stale versions
Include the acting user in the details of admin-triggered activity feed
events (interview/token/participant/protocol/user deletion and creation,
data export, synthetic data) so the feed can be used to audit user
activity. Participant-driven interview events are left unchanged.

Add an "Export CSV" button next to the type filter that downloads the
entire activity feed (timestamp, type, details) via a new
getActivitiesForExport server action, mirroring the participants export.
…-upload-reliability

fix(import): make large protocol uploads reliable + import UX
Copilot AI review requested due to automatic review settings June 5, 2026 14:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

@coderabbitai

coderabbitai Bot commented Jun 5, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 11ce5a95-f140-44a7-a76e-5d95679b3735

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch silos-stable

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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.

5 participants