Commit Graph

32 Commits

Author SHA1 Message Date
e2bea9a126 working companion prototype 2025-11-24 23:32:36 +01:00
e7978024d7 wip 2025-11-23 15:23:51 +01:00
73aaeb8b35 fix(automation): enable real OS automation for development mode 2025-11-22 18:30:32 +01:00
84800c663a refactor(automation): remove browser automation, use OS-level automation only 2025-11-22 17:57:35 +01:00
99fa06e12b fix(companion): resolve fixtures path correctly for both dev and built modes 2025-11-22 17:31:21 +01:00
515aef71bb fix(companion): resolve fixtures path correctly in Electron runtime 2025-11-22 16:55:13 +01:00
6ac9701be8 fix(companion): resolve fixtures path correctly in Electron runtime 2025-11-22 16:47:50 +01:00
78fc323e43 feat(automation): implement NODE_ENV-based automation mode with fixture server 2025-11-22 16:37:32 +01:00
d4fa7afc6f fix(config): change default automation mode from production to mock 2025-11-22 15:52:57 +01:00
bb8b152b8a feat(e2e): add Docker-based E2E test infrastructure 2025-11-22 15:40:23 +01:00
2b0e7b5976 fix(automation): stop automation when step fails instead of continuing 2025-11-22 15:04:05 +01:00
c0e0e00c4c feat(automation): add macOS permission check before automation start 2025-11-22 14:52:48 +01:00
98baa1c3bc fix(automation): correct nut.js Window API usage in WindowFocusService 2025-11-22 14:28:32 +01:00
56b7b2594f feat(automation): implement real executeStep() with template-based OS automation 2025-11-22 14:18:14 +01:00
265b070606 feat(automation): add OS-level screen automation foundation services 2025-11-22 14:09:39 +01:00
81b2fd3cd3 feat(ci): add husky pre-commit hook and fix puppeteer-core chrome detection 2025-11-22 13:37:39 +01:00
21d748b316 feat(automation): add browser launch capability and default to dev mode 2025-11-22 13:31:10 +01:00
bb17a4a085 fix(electron): correct preload script path for IPC bridge 2025-11-22 12:42:02 +01:00
38e7c6f60f fix(deps): remove unused pino packages causing Electron tracingChannel error 2025-11-22 11:13:39 +01:00
bd198a78ad fix(automation): add stopAutomation to IAutomationEngine interface and fix interval cleanup 2025-11-22 01:50:37 +01:00
3a60ffae91 feat(logging): add professional logging with pino and headless E2E tests - Add ILogger port interface in application layer - Implement PinoLogAdapter with Electron-compatible structured logging - Add NoOpLogAdapter for testing - Wire logging into DI container and all adapters - Create 32 E2E tests for automation workflow (headless-only) - Add vitest.e2e.config.ts for E2E test configuration - All tests enforce HEADLESS mode (no headed browser allowed) 2025-11-22 01:02:38 +01:00
7eae6e3bd4 refactor: restructure to monorepo with apps and packages directories - Move companion app to apps/companion with electron-vite - Move domain/application/infrastructure to packages/ - Fix ELECTRON_RUN_AS_NODE env var issue for VS Code terminal - Remove legacy esbuild bundler (replaced by electron-vite) - Update workspace scripts in root package.json 2025-11-22 00:25:06 +01:00
d20554df55 setup 2025-11-21 23:48:50 +01:00
27dd4b87a5 feat(automation): add nut.js OS-level automation adapter per architecture spec - Create NutJsAutomationAdapter implementing IBrowserAutomation with OS-level mouse/keyboard control - Use mouse.move(), mouse.leftClick(), keyboard.type(), keyboard.pressKey() for real OS automation - Cross-platform support (Command key for macOS, Control key for Windows/Linux) - Production mode in DI container now uses NutJsAutomationAdapter - Add mouseSpeed and keyboardDelay configuration options - Add companion:production npm script for production mode - Step 18 (TRACK_CONDITIONS) maintains safety stop before checkout 2025-11-21 21:53:46 +01:00
92db83a3c4 fix(automation): wire up real browser control and add stop functionality - Add initializeBrowserConnection() to DIContainer for CDP connection before automation - Implement stop-automation IPC handler with session state update - Add stopAutomation API to preload and stop button to UI - Implement executeStep() in BrowserDevToolsAdapter with all 18 workflow steps - Add getStepSelectors() and getStepName() to IRacingSelectorMap - Update MockAutomationEngineAdapter to use typed executeStep interface - Step 18 (TRACK_CONDITIONS) has safety stop - does NOT click checkout button 2025-11-21 21:40:34 +01:00
a980a288ea feat(automation): implement dual-mode browser automation with DevTools adapter - Add explicit result types for all automation operations (NavigationResult, FormFillResult, ClickResult, WaitResult, ModalResult) - Implement BrowserDevToolsAdapter for real browser automation via Chrome DevTools Protocol - Create IRacingSelectorMap with CSS selectors for all 18 workflow steps - Add AutomationConfig for environment-based adapter selection (mock/dev/production) - Update DI container to support mode switching via AUTOMATION_MODE env var - Add 54 new tests (34 integration + 20 unit), total now 212 passing - Add npm scripts: companion:mock, companion:devtools, chrome:debug 2025-11-21 19:54:37 +01:00
33b6557eed feat(build): add esbuild bundler for Electron main process 2025-11-21 18:22:42 +01:00
3ba89fedbd feat(scripts): add convenient npm scripts for companion app execution 2025-11-21 17:20:33 +01:00
bd60bd6771 feat(companion): add Electron presentation layer with React UI, IPC handlers, and automation POC 2025-11-21 16:49:14 +01:00
098bfc2c11 feat(companion): implement hosted session automation POC with TDD approach 2025-11-21 16:27:15 +01:00
7a3562a844 add samples 2025-11-21 15:50:14 +01:00
423bd85f94 Initial project setup: monorepo structure and documentation 2025-11-21 15:23:37 +01:00