WIP: add Electron platform configuration to Capacitor

- Add electron platform section to capacitor.config.json
- Configure deep linking with timesafari:// scheme
- Set up build options for macOS, Windows, and Linux
- Configure output directory and file inclusion
- Add platform-specific build targets (DMG, NSIS, AppImage)
- Support both x64 and arm64 architectures for macOS
- Set appropriate app categories for each platform

This enables building TimeSafari as a native desktop application
using Capacitor's Electron platform while maintaining existing
mobile and web functionality.
This commit is contained in:
Matthew Raymer
2025-06-25 12:50:46 +00:00
parent ca014a52de
commit ea0f49d5c3
29 changed files with 420 additions and 1987 deletions

View File

@@ -20,25 +20,14 @@
"test:ios": "node scripts/test-ios.js",
"check:android-device": "adb devices | grep -w 'device' || (echo 'No Android device connected' && exit 1)",
"check:ios-device": "xcrun xctrace list devices 2>&1 | grep -w 'Booted' || (echo 'No iOS simulator running' && exit 1)",
"clean:electron": "rimraf dist-electron",
"build:electron": "./scripts/build-electron.sh && npm run build:electron-renderer",
"build:electron-renderer": "vite build --config vite.config.electron.renderer.mts",
"build:capacitor": "vite build --mode capacitor --config vite.config.capacitor.mts",
"build:capacitor": "VITE_GIT_HASH=`git log -1 --pretty=format:%h` vite build --mode capacitor --config vite.config.capacitor.mts",
"build:web": "VITE_GIT_HASH=`git log -1 --pretty=format:%h` vite build --config vite.config.web.mts",
"electron:dev": "./scripts/electron-dev.sh",
"electron:start": "electron .",
"clean:android": "adb uninstall app.timesafari.app || true",
"build:android": "./scripts/build-android.sh",
"electron:build-linux": "./scripts/build-electron-linux.sh",
"electron:build-linux-deb": "./scripts/build-electron-linux.sh deb",
"electron:build-linux-prod": "./scripts/build-electron-linux.sh prod",
"build:electron-prod": "NODE_ENV=production npm run build:electron",
"fastlane:ios:beta": "cd ios && fastlane beta",
"fastlane:ios:release": "cd ios && fastlane release",
"fastlane:android:beta": "cd android && fastlane beta",
"fastlane:android:release": "cd android && fastlane release",
"electron:build-mac": "./scripts/build-electron-mac.sh",
"electron:build-mac-universal": "./scripts/build-electron-mac.sh universal"
"fastlane:android:release": "cd android && fastlane release"
},
"dependencies": {
"@capacitor-community/sqlite": "6.0.2",
@@ -145,8 +134,6 @@
"browserify-fs": "^1.0.0",
"concurrently": "^8.2.2",
"crypto-browserify": "^3.12.1",
"electron": "^33.2.1",
"electron-builder": "^25.1.8",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.2.1",
@@ -163,58 +150,5 @@
"typescript": "~5.2.2",
"vite": "^5.2.0",
"vite-plugin-pwa": "^1.0.0"
},
"main": "./dist-electron/main.js",
"build": {
"appId": "app.timesafari.app",
"productName": "TimeSafari",
"directories": {
"output": "dist-electron-packages"
},
"files": [
"dist-electron/**/*",
"dist/**/*"
],
"extraResources": [
{
"from": "dist-electron/www",
"to": "www"
}
],
"linux": {
"target": [
"AppImage",
"deb"
],
"category": "Office",
"icon": "build/icon.png"
},
"asar": true,
"mac": {
"target": [
"dmg",
"zip"
],
"category": "public.app-category.productivity",
"icon": "build/icon.png",
"hardenedRuntime": true,
"gatekeeperAssess": false,
"entitlements": "ios/App/App/entitlements.mac.plist",
"entitlementsInherit": "ios/App/App/entitlements.mac.plist"
},
"dmg": {
"contents": [
{
"x": 130,
"y": 220
},
{
"x": 410,
"y": 220,
"type": "link",
"path": "/Applications"
}
]
}
}
}