Commit Graph
96 Commits
Author SHA1 Message Date
mmintel 2cd3bfbb47 wip 2025-12-12 14:23:40 +01:00
mmintel 6a88fe93ab wip 2025-12-12 01:11:36 +01:00
mmintel ec3ddc3a5c wip 2025-12-11 21:06:25 +01:00
mmintel c49ea2598d wip 2025-12-11 14:39:57 +01:00
mmintel c7e5de40d6 wip 2025-12-11 13:50:38 +01:00
mmintel e4c1be628d wip 2025-12-11 11:25:22 +01:00
mmintel 6a427eab57 wip 2025-12-11 00:57:32 +01:00
mmintel 1303a14493 wip 2025-12-10 18:28:32 +01:00
mmintel 6d61be9c51 wip 2025-12-10 15:41:44 +01:00
mmintel fbbcf414a4 wip 2025-12-10 12:38:55 +01:00
mmintel 0f7fe67d3c wip 2025-12-10 00:38:59 +01:00
mmintel a4a732ddc5 wip 2025-12-09 23:22:37 +01:00
mmintel 8fd8999e9e wip 2025-12-09 23:00:51 +01:00
mmintel 3659d25e52 wip 2025-12-09 22:45:03 +01:00
mmintel 3adf2e5e94 wip 2025-12-09 22:22:06 +01:00
mmintel e34a11ae7c wip 2025-12-09 13:19:48 +01:00
mmintel a780139692 wip 2025-12-09 10:32:59 +01:00
mmintel 35f988f885 wip 2025-12-08 23:52:36 +01:00
mmintel 2d0860d66c wip 2025-12-07 18:38:03 +01:00
mmintel 5ca2454853 wip 2025-12-07 00:18:02 +01:00
mmintel 70d5f5689e wip 2025-12-06 00:17:24 +01:00
mmintel 78c85a429c wip 2025-12-05 15:18:27 +01:00
mmintel 01a2c12feb wip 2025-12-05 14:26:54 +01:00
mmintel b6c2b4a422 wip 2025-12-05 12:47:20 +01:00
mmintel 5a9cd28d5b wip 2025-12-05 12:24:38 +01:00
mmintel fb509607c1 wip 2025-12-04 23:31:55 +01:00
mmintel 9fa21a488a wip 2025-12-04 18:05:46 +01:00
mmintel 88c6befc7c wip 2025-12-04 17:07:59 +01:00
mmintel 60a3c82cd9 wip 2025-12-04 15:49:57 +01:00
mmintel c698a0b893 wip 2025-12-04 15:15:24 +01:00
mmintel b7d5551ea7 wip 2025-12-04 11:54:42 +01:00
mmintel 9d5caa87f3 wip 2025-12-04 11:54:23 +01:00
mmintel c0fdae3d3c wip 2025-12-03 16:33:12 +01:00
mmintel a572e6edce alpha wip 2025-12-03 01:16:37 +01:00
mmintel 97e29d3d80 alpha wip 2025-12-03 00:46:08 +01:00
mmintel 3b55fd1a63 website landing page 2025-12-02 21:17:22 +01:00
mmintel 895318ac40 website landing page 2025-12-02 19:44:18 +01:00
mmintel fd3b4171aa website poc 2025-12-02 01:31:31 +01:00
mmintel 747a77cb39 website poc 2025-12-02 00:19:49 +01:00
mmintel 7330ccd82d wip 2025-12-01 22:03:33 +01:00
mmintel f717abf0a0 wip 2025-12-01 22:01:58 +01:00
mmintel 086fdc1ea1 wip 2025-12-01 19:28:49 +01:00
mmintel 98a09a3f2b wip 2025-12-01 17:27:56 +01:00
mmintel e7ada8aa23 wip 2025-12-01 00:48:34 +01:00
mmintel 645f537895 wip 2025-11-30 23:00:48 +01:00
mmintel 4b8c70978f wip 2025-11-30 17:37:03 +01:00
mmintel 65f74e124a wip 2025-11-30 16:45:59 +01:00
mmintel 15bda4545e wip 2025-11-30 16:24:02 +01:00
mmintel 9a1feb2912 wip 2025-11-30 14:00:46 +01:00
mmintel f8a1fbeb50 Refactor infra tests, clean E2E step suites, and fix TS in tests 2025-11-30 10:58:49 +01:00
mmintel af14526ae2 refactoring 2025-11-30 02:07:08 +01:00
mmintel 5c665ea2fe wip 2025-11-30 02:06:39 +01:00
mmintel 187619cbb2 wip 2025-11-29 17:52:10 +01:00
mmintel 93798201b4 wip 2025-11-28 19:03:49 +01:00
mmintel f552649357 wip 2025-11-27 18:14:25 +01:00
mmintel 1348c37675 dumps optimized 2025-11-27 14:46:11 +01:00
mmintel 6a0cab6cc6 wip 2025-11-27 13:26:17 +01:00
mmintel 502d9084e7 wip 2025-11-27 02:23:59 +01:00
mmintel 1d7c4f78d1 feat(overlay-sync): wire OverlaySyncService into DI, IPC and renderer gating 2025-11-26 19:14:25 +01:00
mmintel d08f9e5264 fix(automation): ensure Cars panel nav-click + resilient selectors and retry for add-car flow 2025-11-26 18:41:59 +01:00
mmintel cd810b024c fix(automation): resilient wizard selectors + nav-click fallback for Weather/Cars/RaceInfo 2025-11-26 17:47:15 +01:00
mmintel b6b8303f38 chore(test): make DIContainer tolerant to missing electron.app for vitest 2025-11-26 17:17:02 +01:00
mmintel fef75008d8 wip 2025-11-26 17:03:29 +01:00
mmintel ff3528e5ef setup 2025-11-25 16:27:46 +01:00
mmintel e2bea9a126 working companion prototype 2025-11-24 23:32:36 +01:00
mmintel e7978024d7 wip 2025-11-23 15:23:51 +01:00
mmintel 73aaeb8b35 fix(automation): enable real OS automation for development mode 2025-11-22 18:30:32 +01:00
mmintel 84800c663a refactor(automation): remove browser automation, use OS-level automation only 2025-11-22 17:57:35 +01:00
mmintel 99fa06e12b fix(companion): resolve fixtures path correctly for both dev and built modes 2025-11-22 17:31:21 +01:00
mmintel 515aef71bb fix(companion): resolve fixtures path correctly in Electron runtime 2025-11-22 16:55:13 +01:00
mmintel 6ac9701be8 fix(companion): resolve fixtures path correctly in Electron runtime 2025-11-22 16:47:50 +01:00
mmintel 78fc323e43 feat(automation): implement NODE_ENV-based automation mode with fixture server 2025-11-22 16:37:32 +01:00
mmintel d4fa7afc6f fix(config): change default automation mode from production to mock 2025-11-22 15:52:57 +01:00
mmintel bb8b152b8a feat(e2e): add Docker-based E2E test infrastructure 2025-11-22 15:40:23 +01:00
mmintel 2b0e7b5976 fix(automation): stop automation when step fails instead of continuing 2025-11-22 15:04:05 +01:00
mmintel c0e0e00c4c feat(automation): add macOS permission check before automation start 2025-11-22 14:52:48 +01:00
mmintel 98baa1c3bc fix(automation): correct nut.js Window API usage in WindowFocusService 2025-11-22 14:28:32 +01:00
mmintel 56b7b2594f feat(automation): implement real executeStep() with template-based OS automation 2025-11-22 14:18:14 +01:00
mmintel 265b070606 feat(automation): add OS-level screen automation foundation services 2025-11-22 14:09:39 +01:00
mmintel 81b2fd3cd3 feat(ci): add husky pre-commit hook and fix puppeteer-core chrome detection 2025-11-22 13:37:39 +01:00
mmintel 21d748b316 feat(automation): add browser launch capability and default to dev mode 2025-11-22 13:31:10 +01:00
mmintel bb17a4a085 fix(electron): correct preload script path for IPC bridge 2025-11-22 12:42:02 +01:00
mmintel 38e7c6f60f fix(deps): remove unused pino packages causing Electron tracingChannel error 2025-11-22 11:13:39 +01:00
mmintel bd198a78ad fix(automation): add stopAutomation to IAutomationEngine interface and fix interval cleanup 2025-11-22 01:50:37 +01:00
mmintel 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
mmintel 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
mmintel d20554df55 setup 2025-11-21 23:48:50 +01:00
mmintel 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
mmintel 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
mmintel 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
mmintel 33b6557eed feat(build): add esbuild bundler for Electron main process 2025-11-21 18:22:42 +01:00
mmintel 3ba89fedbd feat(scripts): add convenient npm scripts for companion app execution 2025-11-21 17:20:33 +01:00
mmintel bd60bd6771 feat(companion): add Electron presentation layer with React UI, IPC handlers, and automation POC 2025-11-21 16:49:14 +01:00
mmintel 098bfc2c11 feat(companion): implement hosted session automation POC with TDD approach 2025-11-21 16:27:15 +01:00
mmintel 7a3562a844 add samples 2025-11-21 15:50:14 +01:00
mmintel 423bd85f94 Initial project setup: monorepo structure and documentation 2025-11-21 15:23:37 +01:00