Jitsi video integration plugin
- Go 51.6%
- TypeScript 39.2%
- Makefile 7.4%
- JavaScript 1.5%
- Dockerfile 0.2%
- Other 0.1%
- UPSTREAM_SYNC.md: step-by-step rebase procedure, full table of NCW invariants to verify after every sync, known conflict surface areas, post-rebase build/smoke-test steps - README.md: updated to reflect deployed state, current command (/meet), NCW customization table linking to UPSTREAM_SYNC.md for rationale |
||
|---|---|---|
| .github | ||
| assets | ||
| build | ||
| public | ||
| server | ||
| webapp | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .gitpod.yml | ||
| .golangci.yml | ||
| .nvmrc | ||
| CONTRIBUTING.md | ||
| docker-make | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| Makefile | ||
| plugin.json | ||
| README.md | ||
| UPSTREAM_SYNC.md | ||
slash-jitsi-plugin
Jitsi Meet video conferencing integration for Slash Chat (NCW fork of mattermost-plugin-jitsi).
Branch: Work on ncw/main only — master is the upstream mirror, never commit there.
Status
| Item | Status |
|---|---|
| meet.ncwcom.com (CT#142) | ✅ Running |
| Plugin deployed to CT#137 | ✅ Live — /meet command working |
| Desktop button color fix | ✅ White text on NCW purple |
| Mobile Jitsi | ✅ Implemented in slash-mobile (native component) |
Features
/meetslash command — posts a meeting card in the channel with a JOIN MEETING button- App bar icon — one-click meeting start from channel header
- Self-hosted Jitsi at
meet.ncwcom.com - Channel-based room naming (team+channel slug)
NCW Customizations vs upstream
| File | Change | Why |
|---|---|---|
plugin.json |
id = com.ncwcom.slash-jitsi; default URL = https://meet.ncwcom.com |
Plugin identity + self-hosted server |
server/command.go |
/jitsi → /meet |
Brand-neutral command name |
webapp/src/index.tsx |
registerPlugin(manifest.id), MM 10+ API guard, CSS injection for button color |
MM 11.7 compat; NCW theme color collision fix |
webapp/src/components/post_type_jitsi/post_type_jitsi.tsx |
Inline button styles, className='slash-jitsi-btn', hardcoded color: '#FFFFFF' |
MM global <a> color override makes button text invisible without this |
webapp/package.json |
NODE_OPTIONS=--openssl-legacy-provider in build scripts |
webpack 4 + Node 24 (OpenSSL 3) incompatibility |
See UPSTREAM_SYNC.md for the full rationale and rebase procedure.
Building
git checkout ncw/main
# On CT#139 (git.ncwcom.com) — Node 24 + Go 1.24 installed:
NODE_OPTIONS=--openssl-legacy-provider make dist
# Output: dist/com.ncwcom.slash-jitsi-2.1.0.tar.gz (~66 MB)
Deploying to CT#137
See RUNBOOK.md in slash-deploy for the full procedure. Quick reference:
# On CT#137 — download from Forgejo release v2.1.1:
TOKEN="<forgejo-token>"
curl -f -L -H "Authorization: token $TOKEN" \
-o /tmp/com.ncwcom.slash-jitsi-2.1.0.tar.gz \
"http://172.16.0.101:3000/slash/slash-jitsi-plugin/releases/download/v2.1.1/com.ncwcom.slash-jitsi-2.1.0.tar.gz"
/opt/mattermost/bin/mmctl plugin delete com.ncwcom.slash-jitsi --local
/opt/mattermost/bin/mmctl plugin add /tmp/com.ncwcom.slash-jitsi-2.1.0.tar.gz --local
/opt/mattermost/bin/mmctl plugin enable com.ncwcom.slash-jitsi --local
Note: Only port 3000 (Forgejo HTTP) is open between CT#137 and CT#139. SCP/SSH fails.
Configuration (in Mattermost System Console)
| Setting | Value |
|---|---|
| Jitsi Server URL | https://meet.ncwcom.com (default) |
| Meeting Names | mattermost — channel-based (default) |
| Use JWT | false |
| Use Jitsi Link | false |
Upstream sync
See UPSTREAM_SYNC.md for the complete step-by-step procedure,
invariant checks, and known conflict surface areas.
Quick reference:
# 1. Update mirror
git checkout master
git pull https://github.com/mattermost/mattermost-plugin-jitsi.git master
git push origin master
# 2. Rebase NCW changes
git checkout ncw/main
git rebase master
# 3. Verify invariants (see UPSTREAM_SYNC.md §4)
# 4. Rebuild and test
NODE_OPTIONS=--openssl-legacy-provider make dist