Login
You're viewing the aleph.land public feed.
  • Oct 25, 2026, 1:00 PM

    I was curious how many Electron apps I had (it turns out: way too many) and whether any auto-updated b/c the emSign/eMudhra thing is a real weakness, especially if you're using DNS not in your control.

    All it did was rly make me hate this timeline even more.

    Script here — ray.so/UWhETDA — and in alt txt with a warning for screen readers.

    (I need to tweak the /git/* blocking config a bit hence no gist link for this for now)

    Below this is source code so screen readers should stop here.

```bash
#!/usr/bin/env bash

cache="${TMPDIR:-/tmp}/electron-node-versions.tsv"
[ -f "$cache" ] || : >"$cache"

# electron version to node version mapping with spiffy memoization to a $cache
node_version() {
  local ev="${1%%+*}" node raw # strip build metadata (32.2.2+wcus)
  node=$(awk -F'\t' -v v="$ev" '$1 == v { print $2; exit }' "$cache")
  if [ -z "$node" ]; then
    raw=$(npx --yes electron-info electron "$ev" -r 2>/dev/null)
    if [[ $raw =~ node:\ \'([^\']+)\' ]]; then
      node=${BASH_REMATCH[1]}
      printf '%s\t%s\n' "$ev" "$node" >>"$cache"
    fi
  fi
  printf '%s' "${node:-?}"
}

# true if a < b (dotted numeric, e.g. 22.21.1)
ver_lt() {
  local IFS=. i
  local -a a=($1) b=($2)
  for i in 0 1 2; do
    ((${a[i]:-0} < ${b[i]:-0})) && return 0
    ((${a[i]:-0} > ${b[i]:-0})) && return 1
  done
  return 1
}

# Node's compiled-in CA bundle: eMudhra (emSign) intermediates distrusted in
# Node 22.23.4 / 24.22.1 / 26.12.1 (CVE-2026-114406, Oct 2026 ca-cert update)
ca_bundle() {
  local v=$1 major floor
  case $v in '' | '?')
    printf '?'
    return
    ;;
  esac
  major=${v%%.*}
  case $major in
  22) floor=22.23.4 ;;
  24) floor=24.22.1 ;;
  26) floor=26.12.1 ;;
  *)
    if ((major <= 21)); then printf 'EOL'; else printf '?'; fi
    return
    ;;
  esac
  if ver_lt "$v" "$floor"; then printf 'STALE'; else printf 'ok'; fi
}

for a in /Applications/*.app; do
  p="$a/Contents/Frameworks/Electron Framework.framework/Resources/Info.plist"
  [ -f "$p" ] || p="$a/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/Info.plist"
  [ -f "$p" ] || continue
  ev=$(defaults read "$p" CFBundleVersion 2>/dev/null)
  nv=$(node_version "$ev")
  printf '%s\t%s\t%s\t%s\t%s\n' "$(basename "$a" .app)" \
    "$(defaults read "$a/Contents/Info.plist" CFBundleShortVersionString 2>/dev/null)" \
    "$ev" \
    "$nv" \
    "$(ca_bundle "$nv")"
done | sort -u
```
    **Alt text:** A screenshot of a terminal window showing a table of software version numbers and status indicators marked as either "STALE" or "EOL."

**Detailed Narrative:**

The image is a screenshot of a command-line interface (CLI) with a black background and white text. At the top, a command has been executed: `electric-certs.sh | column -t -s $'\t'`, which pipes the output of a script into a formatting command to create a clean table.

The resulting output is a table with five columns of data:

1.  **Software Identifier:** The first column lists the names of various software tools (omitted here).
2.  **Current Version:** The second column shows a version number for each entry.
3.  **Reference Version 1:** The third column contains a first set of reference version numbers.
4.  **Reference Version 2:** The fourth column contains a second set of reference numbers.
5.  **Status:** The final column marks each entry as either **"STALE"** or **"EOL"** (End of Life).

The table contains approximately 40 rows of data following this consistent pattern of version tracking and status reporting.
    💬 0🔄 1⭐ 0