Skip to content

Commit 87e6780

Browse files
authored
Merge branch 'main' into update-flux-crds
2 parents 4f9da0c + d9f0728 commit 87e6780

5 files changed

Lines changed: 57 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.11.1] - 2026-07-13
11+
12+
### Changes\n- Version bump to 0.11.1
13+
14+
### Fixed
15+
- Restored SOCKS5 proxy support (#202): the `kube/socks5` cargo feature was
16+
accidentally dropped in a dependency cleanup (#182), so kubeconfigs with
17+
`proxy-url: socks5://…` failed at startup with `requires the disabled
18+
feature "kube/socks5"`. Regression tests now build a client through both
19+
socks5 and http proxy configs so a missing proxy feature fails CI.
20+
1021
## [0.11.0] - 2026-07-06
1122

1223
### Changes\n- Version bump to 0.11.0

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "flux9s"
33

4-
version = "0.11.0"
4+
version = "0.11.1"
55
edition = "2024"
66
authors = ["Dan Guns <danbguns@gmail.com>"]
77
description = "A K9s-inspired terminal UI for monitoring Flux GitOps resources"
@@ -70,11 +70,16 @@ vendored-openssl = ["openssl/vendored"]
7070

7171
[dependencies]
7272
# Kubernetes client with HTTP proxy support - use openssl-tls for better cert support
73+
# NOTE: "http-proxy" and "socks5" look unused to dependency-pruning tools (no
74+
# code references them) but they gate kubeconfig `proxy-url:` support inside
75+
# kube itself — removing them breaks proxied clusters at runtime (#202).
76+
# Guarded by proxy tests in src/kube/mod.rs.
7377
kube = { version = "4.0.0", default-features = false, features = [
7478
"client",
7579
"runtime",
7680
"derive",
7781
"http-proxy",
82+
"socks5",
7883
"openssl-tls",
7984
] }
8085
# k8s-openapi version feature - must match kube-rs version

src/kube/mod.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,44 @@ pub async fn discover_namespaces_with_flux_resources(client: &Client) -> Result<
542542
mod tests {
543543
use super::*;
544544

545+
/// Build a client from a config that routes through the given proxy URL.
546+
/// `Client::try_from` is where kube rejects proxy schemes whose cargo
547+
/// feature is not compiled in — no network I/O happens here (a runtime is
548+
/// still required because the client spawns its buffer task).
549+
fn client_with_proxy(proxy_url: &str) -> kube::Result<Client> {
550+
let mut config = kube::Config::new("https://kubernetes.example.com".parse().unwrap());
551+
config.proxy_url = Some(proxy_url.parse().unwrap());
552+
Client::try_from(config)
553+
}
554+
555+
/// Regression test for #202: the `kube/socks5` cargo feature was dropped
556+
/// in a dependency cleanup (it looks unused — no code references it), and
557+
/// every cluster with `proxy-url: socks5://…` in its kubeconfig failed at
558+
/// startup with: configured proxy … requires the disabled feature
559+
/// "kube/socks5". This fails at compile-config time if the feature is
560+
/// ever removed again.
561+
#[tokio::test]
562+
async fn test_client_supports_socks5_proxy() {
563+
let result = client_with_proxy("socks5://127.0.0.1:3129");
564+
assert!(
565+
result.is_ok(),
566+
"socks5 proxy-url must be supported (kube/socks5 feature): {:?}",
567+
result.err()
568+
);
569+
}
570+
571+
/// Companion guard for the `kube/http-proxy` feature (same failure mode
572+
/// as #202 for `proxy-url: http://…` kubeconfigs).
573+
#[tokio::test]
574+
async fn test_client_supports_http_proxy() {
575+
let result = client_with_proxy("http://127.0.0.1:3128");
576+
assert!(
577+
result.is_ok(),
578+
"http proxy-url must be supported (kube/http-proxy feature): {:?}",
579+
result.err()
580+
);
581+
}
582+
545583
#[test]
546584
fn test_is_internal_host_private_ips() {
547585
assert!(is_internal_host("10.0.0.1"));

src/tui/views/detail.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ fn capitalize_first(key: &str) -> String {
2222
format!(
2323
"{}{}",
2424
first.to_uppercase(),
25-
&key[first.len_utf8()..].to_lowercase()
25+
key[first.len_utf8()..].to_lowercase()
2626
)
2727
} else {
2828
key.to_string()

0 commit comments

Comments
 (0)