b2ae7937279aab3adf611d3c450d66facf006c5b
Issue 0008 — refactor del panel Inspector de read-only a editable.
views.h:
- AppState gana ParsedTypes parsed_types (schema vivo del proyecto), draft
del Inspector (insp_*: name/type/desc/status buffers, field_keys/values
paralelas, is_extra mask, tags vector, dirty flag), y dos triggers
(want_inspector_save, want_inspector_discard).
- Helpers expuestos: views_inspector_clear_draft, _refresh_caches,
_load_draft, _build_record.
views.cpp:
- views_inspector_load_draft: entity_load_full → buffers; campos del
schema primero (orden del EntitySpec), extras detras.
- views_inspector_build_record: reconstruye EntityRecord respetando el
schema para decidir is_string de cada campo (FK_BOOL → 'true'/'false',
FK_INT/FLOAT → literal, resto → string). Extras siempre string.
- views_inspector: render por bloques:
* Identity: name, type combo (lista del proyecto + tipos del grafo),
status combo, description multiline.
* Fields del schema: render por kind (string→InputText con hint,
int→InputInt, float→InputDouble, bool→Checkbox, date→InputText
con hint YYYY-MM-DD, url→InputText + boton Open en navegador,
enum→Combo con values). Required marcado con '*'.
* Extras: lista key-value con boton trash por fila + 'Add' al final.
* Tags: chips clickables (click = quitar) + input con autocomplete
(lista compacta de tags distintas en BD).
* Footer: Save/Discard/Open notes + label '(modified)' si dirty.
* Neighbors read-only (igual que antes).
- Si el draft no esta sincronizado con la seleccion actual y NO hay
cambios pendientes, el inspector muestra 'Cargando...' (main.cpp
carga). Si hay dirty, banner 'Save/Discard primero' bloqueando.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
OSINT graph viewer — agnostic GPU-accelerated graph explorer for any operations.db
Languages
C++
64.5%
Python
32.1%
Go
1.6%
Shell
1.5%
CMake
0.3%