diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3faa1c80..ae487bf4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -365,22 +365,22 @@ jobs: if-no-files-found: warn retention-days: 3 - - name: Test (Core) - id: test_core + - name: Test (Stable) + id: test_stable working-directory: build run: | ctest --build-config ${{ env.BUILD_TYPE }} --output-on-failure -j1 \ - -R "AsarWrapperTest|SnesTileTest|CompressionTest|SnesPaletteTest|HexTest|MessageTest" \ - --output-junit core_test_results.xml 2>&1 | tee ../core_test.log - - - name: Test (Additional - Informational) - id: test_additional + -L "stable" \ + --output-junit stable_test_results.xml 2>&1 | tee ../stable_test.log + + - name: Test (Experimental - Informational) + id: test_experimental working-directory: build continue-on-error: true run: | ctest --build-config ${{ env.BUILD_TYPE }} --output-on-failure --parallel \ - -R ".*Test" -E ".*RomTest.*|.*E2E.*|.*ZSCustomOverworld.*|.*IntegrationTest.*|CpuTest|Spc700Test|ApuTest" \ - --output-junit additional_test_results.xml 2>&1 | tee ../additional_test.log + -L "experimental" \ + --output-junit experimental_test_results.xml 2>&1 | tee ../experimental_test.log - name: Upload Test Results if: always() diff --git a/src/cli/cli.cc b/src/cli/cli.cc index db9b7891..8a70f7ac 100644 --- a/src/cli/cli.cc +++ b/src/cli/cli.cc @@ -5,6 +5,7 @@ #include "absl/strings/str_cat.h" #include "ftxui/dom/elements.hpp" #include "ftxui/dom/table.hpp" +#include "cli/tui/chat_tui.h" namespace yaze { namespace cli { @@ -31,6 +32,21 @@ absl::Status ModernCLI::Run(int argc, char* argv[]) { args.push_back(argv[i]); } + // Handle --tui flag + if (args[0] == "--tui") { + Rom rom; + // Attempt to load a ROM from the current directory or a well-known path + auto rom_status = rom.LoadFromFile("zelda3.sfc"); + if (!rom_status.ok()) { + // Try assets directory as a fallback + rom_status = rom.LoadFromFile("assets/zelda3.sfc"); + } + + tui::ChatTUI chat_tui(rom.is_loaded() ? &rom : nullptr); + chat_tui.Run(); + return absl::OkStatus(); + } + if (args[0] == "help") { if (args.size() > 1) { ShowCategoryHelp(args[1]); diff --git a/src/cli/tui/chat_tui.cc b/src/cli/tui/chat_tui.cc index cee8249d..3c67a01b 100644 --- a/src/cli/tui/chat_tui.cc +++ b/src/cli/tui/chat_tui.cc @@ -76,7 +76,7 @@ ChatTUI::ChatTUI(Rom* rom_context) : rom_context_(rom_context) { "List dungeon entrances", "Show sprite palette summary", "Summarize overworld map", "Find unused rooms", "Explain ROM header", "Search dialogue for 'Master Sword'", - "Suggest QA checklist", "Show TODO status", + "Suggest QA checklist", "Show TODO status", "Show ROM info" }; } @@ -218,7 +218,12 @@ void ChatTUI::Run() { Element history_view; if (history.empty()) { - history_view = vbox({text("No messages yet. Start chatting!") | dim}) | flex | center; + history_view = vbox({ + text("yaze TUI") | bold | center, + text("A conversational agent for ROM hacking") | center, + separator(), + text("No messages yet. Start chatting!") | dim + }) | flex | center; } else { history_view = vbox(history_elements) | vscroll_indicator | frame | flex; } diff --git a/src/cli/tui/unified_layout.cc b/src/cli/tui/unified_layout.cc index 62fae735..0dbf9d06 100644 --- a/src/cli/tui/unified_layout.cc +++ b/src/cli/tui/unified_layout.cc @@ -64,7 +64,7 @@ UnifiedLayout::UnifiedLayout(Rom* rom_context) todo_provider_ = [] { return std::vector{ "[pending] Implement dungeon diff visualizer", - "[pending] Integrate Claude-style context panes", + "[pending] Integrate context panes", "[todo] Hook TODO manager into project manifests" }; }; @@ -247,7 +247,7 @@ Component UnifiedLayout::CreateChatPanel() { std::vector cards; cards.push_back(vbox({ text("🤖 Overview") | bold, - text("Claude-style assistant for ROM editing"), + text("AI assistant for ROM editing"), text("Press 'f' for fullscreen chat") | dim }) | borderRounded);