Skip to content

Commit 71928be

Browse files
committed
docs: add CHANGELOG.md and update version references to 1.0.0
- Create CHANGELOG.md with v1.0.0 release notes documenting: - Release infrastructure (OIDC, manual approval, cibuildwheel) - Breaking changes (event system, minimum version requirements) - CI/CD improvements and bug fixes - Update PUBLISHING.md version examples from 0.0.x to 1.x - Remove outdated TestPyPI badge from README.md (v1.0.0 goes to PyPI)
1 parent 58651e1 commit 71928be

4 files changed

Lines changed: 267 additions & 43 deletions

File tree

CHANGELOG.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Changelog
2+
3+
All notable changes to the Zoom RTMS SDK will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [1.0.0] - 2026-01-22
9+
10+
### Added
11+
12+
#### Release Infrastructure
13+
- Git tag-based publishing workflow (`js-v*` and `py-v*` triggers)
14+
- Trusted Publishing (OIDC) for npm and PyPI - no stored API tokens required
15+
- Manual approval gates using GitHub Environments before publishing
16+
- Multi-platform CI/CD pipeline (Linux x64, macOS ARM64)
17+
- cibuildwheel integration for Python (builds 8 wheels: 4 Python versions × 2 platforms)
18+
- Artifact reuse pattern ("build once, test many") for efficient CI
19+
- Dry-run mode for testing publish workflow without actual publishing
20+
- Comprehensive PUBLISHING.md guide for maintainers
21+
22+
#### Documentation
23+
- Product-specific examples for Zoom Meetings, Webinars, and Video SDK
24+
- Supported Products section in README
25+
- Complete API documentation generation and GitHub Pages deployment
26+
27+
#### Build System
28+
- Platform-specific wheel cleanup before Python builds
29+
- Scoped package prebuild paths (`@zoom/rtms`)
30+
- Automated testing across Node.js 20.x/22.x/24.x and Python 3.10-3.13
31+
32+
### Changed
33+
34+
#### Breaking Changes
35+
- **Event System Redesign**: Both Node.js and Python bindings now use typed callbacks
36+
- Node.js: Event handlers use typed callback signatures
37+
- Python: Callback registration methods updated for consistency
38+
- **Minimum Node.js version**: Requires Node.js 20.3.0+ (N-API v9 support)
39+
- **Minimum Python version**: Requires Python 3.10+
40+
41+
#### CI/CD
42+
- Replaced manual tests with automated pytest and Jest test suites
43+
- Docker Compose services now run actual tests instead of manual mode
44+
- SDK downloads use GITHUB_TOKEN to avoid rate limits
45+
46+
### Fixed
47+
48+
- Correct RPATH for Linux shared library loading in Python wheels
49+
- README filename case sensitivity (README.md instead of README.MD)
50+
- Platform-specific wheel cleanup prevents stale artifacts
51+
- Python interpreter detection using `python -m pip`
52+
- Docker containers call `task setup` before build
53+
54+
## [0.0.x] - Pre-release
55+
56+
Pre-release versions were used for development and testing. The 1.0.0 release marks the first production-ready release with:
57+
- Stable API for both Node.js and Python
58+
- Full CI/CD automation
59+
- Production-ready publishing infrastructure

PUBLISHING.md

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,8 @@ pdoc --html --output-dir docs/py --force src/rtms
268268

269269
Each language maintains its own version number:
270270

271-
- **Node.js**: Version in `package.json` (currently **0.0.4**)
272-
- **Python**: Version in `pyproject.toml` (currently **0.0.1**)
271+
- **Node.js**: Version in `package.json` (currently **1.0.0**)
272+
- **Python**: Version in `pyproject.toml` (currently **1.0.0**)
273273
- **Go**: Will have separate version when implemented
274274

275275
This allows for:
@@ -333,8 +333,8 @@ Before creating a git tag, ensure:
333333

334334
Use language-prefixed semantic version tags:
335335

336-
- **Node.js releases**: `js-v{version}` (e.g., `js-v0.0.7`)
337-
- **Python releases**: `py-v{version}` (e.g., `py-v0.0.3`)
336+
- **Node.js releases**: `js-v{version}` (e.g., `js-v1.0.0`)
337+
- **Python releases**: `py-v{version}` (e.g., `py-v1.0.0`)
338338

339339
**Rationale:**
340340
- Language prefix enables independent versioning
@@ -445,15 +445,15 @@ PyPI Trusted Publishing uses OIDC (OpenID Connect) to authenticate GitHub Action
445445
**Step 1: Update version in package.json**
446446

447447
```bash
448-
vim package.json # Change "version" to "0.0.7"
448+
vim package.json # Change "version" to "1.0.1"
449449
```
450450

451451
**Step 2: Update CHANGELOG.md**
452452

453453
Add release notes:
454454

455455
```markdown
456-
## [0.0.7] - 2025-12-XX
456+
## [1.0.1] - 2026-01-XX
457457

458458
### Changed
459459
- Updated to latest Zoom RTMS C SDK
@@ -467,7 +467,7 @@ Add release notes:
467467

468468
```bash
469469
git add package.json CHANGELOG.md
470-
git commit -m "chore(js): bump version to 0.0.7"
470+
git commit -m "chore(js): bump version to 1.0.1"
471471
git push origin main
472472
```
473473

@@ -478,15 +478,15 @@ Check the Actions tab to ensure all CI tests complete successfully.
478478
**Step 5: Create and push git tag**
479479

480480
```bash
481-
git tag js-v0.0.7
482-
git push origin js-v0.0.7
481+
git tag js-v1.0.1
482+
git push origin js-v1.0.1
483483
```
484484

485485
**Step 6: Monitor CI/CD workflow**
486486

487487
1. Go to **Actions** tab → **"Publish Packages"** workflow
488488
2. Workflow automatically:
489-
- Detects language (node) and version (0.0.7)
489+
- Detects language (node) and version (1.0.1)
490490
- Validates version matches package.json
491491
- Builds prebuilds for darwin-arm64 and linux-x64
492492
- Builds for N-API v9 and v10 (4 total prebuilds)
@@ -532,13 +532,13 @@ npm install @zoom/rtms
532532
**Step 1: Update version in pyproject.toml**
533533

534534
```bash
535-
vim pyproject.toml # Change "version" to "0.0.3"
535+
vim pyproject.toml # Change "version" to "1.0.1"
536536
```
537537

538538
**Step 2: Update CHANGELOG.md**
539539

540540
```markdown
541-
## [0.0.3] - 2025-12-XX
541+
## [1.0.1] - 2026-01-XX
542542

543543
### Changed
544544
- Build wheels for Python 3.10-3.13 using cibuildwheel
@@ -552,7 +552,7 @@ vim pyproject.toml # Change "version" to "0.0.3"
552552

553553
```bash
554554
git add pyproject.toml CHANGELOG.md
555-
git commit -m "chore(py): bump version to 0.0.3"
555+
git commit -m "chore(py): bump version to 1.0.1"
556556
git push origin main
557557
```
558558

@@ -563,14 +563,14 @@ Check Actions tab for successful test completion.
563563
**Step 5: Create and push git tag**
564564

565565
```bash
566-
git tag py-v0.0.3
567-
git push origin py-v0.0.3
566+
git tag py-v1.0.1
567+
git push origin py-v1.0.1
568568
```
569569

570570
**Step 6: Monitor CI/CD workflow**
571571

572572
Workflow automatically:
573-
- Detects language (python) and version (0.0.3)
573+
- Detects language (python) and version (1.0.1)
574574
- Validates version matches pyproject.toml
575575
- Builds wheels for Python 3.10, 3.11, 3.12, 3.13
576576
- Builds for darwin-arm64 and linux-x64 (**8 total wheels**)
@@ -616,7 +616,7 @@ Use `workflow_dispatch` to test the publish workflow **without actually publishi
616616

617617
- **Branch**: Select `main` or your feature branch
618618
- **Language**: `node` or `python`
619-
- **Version**: e.g., `0.0.7`
619+
- **Version**: e.g., `1.0.0`
620620
- **Dry run**: ✅ **true** (important!)
621621
- **Target** (Python only): `test` (for TestPyPI)
622622

@@ -678,17 +678,17 @@ If any validation fails, the workflow stops and sends an error notification.
678678

679679
```bash
680680
# Delete tag locally and remotely
681-
git tag -d js-v0.0.7
682-
git push origin :refs/tags/js-v0.0.7
681+
git tag -d js-v1.0.0
682+
git push origin :refs/tags/js-v1.0.0
683683

684684
# Fix issue, commit changes
685685
git add .
686686
git commit -m "fix: resolve issue found during release"
687687
git push origin main
688688

689689
# Recreate tag
690-
git tag js-v0.0.7
691-
git push origin js-v0.0.7
690+
git tag js-v1.0.0
691+
git push origin js-v1.0.0
692692
```
693693

694694
5. Workflow runs again with fresh artifacts
@@ -704,11 +704,11 @@ git push origin js-v0.0.7
704704

705705
```bash
706706
# Mark version as deprecated (users see warning)
707-
npm deprecate @zoom/rtms@0.0.7 "Critical bug - use 0.0.8 instead"
707+
npm deprecate @zoom/rtms@1.0.0 "Critical bug - use 1.0.1 instead"
708708

709709
# What this does:
710-
# - npm install @zoom/rtms will skip 0.0.7
711-
# - Users see deprecation warning when installing 0.0.7 specifically
710+
# - npm install @zoom/rtms will skip 1.0.0
711+
# - Users see deprecation warning when installing 1.0.0 specifically
712712
# - Existing installs keep working
713713
# - Package is NOT deleted, just discouraged
714714
```
@@ -717,11 +717,11 @@ npm deprecate @zoom/rtms@0.0.7 "Critical bug - use 0.0.8 instead"
717717

718718
```bash
719719
# Yank the release (hides from default pip install)
720-
twine yank rtms 0.0.7 -r pypi --reason "Critical bug - use 0.0.8"
720+
twine yank rtms 1.0.0 -r pypi --reason "Critical bug - use 1.0.1"
721721

722722
# What this does:
723-
# - pip install rtms will skip 0.0.7
724-
# - Can still install via: pip install rtms==0.0.7 (if explicitly requested)
723+
# - pip install rtms will skip 1.0.0
724+
# - Can still install via: pip install rtms==1.0.0 (if explicitly requested)
725725
# - Existing installs keep working
726726
# - Package is NOT deleted, just hidden from default installs
727727
```
@@ -730,26 +730,26 @@ twine yank rtms 0.0.7 -r pypi --reason "Critical bug - use 0.0.8"
730730

731731
```bash
732732
# Can delete GitHub release (does not affect npm/PyPI)
733-
gh release delete js-v0.0.7
733+
gh release delete js-v1.0.0
734734

735735
# Or edit release to add warning
736-
gh release edit js-v0.0.7 --notes "⚠️ **Do not use** - critical bugs. Use v0.0.8 instead."
736+
gh release edit js-v1.0.0 --notes "⚠️ **Do not use** - critical bugs. Use v1.0.1 instead."
737737
```
738738

739739
**Then publish fixed version:**
740740

741741
```bash
742-
# Bump to 0.0.8 in package.json/pyproject.toml
742+
# Bump to 1.0.1 in package.json/pyproject.toml
743743
vim package.json # or pyproject.toml
744744

745745
# Commit
746746
git add package.json CHANGELOG.md
747-
git commit -m "chore(js): bump version to 0.0.8 (hotfix)"
747+
git commit -m "chore(js): bump version to 1.0.1 (hotfix)"
748748
git push origin main
749749

750750
# Create new tag
751-
git tag js-v0.0.8
752-
git push origin js-v0.0.8
751+
git tag js-v1.0.1
752+
git push origin js-v1.0.1
753753

754754
# Approve when workflow pauses
755755
# New version becomes latest
@@ -871,10 +871,10 @@ task prebuild:js # All 4 combinations
871871
```
872872

873873
**Output:** Prebuilds are created in `prebuilds/` directory with names like:
874-
- `rtms-v0.0.5-napi-v9-darwin-arm64.tar.gz`
875-
- `rtms-v0.0.5-napi-v10-darwin-arm64.tar.gz`
876-
- `rtms-v0.0.5-napi-v9-linux-x64.tar.gz`
877-
- `rtms-v0.0.5-napi-v10-linux-x64.tar.gz`
874+
- `rtms-v1.0.0-napi-v9-darwin-arm64.tar.gz`
875+
- `rtms-v1.0.0-napi-v10-darwin-arm64.tar.gz`
876+
- `rtms-v1.0.0-napi-v9-linux-x64.tar.gz`
877+
- `rtms-v1.0.0-napi-v10-linux-x64.tar.gz`
878878

879879
### Step 3: Upload Prebuilds to GitHub Releases
880880

@@ -1541,7 +1541,7 @@ To test Python publishing on TestPyPI first:
15411541
1. Go to Actions → "Publish Packages"
15421542
2. Click "Run workflow"
15431543
3. Language: `python`
1544-
4. Version: e.g., `0.0.3`
1544+
4. Version: e.g., `1.0.0`
15451545
5. Dry run: `false`
15461546
6. Target: `test`
15471547
7. Run workflow
@@ -1554,12 +1554,12 @@ You can also trigger publishing by pushing a git tag:
15541554

15551555
```bash
15561556
# For Python
1557-
git tag py-v0.0.3
1558-
git push origin py-v0.0.3
1557+
git tag py-v1.0.0
1558+
git push origin py-v1.0.0
15591559

15601560
# For Node.js
1561-
git tag js-v0.0.7
1562-
git push origin js-v0.0.7
1561+
git tag js-v1.0.0
1562+
git push origin js-v1.0.0
15631563
```
15641564

15651565
This triggers publish.yml directly, which will:

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ Bindings for real-time audio, video, and transcript streams from Zoom Meetings
44

55
[![npm](https://img.shields.io/npm/v/@zoom/rtms)](https://www.npmjs.com/package/@zoom/rtms)
66
[![PyPI](https://img.shields.io/pypi/v/rtms)](https://pypi.org/project/rtms/)
7-
[![TestPyPI](https://img.shields.io/badge/testpypi-v0.0.1-blue)](https://test.pypi.org/project/rtms/)
87
[![docs](https://img.shields.io/badge/docs-online-blue)](https://zoom.github.io/rtms/js/)
98

109
## Supported Products

0 commit comments

Comments
 (0)