selfdoc 0.4.0__tar.gz → 0.4.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {selfdoc-0.4.0/.rlsbl/bases → selfdoc-0.4.2}/.github/workflows/ci.yml +2 -1
- {selfdoc-0.4.0 → selfdoc-0.4.2}/.gitignore +6 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2/.rlsbl/bases}/.github/workflows/ci.yml +2 -1
- {selfdoc-0.4.0 → selfdoc-0.4.2}/.rlsbl/bases/.gitignore +1 -0
- selfdoc-0.4.2/.rlsbl/bases/.rlsbl/changes/unreleased.jsonl +0 -0
- selfdoc-0.4.2/.rlsbl/bases/.rlsbl/hooks/pre-checks.sh +5 -0
- selfdoc-0.4.2/.rlsbl/bases/.rlsbl/hooks/pre-release.sh +8 -0
- selfdoc-0.4.2/.rlsbl/bases/.rlsbl/lint/go.toml +17 -0
- selfdoc-0.4.2/.rlsbl/bases/.rlsbl/lint/npm.toml +19 -0
- selfdoc-0.4.2/.rlsbl/bases/.rlsbl/lint/python.toml +25 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/.rlsbl/bases/CLAUDE.md +1 -1
- selfdoc-0.4.2/.rlsbl/changes/.validated +1 -0
- selfdoc-0.4.2/.rlsbl/changes/0.1.0.jsonl +10 -0
- selfdoc-0.4.2/.rlsbl/changes/0.1.0.md +13 -0
- selfdoc-0.4.2/.rlsbl/changes/0.2.0.jsonl +12 -0
- selfdoc-0.4.2/.rlsbl/changes/0.2.0.md +15 -0
- selfdoc-0.4.2/.rlsbl/changes/0.3.0.jsonl +54 -0
- selfdoc-0.4.2/.rlsbl/changes/0.3.0.md +57 -0
- selfdoc-0.4.2/.rlsbl/changes/0.3.1.jsonl +2 -0
- selfdoc-0.4.2/.rlsbl/changes/0.3.1.md +5 -0
- selfdoc-0.4.2/.rlsbl/changes/0.4.0.jsonl +69 -0
- selfdoc-0.4.2/.rlsbl/changes/0.4.0.md +73 -0
- selfdoc-0.4.2/.rlsbl/changes/0.4.1.jsonl +2 -0
- selfdoc-0.4.2/.rlsbl/changes/0.4.1.md +3 -0
- selfdoc-0.4.2/.rlsbl/changes/0.4.2.jsonl +7 -0
- selfdoc-0.4.2/.rlsbl/changes/0.4.2.md +5 -0
- selfdoc-0.4.2/.rlsbl/changes/unreleased.jsonl +0 -0
- selfdoc-0.4.2/.rlsbl/config.json +7 -0
- selfdoc-0.4.2/.rlsbl/hashes.json +14 -0
- selfdoc-0.4.2/.rlsbl/hooks/pre-checks.sh +5 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/.rlsbl/hooks/pre-release.sh +0 -4
- selfdoc-0.4.2/.rlsbl/lint/go.toml +17 -0
- selfdoc-0.4.2/.rlsbl/lint/npm.toml +19 -0
- selfdoc-0.4.2/.rlsbl/lint/python.toml +25 -0
- selfdoc-0.4.2/.rlsbl/version +1 -0
- selfdoc-0.4.2/.selfdoc/hashes/hashes.json +6 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/CHANGELOG.md +57 -68
- {selfdoc-0.4.0 → selfdoc-0.4.2}/CLAUDE.md +1 -1
- {selfdoc-0.4.0 → selfdoc-0.4.2}/PKG-INFO +1 -1
- {selfdoc-0.4.0 → selfdoc-0.4.2}/docs/index.md +4 -0
- selfdoc-0.4.2/package-lock.json +19 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/package.json +1 -1
- {selfdoc-0.4.0 → selfdoc-0.4.2}/pyproject.toml +1 -1
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/git.py +19 -2
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_git.py +37 -9
- selfdoc-0.4.2/todo/generate-claude-readme.md +90 -0
- selfdoc-0.4.0/.rlsbl/bases/.rlsbl/hooks/pre-release.sh +0 -31
- selfdoc-0.4.0/.rlsbl/hashes.json +0 -8
- selfdoc-0.4.0/.rlsbl/version +0 -1
- selfdoc-0.4.0/.selfdoc/hashes/hashes.json +0 -1
- {selfdoc-0.4.0 → selfdoc-0.4.2}/.claude/settings.json +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/.github/workflows/publish.yml +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/.rlsbl/bases/.claude/settings.json +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/.rlsbl/bases/.github/workflows/publish.yml +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/.rlsbl/bases/.rlsbl/hooks/post-release.sh +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/.rlsbl/hooks/post-release.sh +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/LICENSE +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/README.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/bin/cli.js +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/demo/index.html +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/__init__.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/__main__.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/build.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/catalog.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/check.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/cli.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/config.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/content.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/deploy.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/directives.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/extractors/__init__.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/extractors/base.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/extractors/go.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/extractors/protocol.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/extractors/python.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/extractors/typescript.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/gen.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/gendata.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/html.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/resolver.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/staleness.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/strictcli_support.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/themes/__init__.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/themes/clean.css +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/themes/clean.json +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/themes/minimal.css +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/themes/minimal.json +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc/tokenizer.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/selfdoc.json +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_build.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_catalog.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_check.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_cli.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_config.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_content.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_contrast.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_custom_directives.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_demo_panel.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_directives.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_extractors_protocol.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_gen.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_gendata.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_go_extractor.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_h1.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_python_extractor.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_search.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_staleness.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_strictcli_support.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_token_migration.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_tokenizer.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/tests/test_ts_extractor.py +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/.done/auto-commit-hashes.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/.done/auto-generated-glossary.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/.done/auto-generation-gaps.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/.done/changelog-page.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/.done/coverage-go-typescript.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/.done/cross-page-term-linking.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/.done/lint-ignores-code-blocks.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/.done/reading-progress.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/.done/seo-geo-audit.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/.done/seo-linting-gaps.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/.done/sticky-table-column.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/.done/styling-and-release.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/atom-feed-filtering.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/brotli-dependency.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/css-redesign.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/gen-cli-descriptions.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/glossary-config-opt-in.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/todo/sticky-column-striped-rows.md +0 -0
- {selfdoc-0.4.0 → selfdoc-0.4.2}/uv.lock +0 -0
|
@@ -11,12 +11,13 @@ jobs:
|
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
12
|
strategy:
|
|
13
13
|
matrix:
|
|
14
|
+
# engines.node: >= 18
|
|
14
15
|
node-version: [20, 22, 24]
|
|
15
16
|
steps:
|
|
16
17
|
- uses: actions/checkout@v6
|
|
17
18
|
- uses: actions/setup-node@v6
|
|
18
19
|
with:
|
|
19
20
|
node-version: ${{ matrix.node-version }}
|
|
20
|
-
- run:
|
|
21
|
+
- run: npm ci
|
|
21
22
|
- run: npm test --if-present
|
|
22
23
|
- run: npm audit --audit-level=moderate || true
|
|
@@ -11,12 +11,13 @@ jobs:
|
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
12
|
strategy:
|
|
13
13
|
matrix:
|
|
14
|
+
# engines.node: >= 18
|
|
14
15
|
node-version: [20, 22, 24]
|
|
15
16
|
steps:
|
|
16
17
|
- uses: actions/checkout@v6
|
|
17
18
|
- uses: actions/setup-node@v6
|
|
18
19
|
with:
|
|
19
20
|
node-version: ${{ matrix.node-version }}
|
|
20
|
-
- run:
|
|
21
|
+
- run: npm ci
|
|
21
22
|
- run: npm test --if-present
|
|
22
23
|
- run: npm audit --audit-level=moderate || true
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
# Project-specific pre-release checks.
|
|
4
|
+
# Built-in checks (tests, lint) run automatically before this hook.
|
|
5
|
+
# Add custom validation here, e.g.:
|
|
6
|
+
# - Check for uncommitted documentation
|
|
7
|
+
# - Verify external service connectivity
|
|
8
|
+
# - Run integration tests not covered by the test suite
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
[forbidden-imports]
|
|
2
|
+
modules = [
|
|
3
|
+
"argparse",
|
|
4
|
+
"click",
|
|
5
|
+
"typer",
|
|
6
|
+
"flask",
|
|
7
|
+
"fastapi",
|
|
8
|
+
"django",
|
|
9
|
+
"uvicorn",
|
|
10
|
+
"granian",
|
|
11
|
+
"starlette",
|
|
12
|
+
"tornado",
|
|
13
|
+
"bottle",
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
[stdout]
|
|
17
|
+
enabled = true
|
|
18
|
+
ignore = []
|
|
19
|
+
|
|
20
|
+
[entry-point]
|
|
21
|
+
enabled = true
|
|
22
|
+
ignore = []
|
|
23
|
+
|
|
24
|
+
[files]
|
|
25
|
+
exclude = []
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
13feaaa6579b99403184ebbc22dae7a207a0075d
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{"commits":["ae78b3ce28843daf5b21a09e48197bdf5a0f1137","50e62733eff586502d60784393a038c4c2e6ec91","095232b91ea56882280cfa42abfdd9e7845b2fec","20d08b4b21489ffc83f794c9592a98bd92d86b2d"],"user_facing":true,"description":"Python, Go, TypeScript/JS extractors","type":"feature"}
|
|
2
|
+
{"commits":["9ea6bd5d7b26693270fc38b8d0d905a97fe1e5eb","500a53298b83845aa1d0fa6b741d26755c2f87a6"],"user_facing":true,"description":"Custom directive plugins","type":"feature"}
|
|
3
|
+
{"commits":["05a4982f26d3ccecbae55a0b0c6c0da941f544a5"],"user_facing":true,"description":"`selfdoc check` coverage analysis","type":"feature"}
|
|
4
|
+
{"commits":["58c55ffd14aa6d93d0cf8a98e3d401670c3ea44c"],"user_facing":true,"description":"HTML generation with responsive CSS","type":"feature"}
|
|
5
|
+
{"commits":["a1e1a3365a856919f0eac5ac4fca06397fddb98c"],"user_facing":true,"description":"Deploy to Cloudflare Pages + GitHub Pages","type":"feature"}
|
|
6
|
+
{"commits":["c6c4ddb2335b0e90e73c3b3ad092406c334fae09"],"user_facing":true,"description":"SSE live reload in `selfdoc serve`","type":"feature"}
|
|
7
|
+
{"commits":["61b923bc745ccf0faafb1abc23bb83d1b92f2622"],"user_facing":true,"description":"Code-aware static site generator","type":"feature"}
|
|
8
|
+
{"commits":["58eba6c9092e6eb616a2a9a1df84a2167839c2eb"],"user_facing":true,"description":"`:::directive` syntax for embedding code-extracted content","type":"feature"}
|
|
9
|
+
{"commits":["d59d5ab9d9e18c6093e1286ab44930c237f4bdb8"],"user_facing":true,"description":"5 built-in directives (module, schema, test, cli, config)","type":"feature"}
|
|
10
|
+
{"commits":["172f6ed58ec73c9c145490edb13db415d05292a0","e58044dc796c0c199f2aa82d68c2bfbe7478af3a","970066c9f8c175dc9b36913278aaf7b3ab33f237","24894007b48e2e5861046e18948bd42444138d1a","baad8c307fbacaaaa31c418131a9f132bfaa5cd5","cef97f0284ef63a17e2ea50ff59f39f88d7702ed","9b26a61ff20bdd1399bdd7ae0ad5c181387f12bf","3c704c6d56be3210370a47c6be1e9cac47ff74dd","e044bb929975f616b2dfa4e401d11eccbdc4c1c1","86b7b7fa1fe55cd8d4b492ef935c8c7bee41691a"],"user_facing":false}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
## 0.1.0
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
- Python, Go, TypeScript/JS extractors
|
|
6
|
+
- Custom directive plugins
|
|
7
|
+
- `selfdoc check` coverage analysis
|
|
8
|
+
- HTML generation with responsive CSS
|
|
9
|
+
- Deploy to Cloudflare Pages + GitHub Pages
|
|
10
|
+
- SSE live reload in `selfdoc serve`
|
|
11
|
+
- Code-aware static site generator
|
|
12
|
+
- `:::directive` syntax for embedding code-extracted content
|
|
13
|
+
- 5 built-in directives (module, schema, test, cli, config)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{"commits":["1c00b760d0cfae84190f75f6199176f1010230e6"],"user_facing":true,"description":"Theme system with per-project theming via `\"theme\"` in selfdoc.json and optional `docs/custom.css` overrides","type":"feature"}
|
|
2
|
+
{"commits":["8a89603db915e69a2f26d3ec7958cb37dfa92a87"],"user_facing":true,"description":"Syntax highlighting via highlight.js (light + dark themes)","type":"feature"}
|
|
3
|
+
{"commits":["e700d39fb9287d7a2143d66adae12fdfab9dfc62"],"user_facing":true,"description":"Google-style docstring formatting (Args, Returns, Raises rendered as structured lists)","type":"feature"}
|
|
4
|
+
{"commits":["d9f92cbd4a073993fd29af43c2794d1f790cb3a0"],"user_facing":true,"description":"Heading hierarchy: directive expansions use h2/h3/h4 instead of injecting h1","type":"feature"}
|
|
5
|
+
{"commits":["444f28b7d303533e143dcc18fc4480ffa2c9c3d7"],"user_facing":true,"description":"Module name mangling (`selfdoc.extractorsthon` bug)","type":"feature"}
|
|
6
|
+
{"commits":["e645dadb18607b945dbd5a7d570144a3f27f531c"],"user_facing":true,"description":"Nested `_build/_build` recursion when rebuilding","type":"feature"}
|
|
7
|
+
{"commits":["b1ecbbb8f94c4400565ec28f9f62595c203753f1","51d8335f45dd725bd07a08cc0c1ccf70b46a6f69"],"user_facing":true,"description":"Deploy supports `CF_ACCOUNT_ID` and `CF_PAGES_API_TOKEN` env var names (remapped to wrangler's expected names)","type":"feature"}
|
|
8
|
+
{"commits":["ea56606d8051baf6d2c38f6c919dfb0acf1a6d07"],"user_facing":true,"description":"Minimal theme: clean typography, dark mode, high-contrast, and reduced-motion variants (all auto-detected from OS preferences)","type":"feature"}
|
|
9
|
+
{"commits":["b518d0637cedefb1d9934a98133af1a7f7f21c27"],"user_facing":true,"description":"Top bar with project name and version badge","type":"feature"}
|
|
10
|
+
{"commits":["319971e2603ec16de81aae050b03ebd0055cc952"],"user_facing":true,"description":"Heading anchor links for deep linking","type":"feature"}
|
|
11
|
+
{"commits":["fc225c09e14f00e62ffc60f36cc2a00177ce5b3d"],"user_facing":true,"description":"CSS extracted to cacheable `style.css` instead of inlined per page","type":"feature"}
|
|
12
|
+
{"commits":["97eb815243ea150fcf086992ebe58aec04dc3841"],"user_facing":false}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
## 0.2.0
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
- Theme system with per-project theming via `"theme"` in selfdoc.json and optional `docs/custom.css` overrides
|
|
6
|
+
- Syntax highlighting via highlight.js (light + dark themes)
|
|
7
|
+
- Google-style docstring formatting (Args, Returns, Raises rendered as structured lists)
|
|
8
|
+
- Heading hierarchy: directive expansions use h2/h3/h4 instead of injecting h1
|
|
9
|
+
- Module name mangling (`selfdoc.extractorsthon` bug)
|
|
10
|
+
- Nested `_build/_build` recursion when rebuilding
|
|
11
|
+
- Deploy supports `CF_ACCOUNT_ID` and `CF_PAGES_API_TOKEN` env var names (remapped to wrangler's expected names)
|
|
12
|
+
- Minimal theme: clean typography, dark mode, high-contrast, and reduced-motion variants (all auto-detected from OS preferences)
|
|
13
|
+
- Top bar with project name and version badge
|
|
14
|
+
- Heading anchor links for deep linking
|
|
15
|
+
- CSS extracted to cacheable `style.css` instead of inlined per page
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{"commits":["caebcff8cdd31e6413fca319e67e07bfa0fe4f70","9a69a0369e8d0b6111fadd974a209ccbbcfe0861","caac7c240adbc43b22d1c4895254b4e63316a5d7","33e999a6765a67a292e3b1acea18b3f298837ac0","e3aaadb584cceab6104bb6f8ec1e9bfd1ab3425b"],"user_facing":true,"description":"`base_url` is now a required field in `selfdoc.json` (previously optional)","type":"feature"}
|
|
2
|
+
{"commits":["77e138dec3acdcaae4a284929fc2ed1ff30a049d","f9372ce76b3fc42a8c6372f3a4e98853926bf052","bf797f995df4e2aa27158dba8cf84f93c15db214"],"user_facing":true,"description":"Frontmatter `description` is now required on every page (auto-extraction removed); missing description is a build error","type":"feature"}
|
|
3
|
+
{"commits":["60771dabb5516e16369f21f67351419305359f4e","324c0dbf1e358d7418dcadfbba19cb5ced0227ad"],"user_facing":true,"description":"`selfdoc build` now fails on SEO lint warnings","type":"feature"}
|
|
4
|
+
{"commits":["2619efcd7b0d42b602632824332de4482b8f50e0","015a5597d6c40d504b337a7aafc1bcced12ab23b","57c7e718edb571223a74335e0fbefc43ee7f5f0e"],"user_facing":true,"description":"Subdirectory-based nested nav groups with collapsible sidebar sections, localStorage persistence, and frontmatter overrides (`nav_group`, `nav_order`)","type":"feature"}
|
|
5
|
+
{"commits":["21504c13524bbc55aa664b9b0934b5d395548555"],"user_facing":true,"description":"Configurable search trigger via `search` config field: `\"icon\"` (magnifying glass button), `\"bar\"` (text input with Cmd+K hint), or `\"hidden\"`","type":"feature"}
|
|
6
|
+
{"commits":["0d131c72d0ae8be13d6f6cf2b2017677ce24e42b"],"user_facing":true,"description":"Functional feedback widget via `feedback` config field with webhook POST and Google Analytics event support","type":"feature"}
|
|
7
|
+
{"commits":["1982b46e41a63764793004b6f3d5f9be760fa7b2"],"user_facing":true,"description":"Atom feed generation (`feed.xml`) with auto-discovery `<link>` tag in `<head>`","type":"feature"}
|
|
8
|
+
{"commits":["ac6485a0de73d2364de6de531d21fcde4f783550","a75fa71bdb87f8fe93152bcc162faa32eed8cf5e"],"user_facing":true,"description":"Definition list syntax (`term\\n: definition`) with glossary styling and DefinedTerm JSON-LD","type":"feature"}
|
|
9
|
+
{"commits":["f92114f2c491aff670e04968755773a59f92717d"],"user_facing":true,"description":"Inline stat markup (`==value==`) producing semantic `<data>` elements","type":"feature"}
|
|
10
|
+
{"commits":["da27d5477b8bdf088a2da0a5cbd4f7bd71bbf73f","29e8770c87089733d9b64bd07a74a7904dd6d367"],"user_facing":true,"description":"Code tabs for switching between language variants with localStorage persistence","type":"feature"}
|
|
11
|
+
{"commits":["e8ab4604aab3308b06964fae1ee03f3914b6162a"],"user_facing":true,"description":"Git branch auto-detection for edit links; configurable via `branch` config field","type":"feature"}
|
|
12
|
+
{"commits":["766777a719d7d46d759c28d78792755b53a79966","5223e6ec334b66981d7364d8d30770efc5862737","a2318b12e146cd77fe0c8e91b7be9c99e106c5df","09dfe8df82db49476a6cf666a906be1c8d15de86"],"user_facing":true,"description":"Rich OG card PNG generation with text overlay via predraw (optional dependency)","type":"feature"}
|
|
13
|
+
{"commits":["0516a601f823a2ff6219a415aafba106a7f4086b","2cfe248f12d110f1fe1f000593780769dc8649c4","e1b062c92254e5573937847069f36c1eb87ee59c"],"user_facing":true,"description":"SEO lint framework with 15 rules covering headings, descriptions, images, contrast, and structured data","type":"feature"}
|
|
14
|
+
{"commits":["c6a6313eb0348153960bdbfffa8cd21de21bb062","64a06f57f2c82bd69560ea28949c271e742810b2","04a0e16495770dbd6221bf5805d90ebbeaf47b87","c9b85969bedd79e55075fe2f9e0edd627a7291c1"],"user_facing":true,"description":"JSON-LD structured data: TechArticle, BreadcrumbList, WebSite, SoftwareSourceCode, Organization/Person, ItemList, DefinedTermSet","type":"feature"}
|
|
15
|
+
{"commits":["caf8643aa5b538e132a985f289c5ef8e65eb8f0a","3d750f10bea0f4d088bbeb751b274adebaa18ec5","1f6d0f4809e16f28100f56b70de7c1d5a0c8cf33","5ab397f045955ff3f377fbffc2b213a388f2bcc8","8c718513a5d516a6b77a877591de039afd536a88","588b8db20d84adf83c000e41a320f092f026be6c","36aa3499b5933afd2bd78bbdede061da1005851b"],"user_facing":true,"description":"Open Graph and Twitter Card meta tags with `og:locale`, `og:image:alt`, and auto-generated social card images","type":"feature"}
|
|
16
|
+
{"commits":["a217568277910f1816cb56e2dda020a573ff41cd","c28586550df64e5831f4b641156883207fbcdba0"],"user_facing":true,"description":"`robots.txt` with explicit AI crawler permissions (GPTBot, ClaudeBot, PerplexityBot, etc.)","type":"feature"}
|
|
17
|
+
{"commits":["fb8b63244317795809e5ec257b3ea991de3bab02","9ad0e7e890018f47d2545e782935e0216e5bbada"],"user_facing":true,"description":"Visible \"Last updated\" dates with `<time>` elements, `dateModified` in JSON-LD, and sitemap `lastmod`","type":"feature"}
|
|
18
|
+
{"commits":["76fa1f4cdfef4faed880c35307eb11c99f04f101","0d43900841969cf5436b7128590a44d0c56f922e"],"user_facing":true,"description":"`selfdoc check --ignore SEO007,SEO008` to suppress specific lint rules","type":"feature"}
|
|
19
|
+
{"commits":["9ed5c18a520e1ee41a4b50c61c4d83b3c44fa95c"],"user_facing":true,"description":"`selfdoc check --format json` for machine-readable output","type":"feature"}
|
|
20
|
+
{"commits":["7e5d1306b099f26694462b64eb375699bdfc578f"],"user_facing":true,"description":"Color-coded `selfdoc check` output (green/yellow/red by severity)","type":"feature"}
|
|
21
|
+
{"commits":["a2c46291f1904aab2abf6662689f70e8d647ee3d","2019bbdcc512bd34d67db6b0375d7621b73479f2"],"user_facing":true,"description":"New config fields: `lang` (BCP 47), `author`, `twitter`, `branch`, `search`, `feedback`","type":"feature"}
|
|
22
|
+
{"commits":["92e78abefa077efe1c0f3a8df1a46d6dffdc9705","d93935b49cd82dfee5fe88bb97a06f04ab73c0dc"],"user_facing":true,"description":"Sticky table headers no longer hide behind the fixed topbar","type":"feature"}
|
|
23
|
+
{"commits":["0baa65381a77d891d1a9c9a7ead919b13c28d272","1b80538e440986aebee17d079033d5f3e4ead022","6bea2d4fe77b3c0f3b45f2a167fe4d5f63a8a389"],"user_facing":true,"description":"Copy button now always visible on code blocks (was hidden until hover, invisible on touch)","type":"feature"}
|
|
24
|
+
{"commits":["0fbd0d77fc9445cbbf251e5c1e7b0e2487ab5594","82cee7e8be2a8c1e419e061f9e1b7103555a001e","80b8e30b03c6e1e8fe2686db6092562c5e662a46","e80f1333047116cac0c208b64a6fd1ee13ff421d"],"user_facing":true,"description":"Fixed dark mode contrast for all accent colors","type":"feature"}
|
|
25
|
+
{"commits":["4ddbd75c8e5221b4ef3ed07a9028f741f72c6865"],"user_facing":true,"description":"Fixed breadcrumb intermediate links pointing to non-existent directory index pages","type":"feature"}
|
|
26
|
+
{"commits":["80e0ebb6e3f5c2058fba390b159c97505842149f"],"user_facing":true,"description":"Build-time Pygments syntax highlighting (replaced client-side highlight.js)","type":"feature"}
|
|
27
|
+
{"commits":["9e17135fa0dc54f61c7c9740eafeeb9442476178","7fd9a993230a1c11c50ffb41b8237ecabf1e8596","882005cd80025505e795c463e30767e078dd5bab"],"user_facing":true,"description":"Build-time CSS, JS, and HTML minification with critical CSS inlining","type":"feature"}
|
|
28
|
+
{"commits":["d4d1342206a9745cf8755e885dbc649590227063"],"user_facing":true,"description":"Gzip and Brotli pre-compression of build output","type":"feature"}
|
|
29
|
+
{"commits":["3d96198629cb8019bac735670154c088d0cedbd5"],"user_facing":true,"description":"Search JS externalized to `search.js` with lazy index loading","type":"feature"}
|
|
30
|
+
{"commits":["4d1542309cfe53e798b68b0ad99346c9490c4c39"],"user_facing":true,"description":"Conditional JS inclusion based on page content","type":"feature"}
|
|
31
|
+
{"commits":["a4fe538074c11d52d84ad86ef810397a8d4c14ef"],"user_facing":true,"description":"ARIA labels on sidebar nav, TOC nav, and search dialog","type":"feature"}
|
|
32
|
+
{"commits":["2d46423d8de66d283d344b40bd4da4b7120a8d98"],"user_facing":true,"description":"Dynamic theme toggle ARIA label indicating current state","type":"feature"}
|
|
33
|
+
{"commits":["7a5137e7c695dcb392fdab891e308411858dafb0"],"user_facing":true,"description":"Roving tabindex on code tabs per WAI-ARIA pattern","type":"feature"}
|
|
34
|
+
{"commits":["2df37d3e06f36b5ec666391c2334078e0fed9a93","b62dc9b8b8ce1cc294b6237aadca9e38e30d0422"],"user_facing":true,"description":"Heading anchors visible on touch devices","type":"feature"}
|
|
35
|
+
{"commits":["617a169801e5b45300d526432d82642e83e8c5a9","b227ef59ec967fd5e70144274e91d33c6af04dfe"],"user_facing":true,"description":"Card-style prev/next navigation links","type":"feature"}
|
|
36
|
+
{"commits":["f609639c8ef83eb9bc8b5cab8a1c3b0bfb9302ce","2ebdc0c0612db4b4c6f2c88ac530e7a4b8fd0431"],"user_facing":true,"description":"Print stylesheet: 2cm margins, forced light colors, hidden breadcrumbs, code wrapping","type":"feature"}
|
|
37
|
+
{"commits":["4512d0a2061baff5f92996541448e350f45e5d76","9a8e210a54050f413a9afd51fb1021bda1f3b822"],"user_facing":true,"description":"Security headers and trailing slash redirects for Cloudflare Pages","type":"feature"}
|
|
38
|
+
{"commits":["a9f8329287c7fb70d1dc13f0e6a2c6f4173f4bbe"],"user_facing":true,"description":"Edit link shown at both top and bottom of content area","type":"feature"}
|
|
39
|
+
{"commits":["6538269846eefc2543f17965a4d279ec4542ff9d"],"user_facing":true,"description":"`llms.txt` and `llms-full.txt` for AI documentation ingestion","type":"feature"}
|
|
40
|
+
{"commits":["b62adfd673006acc2c60e0ef04422876710af995"],"user_facing":true,"description":"`selfdoc check` reports undocumented public symbols when coverage is below 100%","type":"feature"}
|
|
41
|
+
{"commits":["edbaf9bb51242ba86aa218f5bb4e517408a7892e"],"user_facing":true,"description":"`lint_ignore` config field for project-level lint rule suppression","type":"feature"}
|
|
42
|
+
{"commits":["9af7d53ae9e818d629e8f8c328d499123a7efc76"],"user_facing":true,"description":"Edit link and \"Last updated\" date no longer run together (flex layout with gap)","type":"feature"}
|
|
43
|
+
{"commits":["1b9028ef38e21c25e36a669a1beb009854b44d5b"],"user_facing":true,"description":"Search shows \"No results\" message instead of blank space","type":"feature"}
|
|
44
|
+
{"commits":["08ac2f8c54d2af91182698a8c0ac45eba3e6587f"],"user_facing":true,"description":"Search dialog closes when clicking a result link","type":"feature"}
|
|
45
|
+
{"commits":["87089a200454885cfca4f17361fbacef2b5e74ec"],"user_facing":true,"description":"Fixed code-block hover shadow invisible in dark mode","type":"feature"}
|
|
46
|
+
{"commits":["afb4db163dc8ae785a0e27e04a2497352db9a8dc"],"user_facing":true,"description":"Table `<caption>` derived from preceding heading for screen readers","type":"feature"}
|
|
47
|
+
{"commits":["d1997e04b6181943a5cdd0ec22f08a7ab2f0fd31"],"user_facing":true,"description":"44px minimum touch targets on all interactive elements","type":"feature"}
|
|
48
|
+
{"commits":["8d208c6696898e55eb02e4f0fb3147818a999c99"],"user_facing":true,"description":"Admonition icons (distinct SVG per type: info, lightbulb, warning triangle, octagon, exclamation)","type":"feature"}
|
|
49
|
+
{"commits":["caec48eedeb4077385e0c757ff99a5b2bfc504da"],"user_facing":true,"description":"Styled generic `<details>/<summary>` in content","type":"feature"}
|
|
50
|
+
{"commits":["3945f31a930790611f3d7f93c50c85c0a3d3bef5"],"user_facing":true,"description":"Styled standalone `<dfn>` tags outside glossary context","type":"feature"}
|
|
51
|
+
{"commits":["475d3454b4ecdfad67becf2b653976147d4422d0"],"user_facing":true,"description":"RSS feed link in site footer","type":"feature"}
|
|
52
|
+
{"commits":["af3efc02c3daae9273b629c0b97b89620f231379"],"user_facing":true,"description":"Fragment highlight animation when navigating to `#section` URLs","type":"feature"}
|
|
53
|
+
{"commits":["f33b0f2791a0e80d84b47341a1dd8dd5300157d8"],"user_facing":true,"description":"Topbar truncates long project names with ellipsis","type":"feature"}
|
|
54
|
+
{"commits":["10c2a16fa6848be083e1a9410c06fb25a1188a41","06905cacd1d4f7df67905fce3cf0d094565cd9e7","ef1169ac8f1dec5314e3c2d80176e90f921a1b36","7468ecc017a1f66a3f2a95c5c101112e93fe6824","d33fdd2e34945da7dcdad85fa9b7938c01049c19","c4b4606643f3e9db0db168db749a001c4485db5b","e7f1e630652721b725fd33cb344a4004e2ac1105","c1981a529e81d12fe4905767b28c42a5c0d1d925","35b224b25483623e028fb72c6d63489d91dc152a","7663d9dcc2e42c606dd8aa69ac364957be4bc780","1a38662d3f1a5e3288422d0bc3406a289d4281fc","f0413d4b715b16117d1a8503b07cfa01c56de21e","fbc3c4ac2e7f50bc607ba28ea550e612100fe345","f9928794403d7e05bee6c71a9919a89d2227865d","a4d0624259be77af943cce05bbdf47c7385a8b14","749e74238fe599c0f7859bddc2ce741bd6f4214f","c302b633158e056871d68573aeec910304b376e5","c2addfb75bd3ae2fd58c415f273713736a2a4bbe","4b0ec52589f5de9071f0753d8ecdd626e8027cb9","34c881b7395e64a2ad64da03076866b9d2306a54","f91044ed09096b880993c8bb467ba66071e83189","1bd78a4878f1d3066873d863e0b028e1d08862ea","5c135224a0f314698d70d8fc5875b993fc22b98d","5fc91de87f1fcddd7afda505d6bc7bae54258cdb","3d3ebcac77c827b62f00fd5a7444dd0d14eae9d8","51433b4dd1f67344b350d09af5857596560820c2","ad051a4dc1b650071d292978c00479d961e382c6","e3c6ad01adeb025f5c4c818af56c721bc91dc24a","ae7adaf4de9a025f85e5193e245c524ee42ade7a","fbdfaa1135e70059378ef35b083ef795c089f2b5"],"user_facing":false}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
## 0.3.0
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
- `base_url` is now a required field in `selfdoc.json` (previously optional)
|
|
6
|
+
- Frontmatter `description` is now required on every page (auto-extraction removed); missing description is a build error
|
|
7
|
+
- `selfdoc build` now fails on SEO lint warnings
|
|
8
|
+
- Subdirectory-based nested nav groups with collapsible sidebar sections, localStorage persistence, and frontmatter overrides (`nav_group`, `nav_order`)
|
|
9
|
+
- Configurable search trigger via `search` config field: `"icon"` (magnifying glass button), `"bar"` (text input with Cmd+K hint), or `"hidden"`
|
|
10
|
+
- Functional feedback widget via `feedback` config field with webhook POST and Google Analytics event support
|
|
11
|
+
- Atom feed generation (`feed.xml`) with auto-discovery `<link>` tag in `<head>`
|
|
12
|
+
- Definition list syntax (`term\n: definition`) with glossary styling and DefinedTerm JSON-LD
|
|
13
|
+
- Inline stat markup (`==value==`) producing semantic `<data>` elements
|
|
14
|
+
- Code tabs for switching between language variants with localStorage persistence
|
|
15
|
+
- Git branch auto-detection for edit links; configurable via `branch` config field
|
|
16
|
+
- Rich OG card PNG generation with text overlay via predraw (optional dependency)
|
|
17
|
+
- SEO lint framework with 15 rules covering headings, descriptions, images, contrast, and structured data
|
|
18
|
+
- JSON-LD structured data: TechArticle, BreadcrumbList, WebSite, SoftwareSourceCode, Organization/Person, ItemList, DefinedTermSet
|
|
19
|
+
- Open Graph and Twitter Card meta tags with `og:locale`, `og:image:alt`, and auto-generated social card images
|
|
20
|
+
- `robots.txt` with explicit AI crawler permissions (GPTBot, ClaudeBot, PerplexityBot, etc.)
|
|
21
|
+
- Visible "Last updated" dates with `<time>` elements, `dateModified` in JSON-LD, and sitemap `lastmod`
|
|
22
|
+
- `selfdoc check --ignore SEO007,SEO008` to suppress specific lint rules
|
|
23
|
+
- `selfdoc check --format json` for machine-readable output
|
|
24
|
+
- Color-coded `selfdoc check` output (green/yellow/red by severity)
|
|
25
|
+
- New config fields: `lang` (BCP 47), `author`, `twitter`, `branch`, `search`, `feedback`
|
|
26
|
+
- Sticky table headers no longer hide behind the fixed topbar
|
|
27
|
+
- Copy button now always visible on code blocks (was hidden until hover, invisible on touch)
|
|
28
|
+
- Fixed dark mode contrast for all accent colors
|
|
29
|
+
- Fixed breadcrumb intermediate links pointing to non-existent directory index pages
|
|
30
|
+
- Build-time Pygments syntax highlighting (replaced client-side highlight.js)
|
|
31
|
+
- Build-time CSS, JS, and HTML minification with critical CSS inlining
|
|
32
|
+
- Gzip and Brotli pre-compression of build output
|
|
33
|
+
- Search JS externalized to `search.js` with lazy index loading
|
|
34
|
+
- Conditional JS inclusion based on page content
|
|
35
|
+
- ARIA labels on sidebar nav, TOC nav, and search dialog
|
|
36
|
+
- Dynamic theme toggle ARIA label indicating current state
|
|
37
|
+
- Roving tabindex on code tabs per WAI-ARIA pattern
|
|
38
|
+
- Heading anchors visible on touch devices
|
|
39
|
+
- Card-style prev/next navigation links
|
|
40
|
+
- Print stylesheet: 2cm margins, forced light colors, hidden breadcrumbs, code wrapping
|
|
41
|
+
- Security headers and trailing slash redirects for Cloudflare Pages
|
|
42
|
+
- Edit link shown at both top and bottom of content area
|
|
43
|
+
- `llms.txt` and `llms-full.txt` for AI documentation ingestion
|
|
44
|
+
- `selfdoc check` reports undocumented public symbols when coverage is below 100%
|
|
45
|
+
- `lint_ignore` config field for project-level lint rule suppression
|
|
46
|
+
- Edit link and "Last updated" date no longer run together (flex layout with gap)
|
|
47
|
+
- Search shows "No results" message instead of blank space
|
|
48
|
+
- Search dialog closes when clicking a result link
|
|
49
|
+
- Fixed code-block hover shadow invisible in dark mode
|
|
50
|
+
- Table `<caption>` derived from preceding heading for screen readers
|
|
51
|
+
- 44px minimum touch targets on all interactive elements
|
|
52
|
+
- Admonition icons (distinct SVG per type: info, lightbulb, warning triangle, octagon, exclamation)
|
|
53
|
+
- Styled generic `<details>/<summary>` in content
|
|
54
|
+
- Styled standalone `<dfn>` tags outside glossary context
|
|
55
|
+
- RSS feed link in site footer
|
|
56
|
+
- Fragment highlight animation when navigating to `#section` URLs
|
|
57
|
+
- Topbar truncates long project names with ellipsis
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{"commits":["3b7d938e23a3e6262ac820eee9c9501d6d73f678"],"user_facing":true,"description":"npm package renamed from `selfdoc` to `selfdocumenting` (npm blocks `selfdoc` due to similarity with abandoned `self-doc` package). Install via `npm install -g selfdocumenting` or `npx selfdocumenting`. The CLI command remains `selfdoc`.","type":"feature"}
|
|
2
|
+
{"commits":["a726c122b4c388fee93cfd3f66cf721cbe85fed8","94c934a444a3055f45c50357dec87689ebb47e37","f41d54ea64d6fbc462551dd3fc4c125bf020c325"],"user_facing":false}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{"commits":["666324783b9d4f37133d53d37e854dd1efe41db5","c0206a28db280d5148816aad3e2e460a38a5b0ff","a6d353a8ee7477ae8d37a05d0f356428f2d4f309","22b404cd6fbb09d7e18e4e70f5ec65d9f40eef6f","cdfc40748b56a6ca9105bf793a126c9c95ad1a66","79bac0d976c73b5ed0be0af4a8f796b6903f618c","5fb7b923567ee737eb8b66dad996d3618777f288"],"user_facing":true,"description":"Directive syntax redesigned: new attribute-based format (`:-:`, `:<:`, `:>:`) with a formal directive catalog replacing the old `:::name arg` syntax. All existing directive blocks must be migrated. The `glossary` directive is now `list-glossary`.","type":"feature"}
|
|
2
|
+
{"commits":["358a2b4c47cea2558af1e6591bf1f85532aedc1e"],"user_facing":true,"description":"Custom directive scripts must update from `resolve(arg, config)` to `resolve(attrs, config, body)`. Body content is now forwarded.","type":"feature"}
|
|
3
|
+
{"commits":["be0983af15c5e7a144c2b176da19a50b63df9eaf","2dee526df35b35a2d1725b8019423e7951b641b0"],"user_facing":true,"description":"Extractors refactored to a `LanguageExtractor` protocol with a registry. Custom extractor integrations may need updating.","type":"feature"}
|
|
4
|
+
{"commits":["6f4fa6b4d07c737d42a8110969af985969189bbb","402e81ea2290e82f4485a5dd8446802e7d8c551d","bef0b8a0b503e6847f3f194ecd953f9c911f953e"],"user_facing":true,"description":"URL scheme changed from flat (`guide.html`) to directory-index (`guide/index.html`, served as `guide/`). All canonical URLs, sitemap entries, and internal links updated. External links pointing to old `.html` URLs will 404.","type":"feature"}
|
|
5
|
+
{"commits":["7007c922b9b6feef21cb0201e37a86d67afd9b99","ba13cfd9daa284d1625040563b39ac0a9524e072"],"user_facing":true,"description":"H1 headings are now auto-generated from the page title. The first `# heading` in Markdown is consumed as the title source (not rendered as-is). Multiple `#` headings in a single page now cause a build error.","type":"feature"}
|
|
6
|
+
{"commits":["f9ba480f4c7224c946cc93e362cea557a48f1642"],"user_facing":true,"description":"`selfdoc build` no longer exits 1 for lint warnings. Exit 1 is reserved for errors only. The `--warn-only` flag is deprecated (warnings are non-fatal by default).","type":"feature"}
|
|
7
|
+
{"commits":["ec3e5cb6bbc168f755d686dcad03be6d85fcbf6c","13e651bfbb8d5ab8eea0beb98608c1fe4719fe45","8724a4f3890302f6cb0bad9670cb67e33992da3e"],"user_facing":true,"description":"`selfdoc gen` command: auto-generates documentation pages from source code structure, with exclusion patterns, `generated: true` frontmatter, and stale file cleanup","type":"feature"}
|
|
8
|
+
{"commits":["664d97fa47f4b8f170b9a35a2be3c06bf1730b76"],"user_facing":true,"description":"`selfdoc gen-data` command: runs sandboxed scripts (via bubblewrap) to generate CSV/JSON data files for documentation","type":"feature"}
|
|
9
|
+
{"commits":["5fdcac42253562d9f284f9354bb47e97c49466c2","815728cca6eea6be1288e34fe0ded21ef3f2d578"],"user_facing":true,"description":"First-class strictcli support: auto-detects strictcli usage and generates CLI documentation pages","type":"feature"}
|
|
10
|
+
{"commits":["d20035f4fdfd75c536ba3031af70051f0f465510","23686ed9eb76e913bcf74ad18b9985b592a5f673"],"user_facing":true,"description":"Description staleness detection: `selfdoc check` warns (STALE001) when a page description no longer matches page content, tracked via content hashing in `.selfdoc/hashes/`","type":"feature"}
|
|
11
|
+
{"commits":["b37c30939a4d7c1518a4026b724c63f93daa0126"],"user_facing":true,"description":"Pluggable search engine: choose `\"builtin\"`, `\"fuse\"`, or `\"minisearch\"` via the `search_engine` config field","type":"feature"}
|
|
12
|
+
{"commits":["960e63ba3b62a9cfe54bc3f8ab3d2c8372df7d8f"],"user_facing":true,"description":"Landing page template: hero section with tagline, CTA button, and feature cards, configured via `branding` config field","type":"feature"}
|
|
13
|
+
{"commits":["9349003789793b55f3ceb576eb1a2a843304a58d"],"user_facing":true,"description":"Cross-page term linking: `<dfn>` definitions automatically linked across pages with dotted-underline `.term-link` styling","type":"feature"}
|
|
14
|
+
{"commits":["064fc82878725cf6446843e340d7644602ef215e"],"user_facing":true,"description":"Documentation coverage for Go (exported symbols) and TypeScript/JavaScript (`export` declarations), previously Python-only","type":"feature"}
|
|
15
|
+
{"commits":["aa8663104feb6090e6973fa8b5da13413e38ffdb"],"user_facing":true,"description":"Per-symbol coverage tracking with configurable `min_coverage` threshold","type":"feature"}
|
|
16
|
+
{"commits":["ae5299254add2fc666ea365a66bbdb956978f1a2"],"user_facing":true,"description":"Callout directives (note, tip, warning, danger, important) as first-class directive types","type":"feature"}
|
|
17
|
+
{"commits":["ba6e98afe96447dbe0d76264a5dc0bcc7fac9a93","bd79c10f4554b89c30b488f531222ae84d322690"],"user_facing":true,"description":"Feed filtering via `feed: false` frontmatter; changelog pages auto-detected and excluded by default","type":"feature"}
|
|
18
|
+
{"commits":["7a494163eac2ec4304d593c1609c8c9b2bc5fadb"],"user_facing":true,"description":"Reading progress bar fixed below the topbar","type":"feature"}
|
|
19
|
+
{"commits":["1af3955c31507e329c4cd97b7decd9d6c32f192e"],"user_facing":true,"description":"Scroll affordance gradients on overflowing code blocks and tables","type":"feature"}
|
|
20
|
+
{"commits":["f667d2ba444d20b625849624002bc6e443e17da8"],"user_facing":true,"description":"Sticky first column on horizontally-scrolling tables","type":"feature"}
|
|
21
|
+
{"commits":["0972dae5598380ad0ac8aa9fb4d152350f89cad7","b12903c2cc737e4ed10172f05138609b76cfbaa6"],"user_facing":true,"description":"`auto_detect` config field to disable step guide and API entry heuristics globally or per-page via `auto_steps`/`auto_api` frontmatter","type":"feature"}
|
|
22
|
+
{"commits":["a2fbf28591b53c1092daf0cc420b7a64943b1ac2","dd0861f3d34fa4f62ea4ffe1db9f9e87a0381813","de8921e2044d236b5b88f6e4b0daf9d8478f26c1","2f145d13e0737a251fb0c83a6441f9c5cfdfe2a4"],"user_facing":true,"description":"Markdown block tokenizer (`selfdoc/tokenizer.py`): standalone module with zero dependencies, 10 token types. Used internally for both HTML rendering and lint analysis.","type":"feature"}
|
|
23
|
+
{"commits":["579ba29b91e660215e76b7702c3f74daa9b26055","7bd32566f361842af0ff7ac1350a9d23f4bd00ae","6459b88334e4d08ee94b5a532a94cf5a7b64786f","624f5eee9ced0263334c45b3980363639797ee1d"],"user_facing":true,"description":"Auto-commit system: `selfdoc build`, `check`, `init`, `gen`, and `gen-data` now auto-commit changed project files (hashes, generated docs, generated data). Disable with `--no-commit`. Uses `safegit` when available, falls back to git.","type":"feature"}
|
|
24
|
+
{"commits":["e4217981327242aeeb97ee83b57408ceaccb4f4f","1abec30800407e19b71b2e553244244b6e089f8a"],"user_facing":true,"description":"Directive token support in tokenizer: `:::name arg` / `:::` blocks are recognized as structured tokens","type":"feature"}
|
|
25
|
+
{"commits":["8c4393ba73e0b3ac126e9ae22171b1f327d8d531"],"user_facing":true,"description":"SearchAction in WebSite JSON-LD on the homepage, enabling Google sitelinks search","type":"feature"}
|
|
26
|
+
{"commits":["95150c68f39cfb65db74b50cc58de07297a3a329","40ab8e292df5e4237912264be0577fe034922fe4","989d84b00a4b2db92eabf26ba3328b48bafb0a8b"],"user_facing":true,"description":"GitHub Pages security headers: `<meta http-equiv>` tags for X-Content-Type-Options, X-Frame-Options, and Content-Security-Policy injected when deploy target is `github-pages`","type":"feature"}
|
|
27
|
+
{"commits":["6fef50269f2bb4c2c45e0b1573ee7e393f795f1b"],"user_facing":true,"description":"WCAG contrast validation for user `custom.css`: SEO012 checks CSS variable overrides in `docs/custom.css` against theme backgrounds","type":"feature"}
|
|
28
|
+
{"commits":["fed7b48869a3981acc5851cc9685fb4155fb0c3e","7dd4aa11eb4bcef3d8c5cc72843e52676c410e1c"],"user_facing":true,"description":"High-contrast mode overrides: both themes override `--link`, `--text-secondary`, `--sidebar-text`, and `--sidebar-active` in `prefers-contrast: more` media query","type":"feature"}
|
|
29
|
+
{"commits":["c7a2d30ca00613223089875aef20ab5f2002461a"],"user_facing":true,"description":"Heading anchor IDs now deduplicate (appends `-1`, `-2` for repeated headings) and preserve Unicode characters","type":"feature"}
|
|
30
|
+
{"commits":["0505103790d7d809778e0668480d437375635a03"],"user_facing":true,"description":"Scrollspy correctly tracks headings when scrolling in both directions","type":"feature"}
|
|
31
|
+
{"commits":["2a5a7c54aba730089854f3f6292c3b1c30f01115"],"user_facing":true,"description":"Step guide detection tightened: keyword must appear at start of heading text, 200-char lookback (no more false positives on \"Next Steps\" or \"Troubleshooting Steps\")","type":"feature"}
|
|
32
|
+
{"commits":["9125fa32331204925501bc0c3e9812b8844e3941"],"user_facing":true,"description":"API entry wrapping tightened: requires identifier-like heading and single-line code block (no more false positives on tutorial sections)","type":"feature"}
|
|
33
|
+
{"commits":["f913a36f50d8f50af4e69761c50d1130290a8e58"],"user_facing":true,"description":"Prev/next links show directional labels (\"Previous\" / \"Next\") above page titles","type":"feature"}
|
|
34
|
+
{"commits":["8646841b641d5246114eeb7d84f872a2ae989040","57b8ba4033aa3bad9fb3010a467e80cf8ccb8d8c"],"user_facing":true,"description":"Admonition icons use CSS mask-image technique, adapting correctly to dark mode","type":"feature"}
|
|
35
|
+
{"commits":["1311c0180438b5ca78f1f3f50b9a9dd3be3ad0aa"],"user_facing":true,"description":"Diff highlighting uses `+`/`-` prefix symbols in addition to color","type":"feature"}
|
|
36
|
+
{"commits":["da581e4ef8a7fc43bc0513cfa48226a9b3df9519"],"user_facing":true,"description":"Collapsible section indicators replaced with 16x16px SVG chevrons (previously 8x12px CSS triangles)","type":"feature"}
|
|
37
|
+
{"commits":["0f617b38e2a5fd2076e822054b23f3c4950b6f36","05189c4a863a229d7bd75d82affda053cf3564d3","a49b7523cc70094301e718140ecc9c06832dd2f3","162c200f47b9e37afcbfa5ef64412f7d803073a4","e207ed6dfcc07e6b03fd823e33f984c8c5f255a2"],"user_facing":true,"description":"Clean theme link color (`#635bff`) barely passed WCAG AA in light mode (4.70:1) and failed in dark mode (4.23:1). New color `#5046e4` passes comfortably (6.29:1 light, 5.93:1 dark).","type":"feature"}
|
|
38
|
+
{"commits":["cd9cd73eb5ada98570e8c1d3e51772d59a27dadf","340f023b95e7d1d98cbb4aede8762df8d73b5e78","4304ec0451f294cb08d6c4f4ec719d3532fc92ff"],"user_facing":true,"description":"SEO lint false positives from fenced code blocks: heading counts (SEO001), heading level gaps (SEO002), empty alt text (SEO003), paragraph length (SEO007), empty sections (SEO011), and all other checks now use the tokenizer, making them immune to code block content","type":"feature"}
|
|
39
|
+
{"commits":["1dfeed4368b028f02c73181893aab65eaea64362"],"user_facing":true,"description":"SEO007 false positives on directive-heavy pages: when a heading is followed by a `:::directive` block, the short-paragraph warning is suppressed","type":"feature"}
|
|
40
|
+
{"commits":["9d7c0bcf5d66aa120aa2c91b1faa0bd6a6da57fb"],"user_facing":true,"description":"Statistics density check (SEO008) now evaluates prose content only, excluding code blocks","type":"feature"}
|
|
41
|
+
{"commits":["f54068bb534c8eb8e86db1ee65d7c1174b088390"],"user_facing":true,"description":"`md_to_html()` refactored from a 180-line line-walking loop into a clean tokenize-then-render pipeline","type":"feature"}
|
|
42
|
+
{"commits":["adfc067412347546f1c2ee3ff5f52b2feeb2a0ce"],"user_facing":true,"description":"`_redirects` file is no longer generated (directory-index URLs don't need trailing-slash redirects)","type":"feature"}
|
|
43
|
+
{"commits":["00a66be6a3b5e5027789446c882fefa2820f72cd"],"user_facing":true,"description":"`_headers` file is now only generated for `cloudflare-pages` deploy target","type":"feature"}
|
|
44
|
+
{"commits":["ae7a3a641d1b883060ba423d37c1d60a6e714331"],"user_facing":true,"description":"Auto-generated glossary page: collects all `<dfn>` terms site-wide into an alphabetical glossary with source links","type":"feature"}
|
|
45
|
+
{"commits":["74897510d7e34dabe2b74943658fa47aa3669579"],"user_facing":true,"description":"Changelog auto-detection: `CHANGELOG.md` in project root is automatically included as a documentation page","type":"feature"}
|
|
46
|
+
{"commits":["43a93d8302b1c6eac2754465b36312f97606ed9c"],"user_facing":true,"description":"`selfdoc build --warn-only` flag to treat lint warnings as non-fatal","type":"feature"}
|
|
47
|
+
{"commits":["954aefd563a1cf7c369c9a460dd72f3581853ff9"],"user_facing":true,"description":"Page progress indicator (\"Page X of Y\") between prev/next links","type":"feature"}
|
|
48
|
+
{"commits":["7523c7278c3c53b55052f04af093267ac4ae4b42"],"user_facing":true,"description":"Current page title shown in the topbar on non-index pages","type":"feature"}
|
|
49
|
+
{"commits":["257dee101ab0bb1073e7f7526cc5e069431af230"],"user_facing":true,"description":"URL-triggered search: navigate to `?q=term` to open search pre-filled with results","type":"feature"}
|
|
50
|
+
{"commits":["c20bdad56e773e005b84d39da5edb8ecdb9559b7"],"user_facing":true,"description":"Meta description auto-generation: pages without frontmatter `description` now get `<meta name=\"description\">` auto-extracted from the first paragraph","type":"feature"}
|
|
51
|
+
{"commits":["830289314238a526bbcff7bcfd4777b6ccb1ec3c"],"user_facing":true,"description":"Horizontal rule support: `---`, `***`, and `___` in Markdown now render as `<hr>`","type":"feature"}
|
|
52
|
+
{"commits":["08651f75f5bb4da433e60461ccfbc62cf9db8b58"],"user_facing":true,"description":"Code tab sync no longer infinite-loops with 3+ tab groups sharing a language","type":"feature"}
|
|
53
|
+
{"commits":["b7c63b3422c49a1899e2358bba7cb6ebb311fd43"],"user_facing":true,"description":"Heading copy-to-clipboard shows a toast notification","type":"feature"}
|
|
54
|
+
{"commits":["2c26729d2c9970f5ee63b73a776968b8552ae7b8"],"user_facing":true,"description":"Edit link opens in a new tab","type":"feature"}
|
|
55
|
+
{"commits":["33fda85e5f3d19194311f758ed74e3ea9ba2069d"],"user_facing":true,"description":"OG description falls back to first paragraph when no frontmatter description","type":"feature"}
|
|
56
|
+
{"commits":["4f0a7c47ed9de47fe266a69c92074d51b60de235"],"user_facing":true,"description":"Each admonition type has a distinct background color","type":"feature"}
|
|
57
|
+
{"commits":["f38467314db0bfdb534ac73092c5a504eb007af3"],"user_facing":true,"description":"Focus indicators use `:focus-visible` throughout (keyboard-only, no mouse outlines)","type":"feature"}
|
|
58
|
+
{"commits":["e81129f0f90dbb2ec404471844b00c926d6b7a95"],"user_facing":true,"description":"Sidebar active link has a visible background highlight","type":"feature"}
|
|
59
|
+
{"commits":["521dad0ee7f35ee4c9e0cd2c282efcab6a1e9d52"],"user_facing":true,"description":"Mobile sidebar traps focus within the overlay","type":"feature"}
|
|
60
|
+
{"commits":["341ccae830d7741fabdb856597432b3170108ff5"],"user_facing":true,"description":"Mobile sidebar closes on Escape key","type":"feature"}
|
|
61
|
+
{"commits":["06813377422a686703285b55d6435848f4dd6146"],"user_facing":true,"description":"Table rows highlight on hover","type":"feature"}
|
|
62
|
+
{"commits":["0080857f63910e47ea76d6f49dda5b6c287f7448"],"user_facing":true,"description":"Cmd+K label adapts to platform (shows Ctrl+K on Windows/Linux)","type":"feature"}
|
|
63
|
+
{"commits":["e015ddba6e22ffbc8241f791c3184f6d608e78dd"],"user_facing":true,"description":"\"Last updated\" date shown at the top of the page alongside breadcrumbs","type":"feature"}
|
|
64
|
+
{"commits":["c59aa6533583e73b0008962af9c265ae0586367c"],"user_facing":true,"description":"Search \"no results\" message includes guidance (\"Try different terms or browse the sidebar\")","type":"feature"}
|
|
65
|
+
{"commits":["ead839908ec109d16558023d7904a547f3d88794"],"user_facing":true,"description":"Feedback \"No\" response prompts for written feedback instead of just \"Thanks\"","type":"feature"}
|
|
66
|
+
{"commits":["418261317ca288a97651e85b84cc53a05a4d6fc8"],"user_facing":true,"description":"Negative feedback provides a text input for follow-up","type":"feature"}
|
|
67
|
+
{"commits":["a752a3bb5a5b3a0bdb0a2a1dd26f09c5d90d1174"],"user_facing":true,"description":"`<summary>` elements have `:focus-visible` outlines","type":"feature"}
|
|
68
|
+
{"commits":["bfac98bab192d21d24f6147ae44cd386dcc31220"],"user_facing":true,"description":"`<pre>` elements have `aria-label` describing the code language","type":"feature"}
|
|
69
|
+
{"commits":["8397ecd5172182f572443e6c9818b8b795c24d37"],"user_facing":true,"description":"`llms-full.txt` includes page boundaries with title headings and path comments","type":"feature"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
## 0.4.0
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
- Directive syntax redesigned: new attribute-based format (`:-:`, `:<:`, `:>:`) with a formal directive catalog replacing the old `:::name arg` syntax. All existing directive blocks must be migrated. The `glossary` directive is now `list-glossary`.
|
|
6
|
+
- Custom directive scripts must update from `resolve(arg, config)` to `resolve(attrs, config, body)`. Body content is now forwarded.
|
|
7
|
+
- Extractors refactored to a `LanguageExtractor` protocol with a registry. Custom extractor integrations may need updating.
|
|
8
|
+
- URL scheme changed from flat (`guide.html`) to directory-index (`guide/index.html`, served as `guide/`). All canonical URLs, sitemap entries, and internal links updated. External links pointing to old `.html` URLs will 404.
|
|
9
|
+
- H1 headings are now auto-generated from the page title. The first `# heading` in Markdown is consumed as the title source (not rendered as-is). Multiple `#` headings in a single page now cause a build error.
|
|
10
|
+
- `selfdoc build` no longer exits 1 for lint warnings. Exit 1 is reserved for errors only. The `--warn-only` flag is deprecated (warnings are non-fatal by default).
|
|
11
|
+
- `selfdoc gen` command: auto-generates documentation pages from source code structure, with exclusion patterns, `generated: true` frontmatter, and stale file cleanup
|
|
12
|
+
- `selfdoc gen-data` command: runs sandboxed scripts (via bubblewrap) to generate CSV/JSON data files for documentation
|
|
13
|
+
- First-class strictcli support: auto-detects strictcli usage and generates CLI documentation pages
|
|
14
|
+
- Description staleness detection: `selfdoc check` warns (STALE001) when a page description no longer matches page content, tracked via content hashing in `.selfdoc/hashes/`
|
|
15
|
+
- Pluggable search engine: choose `"builtin"`, `"fuse"`, or `"minisearch"` via the `search_engine` config field
|
|
16
|
+
- Landing page template: hero section with tagline, CTA button, and feature cards, configured via `branding` config field
|
|
17
|
+
- Cross-page term linking: `<dfn>` definitions automatically linked across pages with dotted-underline `.term-link` styling
|
|
18
|
+
- Documentation coverage for Go (exported symbols) and TypeScript/JavaScript (`export` declarations), previously Python-only
|
|
19
|
+
- Per-symbol coverage tracking with configurable `min_coverage` threshold
|
|
20
|
+
- Callout directives (note, tip, warning, danger, important) as first-class directive types
|
|
21
|
+
- Feed filtering via `feed: false` frontmatter; changelog pages auto-detected and excluded by default
|
|
22
|
+
- Reading progress bar fixed below the topbar
|
|
23
|
+
- Scroll affordance gradients on overflowing code blocks and tables
|
|
24
|
+
- Sticky first column on horizontally-scrolling tables
|
|
25
|
+
- `auto_detect` config field to disable step guide and API entry heuristics globally or per-page via `auto_steps`/`auto_api` frontmatter
|
|
26
|
+
- Markdown block tokenizer (`selfdoc/tokenizer.py`): standalone module with zero dependencies, 10 token types. Used internally for both HTML rendering and lint analysis.
|
|
27
|
+
- Auto-commit system: `selfdoc build`, `check`, `init`, `gen`, and `gen-data` now auto-commit changed project files (hashes, generated docs, generated data). Disable with `--no-commit`. Uses `safegit` when available, falls back to git.
|
|
28
|
+
- Directive token support in tokenizer: `:::name arg` / `:::` blocks are recognized as structured tokens
|
|
29
|
+
- SearchAction in WebSite JSON-LD on the homepage, enabling Google sitelinks search
|
|
30
|
+
- GitHub Pages security headers: `<meta http-equiv>` tags for X-Content-Type-Options, X-Frame-Options, and Content-Security-Policy injected when deploy target is `github-pages`
|
|
31
|
+
- WCAG contrast validation for user `custom.css`: SEO012 checks CSS variable overrides in `docs/custom.css` against theme backgrounds
|
|
32
|
+
- High-contrast mode overrides: both themes override `--link`, `--text-secondary`, `--sidebar-text`, and `--sidebar-active` in `prefers-contrast: more` media query
|
|
33
|
+
- Heading anchor IDs now deduplicate (appends `-1`, `-2` for repeated headings) and preserve Unicode characters
|
|
34
|
+
- Scrollspy correctly tracks headings when scrolling in both directions
|
|
35
|
+
- Step guide detection tightened: keyword must appear at start of heading text, 200-char lookback (no more false positives on "Next Steps" or "Troubleshooting Steps")
|
|
36
|
+
- API entry wrapping tightened: requires identifier-like heading and single-line code block (no more false positives on tutorial sections)
|
|
37
|
+
- Prev/next links show directional labels ("Previous" / "Next") above page titles
|
|
38
|
+
- Admonition icons use CSS mask-image technique, adapting correctly to dark mode
|
|
39
|
+
- Diff highlighting uses `+`/`-` prefix symbols in addition to color
|
|
40
|
+
- Collapsible section indicators replaced with 16x16px SVG chevrons (previously 8x12px CSS triangles)
|
|
41
|
+
- Clean theme link color (`#635bff`) barely passed WCAG AA in light mode (4.70:1) and failed in dark mode (4.23:1). New color `#5046e4` passes comfortably (6.29:1 light, 5.93:1 dark).
|
|
42
|
+
- SEO lint false positives from fenced code blocks: heading counts (SEO001), heading level gaps (SEO002), empty alt text (SEO003), paragraph length (SEO007), empty sections (SEO011), and all other checks now use the tokenizer, making them immune to code block content
|
|
43
|
+
- SEO007 false positives on directive-heavy pages: when a heading is followed by a `:::directive` block, the short-paragraph warning is suppressed
|
|
44
|
+
- Statistics density check (SEO008) now evaluates prose content only, excluding code blocks
|
|
45
|
+
- `md_to_html()` refactored from a 180-line line-walking loop into a clean tokenize-then-render pipeline
|
|
46
|
+
- `_redirects` file is no longer generated (directory-index URLs don't need trailing-slash redirects)
|
|
47
|
+
- `_headers` file is now only generated for `cloudflare-pages` deploy target
|
|
48
|
+
- Auto-generated glossary page: collects all `<dfn>` terms site-wide into an alphabetical glossary with source links
|
|
49
|
+
- Changelog auto-detection: `CHANGELOG.md` in project root is automatically included as a documentation page
|
|
50
|
+
- `selfdoc build --warn-only` flag to treat lint warnings as non-fatal
|
|
51
|
+
- Page progress indicator ("Page X of Y") between prev/next links
|
|
52
|
+
- Current page title shown in the topbar on non-index pages
|
|
53
|
+
- URL-triggered search: navigate to `?q=term` to open search pre-filled with results
|
|
54
|
+
- Meta description auto-generation: pages without frontmatter `description` now get `<meta name="description">` auto-extracted from the first paragraph
|
|
55
|
+
- Horizontal rule support: `---`, `***`, and `___` in Markdown now render as `<hr>`
|
|
56
|
+
- Code tab sync no longer infinite-loops with 3+ tab groups sharing a language
|
|
57
|
+
- Heading copy-to-clipboard shows a toast notification
|
|
58
|
+
- Edit link opens in a new tab
|
|
59
|
+
- OG description falls back to first paragraph when no frontmatter description
|
|
60
|
+
- Each admonition type has a distinct background color
|
|
61
|
+
- Focus indicators use `:focus-visible` throughout (keyboard-only, no mouse outlines)
|
|
62
|
+
- Sidebar active link has a visible background highlight
|
|
63
|
+
- Mobile sidebar traps focus within the overlay
|
|
64
|
+
- Mobile sidebar closes on Escape key
|
|
65
|
+
- Table rows highlight on hover
|
|
66
|
+
- Cmd+K label adapts to platform (shows Ctrl+K on Windows/Linux)
|
|
67
|
+
- "Last updated" date shown at the top of the page alongside breadcrumbs
|
|
68
|
+
- Search "no results" message includes guidance ("Try different terms or browse the sidebar")
|
|
69
|
+
- Feedback "No" response prompts for written feedback instead of just "Thanks"
|
|
70
|
+
- Negative feedback provides a text input for follow-up
|
|
71
|
+
- `<summary>` elements have `:focus-visible` outlines
|
|
72
|
+
- `<pre>` elements have `aria-label` describing the code language
|
|
73
|
+
- `llms-full.txt` includes page boundaries with title headings and path comments
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{"commits":["c49c0921c49011c8644a6bc7ddd6b71a0f660060"],"user_facing":false}
|
|
2
|
+
{"commits":["c5501cdc68770602dee65bf78614a6cb0262ab55"],"user_facing":false}
|
|
3
|
+
{"commits":["a32257fd22f1531003ec60ee9c4f00cf0a521c9b"],"user_facing":false}
|
|
4
|
+
{"commits":["1928ad226a3657c089941e017025ea49b846574e","bd31871260c794b8069521c1b8282c8648d2ecc1","f62fd7ba0ae9bb6d74e34222e00be481f6f86caf"],"user_facing":false}
|
|
5
|
+
{"commits":["23795ad5b0a0460a9fd800cbaa01b352654bb5d7"],"user_facing":false}
|
|
6
|
+
{"commits":["583c7fcfae40623860c9b3cdcfa32226fe30be3d"],"user_facing":true,"description":"Auto-commit prefers rlsbl commit when available, marking commits with Autogenerated trailer for changelog coverage exemption","type":"feature"}
|
|
7
|
+
{"commits":["6de2021cc4e20bb17450a37412740a76332e701a"],"user_facing":false}
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
".github/workflows/ci.yml": "cd338ccb3d56298b8b6211ca46de34cde8eda0defdd9c4dde8b6f9ad5e8af51d",
|
|
3
|
+
".github/workflows/publish.yml": "ff275580a98127104d28ce4a9b2992ce6a30a5d96de9bfcaa1b95bee97e5e2da",
|
|
4
|
+
"CLAUDE.md": "d616e99c7bd5f1d8f03735c14f4cafa7cabac6886e8792f8a3200b04130d45af",
|
|
5
|
+
".rlsbl/hooks/pre-release.sh": "bb20a1ea350e5ed30ede93498e4aff1d1397eaeb37397d4a7168a7c9006ac1a7",
|
|
6
|
+
".rlsbl/hooks/post-release.sh": "b455f8511e0b2655509ecf5dcb0ab7da5bb7c961f47910ff8e00cab5bd51f833",
|
|
7
|
+
".claude/settings.json": "78922a784ee78e9e50587e93628cd3b9d4dfbe49087adc4514e6781cea38cbb9",
|
|
8
|
+
".gitignore": "93ad7821acce7a08b523cc3cae78af1baf10e049f0d82b12ca2d45497454597e",
|
|
9
|
+
".rlsbl/hooks/pre-checks.sh": "60c57d4563263124530e6f33aca77550ea2161ad3b33b3ba6ad1c03fea9eb6e2",
|
|
10
|
+
".rlsbl/lint/python.toml": "9cfbcef2e010d5fad243437bf2fd8df54a1fae70ee0762f9d11da70fe207501c",
|
|
11
|
+
".rlsbl/lint/go.toml": "807d5cf760baad6d571a5bfd43cb163efe356f7462ba9f1918d72de45f62339f",
|
|
12
|
+
".rlsbl/lint/npm.toml": "baa36014e65923d8cc5c8b83c77fa651da79351627570476402da66840027645",
|
|
13
|
+
".rlsbl/changes/unreleased.jsonl": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
|
14
|
+
}
|