v3.2.0
Changelog version 3.2.0
Changelog v3.2.0
Feature
- feat(ask-ai): multi-provider support, dev-mode token chip,
useConfig-driven client config.- Author: @jesusalcaladev
- Commit:
6904710
provider— provider preset name (default'openai').systemPrompts— per-provider system-prompt override map. Matching provider key wins over globalsystemPrompt.devMode— whentrue, the chat UI renders a token-consumption chip (provider/model, prompt/completion/total tokens, elapsed ms) below each assistant response. Auto-enabled whenprocess.env.NODE_ENV !== 'production'.handler.ts: API key lookup now usesproviderEnvKeyinstead of hardcodedOPENAI_API_KEY.ServerResponseimport moved fromvitetonode:http.- Adapter
eventToSseswitches now have a default case (TS2366). - Middleware narrows
questiontostringvia localsafeQuestion(TS2322 fix). - Reduce package weight for downstream consumers.
- Author: @jesusalcaladev
- Commit:
2bc1045
- Boltdocs 3.2.0 — Nitro Phase 1 performance optimizations
- Author: @jesusalcaladev
- Commit:
46e288d
Bug Fix
- Fix mermaid pages having extra scroll space at the bottom
- Author: @jesusalcaladev
- Commit:
64fe83a
- Fix body scroll bug: changed
min-height: 100%toheight: 100%; overflow: hiddenon html/body in reset.css to prevent the browser scrollbar from appearing on all pages - Mermaid SVG cleaning now uses DOMParser to only strip sizing attributes from the root
<svg>element, preserving inner element styles (transforms, font-size) that mermaid uses for node positioning - Added
not-proseclass to mermaid wrapper to prevent Tailwind typography plugin from adding margins to the SVG - Added
margin: 0 !importantto mermaid SVG CSS as additional safety - Added
overflow: hiddento the root SVG element via cleanSvg - Moved
<style>tag inside the mermaid container div to avoid prose layout interference - Updated dependencies [, ]:
- Commit:
46e288d
- Commit:
- @bdocs/ssg@0.3.0
- @bdocs/unist-utils@0.2.0
Performance
- SSR output consolidated: Moved from
.vite-react-ssg-temp/to.boltdocs/build/ssr/— all build artifacts now live under a single.boltdocs/directory - Server build skip preserved: SSR output no longer deleted when client code hasn't changed, making warm builds skip the expensive SSR Vite bundle (~40s saved)
- Mtime cache in memory:
getFileMtime()now uses an in-memory TTL cache (2s) instead offs.statSync()on every call — 5.9x faster for repeated stat calls - Client hash single stat:
computeClientCodeHash()reduced from 3 stat calls per file to 1 — 66% fewer syscalls - Hash meta persistence:
hash-meta.jsonstores file count + last mtime for fast cache validation without full directory scans - Dev gzip skipped:
TransformCacheno longer gzips cache shards in dev mode
Other
- MDX cache key for dev: Uses file path + mtime instead of content hash in dev mode — cache survives restarts when files haven't changed
- Bounded route parsing:
Promise.allreplaced withrunWithConcurrency(32)to prevent memory pressure and I/O contention - docCache loaded flag:
docCache.load()skips disk read when already in memory - HMR O(1) module graph lookup: Pre-built lowercase index replaces brute-force O(N) scan for faster content edits
- Prewarming with route priority: Index pages and getting-started are prewarmed first; 150ms delay to avoid CPU contention with first page request
- Pipeline parallel steps: SEO validation and type generation run concurrently via
addParallelSteps() - Pipeline timing logs: Per-step timing reported after build completion
- Critical CSS concurrency: Beasties processor runs at
concurrency: min(cpus, 4)instead of 1 - Shiki WASM engine: Oniguruma WASM engine replaces JavaScript regex — 13% faster syntax highlighting
- Phase 1 of the new plugin API. The unist/mdast/hast utilities that used to
- Author: @jesusalcaladev
- Commit:
2bc1045
- Phase 2 of the new plugin API: enrich
PluginContextwith four- Author: @jesusalcaladev
- Commit:
2bc1045
packages/core/src/node/plugins/plugin-context.ts— new modulePluginLifecycleManager.createContext()— extended to inject them.packages/core/src/node/plugin/virtual-modules.ts—resolveIdand- New
__resetPluginContextStateForTests()test helper is exported - The
eagerflag onadd()is accepted but not yet wired into the - The diagnostics queue is process-local. For multi-instance
- Phase 7 of the new plugin API: transform middleware pipeline and lazy slot
- Author: @jesusalcaladev
- Commit:
2bc1045
packages/core/src/shared/types.ts—PluginTransformMiddleware,packages/core/src/node/plugins/plugin-types.ts—middlewareonpackages/core/src/node/plugins/plugin-context.ts—packages/core/src/node/plugins/plugin-lifecycle.ts—packages/core/src/node/plugin/layout-slots.ts—lazyinpackages/core/src/node/schema/config.ts—lazyandmiddlewarepackages/core/src/client/hooks/use-slot-registry.ts—packages/core/src/client/components/docs-layout-default.tsx—packages/core/src/client/virtual.d.ts—slotLazyFlagsdeclarationpackages/core/tests/slots/layout-slots-generator.test.ts— 3 new lazy
Last updated on October 18, 2026