# Ops Portal Changelog ## 2026-07-20 — Major audit and fix session ### Fixed - **`/api/health` returning 404:** Caddy `handle_path` was stripping the path → changed to `handle`, port corrected to 8090 - **`/api/servers` returning null:** Server list now returns all 5 servers with live ping health - **Server IPs stale:** app1-bu updated to 5.161.225.131, legacy entries removed - **Page titles inconsistent:** All 11 pages standardized to "X — IT Pro Partner Ops" format - **Missing nav icons:** All 11 nav items now have SVG icons - **FleetTracker360 missing from nav:** Added to navigation with car icon - **Backups page no data:** `s3_buckets` → `s3_backups` key fix - **FleetTracker360 page no nav:** Added ops.css, app.js, utils.js includes - **Network page dark sidebar:** Replaced with standard top nav bar - **Cache-busting broken:** All JS/CSS references now versioned with timestamps - **Mobile nav broken:** `.nav-links.open` CSS rule missing → hamburger menu now toggles properly on iOS/Android - **Auth guard race condition:** IIFE scripts replaced with DOMContentLoaded event listeners — pages now load data when user is authenticated - **Cost page broken:** Missing `loadData` function → defined and wired - **Dependency diagram 404:** File copied to static dir, link corrected - **Logs page mangled title:** Triple-nested `` tags from sed accident → cleaned - **Config page scripts directory:** Now populates directory listing when clicked - **Services page:** Server column added showing "Core (152.53.192.33)" - **Dashboard auto-refresh on tab focus:** Visibility API handler added - **Critical service protection:** hermes, caddy, ops-portal restarts blocked via API ### Removed - Duplicate server entries: "app1 (AI Stack)" and "Docker Box (legacy)" - Server count: 7 → 5 clean entries ### Changed - Admin credentials: germaine/itpp2026! → ippadmin (password → Vaultwarden) - JWT_SECRET made persistent in /root/.hermes/.env to survive restarts - Collector timeout: 20s → 90s to handle 94K-file S3 bucket scanning ## Jul 17, 2026 — Initial deployment - Ops portal deployed on Core as FastAPI app - Caddy reverse proxy configured - 10 HTML pages created - Ops collector built for S3, system health, server status