- Changed include paths for SNES color and palette headers to reflect new organization under the 'types' and 'util' directories.
- Ensured consistency in include paths across the graphics subsystem.
Benefits:
- Improves code organization and maintainability by adhering to the updated project structure.
- Modified CI configuration to use the D-Bus portal for file dialogs on Linux for improved reliability.
- Updated CMake commands in both CI and release workflows to include the NFD_PORTAL option.
- Removed OpenSSL from vcpkg.json to streamline dependencies.
Benefits:
- Enhances build reliability across different platforms.
- Simplifies dependency management in the project.
- Updated include paths for various GUI-related headers to improve organization and clarity.
- Introduced new components for better modularity, including PaletteEditorWidget and EditorCardManager.
- Refactored existing code to utilize the new components, ensuring consistency across the GUI subsystem.
Benefits:
- Enhances maintainability and readability of the GUI code.
- Facilitates future enhancements and optimizations within the GUI subsystem.
- Updated include paths for various graphics-related headers to improve organization and clarity.
- Introduced new types for SNES color, palette, and tile management, enhancing the structure of the graphics subsystem.
- Refactored existing code to utilize the new types, ensuring consistency across the codebase.
Benefits:
- Improves maintainability and readability of the graphics code.
- Facilitates future enhancements and optimizations within the graphics subsystem.
- Introduced PaletteManager to handle all palette-related operations, including color modifications, undo/redo functionality, and batch processing.
- Updated PaletteEditor and PaletteGroupCard to utilize PaletteManager for managing palette states and modifications, streamlining the editing process.
- Enhanced user interface with confirmation popups for discard actions and error notifications for save failures.
Benefits:
- Centralizes palette management, improving consistency and reducing code duplication across editors.
- Enhances user experience by providing clear feedback on unsaved changes and simplifying color operations.
- Implemented initialization for music-related editor cards, including Music Tracker and Instrument Editor, with appropriate registration and default visibility settings.
- Updated MusicEditor to manage card visibility dynamically and added methods for drawing specific editor views.
- Improved EditorCardManager to handle recent category tracking, enhancing user navigation through editor categories.
Benefits:
- Streamlines access to music editing tools, improving user experience and workflow efficiency within the editor environment.
- Updated EditorManager to pass visibility flags directly to memory and assembly editors, enhancing the responsiveness of the editor interface.
- Simplified visibility checks by retrieving flags from the EditorCardManager, ensuring accurate updates based on user interactions.
Benefits:
- Streamlines the editor update process, improving user experience by ensuring editors reflect their visibility state accurately.
- Updated EditorManager to support new card-based editors, including Emulator, Hex, and Assembly editors.
- Added centralized registration of editor cards with EditorCardManager, improving visibility management.
- Implemented methods to retrieve editor types from categories and manage card visibility dynamically.
- Enhanced initialization processes for various editors to ensure proper card registration and default visibility settings.
Benefits:
- Improved user experience by organizing editor cards and providing quick access to new editor functionalities.
- Streamlined editor management, making it easier to switch between different editing contexts and enhancing overall workflow efficiency.
- Updated EditorManager to handle sidebar drawing for card-based editors, improving consistency across editor types.
- Removed individual toolbar implementations from GraphicsEditor, ScreenEditor, and SpriteEditor, as sidebar functionality is now centralized.
- Enhanced EditorCardManager to manage card visibility and selection more effectively, including improved UI feedback for empty card categories.
Benefits:
- Streamlined editor interface and improved user experience by consolidating sidebar management, making it easier to navigate and manage editor cards.
- Introduced methods to determine if an editor is card-based and to retrieve its category.
- Implemented a sidebar toggle shortcut (Ctrl+B) for managing card visibility.
- Added functionality to hide current editor cards when switching editors.
- Updated editor initialization to register global shortcuts for activating specific editors.
- Enhanced the Update method to draw a sidebar for the current category editor.
Benefits:
- Improved user experience by organizing editor cards and providing quick access to editor categories.
- Streamlined editor management, making it easier to switch between different editing contexts.
- Moved palette_editor and palette_group_card files to a dedicated palette directory for better organization.
- Updated CMake configuration to link the new palette editor files and added support for the yaze_agent library when not in minimal build.
- Refactored include paths in various editor files to reflect the new structure, ensuring proper linkage and modularity.
Benefits:
- Improved code organization and maintainability by grouping related files.
- Enhanced functionality with the integration of AI features through the yaze_agent library.
- Added a step to free disk space on Linux runners, removing unnecessary software and displaying disk usage before and after cleanup.
- Improved build logging by adding status messages indicating the build configuration and the number of parallel jobs used.
- Updated test suite execution messages for better clarity during CI runs.
Benefits:
- Optimized CI resource usage and improved visibility into the build process, aiding in troubleshooting and efficiency.
- Updated CMake configurations to conditionally link OpenSSL only when gRPC is not enabled, preventing duplicate symbol errors.
- Added support for whole-archive linking of protobuf on Windows across core, net, agent, and z3ed components to ensure all symbols are included.
- Improved status messages to reflect the use of gRPC's OpenSSL when applicable.
Benefits:
- Enhanced compatibility and stability of the build process across different platforms and configurations.
- Added new source files for test commands and conversation tests to the agent's command handling structure.
- Removed the obsolete GUI command handler, redirecting users to the command registry for GUI automation commands.
Benefits:
- Enhanced testing capabilities and modularity within the agent's command management, facilitating future feature additions.
- Added FTXUI components (screen, dom, component) to the agent's CMake configuration, enabling advanced UI capabilities.
- Removed unnecessary include statement from general_commands.cc to streamline the code.
Benefits:
- Improved modularity and extensibility of the agent's UI features, facilitating future enhancements.
- Introduced a new source file for general commands in the agent's command handling structure.
- This addition enhances the command management capabilities of the CLI, allowing for more comprehensive command processing.
Benefits:
- Improved modularity and extensibility of command handling within the agent, facilitating future feature additions.
- Rearranged the order of include statements in themed_widgets.h for better organization and readability.
- Simplified the definition of StatusType by removing redundant braces, enhancing clarity in the code structure.
- Adjusted formatting in function declarations for consistency.
Benefits:
- Improved code maintainability and readability through better organization and formatting.
- Changed the include path for Hyrule Magic from "app/zelda3/hyrule_magic.h" to "util/hyrule_magic.h" in tracker.cc.
- This adjustment improves the modularity of the codebase by aligning the include structure with the new organization of utility headers.
- Removed the DYAZE_USE_MODULAR_BUILD option from build presets documentation.
- Updated the agent guide to reflect the recent completion of version 0.2.2-alpha, highlighting new emulator debugging infrastructure and its benefits for AI agents.
- Enhanced the CLI help output to include a more structured command summary and improved descriptions for better user understanding.
- Replaced direct command handling in ModernCLI with a centralized CommandRegistry singleton.
- Removed SetupCommands method and associated command handler logic, simplifying command execution and registration.
- Updated ShowHelp and ShowCommandSummary methods to utilize CommandRegistry for fetching command metadata and descriptions.
Benefits:
- Streamlined command management, enhancing maintainability and clarity in the CLI structure.
- Improved command registration and execution consistency through a unified registry approach.
- Introduced a new hierarchical WhichKey feature that allows users to navigate commands using a Spacemacs-style interface.
- Added functionality for breadcrumb navigation and auto-close after a specified duration.
- Implemented keyboard input handling for prefix keys to enter submenus or execute commands.
- Updated the CommandManager header to include new methods and state variables for managing WhichKey navigation.
Benefits:
- Improved user experience by providing a more intuitive command navigation system.
- Enhanced accessibility of commands through visual grouping and structured navigation.
- Added methods for managing breakpoints, including adding, removing, listing, and enabling/disabling breakpoints.
- Introduced watchpoint management methods, although integration is pending.
- Implemented execution control features such as stepping through instructions and running to breakpoints.
- Enhanced disassembly capabilities to retrieve and display instruction details from memory.
- Updated header file to include new debugging functionalities, ensuring clarity and modularity.
Benefits:
- Improved debugging capabilities for the emulator, facilitating better development and testing workflows.
- Enhanced user experience by providing detailed control over execution and memory analysis.
- Moved background rendering functionality from the editor to a dedicated GUI module, enhancing modularity and separation of concerns.
- Introduced layout helpers for consistent theme-aware sizing across the GUI, improving UI consistency and maintainability.
- Updated CMake configuration to reflect the new structure, ensuring proper linkage of the background renderer and layout helpers.
Benefits:
- Improved organization of GUI components, facilitating easier updates and enhancements.
- Enhanced user interface consistency through theme-aware layout management.
- Added support for advanced features in the ConversationalAgentService, including learned knowledge and TODO management, conditional on Z3ED_AI being enabled.
- Implemented methods for injecting learned context and pretraining prompts into user messages, enhancing the conversational experience.
- Updated header files to include necessary components for advanced features, ensuring modularity and clarity in the service's capabilities.
Benefits:
- Improved user interaction by providing contextually relevant responses.
- Enhanced maintainability and extensibility of the agent's functionality.
- Updated CMake configuration to conditionally link the yaze_test_support library when tests are enabled, alongside the existing ImGuiTestEngine.
- Improved status messages to provide clearer feedback on linked libraries during the build process.
Benefits:
- Enhanced testing capabilities for the editor by integrating additional support libraries.
- Improved clarity in build output regarding linked test infrastructure.
- Updated audio buffering strategy to ensure smooth playback by always queuing samples and implementing dynamic rate control.
- Introduced Hermite interpolation for audio resampling, providing better quality than linear interpolation.
- Adjusted audio debug logging for improved monitoring of audio states and buffer management.
Benefits:
- Improved audio playback quality and reduced glitches.
- Enhanced clarity in audio debugging and monitoring processes.
- Deleted the MenuManager class implementation and header files from the project.
- Updated CMake configuration to reflect the removal of MenuManager, simplifying the editor's UI management.
Benefits:
- Reduced code complexity by eliminating unused components.
- Improved maintainability of the editor's UI structure.
- Updated CMake configuration to always include the ImGui Test Engine when tests are enabled, removing conditional checks for UI tests.
- Simplified feature flag management by enabling JSON and gRPC by default, with a minimal build option to disable only the most expensive features.
- Enhanced status messages to provide clearer feedback on build configurations and feature availability.
Benefits:
- Streamlined integration of the ImGui Test Engine for testing purposes.
- Improved clarity in feature flag settings, making it easier to manage build configurations.
- Removed direct inclusion of `emulator_commands.h` in non-gRPC contexts to streamline dependencies.
- Updated CMake configuration to conditionally include emulator command sources only when gRPC is enabled, enhancing modularity.
- Ensured consistent handling of emulator commands across different components.
Benefits:
- Improved code organization and maintainability by clarifying the inclusion of gRPC-related features.
- Enhanced flexibility in managing command handlers based on compilation flags.
- Moved the declaration of `AgentControlServer` to a forward declaration in the header file for better clarity and organization.
- Updated the `EditorManager` constructor to initialize the version string and popup manager context.
- Added conditional compilation for gRPC-related includes and commented out the agent control server initialization for future reference.
- Ensured consistent definition of `IMGUI_DEFINE_MATH_OPERATORS` across multiple files to prevent potential issues with ImGui usage.
Benefits:
- Improved code organization and readability.
- Enhanced maintainability by clarifying the initialization process and managing includes effectively.
- Introduced preprocessor macros for feature flags in CMake, allowing conditional compilation based on the presence of gRPC and JSON features.
- Updated the agent source file list to include gRPC-dependent sources only when gRPC is enabled, enhancing modularity and maintainability.
Benefits:
- Improved flexibility in enabling/disabling features at compile time.
- Streamlined source management for better organization of gRPC-related components.
- Added `AgentControlServer` to manage gRPC connections for emulator control.
- Introduced `EmulatorServiceImpl` with methods for starting, stopping, and controlling the emulator, including button presses and memory operations.
- Created new command handlers for pressing, releasing, and holding emulator buttons.
- Updated CMake configuration to include new source files and proto definitions for the emulator service.
Benefits:
- Enhanced control over the emulator through gRPC, allowing for remote interactions.
- Improved modularity and maintainability of the emulator's command handling.
- Streamlined integration of new features for emulator control and state inspection.
- Renamed `turbo_mode()` to `is_turbo_mode()` for clarity in the Emulator class.
- Improved input handling in the Snes class by adding button state management and ensuring proper initialization of input controllers.
- Implemented multiple audio resampling methods (linear, cosine, cubic) in the Dsp class, allowing for enhanced audio quality during playback.
- Updated the user interface to include options for selecting audio interpolation methods and added keyboard shortcuts for emulator controls.
Benefits:
- Improved code readability and maintainability through clearer method naming and structured input management.
- Enhanced audio playback quality with new resampling techniques.
- Streamlined user experience with added UI features for audio settings and keyboard shortcuts.
- Updated CMake configuration to conditionally link the yaze_test_support library for both yaze and yaze_emu targets, ensuring proper integration with TestManager.
- Enhanced status messages to provide clearer feedback on the linkage status and potential issues if the target is not found.
Benefits:
- Improved clarity and maintainability of the CMake configuration.
- Enhanced modularity by managing test dependencies more effectively.
- Improved the CMake configuration to conditionally link the yaze_test_support library for the yaze target when tests are enabled, providing clearer feedback on linkage status.
- Updated the file dialog implementation to include specific filters for ROM files and all files, enhancing user experience during file selection.
- Added status messages to inform users about the linkage of test support and potential issues if the target is not found.
Benefits:
- Enhanced clarity and maintainability of the CMake configuration.
- Improved user interaction with file dialogs through better filtering options.
- Enhanced audio backend initialization by adding comments for clarity and ensuring a moderate buffer size for optimal latency and stability.
- Updated the emulator's run logic to start in a running state by default and refined the auto-pause mechanism to only trigger during window resizing, removing aggressive focus-based pausing.
- Implemented adaptive audio buffering to maintain smooth playback, adjusting the number of queued samples based on current buffer status.
Benefits:
- Improved user experience with more intuitive audio handling and reduced latency.
- Enhanced stability during window operations, preventing crashes on macOS.
- Streamlined audio processing for better performance and responsiveness.
- Added conditional linkage of the yaze_test_support library for both yaze and yaze_emu targets when tests are enabled, ensuring proper integration with TestManager.
- This change enhances the modularity of the CMake configuration by managing test dependencies more effectively.
Benefits:
- Improved organization of test support linkage in the CMake configuration.
- Enhanced maintainability by ensuring that test dependencies are only included when necessary.
- Modified include paths in multiple source files to reflect the new directory structure, ensuring all references are correctly aligned with the updated project organization.
Benefits:
- Enhanced maintainability and clarity of the codebase by standardizing include paths.
- Updated include paths in several source files to reflect the new directory structure, ensuring consistency across the project.
- Deferred the linkage of the yaze_test_support library to the test.cmake file for better dependency management and ordering.
Benefits:
- Improved organization of include paths for better maintainability.
- Enhanced modularity by managing test dependencies separately.
- Removed direct linkage of yaze_test_support in the yaze target when tests are enabled, as it is now included transitively through yaze_editor.
- Added linkage of yaze_editor to yaze_test_support to facilitate TestManager usage, ensuring test dependencies are managed privately.
Benefits:
- Simplified CMake configuration by reducing direct dependencies.
- Enhanced modularity and maintainability of test support in the editor.
- Introduced a new file dialog implementation using nativefiledialog-extended for better file handling on Windows and Linux platforms.
- Updated CMake configuration to link the new file dialog library and include necessary directories.
- Enhanced the editor library to conditionally link a test support library when testing is enabled.
Benefits:
- Improved user experience with native file dialogs for file operations.
- Streamlined testing support in the editor library, enhancing modularity and maintainability.
- Removed the `old_cpu.cc` file from the CMake build configuration to streamline the project structure and eliminate unused code.
- This change enhances maintainability by focusing on the current CPU implementation.
Benefits:
- Improved clarity and organization of the build system.
- Reduced potential confusion from legacy code.
- Added support for a new `--tui` flag in the CLI to launch a chat-based TUI for ROM interaction.
- Integrated a fallback mechanism for loading ROM files from specified directories.
- Updated the ChatTUI to provide a more informative initial message and added a new option to display ROM info.
- Refined the CI workflow to differentiate between stable and experimental test runs, improving test result organization.
Benefits:
- Improved user experience with the new TUI feature for ROM hacking.
- Enhanced clarity in CI test results, facilitating better debugging and reporting.
- Refactored CMakeLists.txt to streamline project configuration and improve readability.
- Introduced new utility functions in `utils.cmake` for setting compiler flags and managing dependencies.
- Added `dependencies.cmake` to centralize third-party dependency management, enhancing modularity.
- Updated CI workflows to include new build options and improved logging for better feedback during configuration.
- Implemented precompiled headers in various libraries to speed up compilation times.
Benefits:
- Improved maintainability and clarity of the build system.
- Enhanced build performance through precompiled headers.
- Streamlined dependency management for easier integration of third-party libraries.
- Implemented a Command Abstraction Layer to eliminate ~1300 lines of duplicated code across tool commands, enhancing maintainability and consistency.
- Established a unified structure for argument parsing, ROM loading, and output formatting across all commands.
- Added comprehensive documentation, including a Command Abstraction Guide with migration checklists and testing strategies.
- Introduced better testing capabilities for command components, making them AI-friendly and easier to validate.
- Removed legacy command classes and integrated new command handlers for improved functionality.
Benefits:
- Streamlined command handling and improved code quality.
- Enhanced developer experience with clear documentation and testing strategies.
- Maintained backward compatibility with no breaking changes to existing command interfaces.
- Introduced new commands for dungeon editing, including exporting room data, listing objects, and setting room properties.
- Implemented a hex viewer component for inspecting ROM data in a hexadecimal format.
- Updated the tool dispatcher to handle new dungeon commands and integrated them into the CLI.
- Enhanced the main menu and unified layout to include the hex viewer and improved navigation.
- Refactored existing components for better state management and event handling.
Benefits:
- Expanded functionality for dungeon editing and ROM inspection.
- Improved user experience with new tools and streamlined navigation.