forked from trent_larson/crowd-funder-for-time-pwa
- Update BUILDING.md with current build system information - Modernize various README files across the project - Update CHANGELOG.md with recent changes - Improve documentation consistency and formatting - Update platform-specific documentation (iOS, Electron, Docker) - Enhance test documentation and build guides
60 lines
2.2 KiB
Markdown
60 lines
2.2 KiB
Markdown
# 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
|
|
|
|
- [x] All scripts and configs are committed and documented
|
|
- [x] No manual file hacks remain
|
|
- [x] All build output is deterministic and reproducible
|
|
- [x] No sensitive data is exposed in the build process
|
|
- [x] Documentation (`BUILDING.md`) is up to date
|
|
|
|
## How to Build Electron
|
|
|
|
1. Run:
|
|
|
|
```bash
|
|
./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.
|