The bashio-standalone.sh library writes log output to stdout (fd 1), not to
a preserved LOG_FD like the real bashio library. When bashio::log.info calls
were inside the { ... } > Settings.yaml block in immich_frame's 99-run.sh,
log messages leaked into the generated YAML file, corrupting it and causing
ImmichFrame to fail to parse account configuration correctly.
Changes:
- bashio-standalone.sh: redirect log output to LOG_FD (if available) or
stderr, matching real bashio behavior
- bashio-standalone.sh: add missing bashio::log.fatal and bashio::log.notice
aliases
- immich_frame 99-run.sh: move all bashio::log calls outside the
{ ... } > Settings.yaml block so only YAML content goes to the file
Agent-Logs-Url: https://github.com/alexbelgium/hassio-addons/sessions/87f542ba-1e4a-4b71-a787-e979818997df
Co-authored-by: alexbelgium <44178713+alexbelgium@users.noreply.github.com>
Adds `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.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The app derives its timezone from station lat/lng via timezonefinder
(Settings → Location in the Web UI), so a separate addon-level TZ only
ever created mismatch with the UI-derived zone. All app-facing timestamps
(dashboard, API, DB) and Python service stdout (api/main/birdnet) already
honor the UI zone via logging_config.py's formatter, and the frontend log
viewer re-converts Icecast timestamps on read.
Net effect in the HA addon log pane: Python services still show the
correct local time; only Icecast's raw stdout now prints in UTC (accepted
trade for a single source of truth). Deletes
rootfs/etc/cont-init.d/02-timezone.sh added in 0.5.6-2.
Also cleans up the options YAML in DOCS.md/README.md: drops
RECORDING_MODE and RTSP_URL (never wired — app reads them from
user_settings.json), drops http_stream from the modes list, and moves
STREAM_BITRATE under an env_vars: example since it's honored by
start-icecast.sh but not a schema option.
Bumped to 0.6.3-2 (addon-only, no upstream app change).
Upstream 0.6.3 consolidates deployment-path handling into a single
<base href> declaration in index.html with Vite base: './' and
relative paths for all internal URLs. The previous seven sub_filter
rules (href/src/'/api'/'/socket.io') are no longer needed — one
<base href> replacement is sufficient.
Also removes the incidental brittleness from byte-level sub_filter
matches in minified JS bundles (the '/stream/' rule inadvertently
double-prefixed the literal 'api.get("/stream/config")' string).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove the nginx rewrite directive that could cause URL normalization/re-encoding
issues with special characters in query strings (like spaces encoded as +).
HA Supervisor strips the ingress prefix before forwarding, making the rewrite
unnecessary. Without it, proxy_pass uses the raw $request_uri which preserves
URL encoding.
Also fix Connection header from hardcoded "upgrade" to $connection_upgrade
map variable for proper WebSocket vs regular HTTP request handling.
Agent-Logs-Url: https://github.com/alexbelgium/hassio-addons/sessions/3982b002-dfcb-4eb5-98c2-913f665b6a07
Co-authored-by: alexbelgium <44178713+alexbelgium@users.noreply.github.com>
Two fixes for the birdnet-pipy addon:
1. Icecast log permission error: 01-structure.sh creates /app/data/logs
as root, but start-icecast.sh runs via gosu icecast2. The first log
write fails with "Permission denied", crashing icecast in a restart
loop (502 Bad Gateway on the Live Feed page). Fix: chown the log dir
and file to icecast2 before dropping privileges.
2. Live Feed double-prefixed request in ingress mode: the "/stream/"
sub_filter rule also matches 'api.get("/stream/config")' in the JS
bundle, producing a request like
/hassio_ingress/TOKEN/api/hassio_ingress/TOKEN/stream/config (404).
The upstream frontend (BirdNET-PiPy >= 0.6.2) now strips the leading
slash from stream URLs so they resolve via <base href> — the
sub_filter rule is no longer needed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>