Releases: haemoolpa-jeon/styx-oss
V1.5.3 - Beta
Beta
V1.5.2 - Alpha
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-latencyhandler 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.StyxModuleNamepattern - 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
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 buildFiles Changed
package.json- Version bumpshared/client/app.js- Bug fixes, improvementsshared/client/style.css- UI fixesshared/client/index.html- Cache versionstyx-desktop/src-tauri/src/peer.rs- PLC fade-out
V1.4.1 - Alpha
오류 수정
V1.4.0 - Alpha
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. 오디오가 들리지 않음
증상: 연결은 되지만 상대방 소리가 안 들림
해결:
- 출력 장치 확인 (설정 > 오디오 출력)
- 볼륨 슬라이더 확인 (0%가 아닌지)
- 브라우저 탭 음소거 해제
- 방 나갔다가 다시 입장
3. 내 소리가 전송 안됨
증상: 마이크 레벨 미터가 움직이지 않음
해결:
- 마이크 권한 허용 확인
- 입력 장치 선택 확인
- 음소거 버튼 확인 (🔇 → 🎤)
- PTT 모드 확인 (Space 키 누르고 말하기)
4. 끊김/지연 심함
증상: 오디오가 끊기거나 지연이 큼
해결:
- 유선 연결 사용
- 지터 버퍼 증가 (설정 > 50-100ms)
- 비트레이트 낮추기 (96k → 64k)
- 다른 네트워크 시도
🧪 테스트 가이드
사전 요구사항
- Styx Desktop 앱 (Windows/Mac)
- 마이크 및 스피커/헤드폰
- 인터넷 연결
테스트 절차
1단계: 연결 테스트
- 앱 실행 후 로그인
- 로비에서
🔍 연결 테스트버튼 클릭 - 결과 확인:
- ✓ 마이크: 마이크 인식됨
- ✓ 스피커: 비프음 들림
- ✓ 서버 연결: 직접 연결 또는 TURN 릴레이
2단계: 오디오 테스트
🎤 마이크버튼 클릭- 말하면서 레벨 미터 확인
- 레벨이 움직이면 정상
3단계: 방 입장 테스트
- 방 생성 또는 기존 방 입장
- 상대방과 대화 테스트
- 지연시간 확인 (우측 상단 통계)
4단계: 기능 테스트
| 기능 | 테스트 방법 | 예상 결과 |
|---|---|---|
| 음소거 | M 키 또는 🎤 버튼 | 아이콘 변경, 상대방에게 안 들림 |
| 메트로놈 | 모든 참가자에게 동기화된 박자 | |
| 녹음 | ⏺️ 버튼 | 녹음 후 .webm 파일 다운로드 |
| 화면 공유 | 🖥️ 버튼 | 상대방에게 화면 표시 |
문제 발생 시
- 브라우저 콘솔 (F12) 에러 확인
- 서버 로그 확인:
pm2 logs styx - 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에서 업그레이드 시:
- 데스크톱 앱 재설치 (자동 업데이트 미지원)
- 브라우저 캐시 삭제 (Ctrl+Shift+R)
- 서버는 자동 배포됨
V1.3.0 - Alpha
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+)
호환성
- 이전 버전과 완전 호환
- 기존 사용자 계정 및 설정 유지
- 자동 데이터베이스 마이그레이션
⚠️ 중요 공지
이번 업데이트는 중요한 보안 수정사항을 포함하고 있어 모든 사용자에게 필수입니다. 업데이트하지 않을 경우 보안 위험에 노출될 수 있습니다.
업데이트 방법
- Styx 애플리케이션을 종료합니다
- 새 버전을 다운로드하여 설치합니다
- 애플리케이션을 재시작합니다
🙏 감사의 말
이번 릴리스는 포괄적인 보안 감사와 시스템 검증을 통해 완성되었습니다. Styx를 더욱 안전하고 안정적인 플랫폼으로 만들기 위해 노력하고 있습니다.
전체 변경사항: GitHub 릴리스 페이지
문제 신고: GitHub Issues
V1.2.0 - Alpha
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
🎵 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 모드)