Files
5et-desktop/README.md
T
boris e241442302
CI / Verify (build + tests) (push) Successful in 10m14s
CI / Package (Linux) (push) Failing after 5m16s
CI / Package (macOS arm64 source) (push) Failing after 4s
CI / Package (Windows) (push) Has been cancelled
Created ci.yml, added release for windows, mac and linux
2026-02-24 20:25:39 +00:00

88 lines
2.3 KiB
Markdown

# 5ET-D Desktop App
Current stage:
- Build 0 complete: Electron boots directly into local 5etools wiki.
- Stage 1 in progress: React shell navigation + light visual reskin pass, while preserving wiki behavior.
## Prerequisites
- Node.js 20+
- `5etools-src` directory in this repository root:
- `./5etools-src`
Optional override:
- Set `FIVEETOOLS_SRC_DIR` to point at a different `5etools-src` path.
- Set `FIVEETOOLS_DESKTOP_RESKIN=0` to disable injected wiki styling for strict baseline comparisons.
- Set `FIVEETOOLS_DESKTOP_FORCE_NIGHT=0` to keep 5etools day theme while using desktop reskin.
## Install
```bash
npm install
```
## Run (dev)
```bash
npm run dev
```
`npm run dev` uses a portless workflow (`vite build --watch`) for environments where local TCP binding is restricted.
Optional HMR mode (requires local port binding):
```bash
npm run dev:web
```
## Run (build once + launch)
```bash
npm run start
```
## Package installers
```bash
npm run dist
```
This command installs `electron-builder` on demand via `npx` for packaging, rather than during every local dependency install.
## macOS arm64 (source release workflow)
If macOS runners are unavailable in CI, publish the `5ET-D-macos-arm64-source-*` artifact and have Apple Silicon users build locally:
```bash
./build-macos-arm64.command
```
Equivalent CLI command:
```bash
./scripts/build-macos-arm64.sh
```
This builds a macOS arm64 package and writes output to `release/`.
## Notes
- The app starts an internal local HTTP server for wiki content.
- This avoids `file://` loading limitations while keeping content fully local.
- Electron launch scripts clear `ELECTRON_RUN_AS_NODE` automatically, so app boot is stable even if that variable is set in your shell environment.
- SQLite is intentionally deferred until post-Build 0 to avoid native module/toolchain issues while the wiki bootstrap is stabilized.
- Build identity is set to:
- Product name: `5ET-D`
- App ID: `com.notBoris.5et-desktop`
## Troubleshooting
- `app.whenReady` undefined or Electron behaving like Node:
- check `echo $ELECTRON_RUN_AS_NODE`
- launcher scripts already clear this variable before app start
- `listen EPERM ...5173`:
- use `npm run dev` (portless mode)
- only use `npm run dev:web` when local TCP binding is available