|
Record the mouse path and play it back with a virtual cursor
- Recording: content script samples mousemove at ~25 Hz (2 px / 40 ms thresholds), batches it to the background every second and before submit; stored as reports.mouse_track (viewport + points, capped and decimated server-side) via a new alembic migration - Replay: a virtual cursor (overlay arrow) walks the recorded path, scaled to the current viewport, dispatching synthetic mousemoves so JS hover handlers stay live; clicks snap the cursor to the target - Replay errors: page-load timeout aborts with a clear message, a closed tab aborts, per-step failures (missing elements) are collected, reported in the flash and in the replay result - Panel: "Start replay" button on recording reports talks to the extension through a new tiny relay content script (window messages, no extension-id config), with presence check and toasts for missing extension / no response / partial replay (en + ru) Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| packages/extension/e2e.mjs |
|---|
| packages/extension/manifest.template.json |
|---|
| packages/extension/scripts/build.mjs |
|---|
| packages/extension/src/background/index.ts |
|---|
| packages/extension/src/content/index.ts |
|---|
| packages/extension/src/relay.ts 0 → 100644 |
|---|
| packages/extension/verify-cursor.mjs 0 → 100644 |
|---|
| packages/extension/vite.config.ts |
|---|
| packages/shared/src/api.ts |
|---|
| packages/web/src/i18n/en.json |
|---|
| packages/web/src/i18n/ru.json |
|---|
| packages/web/src/pages/ReportPage.vue |
|---|
| server/alembic/versions/20260917_1910_a3f2c91d7b40_report_mouse_track.py 0 → 100644 |
|---|
| server/app/models.py |
|---|
| server/app/routers/reports.py |
|---|
| server/app/schemas.py |
|---|