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