Viseron
Self-hosted, local-only NVR and AI computer vision software
Alternative to: ring, nest, wyze
v3.4.0
2025-12-12The biggest change in this release is the new look and feel of the frontend, done by @kaburagisec. There are no radical changes, but they still make a big difference.
I urge you to browse around in the UI and see for yourself, but here are a few highlights of these changes:
-
First of all, the font has been updated to use
IBM Plex Sans -
IBM Carbon Iconsis used for icons -
The
Recordingspage has gotten new filtering options for date and detection type: -
Each camera card on the frontpage now shows the cameras uptime
-
You can now zoom and pan in the Live view, as well as changing the order of cameras:
https://github.com/user-attachments/assets/a87d0588-a968-4563-98bb-1909997020d8
- Changing between a number of layouts is now also possible, allowing you to focus on specific cameras:
https://github.com/user-attachments/assets/6091b5a6-a318-44e9-8e3d-c8587628ed0e
- You can also save layouts and camera selection in order to quickly recall them:
https://github.com/user-attachments/assets/6c23d1f8-246e-4b47-9b73-c74012df1e2b
Changes were also made to the docs frontpage and the components explorer, giving them a more modern look.
New features
- Adds support for public image URL’s for the
webservercomponents. This system can be used by any notification component that needs to share images externally. - Adds public image support to
gotify - New config option
drainfor storage tiers. When enabled, all files in the tier are moved when a limit is reached, reducing stress on disks - Subpath/base path support. You can now host Viseron using a base path in a reverse proxy. See the docs for more information
Changes
- When clicking on the timeline, the HLS player will now load the stream starting one hour before the requested time. This allows you to seek backwards a bit to get some context before the requested timestamp.
- When using multiple tiers, files in HLS playlists will now always point to the first tier in order to not break HLS specifications. A hint that points to the correct tier is provided to the backend via query parameters.
- Hailo component now runs in shared mode, meaning other applications can use the device at the same time as Viseron.
- Upgrade to React 19
- React Compiler is now used, resulting in better performance of the frontend
- Upgrade Eslint to v9
- Upgrade MUI to v7
- Migrate from onvif-zeep to onvif-python library
- The Telegram component has been refactored in order to further decouple it from the PTZ component.
Fixes
- Fix link to configuration from a failed cameras card
- Better handling of color mode selection resulting in fewer re-renders
- Improve performance on the Events timeline view by doing 2 things:
- Only load thumbnails when scrolling stops
- Avoid rerenders of all items when available timespans changes
- When using the Export button on the Events page, the selected start date wont be overridden when selecting a new end date and vice versa.
Docker images will be on Docker Hub shortly
All Changes
- build gpac in separate container by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1119
- allow multiple processes to share hailo device by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1120
- remove unused tenacity dep in requirements.txt by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1121
- ignore error in UniversalPackages by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1122
- upgrade hls.js to 1.6.13 by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1124
- Frontend dependency upgrades by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1127
- enable react compiler by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1128
- Timeline performance improvements by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1129
- HLS playback improvements by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1131
- feat(webserver): Add public image URL system with token-based access by @InterN0te in https://github.com/roflcoopter/viseron/pull/1125
- Migrate from onvif-zeep to onvif-python library by @kaburagisec in https://github.com/roflcoopter/viseron/pull/1135
- upgrade node to 22.20.0 by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1141
- feat(storage): add ‘drain’ option to tier configuration by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1140
- get libhailort from docker instead of azure in ci by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1143
- pin hls files to first tier by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1142
- Update launch.json to use debugpy instead of python for debugging configurations by @kaburagisec in https://github.com/roflcoopter/viseron/pull/1145
- feat: reverse proxy subpath support by @neagix in https://github.com/roflcoopter/viseron/pull/1136
- update webserver config.json by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1148
- frontend: dont override selected dates in export dialog by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1149
- Add database readiness check and retry mechanism by @kaburagisec in https://github.com/roflcoopter/viseron/pull/1146
- Several UI/UX Improvements by @kaburagisec in https://github.com/roflcoopter/viseron/pull/1150
- feat(gotify): Add public URL support and configurable image quality by @InterN0te in https://github.com/roflcoopter/viseron/pull/1126
- Refactor of Telegram component by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1160
- fix: use reverse proxy subpath also on 404 page by @neagix in https://github.com/roflcoopter/viseron/pull/1161
- Several Docs Improvements by @kaburagisec in https://github.com/roflcoopter/viseron/pull/1159
- Fix login form not showing when session expires by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1173
- make sure players in grid are always centered by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1175
- 3.4.0 by @roflcoopter in https://github.com/roflcoopter/viseron/pull/1176
New Contributors
- @kaburagisec made their first contribution in https://github.com/roflcoopter/viseron/pull/1135
- @neagix made their first contribution in https://github.com/roflcoopter/viseron/pull/1136
Full Changelog: https://github.com/roflcoopter/viseron/compare/v3.3.1…v3.4.0