Repository navigation
Releases: tekgnosis-net/blackvuesync-v2
Releases · tekgnosis-net/blackvuesync-v2
Release list
BlackVue Sync v2 3.2.1
Fixed
- The browser test suite could fail intermittently on fast CI runners: the
limit of 16 live streams is shared by the whole process, and streams left
open by earlier tests held their slots for up to 30 seconds. Each test now
starts with a fresh limit, and a stream opened before a reset can no longer
free the slot of a newer one. No change to how the app behaves for users.
BlackVue Sync v2 3.2.0
Added
- Camera settings (Settings → Camera): every setting stored on the dashcam,
read-only, in the BlackVue app's groups (Basic, Sensitivity, System, Wi-Fi,
Cloud). Wi-Fi passwords are masked and can be revealed one at a time;
settings that make the camera format its card are marked. Refresh lists
what changed on the camera since the last read. See
Camera settings. - New
camera.read_timeout_secondssetting (default 3).
Security
- The dashboard's dashcam info card and
/api/dashcam/inforeturned the
camera's Wi-Fi passwords (encrypted with a public key, so readable). They are
now masked.
BlackVue Sync v2 3.1.1
Fixed
- With authentication turned off (
auth.modenone), the header had no
Dashboard / Settings / Logs / Stats / Viewer links, so pages could only be
reached by typing their address. The links now show in every auth mode.
Sign out only appears inloginmode:nonehas no session to end, and
inproxymode the reverse proxy owns the sign-in.
BlackVue Sync v2 3.1.0
Added
- Continuous play (Settings → Viewer): plays every back-to-back segment of
a drive in time order, whatever its type. BlackVue records an event (E) or
parking (P) segment in place of the normal one for that minute, so the
default, which plays only segments of the type you selected, skipped them.
Off by default; see
Configuration. - The release version is shown next to the title on every page once signed
in (ver: 3.1.0). The sign-in page does not show it.
Fixed
- The viewer's sidebar now follows playback: the highlight moves to the
segment that is playing, including after auto-advance and Next segment,
and opens the next day when a drive crosses midnight. - The statistics "failures by reason" chart showed every reason in grey since
3.0.2. Each reason has its own colour again (http blue, network red, timeout
orange, disk yellow, unknown teal); dashcam offline stays grey.
BlackVue Sync v2 3.0.3
Fixed
- The viewer's buttons were nearly invisible in dark mode (dark text on a
dark button). The interface now declares that it supports both light and
dark appearances, so browser-drawn controls (buttons, sliders, form fields,
scroll bars) follow the system theme, and the viewer buttons set their own
text colour. - Text contrast now meets WCAG AA (4.5:1) on every page in both light and
dark mode. Secondary and help text, the accent colour on buttons and the
active tab, status badges, settings tier labels and alerts were darkened or
brightened where they fell short. A browser test checks every page in both
modes.
Changed
- The viewer's Play button is an icon that switches to Pause while the video
plays, including when playback moves on to the next segment by itself. The
transport controls wrap onto two rows on narrow screens.
BlackVue Sync v2 3.0.2
Fixed
- Statistics counted every run made while the car was away as a failure, so
the success rate mostly measured how often the car was gone. Runs that could
not reach the dashcam (onlynetwork/timeoutfailures) are now counted
in a new Dashcam offline tile and shown as grey bars in the failures
chart. The success rate and average duration cover only runs that reached
the dashcam, and show--when none did. Existing run history is
reclassified automatically. Prometheus metrics are unchanged.
Changed
- CI retries slow PyPI index reads (
PIP_DEFAULT_TIMEOUT=60,
PIP_RETRIES=10) and falls back to direct Go module downloads when the Go
proxy fails, so network hiccups no longer fail pull requests.
BlackVue Sync v2 3.0.1
Fixed
- When the dashcam cannot be reached (car away, dashcam off, or the connection
dropping mid-transfer), the web service logs one line instead of a full
error traceback on every scheduled run, and the Last sync card shows
dashcam not reachable instead of failed. Metrics and run history
still record the attempt with itsnetwork/timeoutreason. Other
errors, including a refused connection, are reported as before.
Changed
- The Docker image is based on Alpine 3.24 and runs on Python 3.14
(previously Alpine 3.23 with Python 3.12), with argon2-cffi 25.1. Password
hashes created by earlier versions keep working unchanged. - CI uses
actions/checkoutandactions/setup-pythonv7. Development
dependencies allow pytest 9, black 26, mypy 2 and pylint 4 where the Python
version supports them.
BlackVue Sync v2 3.0.0
First release of BlackVue Sync v2 as a standalone project. See
Upgrading to 3.0.0 before you
upgrade.
Breaking changes
- The project, command, Python package and image are renamed so they no longer
collide with the upstreamblackvuesyncpackage: repository
tekgnosis-net/blackvuesync-v2, imageghcr.io/tekgnosis-net/blackvuesync-v2,
commandblackvuesync-v2(wasblackvuesync), Python module
blackvuesync_v2and distributionblackvuesync-v2. Environment variables (BLACKVUESYNC_*),settings.json, Prometheus metric
names, the destination lock file and the recordings layout are unchanged. - The web service now applies
retention.keep(default2w). Earlier
versions ignored it in scheduled syncs, so recordings older than the
setting are deleted on the first sync after upgrading. Clear the setting to
keep everything. - Cron day-of-week numbers follow standard cron:
0and7are Sunday.
Earlier versions treated0as Monday, so numeric weekday schedules moved
by one day.
Added
- Documentation site at https://tekgnosis-net.github.io/blackvuesync-v2/ with installation, configuration,
command-line, upgrading and troubleshooting guides, a feature tour with
screenshots, the HTTP API reference and these release notes. scripts/screenshots.pyregenerates the documentation screenshots from a
synthetic demo library.- GitHub releases and semantic-version Docker tags.
scripts/release.pyprepares
a release pull request and pushes the tag;release.ymlpublishes the release.
Fixed
- The dashboard's Last sync card showed "no completed sync recorded" except
for ten seconds after each run. It now shows the most recent run from the run
history: how long ago, when (in the container'sTZ), outcome, files and
size. - The metrics state file defaulted to
/config/metrics-state.jsoneven outside
Docker and was written while metrics were disabled. It now defaults to
metrics-state.jsonnext tosettings.jsonand is only used while metrics
are enabled. Existing settings files are migrated (schema version 2); inside
the Docker image the file stays in the same place. - The web service now applies
retention.keep,sync.retry_failed_after,sync.skip_metadataandsync.affinity_key; previously scheduled syncs ignored them, so old recordings were never deleted. An emptykeepkeeps recordings forever. - Live progress and log streaming work under waitress; they returned 500 in production.
- A download cut short by the dashcam is kept as a partial and resumed, instead of being saved as complete.
- Fix a file-descriptor leak on every scheduled sync that exhausted the process after about 10 days.
- Security:
PATCH /api/settings/authcan no longer overwrite the password hash or session secret;X-Forwarded-Foris only honored withBLACKVUESYNC_TRUST_PROXY, so proxy auth and the login rate limiter can't be spoofed; no public fallback session key; password changes and session rotation sign out other sessions immediately; CSP drops'unsafe-inline'. - Cron schedules follow standard cron: day-of-week
0/7is Sunday (previously Monday), and day-of-month/day-of-week combine with OR. Invalid cron expressions and timezones are rejected, and a bad stored schedule falls back to*/15 * * * *UTC instead of crash-looping. - Settings are type-checked (422 instead of 500);
keep,retry_failed_afterand include/exclude codes use the same parsers as the CLI. BLACKVUESYNC_ADMIN_PASSWORDnow sets the admin password on first start.- Progress counts files rather than recordings, reports already-downloaded files as skipped, and shows early failures such as an unreachable dashcam.
- Viewer: large libraries load. The sidebar lists days and loads a day's recordings when it is opened, thumbnails load lazily, and the server keeps a per-directory index instead of walking every file on each request. A 42,706-recording library previously sent 13.9 MB of JSON and 42,706 thumbnail requests at once and could crash Safari; it now shows the newest day in about 2 s (0.2 s once cached). NAS system folders (
#recycle,@eaDir) are ignored. NewGET /api/viewer/days;GET /api/viewer/recordingstakes?date=. - Viewer: recordings with
L/Supload-flag filenames play; rear-only recordings play once; GPS timing no longer runs ahead of the video;nanspeeds no longer produce invalid JSON. - The web UI shows errors for failed actions, redirects to login when a session expires, and keeps working on pages open longer than an hour.
- Docker:
/configis created and owned by the service user, so the container starts without a/configmount; waitress runs 32 threads; at most 16 live-update streams.