Replace grid layout with tree diagram:
Modem → Firewall → Switch → 3 Proxmox servers → VMs/CTs
- Services.yaml restructured with parent/type fields
from real Proxmox API data (TYAN CAS, Cisco1, DellT430-2)
- NetworkGraph renders vertical hierarchy with branch lines
- ProxmoxColumn shows server card + VM pills grid
- Compact VmPill for VMs/CTs (status dot + name + last octet)
- InfraCard for physical infrastructure nodes
- Other devices section at bottom (AP, printer, iDRACs, PCs)
- Added type/parent fields to NetworkNode TypeScript interface
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add exclude_company_ids config in settings.yaml to filter out
projects by Odoo company_id. Currently excludes company_id=2
(CAS 3D), keeping only Consultoria AS and unassigned projects.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Use persistent httpx client to maintain session cookies
- Update endpoint path to /web/dataset/call_kw/{model}/{method}
- Handle auth response as dict (uid extraction)
- Remove kanban_state field (doesn't exist in Odoo 19)
- Add close() method for graceful shutdown
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add complete network topology with all discovered hosts organized
by category: infrastructure, services, multimedia, projects, PCs.
Also add firewall, printer, phone, camera icons to NodeCard.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Configure Odoo connection to CAS database at 192.168.10.188:8069,
add Firewall OPNsense, Router Telmex, and Servidor Odoo to topology,
set network scan to 192.168.10.0/24 subnet.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Vite + React 18 + TypeScript scaffolding
- Tailwind CSS configured for 4K dark theme (24px base)
- Three full-screen rotating views: Network Topology (D3.js),
Kanban Board (Odoo tasks), Calendar (Odoo events)
- Hooks for data fetching, WebSocket, and view rotation
- Header with live clock and connection status
- Framer Motion fade transitions between views
- Docker Compose with backend (host network for nmap) and
frontend (nginx proxy to backend API/WS)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Register ws router in main.py and add periodic ping/odoo refresh
that broadcasts updates to connected WebSocket clients.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>