Skip to content

Commit ac27c6d

Browse files
antfuclaude
andauthored
docs: glob error code pages and rehost devframe nav (#316)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent dfeffc2 commit ac27c6d

7 files changed

Lines changed: 177 additions & 151 deletions

File tree

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ packages/kit/skills
1818
devframe/packages/devframe/skills
1919
.rolldown
2020
*.tsbuildinfo
21-
docs/.vitepress/cache
21+
**/.vitepress/cache
2222
.turbo
2323
.context
2424

devframe/docs/.vitepress/config.ts

Lines changed: 59 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,70 @@
1+
import type { DefaultTheme } from 'vitepress'
2+
import { fileURLToPath } from 'node:url'
3+
import { globSync } from 'tinyglobby'
14
import { defineConfig } from 'vitepress'
25
import { withMermaid } from 'vitepress-plugin-mermaid'
3-
import devframeSidebar from './sidebar'
6+
7+
const errorsDir = fileURLToPath(new URL('../errors/', import.meta.url))
8+
9+
function listErrorCodes(prefix: string): string[] {
10+
return globSync(`${prefix}*.md`, { cwd: errorsDir })
11+
.map(f => f.replace(/\.md$/, ''))
12+
.sort()
13+
}
14+
15+
function guideItems(prefix: string): DefaultTheme.NavItemWithLink[] {
16+
return [
17+
{ text: 'Introduction', link: `${prefix}/guide/` },
18+
{ text: 'Devtool Definition', link: `${prefix}/guide/devtool-definition` },
19+
{ text: 'Adapters', link: `${prefix}/guide/adapters` },
20+
{ text: 'RPC', link: `${prefix}/guide/rpc` },
21+
{ text: 'Shared State', link: `${prefix}/guide/shared-state` },
22+
{ text: 'Streaming', link: `${prefix}/guide/streaming` },
23+
{ text: 'Dock System', link: `${prefix}/guide/dock-system` },
24+
{ text: 'Commands', link: `${prefix}/guide/commands` },
25+
{ text: 'When Clauses', link: `${prefix}/guide/when-clauses` },
26+
{ text: 'Messages & Notifications', link: `${prefix}/guide/messages` },
27+
{ text: 'Structured Diagnostics', link: `${prefix}/guide/diagnostics` },
28+
{ text: 'Terminals', link: `${prefix}/guide/terminals` },
29+
{ text: 'Client', link: `${prefix}/guide/client` },
30+
{ text: 'Standalone CLI', link: `${prefix}/guide/standalone-cli` },
31+
{ text: 'Nuxt Helper', link: `${prefix}/guide/nuxt` },
32+
{ text: 'Agent-Native (experimental)', link: `${prefix}/guide/agent-native` },
33+
]
34+
}
35+
36+
export function devframeSidebar(prefix = ''): DefaultTheme.SidebarItem[] {
37+
return [
38+
{
39+
text: 'Guide',
40+
items: guideItems(prefix),
41+
},
42+
{
43+
text: 'Error Reference',
44+
link: `${prefix}/errors/`,
45+
collapsed: true,
46+
items: listErrorCodes('DF').map(code => ({
47+
text: code,
48+
link: `${prefix}/errors/${code}`,
49+
})),
50+
},
51+
]
52+
}
53+
54+
export function devframeNav(prefix = ''): DefaultTheme.NavItemWithLink[] {
55+
return [
56+
...guideItems(prefix),
57+
{ text: 'Error Reference', link: `${prefix}/errors/` },
58+
]
59+
}
460

561
export default withMermaid(defineConfig({
662
title: 'DevFrame',
763
description: 'Framework-neutral foundation for building generic DevTools — RPC layer, hosts, and adapters.',
864
themeConfig: {
965
nav: [
10-
{ text: 'Guide', link: '/guide/' },
11-
{ text: 'Errors', link: '/errors/' },
66+
{ text: 'Guide', items: guideItems('') },
67+
{ text: 'Error Reference', link: '/errors/' },
1268
],
1369
sidebar: devframeSidebar(),
1470
search: {

devframe/docs/.vitepress/sidebar.ts

Lines changed: 0 additions & 36 deletions
This file was deleted.

devframe/docs/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"devDependencies": {
1111
"devframe": "workspace:*",
1212
"mermaid": "catalog:docs",
13+
"tinyglobby": "catalog:deps",
1314
"vitepress": "catalog:docs",
1415
"vitepress-plugin-mermaid": "catalog:docs"
1516
}

docs/.vitepress/config.ts

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,26 @@ import { resolve } from 'node:path'
22
import { fileURLToPath } from 'node:url'
33
import { transformerTwoslash } from '@shikijs/vitepress-twoslash'
44
import { extendConfig } from '@voidzero-dev/vitepress-theme/config'
5+
import { globSync } from 'tinyglobby'
56
import { defineConfig } from 'vitepress'
67
import {
78
groupIconMdPlugin,
89
groupIconVitePlugin,
910
} from 'vitepress-plugin-group-icons'
1011
import { withMermaid } from 'vitepress-plugin-mermaid'
11-
import devframeSidebar from '../../devframe/docs/.vitepress/sidebar'
12+
import { devframeNav, devframeSidebar } from '../../devframe/docs/.vitepress/config'
1213
import { version } from '../../package.json'
1314

1415
const repoRoot = resolve(fileURLToPath(new URL('.', import.meta.url)), '../..')
1516

17+
const errorsDir = fileURLToPath(new URL('../errors/', import.meta.url))
18+
19+
function listErrorCodes(prefix: string): string[] {
20+
return globSync(`${prefix}*.md`, { cwd: errorsDir })
21+
.map(f => f.replace(/\.md$/, ''))
22+
.sort()
23+
}
24+
1625
const DevToolsKitNav = [
1726
{ text: 'Introduction', link: '/kit/' },
1827
{ text: 'DevTools Plugin', link: '/kit/devtools-plugin' },
@@ -89,7 +98,7 @@ export default extendConfig(withMermaid(defineConfig({
8998
text: 'DevTools Kit',
9099
items: DevToolsKitNav,
91100
},
92-
{ text: 'DevFrame', link: '/devframe/' },
101+
{ text: 'DevFrame', items: devframeNav('/devframe') },
93102
{
94103
text: `v${version}`,
95104
items: [
@@ -142,18 +151,18 @@ export default extendConfig(withMermaid(defineConfig({
142151
{
143152
text: 'DevTools Kit (DTK)',
144153
collapsed: true,
145-
items: Array.from({ length: 32 }, (_, i) => {
146-
const code = `DTK${String(i + 1).padStart(4, '0')}`
147-
return { text: code, link: `/errors/${code}` }
148-
}),
154+
items: listErrorCodes('DTK').map(code => ({
155+
text: code,
156+
link: `/errors/${code}`,
157+
})),
149158
},
150159
{
151160
text: 'Rolldown DevTools (RDDT)',
152161
collapsed: true,
153-
items: [
154-
{ text: 'RDDT0001', link: '/errors/RDDT0001' },
155-
{ text: 'RDDT0002', link: '/errors/RDDT0002' },
156-
],
162+
items: listErrorCodes('RDDT').map(code => ({
163+
text: code,
164+
link: `/errors/${code}`,
165+
})),
157166
},
158167
],
159168
},

docs/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"@voidzero-dev/vitepress-theme": "catalog:docs",
1515
"devframe": "workspace:*",
1616
"mermaid": "catalog:docs",
17+
"tinyglobby": "catalog:deps",
1718
"vitepress": "catalog:docs",
1819
"vitepress-plugin-group-icons": "catalog:docs",
1920
"vitepress-plugin-mermaid": "catalog:docs"

0 commit comments

Comments
 (0)