Commit Graph

2649 Commits

Author SHA1 Message Date
scawful
fdead0e9e5 feat: Enable conditional compilation for Policy Evaluation Framework in yaze target 2025-10-02 14:29:53 -04:00
scawful
510b11d9d7 doc: Policy Evaluation Framework and Remote Control Workflows
- Added Policy Evaluation Framework with core components including PolicyEvaluator service, policy types, severity levels, and GUI integration.
- Created documentation for the Policy Evaluation Framework detailing implementation, configuration, and testing plans.
- Introduced Remote Control Agent Workflows documentation, outlining gRPC interactions for automated editing in YAZE.
- Removed outdated Test Validation Status document and replaced it with updated Widget ID Next Actions documentation.
- Established widget registry integration for improved remote control capabilities and added support for hierarchical widget IDs.
- Enhanced test harness functionality to support widget discovery and interaction through gRPC.
2025-10-02 14:22:17 -04:00
scawful
0bc340e06d feat: Implement policy evaluation framework with YAML configuration and UI integration 2025-10-02 14:13:30 -04:00
scawful
c8d79d9e99 docs: Update implementation plan and README for clarity and recent accomplishments 2025-10-02 12:49:10 -04:00
scawful
784c867acf Refactor ImGuiTestHarnessService for Asynchronous RPC Handling
- Removed blocking wait logic in Click, Type, Wait, and Assert RPC methods to allow asynchronous execution.
- Introduced a generic RPCState template structure for managing shared state across different RPCs.
- Updated Click and Type methods to utilize the new RPCState for result handling and messaging.
- Simplified Wait method to queue tests without blocking, returning immediate success messages.
- Enhanced Assert method to use the new RPCState structure for result management and messaging.
- Adjusted CMakeLists.txt to conditionally include GUI automation client based on gRPC configuration.
2025-10-02 12:35:48 -04:00
scawful
3711d8cd27 feat: Enhance Assert RPC with thread-safe state management and improved error handling 2025-10-02 11:16:43 -04:00
scawful
3c9669d062 fix: Ensure safe ID management in WidgetIdScope during ImGui frame initialization 2025-10-02 11:01:30 -04:00
scawful
b77bd201e2 feat: Implement widget ID registry for Overworld editor and add remote control test script 2025-10-02 10:48:23 -04:00
scawful
6ef8b226a9 Add ImGui WidgetIdRegistry 2025-10-02 09:49:14 -04:00
scawful
eb61b3cf0d Enhance z3ed Documentation and CLI Design
- Updated E6-z3ed-cli-design.md to reflect the current state and design goals of the z3ed CLI, emphasizing its evolution into a powerful tool for ROM hacking with AI integration.
- Introduced E6-z3ed-reference.md as a comprehensive technical reference, detailing command usage, implementation guides, and troubleshooting tips.
- Expanded README.md to provide a clearer overview of z3ed, including documentation structure and quick start guides for users.
- Enhanced the archive README.md to clarify the purpose of archived documents and their relevance to the project's history and technical decisions.
2025-10-02 09:27:07 -04:00
scawful
983ef24e4d Implement z3ed CLI Agent Test Command and Fix Runtime Issues
- Added new session summary documentation for the z3ed agent implementation on October 2, 2025, detailing achievements, infrastructure, and usage.
- Created evening session summary documenting the resolution of the ImGuiTestEngine runtime issue and preparation for E2E validation.
- Updated the E2E test harness script to reflect changes in the test commands, including menu item interactions and improved error handling.
- Modified imgui_test_harness_service.cc to implement an async test queue pattern, improving test lifecycle management and error reporting.
- Enhanced documentation for runtime fixes and testing procedures, ensuring comprehensive coverage of changes made.
2025-10-02 09:18:16 -04:00
scawful
4a4b815c1b feat: Implement gRPC support for CLI Agent Test Command and enhance build configuration 2025-10-02 08:52:11 -04:00
scawful
0465d07a55 feat: Add GUI automation client and test workflow generator
- Implemented GuiAutomationClient for gRPC communication with the test harness.
- Added methods for various GUI actions: Click, Type, Wait, Assert, and Screenshot.
- Created TestWorkflowGenerator to convert natural language prompts into structured test workflows.
- Enhanced HandleTestCommand to support new command-line arguments for GUI automation.
- Updated CMakeLists.txt to include new source files for GUI automation and workflow generation.
2025-10-02 01:01:19 -04:00
scawful
286efdec6a Enhance ImGuiTestHarness with dynamic test integration and end-to-end validation
- Updated README.md to reflect the completion of IT-01 and the transition to end-to-end validation phase.
- Introduced a new end-to-end test script (scripts/test_harness_e2e.sh) for validating all RPC methods of the ImGuiTestHarness gRPC service.
- Implemented dynamic test functionality in ImGuiTestHarnessService for Type, Wait, and Assert methods, utilizing ImGuiTestEngine.
- Enhanced error handling and response messages for better clarity during test execution.
- Updated existing methods to support dynamic test registration and execution, ensuring robust interaction with the GUI elements.
2025-10-02 00:49:28 -04:00
scawful
4320b67da1 feat: Integrate ImGuiTestEngine with gRPC service for dynamic test execution and improve initialization flow 2025-10-02 00:24:15 -04:00
scawful
ead85c87b5 feat: Enhance ImGuiTestHarnessServer with proper shutdown handling and update gRPC service initialization 2025-10-01 23:32:41 -04:00
scawful
3d272605c1 feat: Add gRPC support for ImGuiTestHarness
- Integrated gRPC service for automated GUI testing in ImGuiTestHarness.
- Implemented service methods: Ping, Click, Type, Wait, Assert, and Screenshot.
- Created proto definitions for the gRPC service and messages.
- Added server lifecycle management for the gRPC server.
- Included necessary dependencies and build configurations in CMake.
2025-10-01 22:45:07 -04:00
scawful
defdb3ea32 feat: Implement ROM merging in ProposalDrawer and integrate with EditorManager 2025-10-01 20:35:01 -04:00
scawful
fabf0c9e51 feat: Implement proposal loading from disk in ProposalRegistry and enhance agent command handling 2025-10-01 20:13:00 -04:00
scawful
12dc71c444 feat: Enhance PerformanceProfiler to handle shutdown state and prevent crashes during destruction 2025-10-01 19:50:44 -04:00
scawful
0b62bcbda0 feat: Implement ProposalDrawer for managing agent proposals with UI controls 2025-10-01 19:38:08 -04:00
scawful
02c6985201 feat: Enhance ROM loading options and proposal management
- Introduced `RomLoadOptions` struct to manage various loading configurations for ROM files, including options for stripping headers, populating metadata, and loading Zelda 3 content.
- Updated `Rom::LoadFromFile` and `Rom::LoadFromData` methods to accept `RomLoadOptions`, allowing for more flexible ROM loading behavior.
- Implemented `MaybeStripSmcHeader` function to conditionally remove SMC headers from ROM data.
- Added new command handler `RomInfo` to display basic ROM information, including title and size.
- Created `ProposalRegistry` class to manage agent-generated proposals, including creation, logging, and status updates.
- Enhanced CLI commands to support proposal listing and detailed diff viewing, improving user interaction with agent-generated modifications.
- Updated resource catalog to include new actions for ROM info and agent proposal management.
2025-10-01 18:18:48 -04:00
scawful
04a4d04f4e feat(cli): Enhance CLI with resource catalog and sandbox management
- Added resource catalog for introspecting CLI resources, including schemas for palettes, ROMs, patches, overworlds, dungeons, and agents.
- Implemented serialization methods for resource schemas in both JSON and YAML formats.
- Introduced RomSandboxManager to manage sandboxed ROM copies, allowing for safe experimentation with ROM modifications.
- Updated ModernCLI to include new commands for palette management and enhanced help output.
- Added unit tests for resource catalog serialization and schema validation.
2025-10-01 14:34:58 -04:00
scawful
ec687d737a Enhance HandleTestCommand to support process execution on Unix-like systems and improve error handling for test execution 2025-10-01 10:22:30 -04:00
scawful
77d1c2af05 Update subproject commits for SDL, imgui, imgui_test_engine, and nativefiledialog-extended 2025-10-01 10:00:40 -04:00
scawful
4df97fb812 Refactor Windows build instructions and remove legacy scripts
- Updated `02-build-instructions.md` to enhance clarity and organization, including renaming sections for better understanding.
- Removed outdated automated setup scripts (`build-windows.bat`, `build-windows.ps1`, `setup-windows-dev.ps1`, and `validate-windows-build.ps1`) to streamline the build process.
- Introduced optional vcpkg setup for SDL2 dependency management, emphasizing the use of bundled dependencies by default.
- Improved documentation for Visual Studio CMake workflow, highlighting the recommended approach for building the project.
- Consolidated and clarified command line build instructions, ensuring a more straightforward setup experience for developers.
2025-10-01 09:48:05 -04:00
scawful
508c5402ed Enhance documentation for E2E GUI testing framework and Tile16 editor palette system
- Added comprehensive sections on the E2E GUI testing framework in `A1-testing-guide.md`, detailing architecture, test writing, and execution.
- Introduced a new document `E7-tile16-editor-palette-system.md` outlining the redesign and implementation of the Tile16 editor palette system, including problem analysis, solution architecture, and UI/UX refactoring.
- Updated `E6-z3ed-cli-design.md` with recent refactoring improvements and code quality enhancements for the z3ed CLI tool.
- Expanded the YAZE development tracker in `yaze.org` to reflect ongoing issues and features related to the Tile16 editor and E2E testing.
2025-10-01 09:23:59 -04:00
scawful
ba50d89e7d Update z3ed CLI tool and project build configuration
- Updated `.clang-tidy` and `.clangd` configurations for improved code quality checks and diagnostics.
- Added new submodules for JSON and HTTP libraries to support future features.
- Refined README and documentation files to standardize naming conventions and improve clarity.
- Introduced a new command palette in the CLI for easier command access and execution.
- Implemented various CLI handlers for managing ROM, sprites, palettes, and dungeon functionalities.
- Enhanced the TUI components for better user interaction and command execution.
- Added AI service integration for generating commands based on user prompts, expanding the CLI's capabilities.
2025-10-01 08:57:10 -04:00
scawful
e7d4f5ea02 Enhance CLI command structure and add new functionalities
- Refactored existing CLI commands to follow a more structured naming convention, improving clarity and usability.
- Introduced new commands for dungeon and graphics handling, including `dungeon export`, `gfx export-sheet`, and `gfx import-sheet`, with placeholder implementations.
- Added palette export and import commands, enhancing the CLI's capabilities for managing graphical assets.
- Updated usage examples and help text to reflect the new command structure and improve user guidance.
- Incremented version number in TUI components to reflect the latest changes.
2025-09-30 21:21:19 -04:00
scawful
a346865701 Add Windows compatibility for GUI test command in CLI
- Updated `HandleTestGuiCommand` in `ModernCLI` to return an error message on Windows, indicating that the GUI test command is unsupported.
- Wrapped platform-specific includes and logic with preprocessor directives to ensure compatibility across different operating systems.
- Enhanced code maintainability by clearly separating Windows-specific functionality from other platforms.
2025-09-30 20:18:41 -04:00
scawful
36ad718099 Refactor OverworldEditor copy functionality to use selected points
- Updated the `Copy` method in `OverworldEditor` to utilize selected points instead of tiles for copying tile16 IDs to the clipboard, enhancing the selection mechanism.
- Improved the logic for determining the width and height of the selection based on the selected points, ensuring accurate tile copying.
- Adjusted the `DrawSelectRect` method in `Canvas` to correctly calculate local map indices, refining the tile selection process.
- Added a new configuration option in `Canvas` to control clamping behavior for local maps, providing more flexibility in canvas settings.
2025-09-30 19:52:27 -04:00
scawful
5cc5c08122 Add Overworld accessors and enhance testing framework
- Introduced new methods in `Controller`, `EditorManager`, and `OverworldEditor` to access the `Overworld` instance, improving modularity and interaction with the overworld data.
- Added `GetTile` method in `Overworld` to retrieve tile data based on coordinates, enhancing functionality for tile manipulation.
- Implemented a new testing framework with automated GUI tests, including `CanvasSelectionTest` and `FrameworkSmokeTest`, to validate user interactions and ensure robustness.
- Updated `CMakeLists.txt` to include new test files and dependencies, streamlining the build process for testing.
- Refactored logging behavior to ensure proper file handling during logging operations, improving reliability in logging outputs.
2025-09-30 19:32:34 -04:00
scawful
dcfdcf71d3 Remove outdated performance analysis documents
- Deleted the `dungeon_editor_bottleneck_analysis.md`, `editor_performance_monitoring_setup.md`, `lazy_loading_optimization_summary.md`, and `overworld_optimization_status.md` files as they are no longer relevant to the current optimization strategies and performance monitoring efforts.
- This cleanup helps streamline the documentation and focuses on the most up-to-date performance insights and optimization techniques.
2025-09-30 19:31:18 -04:00
scawful
f461fb63d1 Add comprehensive Canvas guide and refactor documentation
- Introduced a new `CANVAS_GUIDE.md` file detailing the Canvas system, including core concepts, usage patterns, and features such as tile painting, selection, and custom overlays.
- Created `CANVAS_REFACTORING_STATUS.md` to summarize the current state of refactoring efforts, including completed tasks and outstanding issues.
- Enhanced `overworld_editor` functionality by implementing critical fixes for rectangle selection and painting, ensuring proper handling of large map boundaries.
- Updated `canvas_utils.h` to include configuration options for rectangle clamping, preventing wrapping issues during tile selection.
- Refactored `canvas.cc` and `canvas.h` to improve method signatures and documentation, facilitating better understanding and usage of the Canvas API.
- Improved overall documentation structure for clarity and ease of access, consolidating multiple files into focused references.
2025-09-30 16:24:25 -04:00
scawful
991366113e Update canvas system with enhanced interaction and performance tracking features
- Introduced a new CanvasInteractionHandler for managing tile interactions, including painting and selection modes.
- Added CanvasContextMenu for improved user interaction with context-specific options.
- Implemented CanvasPerformanceIntegration to monitor and report performance metrics during canvas operations.
- Developed CanvasUsageTracker to track user interactions and usage patterns within the canvas.
- Refactored existing canvas utilities and integrated new modal systems for enhanced user experience.
- Updated CMake configuration to include new canvas components and ensure proper linking with existing libraries.
2025-09-30 13:10:32 -04:00
scawful
9e0f614ce8 Add BPP format management and optimization features
- Introduced BPPFormatManager for handling various bitmap formats (2BPP, 3BPP, 4BPP, 8BPP) with conversion capabilities.
- Enhanced AtlasRenderer to support bitmap addition with BPP format optimization and added methods for optimized rendering.
- Implemented GraphicsOptimizer for analyzing and optimizing graphics sheets based on BPP formats, including memory and performance considerations.
- Developed BppFormatUI for user interface interactions related to BPP format selection and conversion previews.
- Integrated BPP format management into the canvas system, allowing for format selection and conversion within the GUI.
- Updated CMake configuration to include new source files related to BPP management and optimization.
2025-09-29 21:21:49 -04:00
scawful
100fc23a2e Remove PerformanceMonitor and update references to PerformanceProfiler
- Deleted the PerformanceMonitor implementation and header files as functionality has been fully integrated into gfx::PerformanceProfiler.
- Updated all relevant source files to replace PerformanceMonitor and ScopedTimer with their gfx counterparts, ensuring consistent performance monitoring across the application.
2025-09-29 20:30:31 -04:00
scawful
62230fbe5c Remove Windows ARM64 build configuration and delete unused generate-vs-projects.py script
- Removed the Windows ARM64 configuration from the GitHub Actions release workflow to streamline the build process.
- Deleted the generate-vs-projects.py script as it was no longer needed for project setup, simplifying the codebase.
- Updated the OverworldEditor header to improve clarity by renaming a method parameter for better understanding.
- Refactored the Emulator class to enhance the rendering interface, improving the user experience in the emulator's GUI.
2025-09-29 20:23:17 -04:00
scawful
9db03906fa Refactor area size checks in OverworldEditor for ZSCustomOverworld v3 compatibility
- Simplified logic for determining area size usage by removing unnecessary condition for version check.
- Ensured consistent handling of area sizes across relevant methods in OverworldEditor, enhancing compatibility with different ROM versions.
2025-09-29 19:53:32 -04:00
scawful
bac03ee08e Refactor Performance Monitoring System for Unified Functionality
- Merged the old PerformanceMonitor interface into gfx::PerformanceProfiler, providing a unified performance monitoring system.
- Updated header files to maintain backward compatibility with aliases for PerformanceMonitor and ScopedTimer.
- Removed legacy timer methods and integrated memory pool for efficient data handling in performance profiling.
- Enhanced PerformanceDashboard to utilize the new profiler, including controls for enabling monitoring and clearing data.
- Improved performance reporting with detailed statistics and memory usage insights.
2025-09-29 19:21:31 -04:00
scawful
f6f278bf65 Refactor OverworldEditor and Tile16Editor for enhanced functionality and user experience
- Removed unnecessary build flags for Yaze minimal builds in release.yml.
- Updated version number to 0.3.2 in yaze.h to reflect recent changes.
- Enhanced OverworldEditor with new method to scroll the blockset canvas to the currently selected tile, improving navigation.
- Implemented logic to handle area size checks for ZSCustomOverworld v3, ensuring compatibility with different ROM versions.
- Refactored tile selection and drawing logic in Tile16Editor for improved accuracy and user interaction.
- Updated context menu in OverworldEditor to include a refresh option for map changes, enhancing usability.
2025-09-29 18:56:41 -04:00
scawful
c7d7d2f614 Add scratch space functionality to OverworldEditor
- Introduced a new scratch space feature in OverworldEditor, allowing users to save, load, and clear selections in dedicated slots.
- Implemented methods for transferring selections between the overworld and scratch space, enhancing user interaction and flexibility.
- Added dynamic bitmap handling for scratch spaces, ensuring accurate visual representation of selected tiles.
- Refactored existing drawing methods to accommodate the new scratch space functionality, improving overall usability and performance.
2025-09-29 17:35:18 -04:00
scawful
cfbeef333b Implement file dialog fallback for minimal builds on Windows
- Fixed non-functional file dialogs in minimal builds by implementing a Windows COM-based fallback for file open, save, and folder selection dialogs.
- Ensured dialogs work correctly regardless of NFD (Native File Dialog) availability, enhancing user experience across all Windows builds.
2025-09-29 15:53:49 -04:00
scawful
2b11338e20 Update version to 0.3.2 and enhance stability across platforms
- Bump project version to 0.3.2 in CMakeLists.txt, vcpkg.json, and relevant headers.
- Increase Windows stack size to 8MB to prevent stack overflow during asset loading.
- Isolate development utilities from CI builds to ensure cleaner release artifacts.
- Implement comprehensive bounds checking and fix segmentation faults in the graphics system.
- Update documentation to reflect new build instructions and stability improvements.
2025-09-29 15:47:14 -04:00
scawful
ec42054da2 Enhance CMake configuration for improved stack management and utility separation
- Increased stack size for Windows builds to prevent stack overflow during asset loading and testing.
- Added separate executable for rom_patch_utility to enhance modularity and maintainability.
- Updated target link libraries for both extract_vanilla_values and rom_patch_utility to ensure proper dependencies are included.
- Added conditional checks to prevent building development-only utilities in CI environments.
2025-09-29 15:38:27 -04:00
scawful
7a14612f0e Refactor Tile16Editor and Bitmap palette handling for improved accuracy and stability
- Updated Tile16Editor to utilize a fixed height for the scrollable child window, enhancing user interface consistency.
- Simplified pixel data handling by removing unnecessary remapping for the display tile, ensuring accurate palette representation.
- Enhanced Bitmap palette application logic to directly use the specified index for 8-color palettes, preventing errors in color mapping.
- Improved error handling for palette length validation and ensured the complete palette is retained for compatibility with other editors.
2025-09-29 15:32:37 -04:00
scawful
3b59312b86 Enhance Tile16Editor with improved palette management and user interface updates
- Refactored palette synchronization to ensure consistent application of the complete 256-color overworld palette across all graphics.
- Implemented new methods for accurate palette slot mapping and sheet index retrieval, enhancing color alignment during tile editing.
- Updated the user interface for better visual hierarchy and modern styling, improving the overall user experience in the Tile16Editor.
- Enhanced logging for palette updates and tile interactions to provide clearer feedback and facilitate debugging.
2025-09-29 14:20:38 -04:00
scawful
fe7c65ef8a Implement critical updates to Tile16Editor for enhanced user experience and palette management
- Modified tile16 editing workflow to prevent immediate ROM updates, allowing users to preview changes before saving.
- Improved tile8 selection logic with right-click functionality to pick tiles from tile16, enhancing usability.
- Enhanced palette synchronization to ensure consistent application across all graphics, aligning with the overworld palette.
- Updated logging for tile interactions and palette changes to provide better feedback and debugging insights.
2025-09-29 12:11:15 -04:00
scawful
2d3a615fb4 Refactor Tile16Editor for improved tile selection and palette synchronization
- Adjusted tile8 source canvas dimensions for better scaling in Tile16Editor.
- Enhanced click detection and selection logic for tile editing, ensuring a smoother user experience.
- Implemented critical fixes for palette application consistency, aligning with the overworld palette for accurate color representation.
- Improved logging for tile interactions and palette updates to facilitate debugging and user feedback.
2025-09-29 11:11:27 -04:00
scawful
c7aa0f4409 Implement critical palette synchronization fixes in Tile16Editor and OverworldEditor
- Updated Tile16Editor to ensure consistent palette application across all graphics, aligning with the overworld palette for accurate color representation.
- Added functionality to immediately apply palette changes in Tile16Editor, enhancing visual consistency during editing.
- Implemented critical fixes to refresh all graphics with the correct overworld palette, improving user experience and reducing discrepancies in tile appearance.
- Enhanced logging for palette updates to facilitate debugging and provide user feedback on changes.
2025-09-29 10:58:36 -04:00