Repository navigation
Releases: jamesccupps/UnifiCameraViewer
Release list
Protect Panes 1.4.4
UniFi Protect live view for Windows, one window per camera, across several consoles. Project page: https://jamesccupps.github.io/UnifiCameraViewer/
Fixes from a full review of the app, each checked by a test that failed before it.
Security
- Importing settings no longer changes where updates come from. The update location now stays as each PC has it, like Start with Windows. A settings file could otherwise point update checks at a network share. The app would open that share at every start, and Windows sends a share the user's network credentials. The signature check stopped fake updates, but not that.
- Imported settings are checked: only settings this version knows, each with the right kind of value. Anything else takes its default.
- Releases are now signed in a separate step that never runs the build's third-party tools, so none of them can read the signing key.
Fixes
- A minimized or hidden window of a UniFi Access door reader now stays paused. Video it had already queued used to reach the window, and the camera list showed it as live.
- Settings keep saving if
config.jsonis deleted while the app runs (by a sync tool or antivirus, say). Before, every save failed until a restart. - Import cleans up console addresses written as web addresses (
https://10.0.0.5/becomes10.0.0.5), the way Add console does. A file that has the same console twice brings it in once. - Import reads a settings file saved with a byte-order mark, as Windows PowerShell 5.1 saves UTF-8.
- A 360° view whose saved settings miss some values (a hand-edited file) gets them filled in, instead of staying blank.
- A camera whose stream keeps ending waits a few seconds before reconnecting, and says so, instead of reconnecting over and over.
- The camera list says in grid only for the camera a cycling tile is showing, not for the other cameras in its cycle.
Install or upgrade
- From 1.4.0, 1.4.1, 1.4.2 or 1.4.3: Settings → Updates → Check for updates, then Install. It's the small update.
- From 1.3.x: the same, but it downloads the full installer or zip.
- From 1.2.0 or 1.3.0 portable: quit the app (tray → Quit) and run
ProtectPanes-Setup.exe, or replace the folder with the zip. Your settings carry over. - New install: run
ProtectPanes-Setup.exe. It isn't code-signed, so Windows shows Windows protected your PC: click More info → Run anyway.
Files
ProtectPanes-Setup.exe: the installer.ProtectPanes-win32-x64.zip: the portable app.ProtectPanes-app.asar.gz: the small update, for copies already on this Electron version (1.4.0 and later).latest.json: the signed manifest the in-app updater reads. Its SHA-256 lines let you check the files by hand.
Protect Panes 1.4.3
UniFi Protect live view for Windows, one window per camera, across several consoles.
New
- Enlarge a grid tile. Double-click a tile in a grid window (or right-click → Enlarge this tile) to fill the window with that camera; double-click again, or Show all tiles, to go back. The hidden tiles pause until then.
- Import a Protect liveview as a grid. Import a Protect liveview… (Layouts tab) now opens the layout editor already filled in, with the same layout as Protect, 1 + 5 or 2 + 8 included, and each camera in its tile. It's set to open as one grid window, and you can still pick separate windows. Nothing is saved until you click Save. A Protect tile that cycles through several cameras keeps cycling in the grid window, on Protect's interval.
- Previews in the layout editor. Each camera in the editor's list has a thumbnail, and each tile you fill shows that camera's picture.
- Move to another PC. Settings → Export settings… saves your consoles, layouts, grid windows, window places and settings to a file. Import settings… on the other PC puts them in place and restarts the app.
- Passwords aren't in the file, since they're locked to your Windows account. Enter each console's password once on the new PC.
- A console that's already there with the same address and username keeps its password.
- UniFi Access door readers. Cameras on Access readers (seen on a UA G3 Pro) showed only black: Protect streams them differently from other cameras. They now play.
Security
- Each console's certificate is remembered. The first time the app connects after this update, it trusts the certificate each console presents. If that certificate later changes, the app stops connecting to that console and says so in the camera list, with a Trust the new certificate… button for when the change is expected (a reset or replaced console). Changing a console's address now asks for its password again.
- The app's own pages can't be navigated elsewhere, open other windows or get browser permissions. What they send the app is checked, and so are camera previews and update downloads.
Fixes
- Windows no longer grow a few pixels at every launch at 125 % or 150 % display scaling.
- Windows go back to their places when a monitor that was unplugged comes back.
config.jsonsurvives a power cut. A damaged one falls back to the copy from before the last save, instead of starting with no consoles.- A console whose login is refused while UniFi OS is starting keeps being retried, instead of giving up.
- A camera that goes offline stops being reconnected over and over while its window is open, and a stream that never starts backs off.
- A picture that freezes while video keeps arriving restarts on its own. So does a camera page that crashed.
- 360° views survive a graphics driver reset, and keep their image-circle calibration across layouts and grid tiles.
- The camera list no longer flickers or loses your place when it updates.
- Long names keep their room.
- It says when a camera is showing in a grid.
- Previews show the whole picture, including 360° cameras' round ones.
- Screen readers and the keyboard can use the tabs.
- Hide on a camera's row is now Hide from list.
- Reconnect stream now really reconnects a camera that's also in a grid tile.
Install or upgrade
- From 1.4.0, 1.4.1 or 1.4.2: Settings → Updates → Check for updates, then Install. It's the small update.
- From 1.3.x: the same, but it downloads the full installer or zip.
- From 1.2.0 or 1.3.0 portable: quit the app (tray → Quit) and run
ProtectPanes-Setup.exe, or replace the folder with the zip. Your settings carry over. - New install: run
ProtectPanes-Setup.exe. It isn't code-signed, so Windows shows Windows protected your PC: click More info → Run anyway.
Files
ProtectPanes-Setup.exe: the installer.ProtectPanes-win32-x64.zip: the portable app.ProtectPanes-app.asar.gz: the small update, for copies already on this Electron version (1.4.0 and later).latest.json: the signed manifest the in-app updater reads. Its SHA-256 lines let you check the files by hand.
Protect Panes 1.4.2
UniFi Protect live view for Windows, one window per camera, across several consoles.
New
- Aspect ratio for 360° views. Right-click a 360° camera → 360° view → Aspect ratio to choose the window's shape: 16:9 (the default, as before), 4:3, 3:2, 1:1, 21:9, or Any shape to size it freely. Quad, Single view and Panorama fill whatever shape you pick. It's saved per camera and kept in layouts. In a grid window the tile sets the shape, so the option isn't offered there.
Fix
- Fewer security alerts. Each time it started, Protect Panes cleared its Start with Windows entry in the registry, even when there was nothing to clear. Microsoft Defender can flag repeated changes to startup entries as Anomaly detected in ASEP registry. Now the app reads the entry first and changes it only when the setting and Windows disagree: when you turn Start with Windows on or off. Nothing else about the setting changes.
Install or upgrade
- From 1.4.0 or 1.4.1: Settings → Updates → Check for updates, then Install. It's the small update, about 1.3 MB.
- From 1.3.x: the same, but it downloads the full installer or zip.
- From 1.2.0 or 1.3.0 portable: quit the app (tray → Quit) and run
ProtectPanes-Setup.exe, or replace the folder with the zip. Your settings carry over. - New install: run
ProtectPanes-Setup.exe. It isn't code-signed, so Windows shows Windows protected your PC: click More info → Run anyway.
Files
ProtectPanes-Setup.exe: the installer.ProtectPanes-win32-x64.zip: the portable app.ProtectPanes-app.asar.gz: the small update, for copies already on this Electron version (1.4.0 and later).latest.json: the signed manifest the in-app updater reads. Its SHA-256 lines let you check the files by hand.
Protect Panes 1.4.1
UniFi Protect live view for Windows, one window per camera, across several consoles.
Fix
- The camera list stayed stuck behind a camera you'd just opened. A camera or grid window opened from the list appears above it without taking the keyboard focus. Clicking the list didn't bring it back to the front; you had to click something else first. Now one click anywhere in the list brings it forward.
Install or upgrade
- From 1.4.0: Settings → Updates → Check for updates, then Install. This is the first small update: about 1.3 MB instead of the full 122 MB installer.
- From 1.3.x: the same, but it downloads the full installer or zip.
- From 1.2.0 or 1.3.0 portable: quit the app (tray → Quit) and run
ProtectPanes-Setup.exe, or replace the folder with the zip. Your settings carry over. - New install: run
ProtectPanes-Setup.exe. It isn't code-signed, so Windows shows Windows protected your PC: click More info → Run anyway.
Files
ProtectPanes-Setup.exe: the installer.ProtectPanes-win32-x64.zip: the portable app.ProtectPanes-app.asar.gz: the small update, for copies already on this Electron version (1.4.0 and later).latest.json: the signed manifest the in-app updater reads. Its SHA-256 lines let you check the files by hand.
Protect Panes 1.4.0
UniFi Protect live view for Windows, one window per camera, across several consoles.
New in 1.4.0
- Grid windows. In the layout editor (Layouts → New layout…), set Open as → One grid window to put all the cameras in the tiles of one window, like a Protect liveview. Move it, resize it, maximize it or put it in full screen.
- Each tile keeps everything a camera window has: 360° views you can aim, the clock, the right-click menu.
- Each tile picks its stream quality from its size.
- Right-click a tile to change its camera's settings in this grid, switch the grid's Layout, Edit grid… or Close grid. Right-click an empty tile to Put a camera here.
- Grid windows reopen where they were and hide with Hide cameras.
- Hide from list. Hide on a camera's row tucks a camera nobody uses (an offline one, say) into Hidden from list at the bottom of its console. Show all and the layout editor skip it. Show in list brings it back.
- Camera previews. Each camera in the list shows a still from the camera, refreshed about once a minute while the list is open. Hover one for a bigger view, also in the layout editor. Offline cameras say so. Turn previews off in Settings → Show camera previews.
- Adjust picture. Right-click a camera → Adjust picture… for Brightness and Contrast sliders. Apply to all cameras can copy them too.
- Smaller updates. From now on, a release that keeps the same Electron version is a ~1.5 MB download instead of 120-160 MB, still signed and checked before it's installed. Installed copies' Settings → Apps entry keeps showing the last full installer's version until the next full update.
Fixes
- Saved console passwords now use Electron's current encryption API. The old one is deprecated and would have stopped reading them on a later Electron upgrade. Existing passwords keep working, and going back to an older version still reads them.
Install or upgrade
- From 1.3.0 (installed) or 1.3.1: Settings → Updates → Check for updates, then Install. This one still downloads the full installer or zip, since 1.3.x doesn't know about small updates. From 1.4.0 on they're small.
- From 1.2.0 or 1.3.0 portable: those can't update themselves. Quit the app (tray → Quit) and run
ProtectPanes-Setup.exe, or replace the folder with the zip. Your settings carry over. - New install: run
ProtectPanes-Setup.exe. It isn't code-signed, so Windows shows Windows protected your PC: click More info → Run anyway.
Files
ProtectPanes-Setup.exe: the installer.ProtectPanes-win32-x64.zip: the portable app.ProtectPanes-app.asar.gz: the small update, for copies already on this Electron version.latest.json: the signed manifest the in-app updater reads. Its SHA-256 lines let you check the files by hand.
Protect Panes 1.3.1
UniFi Protect live view for Windows, one window per camera, across several consoles.
Fixes
- In-app updates of the portable (zip) copy failed when the app had been started from Explorer or a shortcut, which is almost always. The update downloaded and verified, then the log said couldn't move … aside (a file in it is still in use), and the old version restarted. The update helper was starting inside the app's folder, and Windows won't rename a folder some process is working in. That includes the helper itself. The helper now starts from the updates folder.
- Arrange and the layout editor's Use what's on screen could miss windows. A camera window that had just opened, been restored, or been moved to another screen sometimes wasn't counted until something else changed in the camera list.
Install or upgrade
- New install, or switching from the portable copy: quit the app (tray → Quit) and run
ProtectPanes-Setup.exe. It installs for your Windows user, with no admin prompt, and adds Start menu and desktop shortcuts. Your cameras, layouts and settings carry over. It isn't code-signed, so Windows shows Windows protected your PC: click More info → Run anyway. - From 1.2.0 or 1.3.0 (portable): those versions have the bug, so they can't update themselves. Install once by hand: either run the installer as above, or quit the app and replace the folder with the zip. From 1.3.1 on, Settings → Updates → Install works.
- From 1.3.0 (installed with Setup.exe): Settings → Updates → Check for updates, then Install. Installed copies don't rename their folder, so this bug didn't affect them.
Files
ProtectPanes-Setup.exe: the installer.ProtectPanes-win32-x64.zip: the portable app.latest.json: the signed manifest the in-app updater reads. Its SHA-256 lines let you check the two files by hand.
Protect Panes 1.3.0
UniFi Protect live view for Windows, one window per camera, across several consoles.
New in 1.3.0
- Installer.
ProtectPanes-Setup.exeinstalls for your Windows user, with no admin prompt. It adds Start menu and desktop shortcuts and an uninstaller in Settings → Apps. The zip is still here for portable use. - Layout editor (Layouts → New layout…). Pick a screen and a grid (2×2, 1+5, 1+7, 3×3, 2+8, 1+12, 4×4, 5×5…), then drag cameras onto the tiles, or start from what's already on screen. Each 360° camera can show as Quad (the default), Single view, Panorama or Fisheye in its tile. Save it, or save and apply it.
- Arrange. One click tiles the camera windows on a screen: either the best-fitting grid for that screen's resolution and shape (16:9, ultrawide, portrait), or one of the fixed layouts. The top-left camera gets the big tile. Optionally each camera's stream quality follows its tile size, so a wall of small tiles doesn't decode 4K.
- Close all per console, next to Show all.
- A cleaner camera list. It has Cameras / Layouts / Settings tabs, a camera search, and hover tips on every control. Edit, Reconnect and Remove are in a "⋯" menu. An About section has the project page and log folder.
- Single view for 360° cameras (right-click → 360° view).
Fixes
- Security: the HTTPS/WebSocket client that talks to your consoles (undici) was on a version with several high-severity advisories, including a certificate-validation bypass. It's now on the patched 8.12.3.
- Updates now work for both installed and portable copies. Installed copies run the new installer silently, so the uninstaller and shortcuts stay intact.
Install or upgrade
- New install: run
ProtectPanes-Setup.exe. It isn't code-signed, so Windows shows Windows protected your PC: click More info → Run anyway. - From 1.2.0: Settings → Updates → Check for updates, then Install. A 1.2.0 copy updates from the zip and stays portable. To switch to the installer, run
ProtectPanes-Setup.exeonce; your settings carry over. - From 1.0 or 1.1: quit the app (tray → Quit) and run the installer, or replace the folder with the zip.
Files
ProtectPanes-Setup.exe: the installer.ProtectPanes-win32-x64.zip: the portable app.latest.json: the signed manifest the in-app updater reads. Its SHA-256 lines let you check the two files by hand.
Protect Panes 1.2.0
Free-floating UniFi Protect live-view windows for Windows, one per camera, across several consoles.
New in 1.2.0
- Shadows no longer crushed to black. Many UniFi cameras send full-range video without flagging it. Chromium read those streams as limited range and turned the darkest few percent of the picture solid black. The app now declares the range correctly. Right-click → Color range overrides it per camera.
- Hide cameras / Show cameras (tray menu and camera list), plus per-console Hide all / Restore. Windows come back exactly where they were, even after a restart.
- Layouts: save the on-screen arrangement under a name and switch between layouts from the camera list or the tray. Protect's own saved liveviews can be imported too.
- Apply to all cameras: right-click a window to copy its quality, always on top, name, time or color range to every camera, including ones you haven't opened yet. Quality for all… does one console at once.
- Clock on 360° views: quad and panorama views hide the camera's own timestamp, so the app shows the time instead. Right-click → Show time toggles it on any window.
- Name label shrinks to just the status dot on small windows. Right-click → Show name hides it per window.
- In-place updates from this repo's releases (Settings → Updates). Each update is checked against an Ed25519 signature and its SHA-256 before anything is installed.
Install
- Download
ProtectPanes-win32-x64.zipand unzip it into a folder you can write to, e.g.C:\Tools\Protect Panes. In-place updates can't write toC:\Program Files. - Run
ProtectPanes.exe. It isn't code-signed, so on first launch click More info → Run anyway.
Upgrading from 1.0 or 1.1: quit the app (tray → Quit) and replace its folder with this one. Settings in %APPDATA%\Protect Panes carry over. From 1.2.0 on, updates install from Settings → Updates.
Files
ProtectPanes-win32-x64.zip: the app. SHA-2564c45030ed0b3d42afd2bf6777951537e7b7a29a6060ece202831c535fb37bc32latest.json: the signed manifest the in-app updater reads. Leave it attached to the release.