22 Commits

Author SHA1 Message Date
ThaMunsta ab17324f85 feat: add deployment workflows for web, Android, Docker, macOS, and Linux
Build Images and Deploy / Update-PROD-Stack (push) Successful in 34s
2026-03-30 22:00:36 -04:00
SRS IT f5e69fa9cd Fix Android workflow: add contents:write permission for release upload
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 18:29:56 -04:00
SRS IT fe48f9b465 Add Android Capacitor app and build workflow
- apps/android/: Capacitor project wrapping the mobile web UI
- www/index.html: full DWM remote UI with first-run server IP setup screen
- capacitor.config.json: app ID com.dibby.wemo, allowMixedContent enabled
- .github/workflows/build-android.yml: builds debug APK on Ubuntu via Gradle

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 18:20:27 -04:00
SRS IT 3480c75f4c feat: add macOS build, Docker image, and CI workflows
macOS (.dmg):
- Add mac build config to apps/desktop/package.json (x64 + arm64 DMGs)
- .github/workflows/build-mac.yml — builds on macos-latest, uploads to release

Docker (headless scheduler + web remote):
- docker/server.js — Node.js entry point using homebridge-plugin lib;
  REST API + WebSocket, serves mobile web UI on PORT (default 3456)
- docker/package.json — production deps (adm-zip, axios, sql.js, ws, xml2js, xmlbuilder2)
- Dockerfile — node:20-alpine image; VOLUME /data for persistent config
- .github/workflows/build-docker.yml — builds linux/amd64+arm64,
  pushes to ghcr.io/k0rb3nd4ll4s/dibby-wemo-manager

Usage:
  docker run -d --network host -v /opt/wemo:/data \
    ghcr.io/k0rb3nd4ll4s/dibby-wemo-manager:latest

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 16:27:03 -04:00
SRS IT 58f2724d17 fix: add contents:write permission for release uploads 2026-03-29 15:31:27 -04:00
SRS IT 020d43396f fix: add --publish never to prevent electron-builder auto-publish in CI 2026-03-29 14:23:23 -04:00
SRS IT 0aac2b60eb fix: copy bundled app-builder binary to system PATH instead of downloading
app-builder-bin v5 alpha ships the binary inside the npm package itself
(no GitHub release assets). Copy the npm-bundled binary to /usr/local/bin
using the path from require('app-builder-bin').appBuilderPath so
USE_SYSTEM_APP_BUILDER=true can find it in PATH.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 12:35:39 -04:00
SRS IT d8c32b438f fix: install app-builder to system PATH, use USE_SYSTEM_APP_BUILDER
The binary disappears from node_modules between the verify step and the
electron-builder step (likely re-installed/cleared during dep scan).
Install it to /usr/local/bin/ and use USE_SYSTEM_APP_BUILDER=true so
electron-builder looks it up by name in PATH — bypassing all path
resolution and caching issues.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 12:10:20 -04:00
SRS IT 2e9dade24f fix: use CUSTOM_APP_BUILDER_PATH to resolve app-builder binary in CI
app-builder-bin/index.js supports CUSTOM_APP_BUILDER_PATH env var which
overrides the default binary resolution. Set this explicitly on both
Linux build steps to ensure electron-builder finds the binary regardless
of working directory or npm workspace hoisting quirks.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 11:20:29 -04:00
SRS IT c5501c945f debug: diagnose app-builder path from desktop working directory 2026-03-29 00:06:51 -04:00
SRS IT e79ff02141 fix: add app-builder binary download step to Linux workflow
The postinstall script for app-builder-bin does not download the binary
automatically in the GitHub Actions environment. Add an explicit step
to download and chmod the binary before running electron-builder.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 00:04:28 -04:00
SRS IT 37f4a4ea25 fix: move node-windows to optionalDependencies to fix Linux CI build
app-builder runs npm install --production inside the app dir during
packaging. node-windows has a Windows-only postinstall script that
fails on Linux with ENOENT. Moving it to optionalDependencies makes
npm treat install failures as non-fatal on non-Windows platforms.

Also simplify build-linux.yml — removes unnecessary app-builder binary
verification steps that were masking the actual root cause.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 23:56:26 -04:00
SRS IT 2f9f68eca7 debug: add pre-build ldd/file diagnostics before electron-builder 2026-03-28 21:35:03 -04:00
SRS IT 4f4d2a7b61 fix: install from workspace root; add robust app-builder binary fallback 2026-03-28 21:26:52 -04:00
SRS IT b3af43120d fix: install in apps/desktop dir, add ldd debug for app-builder binary 2026-03-28 21:00:30 -04:00
SRS IT 817b91960c fix: use electronuserland/builder Docker image for Linux builds
The app-builder binary (electron-builder's internal tool) fails to spawn
on plain ubuntu-latest runners due to missing shared libraries.

The official electronuserland/builder Docker image has all required
dependencies pre-installed and is the recommended build environment.
This eliminates the ENOENT spawn error entirely.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 20:52:59 -04:00
SRS IT c9ae546d4a fix: use plain npm install, verify app-builder binary separately
- Remove --ignore-scripts (it prevented app-builder-bin postinstall)
- Add binary verification step with fallback postinstall
- Use npm_config_node_windows_skip_install env var for node-windows
- Keep CSC_IDENTITY_AUTO_DISCOVERY=false to skip code signing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 20:48:44 -04:00
SRS IT 9b1a81b968 fix: download app-builder binary explicitly after --ignore-scripts install
--ignore-scripts skipped app-builder-bin postinstall which downloads the
electron-builder binary, causing ENOENT at build time.
Add explicit step: node node_modules/app-builder-bin/install.js

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 20:45:55 -04:00
SRS IT 2790f5a82d fix: robust Linux CI — root workspace install, split build steps, skip codesign
- npm install at root with --ignore-scripts --legacy-peer-deps
  (prevents node-windows and other Windows postinstall scripts failing)
- CSC_IDENTITY_AUTO_DISCOVERY=false disables electron-builder cert search
- Split vite build, standalone bundle, and electron-builder into separate steps
  so failures are easier to identify in CI logs
- Added libarchive-tools for AppImage generation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 20:41:44 -04:00
SRS IT a33a97cefc fix: scope Linux build to desktop workspace, skip Windows postinstall scripts
- Run npm install --ignore-scripts inside apps/desktop only
  (avoids node-windows postinstall breaking on Ubuntu runner)
- Run electron-rebuild explicitly after install
- Run build commands directly in apps/desktop working directory
- arm64 reuses vite output from x64 build step

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 20:36:55 -04:00
SRS IT 3fa94ea6e3 Fix: remove npm cache from workflow (no lock file in repo)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 18:28:05 -04:00
SRS IT 3d98f684cf Add GitHub Actions workflow to build and upload Linux packages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 17:48:56 -04:00