diff --git a/.changeset/collections-and-sync.md b/.changeset/collections-and-sync.md deleted file mode 100644 index 0196a72..0000000 --- a/.changeset/collections-and-sync.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"leadtype": minor ---- - -Add `collections` config and `leadtype sync` for declarative multi-source docs (closes #42, #44). - -- New `defineCollection({ repository?, ref?, cacheDir?, dir, prefix?, schema?, groups?, include?, exclude? })` helper, and `collections?: Record` on `DocsConfig`. Local-only collections omit `repository`; remote collections clone the repo at `ref` into `cacheDir` (default `.leadtype/sources/@`). Multiple collections sharing a `(repository, ref)` pair share one clone. -- New `leadtype sync` command: `--refresh` re-fetches and fast-forwards, `--offline` errors on cache miss, `--repo ` filters by repository URL substring. State tracked in `/.leadtype-sync.json`. -- `leadtype generate` learns `--sync`, `--refresh`, `--offline` (mutually exclusive). Default behavior errors clearly when a remote cache is missing, naming the affected collection(s). -- New project-level config: `leadtype.config.{ts,js,mjs,cjs}` looked up in cwd before the legacy per-docs-dir `docs.config.*` path. Setting both top-level `groups` and `collections` is rejected at load. -- `leadtype lint` discovers `leadtype.config.ts` automatically and runs lint per collection, applying each collection's `schema` if set. Violations are prefixed with `[collection:]`. -- `git`-not-installed surfaces as an actionable message instead of a raw `ENOENT`. - -Legacy projects (single docs folder, top-level `groups` in `docs.config.ts`, `--docs-dir` flags) are unchanged — the legacy code path is byte-identical to before. - -Known limitation: `leadtype sync` has no built-in timeout; a long network stall will hang the process. Track via `Ctrl-C` for now; a configurable per-operation timeout is planned. diff --git a/.changeset/i18n-docs-support.md b/.changeset/i18n-docs-support.md deleted file mode 100644 index 23b8cfd..0000000 --- a/.changeset/i18n-docs-support.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"leadtype": patch ---- - -Add first-class docs i18n support with locale-aware generation, localized source loading, per-locale search/LLM/readability artifacts, and a new `leadtype/i18n` helper surface. Locale-scoped search generation now uses URL-path document ids to align generated indexes with the source API. diff --git a/.changeset/leadtype-next-adapter.md b/.changeset/leadtype-next-adapter.md deleted file mode 100644 index fade2fd..0000000 --- a/.changeset/leadtype-next-adapter.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"leadtype": minor ---- - -Add `leadtype/next` framework adapter and formalize the core/adapter boundary. - -`leadtype/next` exposes three server-only helpers for Next.js App Router: `createGenerateStaticParams(...)`, `createLoadPageData(...)`, and `createDocsRouteHandler(...)`. The route handler wraps `createAgentMarkdownResponse` so a docs app can serve raw markdown, handle `Accept: text/markdown` negotiation, and detect AI user agents from a one-line `route.ts`. The companion `leadtype/next/client` subpath exports a `useLeadtypeSearch` React hook plus a framework-free `createSearchClient` factory that lazy-loads `search-index.json` / `search-content.json` and runs BM25 per keystroke. - -`react` is now an optional peer dependency for `leadtype/next/client`. Server-only consumers never pull in React. - -Documents the core/adapter boundary in a new `docs/reference/architecture` page: leadtype core has zero framework runtime deps, adapters live at flat `leadtype/` subpaths, and **no leadtype package — core or adapter — ever ships rendered DOM**. State primitives (hooks, composables, stores, handler factories) are allowed; ``-style components are not. The docs also name the planned native adapter shapes for Nuxt, SvelteKit, Astro, TanStack Start, Vue search, and Svelte search without exporting those APIs yet. The boundary is now enforced by tests in `packages/leadtype/src/internal/package-surface.test.ts` that scan import graphs and fail if framework runtimes leak into core or one adapter imports from another. diff --git a/.changeset/type-table-source-root.md b/.changeset/type-table-source-root.md deleted file mode 100644 index ee692d4..0000000 --- a/.changeset/type-table-source-root.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"leadtype": patch ---- - -Default `` and `` path resolution to the Leadtype source root instead of `process.cwd()/docs`. - -This fixes generated docs for source roots such as `.c15t` or `.leadtype`, where `path="./packages/..."` should resolve against the configured source root. Source-MDX consumers can now pass `typeTableBasePath` / `typeTableStrict` through `createDocsSource()` or use `createMdxSourcePlugins()` for bundler-level configuration. Failed type extraction now emits a visible warning by default and can fail generation in strict mode. - -This changes the bare `mdxSourcePlugins` default for bundler consumers: when Leadtype can see the source MDX file path, it derives the base path from the first `docs` path segment instead of always using `process.cwd()/docs`. Projects that intentionally keep referenced TypeScript files under their docs folder should switch to `createMdxSourcePlugins({ typeTableBasePath: path.resolve(process.cwd(), "docs") })`. diff --git a/packages/leadtype/CHANGELOG.md b/packages/leadtype/CHANGELOG.md index 9c8ef52..6e43cf4 100644 --- a/packages/leadtype/CHANGELOG.md +++ b/packages/leadtype/CHANGELOG.md @@ -1,5 +1,39 @@ # leadtype +## 0.2.0 + +### Minor Changes + +- 8b84f60: Add `collections` config and `leadtype sync` for declarative multi-source docs (closes #42, #44). + + - New `defineCollection({ repository?, ref?, cacheDir?, dir, prefix?, schema?, groups?, include?, exclude? })` helper, and `collections?: Record` on `DocsConfig`. Local-only collections omit `repository`; remote collections clone the repo at `ref` into `cacheDir` (default `.leadtype/sources/@`). Multiple collections sharing a `(repository, ref)` pair share one clone. + - New `leadtype sync` command: `--refresh` re-fetches and fast-forwards, `--offline` errors on cache miss, `--repo ` filters by repository URL substring. State tracked in `/.leadtype-sync.json`. + - `leadtype generate` learns `--sync`, `--refresh`, `--offline` (mutually exclusive). Default behavior errors clearly when a remote cache is missing, naming the affected collection(s). + - New project-level config: `leadtype.config.{ts,js,mjs,cjs}` looked up in cwd before the legacy per-docs-dir `docs.config.*` path. Setting both top-level `groups` and `collections` is rejected at load. + - `leadtype lint` discovers `leadtype.config.ts` automatically and runs lint per collection, applying each collection's `schema` if set. Violations are prefixed with `[collection:]`. + - `git`-not-installed surfaces as an actionable message instead of a raw `ENOENT`. + + Legacy projects (single docs folder, top-level `groups` in `docs.config.ts`, `--docs-dir` flags) are unchanged — the legacy code path is byte-identical to before. + + Known limitation: `leadtype sync` has no built-in timeout; a long network stall will hang the process. Track via `Ctrl-C` for now; a configurable per-operation timeout is planned. + +- e923e9f: Add `leadtype/next` framework adapter and formalize the core/adapter boundary. + + `leadtype/next` exposes three server-only helpers for Next.js App Router: `createGenerateStaticParams(...)`, `createLoadPageData(...)`, and `createDocsRouteHandler(...)`. The route handler wraps `createAgentMarkdownResponse` so a docs app can serve raw markdown, handle `Accept: text/markdown` negotiation, and detect AI user agents from a one-line `route.ts`. The companion `leadtype/next/client` subpath exports a `useLeadtypeSearch` React hook plus a framework-free `createSearchClient` factory that lazy-loads `search-index.json` / `search-content.json` and runs BM25 per keystroke. + + `react` is now an optional peer dependency for `leadtype/next/client`. Server-only consumers never pull in React. + + Documents the core/adapter boundary in a new `docs/reference/architecture` page: leadtype core has zero framework runtime deps, adapters live at flat `leadtype/` subpaths, and **no leadtype package — core or adapter — ever ships rendered DOM**. State primitives (hooks, composables, stores, handler factories) are allowed; ``-style components are not. The docs also name the planned native adapter shapes for Nuxt, SvelteKit, Astro, TanStack Start, Vue search, and Svelte search without exporting those APIs yet. The boundary is now enforced by tests in `packages/leadtype/src/internal/package-surface.test.ts` that scan import graphs and fail if framework runtimes leak into core or one adapter imports from another. + +### Patch Changes + +- c7fcbf6: Add first-class docs i18n support with locale-aware generation, localized source loading, per-locale search/LLM/readability artifacts, and a new `leadtype/i18n` helper surface. Locale-scoped search generation now uses URL-path document ids to align generated indexes with the source API. +- 844a94d: Default `` and `` path resolution to the Leadtype source root instead of `process.cwd()/docs`. + + This fixes generated docs for source roots such as `.c15t` or `.leadtype`, where `path="./packages/..."` should resolve against the configured source root. Source-MDX consumers can now pass `typeTableBasePath` / `typeTableStrict` through `createDocsSource()` or use `createMdxSourcePlugins()` for bundler-level configuration. Failed type extraction now emits a visible warning by default and can fail generation in strict mode. + + This changes the bare `mdxSourcePlugins` default for bundler consumers: when Leadtype can see the source MDX file path, it derives the base path from the first `docs` path segment instead of always using `process.cwd()/docs`. Projects that intentionally keep referenced TypeScript files under their docs folder should switch to `createMdxSourcePlugins({ typeTableBasePath: path.resolve(process.cwd(), "docs") })`. + ## 0.1.2 ### Patch Changes diff --git a/packages/leadtype/package.json b/packages/leadtype/package.json index 5a880d8..13f8e33 100644 --- a/packages/leadtype/package.json +++ b/packages/leadtype/package.json @@ -1,6 +1,6 @@ { "name": "leadtype", - "version": "0.1.2", + "version": "0.2.0", "description": "Framework-neutral docs pipeline tooling for MDX, LLM bundles, and search", "type": "module", "license": "MIT",