FixPad++ Replication Package
Abstract
FixPad: Automated Bug Fix Verification Framework for Notepad++An AI-powered framework for automatically verifying bug fixes in Notepad++ using multi-agent systems with visual feedback. This research tool employs LLM agents powered by Gemini 2.5 Flash to interpret bug reports, interact with the application UI, and verify bug fixes through iterative observation and action cycles.ποΈ Repository Structure FixPad/ βββ fixpad/ # Main package β βββ openai_cua/ # OpenAI CUA baseline implementation β β βββ README.md # See this for OpenAI CUA documentation β βββ app.py # Main orchestrator and agent loop β βββ agents.py # LLM agent implementations (Action, Reflection, Observer) β βββ action_manager.py # UI automation and action execution β βββ env_manager.py # Notepad++ lifecycle management β βββ omniparser.py # UI parsing via Replicate API β βββ prompts.py # Agent prompts β βββ util.py # Utility functions and logging βββ installers/ # Notepad++ installer executables βββ dataset.json # Fixpad-Bench dataset βββ pyproject.toml # Project dependencies and metadata βββ requirements.lock # Locked dependency versions βββ .env.example # Environment variable template βββ results/ # Research results and analysis βββ .gitignore # Git ignore rules βββ main.py # Entry point script βββ README.md # This file Results and LogsResearch results (RQ1/RQ2 summaries, action distribution, reproduction failures): results/FixPad agent run logs (trajectory + timing per bug): fixpad/run_logs/OpenAI CUA buggy version logs: fixpad/openai_cua_logs/OpenAI CUA patched version logs: fixpad/openai_cua_logs_patched/π DatasetThe dataset.json file contains 105 bug entries with the following structure: { "bug_id": "038", "title": "[BUG] Inserting numbers with Column Editor causes crash", "bug_report_url": "https://github.com/notepad-plus-plus/notepad-plus-plus/issues/15144", "steps_to_reproduce": "Steps To Reproduce\n1. Select at least 28 lines...", "buggy_version": "npp.8.6.7", "patched_version": "npp.8.6.8", "is_fix_correct": "correct", "crash_behavior": "freeze", "notes": "" } Field Descriptions:bug_id: Unique identifier (e.g., "001", "038")title: Bug description from issue trackerbug_report_url: GitHub issue URLsteps_to_reproduce: Reproduction steps from bug reportbuggy_version: Notepad++ version containing the bugpatched_version: Notepad++ version with the fixis_fix_correct: Whether the patch correctly fixes the bug ("correct" or "incorrect")crash_behavior: Type of failure ("freeze", "crash", or empty)notes: Additional information or special considerationsπ InstallationPrerequisitesOperating System: Windows 10/11 (required for pywinauto automation)Python: 3.10 or higherPackage Manager: uv (recommended) or pipRequired AccountsGoogle Cloud Platform with Vertex AI API enabledReplicate account for OmniParser API accessStep 1: Install UV (Recommended)Windows (PowerShell): Using pip: pip install uv Step 2: Clone or Download the RepositoryClone the repository or download from Figshare, then navigate to the project directory: cd FixPad Step 3: Install DependenciesUsing UV (recommended): # Create virtual environment uv venv # Activate virtual environment .venv\Scripts\activate # Windows PowerShell # or .venv\Scripts\activate.bat # Windows CMD # Install dependencies uv pip install -e . Using pip: # Create virtual environment python -m venv .venv # Activate virtual environment .venv\Scripts\activate # Install dependencies pip install -r requirements.lock Step 4: Configure Environment Variables1. Copy the environment template: cp .env.example .env 2. Edit .env with your credentials: # Google Cloud Vertex AI Configuration PROJECT_ID=your-gcp-project-id LOCATION=us-central1 # Replicate API for OmniParser REPLICATE_API_TOKEN=your-replicate-api-token How to obtain credentials:Google Cloud Project ID:Go to Google Cloud ConsoleCreate a new project or select existingEnable Vertex AI APICopy the Project ID from the dashboardReplicate API Token:Sign up at ReplicateGo to Account Settings β API TokensCreate a new token and copy itπ― UsageThe framework runs an iterative multi-agent loop: it installs the target Notepad++ version, captures a screenshot, parses UI elements via OmniParser, then cycles through Observer (describe UI), Reflection (evaluate last action), and ActionAgent (decide next action) until the bug is reproduced or the iteration limit is reached. Finally, the discovered action sequence is replayed on a fresh instance for verification.Basic UsageRun with default bug (038) and 25 iterations: python fixpad/app.py Specify Bug IDTest a specific bug from the dataset: python fixpad/app.py --bug-id 022 Custom Maximum IterationsControl how many iterations the agent attempts: python fixpad/app.py --bug-id 038 --max-iterations 30 Command-Line Arguments --bug-id TEXT Bug ID to reproduce (e.g., '001', '022', '038') Default: '038' --max-iterations INT Maximum number of iterations for the agent loop Default: 25 π OpenAI CUA ImplementationThe fixpad/openai_cua/ directory contains an alternative agent implementation using OpenAI's Computer Use Agent framework.For detailed documentation, see fixpad/openai_cua/README.md
Fields of Study & Subjects
Software Testing and Debugging Techniques
Software Engineering Research
Robotic Process Automation Applications
Publication details
- Journal / source
- Figshare
- Publication date
- 1 January 2026