Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a0e77b-9d43-7432-9301-e5cb6ad05ef6
10 KiB
TestDrive-JSUI — npm Publication
Current disposition — 2026-09-28
Status: blocked. Tracked by MARKITECT-WP-0002; its T01 readiness-definition
task is complete. This section supersedes the historical assumptions and
commands below. Existing P.1–P.9 remain the release checklist; no new workstream
is needed.
Package scope and ownership (P.1 complete)
Option B is already implemented. .gitmodules records the standalone
coulomb/testdrive-jsui repository at capabilities/testdrive-jsui; Markitect
consumes its pinned commit b8f13b4ae5e80e76a162187613b67cbdc3a65171.
Publish from the standalone repository. Do not publish this repo's root
package.json or create a Markitect v1.0.0 tag for the library.
The package manifest declares the unscoped name testdrive-jsui, MIT licensing,
a JavaScript markdown editor with CJS/ESM/browser bundles and CSS, and the
required marked peer range ^11.0.0 || ^12.0.0 || ^13.0.0. Its allowlist is
dist/, README, LICENSE, and CHANGELOG (plus npm's package metadata).
Python adapters and PyPI distribution are separate from this npm release.
The standalone owner must resolve P.3's Python STANDALONE_PLAN.md; an npm
bundle alone does not satisfy that plan's Python packaging acceptance.
Versioning
Use the library manifest's 1.0.0 as the candidate, not proof of publication.
Before release, the standalone maintainer must check registry ownership and
whether that version already exists. Preserve published versions; use a new
patch for compatible fixes, a minor for compatible features, and a major for
breaking public API changes. Match the manifest, lockfile, changelog, tag, and
release artifact. Create v1.0.0 only in the standalone repository after the
candidate passes verification, or use the next appropriate unused version.
Existing release steps and acceptance
| Step | Current disposition / evidence required |
|---|---|
| P.1 | Done: standalone repository and gitlink already exist. |
| P.2 | Blocked in this checkout: the submodule is uninitialized, so make -n testdrive-jsui-test-all exits 2 with no matching target. Initialize the pinned submodule, install its documented dependencies, run its JS/Python integration checks, and verify actual Markitect view/edit behavior. Historical counts are not current test evidence. |
| P.3 | Standalone owner must explicitly reconcile the Python standalone plan; do not silently archive it as satisfied by npm. |
| P.4 | In the standalone checkout, run lint, Jest, production build, pack, isolated tarball install, consumer smoke checks, and publish dry-run. Check every advertised entry point and the exact file list. |
| P.5 | Tag the verified standalone commit; align the changelog with the actual release date and version. |
| P.6 | Standalone maintainer verifies registry ownership/access, publishes the verified candidate, and records registry plus CDN receipts. Route credential needs through warden route before requesting access; no credentials belong in this record. |
| P.7 | Install the published version in a clean directory and verify editor initialization, edit/view behavior, CSS, and supported peer dependencies. |
| P.8 | Create the release on the standalone repo's actual forge, with verified package/CDN links. The historical GitHub destination is not established by this checkout. |
| P.9 | Add badges only after publication is verified; name the person responsible for the one-week follow-up. |
Readiness evidence and unresolved gates
Read-only inspection of the clean standalone checkout at
701341d7fa520f860245e28eb16d44b767fd116b found the four advertised JS/CSS
entry files present, but types: dist/index.d.ts points to a missing file.
The pinned commit advertises that same declaration path. The standalone owner
must generate and test declarations or remove the unsupported promise before
release. Also test CJS consumption explicitly: the manifest combines
type: module with a .cjs.js entry name. File presence does not prove loading.
The standalone JSUI-WP-0002 records 68 passing Jest tests and build evidence
from July 8. Its checklist still leaves post-publication verification open;
that historical readiness result is not proof of an npm release. This review
has not rerun those tests or checked registry availability.
For P.4, inspect npm pack --dry-run --json, then install the actual tarball
in an isolated consumer directory. Exercise ESM, CommonJS, and browser loading
with the supported marked peer and CSS. Confirm declarations resolve if
advertised. Source maps currently exist and the changelog explicitly promises
them, so review their contents and inclusion intentionally; the older blanket
exclusion below is not the current packaging decision. Run
npm publish --dry-run only after lint, build, tests, and consumer checks pass.
Record exact command results and artifact/version identity before releasing.
Historical plan (retained for context)
Context
TestDrive-JSUI is a JavaScript-first markdown editor library living at
capabilities/testdrive-jsui/. Phases 1–6 (build system, bundling, testing,
migration) are complete. 84 tests pass (68 JS + 15 Python + 1 fixes).
Single source of truth: capabilities/testdrive-jsui/js/.
This workstream covers the remaining work to publish the library to npm and close out the capability.
Source: capabilities/testdrive-jsui/TODO.md (Phases 7–9)
Package name: testdrive-jsui (to be confirmed in P.1)
Current version: 1.0.0
Tasks
P.1 — Pre-publication: decide repository structure
The library currently lives inside the markitect monorepo. Before publishing to npm, decide whether it ships from here or from a dedicated repo.
Options:
- A: Publish directly from
capabilities/testdrive-jsui/— simpler, no repo split - B: Extract to a standalone
testdrive-jsuirepo — cleaner for npm consumers
Record the decision and proceed accordingly.
Acceptance: Decision recorded; if B, standalone repo created and code copied.
P.2 — Pre-publication: verify Markitect integration
Confirm the main Markitect application still works correctly with the current capability code before publishing.
cd /home/worsch/markitect-main
make testdrive-jsui-test-all # 84 tests must pass
# Manually verify view and edit modes in the running Markitect app
Acceptance: All 84 tests pass; view and edit modes confirmed working.
P.3 — Pre-publication: decide STANDALONE_PLAN.md
STANDALONE_PLAN.md exists in the capability but its status is unclear. Either:
- Implement it (if it describes meaningful standalone work)
- Explicitly archive it with a note that the standalone use case is covered by the npm package
Acceptance: File updated with a clear status note; or deleted if obsolete.
P.4 — Pre-publication: pack and dry-run
Run the full pre-publish checklist.
cd capabilities/testdrive-jsui
npm run lint # zero errors
npm test # all 84 tests pass
npm run build:prod # clean production build
npm pack # creates testdrive-jsui-1.0.0.tgz
npm install ./testdrive-jsui-1.0.0.tgz --dry-run # verify install
npm publish --dry-run # verify what will be published
Review --dry-run output: confirm only intended files are included (check
.npmignore or files field in package.json).
Acceptance: npm publish --dry-run succeeds with expected file list; no
test files, source maps, or internal docs included unintentionally.
P.5 — Pre-publication: create release tag
git tag -a v1.0.0 -m "Release testdrive-jsui v1.0.0"
# (push tag to remote when ready)
Acceptance: Tag v1.0.0 exists on main; CHANGELOG.md entry present for 1.0.0.
P.6 — Publication: publish to npm
cd capabilities/testdrive-jsui
npm login # if not already logged in
npm publish
Then verify:
- Package visible at
https://www.npmjs.com/package/testdrive-jsui - Wait 5–10 minutes, then check CDN availability:
https://cdn.jsdelivr.net/npm/testdrive-jsui@1.0.0/dist/testdrive-jsui.min.jshttps://unpkg.com/testdrive-jsui@1.0.0/dist/testdrive-jsui.min.js
Acceptance: Package installable via npm install testdrive-jsui.
P.7 — Publication: fresh install test
In a clean temporary directory, install from npm and verify the library works with a minimal HTML file.
mkdir /tmp/testdrive-test && cd /tmp/testdrive-test
npm install testdrive-jsui marked
# Open standalone.html equivalent, confirm editor initialises
Acceptance: new TestDriveJSUI({...}) works in a fresh install with no
reference to the capability source directory.
P.8 — Publication: GitHub release
Create a GitHub release from the v1.0.0 tag with:
- Release notes (summary from CHANGELOG.md 1.0.0 entry)
- Link to npm package
- Link to CDN URLs (jsdelivr, unpkg)
Acceptance: GitHub release published and visible.
P.9 — Post-publication: README badges and monitoring
Add npm badges to capabilities/testdrive-jsui/README.md:
[](...)
[](...)
Set a reminder to check download stats after 1 week. Demo page and GitHub Pages are optional — do only if there's a specific audience to point at it.
Acceptance: README has version and download count badges; committed.
Task order
P.1 (repo decision)
P.2 (Markitect integration check) ← can run in parallel with P.1
P.3 (STANDALONE_PLAN decision) ← can run in parallel
↓
P.4 (pack + dry-run) ← needs P.1, P.2, P.3 all done
P.5 (release tag) ← can run with P.4
↓
P.6 (publish)
P.7 (fresh install test)
P.8 (GitHub release)
P.9 (badges + monitoring)
Out of scope
- Adding new features before publication (ship what's there)
- Ruby or Java adapters (optional integrations, not blocking publication)
- Paid npm features (keep on free tier)