You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2.1 KiB

TimeSafari Build Modernization Context

Author: Matthew Raymer

Motivation

  • Eliminate manual hacks and post-build scripts for Electron builds
  • Ensure maintainability, reproducibility, and security of build outputs
  • Unify build, test, and deployment scripts for developer experience and CI/CD

Key Technical Decisions

  • Vite is the single source of truth for build output
    • All Electron build output (main process, preload, renderer HTML/CSS/JS) is managed by vite.config.electron.mts
  • CSS injection for Electron is handled by a Vite plugin
    • No more manual HTML/CSS edits or post-build scripts
  • Build scripts are unified and robust
    • Use ./scripts/build-electron.sh for all Electron builds
    • No more fix-inject-css.js or similar hacks
  • Output structure is deterministic and ASAR-friendly
    • Main process: dist-electron/main.js
    • Preload: dist-electron/preload.js
    • Renderer assets: dist-electron/www/ (HTML, CSS, JS)

Security & Maintenance Checklist

  • All scripts and configs are committed and documented
  • No manual file hacks remain
  • All build output is deterministic and reproducible
  • No sensitive data is exposed in the build process
  • Documentation (BUILDING.md) is up to date

How to Build Electron

  1. Run:
    ./scripts/build-electron.sh
    
  2. Output will be in dist-electron/:
    • main.js, preload.js in root
    • www/ contains all renderer assets
  3. No manual post-processing is required

Customization

  • Vite config: All build output and asset handling is controlled in vite.config.electron.mts
  • CSS/HTML injection: Use Vite plugins (see electron-css-injection in the config) for further customization
  • Build scripts: All orchestration is in scripts/ and documented in BUILDING.md

For Future Developers

  • Always use Vite plugins/config for build output changes
  • Never manually edit built files or inject assets post-build
  • Keep documentation and scripts in sync with the build process

This file documents the context and rationale for the build modernization and should be included in the repository for onboarding and future reference.