mirror of
https://github.com/scottlamb/moonfire-nvr.git
synced 2025-10-28 23:35:02 -04:00
15 KiB
15 KiB
Moonfire NVR change log
Below are some highlights in each release. For a full description of all changes, see Git history. Each release is tagged in git.
Backwards-incompatible database schema changes happen on on major version
upgrades, e.g. v0.6.x -> v0.7.x. The config file format and
API currently have no stability guarantees, so they may change
even on minor releases, e.g. v0.7.5 -> v0.7.6.
v0.7.20 (2025-01-31)
- H.265 fixes.
v0.7.19 (2025-01-28)
- support recording H.265 (#33). Browser support may vary.
- bump minimum Rust version to 1.82.
- improve error message on timeout opening stream.
- use
jifffor time manipulations.
v0.7.18 (2025-01-28)
This release was skipped due to build problems on armv7-unknown-linux-musleabif.
v0.7.17 (2024-09-03)
- bump minimum Rust version to 1.79.
- in UI's list view, add a tooltip on the end time which shows why the recording ended.
- fix #121: iPhone live view.
- update to hyper and http version 1.0. In the process, no longer wait for pending HTTP requests on shutdown. This just extended the time Moonfire was running without streaming.
- upgrade to Retina 0.4.10, adding support for recording MJPEG video. Note major browsers do not support playback of MJPEG videos, however.
v0.7.16 (2024-05-30)
- further changes to improve Reolink camera compatibility.
v0.7.15 (2024-05-26)
- update Retina to 0.4.8, improving compatibility with some Reolink cameras. See retina#102.
v0.7.14 (2024-04-16)
- Many UI improvements in #315
from @michioxd. See the PR description for
full details, including screenshots.
- dark/light modes
- redesigned login dialog
- live view: new dual camera layout, more descriptive layout names, full screen option, re-open with last layout and camera selection
- list view: filter button becomes outlined when enabled
- Fix #286:
live view now works on Firefox! Formerly, it'd fail with messages such as
Security Error: Content at https://mydomain.com/ may not load data from blob:https://mydomain.com/44abc5dc-750d-48d1-817d-2e6a52445592.
v0.7.13 (2024-02-12)
- seamlessly merge together recordings which have imperceptible changes in
their
VideoSampleEntry. Improves #302.
v0.7.12 (2024-01-08)
- update to Retina 0.4.7, supporting RTSP servers that do not set
a
Content-Typein theirDESCRIBEresponses
v0.7.11 (2023-12-29)
- upgrade some Rust dependencies. Most notably, Retina 0.4.6 improves camera compatibility.
- update frontend build and tests from no-longer-maintained create-react-app to vite and vitest.
v0.7.10 (2023-11-28)
- build docker images again
- upgrade date/time pickers to
@mui/x-date-pickersv6 beta, improving time entry. Fixes #256.
v0.7.9 (2023-10-21)
systemdintegration on Linux- notify
systemdon starting/stopping. To take advantage of this, you'll need to modify your/etc/systemd/moonfire-nvr.service. Seeguide/install.md. - socket activation. See
ref/config.md.
- notify
v0.7.8 (2023-10-18)
- release as self-contained Linux binaries (for
x86_64,aarch64, andarmv8architectures) rather than Docker images. This minimizes hassle and total download size. Along the way, we switched libc fromglibctomusl. Please report any problems with the build or instructions!
v0.7.7 (2023-08-03)
- fix #289: crash on
pressing the
Addbutton in the sample file directory dialog - log to
stderragain, fixing a regression with thetracingchange in 0.7.6. - experimental (off by default) support for bundling UI files into the executable.
v0.7.6 (2023-07-08)
- new log formats using
tracing. This will allow richer context information. - bump minimum Rust version to 1.70.
- expect camelCase in
moonfire-nvr.tomlfile, for consistency with the JSON API. You'll need to adjust your config file when upgrading. - use Retina 0.4.5.
- This version is newly compatible with rtsp-simple-server v0.19.3 and some TP-Link cameras. Fixes #238.
- Fixes problems connecting to cameras that use RTP extensions.
- Fixes problems with Longse cameras scottlamb/retina#77.
- expanded API interface for examining and updating users:
admin_userspermission for operating on arbitrary users.GET /users/endpoint to list usersPOST /users/endpoint to add a userGET /users/<id>endpoint to examine a user in detail- expanded
PATCH /users/<id>endpoint, including password and permissions. DELETE /users/<id>endpoint to delete a user
- improved API documentation in
ref/api.md. - first draft of a web UI for user administration. Rough edges expected!
moonfire-nvr login --permissionsnow accepts the JSON format documented inref/api.md, not an undocumented plaintext protobuf format.- fix #257: Live View: select None Not Possible After Selecting a Camera.
- get rid of live view's dreaded
ws close: 1006error altogether. The live view WebSocket protocol now conveys errors in a way that allows the Javscript UI to see them. - fix #282: sessions' last use information wasn't getting persisted.
- improvements to
moonfire-nvr config, thanks to @sky1e.
v0.7.5 (2022-05-09)
- #219: fix
live stream failing with
ws close: 1006on URLs with port numbers. - build Docker images with link-time optimization.
- bump minimum Rust version to 1.60.
- #224: upgrade to
Retina 0.3.10, improving compatibility with OMNY M5S2A 2812 cameras that
send invalid
rtptimevalues.
v0.7.4 (2022-04-13)
- upgrade to Retina 0.3.9, improving camera interop and diagnostics. Fixes #213, #209.
- #217: no longer drop the connection to the camera when it changes video parameters, instead continuing the run seamlessly.
- #206:
fix
teardown Sender shouldn't be dropped: RecvError(())errors on shutdown.
v0.7.3 (2022-03-22)
- security fix: check the
Originheader on live stream WebSocket requests to avoid cross-site WebSocket hijacking (CSWSH). - RTSP connections always use the Retina library rather than FFmpeg.
v0.7.2 (2022-03-16)
- introduce a configuration file
/etc/moonfire-nvr.toml; you will need to create one when upgrading. - bump minimum Rust version from 1.53 to 1.56.
- fix #187: incompatibility with cameras that (incorrectly) omit the SDP origin line.
- fix #182: error
on upgrade from schema 6 to schema 7 when a camera's
onvif_hostis empty. - API bugfix: in the
GET /api/response, includeextstreams if configured. - fix #184: Moonfire NVR would stop recording on a camera that hit the live555 stale file descriptor bug, rather than waiting for the stale session to expire.
- progress on #70: shrink the binary from 154 MiB to 70 MiB by reducing debugging information.
v0.7.1 (2021-10-27)
- bugfix: editing a camera from
nvr configwould erroneously clear the sample file directory associated with its streams. - RTSP transport (TCP or UDP) can be set per-stream from
nvr config.
v0.7.0 (2021-10-27)
- schema version 7
- Changes to the API:
- Added fields to the
GET /api/response:serverVersion
- Altered fields in the
GET /api/response:sessionwas moved into a newuserobject, to support providing information about the user when authenticating via Unix uid rather than session cookie (a planned feature).session.usernameis nowuser.name;session.csrfis nowuser.session.csrf.user.idanduser.preferenceshave been added.signals.sourceis nowsignals.uuid. The UUID is now expected to be unique, where before only (source, type) was guaranteed to be unique.camera.confighas been altered and extended.onvifHosthas becomeonvifBaseUrlto allow selecting betweenhttpandhttps.camera.descriptionwas moved tocamera.config.description. (This might have been an oversight; now it's only possible to see the description with theread_camera_configspermission. This field can be re-introduced if desired.)stream.confighas been altered and extended.rtspUrlhas becomeurlto (in the future) represent a URL for other streaming protocols. Therecordboolean was replaced withmode, which currently may be either absent or the stringrecord.
- Added
POST /api/users/<id>for altering a user's UI preferences.
- Added fields to the
v0.6.7 (2021-10-20)
- trim whitespace when detecting time zone by reading
/etc/timezone. - (Retina 0.3.2) better
TEARDOWNhandling with the default--rtsp-library=retina(see scottlamb/retina#34). This means faster recovery after an error when using UDP or when the camera's firmware is based on an old live555 release. - (Retina 0.3.3) better authentication support with the default
--rtsp-library=retina(see scottlamb/retina#25).
v0.6.6 (2021-09-23)
- fix #146: "init
segment fetch error" when browsers have cached data from
v0.6.4and before. - fix #147: confusing
nvr initfailures when using very old versions of SQLite. - fix #157: broken live view when using multi-view and selecting the first listed camera then selecting another camera for the upper left grid square.
- support
--rtsp-transport=udp, which may work better with cameras that use old versions of the live555 library, including many Reolink models. - send RTSP
TEARDOWNrequests on UDP or with old live555 versions; wait out stale sessions before reconnecting to the same camera. This may improve reliability with old live555 versions when using TCP also. - improve compatibility with cameras that send non-compliant SDP, including models from Geovision and Anpviz.
- fix #117: honor shutdown requests when out of disk space, instead of retrying forever.
- shut down immediately on a second
SIGINTorSIGTERM. The normal "graceful" shutdown will still be slow in some cases, eg when waiting for a RTSP UDP session to time out after aTEARDOWNfailure. This allows the impatient to get fast results with ctrl-C when running interactively, rather than having to useSIGKILLfrom another terminal.
v0.6.5 (2021-08-13)
- UI: improve video aspect ratio handling. Live streams formerly worked around a Firefox pixel aspect ratio bug by forcing all videos to 16:9, which dramatically distorted 9:16 camera views. Playback didn't have the same workaround, so anamorphic videos looked correct on Chrome but slightly stretched on Firefox. Now both live streams and playback are fully correct on all browsers.
- UI: better error messages on live view when browser is unsupported,
substream is unconfigured, orsubstream is not set to record. - upgrade to retina v0.1.0, which uses
SET_PARAMETERSrather thanGET_PARAMETERSas a RTSP keepalive. GW Security cameras would ignored the latter, causing Moonfire NVR to drop the connection every minute.
v0.6.4 (2021-06-28)
- Default to a new pure-Rust RTSP library,
retina. If you hit problems, you can switch back via--rtsp-library=ffmpeg. Please report a bug if this helps! - Correct the pixel aspect ratio of 9:16 sub streams (eg a standard 16x9 camera rotated 90 degrees) in the same way as 16:9 sub streams.
v0.6.3 (2021-03-31)
- New user interface! Besides a more modern appearance, it has better error handling and an experimental live view UI.
- Compile fix for nightly rust 2021-03-14 and beyond.
- Fix incorrect
prev_media_duration_90kcalculation. No current impact. This field is intended to be used in an upcoming scrub bar UI, and when not calculated properly there might be unexpected gaps or overlaps in playback.
v0.6.2 (2021-03-12)
- Fix panics when a stream's PTS has extreme jumps (#113)
- Improve logging. Console log output is now color-coded. ffmpeg errors and panics are now logged in the same way as other messages.
- Fix an error that could prevent the
moonfire-nvr check --delete-orphan-rowscommand from actually deleting rows.
v0.6.1 (2021-02-16)
- Improve the server's error messages on the console and in logs.
- Switch the UI build from the
yarnpackage manager tonpm. This makes Moonfire NVR a bit easier to build from scratch. - Extend the
moonfire-nvr checkcommand to clean up several problems that can be caused by filesystem corruption. - Set the page size to 16 KiB on
moonfire-nvr initandmoonfire-nvr upgrade. This improves performance. - Fix mangled favicons (#105)
v0.6.0 (2021-01-22)
This is the first tagged version and first Docker image release. I chose the version number 0.6.0 to match the current schema version 6.