Releases: inthhq/leadtype
Release list
leadtype@0.4.1
Patch Changes
- fd79078: Use named OpenAPI request body examples in generated code samples and avoid repeating them as standalone request examples before the snippets.
leadtype@0.4.0
Minor Changes
-
40a0215: Batch Git frontmatter enrichment during
convertAllMdx(closes #108).When
enrichFrontmatterFromGitis enabled, batch conversion now reads Git history once for the docs tree and maps results back to each converted file instead of spawninggit logper file. A 120-file synthetic docs benchmark measured the Git metadata read dropping from ~2.36s of per-file process spawning to ~12ms for the batched read; end-to-end conversion added ~27ms over no enrichment.The enrichment remains best-effort for shallow clones, missing Git, and untracked files.
lastModifiedstill comes from the latest file commit, whilelastAuthornow falls back to the latest non-bot author when the newest commit was authored by automation. -
40a0215: Add generated API catalog and homepage discovery Link helpers for agent-readable sites.
generateandgenerateAgentArtifacts()now emit/.well-known/api-catalogalongside robots and sitemap artifacts, route handlers can serve it dynamically, andleadtype/llm/readabilityexports helpers for RFC 8288Linkheaders that advertise the catalog, service docs, service description, and sitemap. Robots output also includes scanner-friendly AI crawler aliases and renders Content-Signals inai-train, search, ai-inputorder. -
40a0215: Use Satteri and the native markdown pipeline for agent-facing markdown conversion.
convertAllMdx,convertMdxFile,convertMdxToMarkdown, andleadtype generatenow parse MDX through Satteri and run native markdown transforms/stringification for agent-facing output.The legacy agent-side Remark conversion path has been removed. This removes
markdownEngine, theleadtype/remarkcompatibility export, and legacy aliases such asdefaultRemarkPlugins,legacyDefaultMarkdownTransforms, andbuiltinFlattenerPlugins. Source-MDX bundler APIs underleadtype/mdxandleadtype/mdx/sourceremain intact. -
40a0215: Add an opt-in
pruneoption toconvertAllMdxthat removes orphaned.md
outputs when a source page is deleted or renamed.Previously a renamed page left its old
.mdbehind inoutDir— a live URL
with stale content that leaked into sitemaps, link checks, and search
indexing — and every consumer had to hand-roll the same garbage-collection
step. Withprune: true,convertAllMdxdeletes any.mdunderoutDir
that the current source set did not produce, then removes directories the
deletions emptied.Guardrails:
- Only
.mdfiles are candidates; other files sharingoutDirare never
touched, and symlinks are never followed. - Pruning is skipped (with a warning) when any page fails to convert or when
srcDirresolves to zero pages, so a partial or misconfigured run never
mass-deletes output. pruneKeepglobs (relative tooutDir) exempt.mdfiles written by
other tools, e.g.pruneKeep: ["sitemap.md", "mirrors/**"]. Nothing is
exempted implicitly.- While pruning, the run holds the same per-
outDirlock as
leadtype generate(reentrant when generate itself is the caller;
LEADTYPE_NO_LOCK=1opts out), so a prune cannot delete output a
concurrent run just wrote.
- Only
-
40a0215: Add a
generatedAtoption to the agent artifact generators so manifests and
timestamp fallbacks can be reproduced byte-for-byte across deterministic builds. -
40a0215: Make
leadtype lintconfig-aware, so a bareleadtype lintvalidates the
same source tree — with the same routing rules — thatgeneratebuilds.- Config discovery: with no
--src, lint findsleadtype.config.*at
the project root ordocs.config.*in./docs/./content, exactly like
generate, and lints that tree. Flags still override everything. A config
that fails to load reports a lint failure instead of crashing. - Mount-aware link checking: routes are derived with the config's
mountsapplied, and links under every mount prefix (e.g./changelog/v1)
are validated like/docs/...links — including catching stale/docs/...
paths to pages that moved under a mount. Links under generated trees (the
OpenAPIoutputprefix) are assumed valid, since those routes only exist
afterleadtype generate. - The config's own links are linted (new
config-linkrule): curated
navigationentries matching no page andllms.sectionslinks to missing
routes are errors; feedsource.urlPrefixvalues matching no pages and
redirects.removedpaths that are live again are warnings. Previously
these bypassed lint and only surfaced when generate blew up. - New
lintblock in the docs config:lint.ignorereplaces the default
ignore globs,lint.unknownFieldSeveritysets the unknown-field default,
andlint.rulesremaps any rule's severity ("off"/"warn"/
"error") across the CLI and thelintDocs()API (newrules,mounts,
andassumeValidLinkPrefixesoptions).
- Config discovery: with no
-
7f91c26: Add the opt-in
external-linklint rule — the scheduled-CI half of the
dead-link story (internal links are checked deterministically in PR CI;
external URLs need the network, so they run on a schedule instead of in the
merge gate).- Enable with
leadtype lint --external-links(scheduled workflows) or a
lint.rules["external-link"]severity in the docs config; a
copy-pasteable weekly GitHub Actions recipe ships in the validate-in-ci
docs. - Robust by default: HEAD with GET fallback for servers that reject HEAD,
one retry on network hiccups, rate-limiting (429) treated as skip rather
than failure, per-URL dedupe across pages, and bounded concurrency. - Confirmed-live URLs are cached under
node_modules/.cache/leadtype/
(default 7 days,lint.externalLinks.ttlHours); failures are never
cached, so a site that comes back is noticed on the next run.
lint.externalLinks.ignoremutes known-flaky URL prefixes. - Violations carry the page file and line like every other rule.
- Enable with
-
40a0215: Expand
leadtype lint's internal link coverage (closes the gaps tracked in
#86):- Relative links (
./sibling,../guides/x, extension optional) resolve
against their source file and validate like absolute links; links that
climb out of the docs tree are errors. - Anchor validation (new
invalid-anchorrule): same-page#fragment
links and fragments on cross-page docs links must match a heading anchor on
the target page. Anchors are extracted from the rendered markdown with the
same slugger and duplicate handling that builds the site TOC — includes
expanded — so lint and the rendered site cannot disagree. (Running this on
leadtype's own docs immediately found three anchors that had been silently
broken on the live site.) - Redirect-aware messages: with redirect tracking enabled, an
invalid-linkwhose target matches a lockfile redirect reports
"moved to<new path>— update the link" instead of a bare missing-route
error. - Link-check scope and non-goals are documented in the lint reference.
- Relative links (
-
40a0215: Add parse-level code snippet linting (
snippet:parse, the first tier of
#93): every fenced code block with a known language must parse — TS/TSX/JS
via the TypeScript parser (skipped when the optionaltypescriptpeer
dependency isn't installed), JSON and YAML via real parsers.Docs snippets are deliberately fragmentary, so the checker is
fragment-tolerant before it reports: bare API signatures,key: value
config excerpts, object- and type-shape blocks, sibling JSX examples, and
...ellipsis lines all parse without annotation, as do JSON comments,
trailing commas, and multi-document YAML. Anything else can be marked
deliberate with a twoslash-style// @noErrorsline — the same directive
the upcoming typecheck tier honors.Tuned on leadtype's own 51-page docs corpus: zero annotations needed, and
the only findings were real bugs (a JSX component in atsfence and
config excerpts that couldn't parse standalone). -
40a0215: Add opt-in TypeScript snippet typechecking (
snippet:types) — the flagship
tier of code-snippet linting: withlint: { snippets: { typecheck: true } }
in the docs config, module-shapedts/tsxsnippets are assembled into
virtual modules and typechecked against your project'stsconfig.jsonand
realnode_modules. When a package API changes, every doc example still
calling the old API fails lint — docs that can't rot.- Twoslash conventions:
// @filename: name.tsbuilds multi-file examples
(parts can import each other),// @checkopts a fragment in,
// @noErrorsopts anything out, and// ---cut---hides setup lines
from rendered output while they still typecheck. A new default markdown
transform strips all directives from generated mirrors and converted
output, so the authoring convention never reaches readers. - Scope is deliberately practical: only snippets containing
import/export
are checked by default (the copy-pasteable ones), imports of packages your
project doesn't install degrade toanyinstead of failing, and JSX
environment gaps (no React installed) are tolerated — strictness applies
to everything that resolves, most importantly the documented package
itself. - All snippets check in one shared compiler program, so cost stays flat
regardless of snippet count.
- Twoslash conventions:
-
331a912: Add a
ChildrenTypeRegistryaugmentation hook toleadtype/mdx, so
framework consumers typechildrenonce per...
leadtype@0.3.1
Patch Changes
- 5fc0f1a: Fix the docs MCP server 500ing in serverless production deployments.
leadtype/mcppreviously loaded@modelcontextprotocol/sdkthrough a variable-specifier dynamic import, which bundlers and serverless file tracing (Vercel/NFT) cannot see — so deployments that resolved the SDK locally shipped functions without it and every/mcprequest failed with "the optional peer dependency @modelcontextprotocol/sdk is not installed". The SDK is now imported statically bymcp/server,mcp/http, andmcp/stdio, so tracing includes it automatically. Importingleadtype/mcptherefore requires the SDK to be installed (it was already required to serve requests); the CLI still runs every non-serving command — includingleadtype mcp --check— without it by loading the server lazily. - 5fc0f1a: Recognize current retrieval AI agents in robots.txt policies and
isAgentUserAgent: Claude-SearchBot, Claude-User, Perplexity-User, Gemini-Deep-Research, DeepSeekBot, and Meta-ExternalFetcher join the retrieval crawler list, soblock-trainingpolicies keep them allowed andblock-aipolicies actually cover them instead of letting them fall through to theUser-agent: *group. - 5fc0f1a: Add NLWeb support under a new
leadtype/nlwebentry.createAskHandler()mounts a Web-standard NLWeb/askendpoint over the generated docs artifacts — list-mode answers backed by the same search index the docs MCP server uses, returning{ query_id, _meta, results }documents (each result carriesurl/name/site/score/description/schema_object) or SSEstart/result/completeevents when streaming is requested viaprefer.streaming,?streaming=, or anAccept: text/event-streamheader. Settingagents.nlweb.enabledin the docs config makesleadtype generateemit a schema.org JSONL feed at/feeds/schema.jsonl, a/schema-map.xmllisting it, and aSchemamap:directive in robots.txt (also available directly viarenderRobotsTxt/createRobotsTxtResponse's newschemamapUrlPath). - 5fc0f1a: Richer MCP discovery surface. The generated server card now carries top-level
name,description,serverUrl, andtools[](static summaries of the enabled docs tools, configurable viaagents.mcp.tools) alongside the existingserverInfo/transportfields, matching what agent-readiness scanners read.generateadditionally writes a discovery copy of the card to/.well-known/mcp.json, and the rootllms.txtgains an## Agent Interfacessection linking the MCP endpoint, its server card, and the NLWeb/askendpoint when those surfaces are enabled.
leadtype@0.3.0
Minor Changes
- b141edd: Add browser-side WebMCP docs tools, framework lifecycle helpers, and CLI scaffolding.
- 9bf1f94: Add
generateAgentArtifacts()toleadtype/llm— a bring-your-own-pages entry point that emits the full agent artifact set (llms.txt plus the.well-knowncopy, per-page Markdown mirrors at${urlPath}.mdwithcanonical_url/last_updatedfrontmatter, sitemap.xml/sitemap.md, robots.txt with Content-Signals, and a root-level agent-readability manifest) from an in-memory page list instead of an.mdxdocs tree, so CMS-backed blogs, marketing sites, and data-driven pages can publish agent artifacts without the docs pipeline.emitRootCrawlerFiles: falsesupports microfrontend fragments whose host app owns the origin-level crawler files. Root URL mounts (urlPrefix: "/") now resolve correctly instead of emitting//pagepaths. - 873c833: Move generate capability toggles toward config-driven defaults.
leadtype generatenow enriches markdown with Git-derivedlastModifiedandlastAuthorby default, skipping safely when git metadata is unavailable. Bundle-mode MCP artifacts are inferred fromagents.mcp.enabled, while the legacy--mcp,--enrich-git, andinit --webmcpshortcut flags remain supported with deprecation warnings. - a223c49: Add config-driven RSS and Atom feed generation for URL-prefixed docs content.
Patch Changes
-
9bf1f94: Reorganize the docs into capability-led sections (Docs Pipeline, AEO & Agent Readability, Writing for Agents, Search & AI Answers, Package Docs, Integrations) with a new AEO overview page mapping every agent artifact to the agent-readability spec and scoring rubrics. Page URLs moved (
/docs/build/*and/docs/sources/*→/docs/pipeline|aeo|integrations/*,/docs/authoring/*→/docs/writing/*); the bundled AGENTS.md and docs ship the new structure, and leadtype.dev serves 301 redirects from the old paths. -
85a8893: Skip bot and automation authors when deriving generated markdown
lastAuthor, falling back to the latest human commit for the file while preservinglastModifiedfrom the latest commit. Projects can add repo-specific automation names withgit.ignoredAuthorsindocs.config.ts. -
fa6d9b8: Exclude
shared/and_shared/route segments from public docs search and answer sources by default, withsearch: trueas an explicit opt-in for public shared pages. -
fc23b34: Emit
SoftwareApplicationalongsideSoftwareSourceCodefor library site JSON-LD so product identity checks can recognize documented packages. -
e61351a: Emit Agent Skills discovery manifests in the v0.2.0 format ($schema plus per-entry type/url/sha256-hex digest, with legacy path/integrity kept for older consumers) and support richer Organization JSON-LD identity fields from docs config — email, sameAs, contactPoint, and address — with fail-loud validation of unknown contactPoint/address keys.
-
4a61a33: Emit sitemap and robots artifacts at the site root only so generated crawler discovery files are effective without duplicate
/docscopies. -
100e4db: Fix docs search crashes and superlinear query latency on large corpora.
Indexing a corpus containing terms that collide with
Object.prototypemembers (for example a doc mentioningconstructor) crashedcreateDocsSearchIndex, and querying such a term crashedsearchDocson aJSON.parse'd index. The term postings record is now built with a null prototype and query-time lookups (including synonym expansion) useObject.hasOwnguards.searchDocsalso did a linear chunk scan and built an excerpt for every scored chunk, making query cost O(matched chunks × total chunks). Chunk-id lookups now use a cached map and excerpts are built only for results that survive the limit, with identical ranking. On a 20k-chunk corpus this cuts p95 query latency from ~665 ms to ~186 ms and makes latency scale linearly with corpus size.
leadtype@0.2.1
Patch Changes
- ac5f294: Support string-literal property names in
AutoTypeTableextraction and add a real c15t docs repro pipeline for source-config driven generation. - ac5f294: Add mount-aware docs generation for serving source subtrees at top-level URLs and allow root navigation page entries such as
"index"without wrapping them in a group. - ac5f294: Add
defineFrameworkNavigationfor shared framework docs sections.
leadtype@0.2.0
Minor Changes
-
dd55845: Add
sourceConfiginheritance for remote collections, making the pinned source
docs UI path first-class.Docs UI repos can now set
sourceConfig: trueon a remotedefineCollection
to loaddocs.config.{ts,js,mjs,cjs}from the synced source collection and
inherit source-ownednavigation, legacygroups,frontmatterSchema, and
flatteners. Explicit collection fields in the docs UI repo still win, while
site-owned fields such asproduct,organization,agents,llms, output
paths, and framework routes stay in the UI repo.Use this when a package/source repo owns MDX and docs semantics, but a separate
docs UI repo owns rendering, deployment, and a reviewed sourceref. -
e115ca0: Flesh out
/.well-known/agent-card.jsonas a proper A2A AgentCard.It now emits the standard fields —
name,description,url(the MCP endpoint when enabled,
else the site),version,capabilities,defaultInputModes/defaultOutputModes, and each
skill as{ id, name, description, tags }— plusprovideranddocumentationUrl.provider
reuses the top-levelorganization(same entity) anddocumentationUrlisproduct.docs
(default<baseUrl>/docs); both are overridable. The previous non-standardmcpfield is
dropped (the MCP endpoint is now the standardurl). -
e115ca0: Add an agent-skills surface:
/.well-known/agent-skills+ a bundledSKILL.md(DESIGN-2.md Phase 3).leadtype generatenow emits a discoverableSKILL.mdsurface (the
open Agent Skills format used by Claude Code, Cursor, Codex, Copilot, …). Default-on:- Site mode:
/.well-known/agent-skills/index.json(discovery manifest withsha256integrity)<name>/SKILL.mdper skill + a minimal/.well-known/agent-card.json(A2A).
- Bundle mode (
--bundle): a singleSKILL.mdat the package root, next toAGENTS.md.
The auto docs-skill is a thin pointer that adapts to the surface — bundled
AGENTS.md/docs
offline, else/llms.txt+ the MCP server whenagents.mcp.enabled. Declare capability skills via
agents.skills.items[](name,description,license?,compatibility?,allowedTools?,
body/bodyPath);docsSkill: falsedrops the auto one,agentCard: falseskips the card. New
generateSkillArtifactsexported fromleadtype/llm.Dogfooded:
apps/exampleemits the site surface (and now scores 100/100 onleadtype score);
leadtype's own published tarball ships aSKILL.md. - Site mode:
-
e115ca0: Make
renderSiteJsonLdconfig-driven, and bake the JSON-LD options into the manifest.The site-level JSON-LD graph is derived from the top-level
organization(→Organization)
andproduct(kind/category/repository→SoftwareApplication/SoftwareSourceCode),
flowing throughgenerate→generateAgentReadabilityArtifacts→ theagent-readability.json
manifest.renderSiteJsonLd(manifest, overrides?)reads it (explicit overrides still win), so a
host emits the site graph once withrenderSiteJsonLd(manifest)— no need to repeat the
org/software options at the call site.Dogfooded in
apps/example: the shareddocs.config.tssetsorganization+product.kind: "library"(→SoftwareSourceCode) +agents.robots, marks Changelogoptional: true, and
the root layout emitsrenderSiteJsonLd(manifest)so every page'sTechArticle@id
references resolve. -
e115ca0: Add the
agents.robotsconfig block to set the crawler policy fromleadtype.config.defineDocsConfig({ product: { name, summary }, agents: { robots: { policy: "block-training", signals: { aiInput: "yes" } }, }, });
leadtype generatereadsagents.robots.{policy,signals}and threads them into the generated
robots.txt(and its Content-Signal line). All fields optional — zero-config staysbalanced.
This is the additiveagentsblock from the design; further keys (e.g.jsonLd) extend it. -
4042306: Surface the root-
AGENTS.mdpointer as the headline bundle-setup step (closes #66).leadtype generate --bundlenow prints the consumer-pointer snippet on success (text mode only —--jsonoutput stays a clean machine record). The snippet is filled in with the package's installable npm name, read from the output package'spackage.json(falling back to the product name), so it works for scoped names too.leadtype initnow writes the root-AGENTS.mdpointer by default, dogfooding the same pattern: it createsAGENTS.mdif absent, refreshes a marker-delimited (<!-- leadtype:start -->…<!-- leadtype:end -->) block in place on re-run, or appends it to an existing file — never overwriting user content. Honors--dry-runand is listed in--jsonoutput. This points the agent helping you set up leadtype at leadtype's own bundled docs.- Docs lead with the pointer as required setup: the
Bundle docs into a packageguide opens with a two-step callout and a dedicated Point consumers at the bundle section, the README bundle path spells out the snippet, and the quickstart showsinitemitting the pointer. All cite the eval result (bundle-read ~29% unprompted → ~90–100% with the pointer).
Why: bundled docs only pay off when an agent actually reads them, and our evals show agents rarely discover the bundle on their own. The root pointer is the cheapest fix, so we now teach it at the point of use instead of burying it in the docs.
-
8b84f60: Add
collectionsconfig andleadtype syncfor declarative multi-source docs (closes #42, #44).- New
defineCollection({ repository?, ref?, cacheDir?, dir, prefix?, schema?, groups?, include?, exclude? })helper, andcollections?: Record<string, DocsCollection>onDocsConfig. Local-only collections omitrepository; remote collections clone the repo atrefintocacheDir(default.leadtype/sources/<repo-slug>@<ref>). Multiple collections sharing a(repository, ref)pair share one clone. - New
leadtype synccommand:--refreshre-fetches and fast-forwards,--offlineerrors on cache miss,--repo <pat>filters by repository URL substring. State tracked in<cacheDir>/.leadtype-sync.json. leadtype generatelearns--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-dirdocs.config.*path. Setting both top-levelgroupsandcollectionsis rejected at load. leadtype lintdiscoversleadtype.config.tsautomatically and runs lint per collection, applying each collection'sschemaif set. Violations are prefixed with[collection:<key>].git-not-installed surfaces as an actionable message instead of a rawENOENT.
Legacy projects (single docs folder, top-level
groupsindocs.config.ts,--docs-dirflags) are unchanged — the legacy code path is byte-identical to before.Known limitation:
leadtype synchas no built-in timeout; a long network stall will hang the process. Track viaCtrl-Cfor now; a configurable per-operation timeout is planned. - New
-
aca9e8f: Add config-driven docs navigation with nested sections, explicit page placement,
wildcard includes, and root-relative page references.defineDocsConfig()anddefineCollection()now acceptnavigation, which is used by
resolveDocsNavigation(),llms.txt, full-context generation, Agent
Readability,AGENTS.md, source navigation, and CLI generation. Frontmatter
groupremains supported as taxonomy, validation metadata, and fallback
navigation for projects that have not adoptednavigation.This also updates the example docs site and c15t example to dogfood root
navigationnodes as top-level docs areas, with the active root node's pages and
children rendered as sidebar sections. -
e115ca0: Restructure
defineDocsConfigaround three clear concepts: identity (product+organization), content (llms), and navigation — so it's obvious what each field is for and where it ends up.Breaking config changes (all shipping in this release):
Before After product.summaryproduct.taglineproduct.blocksllms.sectionsnav(top-level + per-collection)navigationagents.jsonLd.organizationtop-level organizationagents.jsonLd.software.isLibraryproduct.kind: "library"agents.jsonLd.software.applicationCategoryproduct.categoryagents.skills.agentCardagents.agentCard.enabledproductis now pure identity (name,tagline,homepage,docs,repository,kind,category) reused acrossllms.txt, JSON-LD, and the agent card.organization(who publishes the product) feeds the JSON-LDOrganizationnode and the agent-cardprovider— resolving the old ambiguity of whetherorganizationmeant the product or its maintainer.product.repositoryis emitted as JSON-LDcodeRepository;product.docsbecomes the agent-carddocumentationUrl.New exported helper
resolveAgentInputs(config)translates the config's identity blocks into the low-level generator inputs (generateLlmsTxt,generateAgentReadabilityArtifacts,generateSkillArtifacts), so code composing those generators by hand shares...
leadtype@0.1.2
Patch Changes
-
f7107d3: Ship the v1 headless integration surface plus docs polish.
New public API
createDocsSource({ contentDir })at the root — framework-neutral docs source primitive returning navigation, page loading, search index, and standalone include resolution. Works with Next App Router, Astro, Vite + Vue/Solid/Svelte, Nuxt, SvelteKit, and any MDX-aware bundler.leadtype/mdxsubpath — typed prop contracts for every custom MDX tag (CalloutProps,TabsProps,StepProps,TypeTableProps, …) plusmdxSourcePlugins(a remark preset that expands<include>and resolves<ExtractedTypeTable>at build time while leaving custom tags as JSX). Framework-neutral —childrenis typed asunknownso consumers intersect with React/Vue/Svelte/Solid/Astro child types.leadtype/fumadocssubpath — thin adapter mappingcreateDocsSource()to fumadocs-core'sSourceinterface, includingmeta.jsonwalking.fumadocs-core >= 15is an optional peer dependency.
New helpers
convertMdxFile(path, plugins)fromleadtype/convert— returns{ ast, frontmatter, data, markdown }in memory for a single MDX file.resolveInclude(specifier, options)fromleadtype/mdx— standalone include resolver, no remark transform required. PlusparseIncludeSpecifier,extractMdxSection,resolveIncludePath.remarkResolveTypeTableJsx— source-preset variant of the type-table plugin that emits<TypeTable properties={…} />JSX (vs. the existing markdown-flattening variant).
Frontmatter contract
- New optional
order:field. Pages with explicit order sort first within their group (ascending); pages withoutorderfall back to alphabetical urlPath ordering. Conventionally numbered in tens for insertion room.
Navigation
resolveDocsNavigationaccepts an optionaldocsDirNameconfig field (defaults to"docs") for projects whose docs folder isn't nameddocs/.
Bug fixes
- Mermaid blocks in agent-flattened markdown no longer destroy
<br/>line-break syntax (was being replaced with/and-in two passes). Mermaid renderers now receive valid syntax with multi-line node labels intact. - The mermaid plugin's outer-backtick stripper now handles the common
chart={`flowchart LR\n...`}inline form, not just backticks-on-their-own-lines.
leadtype@0.1.1
Patch Changes
-
92192a7: Fix the CLI direct-run check so package-manager bin shims and symlinked workspace installs correctly run
leadtype generate. -
60c285c: Add first-class support for multiple docs source folders and custom URL mounts, including mounted search, LLM, and Agent Readability metadata. The generate command also expands include partials before emitting markdown artifacts, and extracted type tables resolve source paths from the original project root in multi-source builds.
-
1bca5cf: Shrink published install closure by swapping out heavier deps:
gray-matter→vfile-matter+yaml(dropsjs-yaml,kind-of,section-matter,strip-bom-stringfrom the closure).jitimoved fromdependenciesto optionalpeerDependencies— only required when authoringdocs.config.ts;.js/.mjs/.cjsconfigs load via nativeimport().decode-named-character-referencedropped — entity decode inside<Steps>titles now uses a small inline map.mdast-util-to-markdowndropped inprompt.remark— serialization now goes through the existingremark()processor.mdast-util-compactdropped insteps.remark— small in-tree adjacent-text/blockquote merge inlined.unist-builderdropped —u(...)calls replaced with mdast object literals.unist-util-isdropped — 7is(node, "type")call sites switched tonode.type === "type".
Behavior change: YAML frontmatter timestamps now round-trip through the
yamlpackage's timestamp tag. Date-only scalars like2026-04-19emit as2026-04-19(compact) instead of2026-04-19T00:00:00.000Z. Datetime scalars without sub-second precision emit as2026-04-19T12:00:00instead of2026-04-19T12:00:00.000Z. The values remainDateinstances in JS, so consuming code is unaffected. -
3e03d9d: Replace
fast-globwithtinyglobbyto shrink the dependency tree (16 transitive deps → 3) and reduce install footprint (~1.2 MB → ~240 KB). Globbing behavior and call-site options are unchanged.
leadtype@0.1.0
Minor Changes
- 243f5ff: Release leadtype