- Move API, ARCHITECTURE, BUILD, DEVELOPMENT, and fix docs to docs/ - Move README variants and WINDOWS_BUILD to docs/ - Move assets and screenshots to docs/assets/ - Update GETTING_STARTED, README, CONTRIBUTOR_GUIDE, PROJECT_STRUCTURE, LOCAL_TESTING_WITH_SQLITE, VERSION_MANAGEMENT
6.1 KiB
Build Scripts Documentation
This document describes the build scripts for TimeTracker and recent improvements.
Desktop Build Scripts
scripts/build-desktop.sh
Main script for building the desktop Electron application.
Usage:
./scripts/build-desktop.sh [platform]
Platforms:
winorwindows- Build Windows installermacormacos- Build macOS DMG (macOS only)linux- Build Linux packages (Linux only)allorall-platforms- Build for all supported platformscurrent(default) - Build for current platform
Features:
- Automatically syncs version from
setup.pytopackage.json - Checks for required assets (logo, icons)
- Prepares assets automatically if missing
- Handles missing icon files gracefully with warnings
- Provides helpful error messages
Example:
# Build for current platform
./scripts/build-desktop.sh
# Build for Windows
./scripts/build-desktop.sh win
# Build for all platforms
./scripts/build-desktop.sh all
scripts/prepare-desktop-assets.sh
Prepares desktop assets before building:
- Copies logo from main app to desktop/assets
- Checks for icon files
- Attempts to generate icons if possible
- Provides helpful warnings and instructions
Usage:
./scripts/prepare-desktop-assets.sh
scripts/check-desktop-assets.sh
Quick check script to verify all required assets are present.
Usage:
./scripts/check-desktop-assets.sh
Output:
- Lists all assets and their status
- Exits with error code if critical assets are missing
- Provides instructions to fix missing assets
All Platforms Build Script
scripts/build-all.sh
Builds both mobile and desktop applications.
Usage:
./scripts/build-all.sh [options] [platform]
Options:
--mobile-only- Build only mobile app--desktop-only- Build only desktop app--android-only- Build only Android--ios-only- Build only iOS (macOS only)--linux-only- Build only Linux desktop--macos-only- Build only macOS desktop
Platforms:
android- Android APK and App Bundleios- iOS app (macOS only)linux- Linux desktop packagesmacos- macOS DMGall- All platformsall-platforms- All desktop platformsall-desktop- All desktop platforms
Example:
# Build everything
./scripts/build-all.sh
# Build only desktop for current platform
./scripts/build-all.sh --desktop-only
# Build Android and Linux
./scripts/build-all.sh android linux
Mobile Build Script
scripts/build-mobile.sh
Builds the Flutter mobile application.
Usage:
./scripts/build-mobile.sh [platform]
Platforms:
android- Android APK and App Bundleios- iOS app (macOS only)all(default) - All platforms
Recent Improvements
Asset Management
-
Automatic Logo Copying
- Build scripts now automatically copy the logo from
app/static/images/timetracker-logo.svgtodesktop/assets/logo.svgif missing
- Build scripts now automatically copy the logo from
-
Icon File Checking
- Scripts check for required icon files before building
- Provide clear warnings if icons are missing
- Don't fail the build, but warn about potential issues
-
Graceful Degradation
- Splash screen only loads if
splash.htmlexists - Missing icons don't prevent builds (but platform-specific builds may fail)
- Helpful error messages guide users to fix issues
- Splash screen only loads if
Error Handling
- Better error messages with solutions
- Graceful handling of missing files
- Platform detection and validation
- Clear instructions for fixing issues
Asset Preparation
The prepare-desktop-assets.sh script:
- Ensures logo is available
- Checks for all icon files
- Attempts to generate icons if
generate-icons.jsis available - Provides clear instructions for manual icon generation
Troubleshooting
Missing Icons
If you see warnings about missing icons:
-
Generate icons:
npm install sharp # If not installed node scripts/generate-icons.js -
Convert to platform formats:
- Windows: Convert PNG to ICO using online tools or ImageMagick
- macOS: Convert PNG to ICNS using
iconutilor online tools - Linux: PNG is already generated
-
Manual creation:
- See
desktop/assets/README.mdfor detailed instructions - Use online converters like CloudConvert or iConvert Icons
- See
Build Failures
Permission Errors:
- On Linux/Mac: Check file permissions
- On WSL with OneDrive: Exclude
node_modulesfrom sync - Try:
sudo npm install(if permission issue)
Missing Dependencies:
- Ensure Node.js 18+ is installed
- Run
npm installindesktop/directory - Check
package.jsonfor required packages
Platform-Specific Issues:
- Windows builds require Windows or WSL
- macOS builds require macOS
- Linux builds require Linux
File Structure
scripts/
├── build-desktop.sh # Desktop build script
├── build-all.sh # All platforms build script
├── build-mobile.sh # Mobile build script
├── prepare-desktop-assets.sh # Asset preparation
├── check-desktop-assets.sh # Asset verification
└── generate-icons.js # Icon generation
desktop/
├── assets/
│ ├── logo.svg # Desktop app logo (required)
│ ├── icon.png # Linux icon (required)
│ ├── icon.ico # Windows icon (required for Windows)
│ └── icon.icns # macOS icon (required for macOS)
└── package.json # Electron app configuration
Best Practices
-
Before Building:
- Run
scripts/check-desktop-assets.shto verify assets - Ensure version is synced (handled automatically)
- Check platform requirements
- Run
-
During Development:
- Use
npm run devindesktop/for development - Test splash screen and branding elements
- Verify logo displays correctly
- Use
-
For Releases:
- Generate all icon formats
- Test builds on target platforms
- Verify installer branding
- Check splash screen functionality
Last Updated: 2024 Maintainer: Development Team