- Kubernetes events in the timeline: warnings about the pod (failed probes, back-off, OOM, failed mounts…) and the Killing event appear between the log lines at the time they happened, with how many times and from when to when, and as purple diamonds on the histogram. Read with
kubectl get events -n <namespace> -o json every 5 s while the pod is open and filtered by pod in the app; events joins the read-only allowlist (no --watch, no field selectors). Without permission to read events nothing is shown.
- Marks between log lines, so an empty stretch is never ambiguous: "Connection lost at … back at …" when the kubectl stream dropped (the lines from that stretch are fetched again, without duplicates), "No logs for 2m 10s" when the stream was connected and the container wrote nothing (more than a minute, and 20× the usual gap between lines, so slow jobs are not flagged), "Container … restarted" with the reason, exit code and how long it ran, plus See previous logs, and "N old lines dropped" above the oldest line when the 50,000-line buffer is full. The histogram shows restarts as red ticks and stream drops as hatched stretches. Marks hide while searching or filtering by an error group (asked on r/kubernetes).
- Faster pod opening: the log's
kubectl logs starts alone; the extra reads (events, services, routes, ingresses) wait for its first lines (at most 3 s), and events refresh every 15 s instead of 5. Each kubectl process costs a login round trip on OKD.
- Empty view says why: when every loaded line is filtered out, the list says how many lines were loaded and how many the presets hide (health checks can fill the whole
--tail), with Turn presets off in this namespace and Clear filters.
- How the pod is reached (Pod tab → Access): the Services whose selector matches the pod's labels (type and ports) and the URLs of the OKD Routes and Ingresses pointing at them, with a copy button (the app never opens them). Read with
kubectl get services, get routes.route.openshift.io and get ingresses when a pod is opened; these join the read-only allowlist. Clusters without the Route API or without permission just show less.
- Pod tab in the right panel: the container's state and uptime, restarts, the previous run (reason such as OOMKilled, exit code, how long it ran and when it ended), image, memory and CPU requests and limits, readiness/liveness/startup probes (exec probes show only "command", never the command), node, creation time and QoS. Previous runs seen while the app is open are listed too (Kubernetes keeps only the last one). The status bar shows the container's uptime and restarts. Read from the same
kubectl get pods -o json the sidebar already refreshes.
- Community files for contributors:
CONTRIBUTING.md (how to run, rules, AI assistance), SECURITY.md (private vulnerability reports), CODE_OF_CONDUCT.md, issue templates (bug, feature) and a pull request template.
- Website on GitHub Pages (https://wisecort.github.io/LogDeck/), in English and Portuguese: demo video, screenshots, the read-only promises and downloads per OS (the visitor's OS comes first), with kubectl install commands, a before/after, zoomed details, "and more" features and a FAQ; Retina screenshots from
make site-shots. Built from site/ by scripts/build-site.mjs and published by .github/workflows/pages.yml after each release.
- LogDeck is on the Microsoft Store (published with 1.6.0): signed by Microsoft, no SmartScreen warning, updated by the Store. Both READMEs show the Store badge and recommend it for Windows.
Code signing policy · Full changelog