Something went wrong. Try again.
Monorepo for Aesthetic.Computer aesthetic.computer
Something went wrong. Try again.
4.7 kB
Markdown
Building Aesthetic Computer Desktop App #
Quick Start (Unsigned Builds) #
Build for all platforms from this devcontainer:
cd /workspaces/aesthetic-computer/ac-electron
./build-all-platforms.fish
This will create:
- Linux: AppImage, deb, rpm (✅ works in devcontainer)
- Windows: exe (✅ works via Docker wine container)
- macOS: dmg (⚠️ requires macOS host or CI/CD)
Setup for Signed Builds #
1. Add Signing Certificates to Vault #
cd /workspaces/aesthetic-computer/aesthetic-computer-vault/ac-electron
# Add your certificates (see README.md in this directory)
# - mac-developer-id.p12
# - windows-code-signing.pfx
# etc.
# Create .env from template
cp .env.template .env
# Edit .env and add your credentials
emacs .env # or your preferred editor
2. Run the Build #
cd /workspaces/aesthetic-computer/ac-electron
./build-all-platforms.fish
The script will:
- Load credentials from vault
- Build Linux packages natively
- Build Windows .exe using Docker wine container
- Skip macOS (requires macOS host)
- Sign all packages with your certificates
Platform-Specific Builds #
Linux Only (Native) #
npm run build:linux
Creates:
Aesthetic Computer-{version}-x86_64.AppImageAesthetic Computer-{version}-amd64.debAesthetic Computer-{version}-x86_64.rpm
Windows Only (via Docker) #
docker run --rm \
-v $(pwd):/project \
electronuserland/builder:wine \
bash -c "cd /project && npm run build:win"
Creates:
Aesthetic Computer-Setup-{version}.exe
macOS Only (requires macOS) #
# On a Mac:
npm run publish:mac
# Or just build without publishing:
npm run build:mac
Creates:
Aesthetic Computer-{version}-universal.dmg(Apple Silicon + Intel)
Signed macOS Build + Silo Publish from Devcontainer #
Run the host-driven flow (build/sign on your Mac GUI session, then upload/register via silo):
cd /workspaces/aesthetic-computer/ac-electron
# One-time: export Developer ID cert to vault for non-interactive signing
npm run setup:host:mac-signing
# Build + publish
npm run release:host:mac
Useful flags:
# Build/sign only
bash scripts/build-publish-host-mac.sh --skip-publish
# Include release notes
bash scripts/build-publish-host-mac.sh --notes "UI cleanup"
# Validate publish payload without uploading
bash scripts/build-publish-host-mac.sh --dry-run-publish
Publishing to GitHub Releases #
Automatic (via GitHub Actions) #
# Bump version and push tag
node scripts/release-electron.mjs --bump patch
# GitHub Actions will build and publish automatically
Manual #
# Build locally
./build-all-platforms.fish
# Create GitHub release and upload artifacts
VERSION=$(cat package.json | jq -r .version)
gh release create v$VERSION \
--title "v$VERSION - Release Title" \
--notes "Release notes here" \
dist/*.AppImage \
dist/*.deb \
dist/*.rpm \
dist/*.exe
Cross-Platform Build Matrix #
| Platform | Build From | Signing | Notes |
|---|---|---|---|
| Linux AppImage | ✅ Devcontainer | ❌ Not signed | Works out of box |
| Linux deb/rpm | ✅ Devcontainer | ❌ Not signed | May fail without libcrypt.so.1 |
| Windows exe | ✅ Devcontainer (Docker) | ✅ Authenticode | Requires wine Docker container |
| macOS dmg | ❌ Requires macOS | ✅ Developer ID | Use GitHub Actions or Mac |
Troubleshooting #
"libcrypt.so.1 not found" (deb/rpm build) #
This is a Fedora 43 issue. AppImage still works. To fix:
# Install compat library
sudo dnf install libxcrypt-compat
Or skip deb/rpm and use AppImage:
npm run build -- --linux AppImage
Docker not available #
Install Docker in the devcontainer or on your host system.
macOS build fails on Linux #
macOS builds cannot run on Linux. Options:
- Use GitHub Actions (automatic on tag push)
- Run on a Mac locally
- Use a macOS cloud VM (MacStadium, AWS EC2 Mac, etc.)
Size Optimization #
Current build sizes (~100MB) can be reduced by:
-
Remove unused dependencies
npm prune --production -
Use asar archive (already enabled in package.json)
-
Enable compression in
package.json:"compression": "maximum" -
Exclude dev files - add to
package.json"files" exclusions
CI/CD Integration #
The .github/workflows/electron-release.yml workflow builds all platforms:
- Trigger: Push git tag
v* - Builds: macOS (universal), Windows (x64), Linux (AppImage/deb/rpm)
- Publishes: Automatically to GitHub Releases
Just push a version tag and wait for builds to complete!