Files
thandClaude Opus 4.6 c5bf8b0407 docs: update all READMEs for v1.1.0
Add Electron desktop app section, document all 8 plugins, update
features list (assets, super-buckets, find/replace, arrow nav, PDF
upload), fix relay docs (chat shipped, not future), add missing API
endpoints, correct electron data storage paths and php-bin fetch info.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 18:00:06 +02:00

73 lines
2.0 KiB
Markdown

# hyprcrd — Electron Desktop App
Wraps the PHP backend in an Electron shell. A static PHP binary is bundled
per platform so users don't need PHP installed.
## How it works
1. On launch, the app starts PHP's built-in server on a random port (`127.0.0.1`)
2. `router.php` replaces Apache's `.htaccess` rewrite rules
3. A `BrowserWindow` loads `http://127.0.0.1:<port>/`
4. On quit, the PHP process is killed cleanly
User data (database + uploads) is stored **outside** the app bundle so it
survives updates:
- **Dev**: `electron/appdata/`
- **Linux**: `~/.config/hyprcrd/data/`
- **macOS**: `~/Library/Application Support/hyprcrd/data/`
- **Windows**: `%APPDATA%/hyprcrd/data/`
## Development
```bash
cd electron
npm install
npm start # launches the app using system or bundled PHP
```
Requires PHP 8.1+ with `pdo_sqlite` and `zip` extensions — either on
the system PATH or as a static binary in `php-bin/<platform>/`.
## Bundling PHP
Static PHP binaries are not checked into git. Fetch them before building:
```bash
./fetch-php.sh # downloads ~20MB per platform from static-php-cli
```
Or place them manually (see `php-bin/README.md` for sources):
php-bin/linux/php
php-bin/darwin/php
php-bin/win32/php.exe
The app prefers the bundled binary. If none is found, it falls back to
system PHP. If neither exists, a dialog tells the user what to install.
## Building distributables
```bash
npm run dist
```
Uses `electron-builder`. Output:
| Platform | Format | Location |
|----------|----------|-------------------|
| macOS | `.dmg` | `dist/` |
| Windows | NSIS | `dist/` |
| Linux | AppImage | `dist/` |
## File structure
```
electron/
main.js Electron main process — spawns PHP, creates window
preload.js Exposes window.hyprcrdElectron (platform, isElectron)
router.php PHP built-in server router (replaces .htaccess)
fetch-php.sh Downloads static PHP binaries for all platforms
php-bin/ Platform-specific PHP binaries (gitignored)
```