From 67b94b4d60ada38c60d5063d268253539790dd99 Mon Sep 17 00:00:00 2001 From: 7ranceaddic7 <4062616+7ranceaddic7@users.noreply.github.com> Date: Fri, 3 Jul 2026 12:52:46 -0700 Subject: [PATCH 1/2] Fix misleading "Installation options" label on Update/Uninstall operation logs UpdatePackageOperation and UninstallPackageOperation both logged their options dump under the header "Installation options:", inherited from InstallPackageOperation via copy-paste. Since InstallOptions.ToString() already renders CustomParameters_Install/_Update/_Uninstall separately by field name, this only affected the header text -- but it's actively misleading: users configuring a package's "Custom Install Arguments" field see that same value echoed under an "Installation options:" banner during an update run, which reads as confirmation that the install-time argument applies to updates too, even though it doesn't (CustomParameters_Update is the field that actually gets appended for update operations, per NpmPkgOperationHelper._getOperationParameters). --- src/UniGetUI.PackageEngine.Operations/PackageOperations.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/UniGetUI.PackageEngine.Operations/PackageOperations.cs b/src/UniGetUI.PackageEngine.Operations/PackageOperations.cs index bc9ea2524b..ae369b13f7 100644 --- a/src/UniGetUI.PackageEngine.Operations/PackageOperations.cs +++ b/src/UniGetUI.PackageEngine.Operations/PackageOperations.cs @@ -436,7 +436,7 @@ protected override void Initialize() + Package.Id + " with Manager=" + Package.Manager.Name - + "\nInstallation options: " + + "\nUpdate options: " + Options.ToString() + "\nOverriden options: " + Package.OverridenOptions.ToString() @@ -508,7 +508,7 @@ protected override void Initialize() + Package.Id + " with Manager=" + Package.Manager.Name - + "\nInstallation options: " + + "\nUninstall options: " + Options.ToString() + "\nOverriden options: " + Package.OverridenOptions.ToString(); From e5e5b42a5b9a5bdfa5b4e315ad9176cd88b292e9 Mon Sep 17 00:00:00 2001 From: 7ranceaddic7 <4062616+7ranceaddic7@users.noreply.github.com> Date: Fri, 3 Jul 2026 13:27:27 -0700 Subject: [PATCH 2/2] Add hint and one-click copy for the three independent CLI-argument fields Custom install/update/uninstall arguments are three separate fields with no indication that they're independent -- a user who fills in "Custom install arguments" (the field most naturally reached for first) has no signal that it won't be used for update or uninstall operations, only to discover it later via a failed update. This adds, on both the per-manager default-options panel and the per-package install-options dialog: - A short hint explaining the fields are independent - A "Copy install arguments to update and uninstall" link for users who do want the same flag applied everywhere, so they don't have to retype it three times --- src/Languages/lang_en.json | 2 ++ .../DialogPages/InstallOptionsViewModel.cs | 9 +++++++++ .../InstallOptionsPanelViewModel.cs | 12 +++++++++++ .../DialogPages/InstallOptionsControl.axaml | 13 ++++++++++++ .../SettingsPages/InstallOptionsPanel.axaml | 20 ++++++++++++++++++- 5 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/Languages/lang_en.json b/src/Languages/lang_en.json index 295507dc9e..8cb4693f04 100644 --- a/src/Languages/lang_en.json +++ b/src/Languages/lang_en.json @@ -112,6 +112,8 @@ "Custom install arguments:": "Custom install arguments:", "Custom update arguments:": "Custom update arguments:", "Custom uninstall arguments:": "Custom uninstall arguments:", + "These fields are independent: an argument set for Install won't apply to Update or Uninstall, and vice versa.": "These fields are independent: an argument set for Install won't apply to Update or Uninstall, and vice versa.", + "Copy install arguments to update and uninstall": "Copy install arguments to update and uninstall", "Pre-install command:": "Pre-install command:", "Post-install command:": "Post-install command:", "Abort install if pre-install command fails": "Abort install if pre-install command fails", diff --git a/src/UniGetUI.Avalonia/ViewModels/DialogPages/InstallOptionsViewModel.cs b/src/UniGetUI.Avalonia/ViewModels/DialogPages/InstallOptionsViewModel.cs index 58f1d6bfbf..71c945376e 100644 --- a/src/UniGetUI.Avalonia/ViewModels/DialogPages/InstallOptionsViewModel.cs +++ b/src/UniGetUI.Avalonia/ViewModels/DialogPages/InstallOptionsViewModel.cs @@ -45,6 +45,8 @@ public partial class InstallOptionsViewModel : ObservableObject public string ParamsInstallLabel { get; } = CoreTools.Translate("Custom install arguments:"); public string ParamsUpdateLabel { get; } = CoreTools.Translate("Custom update arguments:"); public string ParamsUninstallLabel { get; } = CoreTools.Translate("Custom uninstall arguments:"); + public string CliArgsHintLabel { get; } = CoreTools.Translate("These fields are independent: an argument set for Install won't apply to Update or Uninstall, and vice versa."); + public string CopyInstallArgsLabel { get; } = CoreTools.Translate("Copy install arguments to update and uninstall"); public string PreInstallLabel { get; } = CoreTools.Translate("Pre-install command:"); public string PostInstallLabel { get; } = CoreTools.Translate("Post-install command:"); public string AbortInstallLabel { get; } = CoreTools.Translate("Abort install if pre-install command fails"); @@ -363,6 +365,13 @@ private void Proceed() [RelayCommand] private void ResetLocation() => LocationText = ""; + [RelayCommand] + private void CopyInstallArgsToOthers() + { + ParamsUpdate = ParamsInstall; + ParamsUninstall = ParamsInstall; + } + /// Unlocks the options by turning off "follow default options" (matches WinUI). [RelayCommand] private void Unlock() => FollowGlobal = false; diff --git a/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/InstallOptionsPanelViewModel.cs b/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/InstallOptionsPanelViewModel.cs index 33a5bae1cd..9f145aa667 100644 --- a/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/InstallOptionsPanelViewModel.cs +++ b/src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/InstallOptionsPanelViewModel.cs @@ -77,6 +77,8 @@ public partial class InstallOptionsPanelViewModel : ViewModelBase public string InstallArgsLabel { get; } = CoreTools.Translate("Custom install arguments:"); public string UpdateArgsLabel { get; } = CoreTools.Translate("Custom update arguments:"); public string UninstallArgsLabel { get; } = CoreTools.Translate("Custom uninstall arguments:"); + public string CliArgsHintLabel { get; } = CoreTools.Translate("These fields are independent: an argument set for Install won't apply to Update or Uninstall, and vice versa."); + public string CopyInstallArgsLabel { get; } = CoreTools.Translate("Copy install arguments to update and uninstall"); public string ResetLabel { get; } = CoreTools.Translate("Reset"); public string ApplyLabel { get; } = CoreTools.Translate("Apply"); public string CliDisabledLabel { get; } = CoreTools.Translate("For security reasons, custom command-line arguments are disabled by default. Go to UniGetUI security settings to change this."); @@ -284,6 +286,16 @@ private void ResetLocation() private void NavigateToAdministrator() => NavigateToAdministratorRequested?.Invoke(this, EventArgs.Empty); + // ── CLI args convenience ───────────────────────────────────────────────── + + [RelayCommand] + private void CopyInstallArgsToOthers() + { + CustomUpdate = CustomInstall; + CustomUninstall = CustomInstall; + HasChanges = true; + } + // ── Mark changed ───────────────────────────────────────────────────────── public void MarkChanged() => HasChanges = true; diff --git a/src/UniGetUI.Avalonia/Views/DialogPages/InstallOptionsControl.axaml b/src/UniGetUI.Avalonia/Views/DialogPages/InstallOptionsControl.axaml index 84d7301625..1a921642eb 100644 --- a/src/UniGetUI.Avalonia/Views/DialogPages/InstallOptionsControl.axaml +++ b/src/UniGetUI.Avalonia/Views/DialogPages/InstallOptionsControl.axaml @@ -259,6 +259,12 @@ Command="{Binding GoToSecuritySettingsCommand}" HorizontalAlignment="Left" Padding="0" FontWeight="SemiBold"/> + + + + diff --git a/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/InstallOptionsPanel.axaml b/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/InstallOptionsPanel.axaml index afbca87738..81c0297304 100644 --- a/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/InstallOptionsPanel.axaml +++ b/src/UniGetUI.Avalonia/Views/Pages/SettingsPages/InstallOptionsPanel.axaml @@ -159,11 +159,17 @@ + + Margin="0,4,0,0"> + +