Fixes linker error on Linux where yaze_gfx_debug.a (performance_dashboard.cc)
was calling AtlasRenderer::Get() and AtlasRenderer::GetStats() but wasn't
linking against yaze_gfx_render which contains atlas_renderer.cc.
Root cause: yaze_gfx_debug was only linking to yaze_gfx_types and
yaze_gfx_resource, missing the yaze_gfx_render dependency.
This also fixes the undefined reference errors for HttpServer methods
which were already properly included in the agent.cmake source list.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixes formatting violations that were causing CI failures.
Applied clang-format-14 to ensure consistent code formatting
across the codebase.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Documents completion of HTTP API Phase 2 implementation and sandbox
dependency fixes on the agent coordination board and initiative doc.
Coordination Board Updates:
- Mark Milestone 3 (HTTP API) as COMPLETE with test results
- Document sandbox dependency fixes (yaml-cpp, googletest)
- Note gRPC blocker and decision to use CI validation
- Provide green light for CODEX smoke builds and GH workflow
Initiative Document Updates:
- Mark Milestone 3 status as COMPLETE
- Add detailed test results (health and models endpoints)
- Document Phase 2 completion timestamp
Enables handoff to CODEX for CI validation via:
gh workflow run ci.yml --ref develop -f enable_http_api_tests=true
Co-Authored-By: Claude <noreply@anthropic.com>
Adds automatic detection of Homebrew-installed googletest to support
offline/sandboxed builds (e.g., Claude Code, restricted networks).
Changes:
- Add Homebrew detection logic to cmake/dependencies/testing.cmake
- Check /opt/homebrew/opt/googletest and /usr/local/opt/googletest
- Use brew --prefix googletest for dynamic detection
- Create target aliases (gtest -> GTest::gtest) for compatibility
- Only fetch from GitHub if no local installation found
- Update macOS build docs with yaml-cpp and googletest installation
Pattern mirrors existing yaml.cmake implementation. Complements the
pre-existing yaml-cpp Homebrew fallback to minimize network dependencies.
Tested with: brew install googletest (1.17.0, 2.4MB)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added new build options for agent UI and remote automation in CMake presets, improving modularity.
- Updated CI workflow to enable AI runtime and agent UI during builds, ensuring compatibility with new features.
- Adjusted default Ollama model in scripts and documentation to reflect the lightweight version used in CI.
- Enhanced agent test suite script to support model overrides, improving flexibility for testing scenarios.
- Moved all third-party libraries (SDL, ImGui, Asar, etc.) from `src/lib/` and `third_party/` to a new `ext/` directory for better organization and clarity in dependency management.
- Updated CMake configuration to reflect the new paths, ensuring all targets and includes point to the `ext/` directory.
- Enhanced CMake presets to support new build options for AI and gRPC features, improving modularity and build flexibility.
- Added new feature flags for agent UI and remote automation, allowing for more granular control over build configurations.
- Updated documentation to reflect changes in the project structure and build options, ensuring clarity for contributors and users.
- Created a new README.md for GitHub Actions composite actions, detailing available actions, inputs, and usage instructions for the YAZE CI/CD pipeline.
- Added a BUILD-GUIDE.md to provide a detailed overview of the build process across macOS, Linux, and Windows, including quick start commands and build system configurations.
- Introduced a BUILD-TROUBLESHOOTING.md to address common build issues, platform-specific problems, and provide solutions, enhancing the developer experience and support.
Benefits:
- Improves onboarding and usability for developers by providing clear and structured documentation.
- Facilitates easier troubleshooting and understanding of the build process across different platforms.
- Modified `.vscode/settings.json` to use workspace-relative paths for `compileCommands` and `buildDirectory`, enhancing portability across different environments.
- Updated task labels in `tasks.json` for clarity, renaming them to reflect their specific CMake operations.
- Added new tasks for cleaning builds and running tests, streamlining the development workflow.
Benefits:
- Improves the development experience by ensuring configurations are adaptable and tasks are clearly defined, facilitating easier project management.
- Updated `.clangd` configuration to include additional include paths and feature flags tailored for ROM hacking workflows, optimizing IntelliSense support.
- Introduced `.pre-commit-config.yaml` for managing code quality checks and formatting, ensuring consistent code style across the project.
- Added `cmake-format.yaml` for CMake formatting configuration, promoting adherence to style guidelines.
- Enhanced CI workflows to include new actions for testing and building, improving overall reliability and efficiency in the development process.
Benefits:
- Streamlines development setup and improves code quality through automated checks.
- Facilitates better collaboration by ensuring consistent coding standards and configurations.
- Introduced a new document detailing the overworld entity system, including its architecture, core components, and critical bug fixes.
- Outlined the ongoing refactor plan aimed at modularizing the system for improved maintainability and compatibility with ZScream features.
- Documented specific bug fixes related to entity interaction, property management, and coordinate systems to enhance functionality.
Benefits:
- Provides a comprehensive reference for developers working on the overworld entity system.
- Facilitates understanding of recent changes and future development directions.
- Upgraded gRPC from v1.67.1 to v1.75.1 for improved Windows compatibility.
- Disabled BoringSSL ASM optimizations for better clang-cl support.
- Updated documentation to reflect changes in build times and reasons for using FetchContent over vcpkg for gRPC.
- 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.
- 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.
- Replaced "⚠️ ISSUE" with "Warning: ISSUE" for consistency across dependency architecture documentation.
- Removed checkmarks from completed items in various documents to maintain uniformity in status representation.
- Enhanced clarity by ensuring all sections follow a consistent formatting style.
Benefits:
- Improves readability and consistency in documentation, making it easier for contributors to understand the project's status and issues.
- Aligns with the overall documentation style, fostering a more professional appearance across all documents.
- 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.
- Introduced a new document detailing YAZE's dependency architecture, identifying optimization opportunities, and proposing a roadmap for reducing build times and improving maintainability.
- Included a complete dependency graph, key findings, and a detailed refactoring plan to enhance modularity and reduce circular dependencies.
- Document serves as a reference for future development and architectural decisions, aiming for 40-60% faster incremental builds.
Benefits:
- Provides a clear understanding of the current state and future direction for YAZE's architecture.
- Facilitates better decision-making for developers regarding library organization and build optimization strategies.
- Created a comprehensive document detailing the implementation status of the Screen Editor, including sections for Title Screen, Overworld Map, and Dungeon Map editors.
- Document outlines current statuses, functionalities, issues, and next steps for each editor, providing clarity on ongoing development efforts.
- Highlights critical issues with vanilla ROM tilemap loading and outlines priorities for future work.
Benefits:
- Enhances project documentation, aiding developers in understanding the current state and challenges of the Screen Editor.
- Serves as a reference for future development and troubleshooting efforts.
- Introduced detailed refactoring plans for the in-app test dashboard and the zelda3 library, addressing architectural issues and improving modularity.
- The test dashboard plan outlines a decoupled architecture, enhancing maintainability and build efficiency.
- The zelda3 library plan proposes a migration to a core shared library structure, improving incremental build times and clarifying domain boundaries.
Benefits:
- Enhances the overall structure and maintainability of the codebase.
- Facilitates future development and testing efforts by establishing clear architectural guidelines.
- Introduced a new document detailing the architecture of the z3ed AI agent system, covering features like learned knowledge, TODO management, and advanced routing.
- Added a debugging guide for the AI agent, outlining the gRPC-based debugging service, available tools, and practical debugging workflows.
- Updated existing documentation to reflect recent improvements in the emulator's audio system and overall debugging capabilities.
Benefits:
- Provides clear guidance for developers on the AI agent's architecture and debugging processes, enhancing usability and understanding of the system.
- Facilitates faster onboarding and better collaboration by offering structured documentation and real-world examples.
- 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.
- Added a section on the "best effort" release strategy for pre-1.0 versions, emphasizing flexibility and transparency in CI/CD workflows.
- Introduced a command-line flag standardization decision, adopting the Abseil Flags library for consistent argument parsing across all binaries.
- Outlined a migration plan to phase out the legacy flag system, enhancing maintainability and user experience.
Benefits:
- Improved clarity on release processes and platform availability.
- Streamlined command-line argument handling, reducing technical debt and improving user experience.
- 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.
- Updated APU timing analysis to reflect implementation completion, addressing core timing issues with the SPC700.
- Added a headless emulator test harness for testing APU functionality without GUI overhead.
- Enhanced cycle accuracy and instruction execution, with known audio glitches noted for future refinement.
- Updated success criteria to reflect completed tasks and ongoing work for unit tests and audio quality improvements.
Benefits:
- Improved APU execution accuracy and synchronization.
- Streamlined testing process for APU functionality.
- Clear documentation of current implementation status and future work.
- Document what LakeSnes does right (atomic execution, cycle callbacks)
- Identify where LakeSnes falls short (implicit counting, no explicit return)
- Define what we're adopting vs improving
- Clarify hybrid approach: LakeSnes simplicity + explicit validation
- Document current bstep mechanism and its fragility
- Identify root cause of handshake timing failure
- Design atomic instruction execution approach
- Plan fixed-point cycle ratio conversion
- Outline implementation strategy
Relates to #APU-timing-fix
- Added a new feature to the `z3ed` AI agent allowing testing in mock ROM mode, which creates a minimal valid ROM structure with embedded labels but no actual game data.
- Updated the `agent_test_suite.sh` script to default to mock ROM mode for easier testing.
- Introduced `--mock-rom` command line flag to enable mock ROM mode in various agent commands.
- Enhanced documentation to cover the usage and benefits of mock ROM mode for CI/CD and development testing.
- Implemented necessary changes in the codebase to support mock ROM initialization and label management.
- 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.
- Deleted outdated DUNGEON_EDITOR_COMPLETE_GUIDE.md and DUNGEON_EDITOR_GUIDE.md files to streamline documentation.
- Introduced a new F2-dungeon-editor-v2-guide.md that consolidates features, architecture, and usage instructions for the Dungeon Editor V2.
- Documented recent refactoring efforts, including critical bug fixes and architectural improvements.
- Enhanced the guide with structured sections for quick start, testing, and troubleshooting, reflecting the current production-ready status of the Dungeon Editor.
- Updated related source files to support new documentation structure and features.
- Introduced a new document detailing the APU timing issue that prevents music playback due to handshake failures between the CPU and APU.
- Analyzed the CPU-APU handshake process, identifying points of failure and root causes related to cycle inaccuracies in SPC700 emulation.
- Proposed a comprehensive refactoring plan to implement cycle-accurate instruction execution, centralize the APU execution loop, and use integer-based cycle ratios to eliminate floating-point errors.
- This document serves as a critical resource for developers addressing audio emulation challenges.
- Introduced a new DUNGEON_EDITOR_COMPLETE_GUIDE.md that details the features, architecture, and usage of the Dungeon Editor.
- Documented critical bug fixes, including segfaults and loading order issues, along with their resolutions.
- Enhanced the guide with a structured overview, quick start instructions, and troubleshooting tips for users.
- Updated the architecture section to reflect the new card-based system and self-contained room management.
- Included detailed testing commands and expected outputs to assist developers in verifying functionality.
- Deleted the old D1-dungeon-editor-guide.md and F1-dungeon-editor-guide.md files to streamline documentation.
- Introduced a new DUNGEON_EDITOR_GUIDE.md that consolidates features, architecture, and usage instructions for the Dungeon Editor.
- Updated the development guide to include new naming conventions and clarified rendering processes.
- Enhanced the overall structure and content of the documentation to reflect the current production-ready status of the Dungeon Editor.
- Added a new document, E5-debugging-guide.md, providing comprehensive strategies for debugging and testing the `yaze` application, including logging practices and testing frameworks.
- Updated E2-development-guide.md to include a new section on debugging and testing, detailing quick debugging methods using command-line flags for specific editors and UI cards.
- Enhanced the main application to support command-line flags for opening specific editors and cards on startup, improving the developer experience.
- Refactored the Controller class to handle startup editor and card initialization based on command-line inputs.
- Changed vcpkgGitCommitId to '01f602195983451bc83e72f4214af2cbc495aa94' for both CI and release workflows, reflecting the latest vcpkg release (2024.10.21).
- Ensured consistency across workflows by updating the vcpkg commit ID in all relevant sections.
- Documented fixes for CI/CD workflows, including artifact management and build diagnostics for Windows.
- Highlighted improvements in the graphics editor, including palette management and synchronization across editors.
- Updated system requirements for Windows, macOS, and Linux to reflect recent changes.
- Enhanced the Tile16 editor with new palette coordination and performance optimizations.
- Added detailed CI/CD reliability improvements, including retry mechanisms and enhanced error reporting for Windows vcpkg setup and dependency installation.
- Updated Dungeon Editor status to EXPERIMENTAL, highlighting the need for thorough testing and outlining implemented features.
- Introduced a comprehensive A Link to the Past ROM reference, detailing graphics systems, palette management, and memory mapping.
- Improved changelog to reflect recent fixes and ongoing development status across various editors.
- Removed vcpkg from the CI workflow, transitioning to FetchContent for dependency management.
- Updated the build matrix to eliminate the Windows x86 build due to cpp-httplib incompatibility.
- Streamlined installation steps for dependencies across different operating systems.
- Enhanced CMake configuration for improved clarity and efficiency in the build process.
- Updated documentation to reflect changes in CI/CD pipeline and dependency handling.
- Removed the `builtin-baseline` from `vcpkg.json` to prevent version database mismatches.
- Updated the CI workflow to synchronize with the stable vcpkg commit `c8696863d371ab7f46e213d8f5ca923c4aef2a00`.
- Adjusted the CI build matrix to remove the x86 Windows build due to cpp-httplib incompatibility.
- Added compiler definitions in `cmake/grpc.cmake` to prevent Windows macro pollution in protobuf-generated headers.
- Introduced a production-quality audio backend abstraction layer, enabling seamless integration with SDL2, SDL3, and custom platforms.
- Implemented APU handshake debugging features for improved monitoring of CPU-APU communication during audio processing.
- Upgraded gRPC to version 1.67.1, resolving MSVC template issues and enhancing compatibility with modern compilers.
- Added MSVC-specific compiler flags to optimize Windows build performance and reduce build times significantly.
- Updated documentation to reflect new audio system architecture and build instructions, ensuring clarity for developers.
- Removed the `validate-vs-build.yml` GitHub workflow as it was redundant.
- Enhanced the `verify-build-environment.ps1` script to include checks for Git configuration settings (`core.autocrlf` and `core.longpaths`) to prevent common issues on Windows.
- Updated build instructions in `B1-build-instructions.md` to emphasize the use of the verification script for troubleshooting and automatic fixes.
- Improved documentation in `B2-platform-compatibility.md` to reflect filesystem abstraction changes and ensure consistent cross-platform behavior.
- Added a comprehensive roadmap document outlining the planned enhancements for the yaze SNES emulator, focusing on achieving Mesen2-level debugging capabilities and AI integration.
- Defined core objectives, current state analysis, and detailed phases for audio system fixes, advanced debugging features, performance optimizations, and AI agent integration.
- Included implementation strategies, estimated efforts, and a timeline for each phase to guide development and ensure systematic progress.
- Documented known issues specific to macOS, including crashes during window resizing and occasional loading indicators during texture processing.
- Outlined high, medium, and low priority stability improvements for future sessions, focusing on texture processing, event handling, and resource management.
- Updated the document version and added testing recommendations to ensure thorough validation before the next major change.
- Implemented a Cleanup method in the Emulator class to manage resources effectively during shutdown.
- Added auto-pause functionality to the emulator when the window loses focus, optimizing CPU and battery usage.
- Updated the DoRender method in the Controller class to include frame timing management and a gentle frame rate cap.
- Enhanced texture processing in the Arena class to batch process up to 8 texture commands per frame, improving rendering efficiency.
- 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.
- Introduced a complete guide for the Dungeon Editor, detailing features, architecture, and usage instructions, ensuring users can effectively utilize the tool for dungeon creation.
- Added an Overworld Agent Guide to facilitate AI interaction with the overworld editor, covering tools, commands, and best practices for automation and AI-generated edits.
- Included a migration plan for transitioning from SDL2 to SDL3, outlining the necessary steps for refactoring the rendering architecture to support modern graphics APIs.
- Enhanced the palette system overview, detailing SNES color formats, palette organization, and common issues, providing developers with essential insights for effective color management.
- Updated the emulator development guide to reflect the latest status and improvements, confirming production readiness and outlining future enhancements.