Release Notes for v4.10.0 (2025.02.24)

 

Overview

 

In my usual pattern, this should be v4.9.3 not v4.10.0, as it offers no new write-home-to-mom-about-it features. But, it does include a number of behind-the-scenes improvements, including replacing some aging 3rd party dependencies. I really do dislike 3rd party dependencies. Ninety percent (or more) of the production crashes are related to libraries external to the Streamie source code. Anyway.

 

Additionally, I’ve continued to find (and fix) regressions related to the transition to Mac Catalyst. Most notably, if you previously used keyboard controls for PTZ, those finally work again.

 

The Swift 6 transition has stalled out. Its language-based mechanism for data access control is just fundamentally different. Not in a bad way. But in a way that makes it non-trivial to “just adopt these new language features” without incorporating significant rewrites. It’s probably not half that bad in reality, but after a couple of passes, it certainly wasn’t an easy migration.

 

Changes

 

Fixes

 

- Fixes a crash in ChinstrapCodable+Data, where if the input data is not adequate given the stated size of the data, we assert() now instead of assertionFailure() so that we will just log an error instead of crashing the app.

- Fixes a crash where we receive a push notification via Chinstrap but for some reason there's no ChinstrapPenguinClient.accountHash. Probably a race issue. Thankfully, not many places used this property, so the value is now optional.

- Fixes an issue where if you edit your ONVIF camera, we were not clearing the ONVIF service cache, which means that an old version of the camera configuration could have been used (from the cache) instead of using the newly updated settings to establish a new connection to the camera.

- Fixes a crash in CMCCameraStreamingSessionControl.stop() related to UI changes in a background thread that is caused by deinit() being called in CMCCameraUniFiProfile which was calling stopStream(). This was a holdover from literally years ago. This might cause a regression, but we'll deal with that when the time comes.

- Fixes a crash related to attached cameras. Adds an Objective-C wrapper around the AVCaptureDevice method setVideoZoomFactor. After doing all of that work, I realized that I was setting that after unlocking exclusive access, which was the reason for the Objective-C exception. Although why did it not occur consistently? Anyway, I'm leaving this for now.

- Fixes a Custom Module Profile issue in refresh() where we wouldn't proceed with rendering a module if a valid url wasn't available, which causes problems because if the custom module uses embedded json instead of a url, there is no url, and then loading the custom module fails.

- Fixes a FittedFontLabel layout issue related to insets which became obvious when I was working on the warning module thing where I wanted a fixed font size and I wanted the height of the label to grow to accommodate the text. The previous behavior of FittedFontLabel wouldn't do anything for insets if adjustsFontSize was disabled.

- Fixes an occasional issue related to RTSP streaming where sometimes we would not have a session id value available when it came time to send the PLAY request, so now I'm checking for it in multiple places.

- Fixes (maybe) a main thread hang associated with starting the silent player as the app goes into the background.

- Fixes the missing "Adjust Scale" option in the streamer menu (that was previously hidden, accidentally, when use automatic streamer layout).

- Fixes a crash related to ChinstrapService not being initialized.

- Fixes an issue with VolumeView where it did not support .hpcm audio, which is the littleEndian version of .l16.

- Fixes a regression related to PTZ control via keyboard. I guess Mac Catalyst does thing differently. Hopefully this hasn't broken things for keyboard controls on an iPad.

 

Updates

 

- Updates Module Renderer to support a "sizeMul" (size multiplier) for font point size instead of just the style, which seems to do nothing. Maybe a bug in the latest iOS / tvOS?

- Updates the copyright year for the iOS, tvOS splash screens.

- Updates the Release Notes URL for v4.10.0.

 

Changes

 

- Changes the Delete and Help button locations, moving them from the Done section of the Group Configure Screen to the new Options nav menu button.

- Changes the Help, Delete button locations, moving them from the Done section to the Options nav menu for the camera configuration screens: Attached, HomeKit, Nest, Onvif, Rhombus, Tuxedo, UniFi and URL.

- Changes the Add Share and Help button locations, moving them from the Done section to the Options nav menu of the Settings => Shares screen.

- Changes the Add Mode and Help button locations, moving them from the Done section to the Options nav menu in the Settings => Modes screen.

- Changes the Help button location, moving it from the Done section to the Options nav menu in the Settings => Options screen.

- Changes the Help button location, moving it from the Done section to the Options nav menu in the Settings => Junk Drawer screen.

- Changes the Add Group and Help button locations, moving them from the Done section to the Options nav menu button in the Settings => Access Controls screen.

 

Improves

 

- Improves the default streamer layout behavior. When starting a stream with a single Camera or Module, as long as that single item is not rotated on its end, the new default streaming layout is .automatic. This won't make any difference to begin with, but when the user goes and adds several more cameras / modules to the streamer, they will be added in such a way that they fit on the screen instead of requiring the user to manually adjust the screen layout scale.

- Improves the tvOS UI navigation when hitting the menu button. Specifically, when a navigation bar button on a top-level screen has the focus, hitting the menu button will bring up the tab bar instead of returning to the Apple TV app screen. [ESPL]

 

Adds

 

- Adds copy support to the RTSP URL when long-pressing on a Stream when configuring a Ubiquiti camera.

- Adds copy support to the RTSP URL when long-pressing on a Stream when configuring an ONVIF camera.

- Adds a "Crash" button to the Junk Drawer screen for testing purposes. Don't use this.

- Adds a Mac-specific Info.plist description for the use of location information.

 

Removes

 

- Removes the Close button from the Done section of the Settings => Permissions screen.

 

 

Details

 

Created: 1 month ago

Updated: 4 days ago

Author: Curtis Jones

Topics: Release Notes

 

About Streamie

 

Streamie provides a best-in-class user experience on your iPhone, iPad, Apple TV and Apple Silicon Mac, with an intuitive user interface that makes it simple to discover, stream, record, monitor and share your HomeKit, Google Nest, Ubiquiti UniFi Protect and ONVIF-compatible IP and RTSP cameras. Streamie keeps you informed with motion event notifications and it works with most cameras using its advanced audio and video codec support. You can watch your cameras from anywhere, record 24/7 to your private NAS, remotely manage multiple locations, device permissions and seamlessly synchronize settings across your devices; configure Hubitat smart home automations, live stream to YouTube and rely on the in-app technical support system when you need help -- and you can also reach us by phone. Download Streamie today for all of your CCTV needs.