5.3 KiB
5.3 KiB
name, lang, domain, description, tags, uses_functions, uses_types, framework, entry_point, dir_path, repo_url, e2e_checks
| name | lang | domain | description | tags | uses_functions | uses_types | framework | entry_point | dir_path | repo_url | e2e_checks | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| navegator_dashboard | cpp | tools | Cuadro de mandos para gestionar instancias Chrome con remote debugging. Lista navegadores corriendo (visibles + headless), permite lanzar/matar perfiles, inspeccionar pestañas, ejecutar JS, ver peticiones de red. Puente WSL→Windows que centraliza el control que hoy hacemos por scripts dispersos. |
|
imgui | main.cpp | projects/navegator/apps/navegator_dashboard |
|
Proposito
Centralizar el control de todas las instancias de Chrome con --remote-debugging-port que se lancen en el equipo. Sustituye los scripts sueltos start.sh/stop.sh/nav.sh de projects/navegator/scripts/ por una UI unificada + API HTTP local.
Casos de uso:
- Ver de un vistazo cuantos Chrome estan vivos, en que puerto, con que profile, headless o no.
- Lanzar/matar perfiles desde la UI sin tocar terminal.
- Listar pestañas de cada instancia, navegar, cerrar, capturar HTML/screenshot.
- Inspeccionar peticiones de red en vivo (CDP
Network.*events). - Exponer todo eso como API HTTP local para que scripts/agentes/cdp-cli/graph_explorer hablen con un solo endpoint en vez de cada uno re-implementar el control.
Arquitectura
┌───────────── navegator_dashboard.exe (Windows) ─────────────┐
│ │
│ UI ImGui (panels) HTTP API (127.0.0.1:1923X) │
│ ├── Browsers GET /browsers │
│ ├── Tabs POST /browser/spawn │
│ ├── Tab Detail POST /browser/{port}/kill │
│ └── Network GET /browser/{port}/tabs │
│ POST /browser/{port}/navigate │
│ Worker threads: GET /browser/{port}/tab/{id}/html│
│ ├── ChromeScanner GET /browser/{port}/network/log │
│ ├── CdpHttpClient ... │
│ └── CdpWsStream │
└──────────────────────────────────────────────────────────────┘
↓ scan/spawn/kill ↓ /json + ws
┌─────────── chrome.exe N instancias (Windows) ───────────────┐
│ perfil=default port=19222 [visible] │
│ perfil=osint port=19223 [visible] │
│ perfil=headless_scrape port=19224 [headless] │
└──────────────────────────────────────────────────────────────┘
Panels (v0 → v1)
| Panel | v0 | v1 | v2 |
|---|---|---|---|
| Browsers | scan + spawn + kill | filtro/search | grupos (perfiles favoritos) |
| Tabs | stub | listar + navigate + close | drag&drop entre instancias |
| Tab Detail | stub | HTML preview + screenshot + JS REPL | live mirror de pestaña (CDP screencast) |
| Network | stub | request log + headers + body | timeline + waterfall + filtro |
Stack
fn::run_app(cpp/framework/app_base.h) — shell estandar (PATTERNS.md).- ImGui + ImPlot (chart Network).
- ChromeScanner:
Get-CimInstance Win32_Processinvocado con_popen. Itera ~1 Hz. - ChromeLauncher:
CreateProcessWindows. Argumentos derivados dechrome_launch_go_browser(registry). - CDP HTTP: GET
/json/version,/jsonpor puerto via WinSock raw oWinHttp. v1. - CDP WS: handshake RFC 6455 + framing manual (mismo esquema que
cdp_conn.go). v1. - HTTP API local:
cpp-httplib(header-only) bind 127.0.0.1. v0 stub, funcional v1.
Decisiones consciente (cpp_apps.md §9)
viewports:true(default) — la app puede arrastrar paneles fuera del main.init_gl_loader:false— solo ImGui, sin OpenGL custom.local_files/: la app guarda suapp_settings.ini+navegator_dashboard.dbcon historial de instancias y perfiles favoritos.- Modo CLI:
--api-only --port Npara correr sin UI (daemon puro). v1+.
Plataforma
- Windows-only. La app vive en WSL como codigo pero solo se compila como binario Windows (mingw-w64). En Linux,
CMakeLists.txthacereturn()antes deadd_imgui_apppara quecpp/build/no falle. - Razon: 90% de la logica usa Win32 (CreateProcess, WMI, taskkill). Linux Chrome es secundario y ya esta cubierto por
cdp-clidirecto.
Roadmap
- v0 (este commit): skeleton + Browsers panel funcional + 3 stubs.
- v1: CDP HTTP/WS in-process + Tabs + Tab Detail + Network panel.
- v2: HTTP API local + integracion con
cdp-cli(cdp-cli puede delegar al dashboard si esta vivo). - v3: streaming live de pestañas (CDP
Page.startScreencast) — arquitectura ya prevista en issue 0038.