- Replace manual ImageMagick scripts with official capacitor-assets toolchain - Consolidate duplicate asset sources to single resources/ directory - Implement comprehensive asset configuration schema and validation - Add CI safeguards for asset validation and platform asset detection - Convert capacitor.config.json to TypeScript format - Pin Node.js version for deterministic builds - Remove legacy manual asset generation scripts: * generate-icons.sh, generate-ios-assets.sh, generate-android-icons.sh * check-android-resources.sh, check-ios-resources.sh * purge-generated-assets.sh - Add new asset management commands: * assets:config - generate/update configurations * assets:validate - validate configurations * assets:clean - clean generated assets (dev only) * build:native - build with asset generation - Create GitHub Actions workflow for asset validation - Update documentation with new asset management workflow This standardization eliminates asset duplication, improves build reliability, and provides a maintainable asset management system using Capacitor defaults. Breaking Changes: Manual asset generation scripts removed Migration: Assets now sourced from resources/ directory only CI: Automated validation prevents committed platform assets
117 lines
2.4 KiB
TypeScript
117 lines
2.4 KiB
TypeScript
import { CapacitorConfig } from '@capacitor/cli';
|
|
|
|
const config: CapacitorConfig = {
|
|
appId: 'app.timesafari',
|
|
appName: 'TimeSafari',
|
|
webDir: 'dist',
|
|
server: {
|
|
cleartext: true
|
|
},
|
|
plugins: {
|
|
App: {
|
|
appUrlOpen: {
|
|
handlers: [
|
|
{
|
|
url: 'timesafari://*',
|
|
autoVerify: true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
SplashScreen: {
|
|
launchShowDuration: 3000,
|
|
launchAutoHide: true,
|
|
backgroundColor: '#ffffff',
|
|
androidSplashResourceName: 'splash',
|
|
androidScaleType: 'CENTER_CROP',
|
|
showSpinner: false,
|
|
androidSpinnerStyle: 'large',
|
|
iosSpinnerStyle: 'small',
|
|
spinnerColor: '#999999',
|
|
splashFullScreen: true,
|
|
splashImmersive: true
|
|
},
|
|
CapSQLite: {
|
|
iosDatabaseLocation: 'Library/CapacitorDatabase',
|
|
iosIsEncryption: false,
|
|
iosBiometric: {
|
|
biometricAuth: false,
|
|
biometricTitle: 'Biometric login for TimeSafari'
|
|
},
|
|
androidIsEncryption: false,
|
|
androidBiometric: {
|
|
biometricAuth: false,
|
|
biometricTitle: 'Biometric login for TimeSafari'
|
|
},
|
|
electronIsEncryption: false
|
|
}
|
|
},
|
|
ios: {
|
|
contentInset: 'never',
|
|
allowsLinkPreview: true,
|
|
scrollEnabled: true,
|
|
limitsNavigationsToAppBoundDomains: true,
|
|
backgroundColor: '#ffffff',
|
|
allowNavigation: [
|
|
'*.timesafari.app',
|
|
'*.jsdelivr.net',
|
|
'api.endorser.ch'
|
|
]
|
|
},
|
|
android: {
|
|
allowMixedContent: true,
|
|
captureInput: true,
|
|
webContentsDebuggingEnabled: false,
|
|
allowNavigation: [
|
|
'*.timesafari.app',
|
|
'*.jsdelivr.net',
|
|
'api.endorser.ch',
|
|
'10.0.2.2:3000'
|
|
]
|
|
},
|
|
electron: {
|
|
deepLinking: {
|
|
schemes: ['timesafari']
|
|
},
|
|
buildOptions: {
|
|
appId: 'app.timesafari',
|
|
productName: 'TimeSafari',
|
|
directories: {
|
|
output: 'dist-electron-packages'
|
|
},
|
|
files: [
|
|
'dist/**/*',
|
|
'electron/**/*'
|
|
],
|
|
mac: {
|
|
category: 'public.app-category.productivity',
|
|
target: [
|
|
{
|
|
target: 'dmg',
|
|
arch: ['x64', 'arm64']
|
|
}
|
|
]
|
|
},
|
|
win: {
|
|
target: [
|
|
{
|
|
target: 'nsis',
|
|
arch: ['x64']
|
|
}
|
|
]
|
|
},
|
|
linux: {
|
|
target: [
|
|
{
|
|
target: 'AppImage',
|
|
arch: ['x64']
|
|
}
|
|
],
|
|
category: 'Utility'
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
export default config;
|