Commit Graph

27540 Commits (7532cfbabfac03093c87ddb59cbca4989eac10f5)

Author SHA1 Message Date
Isaac Connor 7532cfbabf Try out recommended options for debuild when doing binary 2026-03-07 22:38:03 -05:00
Isaac Connor 11039c8fd5 sync up RtsPServer 2026-03-07 21:43:14 -05:00
Isaac Connor 0f97fbbbfb Add assets to gitignore 2026-03-07 21:42:52 -05:00
Isaac Connor 11d9d38292 fix: silence cmake deprecation and policy warnings in deps
Update RtspServer cmake_minimum_required from 3.5 to 3.10 and set
CMP0077 policy to NEW before adding CxxUrl subdirectory to suppress
developer warnings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:52:10 -05:00
Isaac Connor 3f911d5397 Merge branch 'master' of github.com:ZoneMinder/zoneminder 2026-03-07 17:30:39 -05:00
Isaac Connor 4a4a100d60
Merge pull request #4683 from Frumscepend/master
Fix ReferenceError in Janus onremotetrack handler
2026-03-07 17:17:37 -05:00
Isaac Connor ef1a623d90
Merge pull request #4689 from Simpler1/clear_logs
feat(logs): New button to clear logs
2026-03-07 17:17:02 -05:00
Isaac Connor 0758e7ca13
Update web/skins/classic/views/js/log.js
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-07 17:15:55 -05:00
Isaac Connor 14ca496664
Update web/skins/classic/views/log.php
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-07 17:14:54 -05:00
Isaac Connor 376ae4c4e2
Update web/skins/classic/views/js/log.js
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-07 17:14:17 -05:00
Isaac Connor 0fd790ffff
Merge pull request #4691 from IgorA100/patch-872967
Fix: Do not assign mediaStream to the video stream if the video stream has already stopped. (skin.js)
2026-03-07 17:11:10 -05:00
Isaac Connor 54bc26c026
Merge pull request #4685 from pliablepixels/notifications-api
Add Notifications table and REST API for push token registration
2026-03-07 17:10:21 -05:00
Isaac Connor 2a5fb97ca6 Rename zm_update-1.37.81.sql zm_update-1.39.2.sql so it actually gets run. 2026-03-07 16:41:40 -05:00
IgorA100 385b67bff1
Fix: Do not assign mediaStream to the video stream if the video stream has already stopped. (skin.js)
While we were waiting for Media Stream activity, the video stream may have already stopped. In this case, we should not assign the mediaStream to the video stream, as this may lead to subsequent analysis issues.
2026-03-08 00:29:44 +03:00
Isaac Connor 5143c0602c fix: refresh auth hash before restarting streams in montage view
Browsers throttle setInterval timers for hidden/background tabs, so the
periodic getNavBar() calls that update auth_hash may not run while the
tab is hidden. When the tab becomes visible again and monitors restart,
the stale auth hash causes all zms streams to fail authentication.

Fetch a fresh auth hash from the server before starting any monitors
on visibility change and after dismissing the idle timeout modal.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:32:29 -05:00
Isaac Connor f42aaeeec1 feat: add reset sort button to console view bootstrap-table toolbar
Add a 'Default Sort' button to the console table toolbar that resets
sorting to Sequence/asc and clears sort cookies. Also add
data-show-advanced-search="false" to prevent the toolbar extension
from rendering an unwanted advanced search button.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:32:29 -05:00
Isaac Connor c27f32b7ad Upgrade bootstrap-table to 1.27.0 2026-03-07 12:32:29 -05:00
Isaac Connor d2a26aee59 fix: use +1 instead of +last_duration for equal DTS fixup
When two packets have the same DTS (common with B-frames near
keyframes), bumping by last_duration overshoots and causes a cascading
misalignment where every subsequent packet triggers a "non increasing
dts" warning with a growing gap. The comment already said "add 1" but
the code used last_duration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:32:28 -05:00
Isaac Connor 1b689d6e67 fix: include alarm_frame_count in ready_count calculation
ready_count only considered warmup_count and pre_event_count, but
openEvent walks back max(pre_event_count, alarm_frame_count) frames.
When pre_event_count=0 and alarm_frame_count=2, analysis started before
the queue had enough packets, causing spurious "Hit end of packetqueue
before satisfying pre_event_count" warnings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:32:28 -05:00
Isaac Connor e1bd60116a fix: add credential fallback chain in ONVIF control module
When ControlAddress does not contain authentication info, fall back
to Monitor->ONVIF_Username/ONVIF_Password, then Monitor->User/Pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:32:28 -05:00
Isaac Connor 1374735db1 fix: include port in Server URL methods for port-forwarded setups
When accessing ZoneMinder through port forwarding, API requests were
made without the forwarded port, causing NS_ERROR_NET_TIMEOUT. The
url(), urlToZMS(), urlToJanus(), and urlToApi() methods now fall back
to this.Port then location.port when no explicit port is passed.

fixes #4675

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 17:46:19 -05:00
Isaac Connor 6128848f30 fix: add_monitors table no longer overflows inaccessibly off-screen
The table used justify-content:center on a flex container, which caused
the wide table to overflow equally left and right. The left overflow was
inaccessible since scroll positions can't be negative. Changed to
display:block and set bootstrap-table's fixed-table-body and
fixed-table-container to overflow:visible so horizontal scrolling is
handled by #inner-content, placing the scrollbar at the bottom of the
visible viewport.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 17:43:25 -05:00
Isaac Connor 3432e39c45 feat: add Remember Me checkbox to login page
Add ZM_OPT_USE_REMEMBER_ME config option (auth section, requires
ZM_OPT_USE_AUTH) that controls whether a Remember Me checkbox appears
on the login form. When enabled and unchecked, the session cookie
lifetime is set to 0 so the browser discards it on close, logging the
user out. When checked, the session persists for ZM_COOKIE_LIFETIME.
When the option is disabled, behavior is unchanged.

- ConfigData.pm.in: new ZM_OPT_USE_REMEMBER_ME boolean option
- login.php: checkbox between password field and reCAPTCHA/submit
- session.php: use lifetime=0 when remember me is off
- actions/login.php: set/clear ZM_REMEMBER_ME cookie on login, also
  update $_COOKIE so zm_session_start sees it in the same request
- auth.php: clear ZM_REMEMBER_ME cookie on logout
- en_gb.php: add RememberMe translation string

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 15:41:25 -05:00
Simpler1 07d328a164 feat(log): Add selection to logs and delete for selected logs. 2026-03-06 14:50:24 -05:00
Isaac Connor a424a38c62 Merge branch 'master' of github.com:ZoneMinder/zoneminder 2026-03-06 13:17:48 -05:00
Isaac Connor 6f3a7698d7 Change warn to debug to prevent log spamming 2026-03-06 13:17:43 -05:00
Isaac Connor dce2e73f36
Merge pull request #4687 from Simpler1/incomplete_mp4
fix: Change ffmpeg errors to warnings for incomplete.mp4
2026-03-06 13:14:40 -05:00
Simpler1 88c179bc9d fix: Handle incomplete.mp4 in cpp file. 2026-03-06 12:33:25 -05:00
Simpler1 bb0d054ed0 fix(lint): Add spaces before comment 2026-03-06 12:09:43 -05:00
Simpler1 3f0ede73a6 feat(logs): New button to clear logs 2026-03-06 12:04:57 -05:00
Simpler1 d51870ddcc fix: Change ffmpeg errors to warnings for incomplete.mp4 2026-03-06 11:04:25 -05:00
Anatoliy Korovkin 84465bd28d
Use const for Janus onremotetrack locals
Replace let with const for stream/audioElement since they are not reassigned.
2026-03-06 10:09:59 +01:00
Pliable Pixels fea1c850ac fix: address Copilot review feedback on Notifications API refs #4684
- Revert accidental Users.RoleId FK change from CASCADE back to SET NULL
- Remove System != 'None' gate in beforeFilter; any authenticated user
  can manage their own notifications, per-row ownership checks suffice
- Add allowMethod('post', 'put') guard to edit() for consistent REST behavior
- Change PushState validation from allowEmpty to required=false

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 20:39:54 -05:00
Pliable Pixels a1557f6447 chore: remove plan docs from repo refs #4684
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 20:12:37 -05:00
Pliable Pixels 1c3c150e7e fix: change Notifications FK to ON DELETE CASCADE refs #4684
Delete notification tokens when the owning user is deleted.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 20:12:11 -05:00
Pliable Pixels 9c455cc29d fix: make UserId nullable for no-auth mode refs #4684
- UserId is now DEFAULT NULL instead of NOT NULL
- FK changed to ON DELETE SET NULL (keep token if user deleted)
- Removed auth guard from add() — no-auth mode stores NULL UserId
- No-auth mode already treated as admin by _isAdmin(), so scoping
  works correctly (sees all tokens)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 20:09:32 -05:00
Pliable Pixels c6effc12ab fix: add FK constraint, auth guard, and belongsTo for Notifications refs #4684
- Add FOREIGN KEY on UserId -> Users.Id with ON DELETE CASCADE
  (both in fresh schema and migration)
- Reject push token registration when auth is disabled
  (UserId would be null, violating NOT NULL constraint)
- Add $belongsTo association to User in Notification model

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 20:04:03 -05:00
Isaac Connor f1352552e0
Merge pull request #4669 from pliablepixels/fix/options-requires-dependency
feat: implement Config Requires field for dependent option disable
2026-03-05 20:03:50 -05:00
Isaac Connor 5ce439f0c2
Update web/skins/classic/views/options.php
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-05 20:02:37 -05:00
Isaac Connor be74898b9f
Update web/skins/classic/views/options.php
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-05 20:02:15 -05:00
Pliable Pixels de1f31c6e2 feat: add Notification model, controller, and route refs #4684
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 19:47:29 -05:00
Pliable Pixels 2fce145a90 feat: add Notifications table for push token registration refs #4684
Add Notifications table to fresh-install schema (zm_create.sql.in) and
create idempotent migration (zm_update-1.39.2.sql) for existing installs.
The table stores FCM push notification tokens so zm_detect can send
push notifications directly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 19:45:46 -05:00
Pliable Pixels 4ca0e03885 docs: add implementation plan for notifications API refs #4684
11-task plan covering DB schema, CakePHP API, pyzm model, and
zm_detect push sender across three repos.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 19:43:35 -05:00
Pliable Pixels f8942df908 docs: add design doc for notifications API refs #4684
Design for FCM push token registration in ZoneMinder, covering
database schema, CakePHP REST API, pyzm model, and zm_detect
push sender integration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 19:39:41 -05:00
Anatoliy Korovkin 479b58c023
Fix ReferenceError in Janus onremotetrack handler
When using Janus live streaming, MonitorStream.js assigns to undeclared variables (stream, audioElement) inside onremotetrack(). In strict mode this causes "ReferenceError: stream is not defined" and breaks playback. This change declares stream/audioElement with let, fixing Janus live video/audio playback.
2026-03-06 00:17:34 +01:00
Isaac Connor 2fb5b47332
Merge pull request #4596 from connortechnology/system_jwt
feat: add option to use system-installed jwt-cpp
2026-03-05 08:33:07 -05:00
Isaac Connor a13d618946
Merge pull request #4643 from IgorA100/patch-412820
Fix: More correct processing of the stream after hiding and then displaying the Watch page
2026-03-05 08:32:23 -05:00
Isaac Connor 3cbd67eb4b
Merge pull request #4679 from ZoneMinder/copilot/fix-build-failure-zm-no-curl
fix: add HAVE_LIBCURL preprocessor guards to fix ZM_NO_CURL=ON build
2026-03-05 08:31:03 -05:00
Isaac Connor 720a322376
Merge pull request #4646 from IgorA100/patch-900470
Feat: Manage MSE mode for Go2RTC, not just RTSP2Web.
2026-03-05 08:30:26 -05:00
IgorA100 1f3b641382
No additional check for "this.video" is required; simply adding "this.visibilityCheck = false;" (video-stream.js) 2026-03-05 15:55:00 +03:00