HelixScreen threading & lifecycle safety — triggers when editing code in src/ that crosses the main-thread/background-thread boundary: WebSocket/libhv callbacks, src/network/ HTTP workers, src/bluetooth/ DBus threads, or src/printer/ background state updates. Also for UpdateQueue/queue_update (include/ui_update_queue.h), AsyncLifetimeGuard (include/async_lifetime_guard.h), SubjectLifetime, ObserverGuard (include/ui_observer_guard.h), safe_delete_deferred/safe_clean_children (include/ui_utils.h), StaticSubjectRegistry shutdown ordering (include/static_subject_registry.h), HttpExecutor thread pools (include/http_executor.h), or any code touching lv_subject_t from non-main threads.
HelixScreen build system — triggers when editing Makefile, mk/*.mk (cross.mk, tests.mk, deps.mk, rules.mk, remote.mk, etc.), docker/Dockerfile.* build images, .github/workflows/ CI configs, mk/images.mk asset pipelines, mk/fonts.mk font generation, or mk/patches.mk LVGL patches. Also for cross-compilation targets (pi-docker, ad5m-docker, k1-docker, etc.), GCC 7.5 compatibility issues in MIPS32/ARM targets, Pi dual-link DRM+fbdev builds (mk/pi-dual-link.mk), display backend configuration (SDL/DRM/fbdev), ccache setup, or precompiled header changes (include/lvgl_pch.h).
HelixScreen XML UI engine — triggers when editing files in ui_xml/, lib/helix-xml/, src/xml_registration.cpp, or include/ headers that register subjects/components/events. Also for creating modal dialogs via ModalStack (src/ui/modals/), defining custom XML widgets/components in ui_xml/components/, writing C++ code that binds lv_subject_t to XML layouts, working with design tokens (#space_md, #card_bg) in XML, or using bind_text/bind_flag/bind_style reactive bindings. Covers the full XML→Subject→C++ pipeline, declarative UI rules, component system, event registration, and gotchas specific to this engine.