mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-08-19 11:27:21 +02:00
* fix(webtop,webtop_kde,claude_desktop): give Selkies XDG_RUNTIME_DIR and the right WS port Selkies panics with `RuntimeDirNotSet` right after its data websocket server comes up, and binds that server on 8081 while nginx proxies 8082. Upstream relies on s6-rc ordering: init-selkies-config publishes XDG_RUNTIME_DIR and CUSTOM_WS_PORT into the s6 envdir, and svc-selkies is started afterwards. ha_entrypoint.sh replaces s6-overlay and launches every s6-rc.d run script in parallel with no dependency graph, so a longrun can snapshot the envdir (with-contenv reads it once, at exec) before the oneshot has written to it. Port 8081 in the report is the proof: that is selkies' own default, not the 8082 init-selkies-config writes near the end of its run. Only the webtop images carry PIXELFLUX_WAYLAND=true, which is why the missing runtime dir reaches a Wayland socket bind there and not on claude_desktop. 20-folders.sh now exports both variables inside each run script, where no start ordering can lose them, and 90-ingress.sh derives the nginx CWS substitution from the same value. Also correct the base image's $HOME/.XDG override where that write happens rather than appending a correction to init-selkies-config: the oneshot tolerance block appends `exit 0`, so on every boot after the first the appended correction sat past it and never ran. 81-microsoft_edge.sh (webtop only), addressing the open review comments on PR #2920: - apt-get/dpkg failures no longer abort cont-init; each is guarded, warns and exits 0, and apt acquisition is bounded so a stalled mirror cannot hang start-up - quote ${EDGE_VERSION+x} - gate the wrapper swap on /helpers/microsoft-edge-stable still existing, so a second run cannot move the installed wrapper aside with nothing to replace it Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * fix(claude_desktop): inject the run-script exports after the data_location rewrite Two findings from an independent review of the previous commit. The `s|$DEFAULT_LOCATION|$LOCATION|g` pass over the s6-rc.d run scripts is a blind textual substitution, and it ran after the export injection. A data_location *under* the image default -- /config/data_kde/foo on an image whose default is /config/data_kde -- therefore rewrote the freshly injected `export HOME=/config/data_kde/foo` into `.../foo/foo`. Injecting after the rewrite instead of before removes the double substitution. Quote the injected values so a location containing whitespace cannot produce a broken run script. XDG_CACHE_HOME stays unquoted: the loop greps for it as its idempotence marker. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * fix(webtop,webtop_kde,claude_desktop): address review feedback on the Selkies env fix Refresh the injected run-script exports on every boot (codex, coderabbit). They were guarded by the XDG_CACHE_HOME sentinel, so they were written once and then survived in the writable layer. Raising PUID left every service exporting a /run/user/<old-uid> the remapped abc user cannot use, and clearing a custom CUSTOM_WS_PORT left Selkies on the old port while 90-ingress.sh moved nginx back to 8082 -- with the envdir written at the same boot disagreeing with both. The exports now sit in a marked managed block that is stripped and rewritten each boot, mirroring how the ~/.bashrc block in the same script already works. The sweep also removes the bare exports earlier versions wrote, so an upgraded container cannot end up with two sets. No upstream run script in these images sets any of the five, so it only ever removes our own. Validate CUSTOM_WS_PORT once, where it enters (coderabbit). It is interpolated into generated shell and into a sed replacement, so a non-numeric or out-of-range value could corrupt a run script or the nginx config. 90-ingress.sh repeats the check rather than trusting the envdir, so a malformed value cannot reach the nginx config if 20-folders.sh did not get that far. Download Edge to an mktemp path instead of a fixed /tmp/edge.deb (coderabbit). This runs as root against a world-writable tmpfs, where a predictable name can be pre-created as a symlink to redirect the download or swap what is installed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>