Conventions and architecture for agents working in this repository.
Forward is a desktop app that guides users through Flow Core migration and automates parts of that workflow.
Design goals:
- Step-by-step migration tasks, fixed order.
- Automate repetitive/error-prone work (SNG update, Flow Package download, config changes, ...).
- Clear progress, blockers, manual follow-ups.
- Backup data before destructive/automated actions; restore at checkpoints.
Prefer guided flows with checkpoints over open-ended tools. Always provide feedback to, say what changed and what did not.
| Runtime | Electron 42 |
| UI | React 19 |
| Styling | Tailwind CSS 4 |
| DI | tsyringe + reflect-metadata |
| Language | TypeScript 6 |
| Bundler | Vite 8 via Electron Forge |
| Lint / format | oxlint + oxfmt |
| Command | Purpose |
|---|---|
npm start |
Development |
npm run package |
Package without installers |
npm run make |
Platform installers |
npm run lint |
Check lint and format |
npm run lint:fix |
Auto-fix lint and format |
Run npm run lint after substantive changes.
Detailed conventions in .cursor/rules/ — auto-load when matching files in context:
| Rule | When it applies |
|---|---|
| project-structure | Working under src/ |
| electron-build | Forge/Vite configs, CSS, TSX |
| service-injection | Services, DI bootstrap, IPC, preload |
| logging | TypeScript under src/ |
| code-style | TS/TSX and build configs |
| commit-style | All files (commit messages) |
Extended guides: docs/ (DI, IPC, lifecycle, processes).
| Layer | Tool | Scope |
|---|---|---|
| Unit | Vitest | services/, utils/ — colocated *.spec.ts, pure logic in Node, no Electron |
| Integration | Vitest + mocks | IPC contracts + main-service handlers with Electron APIs mocked (*.spec.ts) |
| E2E | Playwright for Electron | Full migration paths through real app |
| Topic | Decision |
|---|---|
| Packaging | Squirrel.Windows via @electron-forge/maker-squirrel (only active maker in forge.config.ts) |
| Install lifecycle | electron-squirrel-startup handles Windows shortcut create/remove on install/uninstall |
| Distribution | Internal Omron release to field engineers |
| Auto-update | Out of scope until requested |
| Platform | Status |
|---|---|
| Windows 10+ | v1 target — Squirrel installer via npm run make |
| macOS | Out of scope until requested |
| Linux | Out of scope until requested |
Out of scope until requested.
- Do not commit
.env, credentials, or signing keys. - Do not push without explicit approval.
- Do not enable
nodeIntegrationor disablecontextIsolationwithout security review + sign-off.