Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
ecc3470
fix(ui): restyle options-menu project switcher to align with i18n/app…
mgks May 19, 2026
165e8d1
fix: workspace detection and project switcher improvements
mgks May 29, 2026
dac27ab
chore: update documentation and workflows
mgks May 29, 2026
e8e029a
feat(seo): add robots.txt auto-generation with AI bot blocking support
mgks May 30, 2026
2431d55
Merge remote-tracking branch 'origin/main' into dev-0.8.5
mgks May 30, 2026
4377039
fix(seo): set aiBots default to true (allow AI bots)
mgks May 30, 2026
97f0e2e
fix(seo): check for robots.txt in both site root and assets
mgks May 30, 2026
fa0678d
feat(seo): smart robots.txt location handling
mgks May 30, 2026
d097f85
feat(search): add docmd-search as optional peer dependency
mgks May 30, 2026
8df76ed
fix: remove docmd-search from workspace, add as dev dependency
mgks May 30, 2026
ceed313
fix(search): wire up semantic search client for browser-side vector s…
mgks May 30, 2026
cb73ac5
feat(plugin-search): add version filtering for semantic search
mgks May 30, 2026
7a94dc5
fix(plugin-search): restore missing isIndexLoaded variable
mgks May 30, 2026
22280d9
fix(plugin-search): improve semantic search UX
mgks May 30, 2026
f749e2a
refactor(plugin-search): separate semantic and keyword search into mo…
mgks May 30, 2026
c8532c4
fix(plugin-search): address security audit findings in semantic-clien…
mgks May 30, 2026
8739142
feat(v0.8.5): semantic search alpha, SEO robots.txt, anchor navigatio…
mgks May 30, 2026
4851ff8
feat(dev): auto-open browser on server start, targeted rebuilds, conf…
mgks May 31, 2026
36536ef
feat(plugin-search): add showConfidence option for semantic search re…
mgks May 31, 2026
e0293ba
Update pnpm-lock.yaml
mgks May 31, 2026
8061c70
fix(dev): stop spurious reloads; add pnpm live command
mgks May 31, 2026
f8f3fcb
fix(dev): proper debounce-based reload — no rebuild while user is sti…
mgks May 31, 2026
14f2366
fix(search): move confidence badge to CSS, right-align via meta wrapper
mgks May 31, 2026
45f4797
feat(plugin-search): showFilters + showConfidence options, CSS-based …
mgks May 31, 2026
7eacb62
fix(plugin-search): move showFilters read inside initSearch() — searc…
mgks May 31, 2026
a8825d8
fix(workspace): show git/search indexing progress on first build
mgks May 31, 2026
2399c71
Update client.ts
mgks May 31, 2026
895b2c3
Update docmd.config.json
mgks May 31, 2026
e92adbf
Update README.de.md
mgks May 31, 2026
7a65df8
Update README.fr.md
mgks May 31, 2026
7398238
Update README.es.md
mgks May 31, 2026
c92d406
Update README.ja.md
mgks May 31, 2026
247c373
Update README.zh.md
mgks May 31, 2026
0301e04
Update README.md
mgks May 31, 2026
96518d4
fix: resolve lint errors for CI
mgks May 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/npm-publish.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: docmd Release to NPM
name: Release docmd to NPM

on:
release:
Expand All @@ -11,7 +11,7 @@ permissions:
packages: write

# ---------------------------------------------------------------------------
# Job 1 Build Rust native binaries (matrix, one runner per platform)
# Job 1: Build Rust native binaries (matrix, one runner per platform)
#
# Each runner compiles the napi-rs addon for its target, then uploads the
# resulting .node file as a workflow artifact. The publish job downloads
Expand Down Expand Up @@ -99,7 +99,7 @@ jobs:
if-no-files-found: error

# ---------------------------------------------------------------------------
# Job 2 Publish all packages to npm
# Job 2: Publish all packages to npm
#
# Runs after all matrix builds succeed. Downloads every .node artifact into
# rust-binaries/bin/ so the package contains the binaries when npm publish runs.
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,5 @@ packages/engines/rust/bin/*.node
packages/engines/rust-binaries/native/target/

# Docmd Cache
.docmd/
.docmd/
.docmd-search/
6 changes: 3 additions & 3 deletions README.de.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ Hält Ihr Projekt einfach.
my-docs/
├── docs/
├── assets/
├── docmd.config.js (optional)
├── docmd.config.json (optional)
└── package.json
```

Expand All @@ -139,7 +139,7 @@ Ein browserbasierter Editor zum sofortigen Schreiben und Vorschauen von Dokument

Für den Anfang ist keine Konfiguration erforderlich.

Fügen Sie eine Konfigurationsdatei (`docmd.config.js` im Projektwurzelverzeichnis) nur hinzu, wenn Sie mehr Kontrolle benötigen.
Fügen Sie eine Konfigurationsdatei (`docmd.config.json` im Projektwurzelverzeichnis) nur hinzu, wenn Sie mehr Kontrolle benötigen.

```js
const { defineConfig } = require('@docmd/core');
Expand Down Expand Up @@ -185,7 +185,7 @@ Verwendung in Skripten oder CI-Pipelines:
```js
const { build, buildLive } = require('@docmd/core');

await build('./docmd.config.js', { isDev: false });
await build('./docmd.config.json', { isDev: false });
await buildLive();
```

Expand Down
6 changes: 3 additions & 3 deletions README.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ Mantiene tu proyecto simple.
my-docs/
├── docs/
├── assets/
├── docmd.config.js (opcional)
├── docmd.config.json (opcional)
└── package.json
```

Expand All @@ -139,7 +139,7 @@ Un editor basado en navegador para escribir y previsualizar documentos al instan

No se requiere configuración para empezar.

Añade un archivo de configuración (`docmd.config.js` en la raíz del proyecto) solo cuando necesites más control.
Añade un archivo de configuración (`docmd.config.json` en la raíz del proyecto) solo cuando necesites más control.

```js
const { defineConfig } = require('@docmd/core');
Expand Down Expand Up @@ -185,7 +185,7 @@ Uso en scripts o flujos de CI:
```js
const { build, buildLive } = require('@docmd/core');

await build('./docmd.config.js', { isDev: false });
await build('./docmd.config.json', { isDev: false });
await buildLive();
```

Expand Down
6 changes: 3 additions & 3 deletions README.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ Garde votre projet simple.
my-docs/
├── docs/
├── assets/
├── docmd.config.js (optionnel)
├── docmd.config.json (optionnel)
└── package.json
```

Expand All @@ -139,7 +139,7 @@ Un éditeur par navigateur pour écrire et prévisualiser des documents instanta

Aucune configuration n'est requise pour commencer.

Ajoutez un fichier de configuration (`docmd.config.js` à la racine du projet) uniquement lorsque vous avez besoin de plus de contrôle.
Ajoutez un fichier de configuration (`docmd.config.json` à la racine du projet) uniquement lorsque vous avez besoin de plus de contrôle.

```js
const { defineConfig } = require('@docmd/core');
Expand Down Expand Up @@ -185,7 +185,7 @@ Utilisation dans des scripts ou des pipelines CI :
```js
const { build, buildLive } = require('@docmd/core');

await build('./docmd.config.js', { isDev: false });
await build('./docmd.config.json', { isDev: false });
await buildLive();
```

Expand Down
6 changes: 3 additions & 3 deletions README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ docmd deploy # Docker, Nginx, Caddyの設定を即座に生成
my-docs/
├── docs/
├── assets/
├── docmd.config.js (オプション)
├── docmd.config.json (オプション)
└── package.json
```

Expand All @@ -139,7 +139,7 @@ my-docs/

開始にあたって設定は不要です。

より詳細なコントロールが必要な場合のみ、プロジェクトのルートに設定ファイル (`docmd.config.js`) を追加してください。
より詳細なコントロールが必要な場合のみ、プロジェクトのルートに設定ファイル (`docmd.config.json`) を追加してください。

```js
const { defineConfig } = require('@docmd/core');
Expand Down Expand Up @@ -185,7 +185,7 @@ module.exports = defineConfig({
```js
const { build, buildLive } = require('@docmd/core');

await build('./docmd.config.js', { isDev: false });
await build('./docmd.config.json', { isDev: false });
await buildLive();
```

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ Keeps your project simple.
my-docs/
├── docs/
├── assets/
├── docmd.config.js (optional)
├── docmd.config.json (optional)
└── package.json
```

Expand All @@ -143,7 +143,7 @@ A browser-based editor for writing and previewing docs instantly. No setup requi

No configuration is required to get started.

Add a config file (`docmd.config.js` in the project root) only when you need more control.
Add a config file (`docmd.config.json` in the project root) only when you need more control.

```js
const { defineConfig } = require('@docmd/core');
Expand Down Expand Up @@ -189,7 +189,7 @@ Use in scripts or CI pipelines:
```js
const { build, buildLive } = require('@docmd/core');

await build('./docmd.config.js', { isDev: false });
await build('./docmd.config.json', { isDev: false });
await buildLive();
```

Expand Down
6 changes: 3 additions & 3 deletions README.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ docmd deploy # 瞬间生成 Docker/Nginx/Caddy 配置文件
my-docs/
├── docs/
├── assets/
├── docmd.config.js(可选)
├── docmd.config.json(可选)
└── package.json
```

Expand All @@ -143,7 +143,7 @@ my-docs/

开始使用无需任何配置。

仅在需要更多控制时,在项目根目录添加配置文件(`docmd.config.js`)。
仅在需要更多控制时,在项目根目录添加配置文件(`docmd.config.json`)。

```js
const { defineConfig } = require('@docmd/core');
Expand Down Expand Up @@ -189,7 +189,7 @@ module.exports = defineConfig({
```js
const { build, buildLive } = require('@docmd/core');

await build('./docmd.config.js', { isDev: false });
await build('./docmd.config.json', { isDev: false });
await buildLive();
```

Expand Down
16 changes: 12 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
{
"name": "@docmd/monorepo",
"version": "0.8.4",
"version": "0.8.5",
"private": true,
"description": "The minimalist, zero-config documentation generator monorepo.",
"scripts": {
"dev": "pnpm docmd dev",
"live": "pnpm docmd-live",
"build": "pnpm -r run build",
"docmd": "node packages/core/dist/bin/docmd.js --cwd packages/_playground",
"docmd-live": "node packages/live/bin/docmd-live.js --cwd packages/_playground",
"prep": "node scripts/prep.js",
"verify": "node scripts/verify.js",
"lint": "eslint .",
Expand All @@ -18,13 +20,14 @@
},
"devDependencies": {
"@eslint/js": "^10.0.1",
"@types/node": "^25.9.0",
"@types/node": "^25.9.1",
"chalk": "4.1.2",
"docmd-search": "0.1.0-alpha.0",
"esbuild": "^0.28.0",
"eslint": "^10.4.0",
"eslint": "^10.4.1",
"globals": "^17.6.0",
"typescript": "^5.9.3",
"typescript-eslint": "^8.59.4"
"typescript-eslint": "^8.60.0"
},
"engines": {
"node": ">=18.0.0"
Expand All @@ -36,6 +39,11 @@
],
"overrides": {
"mermaid>uuid": ">=14.0.0"
},
"peerDependencyRules": {
"ignoreMissing": [
"docmd-search"
]
}
},
"keywords": [
Expand Down
59 changes: 0 additions & 59 deletions packages/_playground/.github/workflows/deploy.yml

This file was deleted.

5 changes: 4 additions & 1 deletion packages/_playground/docmd.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,10 @@
},

"plugins": {
"search": {},
"search": {
"semantic": true,
"showConfidence": true
},
"seo": {},
"sitemap": {},
"analytics": {
Expand Down
33 changes: 33 additions & 0 deletions packages/_playground/docs-05/index.md
Original file line number Diff line number Diff line change
@@ -1 +1,34 @@
# V0.5.0 Overview

This is the documentation for version 0.5.0 of docmd. This version introduces several new features for developers.

## Features

- **Developer Tools**: Enhanced debugging capabilities
- **Performance**: Faster build times for large documentation sites
- **Search**: Improved keyword search with better relevance scoring
- **Plugins**: New plugin API for extending functionality

## Getting Started

To get started with version 0.5.0, install the package:

```bash
npm install @docmd/core@0.5.0
```

## Developer Guide

This version is designed with developers in mind. The new developer tools make it easier to debug and customize your documentation site.

### Configuration

Configure your site by creating a `docmd.config.js` file in your project root.

### Building

Run the build command to generate your documentation:

```bash
npx docmd build
```
2 changes: 1 addition & 1 deletion packages/_playground/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@docmd/playground",
"version": "0.8.4",
"version": "0.8.5",
"private": true,
"dependencies": {
"@docmd/core": "workspace:*",
Expand Down
2 changes: 1 addition & 1 deletion packages/api/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@docmd/api",
"version": "0.8.4",
"version": "0.8.5",
"description": "Plugin API surface for docmd.",
"type": "module",
"main": "dist/index.js",
Expand Down
4 changes: 2 additions & 2 deletions packages/api/src/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
errors: string[];
}

function validateDescriptor(descriptor: any): ValidationResult {

Check warning on line 87 in packages/api/src/hooks.ts

View workflow job for this annotation

GitHub Actions / verify

Unexpected any. Specify a different type
const errors: string[] = [];

if (!descriptor || typeof descriptor !== 'object') {
Expand Down Expand Up @@ -127,12 +127,12 @@
// Isolation wrapper (§2)
// ---------------------------------------------------------------------------

function safeCall<T>(hookName: string, pluginName: string, fn: (...args: any[]) => T, ...args: any[]): T | string | undefined {

Check warning on line 130 in packages/api/src/hooks.ts

View workflow job for this annotation

GitHub Actions / verify

Unexpected any. Specify a different type

Check warning on line 130 in packages/api/src/hooks.ts

View workflow job for this annotation

GitHub Actions / verify

Unexpected any. Specify a different type
try {
return fn(...args);
} catch (err: any) {

Check warning on line 133 in packages/api/src/hooks.ts

View workflow job for this annotation

GitHub Actions / verify

Unexpected any. Specify a different type
TUI.error(`Plugin "${pluginName}" threw in ${hookName}`, err.message);
return (hookName === 'injectHead' || hookName === 'injectBody') ? '' as any : undefined;

Check warning on line 135 in packages/api/src/hooks.ts

View workflow job for this annotation

GitHub Actions / verify

Unexpected any. Specify a different type
}
}

Expand Down Expand Up @@ -177,9 +177,9 @@
// ---------------------------------------------------------------------------

// Load the official plugin registry
let _pluginRegistry: Record<string, any> | null = null;

Check warning on line 180 in packages/api/src/hooks.ts

View workflow job for this annotation

GitHub Actions / verify

Unexpected any. Specify a different type

function getPluginRegistry(): Record<string, any> {

Check warning on line 182 in packages/api/src/hooks.ts

View workflow job for this annotation

GitHub Actions / verify

Unexpected any. Specify a different type
if (_pluginRegistry) return _pluginRegistry;

try {
Expand Down Expand Up @@ -266,7 +266,7 @@
execSync(installCmd, { stdio: 'pipe', cwd, timeout: 60000 });
TUI.step(`Plugin installed: ${shortName}`, 'DONE');
return true;
} catch (err: any) {
} catch (_err: any) {
TUI.step(`Failed to install: ${shortName}`, 'FAIL');
warnOnce(`install:${packageName}`, TUI.dim(`Run "docmd add ${shortName}" manually for details`));
return false;
Expand Down Expand Up @@ -368,7 +368,7 @@
const resolvedPath = require.resolve(name, { paths: resolvePaths });
rawModule = await import(pathToFileURL(resolvedPath).href);
}
} catch (e: any) {
} catch (_e: any) {
if (name.startsWith('@docmd/plugin-')) {
needsAutoInstall = true;
} else {
Expand Down
Loading
Loading