- 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 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.
- 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.
- 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.
- 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.
- Removed the `HandleEntityDragging` function to streamline entity dragging logic directly within the `OverworldEditor`.
- Implemented centralized drag-and-drop functionality for entities, improving user interaction during editing.
- Updated the `OverworldEntityRenderer` to manage hovered entities more effectively, enhancing the overall editing experience.
- Cleaned up unused code and improved readability across the entity handling components.
- Streamlined the canvas documentation by consolidating multiple guides into a single comprehensive overview.
- Updated the canvas architecture section to reflect new features and interaction modes, enhancing clarity for users.
- Improved API patterns and integration steps for editors, ensuring consistency across documentation.
- Removed outdated content and added new sections on automation and debugging, aligning with recent code changes.
- Adjusted file paths in the documentation to match the current project structure, ensuring accurate references.
- Moved canvas utility functions into a dedicated `canvas_utils` module for better structure and maintainability.
- Introduced a new `BppFormatUI` class for managing BPP format selection and conversion, enhancing the user interface for format management.
- Updated CMake configuration to include new source and header files for the canvas utilities and BPP format UI.
- Adjusted file paths in the project structure to reflect the new organization, ensuring proper integration across components.
- Refactored file paths for performance-related headers to reflect the new directory structure under `app/gfx/performance/`.
- Updated references in the `Canvas` class to align with the new paths, ensuring proper integration of performance monitoring components.
- Cleaned up unnecessary prefixes in performance integration checks to enhance code readability and maintainability.
- Refactored header includes for Performance Profiler and Dashboard to reflect new directory structure under `app/gfx/performance/`.
- Introduced a new `EmulatorTestSuite` class to validate core emulator components, including APU, SPC700, and debugging features.
- Enhanced test suite with detailed test cases for APU handshake, SPC700 cycle accuracy, breakpoint management, and audio backend functionality.
- Removed outdated `test_dungeon_objects.cc` file from the test suite to streamline testing focus.
- Updated file paths for performance-related headers to reflect new directory structure under `app/gfx/performance/`.
- Introduced new `PerformanceDashboard` and `PerformanceProfiler` classes for comprehensive performance monitoring and reporting.
- Enhanced performance metrics collection and visualization capabilities, including real-time updates and detailed reports.
- Improved memory usage tracking and optimization status analysis within the graphics system.
- Ensured compatibility with existing components by updating include directives across multiple files.
- Added a sub-menu for toggling visibility of object outlines based on type and layer, allowing for more granular control over displayed objects in the dungeon canvas.
- Implemented checkboxes for filtering object outlines by type (Type 1, Type 2, Type 3) and layer (Layer 0, Layer 1, Layer 2) in the debug menu.
- Updated the drawing logic to respect the new filtering options, ensuring only the selected objects are rendered on the canvas.
- Improved the visibility of object ID labels by making them smaller and less obtrusive, enhancing the overall clarity of the canvas display.
- Added detailed comments to clarify the canvas coordinate system and scaling model for dungeon rendering.
- Implemented persistent debug overlays for room and texture information, allowing real-time visibility of room properties and texture states.
- Introduced a context menu with options for debugging, including toggling visibility of room info, texture info, and object bounds.
- Updated canvas drawing methods to ensure correct handling of unsized dimensions and scaling, improving rendering accuracy.
- Refactored coordinate conversion functions to return unsized pixel coordinates, preventing double-scaling issues.
- Registered multiple emulator cards (CPU Debugger, Memory Viewer, PPU Viewer, Audio Mixer) with the EditorCardManager for improved access and organization.
- Updated EditorManager to support the new Emulator editor type in context-sensitive card controls.
- Improved GraphicsEditor loading process with enhanced logging and palette management for graphics sheets.
- Refactored MessageEditor to streamline font bitmap creation and texture queuing, ensuring better performance and clarity in the rendering loop.
- Removed individual card shortcuts for dungeon and graphics categories to prevent hash table overflow, consolidating functionality into a Card Browser.
- Introduced a context-sensitive card control feature that dynamically displays relevant cards based on the active editor.
- Updated PaletteEditor to clarify its use of internal tabs instead of separate cards.
- Registered multiple cards in MessageEditor and OverworldEditor, improving visibility and management of editor functionalities.
- Introduced new shortcut categories for graphics, screen, and sprite editors, improving accessibility and organization.
- Updated DungeonEditorV2 and other editor classes to register cards with the EditorCardManager, allowing for better control and visibility management.
- Refactored shortcut registration for dungeon, graphics, screen, and sprite editors, ensuring consistent user experience across the application.
- Improved initialization processes to handle dynamic card visibility and shortcuts effectively.
- Added EditorCardManager to handle registration, visibility, and management of editor cards.
- Integrated card shortcuts and dynamic menu sections for improved user experience in the dungeon editor.
- Registered multiple dungeon-related cards with associated shortcuts for quick access.
- Enhanced DungeonEditorV2 to utilize the new card management system, allowing independent control of editor cards.
- Updated UI components to support card-based editors, improving layout and usability.
- Added new UI components for the emulator, including dedicated panels for CPU and APU debugging, improving user interaction and debugging capabilities.
- Implemented a caching mechanism for rendered objects in the DungeonCanvasViewer to optimize performance and reduce rendering time.
- Updated the CMake configuration to include new UI source files, ensuring proper organization and build management.
- Enhanced the theme manager with improved color definitions for better visibility and consistency across the UI.
- Refactored the emulator interface to delegate rendering tasks to the UI layer, streamlining the codebase and improving maintainability.
- Eliminated the kLogInstructions flag and associated logging functionality, as the DisassemblyViewer is now always active and utilizes a more efficient sparse address-map recording method.
- Updated relevant code across multiple files to reflect the removal of the deprecated feature, ensuring cleaner and more maintainable code.
- Adjusted UI elements and serialization methods to remove references to the obsolete logging feature, streamlining the user experience.
- Replaced direct calls to GetConfigDirectory with PlatformPaths::GetConfigDirectory across multiple files to standardize configuration directory access.
- Updated RecentFilesManager, EditorManager, and various agent components to handle potential errors when retrieving the configuration directory.
- Enhanced file loading functions to utilize the new LoadFileFromConfigDir method for improved clarity and error handling.
- Introduced new methods in file_util.h for better file management practices, leveraging std::filesystem for cross-platform consistency.
- Updated the testing guide to clarify the testing framework's organization and execution methods, improving user understanding.
- Refactored CMakeLists to include new platform-specific files, ensuring proper integration of the rendering backend.
- Modified main application files to utilize the new IRenderer interface, enhancing flexibility in rendering operations.
- Implemented deferred texture management in various components, allowing for more efficient graphics handling and improved performance.
- Introduced new methods for texture creation and updates, streamlining the rendering process across the application.
- Enhanced logging and error handling in the rendering pipeline to facilitate better debugging and diagnostics.
- Added JumpToDungeonRoom and JumpToOverworldMap methods to facilitate quick navigation between dungeon and overworld editors.
- Introduced SwitchToEditor method to manage editor tab activation based on the selected editor type.
- Enhanced DungeonEditorV2 with room and entrance selection capabilities, improving user experience and workflow efficiency.
- Updated header files to declare new methods and ensure proper integration within the editor management system.
- Added critical logging for graphics buffer management in LoadAllGraphicsData to prevent data corruption during ROM loads.
- Updated logging levels from INFO to DEBUG across various components for consistency and to reduce log verbosity.
- Refactored texture creation and palette application logic to allow editors to manage their own rendering, improving flexibility and user experience.
- Improved background buffer handling to ensure fresh bitmap creation only when necessary, optimizing performance.
- Enhanced debugging output for canvas and performance tracking, aiding in better diagnostics during development.
- Introduced a new PaletteEditorWidget for visual editing of dungeon palettes, allowing users to select and modify colors.
- Integrated palette editor into DungeonEditorV2, enabling real-time updates and re-rendering of rooms upon palette changes.
- Enhanced GUI layout to include a dedicated palette editor card, improving user experience and accessibility.
- Implemented callback functionality to notify when palette changes occur, ensuring seamless integration with room rendering.
- Added DungeonObjectEmulatorPreview for rendering dungeon objects using the SNES emulator, allowing real-time visualization of object graphics.
- Implemented ObjectDrawer class to handle drawing of various object types to background buffers, utilizing game-specific patterns.
- Updated DungeonCanvasViewer to integrate object rendering and improve background layer management.
- Enhanced DungeonEditorV2 to support the new emulator preview, providing a more interactive editing experience.
- Improved error handling and logging for better debugging during object rendering operations.
- Modified CMake configuration to include additional proto files for gRPC services, enhancing the build process for canvas automation features.
- Adjusted the number of buttons in the Toolset to improve UI layout.
- Introduced a new constructor for EditorCard to manage open state, enhancing flexibility in editor card management.
- Replaced static context menu setup in OverworldEditor with dynamic configuration based on the current map state, improving usability and responsiveness.
- Introduced TileSelectorWidget for better tile selection management, allowing for a more intuitive user experience when selecting tiles.
- Updated canvas controls to include zoom in and zoom out functionalities, enhancing the editor's navigation capabilities.
- Cleaned up legacy context menu code and improved overall organization for better maintainability and clarity.
- Removed toolbar measurement functionality from Toolset, including overflow checks and logging, to streamline the code.
- Eliminated unnecessary widget measurement calls in mode buttons and combo boxes, enhancing performance and clarity.
- Updated CMake configuration to exclude the widget measurement source file, reflecting the current project structure.
- Refactored the toolbar layout in Toolset to enhance compactness and usability, adjusting padding and button sizes for better alignment.
- Introduced a new WidgetMeasurement class to track widget dimensions, improving debugging and test automation capabilities.
- Updated CMake configuration to reflect the new file structure for widget measurement components, ensuring proper integration.
- Renamed CompactToolbar class to Toolset for improved clarity and consistency in naming.
- Introduced WidgetMeasurement for tracking widget dimensions, enabling debugging and test automation.
- Updated toolbar methods to include measurement functionality, logging overflow warnings, and improved layout handling.
- Removed the deprecated SettingsBar and Toolset classes to streamline the codebase.
- Adjusted CMake configuration to reflect the new file structure and included widget measurement source files.
- Added CompactToolbar class to provide a modern, ultra-compact toolbar for the editor, featuring mode buttons, property editing, and quick actions.
- Implemented EditorCard class for draggable, dockable editor sub-windows, enhancing the user interface with responsive and themed cards.
- Introduced EditorLayout class to manage the overall editor layout, integrating the toolbar and main canvas for a cohesive user experience.
- Updated CMake configuration to include new source files, ensuring proper build integration.
- Modified file paths in verify-build-environment scripts to reflect the new directory structure for agent-related files, enhancing clarity and organization.
- Added new SettingsBar and Toolset classes to improve the editor's UI, providing a modern, compact interface for managing settings and tools.
- Implemented helper functions for animations and responsive layouts in ui_helpers, enhancing the overall user experience and visual appeal.
- Updated CMake configuration to include new source files, ensuring a seamless build process.
- Added AgentChatHistoryPopup class to provide a sidebar for displaying recent chat messages, improving user accessibility to chat history.
- Integrated the new popup into the editor's source files, ensuring proper inclusion and functionality within the existing UI framework.
- Refactored related files to accommodate the new popup, enhancing code organization and maintainability.
- Updated CMake configuration to include the new source files, ensuring a seamless build process.
- Added ui_helpers.cc and ui_helpers.h to centralize UI-related helper functions, improving code organization and reducing boilerplate in ImGui usage.
- Refactored color management in BppFormatUI to utilize new helper functions for success, warning, and error colors, enhancing theming consistency.
- Updated AgentChatWidget and CanvasContextMenu to streamline UI rendering and improve maintainability by removing redundant code and enhancing functionality.
- Removed canvas_utils_moved.cc and canvas_utils_moved.h to clean up the project structure, consolidating utility functions into more appropriate locations.
- Introduced a new common_tiles.txt file for AI agents, providing a customizable reference for various tile types used in projects.
- Updated CMake configuration to improve asset copying for macOS and non-Apple platforms, ensuring agent assets are correctly placed in the output directory.
- Enhanced the AssetLoader to support additional search paths for asset retrieval, improving cross-platform compatibility.
- Improved error handling in the AgentEditor for missing prompt files, providing clearer instructions for users on file locations and creation.
- Updated CMake presets for macOS to include binary directory and cache variables for improved build configuration.
- Added new function schemas for ROM manipulation, including `hex-read`, `hex-write`, `hex-search`, and palette management functions such as `palette-get-colors` and `palette-set-color`.
- Introduced TODO management functions to create, list, and update tasks, enhancing task tracking capabilities within the application.
- Changed the paths for project logo and icon in Doxyfile to point to the new assets directory.
- Updated CMake configurations to reflect the new locations of resource files, enhancing clarity and maintainability.
- Replaced instances of core utility functions with util functions across various files for consistency in file handling.
- Added new resource files for Windows platform support and removed obsolete resource files, streamlining the build process.
- Refactored RecentFilesManager to utilize the utility function for ensuring the configuration directory exists, enhancing code clarity.
- Updated ThemeManager to use the utility function for retrieving file names, improving consistency across the codebase.
- Adjusted selected_editor initialization in EditorSelectionDialog to use static_cast for better type safety.
- Removed references to the old `EnhancedPaletteEditor` and replaced it with the new `PaletteWidget` across various files, including canvas and context menu implementations.
- Updated CMake configurations to include the new `palette_widget` source files, ensuring proper integration into the build system.
- Refactored GUI code to enhance modularity and maintainability, improving the overall user experience in palette management and editing functionalities.
- Introduced new UI components for background rendering and editor selection dialogs, enhancing the application's graphical interface.
- Updated file dialog references across the application to utilize a new `util::FileDialogWrapper` for consistent file handling.
- Refactored existing code to replace direct calls to `core::FileDialogWrapper` with the new utility class, enhancing modularity and maintainability.
- Introduced `util::PlatformPaths` for cross-platform directory management, ensuring consistent access to user directories and application data paths.
- Added new utility functions for file operations, improving the overall file handling capabilities within the application.
- Updated CMake configurations to include new utility source files, streamlining the build process.
- Introduced `RomVersionManager` for managing ROM snapshots, including automatic backups, manual checkpoints, and corruption detection.
- Added `ProposalApprovalManager` to facilitate collaborative proposal submissions and voting, enhancing team workflows.
- Updated `CollaborationPanel` to integrate version management features, allowing users to track changes and manage proposals effectively.
- Enhanced documentation to reflect new functionalities and usage instructions for version management and collaboration features.
- Introduced `CollaborationPanel` class to manage ROM synchronization history, shared snapshots, and AI-generated proposals.
- Implemented UI components for displaying and interacting with collaboration data, including filtering and status indicators.
- Updated `README.md` to document the new collaboration features and their functionalities.
- Added necessary header and implementation files for the collaboration panel functionality.
- Added YAZE_SUPPRESS_WARNINGS option to suppress compiler warnings for cleaner build output.
- Updated CMakeLists.txt to apply warning suppression based on the new option.
- Reorganized CMakePresets.json to simplify preset names and enhance clarity, including new presets for quiet and verbose builds.
- Created documentation for the new CMake preset system, detailing usage and features.