chore: auto-commit (5 archivos)

- app.md
- appicon.ico
- extract_panel.cpp
- main.cpp
- views.cpp

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-19 00:31:34 +02:00
parent 688b399fd3
commit d6d7b03d09
5 changed files with 18 additions and 13 deletions
+11 -13
View File
@@ -2,6 +2,7 @@
name: graph_explorer name: graph_explorer
lang: cpp lang: cpp
domain: viz domain: viz
version: 0.1.0
description: "Visor de grafos GPU-accelerated agnostico del backend. Lee operations.db de cualquier app del registry y permite explorar entidades/relaciones con shapes/iconos/layouts/filtros." description: "Visor de grafos GPU-accelerated agnostico del backend. Lee operations.db de cualquier app del registry y permite explorar entidades/relaciones con shapes/iconos/layouts/filtros."
tags: [imgui, graph, osint, visualization, gpu] tags: [imgui, graph, osint, visualization, gpu]
uses_functions: uses_functions:
@@ -17,19 +18,6 @@ uses_functions:
- graph_icons_cpp_viz - graph_icons_cpp_viz
- graph_sources_cpp_viz - graph_sources_cpp_viz
- graph_types_cpp_viz - graph_types_cpp_viz
# data_table stack — issue 0081-J: panel Table migrado a data_table::render
- data_table_cpp_viz
- viz_render_cpp_viz
- compute_stage_cpp_core
- compute_pipeline_cpp_core
- tql_emit_cpp_core
- tql_apply_cpp_core
- lua_engine_cpp_core
- join_tables_cpp_core
- auto_detect_type_cpp_core
- compute_column_stats_cpp_core
- llm_anthropic_cpp_core
- tql_to_sql_cpp_core
# core # core
- graph_spatial_hash_cpp_core - graph_spatial_hash_cpp_core
- button_cpp_core - button_cpp_core
@@ -168,3 +156,13 @@ Recetas validadas en notebooks 04-08 del analysis y vaultadas en `vaults/osint_n
Issues que desbloquea: `issues/0041-split-confidence-thresholds.md` y `issues/0042-gliner2-unified-extractor.md`. El registry tiene todas las funciones necesarias; solo falta cablearlas en `extract_graph_hybrid_py_pipelines` y el panel `paste_extract`. Issues que desbloquea: `issues/0041-split-confidence-thresholds.md` y `issues/0042-gliner2-unified-extractor.md`. El registry tiene todas las funciones necesarias; solo falta cablearlas en `extract_graph_hybrid_py_pipelines` y el panel `paste_extract`.
Playground de referencia: `projects/osint_graph/analysis/gliner_glirel_tuning/playground/` (FastAPI + Sigma.js, sirviendo en `localhost:7878`). Playground de referencia: `projects/osint_graph/analysis/gliner_glirel_tuning/playground/` (FastAPI + Sigma.js, sirviendo en `localhost:7878`).
## Capability growth log
Una linea por bump SemVer. Bump-type segun `.claude/commands/version.md`:
- `major`: breaking observable (CLI args, schema BBDD propia, formato wire).
- `minor`: feature aditiva (nuevo panel, endpoint, opcion).
- `patch`: bugfix sin cambio observable.
- v0.1.0 (2026-05-18) — baseline.
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

+2
View File
@@ -978,6 +978,7 @@ void extract_panel_render(AppState& app) {
// Tabla de entidades. // Tabla de entidades.
if (!res->entities.empty() && if (!res->entities.empty() &&
ImGui::CollapsingHeader("Entities", ImGuiTreeNodeFlags_DefaultOpen)) { ImGui::CollapsingHeader("Entities", ImGuiTreeNodeFlags_DefaultOpen)) {
// LAYOUT-TABLE — form editor con InputText/Checkbox editables inline; keep BeginTable inline.
if (ImGui::BeginTable("##ents", 5, if (ImGui::BeginTable("##ents", 5,
ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg |
ImGuiTableFlags_ScrollY, ImGuiTableFlags_ScrollY,
@@ -1024,6 +1025,7 @@ void extract_panel_render(AppState& app) {
// Tabla de relaciones. // Tabla de relaciones.
if (!res->relations.empty() && if (!res->relations.empty() &&
ImGui::CollapsingHeader("Relations", ImGuiTreeNodeFlags_DefaultOpen)) { ImGui::CollapsingHeader("Relations", ImGuiTreeNodeFlags_DefaultOpen)) {
// LAYOUT-TABLE — form editor con Checkbox por fila; keep BeginTable inline.
if (ImGui::BeginTable("##rels", 5, if (ImGui::BeginTable("##rels", 5,
ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg |
ImGuiTableFlags_ScrollY, ImGuiTableFlags_ScrollY,
+1
View File
@@ -1124,6 +1124,7 @@ static void render_enricher_config_window() {
g_app.enr_modal_param_bufs.resize(spec->params.size()); g_app.enr_modal_param_bufs.resize(spec->params.size());
} }
// LAYOUT-TABLE — KPI/form/splitter, no data; keep BeginTable inline.
if (ImGui::BeginTable("##enr_params", 2, if (ImGui::BeginTable("##enr_params", 2,
ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_SizingStretchProp |
ImGuiTableFlags_NoBordersInBody)) { ImGuiTableFlags_NoBordersInBody)) {
+4
View File
@@ -882,6 +882,7 @@ void views_inspector(AppState& app) {
ImGui::TextUnformatted("Identity"); ImGui::TextUnformatted("Identity");
ImGui::Separator(); ImGui::Separator();
// LAYOUT-TABLE — KPI/form/splitter, no data; keep BeginTable inline.
if (ImGui::BeginTable("##insp_id", 2, if (ImGui::BeginTable("##insp_id", 2,
ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_SizingStretchProp |
ImGuiTableFlags_NoBordersInBody)) { ImGuiTableFlags_NoBordersInBody)) {
@@ -955,6 +956,7 @@ void views_inspector(AppState& app) {
const EntitySpec* spec = find_entity_spec(app.parsed_types, const EntitySpec* spec = find_entity_spec(app.parsed_types,
app.insp_type_buf); app.insp_type_buf);
// LAYOUT-TABLE — KPI/form/splitter, no data; keep BeginTable inline.
if (ImGui::BeginTable("##insp_fields", 2, if (ImGui::BeginTable("##insp_fields", 2,
ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_SizingStretchProp |
ImGuiTableFlags_NoBordersInBody)) { ImGuiTableFlags_NoBordersInBody)) {
@@ -1851,6 +1853,8 @@ void views_node_groups_window(AppState& app) {
ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg |
ImGuiTableFlags_ScrollY | ImGuiTableFlags_Resizable | ImGuiTableFlags_ScrollY | ImGuiTableFlags_Resizable |
ImGuiTableFlags_SizingStretchProp; ImGuiTableFlags_SizingStretchProp;
// LAYOUT-TABLE — interactividad app-específica: Selectable+click/dblclick diferenciado,
// PopupContextItem con promote/demote/focus, paginación manual. No migrable a data_table::render.
if (col_count > 0 && ImGui::BeginTable("##te_rows", col_count, tflags, if (col_count > 0 && ImGui::BeginTable("##te_rows", col_count, tflags,
ImVec2(0, -ImGui::GetFrameHeightWithSpacing()))) { ImVec2(0, -ImGui::GetFrameHeightWithSpacing()))) {
ImGui::TableSetupScrollFreeze(0, 1); ImGui::TableSetupScrollFreeze(0, 1);