9cade2f2f86849103fd0d2ecba4ef092cab5a770
Pressing Refresh Agents (or Test Connection — both trigger fetch + table re-render) crashed the app with Windows exit code 5 (access violation). Root cause: agents_tbl_state was default-constructed, so State.col_visible (std::vector<bool>) and State.col_order (std::vector<int>) were empty. render_grid_stage0 indexes them by column index up to N_COLS=11 without bounds checking → undefined behaviour → segfault on the first render after agents data populated. Fix: at first render of the agents panel, assign col_visible=true * N_COLS, fill col_order with [0..N_COLS), and ensure stages.size() >= 1. Same pattern tql_apply.cpp uses (col_visible.assign(eff_cols, true)). Diagnostic infra added (kept in place — minimal overhead): - FN_DBG macro: fprintf(stderr, ...) + fflush. Survives crashes that fn_log's buffered file output doesn't. - --auto-refresh CLI flag: triggers fetch_agents_async at frame 30, auto-exits at frame 180 (~3s @ 60Hz). Headless smoke for CI. - DBG breadcrumbs through main → load_apikey → fn::run_app → render → fetch_agents_async (thread enter/request/response/parse/exit) → render table (pre/post). Each step flushes stderr immediately. E2E regression guard: test_app_survives_auto_refresh_cycle. Runs the .exe with --auto-refresh, asserts exit 0, asserts the breadcrumb chain reaches both "fetch thread parsed" and "agents_panel POST-render" in stderr. 25 tests passing. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
Frontend C++ ImGui para gestionar agentes Matrix (agents_and_robots) via HTTPS+apikey, SSE para logs/status en vivo
Languages
C++
60.2%
Python
38.5%
CMake
1.3%