Skip to content

Commit 7bfe6a3

Browse files
authored
Merge branch 'main' into fern/writer-pr-attribution
2 parents ccce056 + 34891c3 commit 7bfe6a3

230 files changed

Lines changed: 3519 additions & 1284 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CODEOWNERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
* @devalog
2+

.github/workflows/stale-bot.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
stale:
1313
runs-on: ubuntu-latest
1414
steps:
15-
- uses: actions/stale@v9
15+
- uses: actions/stale@v10
1616
with:
1717
stale-pr-message: 'This PR is stale because it has been open 25 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
1818
close-pr-message: 'This PR was closed because it has been inactive for 5 days after being marked stale.'

.vale/styles/FernStyles/Acronyms.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,4 @@ exceptions:
105105
- UUID
106106
- WSS
107107
- GEO
108+
- SPDX

.vale/styles/FernStyles/Headings.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,4 @@ exceptions:
8585
- MDN
8686
- WSS
8787
- GEO
88+
- OG

fern/apis/fai/openapi.json

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4513,6 +4513,58 @@
45134513
"type": "string",
45144514
"title": "Diff",
45154515
"description": "The git diff to analyze for generating a commit message"
4516+
},
4517+
"language": {
4518+
"anyOf": [
4519+
{
4520+
"type": "string"
4521+
},
4522+
{
4523+
"type": "null"
4524+
}
4525+
],
4526+
"title": "Language",
4527+
"description": "The SDK programming language, e.g. 'typescript', 'python', 'java'. When provided, enables language-specific breaking change rules and behavioral analysis.",
4528+
"default": null
4529+
},
4530+
"previous_version": {
4531+
"anyOf": [
4532+
{
4533+
"type": "string"
4534+
},
4535+
{
4536+
"type": "null"
4537+
}
4538+
],
4539+
"title": "Previous Version",
4540+
"description": "The current published version before this change, e.g. '1.2.3'. Provided for context only \u2014 not included in the commit message.",
4541+
"default": null
4542+
},
4543+
"prior_changelog": {
4544+
"anyOf": [
4545+
{
4546+
"type": "string"
4547+
},
4548+
{
4549+
"type": "null"
4550+
}
4551+
],
4552+
"title": "Prior Changelog",
4553+
"description": "The last 3 changelog entries for this SDK. Used to match existing commit message style. Empty string or null if none.",
4554+
"default": null
4555+
},
4556+
"spec_commit_message": {
4557+
"anyOf": [
4558+
{
4559+
"type": "string"
4560+
},
4561+
{
4562+
"type": "null"
4563+
}
4564+
],
4565+
"title": "Spec Commit Message",
4566+
"description": "The commit message from the API spec repository that triggered this SDK generation. Used as a hint for the intent of the change. Empty string or null if unavailable.",
4567+
"default": null
45164568
}
45174569
},
45184570
"type": "object",
@@ -4528,6 +4580,12 @@
45284580
"title": "Message",
45294581
"description": "The AI-generated commit message summarizing the changes in the diff"
45304582
},
4583+
"changelog_entry": {
4584+
"type": "string",
4585+
"title": "Changelog Entry",
4586+
"description": "User-facing release note for CHANGELOG.md and GitHub Releases. Describes the impact on SDK consumers, not implementation details. Empty string for PATCH and NO_CHANGE.",
4587+
"default": ""
4588+
},
45314589
"version_bump": {
45324590
"$ref": "#/components/schemas/VersionBump",
45334591
"description": "The recommended semantic version bump: MAJOR for breaking changes, MINOR for new features, PATCH for bug fixes and other changes, NO_CHANGE for empty diffs"
@@ -7641,4 +7699,4 @@
76417699
"x-fern-server-name": "Local"
76427700
}
76437701
]
7644-
}
7702+
}

fern/apis/generators-yml/definition/generators.yml

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -167,15 +167,22 @@ types:
167167
- v1
168168
- v2
169169

170+
OverridesSchema:
171+
discriminated: false
172+
docs: Paths to the overrides configuration. Can be a single path or an array of paths applied sequentially.
173+
union:
174+
- string
175+
- list<string>
176+
170177
APIDefinitionWithOverridesSchema:
171178
properties:
172179
path: APIDefinitionPathSchema
173180
origin:
174181
type: optional<string>
175182
docs: The URL of the API definition origin, from which the file should be polled.
176183
overrides:
177-
type: optional<string>
178-
docs: Path to the OpenAPI or AsyncAPI overrides
184+
type: optional<OverridesSchema>
185+
docs: Paths to the overrides configuration. Can be a single path or an array of paths applied sequentially.
179186
audiences:
180187
type: optional<list<string>>
181188
docs: Audiences that you would like to filter to
@@ -190,8 +197,8 @@ types:
190197
type: string
191198
docs: The path to the `.proto` directory root (e.g. `proto`).
192199
overrides:
193-
type: optional<string>
194-
docs: Path to the overrides configuration
200+
type: optional<OverridesSchema>
201+
docs: Paths to the overrides configuration. Can be a single path or an array of paths applied sequentially.
195202
local-generation:
196203
type: optional<boolean>
197204
docs: Whether to compile the `.proto` files locally. By default, we generate remotely.
@@ -324,14 +331,14 @@ types:
324331
properties:
325332
openapi: string
326333
origin: optional<string>
327-
overrides: optional<string>
334+
overrides: optional<OverridesSchema>
328335
namespace: optional<string>
329336
settings: optional<OpenAPISettingsSchema>
330337

331338
OpenRPCSpecSchema:
332339
properties:
333340
openrpc: string
334-
overrides: optional<string>
341+
overrides: optional<OverridesSchema>
335342
namespace: optional<string>
336343

337344
AsyncAPISettingsSchema:
@@ -346,7 +353,7 @@ types:
346353
properties:
347354
asyncapi: string
348355
origin: optional<string>
349-
overrides: optional<string>
356+
overrides: optional<OverridesSchema>
350357
namespace: optional<string>
351358
settings: optional<AsyncAPISettingsSchema>
352359

@@ -367,4 +374,4 @@ types:
367374

368375
ProtobufSpecSchema:
369376
properties:
370-
proto: ProtobufDefinitionSchema
377+
proto: ProtobufDefinitionSchema

fern/assets/styles.css

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,7 @@ h1, h2, h3 {
741741
display: flex;
742742
flex-direction: row;
743743
align-items: center;
744+
border-bottom: none;
744745
}
745746
}
746747

@@ -831,7 +832,7 @@ h1, h2, h3 {
831832

832833
.a-btn {
833834
text-decoration: none !important;
834-
font-weight: 400 !important;
835+
font-weight: 500 !important;
835836
width: fit-content !important;
836837

837838
img {
@@ -1179,3 +1180,11 @@ h1, h2, h3 {
11791180
}
11801181
}
11811182
/*** END -- HIGHLIGHTED FRAME STYLING ***/
1183+
1184+
/*** START -- ASK AI PANEL STYLING ***/
1185+
@media (min-width: 1024px) {
1186+
.fern-ask-ai-panel-header {
1187+
height: 76px;
1188+
}
1189+
}
1190+
/*** END -- ASK AI PANEL STYLING ***/

fern/components/FernFooter.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export const FernFooter = () => {
3636

3737
{/* Footer Links */}
3838
<div className="footer-links">
39-
<div className="footer-bottom-text"> © 2025 Fern • Located in Brooklyn, NY </div>
39+
<div className="footer-bottom-text"> © 2026 Fern • Birch Solutions, Inc., a Postman company</div>
4040
{/* Newsletter Signup */}
4141
{/* <div className="newsletter-container">
4242
<div className="newsletter-label">Subscribe to our updates</div>
@@ -81,4 +81,4 @@ export const FernFooter = () => {
8181
</div>
8282
</footer>
8383
);
84-
};
84+
};

fern/docs.yml

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -514,13 +514,17 @@ redirects:
514514
- source: /learn/openapi-definition/extensions/webhooks
515515
destination: /learn/api-definitions/openapi/endpoints/webhooks
516516
- source: /learn/api-definitions/openapi/overlay-customizations
517-
destination: /learn/api-definitions/overview/overrides
517+
destination: /learn/api-definitions/openapi/overrides
518518
- source: /learn/api-definitions/asyncapi/overlay-customizations
519-
destination: /learn/api-definitions/overview/overrides
519+
destination: /learn/api-definitions/asyncapi/overrides
520520
- source: /learn/api-definitions/openrpc/overlay-customizations
521-
destination: /learn/api-definitions/overview/overrides
521+
destination: /learn/api-definitions/openrpc/overrides
522522
- source: /learn/api-definitions/grpc/overlay-customizations
523-
destination: /learn/api-definitions/overview/overrides
523+
destination: /learn/api-definitions/grpc/overrides
524+
- source: /learn/api-definitions/overview/overrides
525+
destination: /learn/api-definitions/asyncapi/overrides
526+
- source: /learn/api-definitions/overrides
527+
destination: /learn/api-definitions/asyncapi/overrides
524528
- source: /learn/api-definitions/openapi/automatic-updates
525529
destination: /learn/api-definitions/openapi/sync-your-open-api-specification
526530

@@ -549,48 +553,52 @@ redirects:
549553
destination: /learn/docs/ai-features/ask-fern/overview
550554
- source: /learn/docs/ai-features/ask-fern/how-it-works
551555
destination: /learn/docs/ai-features/ask-fern/overview
556+
- source: /learn/docs/ai-features/ask-fern/features
557+
destination: /learn/docs/ai-features/ask-fern/overview
558+
- source: /learn/docs/ai-features/ask-fern/setup
559+
destination: /learn/docs/ai-features/ask-fern/overview
552560
- source: /learn/ask-fern/configuration/setup
553-
destination: /learn/docs/ai-features/ask-fern/setup
561+
destination: /learn/docs/ai-features/ask-fern/overview
554562
- source: /learn/ask-fern/configuration/guidance
555563
destination: /learn/docs/ai-features/ask-fern/guidance
556564
- source: /learn/ask-fern/configuration/content-sources
557565
destination: /learn/docs/ai-features/ask-fern/content-sources
558566
- source: /learn/ask-fern/features/analytics
559-
destination: /learn/docs/ai-features/ask-fern/features#analytics
567+
destination: /learn/docs/ai-features/ask-fern/overview
560568
- source: /learn/ask-fern/features/citations
561-
destination: /learn/docs/ai-features/ask-fern/features#citations
569+
destination: /learn/docs/ai-features/ask-fern/overview
562570
- source: /learn/ask-fern/features/insights
563-
destination: /learn/docs/ai-features/ask-fern/features#insights
571+
destination: /learn/docs/ai-features/ask-fern/overview
564572
- source: /learn/ask-fern/features/evaluation
565-
destination: /learn/docs/ai-features/ask-fern/features#evaluation
573+
destination: /learn/docs/ai-features/ask-fern/overview
566574
- source: /learn/ask-fern/features/rbac
567-
destination: /learn/docs/ai-features/ask-fern/features#role-based-access-control
575+
destination: /learn/docs/ai-features/ask-fern/overview
568576
- source: /learn/ask-fern/features/slack-app
569577
destination: /learn/docs/ai-features/ask-fern/slack-app
570578
- source: /learn/ask-fern/api-reference/overview
571579
destination: /learn/docs/ai-features/ask-fern/api-reference/overview
572-
580+
573581
# Legacy Ask Fern redirects
574582
- source: /learn/ai-search/customer-showcase
575583
destination: https://buildwithfern.com/customers
576584
- source: /learn/ai-search/overview
577585
destination: /learn/docs/ai-features/ask-fern/overview
578586
- source: /learn/ai-search/custom-prompting
579-
destination: /learn/docs/ai-features/ask-fern/setup
587+
destination: /learn/docs/ai-features/ask-fern/overview
580588
- source: /learn/ai-search/citations
581-
destination: /learn/docs/ai-features/ask-fern/features#citations
589+
destination: /learn/docs/ai-features/ask-fern/overview
582590
- source: /learn/ask-fern/overview
583591
destination: /learn/docs/ai-features/ask-fern/overview
584592
- source: /learn/ask-fern/customer-showcase
585593
destination: https://buildwithfern.com/customers
586594
- source: /learn/ask-fern/citations
587-
destination: /learn/docs/ai-features/ask-fern/features#citations
595+
destination: /learn/docs/ai-features/ask-fern/overview
588596
- source: /learn/ask-fern/custom-prompting
589-
destination: /learn/docs/ai-features/ask-fern/setup
597+
destination: /learn/docs/ai-features/ask-fern/overview
590598
- source: /learn/ask-fern/configuration/locations-and-datasources
591-
destination: /learn/docs/ai-features/ask-fern/setup
599+
destination: /learn/docs/ai-features/ask-fern/overview
592600
- source: /learn/ask-fern/configuration/custom-prompts
593-
destination: /learn/docs/ai-features/ask-fern/setup
601+
destination: /learn/docs/ai-features/ask-fern/overview
594602
- source: /learn/ask-fern/configuration/documents
595603
destination: /learn/docs/ai-features/ask-fern/content-sources
596604
- source: /learn/ask-fern/features/scribe-slack-app
@@ -602,7 +610,7 @@ redirects:
602610
- source: /learn/ai-search/getting-started/:slug*
603611
destination: /learn/docs/ai-features/ask-fern/:slug*
604612
- source: /learn/ai-search/features/:slug*
605-
destination: /learn/docs/ai-features/ask-fern/features
613+
destination: /learn/docs/ai-features/ask-fern/overview
606614
- source: /learn/ai-search/:slug*
607615
destination: /learn/docs/ai-features/ask-fern/:slug*
608616
- source: /learn/ask-fern/api-reference/:slug*
@@ -652,7 +660,7 @@ redirects:
652660
- source: /learn/api-definitions/openrpc/extensions/others
653661
destination: /learn/api-definitions/openrpc/extensions/overview
654662
- source: /learn/api-definitions/grpc/extensions/:slug*
655-
destination: /learn/api-definitions/overview/overrides#definition-specific-extensions
663+
destination: /learn/api-definitions/grpc/overrides
656664

657665
# ============================================================================
658666
# ADDITIONAL /LEARN/* REDIRECTS FROM CRAWLED URLS FROM GOOGLE SEARCH CONSOLE
@@ -792,7 +800,7 @@ redirects:
792800

793801
# Ask Fern redirects (additional)
794802
- source: /learn/ask-fern/features/custom-fa-qs
795-
destination: /learn/docs/ai-features/ask-fern/features#citations
803+
destination: /learn/docs/ai-features/ask-fern/overview
796804
- source: /learn/ai-search/getting-started/ai-search-customer-showcase
797805
destination: https://buildwithfern.com/showcase#ask-fern-customers
798806
- source: /learn/ask-fern/api-reference/conversations/get-conversation

0 commit comments

Comments
 (0)