- Updated the networking documentation to clarify the focus on collaboration and remote access.
- Added the AutomationBridge class to facilitate communication between the test harness and the AgentChatWidget, enabling real-time updates on test execution status and plan summaries.
- Implemented automation callbacks in the AgentChatWidget for improved user interaction with harness automation features, including dashboard access and active test management.
- Initialized the AgentChatHistoryPopup within the EditorManager, enhancing user interaction by providing quick access to chat history.
- Added keyboard shortcuts for toggling the Chat History Popup and Proposal Drawer, improving workflow efficiency.
- Updated the menu to include options for accessing the Chat History and Proposal Drawer, streamlining user navigation.
- Enhanced the drawing logic to ensure the chat history popup is displayed alongside the proposal drawer for better visibility.
- Integrated a new `WelcomeScreen` class for a modernized user experience, featuring callbacks for opening ROMs, creating new projects, and opening existing projects.
- Updated the menu structure to include new items for message and music editors, as well as an AI Agent menu for collaboration features.
- Added functionality for hosting and joining collaboration sessions, along with options for network settings and session management.
- Improved the welcome screen display logic to handle recent projects and user interactions more effectively.
- Added a comprehensive modern menu system in `EditorManager` with File, Edit, View, Workspace, Debug, and Help menus.
- Integrated various menu items with corresponding actions, including project management, editing commands, and debugging tools.
- Enhanced user experience with keyboard shortcuts for common actions and improved menu organization.
- Updated header file to declare the new `BuildModernMenu` function and included necessary dependencies.
- Added `memory_editor.cc` and `memory_editor.h` to implement core memory editing features.
- Introduced a toolbar with options for jumping to addresses, searching patterns, and managing bookmarks.
- Removed the `EnhancedMemoryEditor` class and its associated files, streamlining the memory editing process.
- Updated `editor_library.cmake` and `editor_manager.h` to reflect the new structure and dependencies.
- Moved `menu_builder.cc` to a new `ui` directory for better organization.
- Updated `EditorManager` to generate unique ImGui IDs for multi-session support, ensuring separate window handling.
- Added session ID management in `EditorContext` for improved child panel identification.
- Introduced a new `MenuBuilder` class for streamlined ImGui menu creation, enhancing UI maintainability.
- Replaced `SDL_Deleter` with `util::SDL_Deleter` in window creation for better utility usage.
- Updated file dialog methods to consistently reference `core::FeatureFlags` for feature flag checks.
- Refactored file extension retrieval in `EditorManager` to use `util::GetFileExtension` for consistency.
- Adjusted `MusicEditor` constructor to accept a ROM pointer, enhancing initialization clarity.
- Commented out unused code in `MusicEditor` to improve readability and maintainability.
- Updated include paths in `overworld_editor.cc` for better organization.
- Cleaned up commented-out code in `editor_selection_dialog.cc` and `welcome_screen.cc` for clarity.
- Added binary directory paths to CMake presets for better build organization.
- Enhanced the macOS AI preset description to include networking capabilities.
- Refactored MusicEditor constructor to remove ROM dependency, simplifying initialization.
- Cleaned up unused ROM pointer methods in MusicEditor for improved clarity.
- 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.
- Initialized ProjectFileEditor within EditorManager to facilitate project file editing.
- Added menu options for editing project files, including loading and error handling with toast notifications.
- Updated the DrawMenuBar method to render the ProjectFileEditor interface.
- Included necessary header for ProjectFileEditor in editor_manager.h.
- Moved agent chat history codec and chat widget to a dedicated agent directory for better organization.
- Introduced AgentEditor class to manage chat, collaboration, and network coordination.
- Updated EditorManager to utilize the new AgentEditor for handling chat and collaboration features.
- Enhanced collaboration capabilities with local and network session management.
- Integrated new agent collaboration coordinator for managing collaborative sessions.
- Improved CMake configuration to include new agent source files and dependencies.
- Added an option to enable Unity (Jumbo) builds in CMake.
- Updated CMakeLists.txt to conditionally set CMAKE_UNITY_BUILD and batch size.
- Removed outdated analysis documentation for overworld implementation.
- Deleted z3ed resources YAML file as it is no longer needed.
- Refactored CMake files to modularize the build system, separating core, editor, gfx, gui, and zelda3 components into library files.
- Added precompiled headers for various libraries to improve compilation times.
- Updated yaze_config.h.in to define IMGUI_DEFINE_MATH_OPERATORS for C++ compatibility.
- Enhanced editor integration tests with necessary includes for ImGui.
- Added support for AI agent services, including `ConversationalAgentService`, to facilitate user interactions through a chat interface.
- Implemented `ChatTUI` for a terminal-based chat experience, allowing users to send messages and receive responses from the AI agent.
- Updated `EditorManager` to include options for displaying the agent chat widget and performance dashboard.
- Enhanced CMake configurations to include new source files for AI services and chat interface components.
This commit significantly expands the functionality of the z3ed system, paving the way for a more interactive and user-friendly experience in ROM hacking.
- 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.
- Deleted clipboard-related files (clipboard.cc, clipboard.h, clipboard.mm) to streamline the codebase.
- Added a performance dashboard in the EditorManager to monitor performance metrics and improve user experience.
- Integrated performance monitoring capabilities across various editors, allowing for detailed timing of critical operations.
- Updated the graphics system with batch processing for texture updates, significantly improving rendering performance.
- Introduced a memory pool allocator for efficient memory management during graphics operations.
- Updated the logic for displaying the welcome screen to only show it if it hasn't been manually closed by the user.
- Introduced a new flag to track whether the welcome screen was manually closed, enhancing user experience by preventing unwanted re-displays.
- Reset the welcome screen state when a ROM is loaded, ensuring a fresh start for the user.
- Minor adjustments to comments for clarity and maintainability.
- Updated the command palette UI to include a search input with focus management, allowing users to filter and categorize commands more effectively.
- Enhanced the global search UI with tabbed results for recent files and labels, improving organization and accessibility.
- Refactored the display settings to be accessible via a popup, allowing customization without needing to load a ROM.
- Improved the welcome screen with enhanced particle effects and customization options, making it more visually appealing and user-friendly.
- Added functionality for global font scaling and theme management within the display settings, enhancing user experience.
- Added SaveRomAs method to allow users to save ROM files with specified filenames, ensuring proper file extensions are applied.
- Updated the DrawMenuBar method to utilize SaveRomAs, providing feedback on save success or failure through toast notifications.
- Enhanced session management by introducing RemoveSession method to mark sessions as closed instead of removing them, improving user experience when managing active sessions.
- Updated session handling logic to ensure closed sessions are properly skipped in the UI, maintaining clarity in session management.
- Added a welcome screen that can be accessed from the View menu, improving user experience for new users.
- Enhanced session management by allowing the reuse of empty sessions when loading ROMs, reducing unnecessary session creation.
- Improved the session table layout for better readability and added a custom overworld feature flag for each session.
- Updated the DrawWelcomeScreen method for better visual integration and added a glow effect to the decorative line.
- Updated the Rom class to use core::ResourceLabelManager for better namespace clarity.
- Introduced a comprehensive YazeProject structure consolidating project metadata, settings, and resource management.
- Enhanced project management capabilities with methods for creating, opening, saving, and validating projects.
- Implemented support for ZScream project format import and export, improving compatibility with existing projects.
- Added workspace settings and feature flags to streamline user configurations and project setup.
- Removed the homepage display logic and replaced it with a welcome screen that appears when no ROM is loaded or no active editors are present.
- Enhanced session management by iterating through all sessions to check for active editors, allowing for better multi-session docking.
- Introduced new methods for generating unique editor titles based on session context and added feature flags for per-session configurations.
- Added safeguards for ROM loading state checks in editor methods to prevent operations on unloaded ROMs.
- Introduced session renaming functionality, allowing users to customize session names for better organization.
- Implemented duplicate session detection to prevent loading the same ROM in multiple sessions.
- Enhanced workspace preset management with improved error handling and validation during loading and saving.
- Updated UI elements to support lazy loading of workspace presets, ensuring they are available when needed.
- Refactored session display logic to provide clearer naming and improved user experience in session management.
- Added functionality for creating, duplicating, and closing sessions, enhancing user experience with multiple ROMs.
- Integrated session management UI elements, including a session switcher and session manager, for better navigation.
- Introduced workspace layout management features, allowing users to save and load layouts, and reset to defaults.
- Updated popup manager to include workspace help and session limit warnings, improving user guidance.
- Enhanced UI drawing functions to support new session and layout management features, ensuring a cohesive user interface.
- Added a comprehensive testing framework with support for unit, integration, and UI tests, improving overall test coverage and reliability.
- Integrated ImGui Test Engine for UI testing, allowing for real-time feedback and visualization of test results.
- Updated CMake configuration to conditionally include testing components based on build options, enhancing flexibility for developers.
- Introduced a new command in the CLI for running asset loading tests on ROMs, providing a straightforward way to validate functionality.
- Enhanced error handling and resource management during testing, ensuring stability and clarity in test execution.
- Improved user interface with a dedicated test dashboard for monitoring test progress and results, enhancing developer experience.
- Added LoadUserSettings and SaveUserSettings methods to handle user preferences such as font scaling and autosave settings.
- Introduced RefreshWorkspacePresets, SaveWorkspacePreset, and LoadWorkspacePreset methods for managing workspace layout presets.
- Integrated autosave functionality with a timer and user notifications via ToastManager.
- Enhanced the UI with options for saving/loading workspace presets and adjusting autosave settings.
- Replaced the previous ROM management system with a RomSession structure to encapsulate ROM and editor set data.
- Streamlined the initialization and loading processes for ROMs, reducing memory overhead and improving clarity.
- Updated methods to reference the new RomSession structure, enhancing maintainability and readability.
- Removed unused editor set management code, simplifying the overall architecture of the EditorManager.