Compare commits

..

3 Commits

Author SHA1 Message Date
michael
2c9f7b8495 Fix showcase release: build all design system packages
Replace selective turbo filters with full build to ensure all
dependencies (tokens, web, tailwind-preset, hex-background, react)
are available for both desktop and mobile showcase builds.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 12:04:53 -07:00
michael
b137a99c78 Fix showcase release: add tailwind-preset to build filter
Desktop showcase depends on @dangerousthings/tailwind-preset
via its Tailwind config. Add it to the turbo build filter
alongside tokens and web.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 11:40:42 -07:00
michael
4f477a50d8 Add Windows and macOS builds to showcase release workflow
- Add desktop-windows job (NSIS installer + portable exe)
- Add desktop-macos job (dmg + zip, unsigned, x64 + arm64)
- Update create-release to collect artifacts from all platforms
- Update release notes with all artifact types

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 10:59:20 -07:00

View File

@@ -39,7 +39,7 @@ jobs:
run: npm ci run: npm ci
- name: Build design system packages - name: Build design system packages
run: npx turbo run build --filter='@dangerousthings/tokens' --filter='@dangerousthings/web' run: npx turbo run build
- name: Build desktop showcase - name: Build desktop showcase
working-directory: packages/showcase/desktop working-directory: packages/showcase/desktop
@@ -60,6 +60,81 @@ jobs:
packages/showcase/desktop/release/*.deb packages/showcase/desktop/release/*.deb
retention-days: 30 retention-days: 30
# ─── Desktop Windows Build ──────────────────────────────────────
desktop-windows:
if: inputs.build_desktop
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- name: Install dependencies
run: npm ci
- name: Build design system packages
run: npx turbo run build
- name: Build desktop showcase
working-directory: packages/showcase/desktop
run: npm run build
- name: Package desktop (Windows)
working-directory: packages/showcase/desktop
run: npx electron-builder --win
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload desktop artifacts
uses: actions/upload-artifact@v4
with:
name: desktop-windows
path: |
packages/showcase/desktop/release/*.exe
retention-days: 30
# ─── Desktop macOS Build ────────────────────────────────────────
desktop-macos:
if: inputs.build_desktop
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- name: Install dependencies
run: npm ci
- name: Build design system packages
run: npx turbo run build
- name: Build desktop showcase
working-directory: packages/showcase/desktop
run: npm run build
- name: Package desktop (macOS)
working-directory: packages/showcase/desktop
run: npx electron-builder --mac --x64 --arm64
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# No CSC_LINK / CSC_KEY_PASSWORD = unsigned build
# Users will need to right-click > Open to bypass Gatekeeper
- name: Upload desktop artifacts
uses: actions/upload-artifact@v4
with:
name: desktop-macos
path: |
packages/showcase/desktop/release/*.dmg
packages/showcase/desktop/release/*.zip
retention-days: 30
# ─── Mobile Android Build ────────────────────────────────────── # ─── Mobile Android Build ──────────────────────────────────────
mobile-android: mobile-android:
if: inputs.build_mobile if: inputs.build_mobile
@@ -84,7 +159,7 @@ jobs:
run: npm ci run: npm ci
- name: Build design system packages - name: Build design system packages
run: npx turbo run build --filter='@dangerousthings/tokens' run: npx turbo run build
- name: Expo prebuild - name: Expo prebuild
working-directory: packages/showcase/mobile working-directory: packages/showcase/mobile
@@ -112,8 +187,8 @@ jobs:
# ─── Create GitHub Release ───────────────────────────────────── # ─── Create GitHub Release ─────────────────────────────────────
create-release: create-release:
needs: [desktop-linux, mobile-android] needs: [desktop-linux, desktop-windows, desktop-macos, mobile-android]
if: always() && (needs.desktop-linux.result == 'success' || needs.mobile-android.result == 'success') if: always() && (needs.desktop-linux.result == 'success' || needs.desktop-windows.result == 'success' || needs.desktop-macos.result == 'success' || needs.mobile-android.result == 'success')
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
contents: write contents: write
@@ -131,7 +206,7 @@ jobs:
run: | run: |
mkdir -p final-artifacts mkdir -p final-artifacts
# Desktop artifacts — replace 0.0.0 with release version # Desktop Linux artifacts
if [ -d release-artifacts/desktop-linux ]; then if [ -d release-artifacts/desktop-linux ]; then
for f in release-artifacts/desktop-linux/*; do for f in release-artifacts/desktop-linux/*; do
filename=$(basename "$f") filename=$(basename "$f")
@@ -140,7 +215,25 @@ jobs:
done done
fi fi
# Mobile APK — give it a descriptive name # Desktop Windows artifacts
if [ -d release-artifacts/desktop-windows ]; then
for f in release-artifacts/desktop-windows/*; do
filename=$(basename "$f")
newname=$(echo "$filename" | sed "s/0\.0\.0/${RELEASE_VERSION}/g")
cp "$f" "final-artifacts/$newname"
done
fi
# Desktop macOS artifacts
if [ -d release-artifacts/desktop-macos ]; then
for f in release-artifacts/desktop-macos/*; do
filename=$(basename "$f")
newname=$(echo "$filename" | sed "s/0\.0\.0/${RELEASE_VERSION}/g")
cp "$f" "final-artifacts/$newname"
done
fi
# Mobile APK
if [ -f release-artifacts/mobile-android/app-release.apk ]; then if [ -f release-artifacts/mobile-android/app-release.apk ]; then
cp release-artifacts/mobile-android/app-release.apk \ cp release-artifacts/mobile-android/app-release.apk \
"final-artifacts/dt-showcase-mobile-${RELEASE_VERSION}.apk" "final-artifacts/dt-showcase-mobile-${RELEASE_VERSION}.apk"
@@ -160,6 +253,9 @@ jobs:
### Desktop (Electron) ### Desktop (Electron)
- **AppImage** (Linux, portable) — download and `chmod +x` to run - **AppImage** (Linux, portable) — download and `chmod +x` to run
- **deb** (Debian/Ubuntu) — install with `sudo dpkg -i <file>.deb` - **deb** (Debian/Ubuntu) — install with `sudo dpkg -i <file>.deb`
- **exe** (Windows) — NSIS installer + portable exe
- **dmg** (macOS) — unsigned, right-click > Open to bypass Gatekeeper
- **zip** (macOS) — portable archive
### Mobile (Android) ### Mobile (Android)
- **APK** — sideload on any Android device (Settings > Install unknown apps) - **APK** — sideload on any Android device (Settings > Install unknown apps)