3.98.0

(feat): Infer streaming from text/event-stream MIME type in OpenAPI specs. Endpoints that return text/event-stream content are now automatically treated as SSE streaming endpoints without requiring the x-fern-streaming extension.

3.96.0

(feat): Allow underscores in x-fern-sdk-group-name values. Previously, leading underscores (e.g. _internal) were stripped by lodash’s camelCase, making it impossible to use underscore-prefixed group names for marking private/internal modules. Both the OpenAPI-to-Fern file name conversion and the IR casings generator now preserve leading and trailing underscores.

3.95.6

(fix): Disable commit signing and skip hooks for remaining internal throwaway git commits (PersistedTypescriptProject, replay-init) to avoid triggering prompts (e.g. Touch ID on macOS, 1Password SSH agent).

3.95.5

(fix): Optimize throwaway git operations in LocalTaskHandler to avoid triggering commit signing prompts (e.g. Touch ID on macOS). Internal git commits used for .fernignore resolution now disable GPG/SSH signing, skip hooks, and inline user config to reduce spawned git processes.

3.95.4

(fix): Improve YAML parsing error message when scoped npm package names (e.g. @scope/package) are used without quotes in generators.yml. The @ character is a reserved YAML anchor symbol, so unquoted values like package-name: @fixa-dev/server produce a confusing “bad indentation” error. The CLI now detects this pattern and shows a hint suggesting the value be wrapped in double quotes.

3.95.3

(chore): Revert AI example enhancement to use fdr-lambda-docs endpoint instead of the new registry.

3.95.2

(fix): Exclude .fern/metadata.json from the git diff used for AUTO version analysis. Previously, changes to .fern/metadata.json (which includes cliVersion) were counted as meaningful SDK changes, causing CLI-only version bumps to trigger unnecessary SDK releases. The diff now uses :(exclude).fern/metadata.json so that metadata-only changes result in an empty diff and generation is skipped.

3.95.1

(fix): Make operationId optional for webhooks in OpenAPI 3.1 specs. When a webhook does not specify an operationId, the webhook key name is used as the fallback identifier instead of skipping the webhook entirely.