Skip to content

[pull] main from fern-api:main#726

Merged
pull[bot] merged 6 commits into
code:mainfrom
fern-api:main
May 13, 2026
Merged

[pull] main from fern-api:main#726
pull[bot] merged 6 commits into
code:mainfrom
fern-api:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented May 13, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

thesandlord and others added 6 commits May 13, 2026 11:36
* fix: docs dev hot reload not working for .mdx file changes

- Move previewResult update BEFORE sending finishReload to browser,
  ensuring the backend serves fresh data when the browser refreshes
- Wrap reload handler in try/finally to ensure isReloading flag is
  always reset, preventing permanent blocking of future reloads
- Add error logging for reload failures

Co-Authored-By: Sandeep Dinesh <sandeep@buildwithfern.com>

* chore: fix biome formatting

Co-Authored-By: Sandeep Dinesh <sandeep@buildwithfern.com>

* fix: move startReload before try block for paired start/finish messages

Co-Authored-By: Sandeep Dinesh <sandeep@buildwithfern.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…xtures (#15845)

* feat(seed): use generator-emitted verify.sh for ts-sdk fixtures

When the TypeScript SDK generator emits .fern/verify.sh alongside
generated code (PR #15718), the seed runner now prefers that script over
the duplicate build/test commands in seed/ts-sdk/seed.yml. This exercises
the same install/build/test contract as 'fern generate --local --verify'
on every seed CI run.

Detection is file-presence based, so:
- ts-sdk fixtures naturally use verify.sh (only generator emitting it today)
- Other generators fall back to seed.yml commands unchanged (FER-9681)
- Missing verify.sh in any fixture falls back to seed.yml (defensive)

The split between the generation semaphore and the separate script
container pool is preserved.

FER-10455

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* refactor(seed): run PostGenerationPipeline.VerificationStep for TS SDK fixtures

Replaces the direct `bash .fern/verify.sh` invocation in the seed script runner with the canonical PostGenerationPipeline + VerificationStep flow that `fern generate --local --verify` and Fiddle use in production.

- Adds `verify` / `verifyRunner` / `verifyValidatorVersion` to GenerationRunner.RunArgs and instantiates PostGenerationPipeline with only VerificationStep enabled after the generator finishes writing files. Mirrors the verifyOnlyPipelineEnabled branch in runLocalGenerationForWorkspace.

- LocalTestRunner and ContainerTestRunner now pass `verify: true` only for generators that emit `.fern/verify.sh` (today: `fernapi/fern-typescript-sdk` + the `fern-typescript-node-sdk` alias). The new `generatorEmitsVerifyScript` helper centralises this allow-list so we can extend it as FER-9681 lands additional language SDKs.

- TestRunner.run skips the seed.yml `scripts` block for those generators since the pipeline-driven VerificationStep is the canonical replacement. The block stays in seed.yml as a fallback for any non-TS generator and as the build/test recipe consumed by external tooling.

- Validator image tag override: seed runs the generator at the `:local` tag, but no `:local` validator image is built today. Passing `verifyValidatorVersion: "latest"` makes VerificationStep pull the published `fernapi/fern-typescript-sdk-validator:latest` \u2014 the closest analog to what a customer sees from `fern generate --local --verify` against a published generator.

- Removes the temporary `resolveScriptPhaseCommands` helper and its unit tests, and reverts the corresponding edits in ContainerScriptRunner / LocalScriptRunner / seed/ts-sdk/seed.yml. Seed CI now exercises the same validator-container code path customers hit.

Refs FER-10455. FER-9681 tracks extending self-verification to the remaining language SDK generators.

* refactor(seed): harden verify pipeline failure handling + unit-test it

Extract assertVerifyPipelineSucceeded into its own module so it can be
unit-tested in isolation. Key the failure check off pipelineResult.success
(canonical signal) rather than steps.verify.success, which only catches
the verify-step-returned-failure branch — the orchestrator silently leaves
steps.verify unset when the step throws before recording a result (e.g.
validator image fails to pull, container fails to start), so the previous
shape would silently no-op on those failures. Detail message preference:
validator stderr > pipelineResult.errors > step errorMessage > generic
fallback.

Adds assertVerifyPipelineSucceeded.test.ts (7 cases: happy path, verify.sh
absent, validator-stderr failure, no-result-recorded failure, errorMessage
fallback, generic fallback, validator-stderr-vs-errors precedence).

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: jsklan <100491078+jsklan@users.noreply.github.com>
Co-authored-by: dsinghvi <10870189+dsinghvi@users.noreply.github.com>
@pull pull Bot locked and limited conversation to collaborators May 13, 2026
@pull pull Bot added the ⤵️ pull label May 13, 2026
@pull pull Bot merged commit d9972d8 into code:main May 13, 2026
@pull pull Bot added the ⤵️ pull label May 13, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants