Skip to content

Releases: pooyanazad/kube-saver

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 13:33
aabcf08

kube-saver v2.0.0

Kubernetes CPU and memory cost estimation with local reports and resource-change plans.

Included in this release

  • Interactive TUI for Kubernetes cost and waste visibility
  • Self-contained HTML report generation
  • Local notification and PR-plan output
  • Read-only HTTP API endpoints
  • Docker Hub publication follows successful GitHub release creation

Upgrade notes and limitations

  • Generated apply scripts now require KUBE_SAVER_APPLY_CONTEXT. Review the target cluster and every patch before execution. Scripts stop on failure; earlier successful patches are not rolled back.
  • A fully failed pod scan exits with code 4. Partial scans can produce degraded results; check warnings and coverage.
  • Review your context, namespace selection, exclusions, and custom pricing configuration before upgrading.
  • Missing or invalid metrics produce estimates and suppress actionable right-sizing recommendations. Recommendations use current samples, not historical peaks.
  • Costs and savings are modeled estimates, not actual cloud billing. Generating a local review plan does not change workloads or open a GitHub PR.

Installation, safety guidance, and limitations: https://pooyanazad.github.io/kube-saver/

Build artifacts

  • Python wheel and source distribution attached to this release
  • SHA256 checksums included

Changes in this release

  • Document verified 2.0.0 installation and release evidence (#39) (aabcf08)
  • Prepare kube-saver 2.0.0 version and upgrade notes (#38) (b2f0fdf)
  • Type documentation search query with keyboard events (0074789)
  • Add owner-provided Google Search Console verification file (#36) (7caf6ea)
  • Build GitHub Pages documentation and prepare search discoverability (#35) (03aa473)
  • Align documentation, onboarding, and discoverability with verified behavior (#34) (c1dbb22)
  • Honor configuration and harden recommendation safety (#32) (527661e)
  • Guard release version integrity and make publication explicit (#33) (7e8f656)
  • Show when metrics-server is unavailable in doctor (adef5ff)
  • Bring setup checks and guides in line with the CLI (dd09fa0)
  • Make namespace-limited scans work with Role permissions (4a5c7a9)
  • Avoid empty reports when pod scans fail (61fa113)
  • Fix metrics availability and pod-name collisions across namespaces (20ba396)
  • Keep workload recommendations actionable (f939dce)
  • Compare metric timestamps in UTC (da870cd)
  • Let pods use their service account credentials (2147032)
  • Fall back safely while eBPF probes are unfinished (7a96ae7)
  • Make resource patches target the right container (5fca757)
  • Use real metrics for command-line reports (f443a07)
  • Let the fake ApiException satisfy typed except clauses in tests (208f72e)
  • Use typed catches for the node listing fallback (e3dd6e1)
  • Catch ApiException and timeouts when fetching the cluster version (4b41ea2)
  • Document the broad except handlers in k8s_client (dbcd212)
  • Enhance contribution guidelines for pull requests (043c843)
  • Prevent AI attribution trailers (33d4876)
  • Keep healthy pods during partial metric gaps (b10301e)
  • Verify stale metrics trigger a warning (19636e2)
  • Confirm fresh metrics stay available (2b57b22)
  • Test stale metric warnings (4fcdac4)
  • Warn when runtime metrics go stale (a769dc9)
  • Git ignore updated (c25f02c)
  • Apply metric age settings to runtime scans (ddb7578)
  • Export metric sample metadata (32234b3)
  • Reject stale runtime metric samples (7c7f12a)
  • Test metric timestamps and stale samples (0895bfb)
  • Capture timestamps from metric samples (7886a46)
  • Add configurable metric sample age limit (8e431d1)
  • Surface degraded scan state in TUI and HTTP API (eb47cfe)
  • Fix ScanResult test fallout from get_all_pods contract change (fe6057b)
  • Return ScanResult from get_all_pods to preserve final API error (9a31f3a)
  • Add ScanResult dataclass to surface partial scan state (ca81711)
  • Wrap get_cluster_info version + node listing in retry_call (626dffa)
  • Wrap get_pods in retry_call for per-namespace pod listings (d6bcb72)
  • Wrap get_namespaces in retry_call so transient API failures retry (1b33c8d)
  • test(retry): assert log records carry operation, attempt, and reason (8b7fe03)
  • feat(retry): log structured operation, attempt, and reason on each retry (fcc92e8)
  • feat(retry): add _reason helper for stable exception reasons (3413f44)
  • feat(retry): add retry_call with exponential backoff and jitter (cb60c5b)
  • test(retry): cover is_transient for 429, 503, 401, timeout, generic errors (08d4bfe)
  • feat(collectors): add is_transient helper for retryable API errors (80e98bd)
  • feat(config): wire RetryConfig into loader, env overrides, and default YAML (fa9c6c9)
  • feat(config): add RetryConfig dataclass for transient API retries (ebb08c3)
  • chore: gitignore security/ — keep Sn1per scan artifacts local (ffc2b94)
  • fix(server): return stable JSON 503 when report builder fails instead of resetting connection (bfba2a5)
  • fix(server): return 405 with Allow header for POST/PUT/DELETE/PATCH/TRACE (bb7e916)
  • fix(server): handle HEAD and OPTIONS explicitly instead of default 501 (399f362)
  • fix(server): send security headers on every response (b22c867)
  • fix(server): static Server header, no Python/BaseHTTP version leak (b4d3bd8)
  • fix(k8s_client): use urllib3.Timeout object for pool timeout, not tuple (4003928)
  • docs(config): document safe timeout defaults, env overrides, and add tests (C1.3) (1b66099)
  • feat(collectors): apply API timeouts consistently across K8sClient and doctor (C1.2) (9e386e5)
  • feat(config): add configurable Kubernetes API timeouts (C1.1) (2abf3c2)
  • fix: resolve import ordering and unused variable lint errors (b976ba5)
  • feat: require --expose flag when binding API to non-loopback address (4baa94f)
  • feat: add namespace and workload policy exclusions via labels and annotations (5744290)
  • feat: fail fast with clear message when kubeconfig or context is invalid (393d613)
  • feat: add stable exit codes for cluster connection and config failures (233d37d)
  • docs: document running kube-saver inside a container with kubeconfig and in-cluster auth (92298e0)
  • feat: add ready-to-apply RBAC manifests for cluster and namespace scope (f9615a1)
  • docs: add minimum RBAC permissions reference and expand SAR checks (67f6d0e)
  • fix: restore release and docker-publish jobs, bump to 1.3.0 (bf605fe)
  • chore: rewrite PR template — cleaner sections, real commands, no Phase 7 (b5cd27e)
  • consolidate CI: merge smoke workflows into ci.yml (a0b0836)
  • ci: add smoke-test workflow (A5) (8cd6905)
  • feat: add kube-saver doctor command (A4) (06cab5f)
  • Replace em-dashes with commas across README and docs (e04e751)
  • Add release-testing guide for three-environment verification (4fc8470)
  • Add verify-install.sh to smoke test every install method (2120989)
  • Add support matrix and link it from getting started (5a98629)
  • ci: remove dockerhub-description sync step (811790b)
  • ci: document token requirements for dockerhub-description step (d3cacc3)
  • Improve CONTRIBUTING.md with docs links and agent section (fde5504)
  • Add CODE_OF_CONDUCT and SECURITY policy (b640ebd)
  • GitHub issue and PR templates for professional contribution workflow (79e1d1f)
  • chore: re-ignore imporvment planning file (8ddeb82)
  • docs: rewrite imporvment file as prioritized, themed checklist (41977b0)
  • docs: slim README to 165 lines, move deep content to docs/ (da15f59)
  • docs: remove unused SVGs, capture scripts, and artifacts table from screenshots section (bb21253)
  • docs: add real TUI screenshots and CLI captures (fixes #8) (fcd3e5c)
  • docs: add first run guide for local/EKS/generic clusters, add time-to-first-result guarantee (512c469)
  • docs: add one-command quick start path with fast first result (261f05f)
  • docs: sharpen positioning for usefulness, difference, and value (0b845dc)
  • docs: define three core problems and sharpen README opening (f3a20de)
  • docs: define user personas and update status badge (cb15816)
  • Create local imporvment file and ignore it (3d8b65e)
  • fix(release): improve notes and harden Docker publish (1ef8396)
  • chore(release): centralize version source and add contributing guide (3e7db40)

Full Changelog: v1.8.0...v2.0.0

v1.8.0

Choose a tag to compare

@github-actions github-actions released this 01 Sep 15:47
7390e2a

kube-saver v1.8.0

Production release for kube-saver with self-contained CLI, TUI, reporting, API, and Docker delivery.

Included in this release

  • Interactive TUI for Kubernetes cost and waste visibility
  • Self-contained HTML report generation
  • Local notification and PR-plan output
  • Read-only HTTP API endpoints
  • Docker image published to Docker Hub

Build artifacts

  • Python wheel and source distribution attached to this release
  • SHA256 checksums included

Changes in this release

  • Surface degraded scan state in TUI and HTTP API (6c66cc4)
  • Fix ScanResult test fallout from get_all_pods contract change (bc9afed)
  • Return ScanResult from get_all_pods to preserve final API error (3cc9e56)
  • Add ScanResult dataclass to surface partial scan state (9c6adf3)

Full Changelog: v1.7.0...v1.8.0

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 11:31
b07ea05

kube-saver v1.7.0

Production release for kube-saver with self-contained CLI, TUI, reporting, API, and Docker delivery.

Included in this release

  • Interactive TUI for Kubernetes cost and waste visibility
  • Self-contained HTML report generation
  • Local notification and PR-plan output
  • Read-only HTTP API endpoints
  • Docker image published to Docker Hub

Build artifacts

  • Python wheel and source distribution attached to this release
  • SHA256 checksums included

Changes in this release

  • Wrap get_cluster_info version + node listing in retry_call (6a0ea4b)
  • Wrap get_pods in retry_call for per-namespace pod listings (9dd01f3)
  • Wrap get_namespaces in retry_call so transient API failures retry (9bfd5b1)
  • test(retry): assert log records carry operation, attempt, and reason (6be01d9)
  • feat(retry): log structured operation, attempt, and reason on each retry (4302428)
  • feat(retry): add _reason helper for stable exception reasons (009c927)
  • feat(retry): add retry_call with exponential backoff and jitter (95e5638)
  • test(retry): cover is_transient for 429, 503, 401, timeout, generic errors (e75eec9)
  • feat(collectors): add is_transient helper for retryable API errors (001019b)
  • feat(config): wire RetryConfig into loader, env overrides, and default YAML (046cdac)
  • feat(config): add RetryConfig dataclass for transient API retries (6a57875)
  • chore: gitignore security/ — keep Sn1per scan artifacts local (cbd1848)
  • fix(server): return stable JSON 503 when report builder fails instead of resetting connection (5126ab8)
  • fix(server): return 405 with Allow header for POST/PUT/DELETE/PATCH/TRACE (a1216f1)
  • fix(server): handle HEAD and OPTIONS explicitly instead of default 501 (395be1d)
  • fix(server): send security headers on every response (6eafdb4)
  • fix(server): static Server header, no Python/BaseHTTP version leak (d7fa5af)
  • fix(k8s_client): use urllib3.Timeout object for pool timeout, not tuple (c094545)
  • docs(config): document safe timeout defaults, env overrides, and add tests (C1.3) (d64f658)
  • feat(collectors): apply API timeouts consistently across K8sClient and doctor (C1.2) (a329e5f)
  • feat(config): add configurable Kubernetes API timeouts (C1.1) (73fc950)

Full Changelog: v1.6.0...v1.7.0

v1.6.0

Choose a tag to compare

@github-actions github-actions released this 30 Jul 19:20
fbaeca6

kube-saver v1.6.0

Production release for kube-saver with self-contained CLI, TUI, reporting, API, and Docker delivery.

Included in this release

  • Interactive TUI for Kubernetes cost and waste visibility
  • Self-contained HTML report generation
  • Local notification and PR-plan output
  • Read-only HTTP API endpoints
  • Docker image published to Docker Hub

Build artifacts

  • Python wheel and source distribution attached to this release
  • SHA256 checksums included

Changes in this release

  • fix: resolve import ordering and unused variable lint errors (0f8854e)
  • feat: require --expose flag when binding API to non-loopback address (cdc1cff)
  • feat: add namespace and workload policy exclusions via labels and annotations (02cd253)
  • feat: fail fast with clear message when kubeconfig or context is invalid (e0dd4bf)
  • feat: add stable exit codes for cluster connection and config failures (87be340)
  • docs: document running kube-saver inside a container with kubeconfig and in-cluster auth (1556fd0)
  • feat: add ready-to-apply RBAC manifests for cluster and namespace scope (025ab18)
  • docs: add minimum RBAC permissions reference and expand SAR checks (e23270f)

Full Changelog: v1.5.0...v1.6.0

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 26 Jul 19:17

kube-saver v1.5.0

Production release for kube-saver with self-contained CLI, TUI, reporting, API, and Docker delivery.

Included in this release

  • Interactive TUI for Kubernetes cost and waste visibility
  • Self-contained HTML report generation
  • Local notification and PR-plan output
  • Read-only HTTP API endpoints
  • Docker image published to Docker Hub

Build artifacts

  • Python wheel and source distribution attached to this release
  • SHA256 checksums included

Changes in this release

  • fix: restore release and docker-publish jobs, bump to 1.3.0 (7cec698)

Full Changelog: v1.3.0...v1.5.0

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 19:58

kube-saver v1.2.0

Production release for kube-saver with self-contained CLI, TUI, reporting, API, and Docker delivery.

Included in this release

  • Interactive TUI for Kubernetes cost and waste visibility
  • Self-contained HTML report generation
  • Local notification and PR-plan output
  • Read-only HTTP API endpoints
  • Docker image publication to Docker Hub

Build artifacts

  • Python wheel and source distribution attached to this release
  • SHA256 checksums included

Changes in this release

  • chore: re-ignore imporvment planning file (d9b2f65)
  • docs: rewrite imporvment file as prioritized, themed checklist (c7d0f0f)
  • docs: slim README to 165 lines, move deep content to docs/ (1df9061)
  • docs: remove unused SVGs, capture scripts, and artifacts table from screenshots section (c76ef99)
  • docs: add real TUI screenshots and CLI captures (fixes #8) (2ef2465)
  • docs: add first run guide for local/EKS/generic clusters, add time-to-first-result guarantee (41c81c2)
  • docs: add one-command quick start path with fast first result (4a3a4d7)
  • docs: sharpen positioning for usefulness, difference, and value (484b8bc)
  • docs: define three core problems and sharpen README opening (8f0d204)
  • docs: define user personas and update status badge (e870a14)
  • Create local imporvment file and ignore it (c848366)
  • fix(release): improve notes and harden Docker publish (80f4ff7)
  • chore(release): centralize version source and add contributing guide (3c7fb2a)

Full Changelog: v1.1.0...v1.2.0

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 19 Jul 11:15
47aa09b

kube-saver v1.1.0

Production release for kube-saver with self-contained CLI, TUI, reporting, API, and Docker delivery.

Included in this release

  • Interactive TUI for Kubernetes cost and waste visibility
  • Self-contained HTML report generation
  • Local notification and PR-plan output
  • Read-only HTTP API endpoints
  • Docker image publication to Docker Hub

Build artifacts

  • Python wheel and source distribution attached to this release
  • SHA256 checksums included

Changes in this release

  • fix(release): improve notes and harden Docker publish (80f4ff7)
  • chore(release): centralize version source and add contributing guide (3c7fb2a)
  • ci(docker): sync Docker Hub description from README (209d86a)
  • fix(ci): build manual releases from selected branch (2208e78)
  • chore(cleanup): remove non-production local helper files (3149223)
  • chore(release): finalize professional 1.0.0 versioning (8c02724)
  • build(docker): add production image and Docker Hub release flow (80ef0ca)
  • docs(readme): document self-contained CLI outputs and GitHub-only releases (3523731)
  • test(tui): add real async Textual harness (6b1cf9b)
  • feat(server): harden HTTP handlers with 405 for non-GET methods (8988222)
  • feat(cli): add Click subcommands (report, pr-plan, notify, serve, version) (b5cbe50)
  • feat(report): add CSS bar charts, remove pdf_supported flag (454b378)
  • feat(pr-generator): add apply_plan_locally, remove GitHub/GitLab API (5de738a)
  • feat(notifier): replace webhook payloads with local Markdown output (36983e2)
  • fix: add types-PyYAML to dev deps for CI mypy (61ee5dc)
  • fix: resolve 51 ruff errors and 48 mypy errors for CI (0f87e5b)
  • fix lint (3295aa5)
  • fix ci release condition (0d5586a)
  • update readme docs (3d65375)
  • add ci workflow (d57efec)
  • add e2e tests (ccdad84)
  • add integration tests (f0f9e98)
  • add unit coverage (b0f8e0d)
  • add json and server mode (79d8218)
  • add prometheus and html reports (234ae40)
  • add pr generator and notifier (a215bf1)
  • add yaml and helm exporters (448d56f)
  • add runtime fallback (2b999be)
  • Polish TUI navigation and search UX (1abf821)
  • Add phase 3 TUI dashboard (c70cb55)
  • Add currency switching and easy pricing overrides (59b52fd)
  • Add phase 2 analysis engine (91a3eba)

Full Changelog: v1.0.0...v1.1.0

v1.0.0 - First Public Release

Choose a tag to compare

@pooyanazad pooyanazad released this 19 Jul 00:52

kube-saver v1.0.0 is the first public release of the project.

kube-saver helps you find wasted CPU and memory in Kubernetes, estimate the cost impact, and generate practical right-sizing recommendations.

Included in this release

  • Interactive terminal UI
  • Resource and cost waste analysis
  • Recommendation engine
  • Self-contained HTML reports
  • Local notification output
  • Local PR/change planning output
  • Read-only local HTTP API
  • Test, lint, type-check, and build pipeline

Highlights

  • No required webhook or external maintainer service
  • No CDN dependency for reports
  • Simple CLI commands for TUI, report, notify, PR planning, and server mode
  • Phase 1 through Phase 6 completed as the baseline release

Notes

  • This release focuses on the core app and GitHub release artifacts
  • Docker publishing will be finalized separately

Thanks for checking out kube-saver.

Full Changelog: https://github.com/pooyanazad/kube-saver/commits/v1.0.0