← Commit history
._README.mdadded
⋯ 1 unchanged line ⋯
._SKILL.mdadded
⋯ 1 unchanged line ⋯
._install.shadded
⋯ 1 unchanged line ⋯
._package.jsonadded
⋯ 1 unchanged line ⋯
._uninstall.shadded
⋯ 1 unchanged line ⋯
._version.jsonadded
⋯ 1 unchanged line ⋯
dist/linux/._adom-desktopadded
⋯ 1 unchanged line ⋯
docs/._hero.pngadded
⋯ 1 unchanged line ⋯
docs/._screenshot-fusion.pngadded
⋯ 1 unchanged line ⋯
docs/._screenshot-gui.pngadded
⋯ 1 unchanged line ⋯
docs/._screenshot-kicad.pngadded
⋯ 1 unchanged line ⋯
docs/._screenshot-pup.pngadded
⋯ 1 unchanged line ⋯
install.sh+37−25
@@ -1,28 +1,44 @@ #!/usr/bin/env bash-# adom-desktop installer — runs in the Adom container via `adompkg install`.+# adom-desktop installer — installs cleanly under adom-wiki (the official wiki CLI; adompkg retired). #-# Bundled-artifact model (v1.8.147+): the Linux CLI companion + the Claude skill-# bundle ship INSIDE this package's tarball (dist/linux/, skills/). We SYMLINK-# them onto PATH / into ~/.claude/skills via the adompkg sh-helpers — the-# lint-sanctioned convention (no copy-into-standard-targets). No download, no-# version.json dependency: the binary is right here, SHA-fixed by the published-# tarball.+# Bundled-artifact model: the Linux CLI companion + the Claude skill bundle ship INSIDE this+# package's tarball (dist/linux/, skills/). We SYMLINK them onto PATH / into ~/.claude/skills.+# SELF-CONTAINED: no dependency on any package-manager's shell helpers (formerly+# `source "$(adompkg sh-helpers)"`), so it works under adom-wiki, adompkg, or a bare run. #-# What it does NOT do: install the Windows/macOS GUI. That runs on the user's-# laptop; the signed Windows installer is bundled at dist/win/ for Hydrogen-# Desktop to pull + run there. The skills tell Claude how to get the GUI onto-# the laptop.+# What it does NOT do: install the Windows/macOS GUI. That runs on the user's laptop; the signed+# Windows installer is bundled at dist/win/ for Hydrogen Desktop to pull + run there. set -euo pipefail HERE="$(cd "$(dirname "$0")" && pwd)"-cd "$HERE"   # sh-helpers symlink FROM $PWD; `adompkg install` sets cwd here too.+cd "$HERE"   # install runs with cwd = the extracted module dir (adom-wiki/adompkg both set it). -# adompkg shell helpers: adompkg-link-bin / adompkg-link-skill (ln -sfn ...).-if ! command -v adompkg >/dev/null 2>&1; then-  echo "[adom-desktop] FATAL: adompkg not on PATH — install via 'adompkg install adom-desktop'." >&2-  exit 1-fi-# shellcheck disable=SC1090-source "$(adompkg sh-helpers)"+# Self-contained symlink helpers (replacing adompkg-link-bin / adompkg-link-skill). Convention:+# every install target is a symlink back into the module dir, so edits propagate and reinstalls+# don't clobber. Portable (no GNU-only `ln -T`): a real-dir squatter is replaced first.+link_bin() {  # <name> [relative-path, default bin/<name>]+  local name="$1" rel="${2:-bin/$1}" target="${ADOM_BIN_DIR:-$HOME/.local/bin}"+  mkdir -p "$target"+  if [ -L "$target/$name" ]; then+    local existing; existing="$(readlink "$target/$name" 2>/dev/null || true)"+    [ -n "$existing" ] && [ "$existing" != "$PWD/$rel" ] && \+      echo "WARNING: $target/$name already points to $existing — overwriting (two packages claim '$name')." >&2+  fi+  ln -sfn "$PWD/$rel" "$target/$name"+  chmod +x "$PWD/$rel" 2>/dev/null || true+  echo "Linked $target/$name -> $PWD/$rel"+}+link_skill() {  # <slug> [relative-path, default skills/<slug>]+  local slug="$1"+  [ -n "$slug" ] || { echo "ERROR: link_skill: empty slug — refusing." >&2; return 1; }+  local rel="${2:-skills/$slug}" target="$HOME/.claude/skills" dest+  dest="$target/$slug"; mkdir -p "$target"+  [ -e "$PWD/$rel" ] || { echo "ERROR: link_skill: source '$PWD/$rel' missing — refusing (dest untouched)." >&2; return 1; }+  # A NON-symlink real dir (e.g. from another installer) squatting the slug would make ln nest+  # inside it as <slug>/<slug>; replace it instead.+  [ -e "$dest" ] && [ ! -L "$dest" ] && { echo "WARNING: '$slug' was a real dir — replacing with symlink." >&2; rm -rf "$dest"; }+  ln -sfn "$PWD/$rel" "$dest"+  echo "Linked $dest -> $PWD/$rel"+}  OS="$(uname -s | tr '[:upper:]' '[:lower:]')" case "$OS" in@@ -33,8 +49,7 @@ case "$OS" in       exit 1     fi     chmod +x "$CLI"-    # Symlink ~/.local/bin/adom-desktop -> $PWD/dist/linux/adom-desktop.-    adompkg-link-bin adom-desktop "$CLI"+    link_bin adom-desktop "$CLI"          # ~/.local/bin/adom-desktop -> $PWD/dist/linux/adom-desktop     case ":$PATH:" in       *":$HOME/.local/bin:"*) ;;       *) echo "[adom-desktop] NOTE: $HOME/.local/bin is not on PATH — add it to your shell rc." ;;@@ -54,14 +69,11 @@ case "$OS" in esac  # Claude skill bundle — symlink each skills/<slug>/ into ~/.claude/skills/<slug>.-# Slugs staged at publish time: adom-desktop, adom-desktop-pup, adom-desktop-kicad,-# adom-desktop-fusion, adom-desktop-direct-api, adom-desktop-installer,-# adom-desktop-discovery. if [ -d "skills" ]; then   for d in skills/*/; do     [ -f "$d/SKILL.md" ] || continue     slug="$(basename "$d")"-    adompkg-link-skill "$slug" "skills/$slug"+    link_skill "$slug" "skills/$slug"   done fi 
page.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "adom-desktop",-  "version": "1.9.41",+  "version": "1.9.42",   "type": "app",   "description": "Laptop bridge: file transfer, screenshots, notifications, KiCad + Fusion 360 control, real-Chrome (Puppeteer) automation, and Hydrogen Desktop proxy. One install gives Claude every desktop verb it needs.",   "keywords": [