Releases: etiennecollin/unifi-voucher-manager
1.4.2
What's changed
Bumps frontend and backend dependencies to their latest versions
Important
Make sure to update to this latest version to not be vulnerable to the react/nextjs CVEs mentioned lower.
Chores
- Bumped crate versions for backend
- Replaced deprecated APIs of the reqwest crate.
- Bumped nextjs/react versions
- Fixes CVE-2025-55183, CVE-2025-55184 and CVE-2025-67779. Read more here: https://nextjs.org/blog/security-update-2025-12-11.
- Replaced
middleware.tswithproxy.tsaccording to nextjs 16 changes. - Updated
tsconfig.jsonaccording to nextjs 16 changes.
Full Changelog: 1.4.1...1.4.2
1.4.1
What's changed
A few bug fixes and QOL improvements
Caution
BREAKING CHANGES
- As mentioned in #12,
GUEST_SUBNETwas used in the code as an environment variable instead ofGUEST_SUBNETWORK. This was fixed. The variable to use isGUEST_SUBNETWORK. The README is up-to-date.
Features
- Time Units: Specify time in minutes, hours or days when creating a custom voucher. Closes #9 and #13.
- Quick Create Preset: Added a new "30 Days" preset for the Quick Create tab.
Fixes and Refactors
- Refactored Quick Create duration presets to be specified in days when over 24 hours.
- Fix layout issues with long passwords when printing vouchers. Closes #10.
- Fix guest subnetwork environment variable naming. Closes #12.
Full Changelog: 1.4.0...1.4.1
1.4.0
What's changed
Introducing automated guest voucher management with kiosk display and real-time cross-client updates!
Perfect for: Hotels, cafes, offices, co-working spaces, or anywhere you need automated guest WiFi access with minimal management overhead.
Features
Kiosk Mode
- Dedicated Kiosk Page (
/kiosk): Perfect for reception areas and unattended guest access - QR Code Integration: Guests can scan to connect directly to your WiFi network
- Auto-Generated Vouchers: Rolling vouchers are created automatically when needed
- Real-Time Display: Kiosk updates instantly when new vouchers are generated
Rolling Voucher System
- Dedicated Welcome Page (
/welcome): When a guest uses a voucher on the captive portal and is redirected to/welcome, a new one is automatically created for the next user - Smart Deduplication: IP-based voucher naming prevents abuse from page reloads
- Daily Cleanup: Expired rolling vouchers are automatically purged at midnight (timezone-aware)
- UniFi Integration: Works seamlessly with UniFi Controller hotspot redirects
Real-Time Updates Across All Clients
- Server-Sent Events (SSE): All open browser tabs and windows update automatically
- Cross-User Synchronization: Multiple users see changes instantly
- Reliable Connection Management: Automatic reconnection handling for stable updates
Security in Mind
- Network Isolation: Users on the guest subnetwork are restricted to the
/welcomepage using robust CIDR subnet filtering
Fixes and Refactors
Backend Enhancements
- Implemented server actions for broadcasting voucher updates
- Enhanced API error handling and URL encoding
- Backend cleanup and refactoring for better maintainability
Frontend Polish
- Modular WiFi QR code component for reusability
- Improved welcome page design and functionality
- Better responsive design for small screens
- Enhanced voucher cards and status displays
- Proper semantic HTML structure (
<main>tags)
Bug Fixes & Stability
- Fixed SSE reconnection issues during page reloads
- Resolved
crypto.randomUUID()compatibility for some devices - Fixed modal button sizing and positioning
- Better UI for unavailable QR codes
Setup Requirements
To use the new rolling voucher system, read Rolling Vouchers and Kiosk Page from the README.
Full Changelog: 1.3.1...1.4.0
1.3.1
What's changed?
Fixes
- If the backend fails to connect to the UniFi controller when fetching the controller ID, it now waits and retries. This resolves issues that occurred after a system reboot, where all services restart simultaneously and the controller (e.g., behind a reverse proxy) may not yet be fully available.
Full Changelog: 1.3.0...1.3.1
1.3.0
What's changed?
Features
- Added voucher Print flow: new print page & styles with
listandgridmodes and UI print buttons. - Global app context:
GlobalProvider/useGlobalfor theme + Wi-Fi QR. - Added
formatMaxGuests()utility.
Fixes
- Centralized Wi-Fi QR generation to avoid duplication.
- Corrected voucher click/selection behavior.
Refactors
- Replaced
CopyCodewithVoucherCode; theme & Wi-Fi logic moved intoGlobalContext. - Vouchers tab: improved filtering, selection state, batch delete, and added print actions.
SuccessModalnow takes{ voucher: Voucher }(not a raw code string).ThemeSwitcherusesuseGlobaltheme.
Other
- Bumped frontend dependencies
Full Changelog: 1.2.2...1.3.0
1.2.2
What's Changed
Fixes
- Fixed the issue from #3 where UniFi controllers accessed over HTTP returned the vouchers list under the
datafield (instead ofvouchers, as they do when using HTTPS).
Full Changelog: 1.2.1...1.2.2
1.2.1
What's Changed
Features
- Introduced a UNIFI_HAS_VALID_CERT option, which can be set to false for users connecting directly to their UniFi consoles via IP on port 443 without a reverse proxy (in this case, the certificate is self-signed). This closes #3.
- Improved requests error logging.
- Added runtime checks for protocol (
http:///https://) in the UNIFI_CONTROLLER_URL. - Improved default
compose.yamlfile.
Full Changelog: 1.2.0...1.2.1
1.2.0
What's Changed
Features
- Added WiFi QR code feature
- Accept
hiddenboolean astrue/falseor1/0and default tofalse - Improved test tab
- Added ability to get the ref of a modal container
- Added warning notification variant
Fixes
- Removed date formatting as it is handled in the backend
- Tabs offset from top now follows header height
- Dockerignore now correctly used
- Duplicate computations and renderings fixed
- Hydration issues with
wifiConfigfixed - Voucher cards now allow omitting
onClick - Button utility styling fixed
Refactors
- Do not hardcode valid wifi types
- Cleanup of
globals.css
Documentation
- Updated README with new
WIFI_*variables
Full Changelog: 1.1.0...1.2.0
1.1.0
What's Changed
Breaking Changes
- Renamed variable to control backend log level from
RUST_LOGtoBACKEND_LOG_LEVEL.
Full Changelog: 1.0.1...1.1.0
1.0.1
What's Changed
Features
Repository
- Added CI for docker build/push actions.
Backend
- Added support for loading
.envfiles to improve environment configuration flexibility.
Fixes
Frontend (Safari/iOS)
- Fixed a timeout delay issue before re-enabling transitions in Safari.
- Addressed scrolling and safe area issues on iOS devices.
- Removed debug logging related to Safari transitions.
Environment Handling
- Prevented the frontend from accessing sensitive UniFi environment variables by overriding them. I am not sure if that was truly a bug, but this should prevent a future vulnerability (?).
Style
- Fixed Docker Compose image quoting to align with style standards.
Full Changelog: 1.0.0...1.0.1