Release Notes for v3.19.1 (2024.06.13)






That is what I wrote at the top of the todo list for this release. It was a daily reminder to work on the maintenance tasks that will save me time and effort down the road. This “get your house in order” work also gets me closer to v4.0, which at this point is mostly about maintenance work and some relatively minor features. v3.0 was released just over 38 months ago. I certainly didn’t have anything resembling a clear vision of what v4.0 would look like at the time. I’m very happy with where Streamie is at in terms of streaming stability, scalability and consistency of the user interface. I see the evidence of this good state when clients have unsupported requirements that we can add cleanly and easily.


Speaking of clients, starting next month we’re installing ~1,000 4K cameras across a dozen locations. The system requirements include on-site 24/7 NAS recording, numerous local and remote monitoring stations and police department integration. Powered by Streamie.


What’s next?


I’m going to struggle between pushing for v4.0 and a new feature I call “Functions”. There’s some camera-specific functionality I need to provide for an upcoming contract — activating sirens and strobes — that I don’t want to specifically code into Streamie. The new Functions feature will allow a user to customize Streamie with user-defined buttons that perform user-defined actions. If sanity prevails and scheduling permits, I’ll save that for after v4.0 is out.




- Ports the File Server Browse VC to the Screens framework.

- Ports the Module Message VC to the Screens framework.

- Ports the Module Slideshow VC to the Screen framework.

- Ports the Module Streamie VC to the Screen framework.

- Ports the Album Chooser VC to the Screen framework.

- Ports the Asset Chooser VC to the Screen framework.

- Ports the Module Slideshow VC to the Screen framework.

- Ports the Smart Devices VCs to the Screen framework which now means that all of the Smart Devices configuration functionality is available on tvOS. Woo.


- Adds tvOS support for editing schedules in Modes. tvOS support previously did not exist because of our use of the UIDatePicker. I modified the ol' TimeSlider to make a RangeSlider and both platforms now use that for begin / end time selection.

- Adds support to Recording Dates Screen for deleting everything.

- Adds support to Recording Files Screen for deleting everything.

- Adds support to Recording Snapshots Screen for deleting the file and fixes some caching stuff.

- Adds "Sticky Audio" which means that if you enable audio on a camera, it will be auto-enabled the next time you stream that camera. [DD]

- Adds Account Member caching because that's a slow API call.

- Adds fancy, new event filtering functionality to the Recording Files Screen.


- Improves the Modes feature with abbreviated schedules that now show ranges ("Mon - Fri") instead of listing out each day.

- Improves the Configure SMB File Server screen so that the UI loads without waiting on a connection to the SMB server, which takes a long time to timeout.

- Improves the Recording Cameras Screen to permit user-initiated changes of connection method (direct vs remote). The default behavior is "smart" where it chooses based on whether or not it believes the service is directly accessible.

- Improves the Recording screens so that they use the PortalService for managing all of the FileServer connections and data caching. This prevents unnecessary duplication of connections and code.

- Improves the unified App Delegate with better handling of the startup process being interrupted.

- Improves the separation of accounts by prefixing every UserDefaults value with the current account identifier.

- Improves the Permission Group Camera Chooser screen so that everything is alphabetized.

- Improves how the Recordings UI finds cameras to display. Instead of simply being a subset of known cameras, we look at the directories on the file server and show everything that appears to be a camera recording directory. We combine this information with each ToC file so that unknown cameras can have names.

- Improves the error message shown when a UniFi Protect RTSP stream is not enabled. Instead of just saying that the URL is missing, we'll now prompt the user to go to UniFi Protect and enabled the RTSP stream. [JC]

- Improves the ONVIF Event Server so that if starting its internal HTTP server fails, we generate a new random listening port and try again instead of insisting on using the same port number.


- Fixes a crash in the App Delegate that occurs when background-ing the app before it finishes starting.

- Fixes the Mode-Schedule screen which was missing deletion functionality. Whoops.

- Fixes the Shares screen where we accidentally started permitting duplicate camera shares.

- Fixes a Google Nest reconnection issue that prevented a dropped connection from ever reconnecting. This behavior has existed since I refactored the Nest streaming session stuff a month or two ago. Whoops.

- Fixes some crashes related to the Swifter HTTP server by replacing it with PerfectHttpServer.

- Fixes the Event Filter screen, which wouldn't appear any longer; I broke this while replacing WaitVC with an Alert Controller.

- Fixes the Recording Files Screen where the cell did not perform the selection animation when tapped (on iOS).

- Fixes an API server bug related to caching recently disconnected nodes for the purpose of calculating a home node.

- Fixes a bug in Portal Service where the snapshots in a recording file were displayed in the opposite order relative to the timestamps being displayed.

- Fixes a bug that prevented make-bigger/smaller from working in the Events tab.

- Fixes an issue where if a recording has no available snapshots, it was not playable. Subsequent to this fix, the placeholder cell is now tappable and will advance to the playback screen.

- Fixes an issue where toggle-labels and make-bigger/smaller support was dropped when I refactored the old Recording VCs into Screens.

- Fixes an issue in Configure Group (tvOS) where switching between Looper and Normal mode for a camera did not correctly display the change, even if the data model itself was changed correctly.


- Removes all of the Upgrade and Store stuff. Wow. It's a little painful thinking of all the work that went into App Store integration.

- Removes a bunch of unused image assets and dead code. I think I dropped the app size by more than 1MB.

- Changes the "nag time" when a major app update is available from 10 minutes to 30 minutes. Come on guys.

- SMB file servers can apparently have multiple shares with the same name, but since we only retain the name of the share, I'm now filtering out duplicates.

- Replaces the Settings button in the iOS Events screen with an "Options" button.

- Adjusts the SMB connect timeout from 60s to 10s.



Related 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 (but you can also reach us by phone). Download Streamie today. Lastly, Streamie is solar powered!