From 18dfdbf3c9ddf4067093fab03e51faed8b5f3a79 Mon Sep 17 00:00:00 2001 From: Michael Ramos Date: Tue, 22 Sep 2026 15:23:37 -0700 Subject: [PATCH] Release version 0.1.1 and token-optional npm publication Bump every enforced version touchpoint to 0.1.1: the root and three adapter packages, the Helm appVersion and image tag, the MCP server version, the Claude channel protocol version, and the forward-facing site references. The v0.1.0 tag never produced a release: all four workflow runs failed publishing the first @plannotator adapter to npm, so no GitHub release, image, or packages exist for it. The release workflow now skips npm publication with a notice when NPM_TOKEN is not configured instead of failing the run, so the GitHub release and image publication proceed. The adapters are published locally by the maintainer until npm trusted publishing is set up. Claude-Session: https://claude.ai/code/session_01EcbEctwH1oDTrYhqHe6n9g --- .github/workflows/release.yml | 5 +++++ apps/site/src/content/docs/docs/deploy/index.mdx | 2 +- apps/site/src/content/docs/docs/get-started.mdx | 12 ++++++------ apps/site/src/content/docs/docs/index.mdx | 2 +- apps/site/src/content/docs/docs/security.mdx | 2 +- integrations/claude-channel/index.ts | 2 +- integrations/claude-channel/package.json | 2 +- integrations/opencode/package.json | 2 +- integrations/pi/package.json | 2 +- package.json | 2 +- packaging/helm/artifact-server/Chart.yaml | 2 +- packaging/helm/artifact-server/values.yaml | 2 +- src/mcp/artifact-mcp-server.ts | 2 +- 13 files changed, 22 insertions(+), 17 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index baf13d66..c9f1971f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -429,6 +429,11 @@ jobs: shell: bash run: | set -euo pipefail + if [[ -z "${NODE_AUTH_TOKEN:-}" ]]; then + printf '%s\n' \ + '::notice::npm publication is skipped because NPM_TOKEN is not configured. Publish the adapter tarballs from the release assets locally with npm publish --access public.' + exit 0 + fi provenance_args=() if [[ "$ARTIFACTSERVER_REPOSITORY_VISIBILITY" == public ]]; then provenance_args+=(--provenance) diff --git a/apps/site/src/content/docs/docs/deploy/index.mdx b/apps/site/src/content/docs/docs/deploy/index.mdx index 3f97ee46..5e801998 100644 --- a/apps/site/src/content/docs/docs/deploy/index.mdx +++ b/apps/site/src/content/docs/docs/deploy/index.mdx @@ -21,7 +21,7 @@ The AWS private-ingress variant has not passed its live lifecycle gate. The Goog Use the Kubernetes guide for EKS, GKE, or AKS. Artifact Server does not provide a separate Azure installer. ## Meet the remote deployment requirements diff --git a/apps/site/src/content/docs/docs/get-started.mdx b/apps/site/src/content/docs/docs/get-started.mdx index 1d2afec1..d8b37131 100644 --- a/apps/site/src/content/docs/docs/get-started.mdx +++ b/apps/site/src/content/docs/docs/get-started.mdx @@ -7,26 +7,26 @@ The local target runs directly on the host with SQLite, local blob storage, and ## Run the packaged release -Artifact Server `v0.1.0` includes a portable Node.js package. It requires Node.js 24.12 or newer. +Artifact Server `v0.1.1` includes a portable Node.js package. It requires Node.js 24.12 or newer. - Download these files from the [`v0.1.0` GitHub release](https://github.com/plannotator/artifact-server/releases/tag/v0.1.0): + Download these files from the [`v0.1.1` GitHub release](https://github.com/plannotator/artifact-server/releases/tag/v0.1.1): - - `artifact-server-0.1.0-node.tar.gz` - - `artifact-server-0.1.0-node.tar.gz.manifest.json` + - `artifact-server-0.1.1-node.tar.gz` + - `artifact-server-0.1.1-node.tar.gz.manifest.json` Run this command in the download directory: ```sh - node -e 'const crypto = require("node:crypto"); const fs = require("node:fs"); const archive = process.argv[1]; const manifest = JSON.parse(fs.readFileSync(process.argv[2], "utf8")); const actual = crypto.createHash("sha256").update(fs.readFileSync(archive)).digest("hex"); if (actual !== manifest.sha256) throw new Error("Archive checksum mismatch"); console.log(actual);' artifact-server-0.1.0-node.tar.gz artifact-server-0.1.0-node.tar.gz.manifest.json + node -e 'const crypto = require("node:crypto"); const fs = require("node:fs"); const archive = process.argv[1]; const manifest = JSON.parse(fs.readFileSync(process.argv[2], "utf8")); const actual = crypto.createHash("sha256").update(fs.readFileSync(archive)).digest("hex"); if (actual !== manifest.sha256) throw new Error("Archive checksum mismatch"); console.log(actual);' artifact-server-0.1.1-node.tar.gz artifact-server-0.1.1-node.tar.gz.manifest.json ``` For provenance verification, use the [supply-chain guide](/docs/security/). ```sh - tar -xzf artifact-server-0.1.0-node.tar.gz + tar -xzf artifact-server-0.1.1-node.tar.gz ./artifactserver/bin/artifactserver open ``` diff --git a/apps/site/src/content/docs/docs/index.mdx b/apps/site/src/content/docs/docs/index.mdx index d5fc941c..16deba04 100644 --- a/apps/site/src/content/docs/docs/index.mdx +++ b/apps/site/src/content/docs/docs/index.mdx @@ -60,7 +60,7 @@ Artifact Server installation One installation represents one person, team, or company. A fresh installation creates a default project. Stable artifact links resolve to the current version. Exact version links never move. ## License diff --git a/apps/site/src/content/docs/docs/security.mdx b/apps/site/src/content/docs/docs/security.mdx index 6b7d4322..a529f896 100644 --- a/apps/site/src/content/docs/docs/security.mdx +++ b/apps/site/src/content/docs/docs/security.mdx @@ -115,7 +115,7 @@ shasum --algorithm 256 --check SHA256SUMS GitHub also records build provenance and SBOM attestations for the downloadable files and the container image. Use GitHub CLI to verify a downloaded file: ```sh -gh attestation verify artifact-server-0.1.0-node.tar.gz \ +gh attestation verify artifact-server-0.1.1-node.tar.gz \ --repo plannotator/artifact-server ``` diff --git a/integrations/claude-channel/index.ts b/integrations/claude-channel/index.ts index 8b1c4f4d..dfbcc7a9 100644 --- a/integrations/claude-channel/index.ts +++ b/integrations/claude-channel/index.ts @@ -39,7 +39,7 @@ import { } from "@plannotator/agent-bridge"; const channelName = "artifact-server"; -const channelVersion = "0.1.0"; +const channelVersion = "0.1.1"; function environmentConfiguration(): EnvironmentConfiguration { return { diff --git a/integrations/claude-channel/package.json b/integrations/claude-channel/package.json index 7904d513..d2cceee5 100644 --- a/integrations/claude-channel/package.json +++ b/integrations/claude-channel/package.json @@ -1,6 +1,6 @@ { "name": "@plannotator/artifact-server-claude-channel", - "version": "0.1.0", + "version": "0.1.1", "description": "Claude Code channel bridge for Artifact Server: pushes annotation bundles into an opted-in Claude Code session and closes them through the comment API.", "type": "module", "keywords": [ diff --git a/integrations/opencode/package.json b/integrations/opencode/package.json index 66b71847..5a79e3a5 100644 --- a/integrations/opencode/package.json +++ b/integrations/opencode/package.json @@ -1,6 +1,6 @@ { "name": "@plannotator/artifact-server-opencode", - "version": "0.1.0", + "version": "0.1.1", "description": "OpenCode plugin bridge for Artifact Server: receives annotation bundles as follow-up prompts and closes them through the comment API.", "type": "module", "keywords": [ diff --git a/integrations/pi/package.json b/integrations/pi/package.json index ce0bcd41..ec488370 100644 --- a/integrations/pi/package.json +++ b/integrations/pi/package.json @@ -1,6 +1,6 @@ { "name": "@plannotator/artifact-server-pi", - "version": "0.1.0", + "version": "0.1.1", "description": "Pi coding-agent bridge for Artifact Server: receives annotation bundles as follow-up work and closes them through the comment API.", "type": "module", "keywords": [ diff --git a/package.json b/package.json index 05f264cb..b10b40eb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "artifact-server", - "version": "0.1.0", + "version": "0.1.1", "private": true, "description": "Publish, version, and serve finished browser artifacts.", "type": "module", diff --git a/packaging/helm/artifact-server/Chart.yaml b/packaging/helm/artifact-server/Chart.yaml index ef8400f3..f3a1067f 100644 --- a/packaging/helm/artifact-server/Chart.yaml +++ b/packaging/helm/artifact-server/Chart.yaml @@ -3,7 +3,7 @@ name: artifact-server description: Deploy stateless Artifact Server replicas against existing Postgres and object storage. type: application version: 0.1.1 -appVersion: "0.1.0" +appVersion: "0.1.1" kubeVersion: ">=1.34.0-0 <1.37.0-0" home: https://artifactserver.com sources: diff --git a/packaging/helm/artifact-server/values.yaml b/packaging/helm/artifact-server/values.yaml index 530b190c..45a3eecf 100644 --- a/packaging/helm/artifact-server/values.yaml +++ b/packaging/helm/artifact-server/values.yaml @@ -4,7 +4,7 @@ fullnameOverride: "" image: repository: ghcr.io/plannotator/artifact-server - tag: "0.1.0" + tag: "0.1.1" digest: "" allowMutableTag: false pullPolicy: IfNotPresent diff --git a/src/mcp/artifact-mcp-server.ts b/src/mcp/artifact-mcp-server.ts index 24c979b4..315b320b 100644 --- a/src/mcp/artifact-mcp-server.ts +++ b/src/mcp/artifact-mcp-server.ts @@ -106,7 +106,7 @@ import { type ToolResultNudgeFacts, } from "./tool-result-nudges.js"; -const serverVersion = "0.1.0"; +const serverVersion = "0.1.1"; const maximumListedArtifacts = 100; const maximumTextDiffBytes = 256 * 1_024; const accessSettingSchema = z.enum([