4a0750445c
Phase 1 — graph_layouts:
- New module cpp/functions/viz/graph_layouts.{h,cpp,md} v1.0.0
- layout_grid, layout_circular, layout_random (migrated from graph_force_layout.cpp)
- layout_radial: BFS rings from root, hop k -> circle of radius k*ring_spacing
- layout_hierarchical: Sugiyama-style heuristic (longest-path levels + barycenter ordering)
- layout_fixed: no-op
- All respect NF_PINNED. graph_layout_circular/grid kept as deprecated wrappers.
Phase 2-3 — graph_viewport v1.2.0:
- Multi-selection via state.selection (vector<int>); NF_SELECTED kept in sync
- Lasso: Shift+Drag on empty area; AABB hit-test on release
- Drag of N-selection: all selected pinned + moved by mouse delta
- Ctrl+click toggle, Esc clears selection
- Right-click on node -> on_context_menu callback
- Double-click on node -> on_double_click callback
- Helpers exposed: graph_viewport_clear/add_to/toggle/is_selected (own TU for tests)
Phase 4 — tests:
- test_graph_layouts: 12 cases / 364 assertions covering geometry, pin, edges
- test_graph_viewport: 5 cases for selection helpers (pure logic, no GL)
Phase 5 — demo (primitives_gallery):
- Layout combo (force/grid/circular/radial/hierarchical/fixed) + Apply button
- Right-click popup with Pin/Unpin/Add-to-selection
- Status overlay shows [N selected] when selection non-empty
- Updated golden images
Issue moved to dev/issues/completed/.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8.0 KiB
8.0 KiB
Issues
| ID | Título | Estado | Prioridad | Tipo | Bloquea |
|---|---|---|---|---|---|
| 0001 | Jupyter create notebook | completado | — | feature | — |
| 0002 | Jupyter discover root dir | completado | — | bugfix | — |
| 0003 | Jupyter tools documentation | completado | — | docs | — |
| 0004 | Jupyter discover multiple instances | completado | — | feature | — |
| 0005 | Jupyter write batch | completado | — | feature | — |
| 0006 | Jupyter exec outputs keyerror | completado | — | bugfix | — |
| 0007a | DAG engine: core (parse, validate, topo sort) | completado | alta | feature | 0007b-e |
| 0007b | DAG engine: process manager (spawn, wait, kill) | completado | alta | feature | 0007e |
| 0007c | DAG engine: execution store (SQLite) | completado | alta | feature | 0007e |
| 0007d | DAG engine: scheduler (cron match) | completado | media | feature | 0007e |
| 0007e | DAG engine: CLI + web app que reemplaza Dagu | completado | alta | feature | — |
| 0008 | SQLite API Web | completado | alta | feature | — |
| 0009 | HTTP Server Foundation | completado | alta | feature | 0010, 0011, 0014, 0016, 0019, 0021, 0022 |
| 0010 | Auth System (JWT, passwords, OAuth2, RBAC) | completado | alta | feature | 0022 |
| 0011 | WebSocket & SSE Server | completado | alta | feature | — |
| 0012 | Email & SMTP | completado | media | feature | — |
| 0013 | Background Job Queue | completado | alta | feature | — |
| 0014 | File Upload & Storage | completado | media | feature | — |
| 0015 | Database Migrations | completado | media | feature | 0021, 0022 |
| 0016 | Rate Limiting | completado | media | feature | — |
| 0017 | Frontend Data Hooks (React) | completado | alta | feature | — |
| 0018 | Config & Env Management | completado | media | feature | — |
| 0019 | Structured Logging Go | completado | media | feature | — |
| 0020 | PDF Generation | completado | media | feature | — |
| 0021 | CRUD Generator | completado | media | feature | — |
| 0022 | Init Pipelines (scaffolding) | completado | alta | feature | — |
| 0023 | Testing Utilities Go | completado | media | feature | — |
| 0024 | auto_metabase: split dashboard YAMLs por tab | completado | alta | mejora | — |
| 0025 | C++ text_editor + file_watcher | completado | alta | feature | — |
| 0026 | C++ gl_texture_load (stb_image → sampler2D) | completado | alta | feature | 0035, 0036 |
| 0027 | C++ gl_compute_shader + gl_pingpong_fbo + DAG Compute | pendiente | alta | feature | — |
| 0028 | C++ ImPlot3D + surface_plot_3d + scatter_3d | completado | media | feature | — |
| 0029 | C++ mesh_viewer + obj loader + orbit_camera | completado | media | feature | — |
| 0030 | C++ audio reactivo (capture + fft + uniform feed + viz) | pendiente | media | feature | — |
| 0031 | C++ animation curves (timeline + bezier_editor + tween) | completado | media | feature | — |
| 0032 | C++ sql_workbench | completado | media | feature | — |
| 0033 | C++ http_inspector + websocket_client | pendiente | baja | feature | — |
| 0034 | C++ scientific viz (treemap, sankey, chord, contour, voronoi) | completado | media | feature | — |
| 0035 | C++ map_tiles (slippy map OSM) | pendiente | baja | feature | — |
| 0036 | C++ image_canvas + webcam_texture | pendiente | baja | feature | — |
| 0037 | IoC regex extractor (IP, email, dominio, hash, wallet, CVE, MAC) | pendiente | alta | feature | — |
| 0038 | GLiNER entity extractor (zero-shot NER multilingue) | pendiente | alta | feature | 0039, 0040 |
| 0039 | GLiREL relation extractor (zero-shot triplets) | pendiente | media | feature | 0040 |
| 0040 | Pipeline hibrido extraccion grafos (regex + GLiNER + GLiREL + LLM fallback) | pendiente | media | feature | — |
| 0041 | C++ app shell estandarizado (PATTERNS.md + AppConfig extendido) | completado | alta | feature | 0043 |
| 0042 | C++ layout_storage publico (extraer de shaders_lab) | completado | alta | feature | 0043 |
| 0043 | Estandarizar shell de las 4 apps C++ | completado | alta | refactor | 0046 |
| 0044 | Auditar 52 funciones C++ huerfanas y poblar uses_functions | completado | media | chore | — |
| 0045 | Extraer logica pura de impuros (sql_workbench, process_runner, file_watcher, shaders_lab compiler) | completado | media | refactor | — |
| 0046 | Reemplazar raw ImGui en apps por primitivos del registry | completado | media | refactor | — |
| 0047 | C++ tests foundation (Catch2 + top-20 primitivos) | completado | alta | feature | 0048 |
| 0048 | Visual tests via primitives_gallery + CI gate tested:true | completado | media | feature | — |
| 0049 | OSINT graph viewer + GPU graph rendering system (multi-issue) | pendiente | alta | feature | — |
| 0049a | Setup proyecto osint_graph + sub-repo graph_explorer | completado | alta | infra | parte de 0049 |
| 0049b | Bump OpenGL 3.3 → 4.3 core en cpp/framework | completado | alta | infra | parte de 0049 |
| 0049c | graph_renderer Tier 1: RGBA8, orphan, frustum cull, auto-pause | completado | alta | perf | parte de 0049 |
| 0049d | Aristas via vertex pulling con TBO | completado | alta | perf | parte de 0049 |
| 0049e | graph_types modelo extendido + EntityType/RelationType | completado | alta | feature | parte de 0049 |
| 0049f | Renderer extendido: shapes SDF, icon atlas, flechas, edge styles | completado | alta | feature | parte de 0049 |
| 0049g | graph_sources: lector operations.db + abstraccion funcional | completado | alta | feature | parte de 0049 |
| 0049h | graph_force_layout_gpu: compute shader + spatial hash | completado | media-alta | feature | parte de 0049 |
| 0049i | graph_layouts (radial/hierarchical/fixed) + viewport multi-select | completado | media | feature | parte de 0049 |
| 0049j | graph_labels: render etiquetas con LabelPolicy | pendiente | media | feature | parte de 0049 |
| 0049k | App graph_explorer (proyecto osint_graph) — integracion final | pendiente | alta | feature | parte de 0049 |