- Enhanced CMake configuration to conditionally apply /WHOLEARCHIVE linking for protobuf targets, ensuring only library targets are included.
- Updated linking logic across multiple components including `yaze`, `yaze_emu`, `z3ed`, and test suites to improve compatibility and prevent linker errors.
Benefits:
- Increases build stability and clarity by ensuring only relevant targets are linked, reducing potential conflicts during the build process.
- Adjusted CMake files to conditionally link protobuf using /WHOLEARCHIVE on Windows to include internal symbols while avoiding LNK1241 errors.
- Updated linking logic for `yaze`, `yaze_editor`, `yaze_emu`, `z3ed`, and test suites to ensure compatibility across platforms.
Benefits:
- Improves build stability and compatibility for Windows users by ensuring proper symbol inclusion without resource duplication issues.
- Added /WHOLEARCHIVE linking for protobuf in various CMake files to ensure internal symbols are included while preventing resource duplication.
- Updated linking options for `yaze`, `yaze_emu`, `z3ed`, and test suites to apply this option conditionally on Windows with MSVC.
Benefits:
- Ensures proper inclusion of protobuf symbols in executables, improving compatibility and functionality across platforms.
- Updated caching keys in CI and release workflows from v2 to v3 for gRPC dependencies to improve cache management.
- Enhanced linking options for `yaze_editor` and `yaze_agent` to ensure test symbols are included correctly across different platforms.
Benefits:
- Streamlines the build process by ensuring proper versioning and linking of test support libraries.
- Improves cache efficiency in CI workflows, reducing build times.
- Updated `UpdateMapProperties` methods across various entities (entrances, exits, items, sprites) to include an optional context parameter for improved area size detection.
- Introduced `OverworldVersionHelper` for centralized ROM version detection and feature gating, replacing scattered inline checks.
- Refactored coordinate calculations to utilize normalized map IDs, ensuring consistency and preventing data corruption.
- Enhanced exit properties to sync player positions and calculate scroll/camera values based on the overworld context.
Benefits:
- Streamlines entity property updates and improves compatibility with different ROM versions.
- Reduces code duplication and enhances maintainability by centralizing version checks.
- Ensures accurate coordinate calculations for overworld entities, improving overall functionality.
- Upgraded gRPC version from v1.68.0 to v1.75.1 for improved compatibility across all platforms.
- Removed /WHOLEARCHIVE linking for protobuf to prevent duplicate version resource errors in the dependency chain.
- Updated status messages to reflect the latest gRPC version and build optimizations.
Benefits:
- Enhances build stability and compatibility with modern toolchains.
- Simplifies linking process by avoiding unnecessary options that cause conflicts.
- Changed `x_camera_` and `y_camera_` in `OverworldExit` from `uint8_t` to `uint16_t` for consistency and to accommodate larger values.
- Updated the `DrawExitEditorPopup` function to use `InputHexWord` for camera positions, reflecting the new data type.
- Added `ImGui::PushID` and `ImGui::PopID` calls in various popup functions to resolve duplicate ID warnings, enhancing the stability of the UI.
Benefits:
- Ensures proper handling of camera coordinates in the overworld editor.
- Improves UI robustness by addressing ID conflicts in popups.
- Replaced the legacy ContextMenuItem structure with a new CanvasMenuItem across various files, enhancing consistency in context menu management.
- Introduced CanvasMenuBuilder for fluent menu construction, allowing for easier addition of items and submenus.
- Updated Canvas and related components to utilize the new menu system, improving organization and maintainability of context menus.
Benefits:
- Streamlines context menu item management, making it more intuitive and flexible.
- Enhances code readability and reduces duplication, facilitating future enhancements.
- Introduced a new `PopupRegistry` class to manage persistent popups, improving the organization and lifecycle handling of popups within the canvas.
- Added `canvas_menu.cc` and `canvas_menu.h` to define menu item and section structures, along with rendering functions for a more declarative menu system.
- Updated `canvas.cc` to utilize the new popup registry, ensuring backward compatibility with legacy popup handling during the migration phase.
Benefits:
- Streamlines popup management, enhancing usability and maintainability of the canvas UI.
- Facilitates the addition of complex menu structures and interactions, improving overall user experience.
- Introduced new files `canvas_interaction.cc` and `canvas_interaction.h` to encapsulate event-driven logic for tile painting, rectangle selection, and entity interactions.
- Refactored `CanvasInteractionHandler` to utilize the new event-based functions, improving code organization and maintainability.
- Added `canvas_events.h` to define event payload structures for various canvas interactions, enhancing clarity and usability.
Benefits:
- Streamlines interaction handling by separating concerns and reducing stateful dependencies.
- Improves testability and readability of the canvas interaction logic, facilitating future enhancements.
- Added new files `canvas_geometry.cc`, `canvas_geometry.h`, `canvas_rendering.cc`, and `canvas_rendering.h` to encapsulate canvas geometry calculations and rendering logic.
- Refactored `Canvas::DrawBackground` and related methods to utilize the new geometry and rendering helpers, improving code organization and readability.
- Introduced `CanvasState` to consolidate canvas state management, gradually replacing scattered state members.
Benefits:
- Enhances maintainability and clarity of canvas-related code.
- Streamlines rendering operations and geometry calculations, improving overall performance and usability.
- Introduced new `entity_operations.cc` and `entity_operations.h` files to handle the insertion of entrances, exits, sprites, and items in the overworld editor.
- Updated `map_properties.cc` to include a context menu for entity insertion, allowing users to add various entities directly from the canvas.
- Enhanced `overworld_editor.cc` to manage entity insertion callbacks and streamline the editing process.
Benefits:
- Improves the functionality of the overworld editor by enabling direct manipulation of entities.
- Provides a more intuitive user experience with context-sensitive menus for entity operations.
- Modified CMake presets to include static triplet for vcpkg in Windows configurations, enhancing build consistency.
- Updated vcpkg baseline and commit ID across configuration files to ensure compatibility with the latest package versions.
- Enhanced CI workflows to utilize the new vcpkg toolchain file, improving the setup process for Windows builds.
Benefits:
- Ensures the project leverages the latest features and fixes from vcpkg, enhancing overall stability.
- Streamlines the Windows build process by consolidating vcpkg configurations, reducing potential discrepancies during builds.
- Removed the `core_library.cmake` file and integrated its components into `app.cmake` to streamline the application structure.
- Updated the CMake configuration to reflect the new organization, ensuring proper inclusion of core components such as ROM management and application controller.
- Enhanced build messages to clarify the status of the application core library configuration.
Benefits:
- Simplifies the CMake structure by consolidating related components, improving maintainability and clarity.
- Promotes a clearer separation of concerns within the application architecture.
- Moved the gRPC test harness proto and services to `yaze_test_support` to avoid circular dependencies and improve modularity.
- Updated the core library CMake configuration to reflect the new structure, ensuring proper inclusion of ROM service and canvas automation.
- Enhanced the build messages to clarify the status of gRPC services and test harness integration.
Benefits:
- Streamlines the build process by clearly separating core and test functionalities.
- Improves maintainability and clarity in the CMake configuration for gRPC services.
- Moved core components such as `Controller` and `Window` from `src/app/core/` to `src/app/` and `src/app/platform/`, respectively, to improve modularity and clarity.
- Updated include paths across the codebase to reflect the new locations of these components.
- Introduced a new foundational core library in `src/core/` for project management and ROM patching logic, enhancing the separation of concerns.
- Adjusted CMake configurations to ensure proper compilation of the new core library and updated dependencies in various modules.
Benefits:
- Streamlines the application structure, making it easier to navigate and maintain.
- Enhances code organization by clearly delineating core functionalities from application-specific logic.
- Improves overall architecture by promoting a clearer separation of concerns between different components.
- Added a new `session_types` module to encapsulate session-related structures and logic, including `EditorSet` and `RomSession`.
- Refactored `EditorManager` to utilize `SessionCoordinator` for session management, enhancing modularity and clarity.
- Updated various methods to replace direct references to current ROM and editor sets with calls to `SessionCoordinator`, improving session handling.
- Removed redundant session management logic from `EditorManager`, delegating responsibilities to `SessionCoordinator`.
Benefits:
- Streamlines session management, making it easier to handle multiple sessions and their associated editors.
- Enhances code maintainability by centralizing session-related logic and reducing coupling within the `EditorManager`.
- Improves overall architecture by promoting a clearer separation of concerns between session management and editor functionality.
- Relocated AsarWrapper implementation and header files from `src/app/core/` to `src/core/` to enhance modularity and organization.
- Updated all relevant include paths across the codebase to reflect the new location of AsarWrapper.
- Adjusted CMake configurations to ensure proper compilation of the core library.
Benefits:
- Improves project structure by separating core functionalities from application-specific code.
- Facilitates easier maintenance and understanding of the codebase by clarifying the organization of core components.
- Eliminated the inclusion of EditorCardManager from multiple editor header files, streamlining dependencies and reducing coupling.
- Updated comments in PaletteEditor to reflect the transition to EditorCardRegistry for card management.
Benefits:
- Enhances modularity by decoupling editor components from the centralized card manager.
- Improves maintainability and clarity in the codebase by aligning with the new card management approach.
- Revised the editor status section to reflect the current state of various editors, including stability notes and testing requirements.
- Clarified the welcome screen visibility logic in the documentation, emphasizing its behavior when no ROM is loaded and the conditions for manual control.
- Enhanced the overall structure and clarity of the development guide to better inform contributors about the project's status and UI management practices.
Benefits:
- Provides a clearer understanding of the current capabilities and testing needs of the editors.
- Improves documentation accuracy regarding UI behavior, aiding developers in troubleshooting and feature implementation.
- Added LayoutManager to manage ImGui DockBuilder layouts for various editor types, providing professional default layouts similar to VSCode.
- Integrated layout initialization and persistence features, allowing users to save and load custom layouts.
- Updated EditorManager to initialize LayoutManager and set default layouts upon editor activation.
Benefits:
- Improves user experience by offering tailored layouts for different editing tasks.
- Enhances maintainability by centralizing layout management and initialization logic within the new LayoutManager class.
- Enhanced the logic for displaying the welcome screen by clarifying conditions for visibility and adding error logging for null references.
- Improved state management and debugging information to provide better insights into the welcome screen's behavior during runtime.
Benefits:
- Increases clarity and maintainability of the welcome screen logic, ensuring a more intuitive user experience.
- Enhances debugging capabilities with detailed logging of state changes and conditions affecting the welcome screen display.
- Updated EditorManager to streamline UI component rendering, ensuring that UI elements like the Command Palette and Global Search are properly displayed.
- Refactored MenuOrchestrator to introduce a new Debug menu, consolidating debugging tools and enhancing accessibility for users.
- Improved PopupManager to include new popups for feature flags and data integrity checks, providing better feedback and control over debugging processes.
Benefits:
- Enhances user experience by organizing UI elements and debugging tools more effectively.
- Improves maintainability by centralizing UI management and debugging functionalities within dedicated components.
- Updated multiple editor components to check visibility flags before rendering cards, ensuring that only visible cards are displayed.
- Refactored card rendering logic in GraphicsEditor, ScreenEditor, MessageEditor, MusicEditor, SpriteEditor, and Emulator to enhance user experience and performance.
- Improved maintainability by centralizing visibility checks and ensuring consistent behavior across different editor types.
Benefits:
- Streamlines the rendering process, leading to a more efficient UI experience.
- Enhances code clarity and maintainability by standardizing visibility handling across editors.
- Updated the sidebar UI in EditorCardRegistry to improve visibility and theming consistency using ThemeManager.
- Refactored SettingsEditor to register multiple settings cards, enhancing modularity and organization of settings.
- Improved the layout and interaction of category tabs, ensuring a more intuitive user experience.
Benefits:
- Streamlines the settings management process, leading to a more organized and efficient user interface.
- Enhances maintainability by clearly defining card registration and visibility logic within the editor framework.
- Updated EditorManager and various editor components to utilize EditorCardRegistry for card registration and visibility management, enhancing dependency injection and modularity.
- Refactored card registration logic across multiple editors, ensuring a consistent approach to managing editor cards.
- Improved UI coordination by delegating visibility checks and card management to the new registry, streamlining the user experience.
Benefits:
- Simplifies card management, leading to a more organized and efficient user experience.
- Enhances maintainability by clearly defining roles for card handling and editor operations, aligning with the overall architecture improvements.
- Updated EditorManager to initialize PopupManager in the constructor, ensuring safe access to popups during menu operations.
- Refactored MenuOrchestrator to utilize PopupID constants for popup management, improving clarity and maintainability.
- Enhanced PopupManager to register popups with structured definitions, allowing for better organization and future expansion.
Benefits:
- Streamlines the initialization process, preventing potential crashes due to uninitialized components.
- Improves the organization of popup management, leading to a more intuitive user experience and easier maintenance.
- Removed the save as menu and new project menu from EditorManager, delegating their functionality to PopupManager for better separation of concerns.
- Introduced a command palette in UICoordinator, enhancing user experience with fuzzy search capabilities for commands.
- Updated UI components to improve clarity and maintainability, ensuring a more efficient workflow for users.
Benefits:
- Enhances the organization of UI elements, leading to a more intuitive user experience.
- Improves code maintainability by consolidating UI management responsibilities within dedicated components.
- Updated EditorManager to include ShortcutManager in the UICoordinator initialization, improving UI responsiveness.
- Refactored menu handling in MenuOrchestrator to delegate more responsibilities to UICoordinator, streamlining the UI flow.
- Removed unused menu items and comments, clarifying the code structure and enhancing maintainability.
Benefits:
- Improves the organization of UI components, leading to a more efficient user experience.
- Enhances clarity in the codebase by reducing clutter and focusing on essential functionalities.
- Refactored session management methods in EditorManager to enhance clarity and maintainability.
- Adjusted context handling for session switching and duplication, ensuring proper session IDs are set.
- Updated the editor dependencies to use IRenderer instead of Renderer, aligning with the new graphics interface.
Benefits:
- Streamlines session management logic, leading to a more organized codebase.
- Improves compatibility with future graphics enhancements by adopting the IRenderer interface.
- Removed the SessionCardRegistry class and its associated methods, streamlining card management within the editor.
- Updated EditorManager to utilize EditorCardRegistry for card operations, enhancing session awareness and visibility control.
- Refactored related components to ensure compatibility with the new card management structure.
Benefits:
- Simplifies card management, leading to a more organized and efficient user experience.
- Improves maintainability by clearly defining roles for card handling and editor operations.
- Removed redundant window management methods from EditorManager, reducing code bloat and improving maintainability.
- Inline delegation for window management functions has been implemented in the header file, enhancing performance and clarity.
- Updated MenuOrchestrator to include new commands for showing the command palette, memory editor, and resource label manager, improving user interaction.
Benefits:
- Simplifies the EditorManager class, leading to a more organized codebase.
- Enhances user experience by providing quick access to additional functionalities through the menu system.
- Implemented methods in EditorManager to show the hex editor, AI agent, and chat history, enhancing the editor's capabilities.
- Updated MenuOrchestrator to include new menu items for accessing the hex editor, AI agent, chat history, and other UI elements.
- Improved user interaction by providing quick access to essential features through keyboard shortcuts.
Benefits:
- Streamlines the user experience by integrating additional editor functionalities.
- Enhances the overall architecture by clearly defining roles for UI and editor operations within the MenuOrchestrator.
- Expanded MenuOrchestrator to include additional UI visibility controls and editor action delegations, improving user interaction and functionality.
- Introduced methods for showing global search, performance dashboard, and ImGui metrics, along with editor actions like undo, redo, cut, copy, paste, and find.
- Updated the EditorManager to support new functionalities, including session management and layout presets.
Benefits:
- Streamlines user experience by providing quick access to essential features and enhancing the overall architecture of the editor.
- Improves maintainability by clearly defining roles for UI and editor operations within the MenuOrchestrator.
- Introduced EditorCardRegistry class to centralize card registration and management, enhancing session awareness and visibility control.
- Refactored EditorManager to delegate card-related operations to EditorCardRegistry, improving separation of concerns and maintainability.
- Updated CMake configuration to include new source files for the EditorCardRegistry component.
Benefits:
- Streamlines card management within the editor, leading to a more organized and efficient user experience.
- Enhances the overall architecture by clearly defining roles for card handling and editor operations.
- Added UICoordinator class to centralize UI drawing operations and state management, improving separation of concerns within the editor.
- Refactored EditorManager to delegate UI-related tasks to UICoordinator, enhancing maintainability and clarity.
- Updated CMake configuration to include new source files for the UICoordinator component.
Benefits:
- Streamlines UI management, leading to a more organized and efficient user experience.
- Enhances the overall architecture by clearly defining roles for UI handling and editor operations.
- Added MenuOrchestrator class to handle menu construction and coordination, improving separation of concerns within the editor.
- Refactored EditorManager to delegate menu-related tasks to MenuOrchestrator, enhancing maintainability and clarity.
- Updated CMake configuration to include new source files for the MenuOrchestrator component.
Benefits:
- Streamlines menu management, leading to a more organized and efficient user experience.
- Enhances the overall architecture by clearly defining roles for menu handling and editor operations.
- Introduced YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS to streamline linking of Protobuf targets, excluding "lite" variants.
- Updated CMake configurations across various components (yaze, yaze_core_lib, yaze_editor, yaze_net, yaze_agent, z3ed) to utilize the new whole-archive targets for MSVC builds.
- Improved test suite linking to ensure all Protobuf symbols are included during the build process.
Benefits:
- Enhances compatibility and maintainability of Protobuf linking, leading to a more robust build configuration.
- Introduced EditorRegistry, ProjectManager, and RomFileManager to streamline editor operations and improve code organization.
- Refactored EditorManager to delegate responsibilities to the new classes, enhancing maintainability and clarity.
- Updated CMake configuration to include new source files for the extracted components.
Benefits:
- Improves separation of concerns within the editor, leading to a more modular and manageable codebase.
- Enhances the overall architecture by clearly defining roles for editor management, project handling, and ROM file operations.
Benefits:
- Streamlines the build process by allowing for multiple Protobuf targets, enhancing compatibility and maintainability.
- Improves session management capabilities within the editor, leading to a more organized and efficient user experience.
- Enhance Protobuf target handling in CMake configuration
- Updated CMake files to support multiple Protobuf targets, improving flexibility in linking.
- Adjusted target link libraries across various components (yaze, yaze_core_lib, yaze_editor, etc.) to utilize the new
- Moved `app/gfx/resource/arena.cc` to the GFX_CORE_SRC section and added `app/gfx/render/background_buffer.cc` to the GFX_CORE_SRC section.
- Removed `app/gfx/render/background_buffer.cc` from the GFX_RENDER_SRC section to streamline dependencies.
- Updated target link libraries to ensure correct linking of GFX components.
Benefits:
- Improves organization of graphics source files, enhancing maintainability and clarity in the build configuration.
- Added caching for ccache and CMake dependencies in CI and release workflows to improve build performance.
- Updated installation commands to include ccache across Linux, macOS, and Windows environments.
- Enhanced CMake configuration steps to utilize ccache for faster builds and added statistics reporting.
Benefits:
- Reduces build times and improves efficiency in CI processes, facilitating quicker feedback and integration.
- Updated CI and release workflows to enable building the emulator (YAZE_BUILD_EMU), Z3ED (YAZE_BUILD_Z3ED), and additional tools (YAZE_BUILD_TOOLS).
- Ensured consistent build configurations across different platforms to enhance testing and deployment capabilities.
Benefits:
- Improves the completeness of builds in CI and release processes, facilitating better testing and integration of all components.
- Adjusted the order of method calls in BuildModernMenu to improve readability and maintainability.
- Moved the separator method call to follow the item addition for better logical flow.
Benefits:
- Enhances code clarity and organization within the menu building logic of the EditorManager.
- Updated CMake files to conditionally link against libprotobuf based on the YAZE_PROTOBUF_TARGET variable across various modules (core, net, agent, z3ed).
- Ensured consistent use of the static MSVC runtime to align with vcpkg static triplets.
- Improved clarity in build logs by adding status messages for whole-archive linking conditions.
Benefits:
- Enhances modularity and compatibility of the build system with protobuf.
- Streamlines the build process for different platforms by ensuring appropriate linking based on configuration options.
- Modified CMake settings to ensure consistent use of the Homebrew LLVM/Clang installation on macOS.
- Added a new toolchain file to specify the correct compiler and header search paths, resolving potential conflicts.
- Updated CMake presets to enable the EMU build and set appropriate compiler flags.
Benefits:
- Enhances build reliability and compatibility on macOS by utilizing the Homebrew LLVM toolchain.
- Streamlines the build process with improved configuration management.
- Updated CMake configuration to align Windows static builds (MSVC, clang-cl) with vcpkg's /MT runtime.
- Added conditional linking for libprotobuf when YAZE_WITH_GRPC is enabled, enhancing modularity.
- Addressed potential macro conflicts by undefining SendMessage in the conversational agent service files.
Benefits:
- Improves compatibility and reliability of builds on Windows platforms.
- Enhances the flexibility of the build system by conditionally linking libraries based on configuration options.