Skip to content

Commit fc15aba

Browse files
authored
chore(release): 0.2.14 - publish through npm trusted publishing (#8)
1 parent 58c8b74 commit fc15aba

4 files changed

Lines changed: 31 additions & 10 deletions

File tree

‎.github/workflows/release.yml‎

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@ jobs:
2020
- uses: actions/setup-node@v5
2121
with:
2222
node-version: 22
23-
registry-url: 'https://registry.npmjs.org'
2423
cache: pnpm
25-
24+
# No `registry-url` on purpose: it writes
25+
# `//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}` into a local
26+
# .npmrc, and with the secret retired that line is an EMPTY bearer token -
27+
# the registry then answers 404 on PUT instead of letting npm perform the
28+
# OIDC trusted-publishing exchange.
2629
- name: Install
2730
run: pnpm install --frozen-lockfile
2831

@@ -43,16 +46,25 @@ jobs:
4346
# npm publish runs with provenance when NPM_TOKEN is present. A tag
4447
# push without the secret, or for a version already on the registry,
4548
# skips the publish instead of failing the release tag.
49+
# Trusted publishing: the OIDC token (id-token: write above) replaces the
50+
# long-lived NPM_TOKEN, so this step reads no secret. The previous version
51+
# also skipped the publish when NPM_TOKEN was empty - that guard is gone on
52+
# purpose, or retiring the secret would have turned this into a silent no-op.
53+
- name: Upgrade npm and show what the publish will authenticate with
54+
run: |
55+
npm install -g npm@^11.5.1
56+
echo "npm: $(npm --version)"
57+
echo "registry: $(npm config get registry)"
58+
if [ -f .npmrc ]; then echo "--- workspace .npmrc ---"; cat .npmrc; else echo "no workspace .npmrc"; fi
59+
if [ -n "${ACTIONS_ID_TOKEN_REQUEST_TOKEN:-}" ]; then echo "OIDC request TOKEN: present"; else echo "OIDC request TOKEN: MISSING"; fi
60+
4661
- name: Publish to npm
4762
env:
48-
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
49-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
63+
# npm's OIDC exchange never throws: a failure is only visible at verbose
64+
# level, otherwise the step just fails with ENEEDAUTH and no reason.
65+
NPM_CONFIG_LOGLEVEL: verbose
5066
run: |
5167
version="$(node -p "require('./package.json').version")"
52-
if [ -z "$NPM_TOKEN" ]; then
53-
echo "NPM_TOKEN secret is not set; skipping npm publish"
54-
exit 0
55-
fi
5668
if npm view "dsh-fast@${version}" version >/dev/null 2>&1; then
5769
echo "dsh-fast@${version} is already published; skipping npm publish"
5870
else

‎CHANGELOG.md‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ All notable changes to this project are documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.2.14] - 2026-09-19
9+
10+
### Added
11+
12+
- `pnpm run check:lockfile` (`scripts/check-lockfile-drift.mjs`) fails fast when `package.json` and `pnpm-lock.yaml` disagree; the probe is read-only and the documented checks chain runs it alongside the other gates.
13+
14+
### Changed
15+
16+
- The release workflow now publishes through **npm trusted publishing** (OIDC) instead of the long-lived `NPM_TOKEN` secret: `setup-node` no longer sets `registry-url` (its empty `_authToken` line made the registry answer 404 on PUT), npm is upgraded to >= 11.5.1 before publishing, and the "NPM_TOKEN is not set -> skip" guard is gone so a missing publisher cannot turn a release into a silent no-op.
817
## [0.2.13] - 2026-09-18
918

1019
### Changed

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dsh-fast",
3-
"version": "0.2.13",
3+
"version": "0.2.14",
44
"description": "Read-only performance diagnostics for DeepSeek Harness: session load (open/restore) timing, spill-hit counts, compaction count and trigger, context-injection volume (AGENTS.md/skills/tool-schema token share), and LLM cache hit rate — surfaced via the /fast command and the fast_report tool, persisted as reconstructable fast/* session events with async sampling off the model path.",
55
"author": "dsh-fast contributors",
66
"repository": {

‎src/version.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
/** Single-source plugin version, bumped by `scripts/release.mjs`. @module dsh-fast/version */
2-
export const VERSION = '0.2.13'
2+
export const VERSION = '0.2.14'

0 commit comments

Comments
 (0)