* [pdm-devel] [PATCH datacenter-manager 0/4] add 'Updates' tab for PBS remotes
@ 2025-11-20 10:36 Lukas Wagner
2025-11-20 10:36 ` [pdm-devel] [PATCH datacenter-manager 1/4] ui: move pbs node overview panel from pbs::remote to pbs::node::overview Lukas Wagner
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Lukas Wagner @ 2025-11-20 10:36 UTC (permalink / raw)
To: pdm-devel
This is achieved by moving the existing node overview to a new 'Overview' tab and
then adding a new 'Updates' tab - the same way it is already implemented
for PVE remotes.
Moved and renamed some things as they made sense to me, mostly for
consistency reasons.
Lukas Wagner (4):
ui: move pbs node overview panel from pbs::remote to
pbs::node::overview
ui: pbs: rename RemoteOverviewPanel to PbsNodeOverviewPanel
ui: pbs: move node overview to tab and add update tab
ui: pve: rename NodePanel to PveNodePanel
ui/src/pbs/mod.rs | 6 +-
ui/src/pbs/node/mod.rs | 115 +++++++++++++++++++++
ui/src/pbs/{remote.rs => node/overview.rs} | 31 +++---
ui/src/pve/mod.rs | 2 +-
ui/src/pve/node/mod.rs | 20 ++--
ui/src/pve/node/overview.rs | 20 ++--
6 files changed, 151 insertions(+), 43 deletions(-)
create mode 100644 ui/src/pbs/node/mod.rs
rename ui/src/pbs/{remote.rs => node/overview.rs} (92%)
--
2.47.3
_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* [pdm-devel] [PATCH datacenter-manager 1/4] ui: move pbs node overview panel from pbs::remote to pbs::node::overview
2025-11-20 10:36 [pdm-devel] [PATCH datacenter-manager 0/4] add 'Updates' tab for PBS remotes Lukas Wagner
@ 2025-11-20 10:36 ` Lukas Wagner
2025-11-20 10:36 ` [pdm-devel] [PATCH datacenter-manager 2/4] ui: pbs: rename RemoteOverviewPanel to PbsNodeOverviewPanel Lukas Wagner
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Lukas Wagner @ 2025-11-20 10:36 UTC (permalink / raw)
To: pdm-devel
So that the structure as somewhat symmetric to how the code is structure
for PVE. The code itself is also very similar to the one PVE one, in the
future we should check if we can share the implementation between both
- might not be trivial, since PVE and PBS use different types for e.g.
metrics.
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
---
ui/src/pbs/mod.rs | 4 ++--
ui/src/pbs/node/mod.rs | 1 +
ui/src/pbs/{remote.rs => node/overview.rs} | 0
3 files changed, 3 insertions(+), 2 deletions(-)
create mode 100644 ui/src/pbs/node/mod.rs
rename ui/src/pbs/{remote.rs => node/overview.rs} (100%)
diff --git a/ui/src/pbs/mod.rs b/ui/src/pbs/mod.rs
index 04243e22..6d71bafc 100644
--- a/ui/src/pbs/mod.rs
+++ b/ui/src/pbs/mod.rs
@@ -23,12 +23,12 @@ pub use datastore::DatastorePanel;
mod namespace_selector;
-mod remote;
+mod node;
+use node::overview::RemoteOverviewPanel;
mod snapshot_list;
pub use snapshot_list::SnapshotList;
-use crate::pbs::remote::RemoteOverviewPanel;
use crate::pbs::tree::PbsTree;
use crate::{get_deep_url, pdm_client};
diff --git a/ui/src/pbs/node/mod.rs b/ui/src/pbs/node/mod.rs
new file mode 100644
index 00000000..8468a02a
--- /dev/null
+++ b/ui/src/pbs/node/mod.rs
@@ -0,0 +1 @@
+pub(crate) mod overview;
diff --git a/ui/src/pbs/remote.rs b/ui/src/pbs/node/overview.rs
similarity index 100%
rename from ui/src/pbs/remote.rs
rename to ui/src/pbs/node/overview.rs
--
2.47.3
_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* [pdm-devel] [PATCH datacenter-manager 2/4] ui: pbs: rename RemoteOverviewPanel to PbsNodeOverviewPanel
2025-11-20 10:36 [pdm-devel] [PATCH datacenter-manager 0/4] add 'Updates' tab for PBS remotes Lukas Wagner
2025-11-20 10:36 ` [pdm-devel] [PATCH datacenter-manager 1/4] ui: move pbs node overview panel from pbs::remote to pbs::node::overview Lukas Wagner
@ 2025-11-20 10:36 ` Lukas Wagner
2025-11-20 10:36 ` [pdm-devel] [PATCH datacenter-manager 3/4] ui: pbs: move node overview to tab and add update tab Lukas Wagner
2025-11-20 10:36 ` [pdm-devel] [PATCH datacenter-manager 4/4] ui: pve: rename NodePanel to PveNodePanel Lukas Wagner
3 siblings, 0 replies; 5+ messages in thread
From: Lukas Wagner @ 2025-11-20 10:36 UTC (permalink / raw)
To: pdm-devel
Mainly for consistency with the PVE components.
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
---
ui/src/pbs/mod.rs | 4 ++--
ui/src/pbs/node/overview.rs | 20 ++++++++++----------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/ui/src/pbs/mod.rs b/ui/src/pbs/mod.rs
index 6d71bafc..1fdb417f 100644
--- a/ui/src/pbs/mod.rs
+++ b/ui/src/pbs/mod.rs
@@ -24,7 +24,7 @@ pub use datastore::DatastorePanel;
mod namespace_selector;
mod node;
-use node::overview::RemoteOverviewPanel;
+use node::overview::PbsNodeOverviewPanel;
mod snapshot_list;
pub use snapshot_list::SnapshotList;
@@ -108,7 +108,7 @@ impl LoadableComponent for PbsRemoteComp {
let props = ctx.props();
let content: Html = match &self.view {
- tree::PbsTreeNode::Root => RemoteOverviewPanel::new(props.remote.clone()).into(),
+ tree::PbsTreeNode::Root => PbsNodeOverviewPanel::new(props.remote.clone()).into(),
tree::PbsTreeNode::Datastore(data_store_config) => {
DatastorePanel::new(props.remote.clone(), data_store_config.clone()).into()
}
diff --git a/ui/src/pbs/node/overview.rs b/ui/src/pbs/node/overview.rs
index bba57dad..d15eda04 100644
--- a/ui/src/pbs/node/overview.rs
+++ b/ui/src/pbs/node/overview.rs
@@ -20,7 +20,7 @@ use pdm_api_types::rrddata::PbsNodeDataPoint;
use crate::{renderer::separator, LoadResult};
#[derive(Clone, Debug, Eq, PartialEq, Properties)]
-pub struct RemoteOverviewPanel {
+pub struct PbsNodeOverviewPanel {
/// The remote to show
pub remote: String,
@@ -33,19 +33,19 @@ pub struct RemoteOverviewPanel {
pub status_interval: u32,
}
-impl RemoteOverviewPanel {
+impl PbsNodeOverviewPanel {
pub fn new(remote: String) -> Self {
yew::props!(Self { remote })
}
}
-impl From<RemoteOverviewPanel> for VNode {
- fn from(val: RemoteOverviewPanel) -> Self {
- VComp::new::<RemoteOverviewPanelComp>(Rc::new(val), None).into()
+impl From<PbsNodeOverviewPanel> for VNode {
+ fn from(val: PbsNodeOverviewPanel) -> Self {
+ VComp::new::<PbsNodeOverviewPanelComp>(Rc::new(val), None).into()
}
}
-pub enum Msg {
+enum Msg {
ReloadRrd,
ReloadStatus,
LoadFinished(Result<Vec<PbsNodeDataPoint>, proxmox_client::Error>),
@@ -53,7 +53,7 @@ pub enum Msg {
UpdateRrdTimeframe(RRDTimeframe),
}
-pub struct RemoteOverviewPanelComp {
+struct PbsNodeOverviewPanelComp {
time_data: Rc<Vec<i64>>,
cpu_data: Rc<Series>,
load_data: Rc<Series>,
@@ -70,7 +70,7 @@ pub struct RemoteOverviewPanelComp {
_status_timeout: Option<gloo_timers::callback::Timeout>,
}
-impl RemoteOverviewPanelComp {
+impl PbsNodeOverviewPanelComp {
async fn reload_rrd(remote: &str, rrd_time_frame: RRDTimeframe) -> Msg {
let res = crate::pdm_client()
.pbs_node_rrddata(remote, rrd_time_frame.mode, rrd_time_frame.timeframe)
@@ -85,9 +85,9 @@ impl RemoteOverviewPanelComp {
}
}
-impl yew::Component for RemoteOverviewPanelComp {
+impl yew::Component for PbsNodeOverviewPanelComp {
type Message = Msg;
- type Properties = RemoteOverviewPanel;
+ type Properties = PbsNodeOverviewPanel;
fn create(ctx: &yew::Context<Self>) -> Self {
ctx.link().send_message(Msg::ReloadRrd);
--
2.47.3
_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* [pdm-devel] [PATCH datacenter-manager 3/4] ui: pbs: move node overview to tab and add update tab
2025-11-20 10:36 [pdm-devel] [PATCH datacenter-manager 0/4] add 'Updates' tab for PBS remotes Lukas Wagner
2025-11-20 10:36 ` [pdm-devel] [PATCH datacenter-manager 1/4] ui: move pbs node overview panel from pbs::remote to pbs::node::overview Lukas Wagner
2025-11-20 10:36 ` [pdm-devel] [PATCH datacenter-manager 2/4] ui: pbs: rename RemoteOverviewPanel to PbsNodeOverviewPanel Lukas Wagner
@ 2025-11-20 10:36 ` Lukas Wagner
2025-11-20 10:36 ` [pdm-devel] [PATCH datacenter-manager 4/4] ui: pve: rename NodePanel to PveNodePanel Lukas Wagner
3 siblings, 0 replies; 5+ messages in thread
From: Lukas Wagner @ 2025-11-20 10:36 UTC (permalink / raw)
To: pdm-devel
PVE remote had an 'Updates' tab for a while now. This commit adds the
same thing for PBS remotes.
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
---
ui/src/pbs/mod.rs | 4 +-
ui/src/pbs/node/mod.rs | 114 ++++++++++++++++++++++++++++++++++++
ui/src/pbs/node/overview.rs | 11 +---
3 files changed, 118 insertions(+), 11 deletions(-)
diff --git a/ui/src/pbs/mod.rs b/ui/src/pbs/mod.rs
index 1fdb417f..75ed9926 100644
--- a/ui/src/pbs/mod.rs
+++ b/ui/src/pbs/mod.rs
@@ -24,11 +24,11 @@ pub use datastore::DatastorePanel;
mod namespace_selector;
mod node;
-use node::overview::PbsNodeOverviewPanel;
mod snapshot_list;
pub use snapshot_list::SnapshotList;
+use crate::pbs::node::PbsNodePanel;
use crate::pbs::tree::PbsTree;
use crate::{get_deep_url, pdm_client};
@@ -108,7 +108,7 @@ impl LoadableComponent for PbsRemoteComp {
let props = ctx.props();
let content: Html = match &self.view {
- tree::PbsTreeNode::Root => PbsNodeOverviewPanel::new(props.remote.clone()).into(),
+ tree::PbsTreeNode::Root => PbsNodePanel::new(props.remote.clone()).into(),
tree::PbsTreeNode::Datastore(data_store_config) => {
DatastorePanel::new(props.remote.clone(), data_store_config.clone()).into()
}
diff --git a/ui/src/pbs/node/mod.rs b/ui/src/pbs/node/mod.rs
index 8468a02a..5cd210f8 100644
--- a/ui/src/pbs/node/mod.rs
+++ b/ui/src/pbs/node/mod.rs
@@ -1 +1,115 @@
+use std::rc::Rc;
+
+use proxmox_yew_comp::AptPackageManager;
+use yew::{
+ virtual_dom::{VComp, VNode},
+ Context,
+};
+
+use pwt::{
+ css::{AlignItems, ColorScheme},
+ prelude::*,
+ props::{ContainerBuilder, WidgetBuilder},
+ widget::{Fa, Row, TabBarItem, TabPanel},
+};
+
pub(crate) mod overview;
+
+use overview::PbsNodeOverviewPanel;
+
+use crate::get_deep_url_low_level;
+
+#[derive(Clone, Debug, Eq, PartialEq, Properties)]
+pub struct PbsNodePanel {
+ /// The remote to show
+ pub remote: String,
+}
+
+impl PbsNodePanel {
+ pub fn new(remote: String) -> Self {
+ yew::props!(Self { remote })
+ }
+}
+
+impl From<PbsNodePanel> for VNode {
+ fn from(val: PbsNodePanel) -> Self {
+ VComp::new::<PbsNodePanelComp>(Rc::new(val), None).into()
+ }
+}
+
+struct PbsNodePanelComp;
+
+impl yew::Component for PbsNodePanelComp {
+ type Message = ();
+ type Properties = PbsNodePanel;
+
+ fn create(_ctx: &yew::Context<Self>) -> Self {
+ Self
+ }
+
+ fn changed(&mut self, ctx: &Context<Self>, old_props: &Self::Properties) -> bool {
+ let props = ctx.props();
+
+ props.remote != old_props.remote
+ }
+
+ fn view(&self, ctx: &yew::Context<Self>) -> yew::Html {
+ let props = ctx.props();
+
+ let title: Html = Row::new()
+ .gap(2)
+ .class(AlignItems::Baseline)
+ .with_child(Fa::new("building"))
+ .with_child(tr!("Node"))
+ .into();
+
+ TabPanel::new()
+ .class(pwt::css::FlexFit)
+ .title(title)
+ .class(ColorScheme::Neutral)
+ .with_item_builder(
+ TabBarItem::new()
+ .key("status_view")
+ .label(tr!("Overview"))
+ .icon_class("fa fa-tachometer"),
+ {
+ let remote = props.remote.clone();
+ move |_| PbsNodeOverviewPanel::new(remote.clone()).into()
+ },
+ )
+ .with_item_builder(
+ TabBarItem::new()
+ .key("update_view")
+ .label(tr!("Updates"))
+ .icon_class("fa fa-refresh"),
+ {
+ let remote = props.remote.clone();
+ let link = ctx.link().clone();
+ move |_| {
+ let base_url = format!("/pbs/remotes/{remote}/nodes/localhost/apt");
+ let task_base_url = format!("/pbs/remotes/{remote}/tasks");
+
+ AptPackageManager::new()
+ .base_url(base_url)
+ .task_base_url(task_base_url)
+ .enable_upgrade(true)
+ .on_upgrade({
+ let remote = remote.clone();
+ let link = link.clone();
+
+ move |_| {
+ let hash = "#pbsServerAdministration:updates";
+ if let Some(url) =
+ get_deep_url_low_level(&link, &remote, None, hash)
+ {
+ let _ = gloo_utils::window().open_with_url(&url.href());
+ }
+ }
+ })
+ .into()
+ }
+ },
+ )
+ .into()
+ }
+}
diff --git a/ui/src/pbs/node/overview.rs b/ui/src/pbs/node/overview.rs
index d15eda04..da5a4085 100644
--- a/ui/src/pbs/node/overview.rs
+++ b/ui/src/pbs/node/overview.rs
@@ -7,10 +7,10 @@ use yew::{
use proxmox_yew_comp::{node_info, RRDGraph, RRDTimeframe, RRDTimeframeSelector, Series};
use pwt::{
- css::{AlignItems, ColorScheme, FlexFit, JustifyContent},
+ css::{ColorScheme, FlexFit, JustifyContent},
prelude::*,
props::{ContainerBuilder, WidgetBuilder},
- widget::{error_message, Column, Container, Fa, Panel, Progress, Row},
+ widget::{error_message, Column, Container, Panel, Progress, Row},
AsyncPool,
};
@@ -197,14 +197,7 @@ impl yew::Component for PbsNodeOverviewPanelComp {
fn view(&self, ctx: &yew::Context<Self>) -> yew::Html {
let status_comp = node_info(self.status.data.as_ref().map(|s| s.into()));
- let title: Html = Row::new()
- .gap(2)
- .class(AlignItems::Baseline)
- .with_child(Fa::new("tachometer"))
- .with_child(tr! {"Overview"})
- .into();
Panel::new()
- .title(title)
.class(FlexFit)
.class(ColorScheme::Neutral)
.with_child(
--
2.47.3
_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* [pdm-devel] [PATCH datacenter-manager 4/4] ui: pve: rename NodePanel to PveNodePanel
2025-11-20 10:36 [pdm-devel] [PATCH datacenter-manager 0/4] add 'Updates' tab for PBS remotes Lukas Wagner
` (2 preceding siblings ...)
2025-11-20 10:36 ` [pdm-devel] [PATCH datacenter-manager 3/4] ui: pbs: move node overview to tab and add update tab Lukas Wagner
@ 2025-11-20 10:36 ` Lukas Wagner
3 siblings, 0 replies; 5+ messages in thread
From: Lukas Wagner @ 2025-11-20 10:36 UTC (permalink / raw)
To: pdm-devel
For consistency with the PBS variants of those components.
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
---
ui/src/pve/mod.rs | 2 +-
ui/src/pve/node/mod.rs | 20 ++++++++++----------
ui/src/pve/node/overview.rs | 20 ++++++++++----------
3 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/ui/src/pve/mod.rs b/ui/src/pve/mod.rs
index c0759f18..a3448ae1 100644
--- a/ui/src/pve/mod.rs
+++ b/ui/src/pve/mod.rs
@@ -178,7 +178,7 @@ impl LoadableComponent for PveRemoteComp {
.with_child(RemoteTaskList::new().remote(remote.clone()))
.into(),
PveTreeNode::Node(node) => {
- node::NodePanel::new(remote.clone(), node.node.clone()).into()
+ node::PveNodePanel::new(remote.clone(), node.node.clone()).into()
}
PveTreeNode::Qemu(qemu) => {
qemu::QemuPanel::new(remote.clone(), qemu.node.clone(), qemu.clone()).into()
diff --git a/ui/src/pve/node/mod.rs b/ui/src/pve/node/mod.rs
index aba5d327..de79185a 100644
--- a/ui/src/pve/node/mod.rs
+++ b/ui/src/pve/node/mod.rs
@@ -16,12 +16,12 @@ use pwt::{
mod overview;
-use overview::NodeOverviewPanel;
+use overview::PveNodeOverviewPanel;
use crate::get_deep_url;
#[derive(Clone, Debug, Eq, PartialEq, Properties)]
-pub struct NodePanel {
+pub struct PveNodePanel {
/// The remote to show
pub remote: String,
@@ -29,23 +29,23 @@ pub struct NodePanel {
pub node: String,
}
-impl NodePanel {
+impl PveNodePanel {
pub fn new(remote: String, node: String) -> Self {
yew::props!(Self { remote, node })
}
}
-impl From<NodePanel> for VNode {
- fn from(val: NodePanel) -> Self {
- VComp::new::<NodePanelComp>(Rc::new(val), None).into()
+impl From<PveNodePanel> for VNode {
+ fn from(val: PveNodePanel) -> Self {
+ VComp::new::<PveNodePanelComp>(Rc::new(val), None).into()
}
}
-pub struct NodePanelComp;
+struct PveNodePanelComp;
-impl yew::Component for NodePanelComp {
+impl yew::Component for PveNodePanelComp {
type Message = ();
- type Properties = NodePanel;
+ type Properties = PveNodePanel;
fn create(_ctx: &yew::Context<Self>) -> Self {
Self
@@ -79,7 +79,7 @@ impl yew::Component for NodePanelComp {
{
let remote = props.remote.clone();
let node = props.node.clone();
- move |_| NodeOverviewPanel::new(remote.clone(), node.clone()).into()
+ move |_| PveNodeOverviewPanel::new(remote.clone(), node.clone()).into()
},
)
.with_item_builder(
diff --git a/ui/src/pve/node/overview.rs b/ui/src/pve/node/overview.rs
index 3803f189..cd9bc014 100644
--- a/ui/src/pve/node/overview.rs
+++ b/ui/src/pve/node/overview.rs
@@ -20,7 +20,7 @@ use pdm_client::types::NodeStatus;
use crate::{renderer::separator, LoadResult};
#[derive(Clone, Debug, Eq, PartialEq, Properties)]
-pub struct NodeOverviewPanel {
+pub struct PveNodeOverviewPanel {
/// The remote to show
pub remote: String,
@@ -36,19 +36,19 @@ pub struct NodeOverviewPanel {
pub status_interval: u32,
}
-impl NodeOverviewPanel {
+impl PveNodeOverviewPanel {
pub fn new(remote: String, node: String) -> Self {
yew::props!(Self { remote, node })
}
}
-impl From<NodeOverviewPanel> for VNode {
- fn from(val: NodeOverviewPanel) -> Self {
- VComp::new::<NodeOverviewPanelComp>(Rc::new(val), None).into()
+impl From<PveNodeOverviewPanel> for VNode {
+ fn from(val: PveNodeOverviewPanel) -> Self {
+ VComp::new::<PveNodeOverviewPanelComp>(Rc::new(val), None).into()
}
}
-pub enum Msg {
+enum Msg {
ReloadRrd,
ReloadStatus,
LoadFinished(Result<Vec<NodeDataPoint>, proxmox_client::Error>),
@@ -56,7 +56,7 @@ pub enum Msg {
UpdateRrdTimeframe(RRDTimeframe),
}
-pub struct NodeOverviewPanelComp {
+struct PveNodeOverviewPanelComp {
time_data: Rc<Vec<i64>>,
cpu_data: Rc<Series>,
load_data: Rc<Series>,
@@ -73,7 +73,7 @@ pub struct NodeOverviewPanelComp {
_status_timeout: Option<gloo_timers::callback::Timeout>,
}
-impl NodeOverviewPanelComp {
+impl PveNodeOverviewPanelComp {
async fn reload_rrd(remote: &str, node: &str, rrd_time_frame: RRDTimeframe) -> Msg {
let res = crate::pdm_client()
.pve_node_rrddata(remote, node, rrd_time_frame.mode, rrd_time_frame.timeframe)
@@ -88,9 +88,9 @@ impl NodeOverviewPanelComp {
}
}
-impl yew::Component for NodeOverviewPanelComp {
+impl yew::Component for PveNodeOverviewPanelComp {
type Message = Msg;
- type Properties = NodeOverviewPanel;
+ type Properties = PveNodeOverviewPanel;
fn create(ctx: &yew::Context<Self>) -> Self {
ctx.link().send_message(Msg::ReloadRrd);
--
2.47.3
_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-11-20 10:36 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-20 10:36 [pdm-devel] [PATCH datacenter-manager 0/4] add 'Updates' tab for PBS remotes Lukas Wagner
2025-11-20 10:36 ` [pdm-devel] [PATCH datacenter-manager 1/4] ui: move pbs node overview panel from pbs::remote to pbs::node::overview Lukas Wagner
2025-11-20 10:36 ` [pdm-devel] [PATCH datacenter-manager 2/4] ui: pbs: rename RemoteOverviewPanel to PbsNodeOverviewPanel Lukas Wagner
2025-11-20 10:36 ` [pdm-devel] [PATCH datacenter-manager 3/4] ui: pbs: move node overview to tab and add update tab Lukas Wagner
2025-11-20 10:36 ` [pdm-devel] [PATCH datacenter-manager 4/4] ui: pve: rename NodePanel to PveNodePanel Lukas Wagner
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.