Distribute via npx from a GitHub Pages tarball
deploy.yml packs the package and publishes the tarball (plus a small landing
page) to GitHub Pages, so it runs with
npx https://concept-collection.github.io/commonroom-recorder/commonroom-recorder.tgz
without being published to npm. The prepare script also makes
npx github:concept-collection/commonroom-recorder work (builds from source).
4 changed files+90−1
.github/workflows/deploy.ymladded+73−0View file
@@ -0,0 +1,73 @@
1+# Build the package and publish the npm-pack tarball to GitHub Pages, so the
2+# recorder can be run with npx straight from the Pages URL — no npm registry:
3+#
4+# npx https://concept-collection.github.io/commonroom-recorder/commonroom-recorder.tgz <room>
5+
6+name: deploy
7+
8+on:
9+ push:
10+ branches: [main]
11+ workflow_dispatch:
12+
13+permissions:
14+ contents: read
15+ pages: write
16+ id-token: write
17+
18+concurrency:
19+ group: pages
20+ cancel-in-progress: false
21+
22+jobs:
23+ build:
24+ runs-on: ubuntu-latest
25+ steps:
26+ - uses: actions/checkout@v4
27+ - uses: actions/setup-node@v4
28+ with:
29+ node-version: 22
30+ - run: npm ci # its prepare script builds dist/
31+ - name: Pack tarball and build site
32+ run: |
33+ mkdir -p site
34+ npm pack --pack-destination site
35+ cp site/commonroom-recorder-*.tgz site/commonroom-recorder.tgz
36+ cat > site/index.html <<'EOF'
37+ <!DOCTYPE html>
38+ <html lang="en">
39+ <head>
40+ <meta charset="utf-8">
41+ <meta name="viewport" content="width=device-width, initial-scale=1">
42+ <title>commonroom-recorder</title>
43+ <style>
44+ body { font-family: system-ui, sans-serif; max-width: 42rem; margin: 3rem auto; padding: 0 1rem; line-height: 1.5; }
45+ pre { background: #f4f4f4; padding: 0.75rem 1rem; border-radius: 6px; overflow-x: auto; }
46+ @media (prefers-color-scheme: dark) { body { background: #1a1a1a; color: #ddd; } pre { background: #2a2a2a; } a { color: #8ab4f8; } }
47+ </style>
48+ </head>
49+ <body>
50+ <h1>commonroom-recorder</h1>
51+ <p>Record a <a href="https://concept-collection.github.io/commonroom/">commonroom</a>
52+ call from the command line: per-participant WAV files plus the room chat,
53+ for transcribing the meeting. Needs Node ≥ 22.</p>
54+ <pre>npx https://concept-collection.github.io/commonroom-recorder/commonroom-recorder.tgz <room></pre>
55+ <p>Stop with Ctrl-C. See the
56+ <a href="https://github.com/concept-collection/commonroom-recorder">README</a>
57+ for options and output format.</p>
58+ </body>
59+ </html>
60+ EOF
61+ - uses: actions/upload-pages-artifact@v3
62+ with:
63+ path: site
64+
65+ deploy:
66+ needs: build
67+ runs-on: ubuntu-latest
68+ environment:
69+ name: github-pages
70+ url: ${{ steps.deployment.outputs.page_url }}
71+ steps:
72+ - id: deployment
73+ uses: actions/deploy-pages@v4
.gitignoremodified+2−0View file
@@ -2,3 +2,5 @@ node_modules/
22 dist/
33 recordings/
44 *.tsbuildinfo
5+*.tgz
6+site/
README.mdmodified+10−0View file
@@ -12,6 +12,16 @@ each participant so everyone knows the meeting is being recorded.
1212
1313 ## Usage
1414
15+No install needed — run it straight from this repo's GitHub Pages tarball
16+(nothing is published to npm):
17+
18+```
19+npx https://concept-collection.github.io/commonroom-recorder/commonroom-recorder.tgz <room> [options]
20+```
21+
22+(`npx github:concept-collection/commonroom-recorder` works too, but builds
23+from source on first run.) Or from a clone:
24+
1525 ```
1626 npm install
1727 npm run build
package.jsonmodified+5−1View file
@@ -6,15 +6,19 @@
66 "bin": {
77 "commonroom-recorder": "dist/cli.js"
88 },
9+ "files": [
10+ "dist",
11+ "README.md"
12+ ],
913 "scripts": {
1014 "build": "tsc -b",
15+ "prepare": "tsc -b",
1116 "record": "node dist/cli.js",
1217 "test:loopback": "node dist/test/loopback.js"
1318 },
1419 "engines": {
1520 "node": ">=22"
1621 },
17- "license": "Apache-2.0",
1822 "dependencies": {
1923 "@noble/secp256k1": "^3.1.0",
2024 "@roamhq/wrtc": "^0.10.0"