New
- feat(frontend): refresh dark theme + redesign login page
- feat(inbounds): add sub/client link endpoints; hide panel version on login
- feat(panel): in-panel API documentation page
- feat(sidebar): pin Logout above trigger, inline 3-state theme cycle
- feat(inbounds): bulk-select clients + UX polish
- feat(xray/outbounds): TCP probe mode + Test All + timing breakdown
- feat(xray/nord): searchable server list + colored load tag, surface API errors
- feat(xray/balancer): restore observatory editor + auto-sync selectors
- feat(install): add skip-SSL option for reverse-proxy / SSH-tunnel setups
- feat(frontend): swap QRious for ant-design-vue's a-qrcode
Update & improvement
- refactor(panel): rename injected globals + collapse QR modal entries
- add loopback and dns servers tag to inbound lists in RuleFormModal @samssh
- chore: fix remarks shadowrocket subscription @harryngne
Bug fixed
- fix(xray): implement graceful shutdown for xray process and add tests @farhadh
- fix(inbounds): scope port check to node and preserve caller tag
- fix(theme): default to dark, polish theme cycle visibility and hover
- fix(inbounds): bulk-delete keeps last client to satisfy backend constraint
- fix(inbounds): paginate expanded client list, restore ID column, hide empty Remark
- fix(alpine): restart_xray uses rc-service; OpenRC reload reads pidfile contents
- fix(outbound): default VLESS encryption to "none"
- fix: backup path with webbasepath @GRCR13
- fix(fail2ban): escape % in 3x-ipl action date format
- fix(traffic-writer): replace sync.Once with Start/Stop cycle so SIGHUP restart works
Reports
Full Changelog: v3.0.0...v3.0.1