Release notes (20261006)
This page consolidates changes for the 1.0.0.xxx series, newest first. The title date is the latest update date for this series. A new document is started whenever the first three version segments change; for example, 1.0.1.xxx uses release-notes-1.0.1.md.
1.0.0.169
<!-- release-date: 20261006 -->
Release bundles use the same bilingual articles and images as the website and exclude ZLM patches and helper files used only for source builds. Fix Windows offline tool directory cleanup and dependency preparation. Build nodes use pinned dependencies supplied by the macOS release host.
Extend release protection and authorization checks for periodic snapshots, recording search and licensed features, with notices for prolonged verification failures. Search interfaces, public data properties, model inference and image preprocessing contracts remain compatible, without network checks in inference loops.
1.0.0.168
<!-- release-date: 20261004 -->
MediaServer bundles always include FrameBroker, Qdrant and the base image/text runtime, regardless of hidden legacy frontend options. Publishing validates broker platform, frame protocol, binary and dependency hashes. Model weights and large GPU runtimes remain separate downloads.
Live recording search rotates the pending binding queue at the existing limit of 100 samples every five seconds, preventing unmatchable older samples from blocking newer samples. Runtime cards show hardware metrics above inference activity, waiting requests, pending recording bindings and actual throughput. Successful image and text requests are counted separately using the existing ten-second refresh, without additional sampling or model calls. CPU, GPU and partially reported hardware use an independent business statistics section with all five metrics visible. Samples with ambiguous historical recording intervals remain unbound.
1.0.0.167
<!-- release-date: 20261004 -->
Show model, backend, filename and size during dependency downloads. Export recording plans with assets and explicitly choose whether to restore recording configuration on import.
1.0.0.166
<!-- release-date: 20261004 -->
Improve asset transfer and R2 configuration layouts. Add multi-file ZIP drag-and-drop, sequential uploads and per-file progress. Expose dependency download controls and offline instructions. Keep Linux upgrade transactions on the installation filesystem to avoid filling the system disk with previous backups.
1.0.0.165
<!-- release-date: 20261003 -->
Managed assets and cross-platform rebuild
Runtime dependencies and original models are versioned under Assets. artifacts contains disposable generated output. Adds model guidance, credential-preserving device asset import/export and factory search configuration (disabled by default). Models and large CUDA/OpenVINO dependencies move to separate downloads at download.softnvr.com; model directories and persistent Docker mounts survive program upgrades. Includes Linux ARM64 for user-managed upgrade testing.
1.0.0.164
<!-- release-date: 20261001 -->
- Fixed GB28181 Catalog refresh copying raw
ON/OFFvalues into video runtime state, which could falsely gray out snapshots and stop scheduled recording. Catalog availability stays in the protocol inventory; observed media streams determine runtime state. - Image/text recording search now separates query input, channel/time/similarity filters, and results. Uploaded images have a visible preview, replace and remove controls. Result cards emphasize time and similarity, with source details on demand. A channel's recording tab defaults to that stream and permits changing the search scope.
- The Qdrant storage input displays the current path and uses the existing server directory browser, creation, and permission validation tools. A migration target is checked for emptiness and overlap with the source before configuration is applied.
1.0.0.163
<!-- release-date: 20261001 -->
- Periodic snapshots now wake at the next due time; a one-second setting no longer incurs an extra fixed one-second scheduler delay, and the page polls every second at that setting. Visible changes still depend on the camera's keyframe interval.
- The local ZLM frame pipe accepts up to two persistent Broker connections so snapshots and live indexing can fetch concurrently. The Broker reuses decoded output for the same GOP and can supply RN50's 224×224 RGB input directly without a JPEG round trip.
- Recording search settings now include default minimum similarity, top N, and the managed Qdrant data directory. Runtime status reports measured encoding rate and compact NPU, RGA, and available RKMPP driver metrics; utilization is not inferred when a driver does not expose it.
1.0.0.162
<!-- release-date: 20260930 -->
- CPU and RK3588 NPU encoding now run in the AKStream.Next .NET process through ONNX Runtime or the RKNN C ABI. Offline packages carry paired RN50 image/text models and the Chinese vocabulary, without a Python/PyTorch worker or the source
.ptweight. RKNN core selection requires real board warmup; unvalidated CUDA/CoreML packages remain unavailable. - Recording Center adds a minimum cosine similarity and top-N limit, initially 45% and 5 results. Scores are shown as model similarity, not calibrated recognition probabilities. Third-party search APIs accept the same
minSimilarityandmaxSegmentsparameters. - The configuration page now shows everyday settings first and hardware/recovery controls on demand. Runtime status identifies CPU versus RK NPU and whether the model runs in the main process.
1.0.0.160
<!-- release-date: 20260929 -->
- The channel recording tab now offers image and text search scoped to that channel. A dedicated Recording AI Search entry beneath Recording & Storage exposes the global switch, sampling, compute backend, and resource limits.
- Linux and macOS upgrades from a slim package now retain an already managed MediaServer binary and its
config.iniwhen ZLMediaKit is absent from the new package. - Offline model runtimes and Qdrant now resolve the stable package architecture directory, avoiding false missing-component reports from distribution-specific .NET 7 runtime identifiers.
1.0.0.159
- The recording center adds a separately licensed image and text video-search module. Operators can enable it in system settings and select channels with recording configured. Results identify the device, stream, source recording, and hit time; video frames load on demand and playback seeks to the hit. Turning recording off later pauses new encoding while retained recordings remain searchable. Retention deletion or explicit search opt-out removes the corresponding vectors.
- CPU, CUDA, MPS, and RKNN choices now report observed runtime capability. Hardware video decoding and scaling have separate switches and backend choices. RK3588 exposes its three detected NPU cores; RK3568 and other Rockchip SoCs expose only the options supported by the observed driver. Chinese image/text RKNN models remain under validation and fail closed until both encoders pass real inference.
- Optional offline Qdrant and Chinese-model components are verified on the build host and packaged for the target architecture, so enabling the feature does not download dependencies on customer devices. Existing MySQL 5.7+ installations must apply the bundled recording-search migration before upgrading. Pending derived-vector deletion continues even when indexing is disabled or the advanced license expires.
1.0.0.158
- The video-meeting service and Web/H5, Android, iOS, and UniApp SDK integration code are now on the main branch, covering admission, media publication and subscription, host controls, chat, and whiteboard collaboration. Use server and client SDK builds from the same delivery; upgrading the server does not upgrade an existing app.
- Meeting recording now supports host or authorized API start and stop, separate original audio and video tracks, post-meeting member playback copies, on-demand full-meeting exports, and a timeline for chat, whiteboard, and meeting events. Archive query, playback, and download use short-lived tickets scoped to the meeting and permitted action. Live capture still copies the original encoding without real-time compositing.
- Previously connected non-RTC channels in the same cluster can join a meeting after host and source-access authorization; removing one does not stop the original channel. Device and codec combinations still require validation in the target environment.
- Periodic snapshot queries now include per-frame view and download URLs and short-lived tickets bound to the channel, current source, and action. Each read rechecks the original credential and playback permission.
- Release-package audits reject RTC verification records, RK3588 factory tools, and device-specific configuration from customer packages while allowing them in the source repository.
1.0.0.157
- Channel overview now offers background periodic snapshots, disabled by default, with a 10-second interval and two rotating images. Settings are per channel; switching off or setting either value to zero disables capture.
- Offline channels retain their latest snapshots with timestamps and a grayscale display, while original images remain in color. Reducing retention keeps the newest images; changing sources invalidates old previews.
- Snapshots reuse existing media streams with bounded, short-lived keyframe decoding. Image access and configuration require playback and channel-management permissions respectively.
1.0.0.156
- Live playback discards stale buffered media and reconnects when the page returns to the foreground, prioritizing the latest frame; multi-view reconnects are briefly staggered to protect media nodes.
- Recording playback advances by elapsed wall time and playback speed across files, gaps, and end boundaries; recordings paused by the user remain paused.
- All
1.0.0.xxxnotes are consolidated into one bilingual document. Local production packaging now gates on the series document and current-version section, while normal website documentation publishing remains unrestricted.
1.0.0.155
- Upgrades on all three platforms preserve every installed ZLMediaKit
config.inivalue, custom key, and custom section while adding new settings. - Release gates prevent installers that reset Runtime, Deployment, or ZLM configuration from being published.
- Fixed canvas sizing and bottom blank space in container and browser-native video fullscreen while preserving source aspect ratio and camera OSD.
1.0.0.154
- Upgrades preserve node addresses, policies, empty values, arrays, and unknown fields in
Deployment.json, adding only new settings. - RTC can use an independent external address or follow the target ZLM Candidate/local IPv4; the target MediaServer must be restarted in a maintenance window after synchronization.
- Fixed status disagreement between the resource tree, preview, and program scheduling, and removed fullscreen URL-area layout space.
1.0.0.153
- GB28181 and ONVIF PTZ panels appear only after confirmed device capability.
- Added a channel-level PTZ operator switch so control can be disabled even for capable devices.
- Fixed false PTZ detection for fixed cameras and nested GB28181 Catalog capability parsing.
1.0.0.152
- Added ZLM configuration scoped by the top Cluster, Node, or MediaServer management context.
- Candidate, local IPv4, protocol outputs, no-reader policies, native settings, and INI synchronization can be managed per target.
- Changes are previewed, confirmed, backed up, and read back; restart-required settings are called out explicitly.
1.0.0.151
- GB28181 live and playback SDP uses the channel-selected ZLM address and actual RTP port.
- Loopback or invalid media addresses and unallocated ports are rejected for NAT, VPN, and multi-node deployments.
- Added redacted bidirectional SDP request and response logs to Server and Client signaling stacks.
1.0.0.150
- Focused display-wall panes and player fullscreen no longer expose protocol, URL, copy controls, or route footers.
- Added bilingual illustrated program-scheduling guides for scenes, rotation, audio, and sixteen-tile layouts.
- Normal controls return automatically after leaving fullscreen or restoring the grid.
1.0.0.149
- Upgrades on all three platforms preserve tuned .NET Runtime/GC values while adding new properties.
- Malformed or ambiguous runtimeconfig files fail before services stop.
- Display-wall controls are hidden by default and layout controls are more compact.
1.0.0.148
- Added default-muted master and per-window audio controls that persist through scene rotation.
- Replaced layout choices with six compact SVG previews in an auto-hiding toolbar.
- Video preserves the complete source frame and OSD; differing aspect ratios use symmetric letterboxing.
1.0.0.147
- Moved channel and recovery status outside video so camera OSD and native controls remain visible.
- Dense layouts such as sixteen-tile walls automatically use HLS to avoid exhausting browser connection budgets.
- Fixed autoplay misclassification and stale fallback-source reload races.
1.0.0.146
- Fixed standalone display-wall sizing, toolbar overlap, and multi-tile layout behavior.
- Added online-camera rotation generation, per-scene source selection, and scene preloading.
- Prevented third-party recording leases from returning unusable
file://URLs.
1.0.0.145
- Fixed license-website administration timestamps appearing eight hours early and standardized display in Asia/Shanghai.
- Restored explicit UTC offsets for
*AtUtcfields while accepting legacy offset-less timestamps. - No database schema or historical data changes.
1.0.0.144
- Fixed documentation ZIP uploads when OpenResty/WAF replaces raw binary chunks with an HTTP 200 block page.
- Chunks now use small multipart files with legacy compatibility, and invalid gateway responses identify the failed phase, status, and content type.
1.0.0.143
- Fixed macOS ARM64 protection type-name collisions and added retries for transient Windows SSH readiness timeouts.
- Documentation ZIP uploads now resume in chunks and recover final results; the tree opens expanded and release cards prioritize the real failure cause.
1.0.0.142
- Recording and clip queries no longer expose physical paths,
file:///, raw protocol data, or internal command IDs and instead return protected HTTP actions. - GB28181 recording results include a Playback INVITE template; once online,
sessionIdcan be used to request a short playback lease.
1.0.0.141
- Fixed playback 409 errors when media Candidate, BaseUrl, or HTTP port fields are missing.
- Origins now fall back through runtime data, ZLM configuration, and the current reachable host; guidance clarifies that lease creation requires an authenticated JSON POST.
1.0.0.140
- Fixed HTTP-FLV, HTTP-fMP4, and HLS ticket rejection, loopback URLs, and renewal timing.
- API Tokens now expose editable permissions, IP allowlists, and expiry, with corrected table alignment.
1.0.0.139
- Linux and macOS managers fall back to the
dotnetcommand on PATH when apphost cannot discover a non-standard .NET runtime. - Page and CLI version probes share the same dual-path strategy, stopping only when both paths fail and retaining diagnostics from both attempts.
1.0.0.138
- Added server-side API token integration for live video, recordings, clip/merge, deletion, device control, and RTC.
- Added renewable playback sessions that keep the player URL unchanged while the backend renews access.