A portable Windows utility for recording and replaying GUI fixes on the same PC. IT records a common fix once (Outlook send/receive, audio-device switch, Wi-Fi reconnect); the end user later self-serves it from a simple tile dashboard.
Zero AI runtime. Zero network calls. Zero installer. Zero admin required.
- IT (Editor mode): record a fix on the user's PC, save it as a clickable tile.
- End user (Player mode): open the dashboard, click the tile, fix runs.
Same PC for record and replay. Workflows live in
%APPDATA%\MacroRecorder\workflows\. Every action is logged to
%APPDATA%\MacroRecorder\logs\activity.log.
- Double-click
FixItDashboard.exe. - Click a tile to run that fix.
- Press
Escat any time to abort a running replay.
If the dashboard is empty, no fixes have been recorded on this PC yet — ask IT.
- Run
FixItDashboard.exe --editor(or click Editor Mode in the footer and confirm the warning modal). - Click + Record New Fix.
- Enter a name, description, and icon (any character or emoji).
- Click Start Recording. The main window hides and a small indicator appears in the top-right corner of the screen.
- Perform the fix on the user's PC.
- Click Stop on the indicator (or press
Esc). - Review the event count. Click Save. The tile appears on the dashboard.
If you need to type a password while recording, press Ctrl+Shift+P to
pause, type the password, and press Ctrl+Shift+P again to resume.
Input captured during pause is dropped — it never enters the .mrec file.
In Editor Mode each tile shows ✏ and ✕ icons in its top-right corner:
- ✏ opens a metadata editor (name, description, icon). The event sequence itself is not editable — re-record to change what the fix does.
- ✕ deletes the
.mrecfile after a confirmation prompt.
The Player-mode footer has a speed dropdown (0.5× / 1× / 2×). Use 2× for fixes that contain long delays you want to compress; use 0.5× when a fix is flaky and the target app needs more time to react.
- Same-PC only. Recordings are tied to the screen layout, DPI, and installed-app state of the PC where they were recorded. A fix recorded on machine A will probably not work on machine B.
- No admin privileges. The recorder cannot capture or replay input directed at elevated/UAC windows. Don't record fixes that require admin.
- GUI fixes only. If a fix is one PowerShell line, write a script — don't record clicks.
| What | Where |
|---|---|
| Workflow files | %APPDATA%\MacroRecorder\workflows\*.mrec |
| Activity log | %APPDATA%\MacroRecorder\logs\activity.log |
Portable fallback (if %APPDATA% is not writable) |
.\MacroRecorder\ next to the .exe |
| Registry writes | None |
| Services installed | None |
| Scheduled tasks created | None |
| Network connections | None at any point, for any reason |
| Telemetry / analytics | None |
All workflow files are plain JSON — human-readable, diff-able, and version-controllable. Open one in Notepad to inspect.
pip install -r requirements.txt
python -m pytest # runs unit tests
python -m src.main # launches dashboard (Player mode)
python -m src.main --editor # launches dashboard (Editor mode)
The unit tests cover the storage layer (JSON load/save, schema
validation, library listing), the player engine (timing, abort, cursor
restore, speed scaling), and the recorder (event shapes, pause gating,
delta timestamps). The GUI is verified by the manual smoke checklist at
tests/manual-smoke-checklist.md.
On a Windows machine with Python 3.11+:
pip install -r requirements.txt
pyinstaller build.spec
The binary lands at dist\FixItDashboard.exe (~15-25 MB). Generate a
checksum for IT review:
certutil -hashfile dist\FixItDashboard.exe SHA256 > dist\FixItDashboard.exe.sha256
Unsigned binaries trigger a one-time Windows Defender SmartScreen
click-through on first launch. If your bank requires signed binaries,
route dist\FixItDashboard.exe through your internal code-signing
process — nothing in the build needs to change.
- Delete
FixItDashboard.exe. - Optionally delete
%APPDATA%\MacroRecorder\(this also removes saved workflows and the audit log).
There is nothing else to remove. No registry keys, no services, no installer entries.
Esc doesn't abort a replay. On Windows, corporate antivirus sometimes
blocks the low-level keyboard hook pynput installs. Verify with IT that
pynput's hook is allowed; alternatively, signing the binary generally
clears this.
A recorded fix clicks the wrong thing. Recordings use absolute screen coordinates. If the user moved a window, docked a second monitor, or changed DPI scaling since the fix was recorded, the coords will be off. Re-record on the user's current layout. (A future version may add window-relative coordinates; for now, re-record.)
Nothing happens when I click Start Recording. Check
%APPDATA%\MacroRecorder\logs\activity.log for ERROR lines. The most
common cause is %APPDATA% being non-writable — the app then falls back
to a portable folder next to the .exe, which your user may not have
write access to either.
The dashboard says "N fix(es) could not load". One of the .mrec
files is corrupt. Check the activity log for the filename and either fix
the JSON by hand or delete the file.
GNU General Public License v3.0. See CREDITS.md for details on why
(spoiler: the engine is derived from PyMacroRecord, which is GPL v3).
- Project brief:
01-project-brief.md - Design spec:
02-design-spec.md - Implementation plan:
03-implementation-plan.md - Manual smoke checklist:
tests/manual-smoke-checklist.md