Skip to content

Releases: NightHawkATL/ntp-dashboard

Fix Release v0.1.5

17 Apr 21:22
eceb3a1

Choose a tag to compare

I totally messed up the releases this week and I am trying to get things fixed. I know that the latest release shows main for the version and that the upgrade indicator won't stop blinking. Previous fixes didn't help so I am stepping up the release to see if this fixes the issue. A new version should be built and the correct version should then be shown and released.

Release v0.1.4

17 Apr 21:11
4e4a32a

Choose a tag to compare

This release is fairly uneventful but still worthy of a release. Continuing on the work to make sure that packages are updated, fixable vulnerabilities are patched and GitHub actions are run with care and provide the information needed. I had noticed an issue when running local-only (on the NTP server) that the gpspipe data kept disappearing so I made a change to refresh the data on a tab change for both local and remote connections.

What's Changed 💡

  • GPS polling logic: Increased timeout, improved partial-output parsing, and ensured robust polling for both local and remote modes.
  • Dockerfile: Added all required Alpine build dependencies (build-base, libffi-dev, openssl-dev, python3-dev) to resolve cffi/cryptography install issues and ensure consistent builds.

What was fixed 🛠️

  • Resolved GPS polling dropouts and ensured dashboard stability when switching tabs or modes.
  • Addressed Docker build failures related to Python native dependencies.
  • Confirmed no regressions in dashboard polling, tab switching, or client listing.

What was updated 💾

  • Security workflows: Forced Node.js 24 for all GitHub Actions due to Node.js 20 deprecation.
  • Integrated and validated grype scans; confirmed that critical CVEs (notably CVE-2025-67268 in gpspipe) are non-fixable and mitigated by default (gpsd not installed unless explicitly enabled).
  • All PRs merged and workflows passing for this release.

Weekly Security Scan Report

  • Generated: 2026-04-15 12:14 UTC
  • Target branch scanned: pre-update-release
  • Grype image tag used: v0.111.0

Release Notes Summary

  • Total findings across all scans: 35
  • Critical findings: 2
  • High findings: 8
  • Medium findings: 23

Vulnerability Summary

Scan Target Total Critical High Medium Low Negligible Unknown
Repository source 0 0 0 0 0 0 0
Local image build 35 2 8 23 1 1 0
Latest released image 0 0 0 0 0 0 0

What's Changed

Full Changelog: v0.1.3...v0.1.4

Fix Release v0.1.3

10 Apr 13:30
a5f35d4

Choose a tag to compare

Now that all of the Remote SSH connectivity is fixed, I wanted to make sure that the Local deployment gets the same treatment. I did some testing with my NTP server on a Raspberry Pi 4 and noticed the clients list was empty and it was giving an error. This has been fixed and the compose YAML has been updated to reflect needing a new bind mount volume for /run/chrony:/run/chrony. There were fixes made to how the image is built to maintain the update path and make sure that any vulnerabilities are handled with the fix versions in a timely manner. Another release with lots of small tweaks but ending in a more stable release with a few fixes and better upgrade paths behind-the-scenes.

What’s Changed💡

  • Added a Dependabot Grype Guard workflow to evaluate Dependabot PRs against base-image scan results and block new High/Critical regressions.
  • Added a Grype remediation suggestions workflow that generates/updates a tracking issue from weekly scan artifacts.
  • Added a repository pull request template to standardize intent and scope in PR descriptions.

What Was Fixed🛠️

  • Corrected local Chrony client handling so API behavior and messaging are consistent for local socket-based deployments.
  • Resolved security workflow execution issues (invalid YAML structures, dispatch input handling, and artifact retrieval pathing).
  • Fixed documentation contradictions around local mode support and deployment requirements.

What Was Updated💾

  • Shifted Dependabot schedule to run later on Wednesday to support the Grype-first security process.
  • Forced JavaScript GitHub Actions in remediation flow to run on Node 24.
  • Updated container hardening baseline to align with remediation recommendations, including patched Python/Alpine image usage and package refresh during build.

Weekly Security Scan Report

  • Generated: 2026-04-08 19:54 UTC
  • Target branch scanned: pre-update-release
  • Grype image tag used: v0.110.0

Release Notes Summary

  • Total findings across all scans: 45
  • Critical findings: 0
  • High findings: 9
  • Medium findings: 28

Vulnerability Summary

Scan Target Total Critical High Medium Low Negligible Unknown
Repository source 0 0 0 0 0 0 0
Local image build 45 0 9 28 7 1 0
Latest released image 0 0 0 0 0 0 0

Pull Request List

  • fix(pwa): harden cache refresh and service worker update flow by @NightHawkATL in #84
  • fix(security): apply v0.1.2 fixable Grype remediations by @NightHawkATL in #85
  • fix(docker): remove zlib pin regression in Dockerfile by @NightHawkATL in #87
  • fix(clients): handle chronyc 501 not authorised with fallback by @NightHawkATL in #88
  • fix(clients): add sudo fallback chain when 501 persists by @NightHawkATL in #89
  • fix(clients): improve local 501 handling and troubleshooting guidance by @NightHawkATL in #90
  • Add chrony volumes for local deployments by @NightHawkATL in #91
  • Bump python from 3.13-alpine3.21 to 3.14-alpine3.21 by @dependabot[bot] in #93
  • Bump cryptography from 46.0.6 to 46.0.7 by @dependabot[bot] in #94
  • ci: fix grype-remediation-suggestions trigger, run ID resolution, underfixed false-positives, and least-privilege by @NightHawkATL in #96
  • CI: finalize Grype remediation + Dependabot guard workflows by @NightHawkATL in #97
  • fix: remove hard-coded branch filter from workflow_dispatch fallback in grype-remediation-suggestions by @NightHawkATL in #98
  • ci: fix grype remediation workflow runner exit 2 by @NightHawkATL in #99
  • Fix Grype remediation workflow artifact download by @NightHawkATL in #100
  • ci: force Node 24 for remediation workflow actions by @NightHawkATL in #103
  • Security: apply Grype remediation recommendations (refs #101) by @NightHawkATL in #104
  • Security: apply Grype remediation recommendations (refs #101) by @NightHawkATL in #106
  • docs: add default PR template for intent clarity by @NightHawkATL in #107
  • Fix local clients fallback regression in local mode by @NightHawkATL in #108
  • CI: fix Grype remediation workflow regressions and force Node 24 by @NightHawkATL in #110
  • Weekly pre-update-release merge to main (wk 2) by @NightHawkATL in #92

Full Changelog: v0.1.2...v0.1.3

Bug Fix Update v0.1.2

03 Apr 13:07
a43e285

Choose a tag to compare

This release comes with a ton of small fixes and updates here and there. I have added a weekly review of the image after all work has been completed for the week (cut-off Tuesday night [UTC]). This will scan with the latest DB from anchore/grype and create a result of the scan for release updates.

What's Changed 💡

  • Replaced DEBUG_MODE boolean with standard [LOG_LEVEL] environment variable (DEBUG / INFO / WARNING / ERROR / CRITICAL)
  • LOG_LEVEL now enforced globally across Flask and Werkzeug loggers (no more INFO leaking at WARNING level)
  • Added comprehensive structured logging to container output: startup config, SSH errors, command failures, API errors

What's Fixed 🛠️

  • PWA icon path corrected in [manifest.json] and [sw.js] to match actual image filename (ntp-dashboard-logo.png)
  • Added rel="noopener noreferrer" to all external footer links with [target="_blank"]
  • GPS error path in [dashboard.js] now uses safe [textContent] rendering instead of innerHTML
  • Dockerfile case-sensitivity fix for Linux local builds
  • Rare condition of gpspipe not showing data when returning to the dashboard

What's Updated 💾

  • gpsd-clients made optional via INSTALL_GPSD_CLIENTS build arg as mitigation for CVE-2025-67268 — users on Alpine should await upstream patch before enabling
  • Published security advisory GHSA-6wrg-2rh8-j35j documenting CVE-2025-67268 status and mitigation
  • Weekly Grype security scan workflow added (Wednesday 12:00 UTC, targeting pre-update-release) to scan for vulnerabilities and provide the results in a table for each release (as seen below)
  • Dependabot configured for pip, Docker, and GitHub Actions on weekly Wednesday schedule

Weekly Security Scan Report

  • Generated: 2026-04-02 17:03 UTC
  • Target branch scanned: pre-update-release
  • Grype image tag used: v0.110.0

Release Notes Summary

  • Total findings across all scans: 16
  • Critical findings: 0
  • High findings: 3
  • Medium findings: 10

Vulnerability Summary

Scan Target Total Critical High Medium Low Negligible Unknown
Repository source 0 0 0 0 0 0 0
Local image build 16 0 3 10 3 0 0
Latest released image 0 0 0 0 0 0 0

PR List

New Contributors

Full Changelog: v0.1.1...v0.1.2

Security Update v0.1.1

27 Mar 12:41
7f92a11

Choose a tag to compare

This release covers quite a few dependencies that were found during the development and testing while working on the initial app build and getting everything working as expected. Dependabot has joined the team to make sure that the app stays local, secure, and vulnerabilities are squashed in a timely manner! Lets all welcome them to the team!

]{}{}{}[ 🎉🎊 ]{}{}{}[

This initial release after launching the beta version is focused on improvements within the code and packages. Any new updates on coding and security will be delivered on a weekly cadence unless there are circumstances that arise needing a sooner release.

What's Changed

New Contributors

Full Changelog: v0.1.0...v0.1.1

Update v0.1.0

25 Mar 15:50
af6886a

Choose a tag to compare

This release marks the move from alpha to beta! All roadmap items have been completed (more will be added later), along with support for SSH keys to further secure the SSH connection to the "remote" connection to your personal NTP server.

This release includes themes for changing colors of the interface to better match your favorite color, mood, style, or day. The themes are stored locally on your computer in the browser cache. This means you can have a different theme for each computer, browser, or device that you are viewing the dashboard with.

I appreciate all who helped me test the functions and features to make this app what it is today. The app will be left as it stands today until security patches are needed or I think of some other roadmap items or features that would be nice to have. Feel free to open an issue to suggest features that you think would be nice additions to the app.

What's Changed

Full Changelog: v0.0.9...v0.1.0

Update v0.0.9

24 Mar 12:44
acc267e

Choose a tag to compare

Whew, this has been a fun exercise in app releases! With this release, we are 1 version away from v0.1.0!

This release changes the underlying OS from Debian to Alpine to further shrink the image size and make it not feel so "heavy". The idea is to make this a fast update, fast load, and easy to access. This release also adds the Light/Dark/System buttons rather than a big toggle button for light and dark mode and introduces an update notification in the footer so that anyone using the app can be notified of a pending update.

Its been huge fun seeing this come to life and working as expected. I hope any and all who are using this are enjoying the added features!

What's Changed

Full Changelog: v0.0.8...v0.0.9

Update v0.0.8

23 Mar 12:48
15dc446

Choose a tag to compare

This release marks yet another roadmap item off the list. The image size has been reduced tremendously by removing packages that aren't needed and cleaning up the code more.

What's Changed

Full Changelog: v0.0.7...v0.0.8

Update v0.0.7

22 Mar 20:06
72d90f3

Choose a tag to compare

Fixed a typo in app.py and bumped the version to reflect.

What's Changed

Full Changelog: v0.0.6...v0.0.7

Update v0.0.6

22 Mar 19:35
b432326

Choose a tag to compare

Marked another roadmap item off with this one. PWA is now officially supported. If you are hosting this through a reverse proxy and you have HTTPS, you should see a button on iOS/Android devices to "install" as an app. If you are accessing it local-only without a reverse proxy, then you will just need to use your respective browser (Safari/Chrome) to "Add to Home Screen" and still take full advantage of the PWA features.

What's Changed

Full Changelog: v0.0.5...v0.0.6