Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
272 commits
Select commit Hold shift + click to select a range
27c38fa
feat(call): register start and terminate routes
sshturbo Aug 1, 2026
6ed85cb
test(call): validate outgoing offer stanza
sshturbo Aug 1, 2026
32564ad
docs(call): document signaling-only call API
sshturbo Aug 1, 2026
44cf8c9
feat(call): add private incoming call material registry
sshturbo Aug 1, 2026
27bad21
feat(call): parse incoming offer media and encrypted key node
sshturbo Aug 1, 2026
baaa915
feat(call): decrypt incoming WhatsApp call keys
sshturbo Aug 1, 2026
5ba7a6c
fix(call): compile signaling node parser
sshturbo Aug 1, 2026
fcd33da
feat(call): build preaccept and accept stanzas
sshturbo Aug 1, 2026
138ca2c
feat(call): accept prepared incoming calls
sshturbo Aug 1, 2026
00037ea
feat(call): expose incoming call accept handler
sshturbo Aug 1, 2026
39a6077
test(call): cover incoming call signaling
sshturbo Aug 1, 2026
a5ea8ef
feat(call): register incoming call accept route
sshturbo Aug 1, 2026
adefce4
test(call): verify private call key lifecycle
sshturbo Aug 1, 2026
11d0d42
docs(call): document incoming call acceptance
sshturbo Aug 1, 2026
3e9e07b
feat(call): terminate incoming calls and harden private session races
sshturbo Aug 1, 2026
bf39b95
feat(call): terminate accepted incoming calls
sshturbo Aug 1, 2026
c15a65e
docs(call): document incoming call termination
sshturbo Aug 1, 2026
6a391f8
feat(call): add shared client lifecycle coordinator
sshturbo Aug 1, 2026
c051859
fix(call): preserve automatic call rejection lifecycle
sshturbo Aug 1, 2026
ae50831
chore(call): stage lifecycle hook migration
sshturbo Aug 1, 2026
7c465c8
chore(call): apply lifecycle hooks atomically
sshturbo Aug 1, 2026
63925a3
chore(call): run lifecycle migration from pull request
sshturbo Aug 1, 2026
82fc9c6
fix(call): target lifecycle field insertion precisely
sshturbo Aug 1, 2026
730cc24
feat(call): attach call lifecycle to WhatsApp clients
github-actions[bot] Aug 1, 2026
cd6ca8c
feat(call): add WhatsApp relay domain types
sshturbo Aug 1, 2026
86eb168
feat(call): parse WhatsApp relay metadata
sshturbo Aug 1, 2026
a97dd7f
test(call): cover WhatsApp relay parsing
sshturbo Aug 1, 2026
c6858ae
docs(call): document automatic lifecycle and relay parsing
sshturbo Aug 1, 2026
fa09079
docs(call): clarify relay parser privacy
sshturbo Aug 1, 2026
3574565
feat(call): add private relay material lifecycle helpers
sshturbo Aug 1, 2026
a00c287
feat(call): capture outgoing call relay acknowledgements
sshturbo Aug 1, 2026
5c96082
feat(call): associate private relay data with calls
sshturbo Aug 1, 2026
09dc767
feat(call): coordinate private outgoing negotiation state
sshturbo Aug 1, 2026
267c2f2
feat(call): persist outgoing private negotiation material
sshturbo Aug 1, 2026
850f03e
test(call): cover private call and relay material lifecycle
sshturbo Aug 1, 2026
0ba097f
test(call): verify relay material cloning and cleanup
sshturbo Aug 1, 2026
202c84c
feat(call): port strict call state machine
sshturbo Aug 1, 2026
d4efc17
test(call): validate strict call transitions
sshturbo Aug 1, 2026
002e09d
feat(call): add relay transport contract and configuration builder
sshturbo Aug 1, 2026
f75e666
test(call): validate relay transport configuration
sshturbo Aug 1, 2026
893e720
feat(call): track strict private call negotiation state
sshturbo Aug 1, 2026
c626564
test(call): integrate private negotiation with state machine
sshturbo Aug 1, 2026
e9904bf
docs(call): document private relay state and transport boundary
sshturbo Aug 1, 2026
352f2c8
feat(call): add relay subscription encoding
sshturbo Aug 1, 2026
3a332ec
feat(call): add STUN relay framing
sshturbo Aug 1, 2026
648d92e
test(call): cover relay framing foundation
sshturbo Aug 1, 2026
1915ba4
fix(call): import CRC32 in relay tests
sshturbo Aug 1, 2026
082b63c
feat(call): add WhatsApp relay DTLS fingerprint
sshturbo Aug 1, 2026
ab69445
feat(call): add default relay transport factory
sshturbo Aug 1, 2026
845abd8
feat(call): add experimental Pion SCTP relay transport
sshturbo Aug 1, 2026
3cace84
test(call): cover experimental Pion transport
sshturbo Aug 1, 2026
c901410
ci(call): validate experimental Pion relay
sshturbo Aug 1, 2026
bdf02c5
feat(call): finalize experimental Pion relay transport
github-actions[bot] Aug 1, 2026
7ba152e
feat(call): add deterministic WhatsApp SSRC derivation
sshturbo Aug 1, 2026
2883e86
test(call): cover SSRC derivation
sshturbo Aug 1, 2026
16cc416
feat(call): expose private relay negotiation bridge
sshturbo Aug 1, 2026
44ef6a7
feat(call): add per-call relay orchestration
sshturbo Aug 1, 2026
d857d47
test(call): cover relay orchestration lifecycle
sshturbo Aug 1, 2026
71968f4
feat(call): connect relay lifecycle to coordinator
sshturbo Aug 1, 2026
38239ec
ci(call): prepare relay orchestration migration
sshturbo Aug 1, 2026
f6cdb16
ci(call): validate relay orchestration
sshturbo Aug 1, 2026
211ec30
test(call): align runtime state with media lifecycle
sshturbo Aug 1, 2026
50e06d1
ci(call): rerun relay orchestration tests
sshturbo Aug 1, 2026
aa39f41
feat(call): connect relay transport to call lifecycle
github-actions[bot] Aug 1, 2026
1d88804
ci(call): test default and Pion relay builds
sshturbo Aug 1, 2026
7329c59
docs(call): document experimental Pion relay lifecycle
sshturbo Aug 1, 2026
05d9855
docs(call): clarify experimental relay activation
sshturbo Aug 1, 2026
39043e8
feat(call): add SRTP keying domain types
sshturbo Aug 1, 2026
270a064
feat(call): derive per-device SRTP keys
sshturbo Aug 1, 2026
393d631
feat(call): add validated RTP framing
sshturbo Aug 1, 2026
a1dd0dd
feat(call): add authenticated SRTP session
sshturbo Aug 1, 2026
7865cd0
test(call): cover RTP and authenticated SRTP
sshturbo Aug 1, 2026
adfca35
fix(call): reuse core buffer wipe helper
sshturbo Aug 1, 2026
61ce87b
feat(call): derive SRTP keying from private call state
sshturbo Aug 1, 2026
948f9cb
feat(call): add per-call RTP SRTP packet registry
sshturbo Aug 1, 2026
bab19a8
feat(call): expose per-call relay broadcast
sshturbo Aug 1, 2026
ae4cf18
feat(call): connect RTP SRTP sessions to relay lifecycle
sshturbo Aug 1, 2026
a373d0f
test(call): validate per-call RTP SRTP registry
sshturbo Aug 1, 2026
dc9b724
test(call): verify private SRTP key derivation
sshturbo Aug 1, 2026
de8e35a
fix(call): synchronize RTP SRTP packet teardown
sshturbo Aug 1, 2026
101ba00
test(call): cover concurrent SRTP packet teardown
sshturbo Aug 1, 2026
51d2816
docs(call): document RTP SRTP packet pipeline
sshturbo Aug 1, 2026
e8d25b6
chore(call): stage MLow codec port
sshturbo Aug 1, 2026
dafa3c4
chore(call): run MLow codec port
sshturbo Aug 1, 2026
21d092f
fix(call): include embedded MLow tables
sshturbo Aug 1, 2026
9f0928a
feat(call): port pure Go MLow audio codec
github-actions[bot] Aug 1, 2026
844f5a1
feat(call): add PCM codec pipeline
sshturbo Aug 1, 2026
a603321
test(call): cover PCM codec pipeline
sshturbo Aug 1, 2026
60d7ba3
feat(call): connect PCM codec pipeline to call lifecycle
sshturbo Aug 1, 2026
18730cf
docs(call): document MLow PCM pipeline
sshturbo Aug 1, 2026
7c7b68a
docs(call): clarify internal audio readiness
sshturbo Aug 1, 2026
f663d3a
docs(call): keep PCM pipeline documentation synchronized
sshturbo Aug 1, 2026
d1348b1
feat(call): add bounded RTP jitter buffer
sshturbo Aug 1, 2026
3c4acb6
test(call): cover jitter ordering and loss concealment
sshturbo Aug 1, 2026
2687710
fix(call): harden jitter rollover and timestamp tracking
sshturbo Aug 1, 2026
ab2724b
chore(call): stage audio jitter integration
sshturbo Aug 1, 2026
a0edc1a
chore(call): run audio jitter integration
sshturbo Aug 1, 2026
ae636f3
feat(call): route decoded audio through jitter playout
sshturbo Aug 1, 2026
7b66154
test(call): cover jittered PCM playout
sshturbo Aug 1, 2026
78e5f17
chore(call): remove completed jitter migration helper
sshturbo Aug 1, 2026
bd7e37a
chore(call): remove completed jitter migration workflow
sshturbo Aug 1, 2026
0698543
fix(call): conceal only confirmed RTP gaps
sshturbo Aug 1, 2026
56cd3a3
test(call): align bounded PLC with confirmed gaps
sshturbo Aug 1, 2026
05248e5
docs(call): document jitter buffering and PLC
sshturbo Aug 1, 2026
66e5a67
chore(call): stage browser WebRTC PCM bridge migration
sshturbo Aug 1, 2026
e49ed69
chore(call): run browser WebRTC PCM bridge migration
sshturbo Aug 1, 2026
85fd460
feat(call): add browser WebRTC PCM contract
sshturbo Aug 1, 2026
0d06ea7
feat(call): add versioned browser PCM framing
sshturbo Aug 1, 2026
58ccf22
feat(call): keep browser bridge disabled by default
sshturbo Aug 1, 2026
e78ae48
feat(call): add Pion browser PCM bridge manager
sshturbo Aug 1, 2026
ceaaf1f
test(call): cover browser PCM framing
sshturbo Aug 1, 2026
3810aa2
test(call): verify default browser bridge remains disabled
sshturbo Aug 1, 2026
9873f7b
test(call): exercise browser WebRTC PCM loopback
sshturbo Aug 1, 2026
7b0d4f6
feat(call): connect browser PCM and media cleanup lifecycle
sshturbo Aug 1, 2026
0a1e60a
feat(call): notify browser media cleanup from relay lifecycle
sshturbo Aug 1, 2026
8ccf0ed
feat(call): expose authenticated browser WebRTC sessions
sshturbo Aug 1, 2026
11464d0
feat(call): add browser WebRTC API handlers
sshturbo Aug 1, 2026
59cffc0
feat(call): register authenticated browser WebRTC routes
sshturbo Aug 1, 2026
8440060
fix(call): preserve unrelated routes while adding WebRTC endpoints
sshturbo Aug 1, 2026
eaf7cc6
chore(call): remove browser bridge staging script
sshturbo Aug 1, 2026
7667ee8
chore(call): remove browser bridge staging workflow
sshturbo Aug 1, 2026
dc64876
docs(call): add browser microphone and playback example
sshturbo Aug 1, 2026
81c8137
docs(call): document authenticated browser WebRTC PCM bridge
sshturbo Aug 1, 2026
788086b
ci(call): build complete server with and without Pion
sshturbo Aug 1, 2026
92fafe8
fix(routes): restore unlabel handler
sshturbo Aug 1, 2026
709ac79
feat(call): add fixed-port browser ICE networking
sshturbo Aug 2, 2026
b738976
test(call): cover fixed-port browser ICE networking
sshturbo Aug 2, 2026
f352239
feat(call): use shared fixed-port browser Pion API
sshturbo Aug 2, 2026
10bb6a1
docs(call): document public fixed-port browser ICE
sshturbo Aug 2, 2026
61d8d7a
build(call): allow Pion-tagged Docker images
sshturbo Aug 2, 2026
df65708
docs(call): add public WebRTC deployment guide
sshturbo Aug 2, 2026
02f06c0
Merge pull request #1 from sshturbo/dev/astracalls-integration
sshturbo Aug 2, 2026
a5915cc
feat(manager): add call panel styles
sshturbo Aug 2, 2026
af1ca62
feat(manager): add authenticated call panel
sshturbo Aug 2, 2026
f3dd63a
feat(manager): load call panel assets
sshturbo Aug 2, 2026
9eda037
ci(manager): validate call panel assets
sshturbo Aug 2, 2026
46241a1
docs(manager): explain integrated call panel
sshturbo Aug 2, 2026
9acf372
Merge pull request #2 from sshturbo/feat/manager-call-panel
sshturbo Aug 2, 2026
ba83a1f
fix(call): normalize relay participant device JIDs
sshturbo Aug 2, 2026
2d26815
fix(call): observe actual peer RTP SSRC
sshturbo Aug 2, 2026
d8bff74
fix(call): authenticate before adopting peer SSRC
sshturbo Aug 2, 2026
5e310f2
fix(call): adopt authenticated remote RTP SSRC
sshturbo Aug 2, 2026
591a25d
fix(call): refresh relay subscription for observed SSRC
sshturbo Aug 2, 2026
58f5ead
fix(call): prefer concrete remote relay device
sshturbo Aug 2, 2026
6975043
fix(call): derive SRTP from concrete peer device
sshturbo Aug 2, 2026
9a4205f
fix(call): subscribe relay with concrete peer device
sshturbo Aug 2, 2026
aa9b0bb
fix(call): refresh observed SSRC and log inbound media failures
sshturbo Aug 2, 2026
781a8e1
fix(call): query incoming accept acknowledgements
sshturbo Aug 2, 2026
daf2430
fix(call): resolve LID peers and preserve phone numbers
sshturbo Aug 2, 2026
3dd2f84
fix(call): drain accept ACK without delaying relay startup
sshturbo Aug 2, 2026
963fbbd
test(call): cover authenticated peer SSRC adoption
sshturbo Aug 2, 2026
b5acb6a
test(call): cover peer device fallback and normalization
sshturbo Aug 2, 2026
fa49987
test(call): preserve peer number and classify caller hangup
sshturbo Aug 2, 2026
8cad972
fix(call): preserve dialed phone number in runtime
sshturbo Aug 2, 2026
cb55df0
fix(call): resolve peer LID before outgoing termination
sshturbo Aug 2, 2026
8f961fe
fix(call): prioritize remote call creator device
sshturbo Aug 2, 2026
085c7be
Merge pull request #3 from sshturbo/fix/call-inbound-audio-ssrc
sshturbo Aug 2, 2026
1bfa313
feat(call): add post-accept media signaling stanzas
sshturbo Aug 2, 2026
9c69b77
feat(call): send outgoing post-accept media signaling
sshturbo Aug 2, 2026
b319952
fix(call): retry relay subscriptions and complete accept
sshturbo Aug 2, 2026
0425ae3
test(call): cover post-accept signaling stanzas
sshturbo Aug 2, 2026
0499f36
fix(call): derive outgoing receive key from accepted peer account
sshturbo Aug 2, 2026
51c0795
test(call): cover outgoing SRTP receive JID selection
sshturbo Aug 2, 2026
360ecc9
fix(call): negotiate inbound SRTP key candidates
sshturbo Aug 2, 2026
2252611
fix(call): start relays on preaccept and activate once
sshturbo Aug 2, 2026
4c6c67c
test(call): cover SRTP receive key fallback
sshturbo Aug 2, 2026
1ffce9d
fix(call): preconnect relays without early media activation
sshturbo Aug 2, 2026
d200edd
test(call): cover safe relay preconnection
sshturbo Aug 2, 2026
f02adea
fix(call): serialize relay media activation
sshturbo Aug 2, 2026
850e5a8
feat(call): add WhatsApp RTP DEBE extension
sshturbo Aug 2, 2026
0b33a33
test(call): cover WhatsApp RTP extension
sshturbo Aug 2, 2026
a1796bb
fix(call): preserve SRTP receive candidate JIDs
sshturbo Aug 2, 2026
8b3faad
test(call): align private SRTP derivation with candidates
sshturbo Aug 2, 2026
df7a93a
feat(call): capture peer call keys from accept
sshturbo Aug 2, 2026
c4ea2b2
feat(call): integrate peer call-key candidates
sshturbo Aug 2, 2026
4b99f75
fix(call): preserve peer key during SRTP refresh
sshturbo Aug 2, 2026
7ef8a16
test(call): cover peer-provided call key fallback
sshturbo Aug 2, 2026
28600e8
fix(call): harden peer call key handling
sshturbo Aug 2, 2026
dd9facb
test(call): cover peer call key candidate safety
sshturbo Aug 2, 2026
c76d242
fix(call): preserve peer key while refreshing SRTP
sshturbo Aug 2, 2026
1ef5eb0
test(call): preserve peer key during packet refresh
sshturbo Aug 2, 2026
cdff518
test(call): adapt peer key candidate list
sshturbo Aug 2, 2026
35ce52b
test(call): use distinct call key peer identities
sshturbo Aug 2, 2026
65b2d34
test(call): match normalized peer-key JID
sshturbo Aug 2, 2026
48ef185
test(call): use valid peer candidate fixtures
sshturbo Aug 2, 2026
3cf82d4
fix(call): serialize peer key observer replacement
sshturbo Aug 2, 2026
b00a93a
fix(call): make post-accept signaling idempotent
sshturbo Aug 2, 2026
4d0d154
test(call): cover idempotent post-accept signaling
sshturbo Aug 2, 2026
7dabedb
test(call): cover concurrent duplicate accepts
sshturbo Aug 2, 2026
9e2c69e
fix(call): scope peer key cleanup to active client
sshturbo Aug 2, 2026
4c6f839
test(call): protect replacement keys from stale clients
sshturbo Aug 2, 2026
5ff264b
refactor(call): reuse post-accept socket adapter
sshturbo Aug 2, 2026
db8a776
test(call): exercise shared post-accept socket
sshturbo Aug 2, 2026
5782c6e
fix(call): retry post-accept signaling with backoff
sshturbo Aug 2, 2026
4265d95
test(call): cover automatic post-accept retries
sshturbo Aug 2, 2026
a521ff1
feat(call): prepare validated accept receipt builder
sshturbo Aug 2, 2026
a281bac
test(call): validate accept receipt stanza
sshturbo Aug 2, 2026
43fba9d
feat(call): add runtime negotiation watchdog
sshturbo Aug 2, 2026
b35a90b
feat(call): arm watchdog from runtime transitions
sshturbo Aug 2, 2026
b08e2f6
feat(call): clean media resources on watchdog timeout
sshturbo Aug 2, 2026
d67fb28
test(call): cover negotiation watchdog lifecycle
sshturbo Aug 2, 2026
807352c
fix(call): close video child iteration
sshturbo Aug 2, 2026
69c000e
fix(call): keep watchdog deadline across duplicate events
sshturbo Aug 2, 2026
7e67b06
test(call): keep watchdog deadline across duplicate states
sshturbo Aug 2, 2026
f3a1120
chore(manager-v2): start new frontend foundation
sshturbo Aug 2, 2026
fa774d7
feat(manager-v2): add standalone React call workspace
sshturbo Aug 2, 2026
9f46d74
feat(manager-v2): add messaging API client
sshturbo Aug 2, 2026
e791fe9
feat(manager-v2): add messaging and contacts workspaces
sshturbo Aug 2, 2026
1170462
style(manager-v2): add messaging workspace styles
sshturbo Aug 2, 2026
6889afc
style(manager-v2): load messaging styles
sshturbo Aug 2, 2026
1ac2c0b
feat(manager-v2): connect messaging to application shell
sshturbo Aug 2, 2026
90c18dc
feat(manager-v2): add static frontend routes
sshturbo Aug 2, 2026
5d7d706
build(manager-v2): compile frontend in Docker image
sshturbo Aug 2, 2026
571e61d
feat(manager-v2): register frontend route
sshturbo Aug 2, 2026
e0aec5c
ci(manager-v2): validate embedded frontend route
sshturbo Aug 2, 2026
11913b9
docs(manager-v2): document messaging and deployment
sshturbo Aug 2, 2026
776c125
test(manager-v2): validate static route registration
sshturbo Aug 2, 2026
cbc257e
ci(manager-v2): test static route registration
sshturbo Aug 2, 2026
26ec163
fix(manager-v2): preserve label route handlers
sshturbo Aug 2, 2026
4569d85
refactor(manager-v2): support API lab connections
sshturbo Aug 2, 2026
abffc25
feat(manager-v2): add complete API laboratory
sshturbo Aug 2, 2026
05aed57
feat(manager-v2): add session connection workspace
sshturbo Aug 2, 2026
adccb72
refactor(manager-v2): isolate call test workspace
sshturbo Aug 2, 2026
8096135
refactor(manager-v2): focus panel on API testing
sshturbo Aug 2, 2026
8fb254d
style(manager-v2): add API lab and session layouts
sshturbo Aug 2, 2026
9acda08
style(manager-v2): load API laboratory styles
sshturbo Aug 2, 2026
987d18c
fix(manager-v2): simplify API client construction
sshturbo Aug 2, 2026
b6fe047
refactor(manager-v2): remove inbox-oriented workspace
sshturbo Aug 2, 2026
33ceaf7
style(manager-v2): remove inbox-specific styles
sshturbo Aug 2, 2026
586bcab
feat(manager-v2): catalog every public API route
sshturbo Aug 2, 2026
18d80f7
refactor(manager-v2): use full editable API catalog
sshturbo Aug 2, 2026
2426b0a
style(manager-v2): refine API editor layout
sshturbo Aug 2, 2026
8efc649
style(manager-v2): load custom API editor layout
sshturbo Aug 2, 2026
fd96dc3
test(manager-v2): verify API catalog route coverage
sshturbo Aug 2, 2026
211ceb7
test(manager-v2): add API catalog coverage command
sshturbo Aug 2, 2026
1e82718
ci: validate Manager V2 API catalog
sshturbo Aug 2, 2026
2351d56
docs(manager-v2): describe session manager and API lab
sshturbo Aug 2, 2026
a3b1a21
fix(manager-v2): allow admin-only API setup
sshturbo Aug 2, 2026
31df00e
feat(manager-v2): create instance from session page
sshturbo Aug 2, 2026
b8a1398
Merge pull request #5 from sshturbo/feat/manager-v2-foundation
sshturbo Aug 4, 2026
651a1fd
feat(manager-v2): add guided messaging payload editor
sshturbo Aug 4, 2026
de9d6d0
style(manager-v2): add guided request editor styles
sshturbo Aug 4, 2026
dd32b4d
feat(manager-v2): integrate guided messaging tests
sshturbo Aug 4, 2026
109dc48
fix(manager-v2): preserve complex guided payloads
sshturbo Aug 4, 2026
da91c02
style(manager-v2): show guided JSON draft errors
sshturbo Aug 4, 2026
eacda8d
feat(manager-v2): add request preset storage
sshturbo Aug 4, 2026
192977c
style(manager-v2): add request preset panel
sshturbo Aug 4, 2026
6bcb48d
feat(manager-v2): integrate reusable request presets
sshturbo Aug 4, 2026
2c5048e
Merge pull request #7 from sshturbo/feat/manager-v2-request-presets
sshturbo Aug 4, 2026
6e4996f
Merge pull request #6 from sshturbo/feat/manager-v2-foundation
sshturbo Aug 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions .github/workflows/manager-v2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Manager V2

on:
pull_request:
paths:
- manager-v2/**
- pkg/routes/**
- Dockerfile
- .github/workflows/manager-v2.yml
push:
branches:
- feat/manager-v2-foundation
paths:
- manager-v2/**
- pkg/routes/**
- Dockerfile
- .github/workflows/manager-v2.yml

permissions:
contents: read

jobs:
build-manager-v2:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "22.12"
cache: npm
cache-dependency-path: manager-v2/package.json

- name: Install dependencies
working-directory: manager-v2
run: npm install --no-audit --no-fund

- name: Typecheck
working-directory: manager-v2
run: npm run typecheck

- name: Validate API catalog coverage
working-directory: manager-v2
run: npm run check:catalog

- name: Build frontend
working-directory: manager-v2
run: npm run build

- name: Validate embedded route
run: |
test -f manager-v2/dist/index.html
grep -q registerManagerV2Routes pkg/routes/routes.go
grep -q /manager-v2/assets pkg/routes/manager_v2.go
grep -q manager-v2-build Dockerfile

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true

- name: Test Manager V2 routes
run: go test ./pkg/routes

- name: Build server
run: go build -o /tmp/evolution-go-manager-v2 ./cmd/evolution-go
57 changes: 57 additions & 0 deletions .github/workflows/voip-integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: VoIP integration

on:
push:
branches:
- dev/astracalls-integration
- feat/manager-call-panel
pull_request:
paths:
- "cmd/evolution-go/main.go"
- "pkg/call/**"
- "pkg/routes/routes.go"
- "manager/dist/**"
- "go.mod"
- "go.sum"
- ".github/workflows/voip-integration.yml"

permissions:
contents: read

jobs:
test-call-module:
runs-on: ubuntu-latest
timeout-minutes: 20

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true

- name: Validate Manager call panel
run: |
node --check manager/dist/assets/call-manager.js
grep -q '/assets/call-manager.css' manager/dist/index.html
grep -q '/assets/call-manager.js' manager/dist/index.html
grep -q 'evolution-call-pcm' manager/dist/assets/call-manager.js
grep -q '/call/status' manager/dist/assets/call-manager.js

- name: Download dependencies
run: go mod download

- name: Test default call build
run: go test -race ./pkg/call/...

- name: Test experimental Pion relay build
run: go test -race -tags=voip_pion ./pkg/call/...

- name: Build default server
run: go build -o /tmp/evolution-go-default ./cmd/evolution-go

- name: Build experimental Pion server
run: go build -tags=voip_pion -o /tmp/evolution-go-pion ./cmd/evolution-go
14 changes: 13 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
FROM node:22-alpine AS manager-v2-build

WORKDIR /manager-v2
COPY manager-v2/package.json ./
RUN npm install --no-audit --no-fund
COPY manager-v2/ ./
RUN npm run typecheck && npm run build

FROM golang:1.25.0-alpine AS build

RUN apk update && apk add --no-cache git build-base libjpeg-turbo-dev libwebp-dev
Expand All @@ -15,7 +23,10 @@ RUN go mod download
COPY . .

ARG VERSION=dev
RUN CGO_ENABLED=1 go build -ldflags "-X main.version=${VERSION}" -o server ./cmd/evolution-go
# Mantém a imagem padrão sem tags. Para habilitar chamadas com Pion, use:
# docker build --build-arg GO_BUILD_TAGS=voip_pion ...
ARG GO_BUILD_TAGS=""
RUN CGO_ENABLED=1 go build -tags "${GO_BUILD_TAGS}" -ldflags "-X main.version=${VERSION}" -o server ./cmd/evolution-go

FROM alpine:3.19.1 AS final

Expand All @@ -26,6 +37,7 @@ WORKDIR /app

COPY --from=build /build/server .
COPY --from=build /build/manager/dist ./manager/dist
COPY --from=manager-v2-build /manager-v2/dist ./manager-v2/dist
COPY --from=build /build/VERSION ./VERSION

ENV TZ=America/Sao_Paulo
Expand Down
6 changes: 5 additions & 1 deletion cmd/evolution-go/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
_ "modernc.org/sqlite"

call_handler "github.com/evolution-foundation/evolution-go/pkg/call/handler"
call_lifecycle "github.com/evolution-foundation/evolution-go/pkg/call/lifecycle"
call_service "github.com/evolution-foundation/evolution-go/pkg/call/service"
chat_handler "github.com/evolution-foundation/evolution-go/pkg/chat/handler"
chat_service "github.com/evolution-foundation/evolution-go/pkg/chat/service"
Expand Down Expand Up @@ -179,6 +180,9 @@ func setupRouter(db *gorm.DB, authDB *sql.DB, sqliteDB *sql.DB, config *config.C
natsProducer,
loggerWrapper,
)
callCoordinator := call_lifecycle.NewCoordinator()
whatsmeowService.SetClientLifecycle(callCoordinator)

instanceService := instance_service.NewInstanceService(
instanceRepository,
killChannel,
Expand All @@ -192,7 +196,7 @@ func setupRouter(db *gorm.DB, authDB *sql.DB, sqliteDB *sql.DB, config *config.C
messageService := message_service.NewMessageService(clientPointer, messageRepository, whatsmeowService, loggerWrapper)
chatService := chat_service.NewChatService(clientPointer, whatsmeowService, loggerWrapper)
groupService := group_service.NewGroupService(clientPointer, whatsmeowService, loggerWrapper)
callService := call_service.NewCallService(clientPointer, whatsmeowService, loggerWrapper)
callService := call_service.NewCallService(clientPointer, whatsmeowService, loggerWrapper, callCoordinator)
communityService := community_service.NewCommunityService(clientPointer, whatsmeowService, loggerWrapper)
labelService := label_service.NewLabelService(clientPointer, whatsmeowService, labelRepository, loggerWrapper)
newsletterService := newsletter_service.NewNewsletterService(clientPointer, whatsmeowService, loggerWrapper)
Expand Down
Loading