- Added frame rate tracking to the emulator, calculating and displaying current FPS in the UI.
- Enhanced audio management by monitoring queued audio frames and ensuring the audio buffer is filled appropriately.
- Updated texture handling to align with the PPU output format, improving visual consistency.
- Refactored timing management to cap time accumulation, preventing performance issues during frame processing.
- Refactored SDL initialization process to enhance clarity and error handling, ensuring proper setup of video, audio, and event subsystems.
- Utilized RAII smart pointers for window and renderer management, improving resource cleanup during shutdown.
- Updated audio buffer allocation to use unique_ptr for automatic memory management.
- Enhanced logging for emulator state and initialization, providing better insights during execution.
- Streamlined timing management and frame processing logic for improved performance and maintainability.
- Decreased logging limits in Snes, Apu, and Spc700 classes to prevent overflow crashes during execution.
- Updated comments in the APU boot ROM for clarity regarding the hardware dump and critical fixes.
- Enhanced logging to provide better insights while maintaining system stability.
- Added deadlock detection in the emulator's main loop to identify when the CPU is stuck, enhancing debugging capabilities.
- Updated logging during emulator shutdown to provide clearer status messages, including final CPU state and resource cleanup.
- Refactored audio and texture cleanup processes to ensure proper resource management during shutdown.
- Renamed command-line flags for improved clarity and consistency, enhancing usability for ROM loading, GUI options, and state management.
- Adjusted default maximum frames for emulator execution to 180, optimizing performance settings.
- Refactored CMake configuration to reflect changes in source file structure, ensuring proper build setup for the emulator application.
- Added command-line flags for ROM loading, GUI toggling, state loading, and dumping, improving emulator flexibility.
- Implemented state management in the Snes class with loadState and saveState methods for saving and restoring emulator state.
- Updated the main emulator loop to handle frame counting and logging, providing better insights during execution.
- Refactored CMake configuration to streamline build options for the emulator application.
- Updated APU boot ROM comments for clarity and completeness, including details on multi-byte transfer acknowledgments.
- Improved logging in APU and SPC700 classes to provide comprehensive tracing during execution, particularly for transfer protocols and MOVS instructions.
- Refactored MOVS, MOVSX, and MOVSY methods to use consistent address handling, enhancing readability and maintainability.
- Added conditional logging for specific addresses to aid in debugging and tracking state changes during instruction execution.
- Updated Emulator::Run method to accept a Rom* parameter, improving flexibility in ROM handling.
- Refactored texture creation and ROM data initialization to utilize the new parameter.
- Enhanced logging in Snes class to provide detailed information during initialization, reset, and frame processing, aiding in debugging and performance monitoring.
- Introduced cycle tracking in Apu and Spc700 classes for accurate synchronization and debugging.
- Added unit tests for APU DSP functionality and IPL ROM handshake to ensure reliability and correctness of audio processing.
- Added TimingManager class to provide precise timing for animations and frame pacing, addressing issues with ImGui::GetIO().DeltaTime.
- Updated event handling in the window management to use SDL_PollEvent for improved responsiveness.
- Integrated TimingManager into EditorManager, BackgroundRenderer, and WelcomeScreen for consistent delta time usage across the application.
- Enhanced animation updates to utilize accurate frame timing, improving visual performance and user experience.
- Introduced retro-style animations including pulsing borders, scanline effects, and glitch animations to the Agent Chat History Popup, enhancing visual appeal.
- Updated message display with terminal-inspired styling, including color-coded sender labels and retro separators.
- Improved header design with a pulsing glow effect and animated status indicators for unread messages, enriching user interaction.
- Refactored drawing methods to accommodate new visual effects while maintaining existing functionality.
- Integrated SDL for image loading in the Agent Chat Widget, allowing for dynamic screenshot previews.
- Updated the screenshot capture functionality to save selected regions and display previews, improving user interaction.
- Refactored theme color usage to utilize the new text_secondary_color for consistent styling across the widget.
- Added error handling for image loading and rendering processes, enhancing robustness and user feedback.
- Introduced a new Automation Panel in the Agent Chat Widget, providing users with real-time automation status, quick action buttons, and a list of recent automation actions.
- Implemented connection status indicators and refresh functionality for automation state, enhancing user interaction and feedback.
- Updated the header file to declare the new RenderAutomationPanel method, ensuring proper integration within the widget's UI structure.
- Added new command handlers for dialogue inspection tools: `dialogue-list`, `dialogue-read`, and `dialogue-search`, allowing users to interact with dialogue messages in the ROM.
- Introduced music data tools: `music-list`, `music-info`, and `music-tracks`, enabling users to retrieve information about music tracks and their properties.
- Implemented sprite property tools: `sprite-list`, `sprite-properties`, and `sprite-palette`, providing access to sprite details and color palettes.
- Updated the command dispatcher to support the new tools, enhancing the functionality and usability of the CLI for users working with ROM data.
- Added a helper method, MakeCardTitle, to generate session-aware titles for editor cards based on the current session context.
- Updated various editor files to utilize the new MakeCardTitle method, ensuring consistent card naming across multiple sessions.
- Refactored card initialization in AssemblyEditor, GraphicsEditor, DungeonEditorV2, OverworldEditor, and SpriteEditor to support dynamic session titles, enhancing user experience and clarity.
- Removed PushID and PopID calls in EditorManager to prevent ID stack corruption, relying on window titles for uniqueness.
- Updated ImGui window size and position settings to use FirstUseEver for maximizing on first open, enhancing user experience.
- Replaced AgentUI::PopPanelStyle with ImGui::PopStyleColor in multiple locations for consistency in style management.
- Ensured all EditorCard instances consistently call End after Begin, improving code clarity and preventing potential rendering issues.
- Implemented Canvas Automation API integration in OverworldEditor, allowing for automated tile operations and enhanced control.
- Simplified editing modes in the toolbar, consolidating functionality for a more intuitive user experience.
- Updated entity editing shortcuts and context menu interactions to streamline entity management.
- Adjusted drawing methods to ensure consistent rendering without scale application, improving performance and clarity.
- Added comments for future enhancements regarding entity operations submenu.
- Introduced a gRPC service wrapper for CanvasAutomationServiceImpl, enabling seamless integration of canvas operations with gRPC.
- Added a helper function to convert absl::Status to grpc::Status, ensuring consistent error handling across service calls.
- Updated UnifiedGRPCServer to initialize and register the Canvas Automation service, enhancing the server's capabilities for handling canvas-related requests.
- Refactored service initialization to accommodate the new canvas service, improving modularity and maintainability of the server code.
- Introduced a new language definition for the 65816 assembly language, improving syntax highlighting and code editing capabilities.
- Updated the AssemblyEditor to utilize the new language definition and integrated a toolset for file management actions, enhancing user experience.
- Refactored the file handling logic to support dynamic file opening and saving, ensuring better resource management within the editor.
- Removed deprecated tab view code, transitioning to a more modular card-based layout for active files, improving UI responsiveness and organization.
- 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.
- Introduced a new gRPC service for canvas automation, enabling remote control of canvas operations for AI agents, GUI testing, and collaborative editing.
- Added proto definitions for canvas automation, including tile operations, selection management, and view control functionalities.
- Implemented the CanvasAutomationServiceImpl class to handle various canvas operations, ensuring a robust interface for automation tasks.
- Updated CMake configuration to include new proto files and service implementations, enhancing the build system for the canvas automation features.
- 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.
- Added file utility header for improved resource path management.
- Enhanced ASM file handling by utilizing GetResourcePath for better compatibility across deployment scenarios.
- Cleaned up code formatting and comments for clarity, ensuring consistent indentation and readability.
- Deprecated feature flag for ZSCustomOverworld ASM application, simplifying the logic for version gating.
- Changed static asm_version declarations to non-static to ensure fresh reads from ROM, reflecting upgrades accurately.
- Improved comments to clarify the importance of reading the asm_version dynamically.
- Enhanced the DrawToolset method in OverworldEditor to include a new ROM Upgrade Popup for applying ASM patches, improving user experience and functionality.
- Updated MapPropertiesSystem to support area size selection for all ROM versions, introducing logic for Wide and Tall options in v3+.
- Improved UI elements with tooltips and organized layouts for better user experience when configuring map sizes.
- Added ConfigureMultiAreaMap method in Overworld class to manage sibling relationships and update ROM data based on area size.
- Implemented safety checks for palette setting in OverworldEditor to ensure valid bitmap surfaces before applying changes.
- Cleaned up related code and comments for clarity and maintainability.
- Deleted OverworldEditorManager and OverworldGraphicsManager classes to streamline the codebase and reduce complexity in the overworld editor.
- Updated CMake configuration to remove references to the deleted files, ensuring a clean build environment.
- Adjusted OverworldEditor to handle graphics management directly, improving maintainability and reducing the number of dependencies.
- Enhanced the initialization and update methods in OverworldEditor to accommodate the removal of the manager classes, ensuring continued functionality.
- Cleaned up related header files to reflect the removal of obsolete classes and methods, enhancing clarity and organization.
- Introduced OverworldGraphicsManager to handle graphics loading, refreshing, and texture management for the overworld editor.
- Updated MapPropertiesSystem to integrate new graphics management features, ensuring proper refresh order for map properties and graphics.
- Added methods for forcing graphics refresh and handling sibling map graphics, improving the responsiveness of the editor.
- Enhanced UI elements in the MapPropertiesSystem for better user experience, including tooltips and organized layouts.
- Updated CMake configuration to include new graphics manager files, ensuring proper integration into the build system.
- Added OverworldEntityRenderer class to separate entity rendering logic from OverworldEditor, improving maintainability and testability.
- Updated OverworldEditor to utilize the new entity renderer, removing legacy drawing functions for entrances, exits, items, and sprites.
- Enhanced initialization and drawing methods to streamline entity visualization and interaction within the editor.
- Updated CMake configuration to include the new renderer files, ensuring proper integration into the build system.
- Removed the DrawTileSelector function, transitioning to an individual card system for tile selection.
- Eliminated unused functions related to custom background color and overlay editing, simplifying the codebase.
- Updated header file to reflect the removal of obsolete methods and constants, enhancing clarity and maintainability.
- Improved overall organization of the OverworldEditor class for better readability and performance.
- Updated the MapPropertiesSystem to enhance the user interface with icons and tooltips for better accessibility and clarity.
- Renamed UI elements for consistency, changing "Map Properties" to "Area Configuration" and "Overlay Editor" to "Visual Effects Editor."
- Improved the layout and organization of the properties panel, ensuring a more intuitive user experience.
- Added detailed tooltips and help sections to guide users in configuring visual effects and overlays.
- Removed legacy window code, consolidating all editor functionalities into a streamlined system for better performance and maintainability.
- 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.
- Introduced callback mechanisms in MapPropertiesSystem for refreshing map properties, overworld map, and palette, improving modularity and flexibility.
- Updated UI elements in map properties to include icons and tooltips for better user experience and accessibility.
- Refactored drawing methods to utilize a more organized layout, enhancing readability and maintainability of the code.
- Adjusted table structures in the UI to improve visual density and usability, ensuring a more compact and efficient interface.
- Removed unused includes and cleaned up code for better performance and clarity.
- Added InitializeForTesting method in Rom class to facilitate testing setup.
- Updated DungeonCanvasViewer to adjust object and sprite sizes from 16x16 to 8x8, improving rendering accuracy.
- Modified rendering logic for various dungeon objects (chests, doors, walls, pots) to reflect new size calculations.
- Adjusted object position calculations in ObjectRenderer to align with the new size metrics, ensuring consistent rendering across the application.
- Updated integration tests to verify the new initialization method for ROM objects.
- 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.
- Updated multiple rendering functions in AgentChatWidget to replace ImGui::PopStyleColor() with AgentUI::PopPanelStyle(), enhancing consistency in style management.
- Introduced a new StatusBadge function in agent_ui_theme.cc for improved badge rendering with customizable colors, promoting better UI theming.
- Added ButtonColor enum in agent_ui_theme.h to support various badge states, improving code clarity and maintainability.
- Added agent_ui_theme.h and agent_ui_theme.cc to centralize theme color definitions for the Agent UI, improving consistency across components.
- Updated AgentChatWidget and AgentChatHistoryPopup to utilize the new theme management system, replacing hardcoded colors with theme-derived values.
- Introduced agent_ui_theme.cc to define color properties for various UI elements, enhancing maintainability and visual coherence.
- Included agent_ui_theme.h in relevant files to streamline access to theme colors, promoting a cleaner codebase.
- 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.
- Deleted app_main.cc to streamline the project structure, as it is no longer needed.
- Updated CMakeLists.txt to remove references to the deleted app_main.cc file, ensuring a clean build configuration.
- Introduced app_main.cc as the main entry point for the Yaze application, separating it from the C API implementation.
- Implemented command-line flag parsing for ROM file loading, logging level, log file path, and log categories.
- Configured the logging system to enhance traceability and user feedback during application startup and execution.
- Integrated the core controller for managing application state and rendering, improving overall application structure and functionality.
- Added includes for AgentChatWidget and TestManager in automation_bridge.cc and automation_bridge.h to facilitate communication between components.
- Introduced forward declaration for AgentChatWidget in automation_bridge.h to improve code organization and clarity.
- Updated test_manager.h to include necessary definitions for improved functionality.
- 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.
- Integrated logging functionality across various components, replacing standard output with structured logging for improved traceability.
- Added z3ed AI Agent test suites for enhanced testing capabilities, including connectivity and command parsing tests.
- Updated the Settings Editor to allow configuration of logging behavior, including log levels and file output options.
- Enhanced the Test Dashboard with tabbed views for better organization of test results, including GUI automation tests.
- Restored a compact single-row layout for the AI provider selection in AgentChatWidget, improving visibility and accessibility.
- Removed redundant RenderAgentConfigPanel to streamline the UI, ensuring the connection header is always visible.
- Updated the collaboration panel to be always visible, enhancing user interaction without the need for collapsing headers.
- Modified the AgentEditor layout to feature a three-column design with always-visible settings and status cards, improving organization and user experience.
- Enhanced the chat history popup with a more compact title and provider dropdown, ensuring buttons are properly spaced and functional.
- Implemented functionality to save, load, and delete chat sessions, allowing users to manage their chat history effectively.
- Introduced a new layout for the connection status bar and improved the AI provider selection interface for better visibility.
- Enhanced the UI of the AgentEditor with a modular 3-column layout, including dedicated tabs for system prompts and common tiles, improving user experience and organization.
- 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.