# AI Generated Changes
- 2025-06-27: Created comprehensive web UI design document for refactoring to loosely coupled architecture with standalone web server and thin MCP client. (claude-opus-4-20250514)
- 2025-06-26: Added browser_screenshot command with full_page and optional name parameters to save browser screenshots to screenshots/ directory with filename sanitization. (claude-opus-4-20250514)
- 2025-06-26: Created architectural analysis document for Playwright testing challenges, removed meaningless tests keeping only meaningful ones (error handling, disabled state, logging). (claude-opus-4-20250514)
- 2025-06-26: Added browser_resize(width, height) command to experimental Playwright features for resizing browser viewport. (claude-opus-4-20250514)
- 2025-06-26: Implemented log pagination for get_devserver_logs and browser_console_messages with offset/limit parameters to fix token overflow issue #19. Added LogStorage class with configurable size and thread-safe operations. (claude-opus-4-20250514)
- 2025-06-24: Fixed ANSI color passthrough in TUI by enabling ansi_color=True, removing forced CSS colors, using Text.from_ansi() for log display, and setting subprocess environment variables (TERM, FORCE_COLOR, COLORTERM) to preserve development server colors. (claude-opus-4-20250514, claude-sonnet-4-20250514)
- 2025-06-24: Replaced get_server_status MCP tool with get_devserver_statuses that returns all server statuses without arguments, using typed Pydantic models for better type safety and FastMCP compatibility. Updated documentation. (claude-opus-4-20250514)
- 2025-06-21: Removed SSE transport functionality and all related code, tests, and UI mentions. Simplified to use only HTTP transport. (claude-opus-4-20250514)
- 2025-06-20: Added browser_type tool to experimental Playwright features with support for typing text, optional submit and slow typing modes. (claude-opus-4-20250514)
- 2025-06-20: Added browser_click tool to experimental Playwright features. (claude-opus-4-20250514)
- 2025-06-20: Fixed all failing tests to adhere to testing standards and removed implementation detail checks. (claude-opus-4-20250514)
- 2025-06-20: Applied ruff linting and formatting to all test files and fixed import/code style issues. (claude-opus-4-20250514)
- 2025-06-20: Refactored all tests to follow testing guidelines - removed mocking of internal classes, using real objects with only system boundary mocks. (claude-opus-4-20250514)
- 2025-06-20: Fixed UI to work with PID-based process management - updated status display to use simplified states and removed external process checks from click handlers. (claude-sonnet-4-20250514)
- 2025-06-20: Simplified status logic in DevServerManager - replaced complex status checks with Running/External/Stopped states and removed 'managed' terminology from user-facing APIs. (claude-sonnet-4-20250514)
- 2025-06-20: Refactored ManagedProcess to use PID-based tracking with process reclaim, process group management, and StateManager integration. (claude-opus-4-20250514)
- 2025-06-08: Refactored MCP server tools to use @mcp.tool decorator pattern instead of mcp.add_tool for FastMCP compatibility. (claude-opus-4-20250514)
- 2025-06-04: Added port conflict detection with early error message and comprehensive tests for port availability checking. (claude-sonnet-4-20250514)
- 2025-06-04: Fixed Playwright missing module crash - app now exits early with clear error message instead of showing error in UI. (claude-opus-4-20250514)
- 2025-06-04: Fixed hardcoded "streamable-http transport" log message to correctly display actual transport type (SSE or streamable-http). (claude-opus-4-20250514)
- 2025-06-04: Improved README with separate Configuration section including VSCode and Claude Code examples with SSE transport option. (claude-opus-4-20250514)
- 2025-06-03: Added --sse flag to enable SSE transport for backwards compatibility with legacy MCP clients. (claude-opus-4-20250514)
- 2025-06-01: Fixed Playwright logging in TUI to include proper timestamps and formatting like other server logs. (claude-sonnet-4-20250514)
- 2025-06-01: Fixed Pylance errors in log_error_to_file function (incorrect os.sys usage) and added comprehensive tests for utils module functionality. (claude-3-5-sonnet-20241022)
- 2025-06-01: Unified tool emoji usage across codebase with centralized get_tool_emoji() function, improved Playwright logging format and consistency. (claude-3-5-sonnet-20241022)
- 2025-06-01: Enhanced ToolBox UI to be visually distinct from dev servers: added generic tool emoji (🔧), moved status indicators to same line as tool name, and added comprehensive tests for visual formatting. (claude-sonnet-4-20250514)
- 2025-06-01: Fixed mock-related test failures and verified all Playwright functionality working correctly with 100/100 tests passing. (claude-sonnet-4-20250514)
- 2025-06-01: Fixed Playwright initialization event loop issue and enhanced error logging with detailed debug information. Added integration test to catch initialization problems. (claude-sonnet-4-20250514)
- 2025-06-01: Implemented experimental Playwright MCP functionality with browser automation commands, error logging, TUI integration, and comprehensive tests. (claude-sonnet-4-20250514)
- 2025-05-31: Added optional experimental section with playwright boolean flag to config. (Jules)
- 2025-05-31: Proofread and corrected copilot-instructions.md for grammar, capitalization, and style consistency. (Claude Sonnet 4)
- 2025-05-31: Format change (human)
## v0.1.0
- 31-05-2025 -- Simplified ServerStatusWidget class by removing unused **setattr** method, duplicate \_format_status method, and unused \_format_error method. Removed corresponding test for unused functionality. (GitHub Copilot)
- 31-05-2025 -- Fixed port detection logic in DevServerManager.\_is_port_in_use to properly detect bound ports by attempting to bind rather than connect. (GitHub Copilot)
- 31-05-2025 -- Aggressively refactored test suite removing suboptimal tests. (GitHub Copilot)
- 30-05-2025 -- Refactored DevServerMCP class for simplicity and added comprehensive tests: extracted private methods for better testability, separated headless/TUI execution paths, and achieved 75% test coverage with 16 meaningful test cases. (GitHub Copilot)
- 30-01-2025 -- Refactored the app for better test coverage and code simplicity: separated config/MCP server concerns into dedicated modules, simplified manager callback systems, and added comprehensive tests achieving 88% coverage. (claude-sonnet-4-20250514)
- 30-05-2025 -- Refactored config path resolution with better error handling and comprehensive tests: improved resolve_config_path with max depth protection, permission error handling, unexpected exception handling, and added meaningful tests for all edge cases including symlink cycles and filesystem errors. (GitHub Copilot)
- 30-05-2025 -- Created comprehensive test_config_resilience.py covering various resilience scenarios. (GitHub Copilot)
- 30-01-2025 -- Aggressively cleaned up test suite: removed 46% of tests (72→39) by deleting trivial implementation detail tests while preserving critical business logic tests (app startup, server workflows, error handling, UI behavior). Created comprehensive list of testing gaps that need improvement. (claude-sonnet-4-20250514)
- 30-05-2025 -- Added MCP server logging to TUI - MCP startup messages and tool calls now appear in Server Logs window. (claude-opus-4-20250514)
- 30-05-2025 -- Added 'autostart' configuration boolean to automatically start offline, non-external servers on MCP startup, including tests. (Assistant-0.1)
- 30-05-2025 -- Added `prefix_logs` config to control log prefixing and updated tests. (claude-3.5-sonnet-20240620)
- 30-05-2025 -- Suppressed pytest-asyncio warning by setting asyncio_default_fixture_loop_scope in pytest.ini. (Claude 3 Opus)
- 30-05-2025 -- Fixed various Pytest warnings related to async mocks and test collection. (Gemini)
- 30-05-2025 -- Fixed backend process stopping issue and enabled log copy-paste: made stop() method async with proper process termination waiting, added race condition delay after stopping, enabled RichLog focus for text selection, and updated all tests to handle async stop method. Backend servers now properly show "stopped" instead of "external" after clicking to stop. (claude-3-5-sonnet-20241022)
- 30-05-2025 -- Fixed tests to work without test-specific workarounds: updated test_server_box_status_update to use proper Textual app context, made \_refresh_labels() safe for all contexts by checking widget composition state. (GitHub Copilot)
- 30-05-2025 -- Fixed ServerBox status update issue: when clicking to start/stop servers, the box now updates its internal server data and refreshes the status display, ensuring UI reflects actual server state. (GitHub Copilot)
- 30-05-2025 -- Created failing test demonstrating the issue where ServerBox status doesn't update after clicking to start a server - box retains original "stopped" data even after successful start. (claude-3-5-sonnet-20241022)
- 30-05-2025 -- Made server boxes clickable: stopped servers start on click, running managed servers stop on click, added hover styling for visual feedback, and created comprehensive test suite covering all click scenarios using Textual's testing framework. (GitHub Copilot)
- 30-05-2025 -- Updated UI to 80s synthwave theme with darker background (#0a0a0f), neon colors (magenta/cyan/purple), improved footer spacing (3-line height with centered content), and increased spacing between server boxes (margin-bottom: 2). (GitHub Copilot)
- 30-05-2025 -- Improved TUI design: moved headings to border titles, made left panel narrower (20% width), unified dark background theme, reduced footer height, and cleaned up overall appearance while maintaining test compatibility. (GitHub Copilot)
- 30-05-2025 -- Complete synthwave UI redesign: vertical split, bordered panels, bottom bar, minimal look, and all tests passing. (GitHub Copilot)
- 30-05-2025 -- Added comprehensive tests for ManagedProcess start and status methods, covering success cases, immediate exit scenarios, exception handling, and all status states (running/error/stopped). (GitHub Copilot)
- 30-05-2025 -- Added comprehensive tests for ManagedProcess.stop method covering various scenarios including running processes, already stopped processes, and exception handling during termination. (GitHub Copilot)
- 30-05-2025 -- Added test for start_server when process is already running, covering the already_running status case in DevServerManager. (GitHub Copilot)
- 30-05-2025 -- Completed UI refactoring: extracted UI components into separate ui.py module, created comprehensive tests for all UI widgets including ServerStatusWidget/LogsWidget/DevServerApp, and fixed import issues for proper script execution. All tests passing. (GitHub Copilot)
- 30-05-2025 -- Added comprehensive tests for MCP stop_server tool covering error cases, not running servers, running process stoppage, and case insensitive server names. (GitHub Copilot)
- 30-05-2025 -- Refactored FastMCP server implementation to improve testability by extracting create_mcp_server() function and load_config() function from DevServerMCP class, enabling direct in-memory testing with FastMCP Client following the recommended testing patterns. Added comprehensive MCP tool tests demonstrating the refactor works. (GitHub Copilot)
- 30-05-2025 -- Added comprehensive tests for DevServerManager and improved testability of DevServerMCP. (GitHub Copilot)
- 30-05-2025 -- Added console script entry point and **main**.py module for proper PyPI package installation - users can now run 'devserver-mcp' command or 'python -m devserver_mcp' after installing from PyPI. (claude-3-5-sonnet-20241022)
- 29-05-2025 -- Refactored shutdown process to handle Ctrl-C cleanly with custom event loop exception handler, proper MCP task cancellation, and ensured zero terminal output after shutdown. (claude-opus-4-20250514)
- 29-05-2025 -- Fixed app startup while maintaining zero terminal output by only silencing in non-terminal environments, allowing TUI to run normally in terminals but completely silent in tests/subprocess. (claude-sonnet-4-20250514)
- 29-05-2025 -- Completely eliminated terminal output by wrapping entire main() in silence_all_output context manager, silencing all logging, using proper Textual exit, and detecting non-terminal environments. Tests now pass showing zero terminal output including no tracebacks. (claude-sonnet-4-20250514)
- 29-05-2025 -- Added pytest tests to demonstrate excessive terminal output issue during app startup and shutdown. (claude-sonnet-4-20250514)
- 29-05-2025 -- Simplified shutdown to just exit cleanly without complex MCP task cancellation - let OS handle cleanup for silent exit. (claude-sonnet-4-20250514)
- 29-05-2025 -- Fixed Textual layout to use bottom status bar instead of side panels, removed 'q' quit binding, and fixed CancelledError on exit with proper timeout handling. (claude-sonnet-4-20250514)
- 29-05-2025 -- Reimplemented TUI using Textual instead of Rich for better terminal handling and cleaner output. Refactored code structure with proper separation of concerns between business logic (DevServerManager), UI (Textual widgets), and MCP integration. (claude-sonnet-4-20250514)
- 29-05-2025 -- Fixed lint error and verified HTTP transport working properly - MCP server now successfully starts on http://127.0.0.1:3001/mcp. (claude-3-5-sonnet)
- 29-05-2025 -- Implemented HTTP transport for shared MCP server instance between TUI and VS Code integration. (claude-3-5-sonnet)
- 29-05-2025 -- Refactored process management for immediate clean exit on Control-C (sonnet-4)
- 29-05-2025 -- Aggressively silence shutdown, do not await MCP task, and suppress all errors in main for immediate exit. (Gemini)
- 29-05-2025 -- Refactor shutdown sequence to separate TUI exit from MCP task cancellation, and handle expected ExceptionGroup. (Gemini)
- 29-05-2025 -- Add detailed logging to shutdown sequence to debug unclean exits. (Gemini)
- 29-05-2025 -- Refactored shutdown logic and added quit instruction to TUI. (Gemini)
- 29-05-2025 -- Fixed "Already running asyncio in this thread" error by using FastMCP's run_async() method instead of run() and adding nest_asyncio support. (claude-3-5-sonnet-20241022)
- 29-05-2025 -- First version of this document. (human)