142 lines
3.4 KiB
Markdown
142 lines
3.4 KiB
Markdown
# Development, Verification, and Release Workflows
|
|
|
|
## Local Development
|
|
|
|
```powershell
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
This runs:
|
|
|
|
- Vite renderer dev server on `http://localhost:3006`
|
|
- Electron app pointed at that dev server
|
|
|
|
The app uses `MemoryRouter`, so browser URL routing behavior does not match a normal web app.
|
|
|
|
## Build Verification
|
|
|
|
Renderer build:
|
|
|
|
```powershell
|
|
npm run build
|
|
```
|
|
|
|
Electron main/preload bundle:
|
|
|
|
```powershell
|
|
npm run build:electron
|
|
```
|
|
|
|
Run both for most cross-process changes.
|
|
|
|
Known existing build warnings:
|
|
|
|
- A warning around `true || j.close_date` in `src/components/pages/admin/admin.page.jsx`.
|
|
- Vite chunk-size warnings for large bundles.
|
|
|
|
Do not treat those as newly introduced unless your change touches them.
|
|
|
|
## Packaging Check
|
|
|
|
Use:
|
|
|
|
```powershell
|
|
npm run pack
|
|
```
|
|
|
|
This runs:
|
|
|
|
```text
|
|
electron-builder --dir --publish never --config electron-builder.pack-check.cjs
|
|
```
|
|
|
|
It is the preferred "does it package?" check because it avoids publishing.
|
|
|
|
## Publishing
|
|
|
|
Publishing is configured through electron-builder S3 settings in `package.json`. The updater checks periodically.
|
|
|
|
Do not run publishing scripts unless explicitly requested:
|
|
|
|
- `npm run distp`
|
|
- Any direct `electron-builder --publish always`
|
|
|
|
If asked to release:
|
|
|
|
1. Confirm the version in `package.json`.
|
|
2. Run `npm run build`.
|
|
3. Run `npm run build:electron`.
|
|
4. Run a no-publish package check first.
|
|
5. Only then run the requested publish command.
|
|
|
|
## Auto Updates
|
|
|
|
Main process:
|
|
|
|
- Uses `electron-updater`.
|
|
- `autoUpdater.autoDownload = true`.
|
|
- Checks every 30 minutes after app ready.
|
|
- Sends update events/progress to renderer through IPC.
|
|
- Renderer `UpdateManagerOrganism` handles UI.
|
|
|
|
Release notes:
|
|
|
|
- Stored in `electron/changelog.json`.
|
|
- Main process reads `require("./changelog.json")[app.getVersion()]`.
|
|
- Store key `showChangeLog` controls initial display.
|
|
|
|
## Hasura
|
|
|
|
Hasura config and migrations live under `hasura/`.
|
|
|
|
Be careful with migrations:
|
|
|
|
- Current migrations are under `hasura/migrations/default/`.
|
|
- `hasura/migrations_backup/` is historical backup material.
|
|
- Metadata under `hasura/metadata/` should match Hasura's generated layout.
|
|
|
|
When changing GraphQL queries, verify the Hasura metadata/schema supports selected fields.
|
|
|
|
## Sentry Source Maps
|
|
|
|
Script:
|
|
|
|
```powershell
|
|
npm run sentry:sourcemaps
|
|
```
|
|
|
|
Requires a valid `.sentryclirc`/token and should only be run when intentionally uploading source maps.
|
|
|
|
## Troubleshooting
|
|
|
|
Electron backend console DevTools noise:
|
|
|
|
- `Autofill.enable` and `Autofill.setAddresses` errors are Chromium DevTools protocol noise.
|
|
- They can appear when Chrome DevTools or React DevTools are open.
|
|
|
|
Electron circular dependency warning:
|
|
|
|
- Do not import `mainWindow` from `main-src.js` in other Electron modules.
|
|
- Use `BrowserWindow.fromWebContents(event.sender)` for dialogs.
|
|
|
|
AntD theme/static feedback warning:
|
|
|
|
- Use `antdMessage`/`antdNotification` from `src/util/antdFeedback.js`.
|
|
- Ensure `AntdFeedbackBridge` is mounted inside AntD `<App>`.
|
|
|
|
Apollo cache replacement warning:
|
|
|
|
- Confirm field policies in `GraphQLClient.js`.
|
|
- Add/adjust merge policies for newly paginated fields.
|
|
|
|
Search pagination crash:
|
|
|
|
- Guard `prev?.search_jobs` and `fetchMoreResult?.search_jobs` before spreading.
|
|
|
|
Git ignore of generated files:
|
|
|
|
- `.gitignore` includes `/dist-electron/`.
|
|
- If generated files still show in status, they are probably already tracked; remove from index with `git rm --cached -r dist-electron` after confirming the local files can stay.
|
|
|