a reactive (signals based) hypermedia web framework (wip) stormlightlabs.github.io/volt/
hypermedia frontend signals
1# Release Guide 2 3This guide covers the process for publishing Volt.js packages to npm and JSR. 4 5## Prerequisites 6 7### npm 8 9Ensure you have npm publishing rights: 10 11```bash 12npm whoami 13``` 14 15Make sure you're logged in: 16 17```bash 18npm login 19``` 20 21### JSR 22 23No setup required. JSR authentication happens via browser during first publish. 24 25## Pre-Release Checklist 26 27- [ ] Ensure all tests pass 28 29```bash 30pnpm test:run 31``` 32 33- [ ] Type check all packages 34 35```bash 36pnpm typecheck 37``` 38 39- [ ] Build all packages 40 41```bash 42pnpm build 43``` 44 45- [ ] Update version numbers 46 47## Publishing voltx.js 48 49The core package is published as: 50 51- **npm**: `voltx.js` (unscoped) 52- **JSR**: `@voltx.js/core` (scoped, JSR requires scopes) 53 54Publishing is **fully automated** via GitHub Actions when you push a tag. 55 56### 1. Update Version 57 58Update version in both files: 59 60- `lib/package.json` 61- `lib/jsr.json` 62 63Use semantic versioning (semver): 64 65- Patch: bug fixes (0.1.0 → 0.1.1) 66- Minor: new features, backward compatible (0.1.0 → 0.2.0) 67- Major: breaking changes (0.1.0 → 1.0.0) 68 69### 2. Build and Test Locally 70 71```bash 72cd lib 73pnpm build 74pnpm test:run 75``` 76 77Verify build outputs: 78 79- [ ] `dist/voltx.js` - Unminified ES module 80- [ ] `dist/voltx.min.js` - Minified ES module 81- [ ] `dist/voltx.min.js.gz` - Gzipped minified version (for size verification) 82- [ ] `dist/voltx.d.ts` - Main TypeScript declarations 83- [ ] `dist/debug.js` - Debug module (unminified) 84- [ ] `dist/debug.min.js` - Debug module (minified) 85- [ ] `dist/debug.d.ts` - Debug TypeScript declarations 86- [ ] `dist/voltx.css` - Unminified CSS framework 87- [ ] `dist/voltx.min.css` - Minified CSS framework 88 89Ensure no unwanted files: 90 91- [ ] No chunks (code splitting disabled) 92- [ ] No asset files (vite.svg, etc.) 93 94### 3. Commit Version Bump 95 96```bash 97git add lib/package.json lib/jsr.json 98git commit -m "chore: bump version to vX.Y.Z" 99git push origin main 100``` 101 102### 4. Create and Push Tag 103 104```bash 105git tag vX.Y.Z 106git push origin vX.Y.Z 107``` 108 109**This triggers automated publishing:** 110 111- `.github/workflows/publish-npm.yml` - Publishes to npm with provenance 112- `.github/workflows/publish-jsr.yml` - Publishes to JSR 113 114### 5. Monitor GitHub Actions 115 116- [ ] Check workflow runs: <https://github.com/stormlightlabs/volt/actions> 117- [ ] Verify npm publish workflow succeeded 118- [ ] Verify JSR publish workflow succeeded 119 120### 6. Verify Publication 121 122- [ ] Verify npm publication 123 124```bash 125npm view voltx.js 126``` 127 128Visit: <https://www.npmjs.com/package/voltx.js> 129 130- [ ] Verify JSR publication 131 132```bash 133npx jsr info @voltx.js/core 134``` 135 136Visit: <https://jsr.io/@voltx.js/core> 137 138- [ ] Verify unpkg.com distribution structure 139Visit: `https://unpkg.com/voltx.js@VERSION/` (replace VERSION) 140 141You should see: 142 - dist/ directory with all build outputs 143 - LICENSE 144 - README.md 145 - package.json 146 147## Post-Release 148 149- [ ] Create GitHub release with changelog 150 - Go to <https://github.com/stormlightlabs/volt/releases> 151 - Click "Draft a new release" 152 - Select the tag (vX.Y.Z) that was just pushed 153 - Add release notes and changelog 154- [ ] Update documentation if needed 155- [ ] Announce release (if significant update) 156 157## Manual Publishing (Fallback) 158 159If GitHub Actions fail or you need to publish manually: 160 161### npm 162 163```bash 164cd lib 165npm publish --provenance 166``` 167 168Requires: 169 170- npm login (`npm whoami` to verify) 171- npm publish rights to voltx.js package 172 173### JSR 174 175```bash 176cd lib 177npx jsr publish 178``` 179 180First time: Browser window opens for authentication 181Subsequent publishes: Uses cached credentials 182 183## To-Do 184 185- Consider using `bumpp` or `changeset` for automated version management across the monorepo. 186- Write a changelog