diff --git a/.claude/skills/hassio-addon-workflow/references/traps.md b/.claude/skills/hassio-addon-workflow/references/traps.md index aade569a08..bcadcd6c11 100644 --- a/.claude/skills/hassio-addon-workflow/references/traps.md +++ b/.claude/skills/hassio-addon-workflow/references/traps.md @@ -220,6 +220,14 @@ Assistant **ignores** the add-on's `shm_size`, so the real size varies per insta on one host. Detect at runtime rather than assuming either way; keep the flag when the size cannot be determined, because the crash it prevents is worse than its overhead. +**Not every Electron app accepts arbitrary Chromium switches.** Joplin parses its own argv +against an allow-list and aborts on anything else: `--disable-dev-shm-usage` produced +`An error occurred: Unknown flag: --disable-dev-shm-usage` and no app window +(`packages/lib/utils/processStartFlags.ts`; it accepts `--no-sandbox`, `--ozone-platform=`, +`--disable-gpu` and a few others). The build-time `grep` that "verified" the flag only proved +the text was in the wrapper, not that the app tolerated it. Check the app's argument parser before +passing a Chromium flag to anything that is not Chromium itself (joplin_desktop, PR #3112, fixed in the follow-up PR). + ## CI and review bots **What CI actually gates** — checked against the workflows, because assuming costs a cycle. diff --git a/joplin_desktop/CHANGELOG.md b/joplin_desktop/CHANGELOG.md index fa60707684..3b9e4d0dae 100644 --- a/joplin_desktop/CHANGELOG.md +++ b/joplin_desktop/CHANGELOG.md @@ -1,4 +1,7 @@ +## 3.7.21.1 (2026-10-11) +- Fix Joplin not opening ("An error occurred: Unknown flag: --disable-dev-shm-usage"): Joplin only accepts its own list of command-line flags, so the extra Chromium flag added in 3.7.21 is removed + ## 3.7.21 (2026-10-11) - Initial release: Joplin desktop streamed to the browser with Selkies, based on linuxserver/docker-joplin (amd64 only, as Joplin publishes no Linux arm64 build) - Shares the Selkies startup scripts with the webtop and claude_desktop add-ons (data location, GPU permissions, ingress, SSL) diff --git a/joplin_desktop/Dockerfile b/joplin_desktop/Dockerfile index 7d296660a1..ac2065ccff 100644 --- a/joplin_desktop/Dockerfile +++ b/joplin_desktop/Dockerfile @@ -57,13 +57,6 @@ RUN chmod 744 /ha_lsio.sh && if grep -qr "lsio" /etc; then /ha_lsio.sh "$CONFIGL COPY rootfs/ / RUN find . -type f \( -name "*.sh" -o -name "run" -o -name "finish" \) -print -exec chmod +x {} \; -# Docker's default /dev/shm is 64 MB and Home Assistant ignores an add-on's shm_size, while -# LinuxServer documents 1 GB as needed for Electron apps. Make Chromium keep its shared memory -# out of /dev/shm, as claude_desktop does when /dev/shm is small. The grep fails the build if a -# future upstream wrapper no longer has the --no-sandbox anchor, instead of shipping without it. -RUN sed -i 's|--no-sandbox|--no-sandbox --disable-dev-shm-usage|' /usr/bin/joplin && \ - grep -q -- '--disable-dev-shm-usage' /usr/bin/joplin - # Uses /bin for compatibility purposes # hadolint ignore=DL4005 RUN if [ ! -f /bin/sh ] && [ -f /usr/bin/sh ]; then ln -s /usr/bin/sh /bin/sh; fi && \ diff --git a/joplin_desktop/config.yaml b/joplin_desktop/config.yaml index 546c18feaa..38c82a81c5 100644 --- a/joplin_desktop/config.yaml +++ b/joplin_desktop/config.yaml @@ -103,5 +103,5 @@ schema: slug: joplin_desktop udev: true url: https://github.com/alexbelgium/hassio-addons/tree/master/joplin_desktop -version: "3.7.21" +version: "3.7.21.1" video: true