release 1.0.1: publish as @coulomb/testdrive-jsui to the coulomb Forgejo npm registry
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s

Scoped name, publishConfig.registry, secret-free .npmrc (token from
NPM_AUTH_TOKEN env), changelog (1.0.0 tagged but never published), install
docs without public-CDN claims, consumer smoke uses the package name.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: sonnet
Assistant-Process: 299063@bnt-lap001
Assistant-Session: 53eb1e1c-c13a-4277-9ce2-3702960d93f7
This commit is contained in:
tegwick 2026-10-03 00:53:03 +02:00
parent d748e2fa22
commit 71a2a1e52c
7 changed files with 34 additions and 19 deletions

5
.npmrc Normal file
View file

@ -0,0 +1,5 @@
# Scope -> coulomb Forgejo npm registry. The token is read from the environment
# (NPM_AUTH_TOKEN, injected by `secrets-engine exec --catalog <lane> --` or
# `warden access`); never write a token into this file.
@coulomb:registry=https://forgejo.coulomb.social/api/packages/coulomb/npm/
//forgejo.coulomb.social/api/packages/coulomb/npm/:_authToken=${NPM_AUTH_TOKEN}

View file

@ -198,22 +198,19 @@ String html = adapter.generateHtml(markdown, "edit", config);
## 📦 Distribution Models
### Model 1: CDN (Simplest)
### Model 1: Self-hosted file (simplest)
```html
<!-- Use directly from CDN -->
<script src="https://cdn.jsdelivr.net/npm/testdrive-jsui@1.0.0/dist/testdrive-jsui.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/testdrive-jsui@1.0.0/dist/testdrive-jsui.min.css">
```
Copy `dist/testdrive-jsui.min.js` and `dist/testdrive-jsui.css` from the package (or a release build) next to your page and load them with `<script>` / `<link>`. Public CDNs (jsDelivr, unpkg) only mirror npmjs.org and do not serve the coulomb Forgejo registry.
### Model 2: npm Package
### Model 2: npm package (coulomb Forgejo registry)
```bash
npm install testdrive-jsui
# .npmrc: @coulomb:registry=https://forgejo.coulomb.social/api/packages/coulomb/npm/
npm install @coulomb/testdrive-jsui marked
```
```javascript
import TestDriveJSUI from 'testdrive-jsui';
import TestDriveJSUI from '@coulomb/testdrive-jsui';
```
### Model 3: With Language Adapter

View file

@ -5,7 +5,14 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.0.0] - 2026-10-03
## [1.0.1] - 2026-10-03
### Changed
- Package is now `@coulomb/testdrive-jsui`, published to the coulomb Forgejo npm registry (`publishConfig.registry`); install with the `@coulomb:registry` scope mapping in `.npmrc`
- `1.0.0` was tagged (`v1.0.0`) but never published under any name; `1.0.1` is the first published version. Code is identical apart from the name, registry and version
- Public CDNs (jsDelivr, unpkg) mirror npmjs.org only and do not serve this registry
## [1.0.0] - 2026-10-03 (tagged, not published)
### Added
- Initial public release of TestDrive-JSUI as standalone npm package

View file

@ -1,3 +1,5 @@
> **Superseded for the destination (2026-10-03):** the package is published to the coulomb Forgejo npm registry as `@coulomb/testdrive-jsui`, not to npmjs.org; the CDN and npm-badge steps below do not apply. See CHANGELOG.md 1.0.1. Kept for history.
# TestDrive-JSUI npm Publication Workplan
**Goal**: Bundle and publish testdrive-jsui as a production-ready npm package

8
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "testdrive-jsui",
"version": "1.0.0",
"name": "@coulomb/testdrive-jsui",
"version": "1.0.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "testdrive-jsui",
"version": "1.0.0",
"name": "@coulomb/testdrive-jsui",
"version": "1.0.1",
"license": "MIT",
"dependencies": {
"jsdom": "^23.0.0"

View file

@ -1,6 +1,6 @@
{
"name": "testdrive-jsui",
"version": "1.0.0",
"name": "@coulomb/testdrive-jsui",
"version": "1.0.1",
"description": "JavaScript-first markdown editor library with interactive UI",
"type": "module",
"main": "dist/testdrive-jsui.cjs",
@ -190,5 +190,8 @@
}
}
]
},
"publishConfig": {
"registry": "https://forgejo.coulomb.social/api/packages/coulomb/npm/"
}
}

View file

@ -9,6 +9,7 @@ trap 'rm -rf "$TMP"' EXIT
cd "$ROOT" && npm run build:prod >/dev/null
TARBALL="$(npm pack --pack-destination "$TMP" 2>/dev/null | tail -1)"
cd "$TMP" && npm init -y >/dev/null
PKG="$(node -p "require('$ROOT/package.json').name")"
npm i --no-audit --no-fund marked@13 jsdom "./$TARBALL" >/dev/null 2>&1
SETUP="const {JSDOM}=require('jsdom');const d=new JSDOM('<!doctype html><body></body>',{url:'http://localhost/'});
globalThis.window=globalThis;globalThis.document=d.window.document;globalThis.location=d.window.location;
@ -19,7 +20,7 @@ check() { # check <marker> <label> <node args...>
local out; out="$(node "$@" 2>&1 || true)"
grep -q "^$marker" <<<"$out" || { echo "FAIL: $label"; exit 1; }
}
check 'CJS ok' "CJS require" -e "$SETUP const m=require('testdrive-jsui');console.log('CJS ok',typeof m)"
check 'ESM ok' "ESM import" -e "$SETUP import('testdrive-jsui').then(m=>console.log('ESM ok',typeof m.default))"
check 'CSS ok' "style.css" -e "console.log('CSS ok',require.resolve('testdrive-jsui/style.css'))"
check 'CJS ok' "CJS require" -e "$SETUP const m=require('$PKG');console.log('CJS ok',typeof m)"
check 'ESM ok' "ESM import" -e "$SETUP import('$PKG').then(m=>console.log('ESM ok',typeof m.default))"
check 'CSS ok' "style.css" -e "console.log('CSS ok',require.resolve('$PKG/style.css'))"
echo "consumer smoke: ESM, CJS, CSS ok"