diff --git a/ctrl/Tiltfile b/ctrl/Tiltfile index e5c157b..f55e9d8 100644 --- a/ctrl/Tiltfile +++ b/ctrl/Tiltfile @@ -5,8 +5,14 @@ allow_k8s_contexts('kind-unt') -# Create namespace first to avoid race conditions -local('kubectl create namespace unt --dry-run=client -o yaml | kubectl apply -f -') +# Hard guard: Tilt deploys to whatever the shell's current kubectl context is, +# and allow_k8s_contexts auto-permits any local-looking (kind-*) cluster. +# Fail early instead of silently landing the workload in the wrong cluster. +if k8s_context() != 'kind-unt': + fail("Wrong kubectl context: '%s'. Run: kubectl config use-context kind-unt" % k8s_context()) + +# Create namespace first to avoid race conditions (pin cluster explicitly) +local('kubectl --context kind-unt create namespace unt --dry-run=client -o yaml | kubectl --context kind-unt apply -f -') # Apply k8s manifests via kustomize (dev overlay) k8s_yaml(kustomize('k8s/overlays/dev')) @@ -42,7 +48,7 @@ docker_build( # --- Resources --- k8s_resource('api') -k8s_resource('ui', resource_deps=['api'], port_forwards=['8040:80']) +k8s_resource('ui', resource_deps=['api']) # Group infra resources k8s_resource( diff --git a/docs/index.html b/docs/index.html index 5c04e3e..2a94c74 100644 --- a/docs/index.html +++ b/docs/index.html @@ -228,6 +228,55 @@ vertical-align: top; } .cmp-table tr:last-child td { border-bottom: none; } + + /* Mobile menu toggle — hidden on desktop */ + .menu-toggle { + display: none; + background: transparent; + border: 1px solid #1e2a4a; + color: #e8eaf0; + padding: 6px 10px; + font-family: 'JetBrains Mono', monospace; + font-size: 14px; + cursor: pointer; + line-height: 1; + margin-left: auto; + } + .menu-toggle:hover { background: #1a2340; } + + .nav-backdrop { + display: none; + position: absolute; + inset: 0; + background: rgba(0, 0, 0, 0.5); + z-index: 10; + } + .layout.nav-open .nav-backdrop { display: block; } + + @media (max-width: 720px) { + header { padding: 10px 12px; gap: 8px; } + header h1 { font-size: 16px; letter-spacing: 1px; } + header .subtitle { display: none; } + .menu-toggle { display: inline-block; } + + .layout { position: relative; } + nav { + position: absolute; + left: 0; top: 0; bottom: 0; + width: 220px; + z-index: 20; + transform: translateX(-100%); + transition: transform 0.2s ease; + box-shadow: 2px 0 8px rgba(0, 0, 0, 0.5); + } + .layout.nav-open nav { transform: translateX(0); } + + main { padding: 16px; } + .graph-section h2 { font-size: 13px; } + .prose p, .prose ul { font-size: 13px; } + .cmp-table { font-size: 12px; } + .cmp-table th, .cmp-table td { padding: 6px 8px; } + } @@ -235,9 +284,11 @@

STELLAR AIR

NOVA Operations Platform — Architecture +
+