- The table refresh message will not appear briefly. The table will not "flicker."
Scrolling will attempt to return to the position it was in before the refresh.
When starting a stream on the Watch page, don't execute controlMute(), as this will cause the icon to be displayed before the stream actually starts playing.
We'll just set the "muted" property for the stream.
We'll manage the icon later.
Because we store 'zmWatchMuted' in cookies, not 'zmWatchMute'
We can pass 'on' or 'off' to the "controlMute" function, but we store a Boolean value in cookies, so we need to convert it.
Also, if there's no cookie, getCookie will return "null," but for us, that doesn't equal "false."
- Add user= parameter to get_auth_relay() so zms can use the indexed
Username column instead of iterating all users to validate the hash
- Apply the same fix to Event.php getStreamSrc() and getThumbnailSrc()
- Tighten Monitor.php from isset() to !empty() for consistency
- In MonitorStream.js start(), check if the auth hash in the img src
matches the current auth_hash before resuming via CMD_PLAY. If stale,
fall through to rebuild the URL with fresh auth_relay. This prevents
long-running montage pages from spawning zms with expired credentials.
- Downgrade zms auth failure from Error to Warning
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a boolean web config option to control whether server statistics
(load, CPU, DB connections, storage, RAM) are rendered in the navbar.
When disabled, the HTML is not output at all, saving the polling overhead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a boolean web config option to control visibility of the Back and
Refresh navigation buttons shown at the top of most views. Uses a body
class and CSS rule so no individual view files need changes.
Also remove the ZM_WEB_BUTTON_STYLE INSERT from the migration SQL since
zmupdate.pl handles Config table inserts from ConfigData.pm.in.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a web config option to control toolbar button display:
- icons+text (default): show both icon and label
- icons: show only the icon, hide text labels
- text: show only the label, hide icons on buttons that have labels
Body class (btn-icons-only / btn-text-only) is set in getBodyTopHTML() and
CSS rules in skin.css toggle visibility of .text spans and icon elements.
Add title tooltips to console.php buttons so they remain usable in icon-only
mode. Migration appended to zm_update-1.39.4.sql.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Change ZM_OPT_USE_REMEMBER_ME from a boolean to a tri-state string:
- None: checkbox hidden, sessions persist for ZM_COOKIE_LIFETIME (old disabled)
- Yes: checkbox shown and pre-checked by default
- No: checkbox shown and unchecked by default (old enabled behavior)
Update ConfigData.pm.in with new type definition, login.php to honor the
checked state, and session/action handlers to recognize the new values.
Migration in zm_update-1.39.4.sql maps old '1' to 'No' and '0' to 'None'.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Column headers like "Alarm<br/>Frames" and "Avg.<br/>Score" show the literal
<br/> text in the column selection dropdown. Add data-switchable-label attributes
with the <br/> replaced by a space so the column picker shows clean labels while
the table headers still render the line break. Fix applied to events.php and
watch.php.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Switch filter labels from stacked (above dropdown) to inline (beside dropdown)
to reduce vertical space. Make sizeControl form use flex-wrap for proper flow.
Move Show Zones and Control links from floating headerButtons div into the
sizeControl form so they flow with the layout buttons. Fix chosen.js Ratio
dropdown being too narrow by setting min-width with !important to override
inline styles set by chosen on dynamically-populated selects.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
getOptionsHTML() was missing the global $menuIconOverride declaration,
so custom image icons set for the Options menu item were ignored in
the left sidebar, always falling back to the default material icon.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The stats display was dividing pixel counts by the zone Area value
directly, but Area is stored in percentage coordinate space (0-10000
for full frame). Convert Area to actual pixel area using the monitor
dimensions before calculating percentages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- getAudioStream has been renamed to getAVStream
- Clear this.handlerEventListener['volumechange'] when the stream is stopped
- Check volumeSlider.noUiSlider after assigning the listener
- This.handlerEventListenerStream does not require an argument (stream), but if we have already received a stream, we will pass it as an argument to avoid searching for the stream again.
Replace the file upload input with a text input for image icon type,
accepting a URL path relative to the web root. Remove multipart form
encoding, file upload handling, and uploaded file cleanup on reset.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Switch zone edit page from float-based to flexbox layout. The settings
panel is fixed at 480px and the stream scales to fill remaining space.
The points table columns collapse to a single column on narrow widths
using a container query.
Add bounds check in updateActivePoint to prevent SVG point index error
when ResizeObserver triggers drawZonePoints during a drag operation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove the Units selector and always store/display thresholds as
percentages. Add editable pixel inputs alongside each percentage field
with bidirectional sync. Zone area is now displayed as plain text
instead of readonly inputs. Pixel inputs are disabled/enabled in sync
with their percentage counterparts based on zone type and check method.
Server-side enforcement ensures values > 100 are converted from pixel
counts to percentages before storage and clamped to 0-100.
Add aspect-ratio to imageFeed container to prevent layout flash on load.
Hide number input spinners in zone settings panel.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>