Skip to content

Commit 084e053

Browse files
feat: symlink-aware llmstxt plugin
feat: snippet inlining and external directory support refactor: update llmstxt build docs prioritization feat: enhance llms-sym plugin with cycle protection and markdown cleaning
1 parent 4638dc5 commit 084e053

File tree

2 files changed

+580
-165
lines changed

2 files changed

+580
-165
lines changed

docusaurus.config.ts

Lines changed: 177 additions & 165 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,7 @@ const config: Config = {
3333
docs: {
3434
breadcrumbs: false,
3535
editUrl: editUrlFunction,
36-
exclude: [
37-
'adrs/README.md',
38-
'adrs/0000-architectural-decision-records.md',
39-
'adrs/template.md',
40-
],
36+
exclude: ['adrs/README.md', 'adrs/0000-architectural-decision-records.md', 'adrs/template.md'],
4137
numberPrefixParser: false,
4238
path: 'docs',
4339
beforeDefaultRemarkPlugins: [codeBlockSnippetsPlugin],
@@ -46,8 +42,8 @@ const config: Config = {
4642
[
4743
require('@docusaurus/remark-plugin-npm2yarn'),
4844
{
49-
sync: true, // Sync the tab page across the whole docs website.
50-
converters: ['pnpm', 'yarn'], // Package managers to use.
45+
sync: true, // Sync the tab page across the whole docs website.
46+
converters:['pnpm','yarn'], // Package managers to use.
5147
},
5248
],
5349
],
@@ -70,11 +66,10 @@ const config: Config = {
7066
// Copy tags into sidebar props so we can print tags in DocCard
7167
parseFrontMatter: async (params) => {
7268
const frontmatter = await params.defaultParseFrontMatter(params);
73-
frontmatter.frontMatter.sidebar_custom_props ??= {};
69+
frontmatter.frontMatter.sidebar_custom_props ??= {}
7470
// @ts-expect-error Wrong type
75-
frontmatter.frontMatter.sidebar_custom_props.tags =
76-
frontmatter.frontMatter.tags;
77-
return frontmatter;
71+
frontmatter.frontMatter.sidebar_custom_props.tags = frontmatter.frontMatter.tags
72+
return frontmatter
7873
},
7974
hooks: {
8075
onBrokenMarkdownLinks: process.env.NETLIFY ? 'warn' : 'throw',
@@ -89,13 +84,13 @@ const config: Config = {
8984
return {
9085
resolve: {
9186
symlinks: false,
92-
},
87+
}
9388
};
94-
},
89+
}
9590
};
9691
},
9792
[
98-
'docusaurus-plugin-llms',
93+
require.resolve('./plugins/llms-symlinks'),
9994
{
10095
docsDir: 'docs',
10196

@@ -116,12 +111,28 @@ const config: Config = {
116111
ignorePaths: ['docs'],
117112
},
118113

119-
// Only include Build docs plus the ROFL node guide
120-
includeOrder: ['docs/build/**', 'docs/node/run-your-node/rofl-node.*'],
121-
includeUnmatchedLast: false,
114+
// Prioritize Build docs in order: use-cases, ROFL, Sapphire, CLI, then rest of build.
115+
// Keep unmatched docs at the end so we don't drop anything.
116+
includeOrder: [
117+
'docs/build/use-cases/**',
118+
'docs/build/rofl/**',
119+
'docs/build/sapphire/**',
120+
'docs/build/tools/cli/**',
121+
'docs/build/**',
122+
],
123+
includeUnmatchedLast: true,
124+
// Mirror ADR exclusions from the main docs plugin to avoid boilerplate entries.
125+
ignoreFiles: [
126+
'docs/adrs/README.md',
127+
'docs/adrs/0000-architectural-decision-records.md',
128+
'docs/adrs/template.md',
129+
],
122130
},
123131
],
124-
['@docusaurus/plugin-client-redirects', redirectsOptions],
132+
[
133+
'@docusaurus/plugin-client-redirects',
134+
redirectsOptions,
135+
],
125136
],
126137
themes: [
127138
[
@@ -133,140 +144,141 @@ const config: Config = {
133144
} satisfies import('@easyops-cn/docusaurus-search-local').PluginOptions,
134145
],
135146
],
136-
themeConfig: {
137-
navbar: {
138-
logo: {
139-
alt: 'Oasis Docs',
140-
src: 'img/logo.svg',
141-
srcDark: 'img/logo_dark.svg', // Workaround for browsers that don't support @media (prefers-color-scheme: dark) in external SVGs.
142-
// Uncomment src and style below to enable christmas mode ;)
143-
//src: 'img/logo_christmas.svg',
144-
//srcDark: 'img/logo_christmas_dark.svg',
145-
//style: {marginTop: '-13px', marginLeft: '-10px', height: '3rem'},
146-
},
147-
items: [
148-
{
149-
label: 'Build',
150-
to: '/build/',
151-
activeBaseRegex: '/build/',
152-
position: 'left',
153-
},
154-
{
155-
label: 'Learn',
156-
to: '/general/',
157-
activeBaseRegex: '/general/',
158-
position: 'left',
159-
},
160-
{
161-
label: 'Get Involved',
162-
to: '/get-involved/',
163-
position: 'left',
164-
activeBaseRegex: `/get-involved/`,
165-
},
166-
{
167-
label: 'Run Node',
168-
to: '/node/',
169-
activeBaseRegex: '/node/',
170-
position: 'left',
171-
},
172-
{
173-
label: 'Develop Core',
174-
to: '/core/',
175-
position: 'left',
176-
activeBaseRegex: `/core/`,
177-
},
178-
{
179-
href: 'https://github.com/oasisprotocol',
180-
position: 'right',
181-
className: 'header-github-link',
182-
title: 'GitHub repository',
183-
'aria-label': 'GitHub repository',
184-
},
185-
{
186-
href: 'https://oasis.net/',
187-
position: 'right',
188-
className: 'header-www-link',
189-
title: 'Oasis website',
190-
'aria-label': 'Oasis website',
191-
},
192-
],
193-
},
194-
footer: {
195-
links: [
196-
{
197-
title: 'Tools',
198-
items: [
199-
{
200-
label: 'Explorer',
201-
to: 'https://explorer.oasis.io',
202-
},
203-
{
204-
label: 'Wallet',
205-
to: 'https://wallet.oasis.io',
206-
},
207-
{
208-
label: 'CLI',
209-
to: 'https://github.com/oasisprotocol/cli',
210-
},
211-
{
212-
label: 'Status',
213-
to: 'https://status.oasis.io',
214-
},
215-
],
216-
},
217-
{
218-
title: 'Build',
219-
items: [
220-
{
221-
label: 'Testnet Faucet',
222-
to: 'https://faucet.testnet.oasis.io/',
223-
},
224-
{
225-
label: 'Playground',
226-
to: 'https://playground.oasis.io/',
227-
},
228-
{
229-
label: 'API',
230-
to: 'https://api.docs.oasis.io/',
231-
},
232-
],
233-
},
234-
{
235-
title: 'Node',
236-
items: [
237-
{
238-
label: 'Mainnet',
239-
to: 'node/network/mainnet',
240-
},
241-
{
242-
label: 'Testnet',
243-
to: 'node/network/testnet',
244-
},
245-
],
147+
themeConfig:
148+
{
149+
navbar: {
150+
logo: {
151+
alt: 'Oasis Docs',
152+
src: 'img/logo.svg',
153+
srcDark: 'img/logo_dark.svg', // Workaround for browsers that don't support @media (prefers-color-scheme: dark) in external SVGs.
154+
// Uncomment src and style below to enable christmas mode ;)
155+
//src: 'img/logo_christmas.svg',
156+
//srcDark: 'img/logo_christmas_dark.svg',
157+
//style: {marginTop: '-13px', marginLeft: '-10px', height: '3rem'},
246158
},
247-
{
248-
title: 'Community',
249-
items: [
250-
{
251-
label: 'Discord',
252-
to: 'https://oasis.io/discord',
253-
},
254-
{
255-
label: 'Telegram',
256-
to: 'https://t.me/oasisprotocolcommunity',
257-
},
258-
{
259-
label: 'Youtube',
260-
to: 'https://www.youtube.com/channel/UC35UFPcZ2F1wjPxhPrSsESQ',
261-
},
262-
{
263-
label: 'GitHub',
264-
to: 'https://github.com/oasisprotocol',
265-
},
266-
],
267-
},
268-
],
269-
copyright: `
159+
items: [
160+
{
161+
label: 'Build',
162+
to: '/build/',
163+
activeBaseRegex: '/build/',
164+
position: 'left',
165+
},
166+
{
167+
label: 'Learn',
168+
to: '/general/',
169+
activeBaseRegex: '/general/',
170+
position: 'left',
171+
},
172+
{
173+
label: 'Get Involved',
174+
to: '/get-involved/',
175+
position: 'left',
176+
activeBaseRegex: `/get-involved/`,
177+
},
178+
{
179+
label: 'Run Node',
180+
to: '/node/',
181+
activeBaseRegex: '/node/',
182+
position: 'left',
183+
},
184+
{
185+
label: 'Develop Core',
186+
to: '/core/',
187+
position: 'left',
188+
activeBaseRegex: `/core/`,
189+
},
190+
{
191+
href: 'https://github.com/oasisprotocol',
192+
position: 'right',
193+
className: 'header-github-link',
194+
title: 'GitHub repository',
195+
'aria-label': 'GitHub repository',
196+
},
197+
{
198+
href: 'https://oasis.net/',
199+
position: 'right',
200+
className: 'header-www-link',
201+
title: 'Oasis website',
202+
'aria-label': 'Oasis website',
203+
},
204+
],
205+
},
206+
footer: {
207+
links: [
208+
{
209+
title: 'Tools',
210+
items: [
211+
{
212+
label: 'Explorer',
213+
to: 'https://explorer.oasis.io',
214+
},
215+
{
216+
label: 'Wallet',
217+
to: 'https://wallet.oasis.io',
218+
},
219+
{
220+
label: 'CLI',
221+
to: 'https://github.com/oasisprotocol/cli',
222+
},
223+
{
224+
label: 'Status',
225+
to: 'https://status.oasis.io',
226+
},
227+
],
228+
},
229+
{
230+
title: 'Build',
231+
items: [
232+
{
233+
label: 'Testnet Faucet',
234+
to: 'https://faucet.testnet.oasis.io/',
235+
},
236+
{
237+
label: 'Playground',
238+
to: 'https://playground.oasis.io/',
239+
},
240+
{
241+
label: 'API',
242+
to: 'https://api.docs.oasis.io/',
243+
},
244+
],
245+
},
246+
{
247+
title: 'Node',
248+
items: [
249+
{
250+
label: 'Mainnet',
251+
to: 'node/network/mainnet',
252+
},
253+
{
254+
label: 'Testnet',
255+
to: 'node/network/testnet',
256+
},
257+
],
258+
},
259+
{
260+
title: 'Community',
261+
items: [
262+
{
263+
label: 'Discord',
264+
to: 'https://oasis.io/discord',
265+
},
266+
{
267+
label: 'Telegram',
268+
to: 'https://t.me/oasisprotocolcommunity',
269+
},
270+
{
271+
label: 'Youtube',
272+
to: 'https://www.youtube.com/channel/UC35UFPcZ2F1wjPxhPrSsESQ',
273+
},
274+
{
275+
label: 'GitHub',
276+
to: 'https://github.com/oasisprotocol',
277+
},
278+
],
279+
},
280+
],
281+
copyright: `
270282
<p xmlns:cc="http://creativecommons.org/ns#" >Copyright © ${new Date().getFullYear()}
271283
by <a rel="cc:attributionURL dct:creator" property="cc:attributionName" href="https://oasis.net">
272284
Oasis Protocol Foundation</a>. We <a href="https://oasisprotocol.org/privacy-policy" target="_blank" rel="noopener noreferrer">respect your privacy</a>.
@@ -280,20 +292,20 @@ This does not include the Oasis software and the code examples, both of which ar
280292
licensed under <a href="https://www.apache.org/licenses/LICENSE-2.0"
281293
target="_blank" rel="license noopener noreferrer" style="display:inline-block;">
282294
Apache 2.0</a>. Built with &#x2665; and Docusaurus.</p>`,
283-
},
284-
prism: {
285-
theme: prismThemes.github,
286-
darkTheme: prismThemes.dracula,
287-
additionalLanguages: ['diff', 'rust', 'solidity', 'toml', 'ini'],
288-
},
289-
colorMode: {
290-
respectPrefersColorScheme: true,
291-
},
292-
} satisfies Preset.ThemeConfig,
293-
customFields: {
294-
NODE_ENV: process.env.NODE_ENV,
295-
REACT_APP_FATHOM_SITE_ID: process.env.REACT_APP_FATHOM_SITE_ID,
296-
},
295+
},
296+
prism: {
297+
theme: prismThemes.github,
298+
darkTheme: prismThemes.dracula,
299+
additionalLanguages: ['diff', 'rust', 'solidity', 'toml', 'ini'],
300+
},
301+
colorMode: {
302+
respectPrefersColorScheme: true,
303+
},
304+
} satisfies Preset.ThemeConfig,
305+
customFields: {
306+
NODE_ENV: process.env.NODE_ENV,
307+
REACT_APP_FATHOM_SITE_ID: process.env.REACT_APP_FATHOM_SITE_ID,
308+
}
297309
};
298310

299311
module.exports = config;

0 commit comments

Comments
 (0)