Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
764ce2a
docs: migrate hosting from GitHub Pages to IC asset canister (#439)
marc0olo Mar 17, 2026
71fbfd8
fix: commit docs canister ID mapping and tighten gitignore (#442)
marc0olo Mar 17, 2026
6fffd10
fix: trigger docs deploy via workflow_call from docs.yml (#443)
marc0olo Mar 18, 2026
69a2961
fix: use always() so deploy-to-ic runs even when publish-versioned-do…
marc0olo Mar 18, 2026
603bf86
fix: exclude pre-release tags/branches from docs workflow and remove …
marc0olo Mar 18, 2026
3d8f490
docs: consolidate list item separators to em dashes (#447)
marc0olo Mar 18, 2026
9d866c2
chore(deps): bump h3 from 1.15.5 to 1.15.8 in /docs-site (#449)
dependabot[bot] Mar 19, 2026
b21a7f9
feat: agent-friendly docs (llms.txt + markdown endpoints) (#448)
marc0olo Mar 19, 2026
459f6d9
feat: add workflow_dispatch trigger to docs workflow (#450)
marc0olo Mar 19, 2026
eb31bd9
docs: improve agentdocsspec compliance (#451)
marc0olo Mar 19, 2026
be3d90e
chore: clarify id default command purpose (#454)
viviveevee Mar 20, 2026
5d92dc8
feat: Implement JSON output for remaining commands (#452)
adamspofford-dfinity Mar 20, 2026
4a58f89
fix(docs): pin asset-canister recipe version in local development gui…
marc0olo Mar 21, 2026
6d2d331
feat(docs): add agent skills discovery instructions to llms.txt (#453)
marc0olo Mar 21, 2026
cf5214d
chore: fix Rust dependency vulnerabilities (#462)
lwshang Mar 23, 2026
02b7c5a
fix(docs): improve agentdocsspec compliance (#463)
marc0olo Mar 23, 2026
209ac74
fix: Network fails to start if a stale network descriptor is present …
raymondk Mar 24, 2026
1277428
docs: Fix documentation site link in README (#465)
raymondk Mar 24, 2026
49a8298
chore: bump ic-* dependencies (#473)
viviveevee Mar 27, 2026
d1a7cc9
feat: Make internet identity available at id.ai.localhost (#474)
raymondk Mar 27, 2026
ae885de
feat(docs): add Matomo analytics to documentation site (#469)
marc0olo Mar 27, 2026
0dc8b2d
docs: Add docs and tests for ii change (#475)
raymondk Mar 27, 2026
e95eeef
chore: release v0.2.2 (#476)
lwshang Mar 27, 2026
26f31b6
fix(ci): fix paths-filter change detection and bump all actions (#477)
lwshang Mar 30, 2026
49bd301
fix: Cache loaded identities (#479)
adamspofford-dfinity Apr 1, 2026
8c37d50
chore: Add cloud engine test (#480)
adamspofford-dfinity Apr 1, 2026
7f97b3e
feat: support creating canisters via a proxy canister (#481)
lwshang Apr 1, 2026
2ef15a4
refactor: add proxy dispatch module and use ic-management-canister-ty…
lwshang Apr 2, 2026
a0e0e2d
chore(deps): bump lodash and @astrojs/language-server in /docs-site (…
dependabot[bot] Apr 3, 2026
f15de9d
chore(deps): bump astro from 5.16.11 to 5.18.1 in /docs-site (#471)
dependabot[bot] Apr 3, 2026
fffb94b
chore(deps): bump picomatch in /docs-site (#468)
dependabot[bot] Apr 3, 2026
3670f5c
chore(deps): bump smol-toml from 1.6.0 to 1.6.1 in /docs-site (#467)
dependabot[bot] Apr 3, 2026
3b91be5
chore(deps): bump h3 from 1.15.8 to 1.15.9 in /docs-site (#456)
dependabot[bot] Apr 3, 2026
5598c95
chore(deps): bump defu from 6.1.4 to 6.1.6 in /docs-site (#485)
dependabot[bot] Apr 6, 2026
e0a0b4e
chore(deps): bump vite from 6.4.1 to 6.4.2 in /docs-site (#487)
dependabot[bot] Apr 7, 2026
142c00c
chore(deps-dev): bump vite (#486)
dependabot[bot] Apr 7, 2026
e73eb8f
feat: add --proxy flag to canister subcommands and icp deploy (#484)
lwshang Apr 8, 2026
18f87b1
feat: `icp deploy` accepts install args (#489)
lwshang Apr 8, 2026
caeac37
chore: release v0.2.3 (#490)
lwshang Apr 8, 2026
f003c07
feat(docs-site): SEO improvements — OG image, RSS feed, sitemap lastm…
marc0olo Apr 17, 2026
7733ef1
chore: absorb docs/v0.2 history (keeping v0.2.3 + SEO content)
marc0olo Apr 17, 2026
1bd18fb
chore(deps): bump rand from 0.10.0 to 0.10.1 (#500)
dependabot[bot] Apr 14, 2026
250cbf4
chore(deps): bump rustls-webpki to 0.103.12 (RUSTSEC-2026-0098, -0099)
marc0olo Apr 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .cargo/audit.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
[advisories]
ignore = [
"RUSTSEC-2025-0140", # gix-date UTF-8 contract issue dependency of cargo-generate
"RUSTSEC-2026-0001", # rkyv undefined behavior on OOM dependency of byte-unit
"RUSTSEC-2026-0037", # quinn-proto DoS - transitive via reqwest/ic-agent, quinn feature not used

# Unmaintained crates (transitive dependencies)
"RUSTSEC-2021-0127", # serde_cbor - dependency of ic-agent/ic-transport-types
Expand Down
4 changes: 3 additions & 1 deletion .claude/skills/release/task6-docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

*Skip if `$ARGUMENTS` is a beta release. Requires Task 2. Runs concurrently with Task 3.*

The tag push triggers a docs deployment workflow that builds and publishes the versioned docs to `/icp-cli/X.Y/`. The `versions.json` PR must not be merged until that deployment succeeds, otherwise the root redirect will point to a path that does not exist yet.
The tag push triggers a docs deployment workflow that builds and publishes the versioned docs to `/X.Y/` on the `docs-deployment` branch (served at `https://cli.internetcomputer.org/X.Y/`). The `versions.json` PR must not be merged until that deployment succeeds, otherwise the root redirect will point to a path that does not exist yet.

Once the `versions.json` PR merges to `main`, the `publish-root-files` CI job runs automatically and copies `og-image.png`, `llms.txt`, `llms-full.txt`, and `feed.xml` from the new version's folder to the deployment root — no manual step needed.

**1. Wait for the docs deployment triggered by the tag**
```bash
Expand Down
4 changes: 2 additions & 2 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ If you want to submit a pull request to fix an issue or add a feature, here's a

## Contributing to Documentation

The documentation lives in the `docs/` directory and is deployed to https://dfinity.github.io/icp-cli/.
The documentation lives in the `docs/` directory and is deployed to https://cli.internetcomputer.org.

### Documentation Structure

Expand All @@ -97,7 +97,7 @@ The documentation site uses [Astro](https://astro.build/) with [Starlight](https
1. **Source files** (`docs/`) are Markdown with minimal YAML frontmatter (title + description)
2. **Starlight** reads directly from `docs/` via the glob content loader
3. **Rehype plugin** (`docs-site/plugins/rehype-rewrite-links.mjs`) rewrites `.md` links at build time for Starlight's clean URLs
4. **GitHub Actions** automatically deploys to GitHub Pages on push to main
4. **GitHub Actions** automatically builds and deploys to an IC asset canister on push to main

This architecture keeps source docs GitHub-friendly (`.md` links work on GitHub) while producing clean URLs on the documentation site.

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
issues: write

steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup image (Linux)
run: ./.github/scripts/provision-linux-build.sh
- uses: actions-rust-lang/audit@410bbe6de17ca06c0a60070cca18c88b485ca5a1 # v1.2.6
- uses: actions-rust-lang/audit@72c09e02f132669d52284a3323acdb503cfc1a24 # v1.2.7
31 changes: 16 additions & 15 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,13 @@ jobs:
permissions:
pull-requests: read
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
id: filter
with:
# 'src' is true when any changed file matches a positive pattern
# and does not match a negative pattern (! prefix).
# With 'every', a changed file is matched only when it satisfies
# ALL rules: the positive pattern AND every negated pattern.
predicate-quantifier: 'every'
filters: |
src:
- '**'
Expand All @@ -34,12 +35,12 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Setup image (Linux)
run: ./.github/scripts/provision-linux-build.sh

- uses: actions-rust-lang/setup-rust-toolchain@a0b538fa0b742a6aa35d6e2c169b4bd06d225a98 # v1.15.3
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
with:
cache-shared-key: ${{ runner.os }}-checks

Expand All @@ -55,12 +56,12 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Setup image (Linux)
run: ./.github/scripts/provision-linux-build.sh

- uses: actions-rust-lang/setup-rust-toolchain@a0b538fa0b742a6aa35d6e2c169b4bd06d225a98 # v1.15.3
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
with:
cache-shared-key: ${{ runner.os }}-checks

Expand All @@ -76,12 +77,12 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Setup image (Linux)
run: ./.github/scripts/provision-linux-build.sh

- uses: actions-rust-lang/setup-rust-toolchain@a0b538fa0b742a6aa35d6e2c169b4bd06d225a98 # v1.15.3
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
with:
cache-shared-key: ${{ runner.os }}-checks

Expand All @@ -95,7 +96,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install taplo
run: |
Expand Down Expand Up @@ -123,12 +124,12 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Setup image (Linux)
run: ./.github/scripts/provision-linux-build.sh

- uses: actions-rust-lang/setup-rust-toolchain@a0b538fa0b742a6aa35d6e2c169b4bd06d225a98 # v1.15.3
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
with:
cache-shared-key: ${{ runner.os }}-checks

Expand Down Expand Up @@ -158,12 +159,12 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Setup image (Linux)
run: ./.github/scripts/provision-linux-build.sh

- uses: actions-rust-lang/setup-rust-toolchain@a0b538fa0b742a6aa35d6e2c169b4bd06d225a98 # v1.15.3
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
with:
cache-shared-key: ${{ runner.os }}-checks

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/deny.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ jobs:
name: license-check:required
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup image (Linux)
run: ./.github/scripts/provision-linux-build.sh
- run: rm rust-toolchain.toml
- uses: EmbarkStudios/cargo-deny-action@f2ba7abc2abebaf185c833c3961145a3c275caad # v2.0.13
- uses: EmbarkStudios/cargo-deny-action@3fd3802e88374d3fe9159b834c7714ec57d6c979 # v2.0.15
with:
command: check bans licenses sources # skip advisories, which are handled by audit.yml
2 changes: 1 addition & 1 deletion .github/workflows/docs-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
contents: read
steps:
- name: Checkout docs-deployment branch
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: docs-deployment

Expand Down
92 changes: 78 additions & 14 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ on:
push:
tags:
- 'v*'
- '!v*-*' # exclude pre-release tags (e.g. v0.2.0-beta.0)
branches:
- main
- 'docs/v*'
- '!docs/v*-*' # exclude pre-release doc branches
paths:
- 'docs/**'
- 'docs-site/**'
Expand Down Expand Up @@ -36,10 +38,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0

- name: Setup Node
uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v4.2.0
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: '22'
cache: 'npm'
Expand All @@ -58,15 +62,15 @@ jobs:

# Publish root index, versions list, and IC config files - only runs on main branch
publish-root-files:
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
if: github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Setup Node
uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v4.2.0
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: '22'

Expand Down Expand Up @@ -113,19 +117,75 @@ jobs:

echo "LATEST_VERSION=${LATEST_VERSION}" >> $GITHUB_ENV

- name: Copy llms.txt from latest version on docs-deployment branch
# Generate robots.txt — allow only the latest version, block old versions.
# /main/ is disallowed unless it IS the latest version (no releases yet fallback).
{
echo "User-agent: *"
echo "Allow: /${LATEST_VERSION}/"
for version in $(jq -r '.versions[].version' docs-site/versions.json); do
if [[ "$version" != "$LATEST_VERSION" ]]; then
echo "Disallow: /${version}/"
fi
done
if [[ "$LATEST_VERSION" != "main" ]]; then echo "Disallow: /main/"; fi
echo ""
echo "Sitemap: ${PUBLIC_SITE}/sitemap.xml"
echo ""
echo "# LLM and AI agent discovery (llmstxt.org)"
echo "# ${PUBLIC_SITE}/llms.txt"
echo "# ${PUBLIC_SITE}/llms-full.txt"
} > root/robots.txt
echo "✅ Generated robots.txt (latest: ${LATEST_VERSION})"

# Generate root sitemap.xml pointing directly to the latest version's sitemap.
# Points to sitemap-0.xml (not sitemap-index.xml) to stay spec-compliant:
# a sitemapindex must reference sitemaps, not other sitemapindex files.
{
echo '<?xml version="1.0" encoding="UTF-8"?>'
echo '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'
echo ' <sitemap>'
echo " <loc>${PUBLIC_SITE}/${LATEST_VERSION}/sitemap-0.xml</loc>"
echo ' </sitemap>'
echo '</sitemapindex>'
} > root/sitemap.xml
echo "✅ Generated sitemap.xml → /${LATEST_VERSION}/sitemap-0.xml"

- name: Copy files from latest version on docs-deployment branch
run: |
# Fetch the llms.txt from the latest version's folder on docs-deployment.
# This file was deployed by publish-versioned-docs and is always in sync
# with the versioned .md endpoints it links to.
git fetch origin docs-deployment --depth=1

# llms.txt — agent discovery index (versioned copy is always in sync with .md endpoints)
if git show "origin/docs-deployment:${LATEST_VERSION}/llms.txt" > root/llms.txt 2>/dev/null; then
echo "✅ Copied llms.txt from /${LATEST_VERSION}/llms.txt to root"
else
echo "⚠️ No llms.txt found at /${LATEST_VERSION}/llms.txt on docs-deployment — skipping"
rm -f root/llms.txt
fi

# llms-full.txt — full content dump for bulk ingestion / RAG pipelines
if git show "origin/docs-deployment:${LATEST_VERSION}/llms-full.txt" > root/llms-full.txt 2>/dev/null; then
echo "✅ Copied llms-full.txt from /${LATEST_VERSION}/llms-full.txt to root"
else
echo "⚠️ No llms-full.txt found at /${LATEST_VERSION}/llms-full.txt on docs-deployment — skipping"
rm -f root/llms-full.txt
fi

# og-image.png — social sharing preview image
if git show "origin/docs-deployment:${LATEST_VERSION}/og-image.png" > root/og-image.png 2>/dev/null; then
echo "✅ Copied og-image.png from /${LATEST_VERSION}/og-image.png to root"
else
echo "⚠️ No og-image.png found at /${LATEST_VERSION}/og-image.png on docs-deployment — skipping"
rm -f root/og-image.png
fi

# feed.xml — RSS feed
if git show "origin/docs-deployment:${LATEST_VERSION}/feed.xml" > root/feed.xml 2>/dev/null; then
echo "✅ Copied feed.xml from /${LATEST_VERSION}/feed.xml to root"
else
echo "⚠️ No feed.xml found at /${LATEST_VERSION}/feed.xml on docs-deployment — skipping"
rm -f root/feed.xml
fi

- name: Prepend version navigation to root llms.txt
if: hashFiles('root/llms.txt') != ''
run: |
Expand Down Expand Up @@ -156,15 +216,17 @@ jobs:

# Publish main branch docs for preview (always available at /main/)
publish-main-docs:
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
if: github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0

- name: Setup Node
uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v4.2.0
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: '22'
cache: 'npm'
Expand Down Expand Up @@ -200,10 +262,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0

- name: Setup Node
uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v4.2.0
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: '22'
cache: 'npm'
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release-npm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ jobs:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ inputs.version }}

- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: '24'
registry-url: 'https://registry.npmjs.org'
Expand Down
Loading
Loading