# navegator_dashboard — Windows-only por diseño.
# Linux: skip silenciosamente para que cpp/build/ no falle.

if(NOT WIN32)
    message(STATUS "navegator_dashboard: skipping (Windows-only).")
    return()
endif()

add_imgui_app(navegator_dashboard
    main.cpp
    chrome_scanner.cpp
    chrome_launcher.cpp
    local_api.cpp
    panels.cpp
    agent.cpp
    cdp_http.cpp
    cdp_ws.cpp
    network_state.cpp
    session_state.cpp
    picker_state.cpp
    py_subprocess.cpp
    autoextract_panel.cpp
    recipes_panel.cpp
)

target_include_directories(navegator_dashboard PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})

# imgui_node_editor expone su propio include dir (vendor/imgui-node-editor)
# que contiene crude_json.{h,cpp}. Lo linkamos solo para reusar crude_json
# como parser JSON: sin dependencia nueva, sin codigo de node-editor en runtime.
target_link_libraries(navegator_dashboard PRIVATE
    ws2_32
    imgui_node_editor
)

# fn_module_data_table: provides data_table::render(), viz_render, TQL engine, Lua, LLM.
# Guard keeps the app compilable in builds where vendor/lua is absent.
if(TARGET fn_module_data_table)
    target_link_libraries(navegator_dashboard PRIVATE fn_module_data_table)
endif()

set_target_properties(navegator_dashboard PROPERTIES WIN32_EXECUTABLE TRUE)

# --- E2E tests (opt-in via -DFN_BUILD_TESTS=ON) ---
if(FN_BUILD_TESTS)
    add_imgui_app(navegator_dashboard_tests
        main.cpp
        chrome_scanner.cpp
        chrome_launcher.cpp
        local_api.cpp
        panels.cpp
        agent.cpp
        cdp_http.cpp
        cdp_ws.cpp
        network_state.cpp
        session_state.cpp
        picker_state.cpp
        py_subprocess.cpp
        autoextract_panel.cpp
        recipes_panel.cpp
        tests/navegator_dashboard_tests.cpp
    )
    target_include_directories(navegator_dashboard_tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
    target_link_libraries(navegator_dashboard_tests PRIVATE
        ws2_32
        imgui_node_editor
    )
    if(TARGET fn_module_data_table)
        target_link_libraries(navegator_dashboard_tests PRIVATE fn_module_data_table)
    endif()
    # Excluye int main() de main.cpp; el harness define su propio main().
    target_compile_definitions(navegator_dashboard_tests PRIVATE FN_TEST_BUILD)
    # Subsistema consola (no WIN32_EXECUTABLE) para ver output de los tests.
    set_target_properties(navegator_dashboard_tests PROPERTIES WIN32_EXECUTABLE FALSE)
endif()
