- Control Base URL shown in Simple view
- Remove Landing Page designation from Sub-Account Settings
- Make docker image use 20-bookworm
- Add humanReadableToMb and mbToHumanReadable to common.js
- Send Trigger Notifications to Management server
- Better performance on cron/worker.js
- Add "type" column to Files table
- Make Timelapse video Files have type as timelapse
- Make database queries run through queue, 4 at a time
- Add eventCounts API endpoint to lineCrossCounter.js
- remove extra eventsError log from onvif.js
- Make Event-Based Recording force maximum 15 minutes segments instead of one big one
- Add Extenders : onUserLogin, onDiskFull, onAddStorageDiskFull, onMonitorDelete, onTriggerNotificationSend, onScheduleUpdated, onScheduleDeleted
- Modify Files get API endpoint to allow searching by "type"
- Make snapshot function use less CPU
- Make all monitorConfig.details number values into string when monitor loads (fixes some options not enabling)
- Add monitorStartQueueSize to allow starting more than 1 monitor at a time
- Better processKill handling
- Make mountManager/list API endpoint include disk sizes
- Add onTriggerNotificationSend for all notification methods to have general message extensions
- Add framework to begin allow Shinobi to appear in IPTV apps (unused, not ready)
- Add "added" and "changed" distinction to schedule modification
- Set SQL query pool max to 10
- Remove cron/worker dependence to sql/utils.js, make use database/utils.js
- Make Total Memory label human readable
- Fix some issues with Timelapse cleanup
- Make disk used emitter queue emission if many are sent quickly in a short time span
- Make insertCompletedVideo do better with listOfTags
- Fix FLV stream API Endpoint
- Update node-fstab to 1.0.17
- Update mp4frag to 0.7.0
- Plugin Base fixes for isObjectDetectionSeparate and stayDisconnected
- Plugin Worker Base use Map for monitorInfo
- Add Command Line Tool for copying Shinobi data to another system over SSH
- Fix Embed page's stream restart if stream is re-engaged
- Fix host pathing on some links
- Make Recent Videos ask to load if over 50 cameras attempting to load
- Make Recent Videos not load if switched to Live Grid on refresh
- Make Region Editor reload data when reopened
- Fix Videos Table Start and End timezones
### Changelog
#### May 2025
- Update Drop In Events (FTP)
- Allow API Key ending only in @
- Clean up file and folder processing for trigger
- Better Uploaded content cleanup
- Fix memory leak possibility in camera thread
- Add extender for onOnvifEventTrigger (not enabled)
- Fix timelapse frame path builder in cron
- Fix too long column insertion on Videos table objects column
- Remove fps changer in simple mode changer api endpoint
- Update actCheck.js
#### April 2025
- Fix default object detection dimensions at 1280x720
- Merge branch 'dev' into 'dev'
- Added pl language (translated by an LLM)
- Clean up central connector, prevents connecting multiple times at start
- Added pl language (translated by an LLM)
- Fix some npm vulnerabilities
- Fix event filters getting broken in cleanStringsInObject
- Make Event Filters disable submit on save
- Change region editor to use configureMonitor function
- Add some debugging code to createEventBasedRecording
- Fix refactored Central Connector when lost connection
- General fixes on monitor startup
- Add missing Custom Settings table creation
- Make central connector only get IPv4 and ignore internal
- Cleanup some logging and spacing
- Add bad cseq log drop to prevent browser log flooding
- Fix failing input_map parse on some monitors, modernize some details
- Update pairServer.js
- Allow Central Connection without SSH
- Refactor central management connector
- Make Max Storage Amount a human inputable/readable value
- Fix broken monitor utils
- Allow Commas in cleanStringsInObject function
- Add "Alarms" logging/actions and PTZ Updates
- Fix Alarms tab preview video link
- Update alarmPopup.ejs
- Make form dark on Alarm Popup
- Clean up Alarm gamepad
- Add height to Alarm popup
- Add download button to Alarm Popup video
- Add details from first event to alarm
- Use normal form instead of save on change in alarm popup
- Remove console.log from getEventBasedRecordingUponCompletion
- Make Alarms use normal Videos instead of Notification video + Gamepad PTZ
- Add multiple monitors logged to Alarm and updating Alarm
- Fix timezone in alarm popup, add limit query option to Alarms listing
- Alarms and Event-Based PTZ (Working 80%)
- Alarms (Framework only) and Event-Based PTZ and Utility updates
- Add Max Days for Cloud Video Uploaders
- Make fetch ptz command provide response data
- Change color of status progress bar
- Central SSH reconnect with delay
- Add SSH Proxy Capability to Central Management
#### March 2025
- Fix libs/ffmpeg in gitignore
- Add option to periodically reset management connection
- Add offline activator
- Remove language loaded from account settings
- Add WireGuard VPN scripts (server uses docker)
- Key manages camera count
- Allow "&" in monitor config strings
- Allow "?" in monitor config strings
- Add server ip parse for Central Connect
- Fix Branding by removing User-Level language selection
- Reverse Videos list when merging to ensure proper order
- Save Frame from FTP Trigger in Timelapse
- Reapply "Fix Cross-site scripting vulnerability in Monitor Edit" (Fixed)
- Revert "Fix Cross-site scripting vulnerability in Monitor Edit"
- Update getVideoSearchRequestQueries to have operators
- Clean up Videos Table Search Execution
- Fix Cross-site scripting vulnerability in Monitor Edit
- Remove DB_DISABLE_INCLUDED from Docker image
#### February 2025
- Make Monitor Settings post with websocket instead of ajax
- Clean up websocket callback on complete
- Ignore ffmpeg folder within Shinobi folder (ffbinaries download)
- Add a cmd tool to mass modify monitor configs with a template
- Update removeSenstiveInfoFromMonitorConfig
- Allow Connecting Multiple Central Servers
- API Key Management Upgrades
- Add API Endpoint for getting a single row
- Update Central API Key Creation
- Fix Central API Key acquisition
- Upgrade API Key Management: Edit User Settings and Permission Sets
- Upgrade API Key Management: Permission to allow managing API
- Upgrade API Key Management: Permissions and Editing
- Add Custom Settings API
- Clean up getMonitors API and add websocket method
- Permission Groups + Websocket API for Editing Monitor
- Add or Edit Monitor over Websocket with callback
- Add method to add/edit Monitors with websocket
- Fix applyPermissionsToUser in createSession for API Keys
- Void failed proc.stdin.write("q\\r\\n")
- Allow API Key Management of Sub-Accounts by Admin
- Clean up selecting Monitors in Permission Groups
- Add User Permission Management by Group
- Fix permissions to view and edit Permission Groups
- Change Sub-Account Monitor select to Table
- Load Recent Videos once on Dashboard Ready