-
Notifications
You must be signed in to change notification settings - Fork 11
Final Release v1.0.0 #84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Add cibuildwheel configuration to pyproject.toml - Build for Python 3.10, 3.11, 3.12, 3.13 - Support darwin-arm64 and linux-x64 - Configure auditwheel for Linux manylinux compliance - Add Taskfile tasks for cibuildwheel - build:py:cibuildwheel: Auto-detect platform - build:py:cibuildwheel:linux: Build via Docker - build:py:cibuildwheel:darwin: Build locally on macOS - Add cibuild-py service to compose.yaml - Add py-cibuild target to Dockerfile This enables building wheels for all supported Python versions in a single command, producing 8 wheels per release (4 versions x 2 platforms)
- Create publish.yml workflow - Triggered by git tags (js-v*, py-v*) - Detects language and version from tag - Validates version matches package.json/pyproject.toml - Builds all platform-specific artifacts - Uses GitHub Environments for manual approval before publish - Publishes to npm/PyPI only after approval - Creates GitHub Release - Supports workflow_dispatch for dry-run testing - Update main.yml workflow - Add workflow_dispatch trigger for manual testing - Add conditions to respect manual trigger inputs - Enables testing doc builds on branches - Enables dry-run testing without deployment Requires GitHub Environment 'production' with reviewers configured. Requires GitHub secrets: NPM_TOKEN, PYPI_TOKEN, TESTPYPI_TOKEN
- Add detailed "Git Tag-Based Publishing" section - Prerequisites and setup instructions - Tag naming convention (js-v*, py-v*) - GitHub Environment setup (one-time configuration) - Step-by-step Node.js release process - Step-by-step Python release process (with cibuildwheel) - Dry-run testing mode instructions - Automated validation details - Manual approval benefits and workflow - Rollback procedures (before and after publish) - Troubleshooting common issues - Comparison table: manual vs git tag publishing - Update tag examples from python-v* to py-v* (consistency) - Add note that cibuildwheel builds 8 wheels (4 versions x 2 platforms) This provides maintainers with a complete guide for the new automated publishing workflow with manual approval gates.
- Created single meetings.md with both Node.js and Python examples - Added webinars.md and videosdk.md overviews - Updated README.md with Examples by Product section - Fixed VideoSDK webhook events (session.rtms_started not videosdk.*) - Simple flat structure: meetings.md, webinars.md, videosdk.md - All examples are markdown-based, linkable, and version controlled - No build process needed - direct markdown files
- Added early Supported Products section after badges - Links to all product examples (Meetings, Webinars, Video SDK) - Removed duplicate Examples by Product section later in file - Better visibility for product-specific documentation
… download uses latest by date
- compose.yaml: Use 'npx jest tests/' instead of 'task manual:js' (no .env needed) - compose.yaml: Run pytest for Python tests instead of echo - workflows/main.yml: Remove Node 20.x from matrix (keep 20.3.0 min + 24.x LTS) - Taskfile.yml: Enable Python tests with proper wheel installation This reduces test jobs from 10 to 8 and fixes .env dependency issues in CI.
…README.md) The actual file in git is README.MD (uppercase) but pyproject.toml referenced README.md (lowercase). This works on macOS (case-insensitive) but fails on Linux CI environments (case-sensitive). This fixes the 'Readme file not found' error in scikit-build-core.
Fixed case sensitivity issue by renaming to lowercase .md extension. This is the standard convention and works across all platforms. Tested locally in Docker - wheel builds successfully.
Changed from set_property with LINK_FLAGS (which produced 68847ORIGIN literal) to set_target_properties with INSTALL_RPATH (which correctly produces $ORIGIN). This fixes the 'librtmsdk.so.0: cannot open shared object file' error when importing the Python module on Linux. Preserved old implementation as comment for easy reversion if needed. Tested in Docker: module imports successfully with proper RPATH set.
BREAKING CHANGES: - Remove onUserUpdate callback - replaced with typed event callbacks - Remove USER_EVENT_JOIN and USER_EVENT_LEAVE constants New typed event callbacks that auto-subscribe to events: - onParticipantEvent(cb) - participant join/leave events - onActiveSpeakerEvent(cb) - active speaker changes - onSharingEvent(cb) - screen share start/stop New event constants: - EVENT_ACTIVE_SPEAKER_CHANGE, EVENT_PARTICIPANT_JOIN, EVENT_PARTICIPANT_LEAVE, EVENT_SHARING_START, EVENT_SHARING_STOP Events are now delivered via onEventEx as JSON and parsed in the TypeScript/Python wrapper layers (not C++). Typed callbacks provide a convenient API while onEventEx remains available for raw access. Also: - Bump Node.js package to 1.0.0 - Bump Python package to 1.0.0 - Add .claude/, .vscode/, __pycache__/, .pytest_cache/ to .gitignore - Update tests for new event system
- Fix Node.js prebuild: use `npx prebuild` instead of direct `prebuild` command which wasn't in dependencies (scripts/prebuild.js, scripts/publish.js) - Fix Python manylinux: update to manylinux_2_34 to match Zoom SDK's glibc 2.34 requirement (pthread symbols) (pyproject.toml) - Update cibuildwheel tasks to run directly instead of via Docker compose, allowing cibuildwheel to manage its own manylinux containers (Taskfile.yml) - Remove unused cibuild-py Docker service and py-cibuild Dockerfile target (compose.yaml, Dockerfile) - Update PUBLISHING.md with new Linux distribution requirements: Ubuntu 22.04+, Debian 12+, RHEL 9+, Fedora 35+ (glibc 2.34+)
Call prebuild.js script directly instead of using Tasks
The @zoom/rtms scoped package creates prebuilds in prebuilds/@zoom/ subdirectory. Update artifact upload paths to match this structure. Changes: - main.yml: Fix upload paths from prebuilds/*.tar.gz to prebuilds/@zoom/*.tar.gz - publish.yml: Fix upload path and restore @zoom subd
Prevent pip install failures when dist/py contains wheels from multiple platforms. build:py now removes existing wheels for the current platform before building, and manual:py installs only compatible wheels.
- 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)
- RC/alpha/beta tags (e.g., js-v1.0.0-rc.1) trigger special behavior: - Node.js: dry-run mode (no test npm registry exists) - Python: publish to TestPyPI instead of PyPI - Version validation allows prerelease suffix on base version (js-v1.0.0-rc.1 validates against 1.0.0 in package.json) - GitHub Releases marked as prerelease for RC/alpha/beta tags - Add pypi_target output to control TestPyPI vs PyPI routing
- Python environment URL now shows TestPyPI for prerelease tags - Linux prebuild job now calls build:js directly instead of Docker-based task - Fixes 'Error removing directory' by ensuring proper build sequence
- Add verbose: true for better debugging of upload issues - Add skip-existing: true to handle re-runs without failing on duplicate versions
- Add onUserUpdate callback to C++ core, Node.js, and Python bindings - Fix segfault caused by missing on_user_update handler in SDK callbacks - Export USER_JOIN and USER_LEAVE constants for user event handling - Change default log level from DEBUG to INFO for cleaner output - Move SDK initialization and server creation logs to DEBUG level - Keep INFO level for: webhook listening, received events, joining/joined meeting - Add "Received event" INFO log to Python webhook handler for parity with Node.js - Update TypeScript definitions with UserUpdateCallback type - Minor fixes: nvm version bump, task command fix for manual:py:linux
The test assertions used incorrect enum values that didn't match the C++ RTMS_EVENT_TYPE enum. Updated to include all 14 event types with their correct values (EVENT_UNDEFINED=0 through EVENT_USER_UNHOLD=13). Also bumped tar dependency from 7.5.2 to 7.5.6.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
name: Pull Request
about: Submit changes to the RTMS SDK
Description
This PR introduces a comprehensive release infrastructure overhaul for the Zoom RTMS SDK, transitioning from manual ad-hoc releases to a fully automated CI/CD pipeline with Trusted Publishing (OIDC) and manual approval gates.
Key highlights:
js-v1.0.0orpy-v1.0.0tags to trigger automated builds and publishingRelated Issues
Type of Change
Affected Components
Testing Performed
CI/CD Testing
js-v*andpy-v*tagsBuild Testing
Automated Tests
Checklist
Additional Context
Breaking Changes
Event System Redesign: The event callback system has been redesigned with typed callbacks for both Node.js and Python. Existing code using the old event patterns will need to be updated.
Minimum Version Requirements:
Publishing Workflow
After this PR is merged:
Create version tags:
The publish workflow will automatically:
Dry-Run Testing
To test the CI/CD without publishing:
trueFiles Changed
New Files:
.github/workflows/publish.yml- Git tag publishing workflowPUBLISHING.md- Comprehensive publishing guideCHANGELOG.md- Release changelogexamples/- Product-specific example guidesModified Files:
.github/workflows/main.yml- Enhanced CI/CD with artifact reuseTaskfile.yml- New cibuildwheel tasks, wheel cleanuppyproject.toml- cibuildwheel configuration, v1.0.0package.json- v1.0.0compose.yaml- Automated test commandsREADME.md- Supported products, updated badgesCLAUDE.md- Updated documentation