feat: initial slash-sip-client — SIP.js core + branded UI (Phase 9, task #3 scaffold) #2

Merged
mohlec merged 1 commit from feat/initial-client into main 2026-07-07 11:01:55 +00:00
Contributor

Task #3 attempted per tonight's work order — scaffold + wrapper + UI + mock-validated registration, NOT the full task #3 DoD (which needs task #1's real FreePBX extension).

  • Core SoftphoneLine/Softphone per PRD spec; backoff mirrors the ntfy SSE precedent (5s→5m, reset on success)
  • Branded Dialer/IncomingCall/InCall/SoftphonePanel
  • Validated: WSS connect → REGISTER → 401 digest → authed REGISTER → 200 OK; wrong-password → failed (403); clean unregister. Against demo/mock-registrar.mjs — every public SIP.js WSS test endpoint is dead (onsip 400s the upgrade, tryit.jssip.net gone)
  • Unverified: anything FreePBX-specific, and all call/media paths (need real endpoint + browser WebRTC). Labeled in README + code comments.
  • CI runs build + the mock registration test.

Task #3's standalone-demo-page DoD stays open until #1 unblocks. Tracking: issue #1.

Task #3 attempted per tonight's work order — **scaffold + wrapper + UI + mock-validated registration**, NOT the full task #3 DoD (which needs task #1's real FreePBX extension). - Core `SoftphoneLine`/`Softphone` per PRD spec; backoff mirrors the ntfy SSE precedent (5s→5m, reset on success) - Branded `Dialer`/`IncomingCall`/`InCall`/`SoftphonePanel` - **Validated:** WSS connect → REGISTER → 401 digest → authed REGISTER → 200 OK; wrong-password → `failed (403)`; clean unregister. Against `demo/mock-registrar.mjs` — every public SIP.js WSS test endpoint is dead (onsip 400s the upgrade, tryit.jssip.net gone) - **Unverified:** anything FreePBX-specific, and all call/media paths (need real endpoint + browser WebRTC). Labeled in README + code comments. - CI runs build + the mock registration test. Task #3's standalone-demo-page DoD stays open until #1 unblocks. Tracking: issue #1.
feat: initial slash-sip-client — SIP.js core + branded UI (Phase 9, task #3)
All checks were successful
Build slash-sip-client / build (pull_request) Successful in 4s
bc18d0c3e4
Core: SoftphoneLine wrapping SIP.js UserAgent/Registerer — register,
reconnect with 5s->5m doubling backoff (mirrors NtfyPushService's SSE
precedent), placeCall/answer/hangup, DTMF via INFO, mute via RTCRtpSender;
Softphone multi-line manager + fetchLinesFromPlugin (slash-sip-plugin API).
UI: Dialer/IncomingCall/InCall/SoftphonePanel, NCW palette from Branding-KIT.

Verification: registration validated against a local mock SIP-over-WS
registrar with digest auth (public SIP.js demo endpoints are dead) —
happy path registers + clean unregister; bad password surfaces
'failed (REGISTER rejected: 403)'. FreePBX behavior UNVERIFIED pending
task #1 (blocked: no real test extension). Call/media paths unexercised.

Open Decision A honored: SIP.js (MIT), no Linphone SDK.
mohlec merged commit 8ec6d16750 into main 2026-07-07 11:01:55 +00:00
mohlec deleted branch feat/initial-client 2026-07-07 11:01:55 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
slash/slash-sip-client!2
No description provided.