Skip to content

Commit f1a2fcf

Browse files
committed
refactor(ui): move Create VM/LXC from global menu to node context menu
Guest creation is node-scoped, so the actions belong in the node context menu rather than the global menu. The node dropdown in each form remains visible and pre-selected, preserving the ability to switch nodes if desired.
1 parent acc2dc3 commit f1a2fcf

2 files changed

Lines changed: 3 additions & 13 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111

12+
- **LXC/VM create: moved to node context menu**: "Create VM" and "Create LXC" are no longer in the global menu. They are now only accessible from the node context menu, where the target node is already in scope.
13+
- **LXC Edit Configuration: Swap field**: New "Swap (MB)" input in the Edit Configuration modal for LXC containers, positioned below Memory. Setting swap to `0` is now correctly sent to the API (disabling swap), which the previous save path silently skipped.
1214
- **LXC create: Nesting toggle**: New "Nesting" checkbox in the LXC creation form (enabled by default) that sets `features=nesting=1` on the container, allowing Docker and nested containers.
13-
1415
- **Storage: Template Catalog download**: New "Template Catalog" option in the storage Download Content menu (available when the storage supports `vztmpl`). Fetches the Proxmox appliance template list (`pveam available`) and lets you pick a template by section (All / system / mail / turnkeylinux) and download it directly to the selected storage — equivalent to `pveam download <storage> <template>`.
15-
1616
- **Ansible plugin: `env` setting**: New `plugins.ansible.env` config map for passing arbitrary environment variables (e.g. `ANSIBLE_CONFIG`, `ANSIBLE_ROLES_PATH`, `ANSIBLE_HOST_KEY_CHECKING`) to all ansible and ansible-playbook invocations. Configurable via General Settings in the toolkit or directly in config YAML.
1717

18-
### Added
19-
20-
- **LXC Edit Configuration: Swap field**: New "Swap (MB)" input in the Edit Configuration modal for LXC containers, positioned below Memory. Setting swap to `0` is now correctly sent to the API (disabling swap), which the previous save path silently skipped.
21-
2218
### Fixed
2319

2420
- **LXC Edit Configuration: false-positive `*` marker on network modal**: Opening and closing the "Edit Network Interfaces" sub-form without making any changes no longer marks the parent form title with `*`. The comparison baseline is now normalized through the same parse→rebuild round-trip used when saving, eliminating spurious change detection caused by key-order differences in the raw API strings.

internal/ui/components/global_menu.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,8 @@ func (a *App) ShowGlobalContextMenu() {
2121
menuItems := []string{
2222
"Connection Profiles",
2323
"Manage Plugins",
24-
"Create VM",
25-
"Create LXC",
2624
}
27-
shortcuts := []rune{'p', 'm', 'c', 'l'}
25+
shortcuts := []rune{'p', 'm'}
2826

2927
if ansibleEnabled {
3028
menuItems = append(menuItems, "Ansible Toolkit")
@@ -50,10 +48,6 @@ func (a *App) ShowGlobalContextMenu() {
5048
a.showConnectionProfilesDialog()
5149
case "Manage Plugins":
5250
a.showManagePluginsDialog()
53-
case "Create VM":
54-
a.showVMCreateForm(a.nodeList.GetSelectedNode())
55-
case "Create LXC":
56-
a.showLXCCreateForm(a.nodeList.GetSelectedNode())
5751
case "Ansible Toolkit":
5852
plugin, ok := a.plugins["ansible"]
5953
if !ok || plugin == nil {

0 commit comments

Comments
 (0)