Skip to content

Releases: haemoolpa-jeon/styx-oss

V1.5.3 - Beta

16 Jan 08:59

Choose a tag to compare

V1.5.2 - Alpha

05 Jan 00:20

Choose a tag to compare

Styx v1.5.2 Release Notes

Release Date: December 30, 2024

Overview

Code modularization and quality improvements. This release focuses on better code organization, improved maintainability, and theme consistency fixes.

Code Modularization

Extracted 9 modules from app.js for better maintainability:

Module Lines Description
utils.js 55 Quality grade, error messages, formatTime
toast.js 23 Toast notifications
accessibility.js 144 Accessibility settings, screen reader support
recording.js 208 Multitrack, loopback, mixdown recording
sync.js 144 Sync mode, device latency calibration
sound.js 37 Join/leave notification sounds
theme.js 35 Dark/light theme management
tuner.js 78 Instrument tuner with pitch detection
keyboard.js 301 Keyboard shortcuts system

Result: app.js reduced from 6,361 to 5,497 lines (-864 lines, -13.6%)

Bug Fixes

  • Socket Handler Duplication: Fixed duplicate peer-latency handler registration on socket reconnect
  • Module Variable References: Fixed undefined variable references after modularization (tunerCtx, tunerInterval, multitrackMode, loopbackMode)
  • Memory Leaks: Added proper cleanup for module AudioContexts (cleanupTuner, cleanupSound)
  • Keyboard Shortcuts: Auto-initialize on DOMContentLoaded, added default action handlers
  • Global Variable Access: Use Object.defineProperties for dynamic access to app.js variables from modules

Theme Improvements

  • Added background/color to base form elements (input, select, textarea)
  • Fixed tuner in-tune colors to use CSS variables
  • Fixed whitelist/user management button colors for theme consistency
  • Fixed notification badge color
  • Added light mode specific backgrounds for pending/approved users

Technical Details

Module Architecture

  • Modules export via window.StyxModuleName pattern
  • app.js imports using destructuring with fallback: const { fn } = window.StyxModule || {}
  • Global variables exposed via getters for dynamic access
  • Cleanup functions called in leaveRoom() to prevent memory leaks

Files Modified

  • /shared/client/app.js - Main application (modularized)
  • /shared/client/*.js - 9 new module files
  • /shared/client/index.html - Script load order
  • /shared/client/style.css - Theme consistency fixes

Upgrade Notes

  • No breaking changes
  • Desktop app rebuild required for version update
  • Server automatically serves new client files

Known Issues

  • None

Full changelog available in git history

V1.5.1 - Alpha

30 Dec 05:47

Choose a tag to compare

Styx v1.5.1 Release Notes

Release Date: 2024-12-30

Overview

v1.5.1 is a patch release with bug fixes, code quality improvements, and audio enhancements.

Changes

Bug Fixes

  • Peer card display - Web browser now shows other users' cards (spectator mode)
  • peer.pc.close() - Fixed null safety for fake PC objects in web mode
  • Input meter - Now works in web browser (was Tauri-only)
  • Recording button - Shows icon only, no text overflow
  • Diagnostics modal - Fixed data collection for latency/jitter charts
  • Duplicate jitter control - Removed from toolbar (kept in advanced panel)
  • Template dropdown - Fixed dark/light mode styling
  • BPM spinner - Fixed theme-aware styling

Audio Improvements

  • Sync Mode - Added device latency calibration using loopback test
  • PLC Enhancement - Added fade-out for consecutive packet losses (Rust)
  • Latency measurement - Now includes estimated device latency

Code Quality

  • Added debug logging to 22 empty catch blocks
  • Extracted constants (SAMPLE_RATE, intervals)
  • Multiple null safety improvements

Upgrade Notes

Desktop app requires rebuild for PLC improvements:

cd styx-desktop/src-tauri
cargo tauri build

Files Changed

  • package.json - Version bump
  • shared/client/app.js - Bug fixes, improvements
  • shared/client/style.css - UI fixes
  • shared/client/index.html - Cache version
  • styx-desktop/src-tauri/src/peer.rs - PLC fade-out

V1.4.1 - Alpha

29 Dec 00:13

Choose a tag to compare

오류 수정

V1.4.0 - Alpha

24 Dec 01:13

Choose a tag to compare

Styx v1.4.0 릴리즈 노트

릴리즈 날짜: 2024-12-24

🎯 주요 변경 사항

TURN 서버 수정 (Critical)

  • TURN 인증 문제 해결 - 이제 NAT/방화벽 뒤에서도 연결 가능
  • 네트워크 테스트에서 TURN 상태 표시 추가
  • 직접 연결 실패 시 자동으로 TURN 릴레이 사용

네트워크 테스트 개선

  • 연결 상태를 더 명확하게 표시:
    • ✓ 직접 연결 - 최적의 지연 시간
    • ✓ TURN 릴레이 - 연결 가능하지만 지연 증가
    • ✗ 연결 실패 - 방화벽 확인 필요

📊 예상 지연 시간 (Latency)

연결 방식 예상 지연 시간 사용 사례
UDP 직접 (같은 네트워크) 5-15ms 같은 공유기 사용
UDP 릴레이 (서버 경유) 20-50ms 일반적인 가정용 인터넷
TURN 릴레이 50-100ms NAT/방화벽 뒤
TCP 폴백 80-150ms UDP 완전 차단 시

지연 시간에 영향을 주는 요소

  • 물리적 거리: 서버(서울 AWS)와의 거리
  • 네트워크 품질: 패킷 손실, 지터
  • NAT 유형: Full Cone > Restricted > Symmetric
  • Wi-Fi vs 유선: 유선 연결 권장 (10-20ms 개선)

⚠️ 알려진 문제 및 해결 방법

1. 연결 테스트 실패

증상: 네트워크 테스트에서 "연결 실패" 표시

원인 및 해결:

원인 해결 방법
기업/학교 방화벽 IT 부서에 UDP 5000, 3478 포트 허용 요청
ISP 모뎀 직접 연결 공유기를 통해 연결 (NAT 필요)
Symmetric NAT TURN 자동 사용됨 (지연 증가)
모든 UDP 차단 VPN 사용 또는 모바일 핫스팟

2. 오디오가 들리지 않음

증상: 연결은 되지만 상대방 소리가 안 들림

해결:

  1. 출력 장치 확인 (설정 > 오디오 출력)
  2. 볼륨 슬라이더 확인 (0%가 아닌지)
  3. 브라우저 탭 음소거 해제
  4. 방 나갔다가 다시 입장

3. 내 소리가 전송 안됨

증상: 마이크 레벨 미터가 움직이지 않음

해결:

  1. 마이크 권한 허용 확인
  2. 입력 장치 선택 확인
  3. 음소거 버튼 확인 (🔇 → 🎤)
  4. PTT 모드 확인 (Space 키 누르고 말하기)

4. 끊김/지연 심함

증상: 오디오가 끊기거나 지연이 큼

해결:

  1. 유선 연결 사용
  2. 지터 버퍼 증가 (설정 > 50-100ms)
  3. 비트레이트 낮추기 (96k → 64k)
  4. 다른 네트워크 시도

🧪 테스트 가이드

사전 요구사항

  • Styx Desktop 앱 (Windows/Mac)
  • 마이크 및 스피커/헤드폰
  • 인터넷 연결

테스트 절차

1단계: 연결 테스트

  1. 앱 실행 후 로그인
  2. 로비에서 🔍 연결 테스트 버튼 클릭
  3. 결과 확인:
    • ✓ 마이크: 마이크 인식됨
    • ✓ 스피커: 비프음 들림
    • ✓ 서버 연결: 직접 연결 또는 TURN 릴레이

2단계: 오디오 테스트

  1. 🎤 마이크 버튼 클릭
  2. 말하면서 레벨 미터 확인
  3. 레벨이 움직이면 정상

3단계: 방 입장 테스트

  1. 방 생성 또는 기존 방 입장
  2. 상대방과 대화 테스트
  3. 지연시간 확인 (우측 상단 통계)

4단계: 기능 테스트

기능 테스트 방법 예상 결과
음소거 M 키 또는 🎤 버튼 아이콘 변경, 상대방에게 안 들림
메트로놈 ▶️ 버튼 모든 참가자에게 동기화된 박자
녹음 ⏺️ 버튼 녹음 후 .webm 파일 다운로드
화면 공유 🖥️ 버튼 상대방에게 화면 표시

문제 발생 시

  1. 브라우저 콘솔 (F12) 에러 확인
  2. 서버 로그 확인: pm2 logs styx
  3. GitHub Issue 등록

🔧 기술 스택

  • 오디오 코덱: Opus (48kHz, 스테레오, 64-128kbps)
  • 전송: UDP 릴레이 (서버 경유)
  • 시그널링: Socket.IO (WebSocket)
  • NAT 통과: STUN + TURN (coturn)
  • 데스크톱: Tauri 2.0 + Rust
  • 서버: Node.js + AWS Lightsail

📝 이전 버전에서 업그레이드

v1.3.0에서 업그레이드 시:

  1. 데스크톱 앱 재설치 (자동 업데이트 미지원)
  2. 브라우저 캐시 삭제 (Ctrl+Shift+R)
  3. 서버는 자동 배포됨

V1.3.0 - Alpha

23 Dec 05:53

Choose a tag to compare

Styx v1.3.0 릴리스 노트

릴리스 날짜: 2025년 12월 23일

🔴 중요 보안 업데이트

이번 릴리스는 8개의 중요한 보안 취약점을 수정한 필수 업데이트입니다. 모든 사용자는 즉시 업데이트하시기 바랍니다.

🛡️ 보안 수정사항

오디오 시스템 보안 강화

  • UDP 페이로드 검증 추가: 버퍼 오버런 공격 방지를 위한 엄격한 패킷 길이 검증
  • 정수 오버플로우 보호: 페이로드 길이 캐스팅 시 안전한 변환으로 데이터 손상 방지
  • 패킷 크기 검증: MAX_PACKET_SIZE(1500바이트) 제한으로 대용량 패킷 공격 차단
  • 오디오 스트림 오류 처리: is_running 플래그를 통한 적절한 실패 신호 전송
  • 버퍼 계산 수정: 48kHz 스테레오에서 200ms 버퍼링을 위한 19,200 샘플로 수정
  • 채널 구성 수정: UDP 패킷 헤더가 Opus 스테레오 구성(채널: 2)과 일치하도록 수정
  • 메모리 안전성: 안전하지 않은 메모리 작업을 안전한 오류 처리로 교체
  • 네트워크 복원력: UDP 작업에 대한 포괄적인 오류 처리 및 타임아웃 구성

애플리케이션 보안

  • 개발자 도구 비활성화: 프로덕션 환경에서 devtools 완전 비활성화
  • Tauri 권한 구성: 파일 액세스, HTTP 요청, 알림에 대한 적절한 권한 설정

🔧 시스템 개선사항

인증 및 접근 제어

  • bcrypt 암호 해싱: 10 솔트 라운드로 강화된 비밀번호 보안
  • 입력 검증: Zod 스키마를 통한 모든 사용자 입력 검증 (사용자명, 비밀번호, 방 설정)
  • 속도 제한: IP 기반 스로틀링 및 의심스러운 활동 감지
  • 감사 로깅: 로그인 시도, 관리자 작업, IP 차단 등 모든 보안 이벤트 기록

네트워크 보안

  • Helmet 보안 헤더: HTTP 보안 헤더 적용
  • CORS 구성: 적절한 교차 출처 리소스 공유 설정
  • IP 화이트리스트: 관리자 관리 기능이 있는 IP 접근 제어 시스템

규정 준수

  • GDPR 기능: 데이터 프라이버시를 위한 유럽 규정 준수 기능

🎵 오디오 품질 향상

  • 스테레오 오디오 지원: 완전한 스테레오 오디오 처리 및 전송
  • 지연 시간 최적화: 향상된 버퍼링 및 지터 제어
  • 오디오 장치 오류 처리: 장치 실패 시 적절한 오류 신호 및 복구

🌐 네트워크 안정성

  • UDP 릴레이 서버: 포트 3001에서 안정적인 UDP 오디오 전송
  • TCP 폴백 시스템: UDP가 차단된 경우 자동 TCP 폴백
  • 재연결 처리: 10회 시도, 1초 지연으로 강화된 재연결 로직
  • 연결 모니터링: 실시간 연결 상태 추적 및 UI 표시

🎨 사용자 경험 개선

  • 접근성 향상: 스크린 리더 지원, 고대비 모드, 키보드 탐색
  • 반응형 디자인: 다양한 화면 크기에 최적화된 UI
  • 오류 처리: 사용자 친화적인 오류 메시지 및 복구 옵션

🚀 성능 최적화

  • 메모리 사용량 최적화: 효율적인 버퍼 관리 및 메모리 정리
  • CPU 사용량 감소: 최적화된 오디오 처리 알고리즘
  • 네트워크 대역폭 효율성: 향상된 압축 및 패킷 관리

📋 기술적 세부사항

시스템 요구사항

  • Node.js: 18.0.0 이상
  • Rust: 1.77.2 이상
  • 운영체제: Windows 10+, macOS 10.15+, Linux (Ubuntu 20.04+)

호환성

  • 이전 버전과 완전 호환
  • 기존 사용자 계정 및 설정 유지
  • 자동 데이터베이스 마이그레이션

⚠️ 중요 공지

이번 업데이트는 중요한 보안 수정사항을 포함하고 있어 모든 사용자에게 필수입니다. 업데이트하지 않을 경우 보안 위험에 노출될 수 있습니다.

업데이트 방법

  1. Styx 애플리케이션을 종료합니다
  2. 새 버전을 다운로드하여 설치합니다
  3. 애플리케이션을 재시작합니다

🙏 감사의 말

이번 릴리스는 포괄적인 보안 감사와 시스템 검증을 통해 완성되었습니다. Styx를 더욱 안전하고 안정적인 플랫폼으로 만들기 위해 노력하고 있습니다.


전체 변경사항: GitHub 릴리스 페이지
문제 신고: GitHub Issues

V1.2.0 - Alpha

23 Dec 02:20

Choose a tag to compare

Styx v1.2.0 릴리스 노트

🎉 주요 개선사항

🎵 오디오 품질 향상

  • 스테레오 오디오 지원: 기존 모노에서 스테레오로 업그레이드하여 음질 대폭 개선
  • 동적 범위 압축: 사용자 간 자동 음량 균형 조절로 일관된 오디오 레벨 제공
  • 실시간 주파수 분석: 스펙트럼 분석기로 오디오 주파수 시각화
  • 오디오 라우팅 매트릭스: 스테레오/좌측/우측/모노 믹스 등 유연한 오디오 라우팅
  • 공간 오디오: 스테레오 패닝으로 몰입감 있는 오디오 경험
  • 노이즈 프로파일링: 사용자 환경을 학습하여 자동으로 노이즈 게이트 조절
  • AI 노이즈 제거: RNNoise WASM 기반 고급 노이즈 제거 (선택적 활성화)

🎛️ 전문 기능 추가

  • 향상된 키보드 단축키: 20개 이상의 포괄적인 단축키 시스템
  • 고급 오디오 이펙트: 3밴드 EQ, 딜레이, 압축 효과
  • 멀티트랙 녹음: 각 참가자를 개별 파일로 녹음
  • 화면 공유: getDisplayMedia를 활용한 화면/악보 공유
  • 역할 시스템: 호스트/연주자/청취자 역할 구분

👥 사용자 관리 개선

  • 사용자 승인 시스템: 관리자 승인 워크플로우로 향상된 보안
  • 관리자 패널 강화: 모니터링 및 로그 기능 추가
  • 전문적인 사용자 관리: 검색 및 제어 기능이 포함된 사용자 카드
  • 자체 통계 표시: 본인의 연결 상태 (지연시간, 대역폭, 패킷 손실) 확인

🔒 보안 및 성능 강화

  • 향상된 보안 로깅: 모든 보안 이벤트에 대한 감사 추적
  • GDPR 준수: 데이터 내보내기/삭제 기능으로 개인정보보호 강화
  • 고급 속도 제한: 의심스러운 IP 추적 및 자동 차단
  • 상태 모니터링: 메트릭 엔드포인트로 시스템 상태 실시간 확인
  • 대역폭 적응: 연결 품질에 따른 자동 품질 조절

♿ 접근성 및 사용자 경험

  • WCAG 2.1 AA 준수: 스크린 리더 지원 및 접근성 개선
  • 고대비 모드: 시각 장애인을 위한 고대비 테마
  • 전문적인 UI 개선: 애니메이션 및 마이크로 인터랙션 추가
  • 향상된 타이포그래피: 개선된 글꼴 및 간격 시스템

🛠️ 기술적 개선사항

오디오 엔진

  • JavaScript: 모든 getUserMedia 호출을 스테레오 (channelCount: 2)로 업데이트
  • Rust: Opus 인코더/디코더를 모노에서 스테레오로 변경
  • 48kHz 샘플레이트 유지로 지연시간 영향 없음

네트워킹

  • WebRTC 통계 수집으로 연결 품질 모니터링
  • 자동 비트레이트 조절로 네트워크 상태에 적응
  • 패킷 손실 및 지터 추적

보안

  • Helmet 보안 헤더 적용
  • 진보적 속도 제한 시스템
  • 포괄적인 보안 이벤트 로깅

📊 성능 최적화

  • 지연시간에 영향 없는 안전한 기능 구현
  • 효율적인 Web Audio API 활용
  • 실시간 처리 최적화

🎯 호환성

  • 기존 1.1.x 버전과 완전 호환
  • 모든 브라우저에서 정상 작동
  • Tauri 데스크톱 앱 지원

배포일: 2025년 12월 23일
다운로드: https://3-39-223-2.nip.io
GitHub: https://github.com/haemoolpa-jeon/styx-oss

V1.1.4 Release - Alpha

23 Dec 00:39

Choose a tag to compare

🎵 Styx v1.1.4 알파 릴리즈 노트

🚀 주요 기능 추가

🎙️ 멀티트랙 녹음

  • 각 참가자의 오디오를 개별 WebM 파일로 저장
  • 후편집 및 믹싱에 최적화
  • 방 툴바에서 토글 가능

🖥️ 화면/악보 공유

  • 화면이나 악보를 방 멤버들과 실시간 공유
  • 원클릭 화면 캡처 및 표시
  • 음악 레슨 및 협업에 최적

👑 역할 시스템

  • 호스트: 전체 제어, 다른 사용자 음소거 가능
  • 연주자: 오디오 송수신 모두 가능
  • 청취자: 수신 전용 모드 (관객용)
  • 자동 역할 할당 및 권한 관리

🎛️ 실시간 오디오 이펙트

  • 3밴드 EQ (저음/중음/고음) ±12dB 조절
  • 딜레이 이펙트 + 피드백 컨트롤
  • 연주 중 실시간 파라미터 조절
  • 제로 레이턴시 처리

🤖 AI 노이즈 제거 (선택사항)

  • AudioWorklet 기반 지능형 노이즈 게이트
  • 배경 소음 효과적 제거
  • 기본값 OFF (약 10ms 지연 추가)
  • 설정 및 방 툴바에서 토글

⚡ 핵심 성능 개선

🔧 UDP 릴레이 강화

  • 지터 버퍼: 패킷 순서 재정렬 처리 (10-200ms 설정 가능)
  • 오디오 믹싱: 다중 피어 오디오 적절한 합성 + 소프트 클리핑
  • 패킷 손실 보상: 네트워크 불안정 시 부드러운 오디오 유지
  • 비활성 클라이언트 정리: 30초 타임아웃으로 연결 끊긴 피어 제거
  • 전송 루프 최적화: 비동기 채널로 블로킹 감소

🎨 UI/UX 개선

  • 클릭 가능한 아바타: 호버 오버레이 + 일일 변경 제한
  • 단축키 오버레이: F1 또는 ? 키로 핫키 확인
  • 다운로드 배너: 웹 사용자에게 데스크톱 앱 홍보
  • 설정 동기화: 로비 설정이 방으로 자동 동기화
  • 모바일 수정: 모바일에서 오디오 컨트롤 표시

🔒 웹 사용자 경험

  • 브라우저 사용자용 오디오 설정 숨김
  • 데스크톱 앱 링크가 포함된 다운로드 배너
  • 브라우저 전용 관람자 모드
  • 원활한 폴백 경험

🐛 버그 수정

  • 로비 레이아웃을 깨뜨리는 여분의 태그 수정
  • CSS 변수 수정 (--text-primary, --border, --accent)
  • 중복 CSS 정의 제거
  • 서버 화이트리스트 함수의 fs.existsSync 오류 수정
  • 방 목록 브로드캐스트에 누락된 maxUsers 필드 추가
  • 비공개 방이 공개 목록에서 제대로 제외되도록 수정
  • GitHub 저장소 URL을 공개 styx-oss 저장소로 수정

🛠️ 기술 세부사항

  • 레이턴시: 핵심 릴레이 ~5-15ms, AI 노이즈 제거 시 +10ms
  • 오디오 품질: 48kHz 샘플레이트, opus 코덱
  • 호환성: Chrome/Edge 88+, Firefox 85+, Safari 14+
  • 플랫폼: Windows/Mac/Linux 데스크톱 앱 + 웹 브라우저

📋 향후 로드맵

  • VST 플러그인 호스팅 (데스크톱 앱)
  • 서버 사이드 믹싱 (대규모 방용 SFU 모드)