Skip to content

Fix/improved meetings migration#1463

Open
lego0110 wants to merge 7 commits intowebex:masterfrom
lego0110:fix/ImprovedMeetingsMigration
Open

Fix/improved meetings migration#1463
lego0110 wants to merge 7 commits intowebex:masterfrom
lego0110:fix/ImprovedMeetingsMigration

Conversation

@lego0110
Copy link
Copy Markdown

COMPLETES #https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-800104

This pull request addresses

update sdk version in space widget to support unified meetings and one-one call/meeting

by making the following changes

  • Node 22 compatibility (Dart Sass migration)
  • Upgraded @webex/* packages: 2.59.6 → 2.60.4
  • Meetings API Integration
  • Patched control actions to bridge API compatibility gap

Change Type

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Tooling change
  • Internal code refactor

The following scenarios were tested

  • The testing is done with the amplify link
    < ENUMERATE TESTS PERFORMED, WHETHER MANUAL OR AUTOMATED >

The GAI Coding Policy And Copyright Annotation Best Practices

  • GAI was not used (or, no additional notation is required)
  • Code was generated entirely by GAI
  • GAI was used to create a draft that was subsequently customized or modified
  • Coder created a draft manually that was non-substantively modified by GAI (e.g., refactoring was performed by GAI on manually written code)
  • Tool used for AI assistance (GitHub Copilot / Other - specify)
    • Github Copilot
    • Claude Code
    • Other - Please Specify
  • This PR is related to
    • Feature
    • Defect fix
    • Tech Debt
    • Automation

Checklist before merging

  • I have not skipped any automated checks
  • All existing and new tests passed
  • I have updated the testing document

rsarika and others added 7 commits April 15, 2026 13:59
…con support

node-sass (LibSass) doesn't support arm64 + Node 20/22. Migrates to
Dart Sass (`sass` package) and fixes compound `@extend .md-button:active`
selectors that aren't supported by Dart Sass. Updates .nvmrc to Node 22.

- Replace `node-sass` with `sass` in devDependencies
- sass-loader ^10.5.2 auto-detects Dart Sass (webpack 4 compatible)
- Fix `@extend .md-button:active` → `@extend .md-button` in adaptiveCard.scss
- Update .nvmrc from lts/fermium to 22

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Switch Docker image from circleci/node:fermium (Node 14) to cimg/node:22.22
- Add --legacy-peer-deps to npm ci (project has peer dep conflicts)
- Update cache keys from fermium/npm-6 to node-22/npm-10

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The fibers native module (dep of @wdio/sync) is abandoned and cannot
compile on Node 20+. Add an npm override to replace it with an empty
stub package, allowing both npm install and npm ci to succeed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Upgrade @webex/* packages from 2.59.6 to 2.60.4
- Pin @webex/components to 1.274.0 to avoid compatibility issues
- Add webpack babel-loader rule to transpile react-draggable in node_modules
  - Fixes optional chaining syntax compatibility issues
  - Preserves CommonJS module format
- Update webpack dev server configuration:
  - Enable CORS with Access-Control-Allow-* headers
  - Configure CSP for Cisco domains
  - Add proxy for /v1 API endpoints
  - Set host to local-dev.cisco.com for domain mapping
- Expose window.webexSDK globally for debugging when Generate SDK Instance is enabled

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ontrols

Implement unified space meetings migration at widget level and fix
WebexMeetingControlBar compatibility issues.

Changes:
- Add Meetings API integration for space calls with enableUnifiedMeetings
  flag, creating ad-hoc meetings and using sipAddress for connection
- Patch meeting control actions to bridge API compatibility gap between
  @webex/components (old positional parameter API) and
  @webex/sdk-component-adapter (new object parameter API)
- Add custom meeting controls configuration to include screen share,
  member roster, and settings buttons in control bar
- Enable HTTPS in dev server with self-signed certificates to allow
  navigator.mediaDevices access (required for camera/microphone permissions)
- Add webexapis.com to Content-Security-Policy connect-src whitelist
- Add Permissions-Policy header for camera, microphone, and display-capture

Technical details:
- withCallHandlers.js: Make handleCall async, add Meetings API POST call
  for SPACEID destination type when unified meetings enabled
- call-active/index.js: Add React.useEffect hook to patch control.action
  methods, converting (meetingID, value) calls to ({meetingID, ...value})
- call-active/index.js: Provide custom controls array via meetingControls
  function passed to WebexMeetingControlBar
- webpack.dev.babel.js: Configure devServer with HTTPS using
  .cert/key.pem and .cert/cert.pem

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove excessive debug logging and simplify code:
- Remove DebugControlBar wrapper component, use WebexMeetingControlBar directly
- Reduce console logs to minimal essential logging for flow tracking
- Remove HELLO prefix from log messages
- Remove member-roster and settings from control bar (keep core controls only)
- Remove getMeeting selector logging

Minimal logging retained:
- [UnifiedMeeting] Created: logs successful meeting creation
- [PlaceCall] callId: logs call ID after placing call
- [ActiveMeeting] meetingId: logs meeting ID and validation status
- Error logging for failed meeting creation

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove security vulnerabilities and fix broken device switching:
- Remove window.debug* exposure in call-active component
- Fix device control parameter mapping for camera/mic/speaker switches
- Add certificate fallback in webpack dev config for clean checkouts
- Change default dev server port from 8001 to 8000
- Consolidate window.webexSDK exposure in demo widget

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Comment thread .nvmrc
@@ -1 +1 @@
lts/fermium
22
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Im not against the use of the number but I think there is a tag that we can use for node22, I think its called 'jod'

Comment on lines +32 to +34
const certPath = path.resolve(__dirname, '../../.cert');
const keyPath = path.join(certPath, 'key.pem');
const certFilePath = path.join(certPath, 'cert.pem');
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did we confirm that we have these updated and working

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants