Alex P
|
0e040a9b54
|
Merge branch 'dev' into feat/multisession-support
This merge integrates the latest dev branch changes while preserving all
multi-session functionality. Key changes include:
## Dev branch changes integrated:
- Network stack refactoring: migrated from internal/network to pkg/nmlite
- New NetworkManager architecture with jetdhcpc client
- Function-based config pattern to avoid shared pointer bugs
- Reboot state management via WebSocket reconnection
- Updated UI components for network settings
- GitHub workflow and PR templates
## Multi-session functionality preserved:
- Updated RPC event broadcasting from single-session to multi-session
- network.go: Changed networkStateChanged to use broadcastJSONRPCEvent
- network.go: Changed willReboot event to broadcast to all sessions
- jsonrpc.go: Updated rpcReboot to broadcast willReboot event
- config.go: Retained MultiSession and SessionSettings fields
- devices.$id.tsx: Combined video rendering logic preserving nickname/pending state
## Conflict resolutions:
1. config.go: Combined multi-session fields with dev's network refactoring
2. network.go: Adopted dev's nmlite stack and updated multi-session broadcasts
3. devices.$id.tsx: Preserved conditional video rendering for multi-session UX
4. jsonrpc.go: Fixed undefined currentSession reference
All linters pass with 0 errors and 0 warnings.
|
2025-10-17 00:31:44 +03:00 |
Aveline
|
c775979ccb
|
feat: refactoring network stack (#878)
Co-authored-by: Adam Shiervani <adam.shiervani@gmail.com>
|
2025-10-15 18:32:58 +02:00 |
Alex P
|
cd70efb83f
|
feat: multi-session support with role-based permissions
Implements concurrent WebRTC session management with granular permission control, enabling multiple users to connect simultaneously with different access levels.
Features:
- Session modes: Primary (full control), Observer (view-only), Queued, Pending
- Role-based permissions (31 permissions across video, input, settings, system)
- Session approval workflow with configurable access control
- Primary control transfer, request, and approval mechanisms
- Grace period reconnection (prevents interruption on network issues)
- Automatic session timeout and cleanup
- Nickname system with browser-based auto-generation
- Trust-based emergency promotion (deadlock prevention)
- Session blacklisting (prevents transfer abuse)
Technical Implementation:
- Centralized permission system (internal/session package)
- Broadcast throttling (100ms global, 50ms per-session) for DoS protection
- Defense-in-depth permission validation
- Pre-allocated event maps for hot-path performance
- Lock-free session iteration with snapshot pattern
- Comprehensive session management UI with real-time updates
New Files:
- session_manager.go (1628 lines) - Core session lifecycle
- internal/session/permissions.go (306 lines) - Permission rules
- session_permissions.go (77 lines) - Package integration
- datachannel_helpers.go (11 lines) - Permission denied handler
- errors.go (10 lines) - Error definitions
- 14 new UI components (session management, approval dialogs, overlays)
50 files changed, 5836 insertions(+), 442 deletions(-)
|
2025-10-08 18:52:45 +03:00 |
Daniel Collins
|
ef95643a86
|
Implement HTTP proxy option (#515). (#521)
This commit adds a "Proxy" field to the network settings screen, which
can be used to specify a HTTP proxy for any outgoing requests from the
device.
|
2025-07-11 17:43:22 +02:00 |
Aveline
|
d704fcc6c7
|
feat: add command to show version (#604)
* feat: add -version flag for jetkvm_app
* move code to kvm package
|
2025-07-11 11:32:46 +02:00 |
Aveline
|
860327bfcd
|
chore: always return local version if update check fails (#485)
|
2025-05-20 14:57:57 +02:00 |
Aveline
|
189b84380b
|
network enhanecment / refactor (#361)
* chore(network): improve connectivity check
* refactor(network): rewrite network and timesync component
* feat(display): show cloud connection status
* chore: change logging verbosity
* chore(websecure): update log message
* fix(ota): validate root certificate when downloading update
* feat(ui): add network settings tab
* fix(display): cloud connecting animation
* fix: golintci issues
* feat: add network settings tab
* feat(timesync): query servers in parallel
* refactor(network): move to internal/network package
* feat(timesync): add metrics
* refactor(log): move log to internal/logging package
* refactor(mdms): move mdns to internal/mdns package
* feat(developer): add pprof endpoint
* feat(logging): add a simple logging streaming endpoint
* fix(mdns): do not start mdns until network is up
* feat(network): allow users to update network settings from ui
* fix(network): handle errors when net.IPAddr is nil
* fix(mdns): scopedLogger SIGSEGV
* fix(dhcp): watch directory instead of file to catch fsnotify.Create event
* refactor(nbd): move platform-specific code to different files
* refactor(native): move platform-specific code to different files
* chore: fix linter issues
* chore(dev_deploy): allow to override PION_LOG_TRACE
|
2025-04-16 01:39:23 +02:00 |
Siyuan Miao
|
0ba7902f82
|
chore: update logging
|
2025-04-11 12:55:36 +02:00 |
Siyuan Miao
|
6489421605
|
fix(ota): verifyFile missing arguments
|
2025-04-11 08:05:35 +02:00 |
Siyuan Miao
|
48a917fd76
|
chore(log): add otaLogger
|
2025-04-11 07:49:03 +02:00 |
Siyuan Miao
|
4c37f7e079
|
refactor: use structured logging
|
2025-04-11 00:43:46 +02:00 |
Siyuan Miao
|
652e845d83
|
fix(ota): certificate signed by unknown authority
|
2025-04-09 20:25:26 +02:00 |
Aveline
|
fa1b11b228
|
chore(ota): allow a longer timeout when downloading packages (#332)
|
2025-04-08 00:43:03 +02:00 |
SuperQ
|
34e33e45bf
|
Cleanup logging
Make sure all logging output is called via the main logger instead of
stdlib `"log"` or `fmt.Print(f|ln)`.
Signed-off-by: SuperQ <superq@gmail.com>
|
2025-03-11 16:53:54 +01:00 |
Adam Shiervani
|
20780b65db
|
Release 202412292127
|
2024-12-29 21:27:42 +01:00 |