diff --git a/.core/TODO.md b/.core/TODO.md index a1cbfa76..e69de29b 100644 --- a/.core/TODO.md +++ b/.core/TODO.md @@ -1 +0,0 @@ -- @bug pkg/display/sidecar.go:13 — sidecar startup is still gated by `CORE_DENO_ENABLE`, which makes display package tests brittle when the configured binary is missing. diff --git a/pkg/display/sidecar.go b/pkg/display/sidecar.go index 7844b029..c4a9fe90 100644 --- a/pkg/display/sidecar.go +++ b/pkg/display/sidecar.go @@ -2,6 +2,7 @@ package display import ( "context" + "os/exec" "reflect" "strings" @@ -11,12 +12,19 @@ import ( func (s *Service) registerSidecarActions() { if strings.TrimSpace(core.Env("CORE_DENO_ENABLE")) != "" && s.sidecar == nil { - s.sidecar = s.ensureSidecar() - if _, err := s.sidecar.Start(context.Background()); err != nil { - if s != nil && s.ServiceRuntime != nil && s.Core() != nil { - s.Core().LogError(err, "display.registerSidecarActions", "failed to start enabled sidecar") + manager := s.ensureSidecar() + if binary := strings.TrimSpace(manager.Status().Binary); binary != "" { + if _, err := exec.LookPath(binary); err != nil { + if s != nil && s.ServiceRuntime != nil && s.Core() != nil { + s.Core().LogWarn(err, "display.registerSidecarActions", "skipping sidecar auto-start; binary unavailable") + } + s.sidecar = nil + } else if _, err := manager.Start(context.Background()); err != nil { + if s != nil && s.ServiceRuntime != nil && s.Core() != nil { + s.Core().LogError(err, "display.registerSidecarActions", "failed to start enabled sidecar") + } + s.sidecar = nil } - s.sidecar = nil } }