Files
hassio-addons/birdnet-pipy/CHANGELOG.md
Alexandre ced15122d9 Migrate legacy addon_config maps to app_config (#2937) nobuild
* Add one-shot app_config linter migration workflow

* Add app_config linter compatibility action

* Add add-on map compatibility normalizer

* Test add-on map compatibility normalizer

* Run app_config compatibility preparation on pull request

* Validate app_config short and long map forms separately

* Export validated workflow updates

* Use app_config-compatible linter for PR checks

* Use app_config-compatible linter for builds

* Remove temporary linter preparation workflow

* Add one-shot app_config manifest migration

* Migrate legacy addon_config maps to app_config

* Preserve upstream legacy aliases without deprecated literals

* Test legacy alias compatibility without deprecated literals

* Validate completed app_config migration

* Count only add-on manifests during migration validation

* Remove temporary migration validation workflow

* Document legacy alias construction

* Remove obsolete local linter compatibility script

* Remove obsolete local linter compatibility tests

* fix(pr-2937-review): address reviewer findings on app_config migration

- Remove the orphaned .github/actions/addon-linter composite action: it
  references .github/scripts/prepare_addon_lint_config.py, which was never
  added (the normalization approach was superseded by pinning
  frenck/action-addon-linter directly in #2936). Confirmed unused - no
  workflow invokes it.
- cleanuparr: HA_DATA_DIR pointed at /app_configs/cleanuparr, a path not
  mounted inside the container. cleanuparr's map is app_config:rw, which
  Supervisor mounts at /config, so data was living on the ephemeral
  container filesystem. Point it at /config instead (pre-existing bug,
  not introduced by this PR - just carried the wrong path forward).
- joplin/README.md: joplin's config.yaml still declares config:rw, not
  app_config (it was never part of the 86-manifest migration). Revert the
  doc text that incorrectly started calling it the app_config mapping.
- qbittorrent/00-folders.sh: fix a pre-existing copy/paste bug in the
  migration marker/log for the main-folder migration block - it referenced
  "openvpn" and a "qBitorrent" typo instead of qBittorrent.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-09-11 09:30:49 +02:00

9.1 KiB

  • Migrate legacy add-on configuration map names to current app configuration terminology.

0.8.8 (2026-08-22)

0.8.6 (2026-08-13)

0.8.5 (2026-08-01)

0.8.4 (2026-07-13)

0.8.3 (2026-07-11)

0.8.2.1 (2026-07-05)

  • Re-tag of 0.8.2-1 with no content change. Home Assistant compares add-on versions with semver semantics, where a -N suffix counts as a pre-release and sorts below the base version — so users already on 0.8.2 saw the 0.8.2-1 nginx fix as "Up-to-date" with the Update button disabled. Four-segment 0.8.2.1 sorts above both 0.8.2 and 0.8.2-1 (and below the next upstream 0.8.3), so the update becomes installable everywhere.

0.8.2-1 (2026-07-04)

  • Fix nginx failing to start with limit_req_zone "api_rl" already bound (502 on every page, Suncuss/BirdNET-PiPy#59). Upstream 0.8.2 added http-level rate-limit zones, and the ingress config was generated as a full copy of nginx.conf — duplicating those declarations in the shared http context. ingress.conf is now built from the server block only, so http-level directives stay declared once.
  • Comment out the new upstream Content-Security-Policy header in ingress mode, matching the existing X-* security-header handling (ingress runs inside Home Assistant's authenticated frame; direct access keeps the full CSP).

0.8.2 (2026-07-04)

0.7.5 (2026-06-23)

0.7.4 (2026-06-01)

0.7.3 (28-05-2026)

  • Minor bugs fixed

0.7.1 (2026-05-22)

0.7.0-1 (2026-05-19)

  • Serve the API via gunicorn + a gevent-websocket worker instead of the Werkzeug development server

0.7.0 (2026-05-19)

0.6.10 (2026-05-16)

0.6.8 (2026-05-09)

0.6.6-4 (2026-05-02)

  • Fix nginx startup: wait for the upstream API on 127.0.0.1:5002 before starting nginx, instead of the prior sleep 5 workaround. Under s6-overlay all services.d/* services start concurrently, so nginx could begin accepting requests before core.api had bound its port — /api/, /socket.io/, and /internal/auth would then return 502, and that 502 could be cached by an upstream service worker / edge cache (e.g. behind Cloudflare-fronted HA), leaving the UI stuck blank. Uses bashio::net.wait_for to match the pattern in sister addons (bazarr, jellyfin, radarr).

0.6.6-3 (23-04-2026)

  • Minor bugs fixed

0.6.6-2 (23-04-2026)

  • Minor bugs fixed

0.6.6 (2026-04-21)

0.6.4 (2026-04-18)

0.6.3-3 (2026-04-17)

  • Enable Core API access (homeassistant_api: true) so the addon can call HA Core's update.install service. Required for in-app self-update — Supervisor blocks /store/addons/<self>/update, so the backend routes through Core.

0.6.3-2 (2026-04-15)

  • Remove the TZ add-on option. Application timezone is now auto-derived in the Web UI from the station location (latitude/longitude) via timezonefinder, so a separately-configured container TZ only ever duplicated — and occasionally conflicted with — the UI-derived zone. All app-facing timestamps (dashboard, API responses, database) and Python service stdout (api/main/birdnet) already honor the UI-derived zone via the logging formatter; the frontend log viewer also re-converts Icecast timestamps on read. Net effect in the HA addon log pane: Python logs keep their local-time timestamps; only Icecast's raw stdout now prints in UTC — an intentional trade for a single source of truth. Deletes the now-redundant rootfs/etc/cont-init.d/02-timezone.sh added in 0.5.6-2.
  • Clean up the options YAML in DOCS.md and README.md. Removed RECORDING_MODE and RTSP_URL — these were documented as addon options but never wired: the app reads them from user_settings.json (configured via the Web UI), not from env vars. Also dropped http_stream from the list of modes (only pulseaudio and rtsp remain in backend/config/constants.py). Moved STREAM_BITRATE under an env_vars: example since it's honored by start-icecast.sh but has never been a first-class option in the schema.

0.6.3 (2026-04-13)

  • Simplify ingress nginx to a single <base href> rewrite. Upstream now declares <base href="/"> in index.html with Vite base: './' and uses relative paths for all internal URLs (built assets, axios baseURL, socket.io path). The previous seven sub_filter rules (href/src//api//socket.io) are no longer needed — one <base href> replacement is sufficient.
  • Removes incidental brittleness from byte-level sub_filter matches in minified JS bundles (the old /stream/ rule had inadvertently double-prefixed the literal api.get("/stream/config") string).
  • Update to latest version from Suncuss/BirdNET-PiPy (changelog : https://github.com/Suncuss/BirdNET-PiPy/releases)

0.6.2-2 (2026-04-11)

  • Minor bugs fixed

0.6.2 (2026-04-11)

  • Update to latest version from Suncuss/BirdNET-PiPy (changelog : https://github.com/Suncuss/BirdNET-PiPy/releases)
  • Fix Icecast crashing on startup due to log directory permissions (502 Bad Gateway on Live Feed)
  • Fix Live Feed broken in ingress mode — stream config request was double-prefixed by sub_filter

0.6.1 (2026-04-06)

0.6.0 (2026-04-04)

0.5.8 (2026-03-26)

0.5.7 (2026-03-14)

0.5.6-2 (2026-03-11)

  • Add container timezone management: TZ option now properly configures the container timezone (symlinks /etc/localtime, writes /etc/timezone, exports to s6 environment)
  • Change default timezone from Etc/UTC to Europe/Paris

0.5.6 (2026-03-07)

0.5.5-2 (2026-03-04)

  • Minor bugs fixed

0.5.5 (2026-03-02)

0.5.4-3 (2026-02-26)

  • Minor bugs fixed

0.5.4-2 (2026-02-23)

  • Fix Icecast service failing to connect to PulseAudio on HAOS by respecting PULSE_SERVER env var and setting up socket symlink and auth cookie for icecast2 user

0.5.4 (2026-02-21)

0.5.0-6 (2026-02-15)

  • Minor bugs fixed

0.5.0-5 (2026-02-15)

  • Minor bugs fixed

0.5.0-4 (2026-02-15)

  • Disable nginx service when ingress is not active

0.5.0-3 (2026-02-15)

  • Fix nginx startup without ingress by removing templated resolver dependency

0.5.0-2 (2026-02-14)

  • Skip ingress nginx configuration when ingress is not active (empty/invalid ingress port)

0.5.0 (2026-02-14)

0.4.0 (2026-02-07)

0.3.2-6 (2026-02-01)

  • Minor bugs fixed

0.3.2-5 (2026-02-01)

  • Minor bugs fixed

0.3.2-4 (2026-01-31)

  • Minor bugs fixed

0.3.2-2 (2026-01-31)

  • Minor bugs fixed

0.3.2-3 (2026-01-30)

  • Build frontend with /birdnet/ base path and serve under /birdnet/ for ingress compatibility.

0.3.2 (2026-01-30)

Changelog

0.1.0

  • Initial BirdNET-PiPy add-on with ingress support.