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>
73 lines
2.0 KiB
Markdown
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)
|
|
```
|