feat(0036d): promote kind-aware (Group → clear group_id)
NodeGroups window kind=Group ahora expone un boton SmallButton(TI_ARROW_UP) por fila que saca la entidad del grupo (group_id = NULL) y dispara reload del grafo. kind=Table mantiene el comportamiento de issue 0011. - entity_ops: nueva op `entity_clear_group_id(db, id)` idempotente. Si la columna group_id no existe (BD pre-0035a) retorna true como no-op. Falla solo si la entidad no existe o SQLite revienta. - views.cpp: extra columna "promote" en kind=Group, tooltip header diferenciado por kind, boton conectado a app.want_clear_group_id_entity. - main.cpp: handler que ejecuta entity_clear_group_id, marca windows como dirty, llama reload_after_mutation y loguea `[node_groups] promoted X out of group`. - gx-cli: flag `node update --clear-group-id` (booleano) y exposicion MCP en inputSchema + MCP_DISPATCH defaults para que el agente Echo pueda promover via tool calls. - tests: 3 nuevos CLI (clear, idempotente, combinable con --name) y 4 MCP (defaults, schema, dispatch end-to-end, idempotente). WSL: 102 passed (95 base + 7). Windows: 91 passed, 11 skipped (84 base + 7). Refs: issues/0036d-promote-kind-aware.md
This commit is contained in:
@@ -200,6 +200,11 @@ struct AppState {
|
||||
bool want_focus_entity = false; // tras promote+open inspector
|
||||
std::string focus_entity_id;
|
||||
|
||||
// Issue 0036d: Promote en NodeGroups kind=Group → saca la entidad
|
||||
// del grupo (group_id = NULL). main.cpp lo procesa y dispara reload.
|
||||
bool want_clear_group_id_entity = false;
|
||||
std::string clear_group_id_entity_id;
|
||||
|
||||
// Modal "Import dataset..." (issue 0011 Ingesta).
|
||||
bool show_import_modal = false;
|
||||
char import_path_buf[512] = {};
|
||||
|
||||
Reference in New Issue
Block a user