18 KiB
yaze Release Notes (Draft)
Release Version: v0.2.0 (Proposed) Release Date: 2025-11-20 (Target) Branch: feat/http-api-phase2 → develop → master PR: #49
Overview
This release focuses on build system stabilization across all three major platforms (Windows, Linux, macOS), introduces a groundbreaking HTTP REST API for external agent access, and delivers major improvements to the AI infrastructure. After resolving 2+ weeks of Windows build blockers and implementing comprehensive testing infrastructure, yaze is ready for broader adoption.
Key Highlights:
- HTTP REST API server for automation and external tools
- Complete Windows build fixes (std::filesystem, exception handling)
- Unified AI model registry supporting multiple providers
- Comprehensive testing infrastructure with release checklists
- Symbol conflict resolution across all platforms
- Enhanced build system with 11 new CMake presets
New Features
HTTP REST API Server (Phase 2)
The z3ed CLI tool now includes an optional HTTP REST API server for external automation and integration:
Features:
- Optional at build time: Controlled via
YAZE_ENABLE_HTTP_APICMake flag - Secure by default: Defaults to localhost binding, opt-in for remote access
- Conditional compilation: Zero overhead when disabled
- Well-documented: Comprehensive API docs at
src/cli/service/api/README.md
Initial Endpoints:
GET /api/v1/health- Server health checkGET /api/v1/models- List available AI models from all providers
Usage:
# Enable HTTP API at build time
cmake --preset mac-ai -DYAZE_ENABLE_HTTP_API=ON
cmake --build --preset mac-ai --target z3ed
# Launch with HTTP server
./build_ai/bin/z3ed --http-port=8080 --http-host=localhost
# Test endpoints
curl http://localhost:8080/api/v1/health
curl http://localhost:8080/api/v1/models
CLI Flags:
--http-port=<port>- Port to listen on (default: 8080)--http-host=<host>- Host to bind to (default: localhost)
Unified Model Registry
Cross-provider AI model management for consistent model discovery:
Features:
- Singleton
ModelRegistryclass for centralized model tracking - Support for Ollama and Gemini providers (extensible design)
- Unified
ListAllModels()API for all providers - Model information caching for performance
- Foundation for future UI unification
Developer API:
#include "cli/service/ai/model_registry.h"
// Get all models from all providers
auto all_models = ModelRegistry::Get().ListAllModels();
// Get models from specific provider
auto ollama_models = ModelRegistry::Get().ListModelsByProvider("ollama");
Enhanced Build System
11 New CMake Presets across all platforms:
macOS:
mac-dbg,mac-dbg-v- Debug builds (verbose variant)mac-rel- Release buildmac-dev- Development build with ROM testsmac-ai- AI-enabled build with gRPCmac-uni- Universal binary (ARM64 + x86_64)
Linux:
lin-dbg,lin-dbg-v- Debug builds (verbose variant)lin-rel- Release buildlin-dev- Development build with ROM testslin-ai- AI-enabled build with gRPC
Windows:
- Existing presets enhanced with better compiler detection
Key Improvements:
- Platform-specific optimization flags
- Consistent build directory naming
- Verbose variants for debugging build issues
- AI presets bundle gRPC, agent UI, and HTTP API support
Comprehensive Testing Infrastructure
New Documentation:
docs/internal/testing/README.md- Master testing guidedocs/public/developer/testing-quick-start.md- 5-minute pre-push checklistdocs/internal/testing/integration-plan.md- 6-week rollout plandocs/internal/release-checklist-template.md- Release validation template
New Scripts:
scripts/pre-push.sh- Fast local validation (<2 minutes)scripts/install-git-hooks.sh- Easy git hook installationscripts/agents/run-tests.sh- Agent-friendly test runnerscripts/agents/smoke-build.sh- Quick build verificationscripts/agents/test-http-api.sh- HTTP API endpoint testingscripts/agents/get-gh-workflow-status.sh- CLI-based CI monitoringscripts/agents/windows-smoke-build.ps1- Windows smoke test helper
CI/CD Enhancements:
workflow_dispatchtrigger withenable_http_api_testsparameter- Platform-specific build and test jobs
- Conditional HTTP API testing in CI
- Improved artifact uploads on failures
Agent Collaboration Framework
New Documentation:
docs/internal/agents/coordination-board.md- Multi-agent coordination protocoldocs/internal/agents/personas.md- Agent role definitionsdocs/internal/agents/initiative-template.md- Task planning templatedocs/internal/agents/claude-gemini-collaboration.md- Team structuresdocs/internal/agents/agent-leaderboard.md- Contribution trackingdocs/internal/agents/gh-actions-remote.md- Remote CI triggers
Build Environment Improvements
Sandbox/Offline Support:
- Homebrew fallback for
yaml-cpp(already existed, documented) - Homebrew fallback for
googletest(newly added) - Better handling of network-restricted environments
- Updated
docs/public/build/build-from-source.mdwith offline instructions
Usage:
# macOS: Install dependencies locally
brew install yaml-cpp googletest
# Configure with local dependencies
cmake --preset mac-dbg
Bug Fixes
Windows Platform Fixes
1. std::filesystem Compilation Errors (2+ Week Blocker)
Commits: b556b155a5, 19196ca87c, cbdc6670a1, 84cdb09a5b, 43118254e6
Problem: Windows builds failing with error: 'filesystem' file not found
- clang-cl on GitHub Actions Windows Server 2022 couldn't find
std::filesystem - Compiler defaulted to pre-C++17 mode, exposing only
std::experimental::filesystem - Build logs showed
-std=c++23(Unix-style) instead of/std:c++latest(MSVC-style)
Root Cause:
- clang-cl requires MSVC-style
/std:c++latestflag to access modern MSVC STL - Detection logic using
CMAKE_CXX_SIMULATE_IDandCMAKE_CXX_COMPILER_FRONTEND_VARIANTwasn't triggering in CI
Solution:
- Apply
/std:c++latestunconditionally on Windows (safe for both MSVC and clang-cl) - Simplified approach after multiple detection attempts failed
Impact: Resolves all Windows std::filesystem compilation errors in:
src/util/platform_paths.hsrc/util/platform_paths.ccsrc/util/file_util.cc- All other files using
<filesystem>
2. Exception Handling Disabled (Critical)
Commit: 0835555d04
Problem: Windows build failing with error: cannot use 'throw' with exceptions disabled
- Code in
file_util.ccandplatform_paths.ccuses C++ exception handling - clang-cl wasn't enabling exceptions by default
Solution:
- Add
/EHsccompiler flag for clang-cl on Windows - Flag enables C++ exception handling with standard semantics
Impact: Resolves compilation errors in all files using throw, try, catch
3. Abseil Include Path Issues
Commit: c2bb90a3f1
Problem: clang-cl couldn't find Abseil headers like absl/status/status.h
- When
YAZE_ENABLE_GRPC=ON, Abseil comes bundled with gRPC via CPM - Include paths from bundled targets weren't propagating correctly with Ninja + clang-cl
Solution:
- Explicitly add Abseil source directory to
yaze_utilinclude paths on Windows - Ensures clang-cl can find all Abseil headers
Impact: Fixes Windows build failures for all Abseil-dependent code
Linux Platform Fixes
1. FLAGS Symbol Conflicts (Critical Blocker)
Commits: eb77bbeaff, 43a0e5e314
Problem: Linux build failing with multiple definition errors
FLAGS_romandFLAGS_noromdefined in bothflags.ccandemu_test.ccFLAGS_quietundefined reference errors- ODR (One Definition Rule) violations
Root Cause:
yaze_emu_testlinked toyaze_editor→yaze_agent→flags.cc- Emulator test defined its own flags conflicting with agent flags
FLAGS_quietwas defined incli_main.ccinstead of sharedflags.cc
Solutions:
- Move
FLAGS_quietdefinition toflags.cc(shared location) - Change
cli_main.ccto useABSL_DECLARE_FLAG(declaration only) - Rename
emu_test.ccflags to unique names (FLAGS_emu_test_rom) - Remove
yaze_editorandyaze_app_core_libdependencies fromyaze_emu_test
Impact: Resolves all Linux symbol conflict errors, clean builds on Ubuntu 22.04
2. Circular Dependency in Graphics Libraries
Commit: 0812a84a22
Problem: Circular dependency between yaze_gfx_render, yaze_gfx_core, and yaze_gfx_debug
AtlasRenderer(in render) depends onBitmap(core) andPerformanceProfiler(debug)PerformanceDashboard(in debug) callsAtlasRenderer::Get()- Circular dependency chain: render → core → debug → render
Solution:
- Move
atlas_renderer.ccfromGFX_RENDER_SRCtoGFX_CORE_SRC atlas_renderernow lives in layer 4 (core) where it can access both debug and render- Eliminates circular dependency while preserving functionality
Impact: Clean dependency graph, faster link times
3. Missing yaze_gfx_render Dependency
Commit: e36d81f357
Problem: Linker error where yaze_gfx_debug.a called AtlasRenderer methods but wasn't linking against yaze_gfx_render
Solution: Add yaze_gfx_render to yaze_gfx_debug dependencies
Impact: Fixes undefined reference errors on Linux
macOS Platform Fixes
1. z3ed Linker Error
Commit: 9c562df277
Problem: z3ed CLI tool failing to link with library 'yaze_app_core_lib' not found
- z3ed (via yaze_agent) depends on
yaze_app_core_lib - Library only created when
YAZE_BUILD_APP=ON(which doesn't exist) - Standalone z3ed builds failed
Root Cause:
yaze_app_core_libcreation guarded by incorrect condition- Should be available whenever agent features needed
Solution:
- Create
src/app/app_core.cmakewithyaze_app_core_libcreation - Modify
src/app/app.cmaketo includeapp_core.cmake, then conditionally buildyazeexecutable - Include
app/app.cmakewheneverYAZE_BUILD_GUI OR YAZE_BUILD_Z3ED OR YAZE_BUILD_TESTS
Impact: z3ed builds successfully on macOS, clean separation of library vs executable
Code Quality Fixes
1. clang-format Violations (CI Blocker)
Commits: bb5e2002c2, fa3da8fc27, 14d1f5de4c
Problem: CI failing with 38+ formatting violations
- TUI files had indentation issues
- Third-party libraries (src/lib/*) were being formatted
Solutions:
- Update
CMakeLists.txtto excludesrc/lib/*from format targets - Apply clang-format to all source files
- Fix specific violations in
chat_tui.cc,tui.cc,unified_layout.cc
Impact: Clean code formatting, CI Code Quality job passes
2. Flag Parsing Error Handling
Commit: 99e6106721
Problem: Inconsistent error handling during flag parsing
Solution:
- Add
detail::FlagParseFatalutility function for fatal errors - Replace runtime error throws with consistent
FlagParseFatalcalls - Improve error reporting and program termination
Impact: Better error messages, consistent failure handling
Infrastructure Improvements
Build System Enhancements
CMake Configuration:
- Add
YAZE_ENABLE_HTTP_APIoption (defaults to${YAZE_ENABLE_AGENT_CLI}) - Add
YAZE_HTTP_API_ENABLEDcompile definition when enabled - Add
YAZE_AI_RUNTIME_AVAILABLEflag for conditional AI features - Enhanced conditional compilation support
Abseil Linking Fix (Critical):
- Fix Abseil linking bug in
src/util/util.cmake - Abseil targets now properly linked when
YAZE_ENABLE_GRPC=OFF - Resolves undefined reference errors on all platforms
Submodule Reorganization:
- Moved all third-party libraries from
src/lib/andthird_party/to unifiedext/directory - Better organization and clarity in dependency management
- Updated all CMake paths to point to
ext/
Libraries moved:
ext/SDL(wassrc/lib/SDL)ext/imgui(wassrc/lib/imgui)ext/asar(wassrc/lib/asar)ext/httplib(wasthird_party/httplib)ext/json(wasthird_party/json)ext/nativefiledialog-extended(wassrc/lib/nativefiledialog-extended)
Documentation Overhaul
New User Documentation:
docs/public/build/quick-reference.md- Single source of truth for build commandsdocs/public/developer/testing-quick-start.md- 5-minute pre-push guidedocs/public/examples/README.md- Usage examples
New Internal Documentation:
- Complete agent coordination framework (6 documents)
- Comprehensive testing infrastructure (3 documents)
- Release process documentation (2 documents)
- AI infrastructure handoff documents (2 documents)
Updated Documentation:
docs/public/build/build-from-source.md- macOS offline build instructionsREADME.md- Updated version, features, and build instructionsCLAUDE.md- Enhanced with build quick reference linksGEMINI.md- Added for Gemini-specific guidance
New Project Documentation:
CONTRIBUTING.md- Contribution guidelinesAGENTS.md- Agent coordination requirements- Agent-specific guidance files
CI/CD Pipeline Improvements
GitHub Actions Enhancements:
- Add
workflow_dispatchtrigger withenable_http_api_testsboolean input - Conditional HTTP API test step in test job
- Platform-specific test execution (stable, unit, integration)
- Improved artifact uploads on build/test failures
- CPM dependency caching for faster builds
- sccache/ccache for incremental compilation
New Workflows:
- Remote CI triggering via
gh workflow run - Optional HTTP API testing in CI
- Better status monitoring for agents
Testing Infrastructure
Test Organization:
- Clear separation: unit (fast), integration (ROM), e2e (GUI), benchmarks
- Platform-specific test execution
- ROM-dependent test gating
- Environment variable configuration support
Test Helpers:
scripts/pre-push.sh- Fast local validationscripts/agents/run-tests.sh- Consistent test execution- Cross-platform test preset support
- Visual Studio generator detection
CI Integration:
- Platform matrix testing (Ubuntu 22.04, macOS 14, Windows 2022)
- Test result uploads
- Failure artifact collection
- Performance regression tracking
Breaking Changes
None - This release maintains full backward compatibility with existing ROMs, save files, configuration files, and plugin APIs.
Known Issues
gRPC Network Fetch in Sandboxed Environments
Issue: Smoke builds fail in network-restricted environments (e.g., Claude Code sandbox) due to gRPC GitHub fetch Workaround: Use GitHub Actions CI for validation instead of local builds Status: Won't fix - gRPC is too large for Homebrew fallback approach
Platform-Specific Considerations
Windows:
- Requires Visual Studio 2022 with "Desktop development with C++" workload
- gRPC builds take 15-20 minutes first time (use vcpkg for faster builds)
- Watch for path length limits: Enable long paths with
git config --global core.longpaths true
macOS:
- gRPC v1.67.1 is the tested stable version for ARM64
- Bundled Abseil used by default to avoid deployment target mismatches
Linux:
- Requires GCC 12+ or Clang 16+
- Install dependencies:
libgtk-3-dev,libdbus-1-dev,pkg-config
Migration Guide
No migration required - this release is fully backward compatible.
Upgrade Instructions
For Users
- Download the latest release from GitHub Releases (when available)
- Extract the archive to your preferred location
- Run the application:
- Windows:
yaze.exe - macOS:
yaze.app - Linux:
./yaze
- Windows:
For Developers
Updating from Previous Version
# Update your repository
git checkout develop
git pull origin develop
# Update submodules (important - new ext/ structure)
git submodule update --init --recursive
# Clean old build (recommended due to submodule moves)
rm -rf build build_test
# Verify build environment
./scripts/verify-build-environment.sh --fix # macOS/Linux
.\scripts\verify-build-environment.ps1 -FixIssues # Windows
# Build with new presets
cmake --preset mac-dbg # or lin-dbg, win-dbg
cmake --build --preset mac-dbg --target yaze
Testing HTTP API Features
# Build with HTTP API enabled
cmake --preset mac-ai -DYAZE_ENABLE_HTTP_API=ON
cmake --build --preset mac-ai --target z3ed
# Launch with HTTP server
./build/bin/z3ed --http-port=8080
# Test in another terminal
curl http://localhost:8080/api/v1/health
curl http://localhost:8080/api/v1/models
Credits
This release was made possible through collaboration between multiple AI agents and human oversight:
Development:
- CLAUDE_AIINF - Windows build fixes, Linux symbol resolution, HTTP API implementation
- CLAUDE_CORE - Code quality fixes, UI infrastructure
- CLAUDE_TEST_COORD - Testing infrastructure, release checklists
- GEMINI_AUTOM - CI/CD enhancements, Windows exception handling fix
- CODEX - Documentation coordination, release preparation
Platform Testing:
- CLAUDE_MAC_BUILD - macOS platform validation
- CLAUDE_LIN_BUILD - Linux platform validation
- CLAUDE_WIN_BUILD - Windows platform validation
Project Maintainer:
- scawful - Project oversight, requirements, and direction
Statistics
Commits: 31 commits on feat/http-api-phase2 branch Files Changed: 400+ files modified Lines Changed: ~50,000 lines (additions + deletions) Build Fixes: 8 critical platform-specific fixes New Features: 2 major (HTTP API, Model Registry) New Documentation: 15+ new docs, 10+ updated New Scripts: 7 helper scripts for testing and CI Test Infrastructure: Complete overhaul with 6-week rollout plan
Looking Forward
Next Release (v0.3.0)
Planned Features:
- UI unification using ModelRegistry (Phase 3)
- Additional HTTP API endpoints (ROM operations, dungeon/overworld editing)
- Enhanced agent collaboration features
- Performance optimizations
- More comprehensive test coverage
Infrastructure Goals:
- Phase 2-5 testing infrastructure rollout (12 weeks remaining)
- Symbol conflict detection automation
- CMake configuration validation
- Platform matrix testing expansion
Long-Term Roadmap
See docs/internal/roadmaps/2025-11-modernization.md for detailed plans.
Release Notes History
- v0.2.0 (2025-11-20): HTTP API, build system stabilization, testing infrastructure
- v0.1.0 (Previous): Initial release with GUI editor, Asar integration, ZSCustomOverworld support
Prepared by: CODEX_RELEASE_PREP Date: 2025-11-20 Status: DRAFT - Ready for review