docs: sync docs/v0.2 to v0.2.3 + SEO improvements#509
Merged
Conversation
* docs: migrate hosting from GitHub Pages to IC asset canister - Remove /icp-cli/ base prefix from astro config and version switcher - Add IC asset canister config (icp.yaml, .ic-assets.json5, .well-known/ic-domains) - Add docs-deploy.yml workflow to deploy docs-deployment branch to IC mainnet - Update docs.yml to push built assets to docs-deployment instead of gh-pages - Update VERSIONED_DOCS.md, CONTRIBUTING.md, and README with new deployment info The docs-deployment branch has been bootstrapped from gh-pages (path rewrites applied) and is already deployed to ak73b-maaaa-aaaad-qlbgq-cai. * docs: update custom domain to cli.internetcomputer.org
- Only ignore .icp/cache (not all of .icp/) so canister ID mappings can be committed as intended for icp projects - Remove outdated .icpdata ignore entry (no longer used) - Ignore examples/*/.icp/ since this repo does not track canister IDs for the examples (neither local nor mainnet deployments) - Commit docs-site/.icp/data/mappings/ic.ids.json (canister ID for docs) - Restore cp in workflow (file is now in source control)
workflow_run does not fire for tag-triggered workflows, and GITHUB_TOKEN pushes do not trigger other workflows. Use workflow_call instead: docs.yml explicitly calls docs-deploy.yml after publish jobs complete. The deploy job only runs when at least one publish job succeeded, so PR builds (where all publish jobs are skipped) do not trigger a deploy.
…cs is skipped (#444) GitHub auto-skips dependent jobs when any needed job is skipped, regardless of the if: condition. Using always() prevents this while the explicit failure/cancelled checks ensure we still don't deploy on errors. On main branch pushes publish-versioned-docs is correctly skipped (no tag), but without always() this caused deploy-to-ic to also be skipped. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…unused workflow_dispatch (#445) - Pre-release tags (v*-*) and docs branches (docs/v*-*) now excluded at the trigger level, preventing beta releases from deploying to the docs site - workflow_dispatch removed from docs.yml — publish jobs require push event so manual triggers only ran the build job, which was misleading. docs-deploy.yml retains workflow_dispatch for manual IC re-deploys.
Bumps [h3](https://github.com/h3js/h3) from 1.15.5 to 1.15.8. - [Release notes](https://github.com/h3js/h3/releases) - [Changelog](https://github.com/h3js/h3/blob/main/CHANGELOG.md) - [Commits](h3js/h3@v1.15.5...v1.15.8) --- updated-dependencies: - dependency-name: h3 dependency-version: 1.15.8 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* feat: add agent-friendly docs (llms.txt, markdown endpoints, agent signaling) Implement the Agent-Friendly Documentation spec (agentdocsspec.com) to make docs discoverable and consumable by AI agents. * fix: use Node 22 in docs workflow for fs.globSync support * fix: move root llms.txt deployment to publish-root-files Root llms.txt is now copied from the latest version's folder on the docs-deployment branch during publish-root-files, instead of being deployed by publish-versioned-docs. This ensures root llms.txt stays in sync when versions.json is bumped (which only triggers publish-root-files, not publish-versioned-docs). * feat: add version navigation to root llms.txt Prepend version links to the root llms.txt during publish-root-files. Only the root copy gets version navigation — versioned copies stay static to avoid stale cross-references when new versions are released. * docs: update VERSIONED_DOCS.md for agent-friendly docs and remove beta section - Add agent-friendly docs section explaining llms.txt and .md endpoints - Update deployment branch structure to show llms.txt and .md files - Update workflow trigger table to mention llms.txt handling - Remove outdated beta versions section (pre-release tags/branches are now excluded from the docs workflow)
Allows manually triggering the docs workflow from the GitHub Actions UI, useful for deploying root files (e.g. llms.txt) without a code change.
* fix(docs): add cache headers for markdown endpoints and llms.txt The agentdocsspec checker flagged missing cache headers on .md and .txt files. Add Cache-Control: public, max-age=300 to match the HTML pages. * fix(docs): move llms.txt directive earlier in page for agent discovery The agentdocsspec checker flagged the llms.txt directive as "buried deep (past 50%)" because the rehype plugin injected it into the Starlight content area, after the header, nav, and sidebar. Move the directive to the Banner component (top of <main>) and add a <link rel="help"> in <head>. Remove the now-unused rehype plugin. * feat(docs): include version in llms.txt title for versioned builds When built with a versioned base path (e.g. /0.2/), the llms.txt title now reads "ICP CLI Documentation (v0.2)" instead of the generic title. * feat(docs): add IC skills registry link to llms.txt Point agents to the skills discovery endpoint so they can find and install specialized IC development skills (icp-cli, canister security, ICRC ledger, etc.) alongside the documentation.
* feat(docs): add agent skills discovery instructions to llms.txt Replace the single-line skills registry link with structured instructions that tell agents how to discover, fetch, and prioritize skills. Mirrors the pattern from dfinity/developer-docs. * fix(docs): prefer locally loaded skills over registry fetch in llms.txt Align llms.txt wording with icp-cli-templates AGENTS.md: instruct agents to use skills already in their context before fetching from the registry.
* chore: cargo update * chore: remove resolved vulnerability ignores from audit.toml RUSTSEC-2026-0001 and RUSTSEC-2026-0037 are no longer blocking as the affected crate versions have been upgraded to safe ones in Cargo.lock. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: upgrade winreg to 0.56.0 Resolves RUSTSEC-2026-0037 indirectly — winreg 0.56.0 updates windows-sys to 0.61.2, which is required by the safe quinn-proto version. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: upgrade bollard to 0.20.2 and fix breaking API changes Model types moved from `bollard::secret` to `bollard::models` in 0.20.2. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
- Move agent signaling blockquote from Banner component to post-build injection right after <body>, placing it at ~12% of the document instead of >50% (past nav/sidebar). Addresses the "buried deep" warning from the agentdocsspec checker. - Split the monolithic CLI reference (52K+ chars) into 63 per-command markdown endpoints under reference/cli/. Top-level commands are listed in llms.txt; subcommand files include linked navigation to siblings. Includes build-time validation for slug collisions, broken links, and format changes. - Copy sitemap-index.xml to sitemap.xml so the agentdocsspec freshness check can discover it at the conventional path. Move agentDocs() integration after starlight() to ensure sitemap exists when the hook runs.
…466) * fix: Network fails to start if a stale network descriptor is present * changelog * fmt * fix: simplify stale descriptor cleanup and fix ordering Clean port descriptor before project descriptor so the global resource is freed first. Pass gateway_port() directly since cleanup_port_descriptor already handles None. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Linwei Shang <linwei.shang@dfinity.org> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Updated the link to the full documentation site. Co-authored-by: Marco Walz <8124114+marc0olo@users.noreply.github.com>
* feat: Make internet identity available at id.ai.localhost * refactor: Rename internet identity constants to match frontend canister Rename INTERNET_IDENTITY_CID/INTERNET_IDENTITY_PRINCIPAL to INTERNET_IDENTITY_FRONTEND_CID/INTERNET_IDENTITY_FRONTEND_PRINCIPAL and update test references accordingly. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Linwei Shang <linwei.shang@dfinity.org> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(docs): add Matomo analytics to documentation site Add Matomo tracking to the docs site, matching the portal's setup (cookies disabled, link tracking enabled, same Matomo Cloud instance). The tracking script is deployed as a single root-level file (`/matomo.js`) rather than baked into each versioned build, so the site ID can be updated without rebuilding existing versions. > **TODO**: Replace `CHANGEME` in `docs-site/matomo.js` with the actual > Matomo site ID once IT creates the site for `cli.internetcomputer.org`. * chore(docs): set Matomo site ID to 21 * chore(docs): add cache headers for matomo.js
* fix(ci): make paths-filter negation patterns actually exclude files The dorny/paths-filter default predicate-quantifier is 'some' (OR), which means negation patterns like '!**.md' never exclude files already matched by a positive pattern like '**'. Switch to 'every' (AND) so docs-only changes correctly skip CI. Also bump to v4.0.1. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore(ci): bump and pin all GitHub Actions to latest versions Bump pinned actions to their latest releases and SHA-pin previously unpinned actions to resolve node20 deprecation warnings. - actions/checkout v4.3.0 → v6.0.2 - actions/setup-node v4.2.0 → v6.3.0 - actions/upload-artifact v4 → v7.0.0 (now SHA-pinned) - actions/download-artifact v4 → v8.0.1 (now SHA-pinned) - actions-rust-lang/setup-rust-toolchain v1.15.3 → v1.15.4 - actions-rust-lang/audit v1.2.6 → v1.2.7 - EmbarkStudios/cargo-deny-action v2.0.13 → v2.0.15 - taiki-e/install-action v2.67.3 → v2.70.2 - dfinity/setup-mops v1 → v1.4.1 (now SHA-pinned) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore(ci): revert release.yml changes (autogenerated by dist) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore(ci): regenerate release workflow with dist v0.31.0 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: exclude dist-workspace.toml from taplo formatting Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat: support creating canisters via a proxy canister Add an optional `proxy` parameter to `CreateOperation::new()`. When provided, canister creation is routed through the proxy canister's `proxy` method instead of calling the cycles ledger or management canister directly. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: replace proxy/subnet options with CreateTarget enum Combine the mutually exclusive `proxy` and `subnet` parameters into a single `CreateTarget` enum with `Subnet`, `Proxy`, and `None` variants. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add --proxy flag to `icp canister create` Add a --proxy CLI argument that conflicts with --subnet. When provided, canister creation is routed through the proxy canister. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: add integration test for canister creation through proxy Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: update changelog and CLI reference for --proxy flag Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…pes (#482) * refactor: extract update_or_proxy_call to deduplicate proxy call logic Move the proxy-or-direct update call dispatch into a shared `operations::call::update_or_proxy_call` function, replacing the duplicated proxy handling in `commands/canister/call.rs` and `operations/create.rs`. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: rename call module to proxy, add typed update_or_proxy helper Rename operations/call.rs to operations/proxy.rs. Rename functions to update_or_proxy_raw and update_or_proxy. Add a higher-level update_or_proxy that accepts ArgumentEncoder/ArgumentDecoder for typed Candid encoding/decoding. Refactor create_proxy to use the typed helper with ic-management-canister-types (CreateCanisterArgs, CanisterIdRecord). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: replace local management canister types with ic-management-canister-types Remove the `management_canister` module from `icp-canister-interfaces` and use `CanisterSettings`, `CreateCanisterArgs`, `CanisterIdRecord`, and `LogVisibility` from the `ic-management-canister-types` crate instead. This eliminates duplicated type definitions and ensures consistency with the upstream IC interface types. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: remove redundant local LogVisibility enum, use LogVisibilityDef directly The local LogVisibility enum was a 1:1 mirror of ic_management_canister_types::LogVisibility. Replace it with LogVisibilityDef as the Settings field type and convert directly to the IC management type, removing ~50 lines of boilerplate. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…483) Removes [lodash](https://github.com/lodash/lodash). It's no longer used after updating ancestor dependency [@astrojs/language-server](https://github.com/withastro/astro/tree/HEAD/packages/language-tools/language-server). These dependencies need to be updated together. Removes `lodash` Updates `@astrojs/language-server` from 2.16.4 to 2.16.6 - [Release notes](https://github.com/withastro/astro/releases) - [Changelog](https://github.com/withastro/astro/blob/main/packages/language-tools/language-server/CHANGELOG.md) - [Commits](https://github.com/withastro/astro/commits/@astrojs/language-server@2.16.6/packages/language-tools/language-server) --- updated-dependencies: - dependency-name: lodash dependency-version: dependency-type: indirect - dependency-name: "@astrojs/language-server" dependency-version: 2.16.6 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro) from 5.16.11 to 5.18.1. - [Release notes](https://github.com/withastro/astro/releases) - [Changelog](https://github.com/withastro/astro/blob/astro@5.18.1/packages/astro/CHANGELOG.md) - [Commits](https://github.com/withastro/astro/commits/astro@5.18.1/packages/astro) --- updated-dependencies: - dependency-name: astro dependency-version: 5.18.1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps and [picomatch](https://github.com/micromatch/picomatch). These dependencies needed to be updated together. Updates `picomatch` from 4.0.3 to 4.0.4 - [Release notes](https://github.com/micromatch/picomatch/releases) - [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md) - [Commits](micromatch/picomatch@4.0.3...4.0.4) Updates `picomatch` from 2.3.1 to 2.3.2 - [Release notes](https://github.com/micromatch/picomatch/releases) - [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md) - [Commits](micromatch/picomatch@4.0.3...4.0.4) --- updated-dependencies: - dependency-name: picomatch dependency-version: 4.0.4 dependency-type: indirect - dependency-name: picomatch dependency-version: 2.3.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [smol-toml](https://github.com/squirrelchat/smol-toml) from 1.6.0 to 1.6.1. - [Release notes](https://github.com/squirrelchat/smol-toml/releases) - [Commits](squirrelchat/smol-toml@v1.6.0...v1.6.1) --- updated-dependencies: - dependency-name: smol-toml dependency-version: 1.6.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [h3](https://github.com/h3js/h3) from 1.15.8 to 1.15.9. - [Release notes](https://github.com/h3js/h3/releases) - [Changelog](https://github.com/h3js/h3/blob/v1.15.9/CHANGELOG.md) - [Commits](h3js/h3@v1.15.8...v1.15.9) --- updated-dependencies: - dependency-name: h3 dependency-version: 1.15.9 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: raymondk <raymond.khalife@dfinity.org>
Bumps [defu](https://github.com/unjs/defu) from 6.1.4 to 6.1.6. - [Release notes](https://github.com/unjs/defu/releases) - [Changelog](https://github.com/unjs/defu/blob/main/CHANGELOG.md) - [Commits](unjs/defu@v6.1.4...v6.1.6) --- updated-dependencies: - dependency-name: defu dependency-version: 6.1.6 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.4.1 to 6.4.2. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v6.4.2/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v6.4.2/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 6.4.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.1.12 to 7.3.2. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v7.3.2/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v7.3.2/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 7.3.2 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* refactor: add proxy_management module with create_canister wrapper Extract the proxied management canister create_canister call into a dedicated proxy_management module, keeping raw IC types as the interface. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: route all management canister calls through proxy_management Replace every `ManagementCanister::create` / `ic_utils` builder call with the corresponding `proxy_management::*` wrapper that dispatches via `update_or_proxy`. Each call site now accepts an optional proxy principal, currently passed as `None`. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: set effective_canister_id for direct management canister calls Management canister calls routed through `update_or_proxy` were missing the effective_canister_id, causing the IC HTTP endpoint to fail with "canister_not_found" when routing the request. The old `ic_utils::ManagementCanister` set this automatically; the new raw `agent.update()` path needs it explicitly. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: use Candid-encoded empty args for install_code default When no init args are provided, the old ic_utils builder serialized an empty Candid message (DIDL\x00\x00) via `Encode!()`. The refactored code used `unwrap_or_default()` producing raw empty bytes, which the management canister cannot parse as valid Candid. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: use query call for direct fetch_canister_logs fetch_canister_logs is a query method on the management canister, not an update. When no proxy is provided, make a direct query call instead of routing through update_or_proxy. Introduce FetchCanisterLogsError to model the distinct direct-query and proxied-update error paths. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add --proxy flag to canister subcommands Add a --proxy CLI flag to all `icp canister` subcommands that involve management canister calls via proxy_management, allowing users to route these calls through a proxy canister. Commands updated: start, stop, delete, install, status, logs, migrate-id, settings update, settings sync, snapshot create/restore/ list/delete. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: update changelog and CLI reference for --proxy flag Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add --proxy flag to icp deploy command Route management canister calls through a proxy canister during deploy. Includes a TODO for the known limitation where sync steps (asset uploads) fail for newly created frontend canisters when using --proxy. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: add integration tests for --proxy flag across canister commands Cover deploy, install, delete, status, stop, start, settings update, settings sync, and the full snapshot workflow through a proxy canister. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: add ignored integration test for canister logs --proxy fetch_canister_logs is not yet available in replicated mode, so hide the --proxy flag from --help and mark the test as #[ignore] until the IC spec change lands (dfinity/portal#6106). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: warn on effective controller removal in canister settings update When --proxy is set, the proxy canister is the effective controller making management calls. The self-removal warning now checks the proxy principal instead of the caller's identity, preventing false prompts (and "not a terminal" errors in tests) when adding controllers to proxy-deployed canisters. Warning messages are also updated to be accurate for each case. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: add --proxy flag to snapshot download and upload commands Thread proxy through all snapshot transfer operations so that snapshot download/upload can be routed through a proxy canister. Also extend the proxy workflow integration test to cover these commands. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: update CLI reference for snapshot download/upload --proxy flag Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat: add --args/--args-file/--args-format flags to `icp deploy` Extract shared ArgsOpt struct and load_args helper into args.rs to deduplicate init-args handling across canister install, canister call, and deploy. CLI flags take priority over manifest init_args when deploying a single canister. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor: rename InitArgsFormat to ArgsFormat The type is used for both canister install and call args, not just init args. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * chore: regenerate CLI docs and config schemas Updates InitArgsFormat → ArgsFormat in JSON schemas and CLI reference docs. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * test: add tests for `icp deploy --args*` flags Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * chore: update changelog for deploy --args* flags Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * chore: tweak changelog wording for deploy --args* flags Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * docs: improve deploy command help and remove 'initialization' from args field descriptions Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * test: add test for CLI --args overriding manifest init_args Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * docs: fix --args-format example to use 'bin' instead of 'raw' Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…od, structured data (#508) * feat(docs-site): add SEO improvements, OG image, RSS feed, and agent-friendly docs - Generate og-image.png at build time from og-image.svg via @resvg/resvg-js - Add JSON-LD structured data (WebSite + Organization schemas) to all pages - Add og:image, og:image:alt, twitter:image, robots, and author meta tags - Generate RSS 2.0 feed (feed.xml) with git-accurate publish dates per page - Generate llms-full.txt for RAG pipeline ingestion - Inject git-accurate <lastmod> dates into the Starlight-generated sitemap - Add dynamic robots.txt generation in CI (blocks old versioned paths, /main/) - Add root sitemap.xml index in CI pointing to latest version's sitemap - Copy og-image.png, llms.txt, llms-full.txt, feed.xml from latest version to root in CI - Add custom Footer component with RSS and llms.txt discovery links - Update docs-site/README.md and task6-docs.md to reflect new build/deploy behavior Closes #507 * feat(docs-site): add SEO improvements, OG image, RSS feed, and agent-friendly docs - Generate og-image.png at build time from og-image.svg via @resvg/resvg-js - Add JSON-LD structured data (WebSite + Organization schemas) to all pages - Add og:image, og:image:alt, twitter:image, robots, and author meta tags - Generate RSS 2.0 feed (feed.xml) with git-accurate publish dates per page - Generate llms-full.txt for RAG pipeline ingestion - Inject git-accurate <lastmod> dates into the Starlight-generated sitemap - Add dynamic robots.txt generation in CI (blocks old versioned paths, /main/) - Add root sitemap.xml index in CI pointing to latest version's sitemap - Copy og-image.png, llms.txt, llms-full.txt, feed.xml from latest version to root in CI - Add custom Footer component with RSS and llms.txt discovery links - Update docs-site/README.md and task6-docs.md to reflect new build/deploy behavior Closes #507 * fix(docs-site): address Copilot review feedback on SEO implementation - Use root-absolute URLs for feed.xml and llms.txt in head links and Footer so feed readers and agents always discover the canonical root endpoint - Use site: SITE (with fallback) instead of site: process.env.PUBLIC_SITE so siteUrl is always populated in the plugin during local builds - Add fetch-depth: 0 to all three build job checkouts so git log returns accurate dates for sitemap lastmod and RSS pubDate - Fix robots.txt contradictory Allow/Disallow /main/ when LATEST_VERSION=main - Strip BOM from per-page .md files when concatenating llms-full.txt - Memoize getGitDate() results to avoid redundant git log subprocesses - Use root-absolute siteUrl for agent signaling directive href in HTML pages * fix(docs-site): use canonical root URL for feed atom:self; simulate root files in test script - Fix atom:link rel="self" in feed.xml to point to ${siteUrl}/feed.xml (canonical subscription URL) instead of the versioned path - Update test-version-switcher.sh to simulate the publish-root-files CI step: copies llms.txt, llms-full.txt, feed.xml, og-image.png from the latest version folder to dist-test/ root, and generates robots.txt * docs(docs-site): mention test-version-switcher.sh in README * chore(docs-site): add test:versions npm script for version switcher testing * fix(docs-site): generate root sitemap.xml in test:versions script * fix(docs-site): point root sitemap.xml directly to sitemap-0.xml for spec compliance * fix(docs-site): address second round of Copilot review feedback - Replace execSync shell interpolation with spawnSync args array in getGitDate to avoid shell injection on unusual file paths - Use date.slice(0, 10) for sitemap lastmod instead of toISOString() to avoid UTC conversion shifting the date for commits near midnight - Strip trailing slash from SITE constant to prevent double slashes in URLs - Clarify robots.txt comment: /main/ is conditionally disallowed, not always * docs(docs-site): clarify robots.txt /main/ conditional behavior in README * fix(docs-site): address third round of Copilot review feedback - Use root-relative /feed.xml and /llms.txt for head discovery links and footer links so local/staging environments don't advertise production URLs; absolute URLs are kept only for og:image/twitter:image where required - Replace CDATA with escapeXml() for RSS item descriptions to avoid invalid XML if a description contains the ]]> CDATA terminator sequence * chore(docs-site): fix step numbering in astro-agent-docs build hook comments
Bumps [rand](https://github.com/rust-random/rand) from 0.10.0 to 0.10.1. - [Release notes](https://github.com/rust-random/rand/releases) - [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md) - [Commits](rust-random/rand@0.10.0...0.10.1) --- updated-dependencies: - dependency-name: rand dependency-version: 0.10.1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
docs/v0.2to thev0.2.3release tag (the branch was stale at the March 30 state, behind v0.2.3)Why
The
docs/v0.2branch andv*tags both triggerpublish-versioned-docsand deploy to the same/0.2/folder. The branch was sitting behind the v0.2.3 tag; any push to it would have silently overwritten live docs with older content.Test plan
/0.2//0.2/on the live site reflects the SEO improvements (OG image, RSS feed link in footer, structured data in<head>)