cmake_minimum_required(VERSION 3.20)

project(TrailMateLinuxSimShell LANGUAGES CXX)

include(CTest)

set(TRAIL_MATE_REPO_ROOT
    "${CMAKE_CURRENT_LIST_DIR}/../.."
    CACHE PATH "Trail Mate repository root")

include("${TRAIL_MATE_REPO_ROOT}/cmake/TrailMateUxPacks.cmake")
trailmate_add_ui_lvgl_ux_packs(trailmate_ui_lvgl_ux_packs)

add_library(trailmate_linux_sim_shell
    src/linux_sim_app_shell.cpp
    src/linux_sim_historical_source_descriptor.cpp
    src/linux_sim_runtime_entry.cpp
    src/linux_sim_runtime_entry_adoption_probe.cpp
    src/linux_sim_runtime_renderer.cpp
    "${TRAIL_MATE_REPO_ROOT}/modules/product_composition/src/target_profile.cpp"
    "${TRAIL_MATE_REPO_ROOT}/modules/product_composition/src/target_ux_binding.cpp"
    "${TRAIL_MATE_REPO_ROOT}/modules/ui_ascii_runtime/src/ascii_menu_runtime_adapter.cpp"
    "${TRAIL_MATE_REPO_ROOT}/modules/ui_ascii_runtime/src/ascii_screen_host_adapter.cpp"
    "${TRAIL_MATE_REPO_ROOT}/modules/ui_ascii_runtime/src/ascii_screen_graph_bridge.cpp"
    "${TRAIL_MATE_REPO_ROOT}/modules/ui_ascii_runtime/src/ascii_runtime_screen_graph_presenter.cpp"
    "${TRAIL_MATE_REPO_ROOT}/modules/ui_ascii_runtime/src/ascii_runtime_entry_adoption.cpp"
    "${TRAIL_MATE_REPO_ROOT}/modules/ui_ascii_runtime/src/ascii_descriptor_renderer.cpp")

target_include_directories(trailmate_linux_sim_shell
    PUBLIC
        "${CMAKE_CURRENT_LIST_DIR}/src"
        "${TRAIL_MATE_REPO_ROOT}/modules/product_composition/include"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_ascii_runtime/include")

target_link_libraries(trailmate_linux_sim_shell
    PUBLIC
        trailmate_ui_lvgl_ux_packs)

target_compile_features(trailmate_linux_sim_shell PUBLIC cxx_std_17)

if(BUILD_TESTING)
    enable_language(C)

    add_executable(trailmate_linux_sim_app_shell_smoke
        tests/linux_sim_app_shell_smoke.cpp)
    target_link_libraries(trailmate_linux_sim_app_shell_smoke
        PRIVATE trailmate_linux_sim_shell)
    add_test(NAME trailmate_linux_sim_app_shell_smoke
             COMMAND trailmate_linux_sim_app_shell_smoke)

    add_executable(trailmate_linux_sim_historical_source_descriptor_smoke
        tests/linux_sim_historical_source_descriptor_smoke.cpp)
    target_link_libraries(trailmate_linux_sim_historical_source_descriptor_smoke
        PRIVATE trailmate_linux_sim_shell)
    add_test(NAME trailmate_linux_sim_historical_source_descriptor_smoke
             COMMAND trailmate_linux_sim_historical_source_descriptor_smoke)

    add_executable(trailmate_linux_sim_runtime_entry_adoption_probe_smoke
        tests/linux_sim_runtime_entry_adoption_probe_smoke.cpp)
    target_link_libraries(trailmate_linux_sim_runtime_entry_adoption_probe_smoke
        PRIVATE trailmate_linux_sim_shell)
    add_test(NAME trailmate_linux_sim_runtime_entry_adoption_probe_smoke
             COMMAND trailmate_linux_sim_runtime_entry_adoption_probe_smoke)

    add_executable(trailmate_linux_sim_runtime_entry_smoke
        tests/linux_sim_runtime_entry_smoke.cpp)
    target_link_libraries(trailmate_linux_sim_runtime_entry_smoke
        PRIVATE trailmate_linux_sim_shell)
    add_test(NAME trailmate_linux_sim_runtime_entry_smoke
             COMMAND trailmate_linux_sim_runtime_entry_smoke)

    add_executable(trailmate_linux_sim_runtime_entry_fallback_smoke
        tests/linux_sim_runtime_entry_fallback_smoke.cpp)
    target_link_libraries(trailmate_linux_sim_runtime_entry_fallback_smoke
        PRIVATE trailmate_linux_sim_shell)
    add_test(NAME trailmate_linux_sim_runtime_entry_fallback_smoke
             COMMAND trailmate_linux_sim_runtime_entry_fallback_smoke)

    add_executable(trailmate_linux_sim_runtime_renderer_smoke
        tests/linux_sim_runtime_renderer_smoke.cpp)
    target_link_libraries(trailmate_linux_sim_runtime_renderer_smoke
        PRIVATE trailmate_linux_sim_shell)
    add_test(NAME trailmate_linux_sim_runtime_renderer_smoke
             COMMAND trailmate_linux_sim_runtime_renderer_smoke)

    add_executable(trailmate_ascii_runtime_entry_adoption_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_ascii_runtime/tests/ascii_runtime_entry_adoption_smoke.cpp")
    target_link_libraries(trailmate_ascii_runtime_entry_adoption_smoke
        PRIVATE trailmate_linux_sim_shell)
    add_test(NAME trailmate_ascii_runtime_entry_adoption_smoke
             COMMAND trailmate_ascii_runtime_entry_adoption_smoke)

    add_executable(trailmate_ascii_descriptor_renderer_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_ascii_runtime/tests/test_ascii_descriptor_renderer.cpp")
    target_link_libraries(trailmate_ascii_descriptor_renderer_smoke
        PRIVATE trailmate_linux_sim_shell)
    add_test(NAME trailmate_ascii_descriptor_renderer_smoke
             COMMAND trailmate_ascii_descriptor_renderer_smoke)

    add_executable(trailmate_legacy_chat_delivery_action_bridge_alias_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_legacy_adapters/tests/test_legacy_chat_delivery_action_bridge_legacy_alias.cpp")
    target_include_directories(trailmate_legacy_chat_delivery_action_bridge_alias_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_legacy_adapters/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_chat_runtime/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_legacy_chat_delivery_action_bridge_alias_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_legacy_chat_delivery_action_bridge_alias_smoke
             COMMAND trailmate_legacy_chat_delivery_action_bridge_alias_smoke)

    add_executable(trailmate_legacy_chat_delivery_event_bridge_alias_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_legacy_adapters/tests/test_legacy_chat_delivery_event_bridge_legacy_alias.cpp")
    target_include_directories(trailmate_legacy_chat_delivery_event_bridge_alias_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_legacy_adapters/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_chat_runtime/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_legacy_chat_delivery_event_bridge_alias_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_legacy_chat_delivery_event_bridge_alias_smoke
             COMMAND trailmate_legacy_chat_delivery_event_bridge_alias_smoke)

    add_executable(trailmate_chat_presentation_source_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_chat_presentation_source.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/domain/chat_model.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/usecase/chat_service.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/store/ram_store.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/delivery/chat_delivery_read_model.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/delivery/chat_delivery_event_projector.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/delivery/chat_delivery_message_projection.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/delivery/legacy_chat_delivery_bridge.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/usecase/contact_service.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/sys/clock.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/presentation_sources/chat_presentation_source.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/presentation_sources/runtime_chat_action_sink.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/presentation_sources/legacy_chat_action_sink.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/chat_presentation_adapters/src/chat_conversation_mapper.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/chat_presentation_adapters/src/chat_message_mapper.cpp")
    target_include_directories(trailmate_chat_presentation_source_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/chat_presentation_adapters/include")
    target_compile_features(trailmate_chat_presentation_source_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_chat_presentation_source_smoke
             COMMAND trailmate_chat_presentation_source_smoke)

    add_executable(trailmate_mesh_adapter_router_core_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/tests/test_mesh_adapter_router_core.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/mesh_adapter_router_core.cpp")
    target_include_directories(trailmate_mesh_adapter_router_core_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_mesh_adapter_router_core_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_mesh_adapter_router_core_smoke
             COMMAND trailmate_mesh_adapter_router_core_smoke)

    add_executable(trailmate_meshcore_protocol_strategy_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/tests/test_meshcore_protocol_strategy.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/protocol/meshcore/meshcore_protocol_strategy.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/protocol/meshcore/mc_identity_flow.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/mc_region_presets.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/meshcore_identity_crypto.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/meshcore_payload_helpers.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/meshcore_protocol_helpers.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/fe.c"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/ge.c"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/key_exchange.c"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/keypair.c"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/sc.c"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/sha512.c"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/sign.c"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshcore/crypto/ed25519/verify.c")
    target_include_directories(trailmate_meshcore_protocol_strategy_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_meshcore_protocol_strategy_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_meshcore_protocol_strategy_smoke
             COMMAND trailmate_meshcore_protocol_strategy_smoke)

    add_executable(trailmate_receive_packet_service_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/tests/test_receive_packet_service.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/usecase/mesh_dedup_service.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/usecase/peer_identity_service.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/src/usecase/receive_packet_service.cpp")
    target_include_directories(trailmate_receive_packet_service_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_mesh/tests")
    target_compile_features(trailmate_receive_packet_service_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_receive_packet_service_smoke
             COMMAND trailmate_receive_packet_service_smoke)

    add_executable(trailmate_phone_core_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/core_phone/tests/test_phone_core_smoke.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_phone/src/meshcore/meshcore_phone_core.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_phone/src/meshtastic/meshtastic_phone_core.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_phone/src/meshtastic/meshtastic_phone_session.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshtastic/mt_packet_wire.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshtastic/mt_protocol_helpers.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshtastic/mt_radio_config.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/infra/meshtastic/mt_region.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/platform/ui/timezone_profile.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/sys/clock.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/third_party/nanopb/pb_common.c"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/third_party/nanopb/pb_decode.c"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/third_party/nanopb/pb_encode.c"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/admin.pb.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/channel.pb.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/config.pb.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/connection_status.pb.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/device_ui.pb.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/localonly.pb.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/mesh.pb.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/module_config.pb.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/portnums.pb.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/telemetry.pb.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated/meshtastic/xmodem.pb.cpp")
    target_include_directories(trailmate_phone_core_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/core_phone/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_phone/tests"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/generated"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/third_party/nanopb"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include")
    target_compile_features(trailmate_phone_core_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_phone_core_smoke
             COMMAND trailmate_phone_core_smoke)

    add_executable(trailmate_key_verification_runtime_adapters_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_key_verification_runtime/tests/test_key_verification_runtime_adapters.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_key_verification_runtime/src/key_verification_action_sink.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_key_verification_runtime/src/key_verification_presentation_source.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/usecase/contact_service.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/sys/clock.cpp")
    target_include_directories(trailmate_key_verification_runtime_adapters_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_key_verification_runtime/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include")
    target_compile_features(trailmate_key_verification_runtime_adapters_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_key_verification_runtime_adapters_smoke
             COMMAND trailmate_key_verification_runtime_adapters_smoke)

    add_executable(trailmate_legacy_key_verification_adapters_alias_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_legacy_adapters/tests/test_legacy_key_verification_adapters_legacy_alias.cpp")
    target_include_directories(trailmate_legacy_key_verification_adapters_alias_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_legacy_adapters/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_key_verification_runtime/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_legacy_key_verification_adapters_alias_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_legacy_key_verification_adapters_alias_smoke
             COMMAND trailmate_legacy_key_verification_adapters_alias_smoke)

    add_executable(trailmate_map_overlay_snapshot_source_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_map_runtime/tests/test_map_overlay_snapshot_source.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_map_runtime/src/map_overlay_snapshot_source.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_map_runtime/src/map_overlay_projection_adapter.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_map_runtime/src/map_overlay/map_overlay_projector.cpp")
    target_include_directories(trailmate_map_overlay_snapshot_source_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_map_runtime/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/include")
    target_compile_features(trailmate_map_overlay_snapshot_source_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_map_overlay_snapshot_source_smoke
             COMMAND trailmate_map_overlay_snapshot_source_smoke)

    add_executable(trailmate_legacy_map_overlay_source_alias_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_legacy_adapters/tests/test_legacy_map_overlay_source_legacy_alias.cpp")
    target_include_directories(trailmate_legacy_map_overlay_source_alias_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_legacy_adapters/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_map_runtime/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/include")
    target_compile_features(trailmate_legacy_map_overlay_source_alias_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_legacy_map_overlay_source_alias_smoke
             COMMAND trailmate_legacy_map_overlay_source_alias_smoke)

    add_executable(trailmate_ui_presentation_screen_binding_registry_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/tests/test_screen_binding_registry.cpp")
    target_link_libraries(trailmate_ui_presentation_screen_binding_registry_smoke
        PRIVATE trailmate_ui_lvgl_ux_packs)
    add_test(NAME trailmate_ui_presentation_screen_binding_registry_smoke
             COMMAND trailmate_ui_presentation_screen_binding_registry_smoke)

    add_executable(trailmate_timezone_profile_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/tests/test_timezone_profile.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/platform/ui/timezone_profile.cpp")
    target_include_directories(trailmate_timezone_profile_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include")
    target_compile_features(trailmate_timezone_profile_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_timezone_profile_smoke
             COMMAND trailmate_timezone_profile_smoke)

    add_executable(trailmate_battery_estimator_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/tests/test_battery_estimator.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/power/battery_estimator.cpp")
    target_include_directories(trailmate_battery_estimator_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include")
    target_compile_features(trailmate_battery_estimator_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_battery_estimator_smoke
             COMMAND trailmate_battery_estimator_smoke)

    add_executable(trailmate_team_presence_snapshot_codec_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_presence_and_snapshot_codec.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/team_presence/team_presence_model.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/team_persistence/team_ui_snapshot_codec.cpp")
    target_include_directories(trailmate_team_presence_snapshot_codec_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include")
    target_compile_features(trailmate_team_presence_snapshot_codec_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_presence_snapshot_codec_smoke
             COMMAND trailmate_team_presence_snapshot_codec_smoke)

    add_executable(trailmate_team_mgmt_key_request_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/tests/test_team_mgmt_key_request.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_mgmt.cpp")
    target_include_directories(trailmate_team_mgmt_key_request_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_mgmt_key_request_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_mgmt_key_request_smoke
             COMMAND trailmate_team_mgmt_key_request_smoke)

    add_executable(trailmate_team_app_data_poll_order_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/tests/test_team_app_data_poll_order.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/domain/chat_model.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/src/usecase/chat_service.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_chat.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_wire.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_waypoint.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_mgmt.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/usecase/team_service.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/sys/clock.cpp")
    target_include_directories(trailmate_team_app_data_poll_order_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include")
    target_compile_features(trailmate_team_app_data_poll_order_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_app_data_poll_order_smoke
             COMMAND trailmate_team_app_data_poll_order_smoke)

    add_executable(trailmate_team_page_read_model_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_read_model.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_read_model.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/team_presence/team_presence_model.cpp")
    target_include_directories(trailmate_team_page_read_model_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include")
    target_compile_features(trailmate_team_page_read_model_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_read_model_smoke
             COMMAND trailmate_team_page_read_model_smoke)

    add_executable(trailmate_team_page_state_store_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_state_store.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_state_store.cpp")
    target_include_directories(trailmate_team_page_state_store_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include")
    target_compile_features(trailmate_team_page_state_store_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_state_store_smoke
             COMMAND trailmate_team_page_state_store_smoke)

    add_executable(trailmate_contacts_team_snapshot_source_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_contacts_team_snapshot_source.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/contacts/contacts_team_snapshot_source.cpp")
    target_include_directories(trailmate_contacts_team_snapshot_source_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include")
    target_compile_features(trailmate_contacts_team_snapshot_source_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_contacts_team_snapshot_source_smoke
             COMMAND trailmate_contacts_team_snapshot_source_smoke)

    add_executable(trailmate_team_map_overlay_source_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_map_overlay_source.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/presentation_sources/team_map_overlay_source.cpp"
        "${TRAIL_MATE_REPO_ROOT}/platform/linux/common/src/platform/ui/team_ui_store_runtime.cpp"
        "${TRAIL_MATE_REPO_ROOT}/platform/linux/common/src/platform/linux/runtime_paths.cpp")
    target_include_directories(trailmate_team_map_overlay_source_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_map_runtime/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include"
            "${TRAIL_MATE_REPO_ROOT}/platform/linux/common/include")
    target_compile_features(trailmate_team_map_overlay_source_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_map_overlay_source_smoke
             COMMAND trailmate_team_map_overlay_source_smoke)

    add_executable(trailmate_team_page_event_reducer_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_event_reducer.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_event_reducer.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/team_presence/team_presence_model.cpp")
    target_include_directories(trailmate_team_page_event_reducer_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_page_event_reducer_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_event_reducer_smoke
             COMMAND trailmate_team_page_event_reducer_smoke)

    add_executable(trailmate_team_page_command_reducer_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_command_reducer.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_command_reducer.cpp")
    target_include_directories(trailmate_team_page_command_reducer_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_page_command_reducer_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_command_reducer_smoke
             COMMAND trailmate_team_page_command_reducer_smoke)

    add_executable(trailmate_team_page_key_event_log_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_key_event_log.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_key_event_log.cpp")
    target_include_directories(trailmate_team_page_key_event_log_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_page_key_event_log_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_key_event_log_smoke
             COMMAND trailmate_team_page_key_event_log_smoke)

    add_executable(trailmate_team_page_runtime_port_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_runtime_port.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_runtime_port.cpp")
    target_include_directories(trailmate_team_page_runtime_port_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_page_runtime_port_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_runtime_port_smoke
             COMMAND trailmate_team_page_runtime_port_smoke)

    add_executable(trailmate_team_page_activity_sink_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_activity_sink.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_activity_sink.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_chat.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_position.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_track.cpp")
    target_include_directories(trailmate_team_page_activity_sink_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_page_activity_sink_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_activity_sink_smoke
             COMMAND trailmate_team_page_activity_sink_smoke)

    add_executable(trailmate_team_page_deferred_dispatch_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_deferred_dispatch.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_deferred_dispatch.cpp")
    target_include_directories(trailmate_team_page_deferred_dispatch_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_page_deferred_dispatch_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_deferred_dispatch_smoke
             COMMAND trailmate_team_page_deferred_dispatch_smoke)

    add_executable(trailmate_team_page_kick_confirm_action_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_kick_confirm_action.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_kick_confirm_action.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_command_reducer.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_runtime_port.cpp")
    target_include_directories(trailmate_team_page_kick_confirm_action_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_page_kick_confirm_action_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_kick_confirm_action_smoke
             COMMAND trailmate_team_page_kick_confirm_action_smoke)

    add_executable(trailmate_team_page_transfer_leader_action_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_transfer_leader_action.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_transfer_leader_action.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_command_reducer.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_key_event_log.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_runtime_port.cpp")
    target_include_directories(trailmate_team_page_transfer_leader_action_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_page_transfer_leader_action_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_transfer_leader_action_smoke
             COMMAND trailmate_team_page_transfer_leader_action_smoke)

    add_executable(trailmate_team_page_create_team_action_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_create_team_action.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_create_team_action.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_command_reducer.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_key_event_log.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_runtime_port.cpp")
    target_include_directories(trailmate_team_page_create_team_action_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_page_create_team_action_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_create_team_action_smoke
             COMMAND trailmate_team_page_create_team_action_smoke)

    add_executable(trailmate_team_page_pairing_command_action_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_pairing_command_action.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_pairing_command_action.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_command_reducer.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_runtime_port.cpp")
    target_include_directories(trailmate_team_page_pairing_command_action_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_page_pairing_command_action_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_pairing_command_action_smoke
             COMMAND trailmate_team_page_pairing_command_action_smoke)

    add_executable(trailmate_team_page_event_effect_sink_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_event_effect_sink.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_event_effect_sink.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_event_reducer.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_key_event_log.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_runtime_port.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/team_presence/team_presence_model.cpp")
    target_include_directories(trailmate_team_page_event_effect_sink_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_page_event_effect_sink_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_event_effect_sink_smoke
             COMMAND trailmate_team_page_event_effect_sink_smoke)

    add_executable(trailmate_team_page_request_keys_action_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_request_keys_action.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_request_keys_action.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_command_reducer.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_runtime_port.cpp")
    target_include_directories(trailmate_team_page_request_keys_action_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_page_request_keys_action_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_request_keys_action_smoke
             COMMAND trailmate_team_page_request_keys_action_smoke)

    add_executable(trailmate_team_page_key_request_action_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_key_request_action.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_key_request_action.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_runtime_port.cpp")
    target_include_directories(trailmate_team_page_key_request_action_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_chat/include")
    target_compile_features(trailmate_team_page_key_request_action_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_key_request_action_smoke
             COMMAND trailmate_team_page_key_request_action_smoke)

    add_executable(trailmate_team_page_flow_controller_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_page_flow_controller.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/team/team_page_flow_controller.cpp")
    target_include_directories(trailmate_team_page_flow_controller_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include")
    target_compile_features(trailmate_team_page_flow_controller_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_page_flow_controller_smoke
             COMMAND trailmate_team_page_flow_controller_smoke)

    add_executable(trailmate_team_chat_action_sink_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_chat_action_sink.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/presentation_sources/team_chat_action_sink.cpp"
        "${TRAIL_MATE_REPO_ROOT}/platform/linux/common/src/platform/ui/team_ui_store_runtime.cpp"
        "${TRAIL_MATE_REPO_ROOT}/platform/linux/common/src/platform/linux/runtime_paths.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/sys/clock.cpp")
    target_include_directories(trailmate_team_chat_action_sink_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/platform/linux/common/include")
    target_compile_features(trailmate_team_chat_action_sink_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_chat_action_sink_smoke
             COMMAND trailmate_team_chat_action_sink_smoke)

    add_executable(trailmate_team_chat_presentation_source_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_chat_presentation_source.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/presentation_sources/team_chat_presentation_source.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/team_presentation/team_rich_payload_projector.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_chat.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_location_marker.cpp"
        "${TRAIL_MATE_REPO_ROOT}/platform/linux/common/src/platform/ui/team_ui_store_runtime.cpp"
        "${TRAIL_MATE_REPO_ROOT}/platform/linux/common/src/platform/linux/runtime_paths.cpp")
    target_include_directories(trailmate_team_chat_presentation_source_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/platform/linux/common/include")
    target_compile_features(trailmate_team_chat_presentation_source_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_chat_presentation_source_smoke
             COMMAND trailmate_team_chat_presentation_source_smoke)

    add_executable(trailmate_chat_team_workflow_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_chat_team_workflow.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/screens/chat/chat_team_workflow.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/src/chat/chat_workspace_model.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_location_marker.cpp")
    target_include_directories(trailmate_chat_team_workflow_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include")
    target_compile_features(trailmate_chat_team_workflow_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_chat_team_workflow_smoke
             COMMAND trailmate_chat_team_workflow_smoke)

    add_executable(trailmate_team_action_runtime_sink_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_action_runtime_sink.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/src/ui/team_actions/team_action_runtime_sink.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_chat.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_team/src/protocol/team_location_marker.cpp"
        "${TRAIL_MATE_REPO_ROOT}/platform/linux/common/src/platform/ui/team_ui_store_runtime.cpp"
        "${TRAIL_MATE_REPO_ROOT}/platform/linux/common/src/platform/linux/runtime_paths.cpp"
        "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/src/sys/clock.cpp")
    target_include_directories(trailmate_team_action_runtime_sink_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_presentation/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_sys/include"
            "${TRAIL_MATE_REPO_ROOT}/modules/core_team/include"
            "${TRAIL_MATE_REPO_ROOT}/platform/linux/common/include")
    target_compile_features(trailmate_team_action_runtime_sink_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_action_runtime_sink_smoke
             COMMAND trailmate_team_action_runtime_sink_smoke)

    add_executable(trailmate_team_action_types_smoke
        "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/tests/test_team_action_types.cpp")
    target_include_directories(trailmate_team_action_types_smoke
        PRIVATE
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_shared/include")
    target_compile_features(trailmate_team_action_types_smoke
        PRIVATE cxx_std_17)
    add_test(NAME trailmate_team_action_types_smoke
             COMMAND trailmate_team_action_types_smoke)

    foreach(ux_pack_test IN ITEMS
        screen_registry
        input_binding_set
        ux_screen_menu_adapter
        ux_menu_provider
        lvgl_menu_runtime_adapter
        compatibility_screen_factory
        lvgl_screen_host_adapter
        lvgl_screen_graph_bridge
        lvgl_runtime_screen_graph_presenter
        lvgl_runtime_entry_adoption
        lvgl_runtime_adoption_probe
        lvgl_primary_screen_graph_runtime
        lvgl_descriptor_menu_model
        lvgl_descriptor_renderer_probe
        compatibility_menu_binding
        cardputer_compact_ux_pack
        compatibility_ux_pack
        uconsole_desktop_ux_pack
        tiny_node_status_ux_pack
        simulator_full_ux_pack
        ux_pack_registry)
        add_executable(trailmate_ui_lvgl_ux_packs_${ux_pack_test}_smoke
            "${TRAIL_MATE_REPO_ROOT}/modules/ui_lvgl_ux_packs/tests/test_${ux_pack_test}.cpp")
        target_link_libraries(trailmate_ui_lvgl_ux_packs_${ux_pack_test}_smoke
            PRIVATE trailmate_ui_lvgl_ux_packs)
        add_test(NAME trailmate_ui_lvgl_ux_packs_${ux_pack_test}_smoke
                 COMMAND trailmate_ui_lvgl_ux_packs_${ux_pack_test}_smoke)
    endforeach()
endif()
