From e6d4cde45f302f74df6b1e6ebc53e2d676aa5308 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 15:54:04 -0700 Subject: [PATCH 01/26] lotta baseline adjustments --- .../Action.cs | 6 +- .../ActionResult.cs | 37 ++++++--- .../BaseObservable.cs | 8 +- .../ClipboardHelper.cs | 5 +- .../CommandContextItem.cs | 6 +- .../Details.cs | 6 +- .../DetailsElement.cs | 9 ++- .../DetailsLink.cs | 6 +- .../DetailsTags.cs | 6 +- .../DynamicListPage.cs | 6 +- .../ExtensionInstanceManager.cs | 5 +- .../ExtensionServer.cs | 5 +- .../Filter.cs | 6 +- .../Form.cs | 6 +- .../FormPage.cs | 18 ++++- .../GoToPageArgs.cs | 6 +- .../InvokableCommand.cs | 6 +- .../ListHelpers.cs | 5 +- .../ListItem.cs | 8 +- .../ListPage.cs | 77 ++++++++++++++++--- .../ListSection.cs | 6 +- .../MarkdownPage.cs | 6 +- .../SearchPrecisionScore.cs | 4 - .../StringMatcher.cs | 4 - .../Tag.cs | 70 ++++++++++++++--- 25 files changed, 259 insertions(+), 68 deletions(-) diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Action.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Action.cs index b0dafd8ba3..8e21dd7c64 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Action.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Action.cs @@ -1,4 +1,8 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class Action : BaseObservable, ICommand { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ActionResult.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ActionResult.cs index 1835c201d3..996db8f749 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ActionResult.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ActionResult.cs @@ -1,20 +1,39 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class ActionResult : ICommandResult { - private ICommandResultArgs _Args = null; - private CommandResultKind _Kind = CommandResultKind.Dismiss; - public ICommandResultArgs Args => _Args; - public CommandResultKind Kind => _Kind; - public static ActionResult Dismiss() { - return new ActionResult() { _Kind = CommandResultKind.Dismiss }; + private ICommandResultArgs _args; + + private CommandResultKind _kind = CommandResultKind.Dismiss; + + public ICommandResultArgs Args => _args; + + public CommandResultKind Kind => _kind; + + public static ActionResult Dismiss() + { + return new ActionResult() + { + _kind = CommandResultKind.Dismiss + }; } + public static ActionResult GoHome() { - return new ActionResult() { _Kind = CommandResultKind.GoHome }; + return new ActionResult() + { + _kind = CommandResultKind.GoHome + }; } public static ActionResult KeepOpen() { - return new ActionResult() { _Kind = CommandResultKind.KeepOpen }; + return new ActionResult() + { + _kind = CommandResultKind.KeepOpen + }; } } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/BaseObservable.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/BaseObservable.cs index f7aa03e85e..dad47eef06 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/BaseObservable.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/BaseObservable.cs @@ -1,3 +1,7 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + using Windows.Foundation; namespace Microsoft.CmdPal.Extensions.Helpers; @@ -11,6 +15,8 @@ public class BaseObservable : INotifyPropChanged protected void OnPropertyChanged(string propertyName) { if (PropChanged != null) - PropChanged.Invoke(this, new Microsoft.CmdPal.Extensions.PropChangedEventArgs(propertyName)); + { + PropChanged.Invoke(this, new PropChangedEventArgs(propertyName)); + } } } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ClipboardHelper.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ClipboardHelper.cs index 8cf6f4b7cf..ab1a7fc0c7 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ClipboardHelper.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ClipboardHelper.cs @@ -1,5 +1,6 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. using System; using System.Diagnostics; diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/CommandContextItem.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/CommandContextItem.cs index fa28e6c69f..b084fc7521 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/CommandContextItem.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/CommandContextItem.cs @@ -1,4 +1,8 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class CommandContextItem : ICommandContextItem { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Details.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Details.cs index d1ce6ea65b..4e2215540e 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Details.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Details.cs @@ -1,4 +1,8 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class Details : BaseObservable, IDetails { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsElement.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsElement.cs index eeb56e1f7c..f8b158ba2c 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsElement.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsElement.cs @@ -1,7 +1,12 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class DetailsElement : IDetailsElement { - public string Key { get; set; } + public string Key { get; set; } = string.Empty; + public IDetailsData? Data { get; set; } } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsLink.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsLink.cs index c4e2911749..8daf9677f3 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsLink.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsLink.cs @@ -1,4 +1,8 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class DetailsLink : IDetailsLink { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsTags.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsTags.cs index c6521ca984..1f6905dedb 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsTags.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsTags.cs @@ -1,4 +1,8 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class DetailsTags : IDetailsTags { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DynamicListPage.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DynamicListPage.cs index 0e210e4b9e..01cac09519 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DynamicListPage.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DynamicListPage.cs @@ -1,4 +1,8 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class DynamicListPage : ListPage, IDynamicListPage { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ExtensionInstanceManager.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ExtensionInstanceManager.cs index 53b5fedc59..ec76bd58d9 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ExtensionInstanceManager.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ExtensionInstanceManager.cs @@ -1,5 +1,6 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. using System.Runtime.InteropServices; using Windows.Win32; diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ExtensionServer.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ExtensionServer.cs index 1c9a9e9bc8..f9eeaa8fb9 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ExtensionServer.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ExtensionServer.cs @@ -1,5 +1,6 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. using System.Diagnostics; using System.Runtime.InteropServices; diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Filter.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Filter.cs index 72eb1b0ce8..5493655651 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Filter.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Filter.cs @@ -1,4 +1,8 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class Filter : IFilter { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Form.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Form.cs index cfc8b9549a..b6bf5fa97a 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Form.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Form.cs @@ -1,4 +1,8 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class Form: IForm { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/FormPage.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/FormPage.cs index e9b5e35cb9..e026132724 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/FormPage.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/FormPage.cs @@ -1,10 +1,22 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class FormPage : Action, IFormPage { - private bool _Loading = false; + private bool _loading; - public bool Loading { get => _Loading; set { _Loading = value; OnPropertyChanged(nameof(Loading)); } } + public bool Loading + { + get => _loading; + set + { + _loading = value; + OnPropertyChanged(nameof(Loading)); + } + } public virtual IForm[] Forms() => throw new NotImplementedException(); } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/GoToPageArgs.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/GoToPageArgs.cs index 794bbecf5e..99ecf5cb49 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/GoToPageArgs.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/GoToPageArgs.cs @@ -1,4 +1,8 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class GoToPageArgs : IGoToPageArgs { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/InvokableCommand.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/InvokableCommand.cs index 546f0298b0..79a222b70d 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/InvokableCommand.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/InvokableCommand.cs @@ -1,4 +1,8 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class InvokableCommand : Action, IInvokableCommand { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListHelpers.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListHelpers.cs index 0a510d83a8..fc0270931b 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListHelpers.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListHelpers.cs @@ -1,5 +1,6 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. using System.Collections.ObjectModel; diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListItem.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListItem.cs index 41e32d3aa5..b574ea4fa1 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListItem.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListItem.cs @@ -1,4 +1,8 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class ListItem : BaseObservable, IListItem { @@ -26,7 +30,7 @@ public class ListItem : BaseObservable, IListItem public ICommand Command { get => _command; set { _command = value; OnPropertyChanged(nameof(Command)); } } public IContextItem[] MoreCommands { get => _moreCommands; set { _moreCommands = value; OnPropertyChanged(nameof(MoreCommands)); } } - public IFallbackHandler? FallbackHandler { get => _fallbackHandler ?? _command as IFallbackHandler; init { _fallbackHandler = value; } } + public IFallbackHandler? FallbackHandler { get => _fallbackHandler ?? _command as IFallbackHandler; init => _fallbackHandler = value; } public ListItem(ICommand command) { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListPage.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListPage.cs index f66350b5da..86ee1f0a30 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListPage.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListPage.cs @@ -2,19 +2,72 @@ public class ListPage : Action, IListPage { - private string _PlaceholderText = ""; - private string _SearchText = ""; - private bool _ShowDetails = false; - private bool _Loading = false; - private IFilters _Filters = null; - private IGridProperties _GridProperties = null; + private string _placeholderText = string.Empty; + private string _searchText = string.Empty; + private bool _showDetails; + private bool _loading; + private IFilters _filters; + private IGridProperties _gridProperties; - public string PlaceholderText { get => _PlaceholderText; set { _PlaceholderText = value; OnPropertyChanged(nameof(PlaceholderText)); } } - public string SearchText { get => _SearchText; set { _SearchText = value; OnPropertyChanged(nameof(SearchText)); } } - public bool ShowDetails { get => _ShowDetails; set { _ShowDetails = value; OnPropertyChanged(nameof(ShowDetails)); } } - public bool Loading { get => _Loading; set { _Loading = value; OnPropertyChanged(nameof(Loading)); } } - public IFilters Filters { get => _Filters; set { _Filters = value; OnPropertyChanged(nameof(Filters)); } } - public IGridProperties GridProperties { get => _GridProperties; set { _GridProperties = value; OnPropertyChanged(nameof(GridProperties)); } } + public string PlaceholderText + { + get => _placeholderText; + set + { + _placeholderText = value; + OnPropertyChanged(nameof(PlaceholderText)); + } + } + + public string SearchText + { + get => _searchText; + set + { + _searchText = value; + OnPropertyChanged(nameof(SearchText)); + } + } + + public bool ShowDetails + { + get => _showDetails; + set + { + _showDetails = value; + OnPropertyChanged(nameof(ShowDetails)); + } + } + + public bool Loading + { + get => _loading; + set + { + _loading = value; + OnPropertyChanged(nameof(Loading)); + } + } + + public IFilters Filters + { + get => _filters; + set + { + _filters = value; + OnPropertyChanged(nameof(Filters)); + } + } + + public IGridProperties GridProperties + { + get => _gridProperties; + set + { + _gridProperties = value; + OnPropertyChanged(nameof(GridProperties)); + } + } public virtual ISection[] GetItems() => throw new NotImplementedException(); } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListSection.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListSection.cs index 90d1d6b725..8efb54a1b6 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListSection.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListSection.cs @@ -1,4 +1,8 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class ListSection : ISection { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MarkdownPage.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MarkdownPage.cs index 650fee350e..bb8a7a9a1f 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MarkdownPage.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MarkdownPage.cs @@ -1,4 +1,8 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; public class MarkdownPage : Action, IMarkdownPage { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/SearchPrecisionScore.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/SearchPrecisionScore.cs index 012e4e7f6f..eca58cf64e 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/SearchPrecisionScore.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/SearchPrecisionScore.cs @@ -2,10 +2,6 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -//[assembly: InternalsVisibleTo("Microsoft.Plugin.Program.UnitTests")] -//[assembly: InternalsVisibleTo("Microsoft.PowerToys.Run.Plugin.System.UnitTests")] -//[assembly: InternalsVisibleTo("Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests")] - namespace Microsoft.CmdPal.Extensions.Helpers; public enum SearchPrecisionScore diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/StringMatcher.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/StringMatcher.cs index 3241542697..c5e9387660 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/StringMatcher.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/StringMatcher.cs @@ -4,10 +4,6 @@ using System.Globalization; -//[assembly: InternalsVisibleTo("Microsoft.Plugin.Program.UnitTests")] -//[assembly: InternalsVisibleTo("Microsoft.PowerToys.Run.Plugin.System.UnitTests")] -//[assembly: InternalsVisibleTo("Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests")] - namespace Microsoft.CmdPal.Extensions.Helpers; public class StringMatcher diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs index e609e6f614..7a98c64860 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs @@ -1,19 +1,67 @@ -using Windows.UI; +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Windows.UI; namespace Microsoft.CmdPal.Extensions.Helpers; public class Tag : BaseObservable, ITag { - protected Color _Color = new(); - protected IconDataType _Icon = null; - protected string _Text = ""; - protected string _ToolTip = ""; - protected ICommand _Action; + private Color _color; + private IconDataType _icon = new(string.Empty); + private string _text = string.Empty; + private string _ToolTip = string.Empty; + private ICommand _command; - public Color Color { get => _Color; set { _Color = value; OnPropertyChanged(nameof(Color)); } } - public IconDataType Icon { get => _Icon; set { _Icon = value; OnPropertyChanged(nameof(Icon)); } } - public string Text { get => _Text; set { _Text = value; OnPropertyChanged(nameof(Text)); } } - public string ToolTip { get => _ToolTip; set { _ToolTip = value; OnPropertyChanged(nameof(ToolTip)); } } - public ICommand Command { get => _Action; set { _Action = value; OnPropertyChanged(nameof(Action)); } } + public Color Color + { + get => _color; + set + { + _color = value; + OnPropertyChanged(nameof(Color)); + } + } + + public IconDataType Icon + { + get => _icon; + set + { + _icon = value; + OnPropertyChanged(nameof(Icon)); + } + } + + public string Text + { + get => _text; + set + { + _text = value; + OnPropertyChanged(nameof(Text)); + } + } + + public string ToolTip + { + get => _ToolTip; + set + { + _ToolTip = value; + OnPropertyChanged(nameof(ToolTip)); + } + } + + public ICommand Command + { + get => _command; + set + { + _command = value; + OnPropertyChanged(nameof(Action)); + } + } } From 28cd7967d0f6394a15116666affe4fe94c9c0987 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 16:02:38 -0700 Subject: [PATCH 02/26] defaults / spacing --- .../Microsoft.CmdPal.Extensions.Helpers/Form.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Form.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Form.cs index b6bf5fa97a..0250e0bbc1 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Form.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Form.cs @@ -6,12 +6,17 @@ namespace Microsoft.CmdPal.Extensions.Helpers; public class Form: IForm { - public string Data { get; set; } - public string State { get; set; } - public string Template { get; set; } + public string Data { get; set; } = string.Empty; + + public string State { get; set; } = string.Empty; + + public string Template { get; set; } = string.Empty; public virtual string DataJson() => Data; + public virtual string StateJson() => State; + public virtual string TemplateJson() => Template; + public virtual ICommandResult SubmitForm(string payload) => throw new NotImplementedException(); } From 2e32cfad0e297ac51ae8d6a2bec9fb062841d98c Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 16:35:07 -0700 Subject: [PATCH 03/26] vars --- .../ClipboardHelper.cs | 27 ++++++++++--------- .../ListHelpers.cs | 2 +- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ClipboardHelper.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ClipboardHelper.cs index ab1a7fc0c7..ce6efea1ba 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ClipboardHelper.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ClipboardHelper.cs @@ -26,11 +26,12 @@ public static partial class ClipboardHelper return _internalClipboard ?? string.Empty; } - string tool = string.Empty; - string args = string.Empty; - string clipboardText = string.Empty; - ExecuteOnStaThread(() => GetTextImpl(out clipboardText)); - return clipboardText; + var tool = string.Empty; + var args = string.Empty; + var clipboardText = string.Empty; + + ExecuteOnStaThread(() => GetTextImpl(out clipboardText)); + return clipboardText; } public static void SetText(string text) @@ -41,10 +42,10 @@ public static partial class ClipboardHelper return; } - string tool = string.Empty; - string args = string.Empty; - ExecuteOnStaThread(() => SetClipboardData(Tuple.Create(text, CF_UNICODETEXT))); - return; + var tool = string.Empty; + var args = string.Empty; + ExecuteOnStaThread(() => SetClipboardData(Tuple.Create(text, CF_UNICODETEXT))); + return; } public static void SetRtf(string plainText, string rtfText) @@ -184,8 +185,8 @@ public static partial class ClipboardHelper private static bool SetSingleClipboardData(string text, uint format) { - IntPtr hGlobal = IntPtr.Zero; - IntPtr data = IntPtr.Zero; + var hGlobal = IntPtr.Zero; + var data = IntPtr.Zero; try { @@ -217,7 +218,7 @@ public static partial class ClipboardHelper return false; } - IntPtr dataCopy = GlobalLock(hGlobal); + var dataCopy = GlobalLock(hGlobal); if (dataCopy == IntPtr.Zero) { return false; @@ -255,7 +256,7 @@ public static partial class ClipboardHelper private static void ExecuteOnStaThread(Func action) { const int RetryCount = 5; - int tries = 0; + var tries = 0; if (Thread.CurrentThread.GetApartmentState() == ApartmentState.STA) { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListHelpers.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListHelpers.cs index fc0270931b..55629a67ae 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListHelpers.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListHelpers.cs @@ -12,7 +12,7 @@ public class ListHelpers // TODO! This has side effects! This calls UpdateQuery on fallback handlers and that's async public static int ScoreListItem(string query, IListItem listItem) { - bool isFallback = false; + var isFallback = false; if (listItem.FallbackHandler != null) { isFallback = true; From d6f62c0e812e9de16e248bc8c6b32a06056c6986 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 16:35:31 -0700 Subject: [PATCH 04/26] getting tag compliant again --- .../extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs index 7a98c64860..38a3216843 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs @@ -12,7 +12,7 @@ public class Tag : BaseObservable, ITag private IconDataType _icon = new(string.Empty); private string _text = string.Empty; private string _ToolTip = string.Empty; - private ICommand _command; + private ICommand? _command = null; public Color Color { @@ -54,7 +54,7 @@ public class Tag : BaseObservable, ITag } } - public ICommand Command + public ICommand? Command { get => _command; set From 234a9314a3af6c6628a9344ba1c093fbcc92c2d9 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 17:12:15 -0700 Subject: [PATCH 05/26] more updates :) --- .../SpongebotExtension/CopyTextAction.cs | 7 +- .../ActionResult.cs | 15 ++-- .../ClipboardHelper.cs | 9 +- .../CommandContextItem.cs | 5 +- .../DetailsLink.cs | 5 +- .../DetailsTags.cs | 2 +- .../ListItem.cs | 84 ++++++++++++++++--- .../ListPage.cs | 8 +- .../MatchResult.cs | 5 +- .../StringMatcher.cs | 25 +++--- .../Tag.cs | 2 +- .../CalculatorAction.cs | 7 +- 12 files changed, 124 insertions(+), 50 deletions(-) diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/CopyTextAction.cs b/src/modules/cmdpal/extensions/SpongebotExtension/CopyTextAction.cs index eb4447f8cd..d0123c493c 100644 --- a/src/modules/cmdpal/extensions/SpongebotExtension/CopyTextAction.cs +++ b/src/modules/cmdpal/extensions/SpongebotExtension/CopyTextAction.cs @@ -4,6 +4,7 @@ using Microsoft.CmdPal.Extensions; using Microsoft.CmdPal.Extensions.Helpers; +using Windows.ApplicationModel.DataTransfer; namespace SpongebotExtension; @@ -20,7 +21,11 @@ public class CopyTextAction : InvokableCommand public override ICommandResult Invoke() { - ClipboardHelper.SetText(Text); + var dataPackage = new DataPackage(); + dataPackage.SetText(Text); + Clipboard.SetContent(dataPackage); + + // ClipboardHelper.SetText(Text); return ActionResult.KeepOpen(); } } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ActionResult.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ActionResult.cs index 996db8f749..53e800542d 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ActionResult.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ActionResult.cs @@ -6,11 +6,12 @@ namespace Microsoft.CmdPal.Extensions.Helpers; public class ActionResult : ICommandResult { - private ICommandResultArgs _args; - + // TODO: is Args needed? + private ICommandResultArgs? _args; private CommandResultKind _kind = CommandResultKind.Dismiss; - - public ICommandResultArgs Args => _args; + + // TODO: is Args needed? + public ICommandResultArgs? Args => _args; public CommandResultKind Kind => _kind; @@ -26,14 +27,16 @@ public class ActionResult : ICommandResult { return new ActionResult() { - _kind = CommandResultKind.GoHome + _kind = CommandResultKind.GoHome, + _args = null, }; } public static ActionResult KeepOpen() { return new ActionResult() { - _kind = CommandResultKind.KeepOpen + _kind = CommandResultKind.KeepOpen, + _args = null, }; } } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ClipboardHelper.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ClipboardHelper.cs index ce6efea1ba..128fbced2f 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ClipboardHelper.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ClipboardHelper.cs @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. - +/* using System; using System.Diagnostics; using System.Runtime.InteropServices; @@ -122,7 +122,7 @@ public static partial class ClipboardHelper if (data != IntPtr.Zero) { data = GlobalLock(data); - text = Marshal.PtrToStringUni(data); + text = Marshal.PtrToStringUni(data) ?? string.Empty; GlobalUnlock(data); return true; } @@ -136,7 +136,7 @@ public static partial class ClipboardHelper if (data != IntPtr.Zero) { data = GlobalLock(data); - text = Marshal.PtrToStringAnsi(data); + text = Marshal.PtrToStringAnsi(data) ?? string.Empty; GlobalUnlock(data); return true; } @@ -268,7 +268,7 @@ public static partial class ClipboardHelper return; } - Exception exception = null; + Exception? exception = null; var thread = new Thread(() => { try @@ -294,3 +294,4 @@ public static partial class ClipboardHelper } } } +*/ \ No newline at end of file diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/CommandContextItem.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/CommandContextItem.cs index b084fc7521..aafc90450c 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/CommandContextItem.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/CommandContextItem.cs @@ -7,8 +7,11 @@ namespace Microsoft.CmdPal.Extensions.Helpers; public class CommandContextItem : ICommandContextItem { public bool IsCritical { get; set; } + public ICommand Command { get; set; } - public string Tooltip { get; set; } = ""; + + public string Tooltip { get; set; } = string.Empty; + public CommandContextItem(ICommand command) { Command = command; diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsLink.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsLink.cs index 8daf9677f3..f6daa16de7 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsLink.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsLink.cs @@ -6,6 +6,7 @@ namespace Microsoft.CmdPal.Extensions.Helpers; public class DetailsLink : IDetailsLink { - public Uri Link { get; set; } - public string Text { get; set; } + public Uri Link { get; set; } = new(string.Empty); + + public string Text { get; set; } = string.Empty; } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsTags.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsTags.cs index 1f6905dedb..075964ebf4 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsTags.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/DetailsTags.cs @@ -6,5 +6,5 @@ namespace Microsoft.CmdPal.Extensions.Helpers; public class DetailsTags : IDetailsTags { - public ITag[] Tags { get; set; } + public ITag[] Tags { get; set; } = []; } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListItem.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListItem.cs index b574ea4fa1..98166538e6 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListItem.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListItem.cs @@ -2,35 +2,95 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.ComponentModel.DataAnnotations; + namespace Microsoft.CmdPal.Extensions.Helpers; public class ListItem : BaseObservable, IListItem { - private string _title = ""; - private string _subtitle = ""; + private string _title = string.Empty; + private string _subtitle = string.Empty; private ITag[] _tags = []; private IDetails? _details; - private ICommand _command; + private ICommand? _command; private IContextItem[] _moreCommands = []; private IFallbackHandler? _fallbackHandler; public string Title { - get => !string.IsNullOrEmpty(this._title) ? this._title : _command.Name; + get + { + if (!string.IsNullOrEmpty(this._title)) + { + return _title; + } + else + { + return _command?.Name ?? string.Empty; + } + } set { - _title = value; OnPropertyChanged(nameof(Title)); + _title = value; + OnPropertyChanged(nameof(Title)); } - } - public string Subtitle { get => _subtitle; set { _subtitle = value; OnPropertyChanged(nameof(Subtitle)); } } - public ITag[] Tags { get => _tags; set { _tags = value; OnPropertyChanged(nameof(Tags)); } } - public IDetails? Details { get => _details; set { _details = value; OnPropertyChanged(nameof(Details)); } } - public ICommand Command { get => _command; set { _command = value; OnPropertyChanged(nameof(Command)); } } - public IContextItem[] MoreCommands { get => _moreCommands; set { _moreCommands = value; OnPropertyChanged(nameof(MoreCommands)); } } + public string Subtitle + { + get => _subtitle; + set + { + _subtitle = value; + OnPropertyChanged(nameof(Subtitle)); + } + } - public IFallbackHandler? FallbackHandler { get => _fallbackHandler ?? _command as IFallbackHandler; init => _fallbackHandler = value; } + public ITag[] Tags + { + get => _tags; + set + { + _tags = value; + OnPropertyChanged(nameof(Tags)); + } + } + + public IDetails? Details + { + get => _details; + set + { + _details = value; + OnPropertyChanged(nameof(Details)); + } + } + + public ICommand? Command + { + get => _command; + set + { + _command = value; + OnPropertyChanged(nameof(Command)); + } + } + + public IContextItem[] MoreCommands + { + get => _moreCommands; + set + { + _moreCommands = value; + OnPropertyChanged(nameof(MoreCommands)); + } + } + + public IFallbackHandler? FallbackHandler + { + get => _fallbackHandler ?? _command as IFallbackHandler; + init => _fallbackHandler = value; + } public ListItem(ICommand command) { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListPage.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListPage.cs index 86ee1f0a30..ef2f242692 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListPage.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListPage.cs @@ -6,8 +6,8 @@ public class ListPage : Action, IListPage private string _searchText = string.Empty; private bool _showDetails; private bool _loading; - private IFilters _filters; - private IGridProperties _gridProperties; + private IFilters? _filters; + private IGridProperties? _gridProperties; public string PlaceholderText { @@ -49,7 +49,7 @@ public class ListPage : Action, IListPage } } - public IFilters Filters + public IFilters? Filters { get => _filters; set @@ -59,7 +59,7 @@ public class ListPage : Action, IListPage } } - public IGridProperties GridProperties + public IGridProperties? GridProperties { get => _gridProperties; set diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MatchResult.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MatchResult.cs index fb42c0fe61..bcf887f680 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MatchResult.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MatchResult.cs @@ -38,10 +38,7 @@ public class MatchResult public int RawScore { - get - { - return _rawScore; - } + get => _rawScore; set { diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/StringMatcher.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/StringMatcher.cs index c5e9387660..3e10280034 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/StringMatcher.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/StringMatcher.cs @@ -19,24 +19,23 @@ public class StringMatcher //_alphabet = alphabet; } - public static StringMatcher Instance { get; set; } + private static StringMatcher? _instance; + public static StringMatcher Instance + { + get + { + _instance ??= new StringMatcher(); + + return _instance; + } + set => _instance = value; + } private static readonly char[] Separator = new[] { ' ' }; - [Obsolete("This method is obsolete and should not be used. Please use the static function StringMatcher.FuzzySearch")] - public static int Score(string source, string target) - { - return FuzzySearch(target, source).Score; - } - - [Obsolete("This method is obsolete and should not be used. Please use the static function StringMatcher.FuzzySearch")] - public static bool IsMatch(string source, string target) - { - return Score(source, target) > 0; - } - public static MatchResult FuzzySearch(string query, string stringToCompare) { + return Instance.FuzzyMatch(query, stringToCompare); } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs index 38a3216843..103edcee24 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs @@ -12,7 +12,7 @@ public class Tag : BaseObservable, ITag private IconDataType _icon = new(string.Empty); private string _text = string.Empty; private string _ToolTip = string.Empty; - private ICommand? _command = null; + private ICommand? _command; public Color Color { diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorAction.cs b/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorAction.cs index 89e3389cf1..16408fa728 100644 --- a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorAction.cs +++ b/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorAction.cs @@ -4,6 +4,7 @@ using Microsoft.CmdPal.Extensions; using Microsoft.CmdPal.Extensions.Helpers; +using Windows.ApplicationModel.DataTransfer; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. @@ -23,7 +24,11 @@ public class CalculatorAction : InvokableCommand { if (_success) { - ClipboardHelper.SetText(_result); + var dataPackage = new DataPackage(); + dataPackage.SetText(_result); + Clipboard.SetContent(dataPackage); + + // ClipboardHelper.SetText(_result); } return ActionResult.KeepOpen(); From a93d8b94d11b2d3ad2921e022931da8839e544aa Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 20:34:50 -0700 Subject: [PATCH 06/26] should be passing, --- .../ExtensionInstanceManager.cs | 2 +- .../Microsoft.CmdPal.Extensions.Helpers/MatchResult.cs | 2 +- .../Microsoft.CmdPal.Extensions.Helpers.csproj | 1 - src/modules/cmdpal/src/WindowsCommandPalette/Program.cs | 4 ++-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ExtensionInstanceManager.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ExtensionInstanceManager.cs index ec76bd58d9..8f0925ef3b 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ExtensionInstanceManager.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ExtensionInstanceManager.cs @@ -23,7 +23,7 @@ internal sealed class ExtensionInstanceManager : IClassFactory // Known constant ignored by win32metadata and cswin32 projections. // https://github.com/microsoft/win32metadata/blob/main/generation/WinSDK/RecompiledIdlHeaders/um/processthreadsapi.h - private static HANDLE CURRENT_THREAD_PSEUDO_HANDLE = (HANDLE)(IntPtr)(-6); + private static readonly HANDLE CURRENT_THREAD_PSEUDO_HANDLE = (HANDLE)(IntPtr)(-6); private static readonly Guid IID_IUnknown = Guid.Parse("00000000-0000-0000-C000-000000000046"); diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MatchResult.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MatchResult.cs index bcf887f680..405d1fae0d 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MatchResult.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MatchResult.cs @@ -50,7 +50,7 @@ public class MatchResult /// /// Gets matched data to highlight. /// - public List MatchData { get; private set; } + public List MatchData { get; private set; } = new(); public SearchPrecisionScore SearchPrecision { get; set; } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Microsoft.CmdPal.Extensions.Helpers.csproj b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Microsoft.CmdPal.Extensions.Helpers.csproj index 0d6cd749f7..a836398abe 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Microsoft.CmdPal.Extensions.Helpers.csproj +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Microsoft.CmdPal.Extensions.Helpers.csproj @@ -7,7 +7,6 @@ pdbonly 0436 - False diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Program.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Program.cs index 2f2464a74b..507e295804 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Program.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Program.cs @@ -13,7 +13,7 @@ namespace DeveloperCommandPalette; // cribbed heavily from // // https://github.com/microsoft/WindowsAppSDK-Samples/tree/main/Samples/AppLifecycle/Instancing/cs2/cs-winui-packaged/CsWinUiDesktopInstancing -sealed class Program +internal sealed class Program { private static App? app; @@ -21,7 +21,7 @@ sealed class Program // // Main cannot be async. If it is, then the clipboard won't work, and neither will narrator. [STAThread] - static int Main(string[] args) + private static int Main(string[] args) { WinRT.ComWrappersSupport.InitializeComWrappers(); var isRedirect = DecideRedirection(); From 452f26c53d7f3f76f0965326db60db4725696b73 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 20:36:26 -0700 Subject: [PATCH 07/26] operational! --- .../Microsoft.CmdPal.Extensions.Helpers.csproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Microsoft.CmdPal.Extensions.Helpers.csproj b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Microsoft.CmdPal.Extensions.Helpers.csproj index a836398abe..6208275383 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Microsoft.CmdPal.Extensions.Helpers.csproj +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Microsoft.CmdPal.Extensions.Helpers.csproj @@ -1,12 +1,8 @@  - None enable enable - pdbonly - - 0436 From 4f6ed8f91beda67353b70347f29781dbe2998af2 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 20:56:53 -0700 Subject: [PATCH 08/26] lotta cleanup --- .../WindowsCommandPalette/ActionViewModel.cs | 18 +--------- .../Builtins/Apps/AppListItem.cs | 23 ++++++++---- .../ContextItemViewModel.cs | 18 +--------- .../FilteredListSection.cs | 4 +-- .../ListItemViewModel.cs | 2 +- .../src/WindowsCommandPalette/MainListItem.cs | 35 ++++++++++--------- .../WindowsCommandPalette/MainListSection.cs | 6 +--- .../WindowsCommandPalette/MainWindow.xaml.cs | 23 +++++++----- .../RecentsListSection.cs | 5 +-- .../Services/ExtensionService.cs | 9 ++--- .../src/WindowsCommandPalette/TagViewModel.cs | 2 +- .../Views/ActionsProviderWrapper.xaml.cs | 14 -------- .../Views/DetailsViewModel.xaml.cs | 2 +- .../Views/ErrorListItem.xaml.cs | 20 ++--------- .../Views/FormPageViewModel.xaml.cs | 13 ------- .../Views/FormViewModel.xaml.cs | 2 +- .../Views/ListPage.xaml.cs | 2 +- .../Views/ListPageViewModel.xaml.cs | 2 +- .../Views/MainPage.xaml.cs | 2 +- .../Views/MainViewModel.xaml.cs | 18 +++++----- .../Views/MarkdownPage.xaml.cs | 2 +- .../Views/NoOpAction.xaml.cs | 13 ------- .../Views/SectionInfoList.xaml.cs | 12 +------ ...tringNotEmptyToVisibilityConverter.xaml.cs | 13 ------- 24 files changed, 81 insertions(+), 179 deletions(-) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/ActionViewModel.cs b/src/modules/cmdpal/src/WindowsCommandPalette/ActionViewModel.cs index fa26f62992..34f927a1b7 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/ActionViewModel.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/ActionViewModel.cs @@ -2,24 +2,8 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Microsoft.Terminal.UI; -using Microsoft.UI.Xaml; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Controls.Primitives; -using Microsoft.UI.Xaml.Data; -using Microsoft.UI.Xaml.Input; -using Microsoft.UI.Xaml.Media; -using Microsoft.UI.Xaml.Navigation; using Microsoft.CmdPal.Extensions; -using Windows.ApplicationModel.AppExtensions; -using Windows.Foundation; -using Windows.Foundation.Collections; +using Microsoft.UI.Xaml.Controls; namespace DeveloperCommandPalette; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppListItem.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppListItem.cs index 078ee4019d..e8a7a3c8f6 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppListItem.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppListItem.cs @@ -13,17 +13,28 @@ internal sealed class AppListItem : ListItem public AppListItem(AppItem app) : base(new AppAction(app)) { - this._app = app; - this.Title = app.Name; - this.Subtitle = app.Subtitle; - this.Details = new Details() { Title = this.Title, HeroImage = this.Command.Icon, Body = "### App" }; - this.Tags = [new Tag() { Text = "App" }]; + _app = app; + Title = app.Name; + Subtitle = app.Subtitle; + Tags = [new Tag() { Text = "App" }]; + + Details = new Details() + { + Title = this.Title, + HeroImage = Command?.Icon ?? new(string.Empty), + Body = "### App", + }; if (string.IsNullOrEmpty(app.UserModelId)) { // Win32 exe or other non UWP app MoreCommands = [ - new CommandContextItem(new OpenPathAction(app.DirPath) { Name = "Open location", Icon = new("\ue838") }) + new CommandContextItem( + new OpenPathAction(app.DirPath) + { + Name = "Open location", + Icon = new("\ue838"), + }) ]; } else diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/ContextItemViewModel.cs b/src/modules/cmdpal/src/WindowsCommandPalette/ContextItemViewModel.cs index 62dc5bc827..23737b85e2 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/ContextItemViewModel.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/ContextItemViewModel.cs @@ -2,25 +2,9 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; using System.ComponentModel; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Microsoft.Terminal.UI; -using Microsoft.UI.Xaml; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Controls.Primitives; -using Microsoft.UI.Xaml.Data; -using Microsoft.UI.Xaml.Input; -using Microsoft.UI.Xaml.Media; -using Microsoft.UI.Xaml.Navigation; using Microsoft.CmdPal.Extensions; -using Windows.ApplicationModel.AppExtensions; -using Windows.Foundation; -using Windows.Foundation.Collections; +using Microsoft.UI.Xaml.Controls; namespace DeveloperCommandPalette; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/FilteredListSection.cs b/src/modules/cmdpal/src/WindowsCommandPalette/FilteredListSection.cs index 8f72c7cd37..f38c4dc819 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/FilteredListSection.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/FilteredListSection.cs @@ -6,10 +6,10 @@ using System.Collections.ObjectModel; using System.Collections.Specialized; using System.Linq; using CmdPal.Models; -using Microsoft.UI.Dispatching; -using Microsoft.UI.Xaml; using Microsoft.CmdPal.Extensions; using Microsoft.CmdPal.Extensions.Helpers; +using Microsoft.UI.Dispatching; +using Microsoft.UI.Xaml; using WindowsCommandPalette.Views; namespace DeveloperCommandPalette; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/ListItemViewModel.cs b/src/modules/cmdpal/src/WindowsCommandPalette/ListItemViewModel.cs index 34be829198..b2daba4800 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/ListItemViewModel.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/ListItemViewModel.cs @@ -5,9 +5,9 @@ using System.ComponentModel; using System.Runtime.InteropServices; using CmdPal.Models; +using Microsoft.CmdPal.Extensions; using Microsoft.UI.Dispatching; using Microsoft.UI.Xaml.Controls; -using Microsoft.CmdPal.Extensions; using WindowsCommandPalette.Views; namespace DeveloperCommandPalette; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/MainListItem.cs b/src/modules/cmdpal/src/WindowsCommandPalette/MainListItem.cs index a2c67d889f..e24385e0b1 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/MainListItem.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/MainListItem.cs @@ -4,49 +4,50 @@ using Microsoft.CmdPal.Extensions; using Microsoft.CmdPal.Extensions.Helpers; -using Windows.Foundation; namespace DeveloperCommandPalette; public sealed class MainListItem : ListItem { - private readonly IListItem _listItem; - - public IListItem Item => _listItem; + public IListItem Item { get; set; } internal MainListItem(IListItem listItem) : base(listItem.Command) { - _listItem = listItem; + Item = listItem; - Title = _listItem.Title ?? _listItem.Command.Name; - Subtitle = _listItem.Subtitle; - MoreCommands = _listItem.MoreCommands; - FallbackHandler = _listItem.FallbackHandler; - Tags = _listItem.Tags; + Title = Item.Title ?? Item.Command.Name; + Subtitle = Item.Subtitle; + MoreCommands = Item.MoreCommands; + FallbackHandler = Item.FallbackHandler; + Tags = Item.Tags; - Command.PropChanged += Action_PropertyChanged; - _listItem.PropChanged += Action_PropertyChanged; + if (Command != null) + { + Command.PropChanged += Action_PropertyChanged; + } + + Item.PropChanged += Action_PropertyChanged; } - private void Action_PropertyChanged(object sender, Microsoft.CmdPal.Extensions.PropChangedEventArgs args) + private void Action_PropertyChanged(object sender, PropChangedEventArgs args) { if (args.PropertyName == "Name") { - this.Title = !string.IsNullOrEmpty(this._listItem.Title) ? this._listItem.Title : Command.Name; + Title = !string.IsNullOrEmpty(Item.Title) ? Item.Title : Command?.Name ?? string.Empty; OnPropertyChanged(nameof(Title)); } else if (args.PropertyName == nameof(Title)) { - this.Title = this._listItem.Title; + Title = Item.Title; } else if (args.PropertyName == nameof(Subtitle)) { - this.Subtitle = this._listItem.Subtitle; + Subtitle = Item.Subtitle; } else if (args.PropertyName == nameof(MoreCommands)) { - this.MoreCommands = this._listItem.MoreCommands; + MoreCommands = Item.MoreCommands; } OnPropertyChanged(args.PropertyName); diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/MainListSection.cs b/src/modules/cmdpal/src/WindowsCommandPalette/MainListSection.cs index 11bed52b32..09438b596d 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/MainListSection.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/MainListSection.cs @@ -4,12 +4,8 @@ using System.Collections.ObjectModel; using System.Collections.Specialized; -using System.Linq; -using CmdPal.Models; -using Microsoft.UI.Dispatching; -using Microsoft.UI.Xaml; using Microsoft.CmdPal.Extensions; -using Microsoft.CmdPal.Extensions.Helpers; +using Microsoft.UI.Dispatching; using WindowsCommandPalette.Views; namespace DeveloperCommandPalette; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/MainWindow.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/MainWindow.xaml.cs index afe2bee15e..cb64edaebf 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/MainWindow.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/MainWindow.xaml.cs @@ -32,15 +32,19 @@ public sealed partial class MainWindow : Window private MainViewModel _mainViewModel { get; init; } private readonly HWND hwnd; - private const uint DOT_KEY = 0xBE; - private const uint WM_HOTKEY = 0x0312; private WNDPROC? origPrc; private WNDPROC? hotKeyPrc; - private Windows.Win32.Foundation.LRESULT HotKeyPrc(Windows.Win32.Foundation.HWND hwnd, - uint uMsg, - Windows.Win32.Foundation.WPARAM wParam, - Windows.Win32.Foundation.LPARAM lParam) +#pragma warning disable SA1310 // Field names should not contain underscore + private const uint DOT_KEY = 0xBE; + private const uint WM_HOTKEY = 0x0312; +#pragma warning restore SA1310 // Field names should not contain underscore + + private LRESULT HotKeyPrc( + HWND hwnd, + uint uMsg, + WPARAM wParam, + LPARAM lParam) { if (uMsg == WM_HOTKEY) { @@ -317,7 +321,7 @@ public sealed partial class MainWindow : Window return modifierString + keyString; } - private static (VirtualKey key, VirtualKeyModifiers modifiers) StringToKeybinding(string keybinding) + private static (VirtualKey Key, VirtualKeyModifiers Modifiers) StringToKeybinding(string keybinding) { var parts = keybinding.Split('+'); var modifiers = VirtualKeyModifiers.None; @@ -351,9 +355,10 @@ public sealed partial class MainWindow : Window return (key, modifiers); } - private static (uint vk, Windows.Win32.UI.Input.KeyboardAndMouse.HOT_KEY_MODIFIERS mod) UwpToWin32(VirtualKey key, VirtualKeyModifiers modifiers) + private static (uint Vk, Windows.Win32.UI.Input.KeyboardAndMouse.HOT_KEY_MODIFIERS Mod) UwpToWin32(VirtualKey key, VirtualKeyModifiers modifiers) { - Windows.Win32.UI.Input.KeyboardAndMouse.HOT_KEY_MODIFIERS mod = new(); + Windows.Win32.UI.Input.KeyboardAndMouse.HOT_KEY_MODIFIERS mod = default; + if (modifiers.HasFlag(VirtualKeyModifiers.Control)) { mod |= Windows.Win32.UI.Input.KeyboardAndMouse.HOT_KEY_MODIFIERS.MOD_CONTROL; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/RecentsListSection.cs b/src/modules/cmdpal/src/WindowsCommandPalette/RecentsListSection.cs index 8983549e9e..d1e44f3556 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/RecentsListSection.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/RecentsListSection.cs @@ -4,12 +4,9 @@ using System.Collections.ObjectModel; using System.Collections.Specialized; -using System.Linq; -using CmdPal.Models; -using Microsoft.UI.Dispatching; -using Microsoft.UI.Xaml; using Microsoft.CmdPal.Extensions; using Microsoft.CmdPal.Extensions.Helpers; +using Microsoft.UI.Dispatching; using WindowsCommandPalette.Views; namespace DeveloperCommandPalette; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Services/ExtensionService.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Services/ExtensionService.cs index 5adb899259..fdd5db25bb 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Services/ExtensionService.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Services/ExtensionService.cs @@ -6,8 +6,8 @@ using CmdPal.Models; using Microsoft.CmdPal.Common.Contracts; using Microsoft.CmdPal.Common.Extensions; using Microsoft.CmdPal.Common.Services; -using Microsoft.UI.Xaml; using Microsoft.CmdPal.Extensions; +using Microsoft.UI.Xaml; using Windows.ApplicationModel; using Windows.ApplicationModel.AppExtensions; using Windows.Foundation.Collections; @@ -168,8 +168,9 @@ public class ExtensionService : IExtensionService, IDisposable var extensions = await GetInstalledAppExtensionsAsync(); foreach (var extension in extensions) { - var (CmdPalProvider, classIds) = await GetCmdPalExtensionPropertiesAsync(extension); - if (CmdPalProvider == null || classIds.Count == 0) + var (cmdPalProvider, classIds) = await GetCmdPalExtensionPropertiesAsync(extension); + + if (cmdPalProvider == null || classIds.Count == 0) { continue; } @@ -178,7 +179,7 @@ public class ExtensionService : IExtensionService, IDisposable { var extensionWrapper = new ExtensionWrapper(extension, classId); - var supportedInterfaces = GetSubPropertySet(CmdPalProvider, "SupportedInterfaces"); + var supportedInterfaces = GetSubPropertySet(cmdPalProvider, "SupportedInterfaces"); if (supportedInterfaces is not null) { foreach (var supportedInterface in supportedInterfaces) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/TagViewModel.cs b/src/modules/cmdpal/src/WindowsCommandPalette/TagViewModel.cs index a58a2283c8..4baa219a20 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/TagViewModel.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/TagViewModel.cs @@ -3,9 +3,9 @@ // See the LICENSE file in the project root for more information. using System.ComponentModel; +using Microsoft.CmdPal.Extensions; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Media; -using Microsoft.CmdPal.Extensions; using Windows.UI; namespace DeveloperCommandPalette; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs index 6e660dc965..1e89b52f63 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs @@ -2,23 +2,9 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System.Collections.ObjectModel; -using System.Runtime.InteropServices; -using System.Runtime.InteropServices.WindowsRuntime; -using CmdPal.Models; -using DeveloperCommandPalette; -using Microsoft.CmdPal.Common.Extensions; using Microsoft.CmdPal.Common.Services; -using Microsoft.UI.Xaml; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Input; -using Microsoft.UI.Xaml.Media.Animation; using Microsoft.CmdPal.Extensions; -using Microsoft.CmdPal.Extensions.Helpers; -using Windows.Foundation; using Windows.Win32; -using WindowsCommandPalette.BuiltinCommands; -using WindowsCommandPalette.BuiltinCommands.AllApps; namespace WindowsCommandPalette.Views; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/DetailsViewModel.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/DetailsViewModel.xaml.cs index e068351d8c..1868264ec9 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/DetailsViewModel.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/DetailsViewModel.xaml.cs @@ -2,8 +2,8 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using Microsoft.UI.Xaml.Controls; using Microsoft.CmdPal.Extensions; +using Microsoft.UI.Xaml.Controls; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ErrorListItem.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ErrorListItem.xaml.cs index 7e4c978e02..5078115cda 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ErrorListItem.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ErrorListItem.xaml.cs @@ -2,30 +2,16 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System.Collections.ObjectModel; -using System.Collections.Specialized; -using System.ComponentModel; -using System.Runtime.InteropServices; -using DeveloperCommandPalette; -using Microsoft.UI.Dispatching; -using Microsoft.UI.Input; -using Microsoft.UI.Xaml; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Controls.Primitives; -using Microsoft.UI.Xaml.Data; -using Microsoft.UI.Xaml.Input; -using Microsoft.UI.Xaml.Navigation; -using Microsoft.CmdPal.Extensions; using Microsoft.CmdPal.Extensions.Helpers; namespace WindowsCommandPalette.Views; -public sealed class ErrorListItem : Microsoft.CmdPal.Extensions.Helpers.ListItem +public sealed class ErrorListItem : ListItem { public ErrorListItem(Exception ex) : base(new NoOpAction()) { - this.Title = "Error in extension:"; - this.Subtitle = ex.Message; + Title = "Error in extension:"; + Subtitle = ex.Message; } } diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs index e4e005999a..e86cbb0263 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs @@ -2,22 +2,9 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; using System.Collections.ObjectModel; -using System.ComponentModel; -using AdaptiveCards.ObjectModel.WinUI3; -using AdaptiveCards.Rendering.WinUI3; -using AdaptiveCards.Templating; using DeveloperCommandPalette; -using Microsoft.UI.Xaml; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Input; -using Microsoft.UI.Xaml.Navigation; using Microsoft.CmdPal.Extensions; -using Microsoft.CmdPal.Extensions.Helpers; -using Windows.Foundation; -using Windows.System; -using Windows.UI.ViewManagement; namespace WindowsCommandPalette.Views; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormViewModel.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormViewModel.xaml.cs index ad1b95318c..b8f97870ca 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormViewModel.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormViewModel.xaml.cs @@ -7,8 +7,8 @@ using AdaptiveCards.ObjectModel.WinUI3; using AdaptiveCards.Rendering.WinUI3; using AdaptiveCards.Templating; using DeveloperCommandPalette; -using Microsoft.UI.Xaml; using Microsoft.CmdPal.Extensions; +using Microsoft.UI.Xaml; using Windows.Foundation; using Windows.System; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPage.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPage.xaml.cs index ac55cec986..498de44962 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPage.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPage.xaml.cs @@ -4,6 +4,7 @@ using System.ComponentModel; using DeveloperCommandPalette; +using Microsoft.CmdPal.Extensions.Helpers; using Microsoft.UI.Dispatching; using Microsoft.UI.Input; using Microsoft.UI.Xaml; @@ -11,7 +12,6 @@ using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Controls.Primitives; using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Navigation; -using Microsoft.CmdPal.Extensions.Helpers; namespace WindowsCommandPalette.Views; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs index 6a38ab72ef..3275f2abb3 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs @@ -5,9 +5,9 @@ using System.Collections.ObjectModel; using System.Runtime.InteropServices; using DeveloperCommandPalette; -using Microsoft.UI.Dispatching; using Microsoft.CmdPal.Extensions; using Microsoft.CmdPal.Extensions.Helpers; +using Microsoft.UI.Dispatching; namespace WindowsCommandPalette.Views; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs index 35ecf971ad..ef9cb6bb15 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs @@ -6,11 +6,11 @@ using System.Runtime.InteropServices; using DeveloperCommandPalette; using Microsoft.CmdPal.Common.Extensions; using Microsoft.CmdPal.Common.Services; +using Microsoft.CmdPal.Extensions; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Media.Animation; -using Microsoft.CmdPal.Extensions; namespace WindowsCommandPalette.Views; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs index 8db145677e..cc4a3ad93a 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs @@ -7,25 +7,18 @@ using System.Runtime.InteropServices; using System.Runtime.InteropServices.WindowsRuntime; using CmdPal.Models; using DeveloperCommandPalette; -using Microsoft.CmdPal.Common.Extensions; -using Microsoft.CmdPal.Common.Services; using Microsoft.CmdPal.Ext.Bookmarks; using Microsoft.CmdPal.Ext.Calc; using Microsoft.CmdPal.Ext.Settings; -using Microsoft.UI.Xaml; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Input; -using Microsoft.UI.Xaml.Media.Animation; using Microsoft.CmdPal.Extensions; using Microsoft.CmdPal.Extensions.Helpers; using Windows.Foundation; -using Windows.Win32; using WindowsCommandPalette.BuiltinCommands; using WindowsCommandPalette.BuiltinCommands.AllApps; namespace WindowsCommandPalette.Views; -public sealed class MainViewModel +public sealed class MainViewModel : IDisposable { internal readonly AllAppsPage apps = new(); internal readonly QuitActionProvider quitActionProvider = new(); @@ -61,7 +54,8 @@ public sealed class MainViewModel // On a background thread, warm up the app cache since we want it more often than not new Task(() => { - var _ = AppCache.Instance.Value; + _ = AppCache.Instance.Value; + LoadedApps = true; AppsReady?.Invoke(this, null); }).Start(); @@ -183,4 +177,10 @@ public sealed class MainViewModel } } } + + public void Dispose() + { + quitActionProvider.Dispose(); + reloadActionProvider.Dispose(); + } } diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPage.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPage.xaml.cs index e9a0948cdd..f7bb4c947f 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPage.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPage.xaml.cs @@ -4,13 +4,13 @@ using System.ComponentModel; using DeveloperCommandPalette; +using Microsoft.CmdPal.Extensions; using Microsoft.UI.Input; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Controls.Primitives; using Microsoft.UI.Xaml.Input; using Microsoft.UI.Xaml.Navigation; -using Microsoft.CmdPal.Extensions; namespace WindowsCommandPalette.Views; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/NoOpAction.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/NoOpAction.xaml.cs index 4faa302453..4e7615b12c 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/NoOpAction.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/NoOpAction.xaml.cs @@ -2,19 +2,6 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System.Collections.ObjectModel; -using System.Collections.Specialized; -using System.ComponentModel; -using System.Runtime.InteropServices; -using DeveloperCommandPalette; -using Microsoft.UI.Dispatching; -using Microsoft.UI.Input; -using Microsoft.UI.Xaml; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Controls.Primitives; -using Microsoft.UI.Xaml.Data; -using Microsoft.UI.Xaml.Input; -using Microsoft.UI.Xaml.Navigation; using Microsoft.CmdPal.Extensions; using Microsoft.CmdPal.Extensions.Helpers; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/SectionInfoList.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/SectionInfoList.xaml.cs index 7ea9cb7b20..e934cc5fbe 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/SectionInfoList.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/SectionInfoList.xaml.cs @@ -4,19 +4,9 @@ using System.Collections.ObjectModel; using System.Collections.Specialized; -using System.ComponentModel; -using System.Runtime.InteropServices; using DeveloperCommandPalette; -using Microsoft.UI.Dispatching; -using Microsoft.UI.Input; -using Microsoft.UI.Xaml; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Controls.Primitives; -using Microsoft.UI.Xaml.Data; -using Microsoft.UI.Xaml.Input; -using Microsoft.UI.Xaml.Navigation; using Microsoft.CmdPal.Extensions; -using Microsoft.CmdPal.Extensions.Helpers; +using Microsoft.UI.Dispatching; namespace WindowsCommandPalette.Views; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/StringNotEmptyToVisibilityConverter.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/StringNotEmptyToVisibilityConverter.xaml.cs index 8955c497ee..fe574af363 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/StringNotEmptyToVisibilityConverter.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/StringNotEmptyToVisibilityConverter.xaml.cs @@ -2,21 +2,8 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System.Collections.ObjectModel; -using System.Collections.Specialized; -using System.ComponentModel; -using System.Runtime.InteropServices; -using DeveloperCommandPalette; -using Microsoft.UI.Dispatching; -using Microsoft.UI.Input; using Microsoft.UI.Xaml; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Controls.Primitives; using Microsoft.UI.Xaml.Data; -using Microsoft.UI.Xaml.Input; -using Microsoft.UI.Xaml.Navigation; -using Microsoft.CmdPal.Extensions; -using Microsoft.CmdPal.Extensions.Helpers; namespace WindowsCommandPalette.Views; From 2fb5251f383eadc146b878219b1c6ff6099636a6 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 21:02:58 -0700 Subject: [PATCH 09/26] more clenaup --- .../Views/MainPage.xaml.cs | 3 ++- .../Views/MainViewModel.xaml.cs | 23 +++++++++++-------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs index ef9cb6bb15..76364e72f7 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs @@ -89,10 +89,11 @@ public sealed partial class MainPage : Page { // Load commands from builtins // TODO! I don't understand async enough to get why this has to be ConfigureAwait(false) - foreach (var provider in ViewModel._builtInCommands) + foreach (var provider in ViewModel.BuiltInCommands) { var wrapper = new ActionsProviderWrapper(provider); ViewModel.CommandsProviders.Add(wrapper); + await LoadTopLevelCommandsFromProvider(wrapper).ConfigureAwait(false); } } diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs index cc4a3ad93a..7c5060b151 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs @@ -27,13 +27,16 @@ public sealed class MainViewModel : IDisposable public event TypedEventHandler? QuitRequested { add => quitActionProvider.QuitRequested += value; remove => quitActionProvider.QuitRequested -= value; } internal readonly ObservableCollection CommandsProviders = new(); - internal readonly ObservableCollection> TopLevelCommands = []; - internal readonly List _builtInCommands = []; + public ObservableCollection> TopLevelCommands { get; set; } = []; - internal bool Loaded; - internal bool LoadingExtensions; - internal bool LoadedApps; + public List BuiltInCommands { get; set; } = []; + + public bool Loaded { get; set; } + + public bool LoadingExtensions { get; set; } + + public bool LoadedApps { get; set; } public event TypedEventHandler? HideRequested; @@ -43,11 +46,11 @@ public sealed class MainViewModel : IDisposable internal MainViewModel() { - _builtInCommands.Add(new BookmarksActionProvider()); - _builtInCommands.Add(new CalculatorActionProvider()); - _builtInCommands.Add(new SettingsActionProvider()); - _builtInCommands.Add(quitActionProvider); - _builtInCommands.Add(reloadActionProvider); + BuiltInCommands.Add(new BookmarksActionProvider()); + BuiltInCommands.Add(new CalculatorActionProvider()); + BuiltInCommands.Add(new SettingsActionProvider()); + BuiltInCommands.Add(quitActionProvider); + BuiltInCommands.Add(reloadActionProvider); ResetTopLevel(); From 737495d25122d7d74aba642a33d759c6a601d7d4 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 21:07:31 -0700 Subject: [PATCH 10/26] More cleanup! --- .../FilteredListSection.cs | 2 +- .../Views/ActionsProviderWrapper.xaml.cs | 2 +- .../Views/MainPage.xaml.cs | 6 ++--- .../Views/MainViewModel.xaml.cs | 23 ++++++++++--------- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/FilteredListSection.cs b/src/modules/cmdpal/src/WindowsCommandPalette/FilteredListSection.cs index f38c4dc819..a856d99bbe 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/FilteredListSection.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/FilteredListSection.cs @@ -29,7 +29,7 @@ public sealed class FilteredListSection : ISection, INotifyCollectionChanged public ObservableCollection TopLevelItems { get; set; } // Apps, from the apps built in command. - private IEnumerable AllApps => _mainViewModel.apps.GetItems().First().Items; + private IEnumerable AllApps => _mainViewModel.Apps.GetItems().First().Items; // Results from the last searched text private IEnumerable? lastSearchResults; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs index 1e89b52f63..a71b0ddc70 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs @@ -8,7 +8,7 @@ using Windows.Win32; namespace WindowsCommandPalette.Views; -internal sealed class ActionsProviderWrapper +public sealed class ActionsProviderWrapper { public bool IsExtension => extensionWrapper != null; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs index 76364e72f7..f84371090b 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs @@ -92,7 +92,7 @@ public sealed partial class MainPage : Page foreach (var provider in ViewModel.BuiltInCommands) { var wrapper = new ActionsProviderWrapper(provider); - ViewModel.CommandsProviders.Add(wrapper); + ViewModel.ActionsProvider.Add(wrapper); await LoadTopLevelCommandsFromProvider(wrapper).ConfigureAwait(false); } @@ -139,7 +139,7 @@ public sealed partial class MainPage : Page private void TryAllowForeground(ICommand action) { - foreach (var provider in ViewModel.CommandsProviders) + foreach (var provider in ViewModel.ActionsProvider) { if (!provider.IsExtension) { @@ -272,7 +272,7 @@ public sealed partial class MainPage : Page { await extension.StartExtensionAsync(); var wrapper = new ActionsProviderWrapper(extension); - ViewModel.CommandsProviders.Add(wrapper); + ViewModel.ActionsProvider.Add(wrapper); await LoadTopLevelCommandsFromProvider(wrapper); } catch (Exception ex) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs index 7c5060b151..3ea533ebde 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs @@ -20,13 +20,14 @@ namespace WindowsCommandPalette.Views; public sealed class MainViewModel : IDisposable { - internal readonly AllAppsPage apps = new(); - internal readonly QuitActionProvider quitActionProvider = new(); - internal readonly ReloadExtensionsActionProvider reloadActionProvider = new(); + private readonly QuitActionProvider _quitActionProvider = new(); + private readonly ReloadExtensionsActionProvider _reloadActionProvider = new(); - public event TypedEventHandler? QuitRequested { add => quitActionProvider.QuitRequested += value; remove => quitActionProvider.QuitRequested -= value; } + public AllAppsPage Apps { get; set; } = new(); - internal readonly ObservableCollection CommandsProviders = new(); + public event TypedEventHandler? QuitRequested { add => _quitActionProvider.QuitRequested += value; remove => _quitActionProvider.QuitRequested -= value; } + + public ObservableCollection ActionsProvider { get; set; } = []; public ObservableCollection> TopLevelCommands { get; set; } = []; @@ -49,8 +50,8 @@ public sealed class MainViewModel : IDisposable BuiltInCommands.Add(new BookmarksActionProvider()); BuiltInCommands.Add(new CalculatorActionProvider()); BuiltInCommands.Add(new SettingsActionProvider()); - BuiltInCommands.Add(quitActionProvider); - BuiltInCommands.Add(reloadActionProvider); + BuiltInCommands.Add(_quitActionProvider); + BuiltInCommands.Add(_reloadActionProvider); ResetTopLevel(); @@ -67,7 +68,7 @@ public sealed class MainViewModel : IDisposable public void ResetTopLevel() { TopLevelCommands.Clear(); - TopLevelCommands.Add(new(new ListItem(apps))); + TopLevelCommands.Add(new(new ListItem(Apps))); } internal void RequestHide() @@ -108,7 +109,7 @@ public sealed class MainViewModel : IDisposable return false; }).Select(i => i!); - public IEnumerable AppItems => LoadedApps ? apps.GetItems().First().Items : []; + public IEnumerable AppItems => LoadedApps ? Apps.GetItems().First().Items : []; public IEnumerable> Everything => TopLevelCommands .Concat(AppItems.Select(i => new ExtensionObject(i))) @@ -183,7 +184,7 @@ public sealed class MainViewModel : IDisposable public void Dispose() { - quitActionProvider.Dispose(); - reloadActionProvider.Dispose(); + _quitActionProvider.Dispose(); + _reloadActionProvider.Dispose(); } } From 4c353f24643328b2b6aab5fa62b2d6122e6692b1 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 21:10:33 -0700 Subject: [PATCH 11/26] samll adjustments --- .../RecentsListSection.cs | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/RecentsListSection.cs b/src/modules/cmdpal/src/WindowsCommandPalette/RecentsListSection.cs index d1e44f3556..6bfc2ee452 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/RecentsListSection.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/RecentsListSection.cs @@ -18,26 +18,27 @@ public sealed class RecentsListSection : ListSection, INotifyCollectionChanged private readonly DispatcherQueue _dispatcherQueue = DispatcherQueue.GetForCurrentThread(); private readonly MainViewModel _mainViewModel; - internal ObservableCollection _Items { get; set; } = []; + private readonly ObservableCollection _items = []; private bool loadedApps; public RecentsListSection(MainViewModel viewModel) { - this.Title = "Recent"; - this._mainViewModel = viewModel; + Title = "Recent"; + _mainViewModel = viewModel; var recent = _mainViewModel.RecentActions; Reset(); - _Items.CollectionChanged += Bubble_CollectionChanged; + _items.CollectionChanged += Bubble_CollectionChanged; - _mainViewModel.AppsReady += _mainViewModel_AppsReady; + _mainViewModel.AppsReady += MainViewModel_AppsReady; } - private void _mainViewModel_AppsReady(object sender, object? args) + private void MainViewModel_AppsReady(object sender, object? args) { loadedApps = true; - _mainViewModel.AppsReady -= _mainViewModel_AppsReady; + _mainViewModel.AppsReady -= MainViewModel_AppsReady; + AddApps(); } @@ -49,11 +50,11 @@ public sealed class RecentsListSection : ListSection, INotifyCollectionChanged }); } - public override IListItem[] Items => _Items.ToArray(); + public override IListItem[] Items => _items.ToArray(); internal void Reset() { - _Items.Clear(); + _items.Clear(); if (loadedApps) { AddApps(); @@ -65,7 +66,7 @@ public sealed class RecentsListSection : ListSection, INotifyCollectionChanged var apps = _mainViewModel.Recent; foreach (var app in apps) { - _Items.Add(new MainListItem(app.Unsafe)); // we know these are all local + _items.Add(new MainListItem(app.Unsafe)); // we know these are all local } } } From 411fab236d74c537b4a6385d141ea9e86a73e820 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 21:13:10 -0700 Subject: [PATCH 12/26] few more, onward to 50 --- .../WindowsCommandPalette/MainWindow.xaml.cs | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/MainWindow.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/MainWindow.xaml.cs index cb64edaebf..37c70cff72 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/MainWindow.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/MainWindow.xaml.cs @@ -27,9 +27,9 @@ namespace DeveloperCommandPalette; /// public sealed partial class MainWindow : Window { - private readonly AppWindow m_AppWindow; + private readonly AppWindow _appWindow; - private MainViewModel _mainViewModel { get; init; } + private readonly MainViewModel _mainViewModel; private readonly HWND hwnd; private WNDPROC? origPrc; @@ -75,8 +75,8 @@ public sealed partial class MainWindow : Window public MainWindow() { - this.InitializeComponent(); - this._mainViewModel = MainPage.ViewModel; + InitializeComponent(); + _mainViewModel = MainPage.ViewModel; hwnd = new Windows.Win32.Foundation.HWND(WinRT.Interop.WindowNative.GetWindowHandle(this).ToInt32()); @@ -84,7 +84,7 @@ public sealed partial class MainWindow : Window // Assumes "this" is a XAML Window. In projects that don't use // WinUI 3 1.3 or later, use interop APIs to get the AppWindow. - m_AppWindow = this.AppWindow; + _appWindow = AppWindow; Activated += MainWindow_Activated; AppTitleBar.SizeChanged += AppTitleBar_SizeChanged; @@ -92,10 +92,10 @@ public sealed partial class MainWindow : Window ExtendsContentIntoTitleBar = true; // Hide our titlebar. We'll make the sides draggable later - m_AppWindow.TitleBar.PreferredHeightOption = TitleBarHeightOption.Collapsed; + _appWindow.TitleBar.PreferredHeightOption = TitleBarHeightOption.Collapsed; AppTitleTextBlock.Text = AppInfo.Current.DisplayInfo.DisplayName; - m_AppWindow.Title = AppTitleTextBlock.Text; + _appWindow.Title = AppTitleTextBlock.Text; Application.Current.GetService().SaveSettingAsync("ThisIsAVeryBizarreString", true); @@ -105,7 +105,7 @@ public sealed partial class MainWindow : Window _mainViewModel.QuitRequested += (s, e) => { - this.Close(); + Close(); // Application.Current.Exit(); }; @@ -124,8 +124,8 @@ public sealed partial class MainWindow : Window private void PositionCentered() { - m_AppWindow.Resize(new SizeInt32 { Width = 860, Height = 512 }); - DisplayArea displayArea = DisplayArea.GetFromWindowId(m_AppWindow.Id, DisplayAreaFallback.Nearest); + _appWindow.Resize(new SizeInt32 { Width = 860, Height = 512 }); + DisplayArea displayArea = DisplayArea.GetFromWindowId(_appWindow.Id, DisplayAreaFallback.Nearest); if (displayArea is not null) { var centeredPosition = AppWindow.Position; @@ -138,7 +138,7 @@ public sealed partial class MainWindow : Window private void PositionForStartMenu() { - m_AppWindow.Resize(new Windows.Graphics.SizeInt32(768, 768)); + _appWindow.Resize(new Windows.Graphics.SizeInt32(768, 768)); // now put the window in the right place // @@ -172,22 +172,22 @@ public sealed partial class MainWindow : Window // react appropriately } - Microsoft.UI.Windowing.DisplayArea displayArea = Microsoft.UI.Windowing.DisplayArea.GetFromWindowId(m_AppWindow.Id, Microsoft.UI.Windowing.DisplayAreaFallback.Nearest); + Microsoft.UI.Windowing.DisplayArea displayArea = Microsoft.UI.Windowing.DisplayArea.GetFromWindowId(_appWindow.Id, Microsoft.UI.Windowing.DisplayAreaFallback.Nearest); if (displayArea is not null) { - var centeredPosition = m_AppWindow.Position; + var centeredPosition = _appWindow.Position; if (onLeft) { centeredPosition.X = 16; - centeredPosition.Y = displayArea.WorkArea.Height - m_AppWindow.Size.Height - 16; + centeredPosition.Y = displayArea.WorkArea.Height - _appWindow.Size.Height - 16; } else { - centeredPosition.X = (displayArea.WorkArea.Width - m_AppWindow.Size.Width) / 2; - centeredPosition.Y = displayArea.WorkArea.Height - m_AppWindow.Size.Height - 16; + centeredPosition.X = (displayArea.WorkArea.Width - _appWindow.Size.Width) / 2; + centeredPosition.Y = displayArea.WorkArea.Height - _appWindow.Size.Height - 16; } - m_AppWindow.Move(centeredPosition); + _appWindow.Move(centeredPosition); } } @@ -219,8 +219,8 @@ public sealed partial class MainWindow : Window // Specify the interactive regions of the title bar. var scaleAdjustment = AppTitleBar.XamlRoot.RasterizationScale; - RightPaddingColumn.Width = new GridLength(m_AppWindow.TitleBar.RightInset / scaleAdjustment); - LeftPaddingColumn.Width = new GridLength(m_AppWindow.TitleBar.LeftInset / scaleAdjustment); + RightPaddingColumn.Width = new GridLength(_appWindow.TitleBar.RightInset / scaleAdjustment); + LeftPaddingColumn.Width = new GridLength(_appWindow.TitleBar.LeftInset / scaleAdjustment); //// Get the rectangle around the content GeneralTransform transform = MainPage.TransformToVisual(null); From 3258d5c52c7d1cbf9dfaa58e3d13e0172369da34 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 21:16:24 -0700 Subject: [PATCH 13/26] adjusting form stuff --- .../Views/FormViewModel.xaml.cs | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormViewModel.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormViewModel.xaml.cs index b8f97870ca..fb400d5cd0 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormViewModel.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormViewModel.xaml.cs @@ -14,55 +14,56 @@ using Windows.System; namespace WindowsCommandPalette.Views; -public sealed class FormViewModel : System.ComponentModel.INotifyPropertyChanged +public sealed class FormViewModel : INotifyPropertyChanged { - internal readonly IForm form; - internal AdaptiveCardParseResult? card; - internal RenderedAdaptiveCard? RenderedAdaptiveCard; - internal string TemplateJson = "{}"; - internal string DataJson = "{}"; + private readonly IForm _form; + private AdaptiveCardParseResult? _card; + private RenderedAdaptiveCard? _renderedAdaptiveCard; + private string _templateJson = "{}"; + private string _dataJson = "{}"; public event TypedEventHandler? RequestSubmitForm; public event PropertyChangedEventHandler? PropertyChanged; - public bool ShouldDisplay => RenderedAdaptiveCard?.FrameworkElement != null; + public bool ShouldDisplay => _renderedAdaptiveCard?.FrameworkElement != null; - public FrameworkElement? RenderedChildElement => RenderedAdaptiveCard?.FrameworkElement; + public FrameworkElement? RenderedChildElement => _renderedAdaptiveCard?.FrameworkElement; public FormViewModel(IForm form) { - this.form = form; + this._form = form; } internal void InitialRender() { // var t = new Task(() => { - this.TemplateJson = this.form.TemplateJson(); + this._templateJson = this._form.TemplateJson(); + try { - this.DataJson = this.form.DataJson(); + this._dataJson = this._form.DataJson(); } catch (Exception) { - this.DataJson = "{}"; + this._dataJson = "{}"; } // return true; // }); // t.Start(); // await t; - AdaptiveCardTemplate template = new(TemplateJson); - var cardJson = template.Expand(DataJson); - this.card = AdaptiveCard.FromJsonString(cardJson); + AdaptiveCardTemplate template = new(_templateJson); + var cardJson = template.Expand(_dataJson); + this._card = AdaptiveCard.FromJsonString(cardJson); } internal void RenderToXaml(AdaptiveCardRenderer renderer) { - if (this.card != null) + if (this._card != null) { - RenderedAdaptiveCard = renderer.RenderAdaptiveCard(card.AdaptiveCard); - RenderedAdaptiveCard.Action += RenderedAdaptiveCard_Action; + _renderedAdaptiveCard = renderer.RenderAdaptiveCard(_card.AdaptiveCard); + _renderedAdaptiveCard.Action += RenderedAdaptiveCard_Action; var handlers = this.PropertyChanged; handlers?.Invoke(this, new PropertyChangedEventArgs(nameof(ShouldDisplay))); @@ -86,7 +87,7 @@ public sealed class FormViewModel : System.ComponentModel.INotifyPropertyChanged // Process them as desired var handlers = RequestSubmitForm; - handlers?.Invoke(this, new() { FormData = inputs, Form = form }); + handlers?.Invoke(this, new() { FormData = inputs, Form = _form }); } } } From 283d74511ccfda33bd1a0ff876562a7313f76437 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 21:39:35 -0700 Subject: [PATCH 14/26] more errors --- .../src/WindowsCommandPalette/MainListPage.cs | 6 ++--- .../WindowsCommandPalette/MainListSection.cs | 15 ++++++------ .../Views/ListPageViewModel.xaml.cs | 18 +++++++------- .../Views/MarkdownPage.xaml.cs | 2 +- .../Views/MarkdownPageViewModel.xaml.cs | 24 ++++++++++--------- 5 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/MainListPage.cs b/src/modules/cmdpal/src/WindowsCommandPalette/MainListPage.cs index 122d0f8d16..660b9c145d 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/MainListPage.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/MainListPage.cs @@ -68,7 +68,7 @@ public sealed class MainListPage : DynamicListPage // Eh, it's fine to be unsafe here, we're probably tossing MainListItem if (!_mainViewModel.Recent.Contains(listItem)) { - _mainSection._Items.Add(new MainListItem(listItem.Unsafe)); + _mainSection.TopLevelItems.Add(new MainListItem(listItem.Unsafe)); } _filteredSection.TopLevelItems.Add(new MainListItem(listItem.Unsafe)); @@ -81,11 +81,11 @@ public sealed class MainListPage : DynamicListPage { if (item is ExtensionObject listItem) { - foreach (var mainListItem in _mainSection._Items) + foreach (var mainListItem in _mainSection.TopLevelItems) { if (mainListItem.Item == listItem) { - _mainSection._Items.Remove(mainListItem); + _mainSection.TopLevelItems.Remove(mainListItem); break; } } diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/MainListSection.cs b/src/modules/cmdpal/src/WindowsCommandPalette/MainListSection.cs index 09438b596d..08de9e027b 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/MainListSection.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/MainListSection.cs @@ -21,7 +21,7 @@ public sealed class MainListSection : ISection, INotifyCollectionChanged private readonly DispatcherQueue _dispatcherQueue = DispatcherQueue.GetForCurrentThread(); // Top-level list items, from builtin commands and extensions - internal ObservableCollection _Items { get; set; } + public ObservableCollection TopLevelItems { get; set; } // Things we should enumerate over, depending on the search query. // This is either @@ -29,8 +29,7 @@ public sealed class MainListSection : ISection, INotifyCollectionChanged // * OR one of: // * Just the top-level actions (if there's no query) // * OR the top-level actions AND the apps (if there's a query) - private IEnumerable itemsToEnumerate => - _Items.Where(i => i != null && (!_mainViewModel.IsRecentCommand(i))); + private IEnumerable TopLevelItemsToEnumerate => TopLevelItems.Where(i => i != null && (!_mainViewModel.IsRecentCommand(i))); // Watch out future me! // @@ -41,18 +40,18 @@ public sealed class MainListSection : ISection, INotifyCollectionChanged // // instead run the query once when the action query changes, and store the // results. - public IListItem[] Items => itemsToEnumerate.ToArray(); + public IListItem[] Items => TopLevelItemsToEnumerate.ToArray(); public MainListSection(MainViewModel viewModel) { this._mainViewModel = viewModel; - _Items = new(_mainViewModel.TopLevelCommands.Select(w => w.Unsafe).Where(li => li != null).Select(li => new MainListItem(li!))); - _Items.CollectionChanged += Bubble_CollectionChanged; + TopLevelItems = new(_mainViewModel.TopLevelCommands.Select(w => w.Unsafe).Where(li => li != null).Select(li => new MainListItem(li!))); + TopLevelItems.CollectionChanged += Bubble_CollectionChanged; } internal void UpdateQuery(string query) { - var fallbacks = _Items.Select(i => i?.FallbackHandler).Where(fb => fb != null).Select(fb => fb!); + var fallbacks = TopLevelItems.Select(i => i?.FallbackHandler).Where(fb => fb != null).Select(fb => fb!); foreach (var fb in fallbacks) { fb.UpdateQuery(query); @@ -69,6 +68,6 @@ public sealed class MainListSection : ISection, INotifyCollectionChanged internal void Reset() { - _Items.Clear(); + TopLevelItems.Clear(); } } diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs index 3275f2abb3..8eccf1379c 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs @@ -18,12 +18,12 @@ public sealed class ListPageViewModel : PageViewModel internal IListPage Page => (IListPage)this.pageAction; - private bool isDynamic => Page is IDynamicListPage; + private bool IsDynamic => Page is IDynamicListPage; - private IDynamicListPage? dynamicPage => Page as IDynamicListPage; + private IDynamicListPage? IsDynamicPage => Page as IDynamicListPage; private readonly DispatcherQueue _dispatcherQueue = DispatcherQueue.GetForCurrentThread(); - internal string Query = string.Empty; + private string _query = string.Empty; public ListPageViewModel(IListPage page) : base(page) @@ -42,8 +42,8 @@ public sealed class ListPageViewModel : PageViewModel { try { - return dynamicPage != null ? - dynamicPage.GetItems(Query) : + return IsDynamicPage != null ? + IsDynamicPage.GetItems(_query) : this.Page.GetItems(); } catch (Exception ex) @@ -98,13 +98,13 @@ public sealed class ListPageViewModel : PageViewModel internal async Task> GetFilteredItems(string query) { - if (query == Query) + if (query == _query) { return FilteredItems; } - Query = query; - if (isDynamic) + _query = query; + if (IsDynamic) { await UpdateListItems(); return FilteredItems; @@ -125,7 +125,7 @@ public sealed class ListPageViewModel : PageViewModel Items .SelectMany(section => section) .Select(vm => vm.ListItem.Unsafe), - Query).Select(li => new ListItemViewModel(li)); + _query).Select(li => new ListItemViewModel(li)); var newSection = new SectionInfoList(null, allFilteredItems); return [newSection]; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPage.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPage.xaml.cs index f7bb4c947f..371d218a96 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPage.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPage.xaml.cs @@ -16,7 +16,7 @@ namespace WindowsCommandPalette.Views; public sealed partial class MarkdownPage : Page, INotifyPropertyChanged { - private MarkdownPageViewModel? ViewModel; + public MarkdownPageViewModel? ViewModel { get; set; } #pragma warning disable CS0067 public event PropertyChangedEventHandler? PropertyChanged; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPageViewModel.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPageViewModel.xaml.cs index 4a65dd9a70..dd8f110a56 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPageViewModel.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPageViewModel.xaml.cs @@ -9,29 +9,31 @@ namespace WindowsCommandPalette.Views; public sealed class MarkdownPageViewModel : PageViewModel { - internal IMarkdownPage Page => (IMarkdownPage)this.pageAction; + public IMarkdownPage Page => (IMarkdownPage)pageAction; - internal string[] MarkdownContent = [string.Empty]; + public string[] MarkdownContent { get; set; } = [string.Empty]; - internal string Title => Page.Title; + public string Title => Page.Title; - private IEnumerable contextActions => Page.Commands.Where(i => i is ICommandContextItem).Select(i => (ICommandContextItem)i); + private IEnumerable GetCommandContextItems() + { + return Page.Commands.Where(i => i is ICommandContextItem).Select(i => (ICommandContextItem)i); + } - internal bool HasMoreCommands => contextActions.Any(); + public bool HasMoreCommands => GetCommandContextItems().Any(); - internal IList ContextActions => contextActions.Select(a => new ContextItemViewModel(a)).ToList(); + public IList ContextActions => GetCommandContextItems().Select(a => new ContextItemViewModel(a)).ToList(); public MarkdownPageViewModel(IMarkdownPage page) : base(page) { } - internal async Task InitialRender(MarkdownPage markdownPage) + public async Task InitialRender(MarkdownPage markdownPage) { - var t = new Task(() => { - return this.Page.Bodies(); - }); + var t = new Task(Page.Bodies); + t.Start(); - this.MarkdownContent = await t; + MarkdownContent = await t; } } From 3c3c82298ab6ed763cb03741c5dfdea7ddbe865e Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 21:40:47 -0700 Subject: [PATCH 15/26] getting errors fixed --- .../src/WindowsCommandPalette/ActionViewModel.cs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/ActionViewModel.cs b/src/modules/cmdpal/src/WindowsCommandPalette/ActionViewModel.cs index 34f927a1b7..748b300293 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/ActionViewModel.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/ActionViewModel.cs @@ -7,14 +7,11 @@ using Microsoft.UI.Xaml.Controls; namespace DeveloperCommandPalette; -public sealed class ActionViewModel(ICommand model) +public sealed class ActionViewModel(ICommand cmd) { - public ICommand Command => model; + public ICommand Command => cmd; - internal readonly string Name = model.Name; - internal readonly string Icon = model.Icon.Icon; + internal bool CanInvoke => cmd is IInvokableCommand; - internal bool CanInvoke => model is IInvokableCommand; - - internal IconElement IcoElement => Microsoft.Terminal.UI.IconPathConverter.IconMUX(Icon); + internal IconElement IcoElement => Microsoft.Terminal.UI.IconPathConverter.IconMUX(Command.Icon.Icon); } From cce3124cdd52a42985dfbf5a6245e72dd60f758c Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 21:47:07 -0700 Subject: [PATCH 16/26] more adjustments --- .../ContextItemViewModel.cs | 6 +++--- .../WindowsCommandPalette/PageViewModel.cs | 10 ++++------ .../Views/FormPage.xaml.cs | 9 +++++---- .../Views/FormPageViewModel.xaml.cs | 2 +- .../Views/ListPage.xaml.cs | 20 ++++++++----------- .../Views/ListPageViewModel.xaml.cs | 2 +- .../Views/MarkdownPageViewModel.xaml.cs | 2 +- 7 files changed, 23 insertions(+), 28 deletions(-) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/ContextItemViewModel.cs b/src/modules/cmdpal/src/WindowsCommandPalette/ContextItemViewModel.cs index 23737b85e2..b63bfe85ea 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/ContextItemViewModel.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/ContextItemViewModel.cs @@ -10,7 +10,7 @@ namespace DeveloperCommandPalette; public sealed class ContextItemViewModel : INotifyPropertyChanged { - internal ICommand Command; + public ICommand Command { get; set; } internal string Name => Command.Name; @@ -22,9 +22,9 @@ public sealed class ContextItemViewModel : INotifyPropertyChanged internal IconElement IcoElement => Microsoft.Terminal.UI.IconPathConverter.IconMUX(Icon.Icon); - public ContextItemViewModel(ICommand action) + public ContextItemViewModel(ICommand cmd) { - this.Command = action; + this.Command = cmd; this.Command.PropChanged += Action_PropertyChanged; } diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/PageViewModel.cs b/src/modules/cmdpal/src/WindowsCommandPalette/PageViewModel.cs index 99065255ee..5c6350f324 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/PageViewModel.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/PageViewModel.cs @@ -9,11 +9,9 @@ namespace DeveloperCommandPalette; public class PageViewModel { - private bool nested; + public bool Nested { get; set; } - public bool Nested { get => nested; set => nested = value; } - - protected IPage pageAction { get; } + public IPage PageAction { get; } // public IPage PageAction { get => pageAction; set => pageAction = value; } public ActionViewModel Command { get; } @@ -26,8 +24,8 @@ public class PageViewModel protected PageViewModel(IPage page) { - this.pageAction = page; - this.Command = new(page); + PageAction = page; + Command = new(page); } public void DoAction(ActionViewModel action) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPage.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPage.xaml.cs index 95fdc6feef..d28c1d6ffb 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPage.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPage.xaml.cs @@ -14,8 +14,9 @@ namespace WindowsCommandPalette.Views; public sealed partial class FormPage : Page { - private readonly AdaptiveCardRenderer Renderer = new(); - private FormPageViewModel? ViewModel; + private readonly AdaptiveCardRenderer _renderer = new(); + + public FormPageViewModel? ViewModel { get; set; } public FormPage() { @@ -26,12 +27,12 @@ public sealed partial class FormPage : Page // yep it's this dumb var foreground = settings.GetColorValue(UIColorType.Foreground); var lightTheme = foreground.R < 128; - Renderer.HostConfig = AdaptiveHostConfig.FromJsonString(lightTheme ? LightHostConfig : DarkHostConfig).HostConfig; + _renderer.HostConfig = AdaptiveHostConfig.FromJsonString(lightTheme ? LightHostConfig : DarkHostConfig).HostConfig; } private void AddCardElement(FormViewModel form) { - form.RenderToXaml(Renderer); + form.RenderToXaml(_renderer); } protected override void OnNavigatedTo(NavigationEventArgs e) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs index e86cbb0263..78a952b514 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs @@ -10,7 +10,7 @@ namespace WindowsCommandPalette.Views; public sealed class FormPageViewModel : PageViewModel { - internal IFormPage Page => (IFormPage)this.pageAction; + internal IFormPage Page => (IFormPage)this.PageAction; internal ObservableCollection Forms = new(); diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPage.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPage.xaml.cs index 498de44962..032115ed63 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPage.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPage.xaml.cs @@ -255,20 +255,16 @@ public sealed partial class ListPage : Page, INotifyPropertyChanged } e.Handled = true; - } - else if (ctrlPressed && e.Key == Windows.System.VirtualKey.K) // ctrl+k + } // ctrl+k + else if (ctrlPressed && e.Key == Windows.System.VirtualKey.K && ActionsDropdown.Items.Count > 0) { - // Open the more actions flyout and focus the first item - if (ActionsDropdown.Items.Count > 0) + FlyoutShowOptions options = new FlyoutShowOptions { - FlyoutShowOptions options = new FlyoutShowOptions - { - ShowMode = FlyoutShowMode.Standard, - }; - MoreCommandsButton.Flyout.ShowAt(MoreCommandsButton, options); - ActionsDropdown.SelectedIndex = 0; - ActionsDropdown.Focus(FocusState.Programmatic); - } + ShowMode = FlyoutShowMode.Standard, + }; + MoreCommandsButton.Flyout.ShowAt(MoreCommandsButton, options); + ActionsDropdown.SelectedIndex = 0; + ActionsDropdown.Focus(FocusState.Programmatic); } } diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs index 8eccf1379c..9ac4ec07d7 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs @@ -16,7 +16,7 @@ public sealed class ListPageViewModel : PageViewModel internal readonly ObservableCollection Items = []; internal readonly ObservableCollection FilteredItems = []; - internal IListPage Page => (IListPage)this.pageAction; + internal IListPage Page => (IListPage)this.PageAction; private bool IsDynamic => Page is IDynamicListPage; diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPageViewModel.xaml.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPageViewModel.xaml.cs index dd8f110a56..8730cce05c 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPageViewModel.xaml.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPageViewModel.xaml.cs @@ -9,7 +9,7 @@ namespace WindowsCommandPalette.Views; public sealed class MarkdownPageViewModel : PageViewModel { - public IMarkdownPage Page => (IMarkdownPage)pageAction; + public IMarkdownPage Page => (IMarkdownPage)PageAction; public string[] MarkdownContent { get; set; } = [string.Empty]; From a1220e2a4f02d73cbc75eec79d6b8444c02f870a Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 5 Sep 2024 21:59:18 -0700 Subject: [PATCH 17/26] adjusting --- .../src/WindowsCommandPalette/Builtins/Apps/AppCache.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppCache.cs b/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppCache.cs index 6cbd2e72e2..60ae4b4ade 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppCache.cs +++ b/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppCache.cs @@ -8,7 +8,12 @@ namespace WindowsCommandPalette.BuiltinCommands.AllApps; public sealed class AppCache { - internal IList Win32s = Win32Program.All(); - internal IList UWPs = UWP.All(); + private readonly IList _win32s = Win32Program.All(); + private readonly IList _uwps = UWP.All(); + + public IList Win32s => _win32s; + + public IList UWPs => _uwps; + public static readonly Lazy Instance = new(() => new()); } From af1bfc8170c5f1795370db2f336132669f804e12 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Fri, 6 Sep 2024 08:23:34 -0700 Subject: [PATCH 18/26] simplifying path roots --- .../Microsoft.CmdPal.Extensions.vcxproj | 7 +++--- .../Microsoft.Terminal.UI.vcxproj | 25 ++++++++++--------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions/Microsoft.CmdPal.Extensions.vcxproj b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions/Microsoft.CmdPal.Extensions.vcxproj index c2e85d5963..03236338ac 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions/Microsoft.CmdPal.Extensions.vcxproj +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions/Microsoft.CmdPal.Extensions.vcxproj @@ -1,9 +1,10 @@ - ..\..\..\..\..\packages\Microsoft.WindowsAppSDK.1.5.240428000 - ..\..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.240111.5 - ..\..\..\..\..\packages\Microsoft.Windows.SDK.BuildTools.10.0.22621.2428 + ..\..\..\..\..\ + $(PathToRoot)packages\Microsoft.WindowsAppSDK.1.5.240428000 + $(PathToRoot)packages\Microsoft.Windows.CppWinRT.2.0.240111.5 + $(PathToRoot)packages\Microsoft.Windows.SDK.BuildTools.10.0.22621.2428 diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj b/src/modules/cmdpal/src/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj index 9717bcc55b..7b9bdf6662 100644 --- a/src/modules/cmdpal/src/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj +++ b/src/modules/cmdpal/src/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj @@ -1,8 +1,12 @@ - - - + + ..\..\..\..\..\ + $(PathToRoot)packages\Microsoft.WindowsAppSDK.1.5.240428000 + $(PathToRoot)packages\Microsoft.Windows.CppWinRT.2.0.240111.5 + + + true true @@ -182,22 +186,19 @@ - - + + - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - + + + + - - From 6c8f1bf8bafb0e8c0c6986492a2f2aaee27f03fc Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Fri, 6 Sep 2024 10:46:58 -0700 Subject: [PATCH 19/26] Moving to root cmdpal (#46) should be unified root now for most things --- .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin .../HackerNewsExtension/Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin .../HackerNewsExtension/CommentAction.cs | 0 .../HackerNewsActionsProvider.cs | 0 .../HackerNewsExtension.csproj | 0 .../HackerNewsExtension/HackerNewsPage.cs | 0 .../HackerNewsExtension/LinkAction.cs | 0 .../HackerNewsExtension/NewsPost.cs | 0 .../HackerNewsExtension/Package.appxmanifest | 0 .../HackerNewsExtension/Program.cs | 0 .../HackerNewsExtension/SampleExtension.cs | 0 .../HackerNewsExtension/app.manifest | 0 .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin .../MastodonExtension/Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin .../MastodonExtension.csproj | 0 .../MastodonExtensionPage.cs | 0 .../MastodonExtension/Package.appxmanifest | 0 .../MastodonExtension/Program.cs | 0 .../MastodonExtension/SampleExtension.cs | 0 .../MastodonExtension/app.manifest | 0 .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin .../Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin .../MediaActionsProvider.cs | 0 .../MediaControlsExtension.csproj | 0 .../MediaControlsExtension/MediaListItem.cs | 0 .../Package.appxmanifest | 0 .../PrevNextTrackAction.cs | 0 .../MediaControlsExtension/Program.cs | 0 .../MediaControlsExtension/SampleExtension.cs | 0 .../TogglePlayMediaAction.cs | 0 .../MediaControlsExtension/app.manifest | 0 .../AddBookmarkForm.cs | 0 .../AddBookmarkPage.cs | 0 .../BookmarkData.cs | 0 .../BookmarkDataContext.cs | 0 .../BookmarkPlaceholderForm.cs | 0 .../BookmarkPlaceholderPage.cs | 0 .../Bookmarks.cs | 0 .../BookmarksActionProvider.cs | 0 .../Microsoft.CmdPal.Ext.Bookmarks.csproj | 4 +-- .../OpenInTerminalAction.cs | 0 .../SourceGenerationContext.cs | 0 .../UrlAction.cs | 0 .../CalculatorAction.cs | 0 .../CalculatorActionProvider.cs | 0 .../CalculatorTopLevelListItem.cs | 0 .../Microsoft.CmdPal.Ext.Calc.csproj | 9 +++++++ .../Microsoft.CmdPal.Ext.Settings.csproj | 9 +++++++ .../SettingsActionProvider.cs | 0 .../SettingsForm.cs | 0 .../SettingsPage.cs | 0 .../{extensions => Exts}/NewExtension.ps1 | 0 .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin .../Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin .../Package.appxmanifest | 0 .../ProcessMonitorExtension/ProcessItem.cs | 0 .../ProcessListPage.cs | 0 .../ProcessMonitorActionProvider.cs | 0 .../ProcessMonitorExtension.csproj | 0 .../ProcessMonitorExtension/Program.cs | 0 .../SampleExtension.cs | 0 .../SwitchToProcess.cs | 0 .../TerminateProcess.cs | 0 .../ProcessMonitorExtension/app.manifest | 0 .../{extensions => Exts}/SampleExtension.sln | 0 .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin .../SpongebotExtension/Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin .../SpongebotExtension/CopyTextAction.cs | 0 .../SpongebotExtension/Package.appxmanifest | 0 .../SpongebotExtension/Program.cs | 0 .../SpongebotExtension/SampleExtension.cs | 0 .../SpongebotExtension/SpongeSettingsForm.cs | 0 .../SpongebotCommandsProvider.cs | 0 .../SpongebotExtension.csproj | 0 .../SpongebotExtension/SpongebotPage.cs | 0 .../SpongebotSettingsPage.cs | 0 .../SpongebotExtension/app.manifest | 0 .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin .../TemplateExtension/Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin .../TemplateExtension/Package.appxmanifest | 0 .../TemplateExtension/Program.cs | 0 .../TemplateExtension/SampleExtension.cs | 0 .../TemplateExtension.csproj | 0 .../TemplateExtensionPage.cs | 0 .../TemplateExtension/app.manifest | 0 .../Contracts/IFileService.cs | 0 .../Contracts/ILocalSettingsService.cs | 0 .../Extensions/ApplicationExtensions.cs | 0 .../Extensions/IHostExtensions.cs | 0 .../Microsoft.CmdPal.Common/Helpers/Json.cs | 0 .../Helpers/RuntimeHelper.cs | 0 .../Microsoft.CmdPal.Common.csproj | 4 +-- .../Models/LocalSettingsOptions.cs | 0 .../Microsoft.CmdPal.Common/NativeMethods.txt | 0 .../Services/FileService.cs | 0 .../Microsoft.CmdPal.Common/Services/IApp.cs | 0 .../Services/IExtensionService.cs | 0 .../Services/IExtensionWrapper.cs | 0 .../Services/LocalSettingsService.cs | 0 .../Microsoft.Terminal.UI/Converters.cpp | 0 .../Microsoft.Terminal.UI/Converters.h | 0 .../Microsoft.Terminal.UI/Converters.idl | 0 .../IDirectKeyListener.idl | 0 .../IconPathConverter.cpp | 0 .../Microsoft.Terminal.UI/IconPathConverter.h | 0 .../IconPathConverter.idl | 0 .../Microsoft.Terminal.UI.def | 0 .../Microsoft.Terminal.UI.vcxproj | 6 ++--- .../Microsoft.Terminal.UI/ResourceString.cpp | 0 .../Microsoft.Terminal.UI/ResourceString.h | 0 .../Microsoft.Terminal.UI/ResourceString.idl | 0 .../{src => }/Microsoft.Terminal.UI/init.cpp | 0 .../Microsoft.Terminal.UI/packages.config | 0 .../{src => }/Microsoft.Terminal.UI/pch.cpp | 0 .../{src => }/Microsoft.Terminal.UI/pch.h | 0 .../Microsoft.Terminal.UI/til_string.h | 0 .../Microsoft.Terminal.UI/version.rc | 0 src/modules/cmdpal/WindowsCommandPalette.sln | 24 +++++++++--------- .../WindowsCommandPalette/ActionViewModel.cs | 0 .../{src => }/WindowsCommandPalette/App.xaml | 0 .../WindowsCommandPalette/App.xaml.cs | 0 .../Assets/LargeTile.scale-100.png | Bin .../Assets/LargeTile.scale-125.png | Bin .../Assets/LargeTile.scale-150.png | Bin .../Assets/LargeTile.scale-200.png | Bin .../Assets/LargeTile.scale-400.png | Bin .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SmallTile.scale-100.png | Bin .../Assets/SmallTile.scale-125.png | Bin .../Assets/SmallTile.scale-150.png | Bin .../Assets/SmallTile.scale-200.png | Bin .../Assets/SmallTile.scale-400.png | Bin .../Assets/SplashScreen.scale-100.png | Bin .../Assets/SplashScreen.scale-125.png | Bin .../Assets/SplashScreen.scale-150.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/SplashScreen.scale-400.png | Bin .../Assets/Square150x150Logo.scale-100.png | Bin .../Assets/Square150x150Logo.scale-125.png | Bin .../Assets/Square150x150Logo.scale-150.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square150x150Logo.scale-400.png | Bin ...go.altform-lightunplated_targetsize-16.png | Bin ...go.altform-lightunplated_targetsize-24.png | Bin ...o.altform-lightunplated_targetsize-256.png | Bin ...go.altform-lightunplated_targetsize-32.png | Bin ...go.altform-lightunplated_targetsize-48.png | Bin ...x44Logo.altform-unplated_targetsize-16.png | Bin ...44Logo.altform-unplated_targetsize-256.png | Bin ...x44Logo.altform-unplated_targetsize-32.png | Bin ...x44Logo.altform-unplated_targetsize-48.png | Bin .../Assets/Square44x44Logo.scale-100.png | Bin .../Assets/Square44x44Logo.scale-125.png | Bin .../Assets/Square44x44Logo.scale-150.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-400.png | Bin .../Assets/Square44x44Logo.targetsize-16.png | Bin .../Assets/Square44x44Logo.targetsize-24.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin .../Assets/Square44x44Logo.targetsize-256.png | Bin .../Assets/Square44x44Logo.targetsize-32.png | Bin .../Assets/Square44x44Logo.targetsize-48.png | Bin .../Assets/StoreLogo.backup.png | Bin .../Assets/StoreLogo.scale-100.png | Bin .../Assets/StoreLogo.scale-125.png | Bin .../Assets/StoreLogo.scale-150.png | Bin .../Assets/StoreLogo.scale-200.png | Bin .../Assets/StoreLogo.scale-400.png | Bin .../Assets/Wide310x150Logo.scale-100.png | Bin .../Assets/Wide310x150Logo.scale-125.png | Bin .../Assets/Wide310x150Logo.scale-150.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin .../Assets/Wide310x150Logo.scale-400.png | Bin .../Builtins/Apps/AllAppsPage.cs | 0 .../Builtins/Apps/AppAction.cs | 0 .../Builtins/Apps/AppCache.cs | 0 .../Builtins/Apps/AppItem.cs | 0 .../Builtins/Apps/AppListItem.cs | 0 .../Builtins/Apps/OpenPathAction.cs | 0 .../Builtins/Apps/Programs/AppxFactory.cs | 0 .../Apps/Programs/AppxPackageHelper.cs | 0 .../Programs/IApplicationActivationManager.cs | 0 .../Builtins/Apps/Programs/IAppxFactory.cs | 0 .../Apps/Programs/IAppxManifestApplication.cs | 0 .../IAppxManifestApplicationsEnumerator.cs | 0 .../Apps/Programs/IAppxManifestProperties.cs | 0 .../Apps/Programs/IAppxManifestReader.cs | 0 .../Builtins/Apps/Programs/IPackage.cs | 0 .../Builtins/Apps/Programs/IPackageManager.cs | 0 .../Builtins/Apps/Programs/IProgram.cs | 0 .../Apps/Programs/IShellLinkHelper.cs | 0 .../Builtins/Apps/Programs/LogoType.cs | 0 .../Builtins/Apps/Programs/Native.cs | 0 .../Apps/Programs/PackageManagerWrapper.cs | 0 .../Builtins/Apps/Programs/PackageWrapper.cs | 0 .../Builtins/Apps/Programs/ProgramSource.cs | 0 .../Builtins/Apps/Programs/ShellLinkHelper.cs | 0 .../Builtins/Apps/Programs/UWP.cs | 0 .../Builtins/Apps/Programs/UWPApplication.cs | 0 .../Builtins/Apps/Programs/Win32Program.cs | 0 .../Builtins/QuitAction/QuitAction.cs | 0 .../Builtins/QuitAction/QuitActionProvider.cs | 0 .../Builtins/ReloadExtensionsAction.cs | 0 .../ReloadExtensionsActionProvider.cs | 0 .../ContextItemViewModel.cs | 0 .../FilteredListSection.cs | 0 .../ListItemViewModel.cs | 0 .../WindowsCommandPalette/MainListItem.cs | 0 .../WindowsCommandPalette/MainListPage.cs | 0 .../WindowsCommandPalette/MainListSection.cs | 0 .../WindowsCommandPalette/MainWindow.xaml | 0 .../WindowsCommandPalette/MainWindow.xaml.cs | 0 .../Microsoft.CmdPal.UI.Poc.csproj | 4 +-- .../Models/ExtensionObject`1.cs | 0 .../Models/ExtensionWrapper.cs | 0 .../WindowsCommandPalette/NativeMethods.txt | 0 .../Package.appxmanifest | 0 .../WindowsCommandPalette/PageViewModel.cs | 0 .../WindowsCommandPalette/Program.cs | 0 .../RecentsListSection.cs | 0 .../Services/ExtensionService.cs | 0 .../WindowsCommandPalette/SubmitFormArgs.cs | 0 .../WindowsCommandPalette/TagViewModel.cs | 0 .../WindowsCommandPalette/Themes/Generic.xaml | 0 .../Views/ActionsProviderWrapper.xaml.cs | 0 .../Views/DetailsControl.xaml | 0 .../Views/DetailsControl.xaml.cs | 0 .../Views/DetailsViewModel.xaml.cs | 0 .../Views/ErrorListItem.xaml.cs | 0 .../WindowsCommandPalette/Views/FormPage.xaml | 0 .../Views/FormPage.xaml.cs | 0 .../Views/FormPageViewModel.xaml.cs | 0 .../Views/FormViewModel.xaml.cs | 0 .../WindowsCommandPalette/Views/ListPage.xaml | 0 .../Views/ListPage.xaml.cs | 0 .../Views/ListPageViewModel.xaml.cs | 0 .../WindowsCommandPalette/Views/MainPage.xaml | 0 .../Views/MainPage.xaml.cs | 0 .../Views/MainViewModel.xaml.cs | 0 .../Views/MarkdownPage.xaml | 0 .../Views/MarkdownPage.xaml.cs | 0 .../Views/MarkdownPageViewModel.xaml.cs | 0 .../Views/NoOpAction.xaml.cs | 0 .../Views/SectionInfoList.xaml.cs | 0 ...tringNotEmptyToVisibilityConverter.xaml.cs | 0 .../WindowsCommandPalette/app.manifest | 0 .../PublishProfiles/win-arm64.pubxml | 18 ------------- .../Properties/PublishProfiles/win-x64.pubxml | 18 ------------- .../Properties/launchSettings.json | 10 -------- .../PublishProfiles/win-arm64.pubxml | 18 ------------- .../Properties/PublishProfiles/win-x64.pubxml | 18 ------------- .../Properties/launchSettings.json | 10 -------- .../PublishProfiles/win-arm64.pubxml | 18 ------------- .../Properties/PublishProfiles/win-x64.pubxml | 18 ------------- .../Properties/launchSettings.json | 10 -------- .../PublishProfiles/win-arm64.pubxml | 18 ------------- .../Properties/PublishProfiles/win-x64.pubxml | 18 ------------- .../Properties/launchSettings.json | 10 -------- .../PublishProfiles/win-arm64.pubxml | 18 ------------- .../Properties/PublishProfiles/win-x64.pubxml | 18 ------------- .../Properties/PublishProfiles/win-x86.pubxml | 19 -------------- .../Properties/launchSettings.json | 10 -------- .../Microsoft.CmdPal.Ext.Calc.csproj | 9 ------- .../Microsoft.CmdPal.Ext.Settings.csproj | 9 ------- .../PublishProfiles/win-arm64.pubxml | 18 ------------- .../Properties/PublishProfiles/win-x64.pubxml | 18 ------------- .../Properties/launchSettings.json | 10 -------- 297 files changed, 39 insertions(+), 334 deletions(-) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/Assets/LockScreenLogo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/Assets/SplashScreen.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/Assets/Square150x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/Assets/Square44x44Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/Assets/StoreLogo.png (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/Assets/Wide310x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/CommentAction.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/HackerNewsActionsProvider.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/HackerNewsExtension.csproj (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/HackerNewsPage.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/LinkAction.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/NewsPost.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/Package.appxmanifest (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/Program.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/SampleExtension.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/HackerNewsExtension/app.manifest (100%) rename src/modules/cmdpal/{extensions => Exts}/MastodonExtension/Assets/LockScreenLogo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MastodonExtension/Assets/SplashScreen.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MastodonExtension/Assets/Square150x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MastodonExtension/Assets/Square44x44Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MastodonExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MastodonExtension/Assets/StoreLogo.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MastodonExtension/Assets/Wide310x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MastodonExtension/MastodonExtension.csproj (100%) rename src/modules/cmdpal/{extensions => Exts}/MastodonExtension/MastodonExtensionPage.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/MastodonExtension/Package.appxmanifest (100%) rename src/modules/cmdpal/{extensions => Exts}/MastodonExtension/Program.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/MastodonExtension/SampleExtension.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/MastodonExtension/app.manifest (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/Assets/LockScreenLogo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/Assets/SplashScreen.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/Assets/Square150x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/Assets/Square44x44Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/Assets/StoreLogo.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/Assets/Wide310x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/MediaActionsProvider.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/MediaControlsExtension.csproj (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/MediaListItem.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/Package.appxmanifest (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/PrevNextTrackAction.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/Program.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/SampleExtension.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/TogglePlayMediaAction.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/MediaControlsExtension/app.manifest (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkForm.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkPage.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkData.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkDataContext.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderForm.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderPage.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Bookmark/Bookmarks.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarksActionProvider.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Bookmark/Microsoft.CmdPal.Ext.Bookmarks.csproj (51%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Bookmark/OpenInTerminalAction.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Bookmark/SourceGenerationContext.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Bookmark/UrlAction.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorAction.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorActionProvider.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorTopLevelListItem.cs (100%) create mode 100644 src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/Microsoft.CmdPal.Ext.Calc.csproj create mode 100644 src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/Microsoft.CmdPal.Ext.Settings.csproj rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsActionProvider.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsForm.cs (100%) rename src/modules/cmdpal/{src => }/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsPage.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/NewExtension.ps1 (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/Assets/LockScreenLogo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/Assets/SplashScreen.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/Assets/Square150x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/Assets/Square44x44Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/Assets/StoreLogo.png (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/Assets/Wide310x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/Package.appxmanifest (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/ProcessItem.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/ProcessListPage.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/ProcessMonitorActionProvider.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/ProcessMonitorExtension.csproj (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/Program.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/SampleExtension.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/SwitchToProcess.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/TerminateProcess.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/ProcessMonitorExtension/app.manifest (100%) rename src/modules/cmdpal/{extensions => Exts}/SampleExtension.sln (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/Assets/LockScreenLogo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/Assets/SplashScreen.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/Assets/Square150x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/Assets/Square44x44Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/Assets/StoreLogo.png (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/Assets/Wide310x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/CopyTextAction.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/Package.appxmanifest (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/Program.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/SampleExtension.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/SpongeSettingsForm.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/SpongebotCommandsProvider.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/SpongebotExtension.csproj (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/SpongebotPage.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/SpongebotSettingsPage.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/SpongebotExtension/app.manifest (100%) rename src/modules/cmdpal/{extensions => Exts}/TemplateExtension/Assets/LockScreenLogo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/TemplateExtension/Assets/SplashScreen.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/TemplateExtension/Assets/Square150x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/TemplateExtension/Assets/Square44x44Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/TemplateExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png (100%) rename src/modules/cmdpal/{extensions => Exts}/TemplateExtension/Assets/StoreLogo.png (100%) rename src/modules/cmdpal/{extensions => Exts}/TemplateExtension/Assets/Wide310x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{extensions => Exts}/TemplateExtension/Package.appxmanifest (100%) rename src/modules/cmdpal/{extensions => Exts}/TemplateExtension/Program.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/TemplateExtension/SampleExtension.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/TemplateExtension/TemplateExtension.csproj (100%) rename src/modules/cmdpal/{extensions => Exts}/TemplateExtension/TemplateExtensionPage.cs (100%) rename src/modules/cmdpal/{extensions => Exts}/TemplateExtension/app.manifest (100%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/Contracts/IFileService.cs (100%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/Contracts/ILocalSettingsService.cs (100%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/Extensions/ApplicationExtensions.cs (100%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/Extensions/IHostExtensions.cs (100%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/Helpers/Json.cs (100%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/Helpers/RuntimeHelper.cs (100%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/Microsoft.CmdPal.Common.csproj (77%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/Models/LocalSettingsOptions.cs (100%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/NativeMethods.txt (100%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/Services/FileService.cs (100%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/Services/IApp.cs (100%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/Services/IExtensionService.cs (100%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/Services/IExtensionWrapper.cs (100%) rename src/modules/cmdpal/{src => }/Microsoft.CmdPal.Common/Services/LocalSettingsService.cs (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/Converters.cpp (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/Converters.h (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/Converters.idl (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/IDirectKeyListener.idl (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/IconPathConverter.cpp (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/IconPathConverter.h (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/IconPathConverter.idl (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/Microsoft.Terminal.UI.def (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj (93%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/ResourceString.cpp (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/ResourceString.h (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/ResourceString.idl (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/init.cpp (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/packages.config (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/pch.cpp (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/pch.h (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/til_string.h (100%) rename src/modules/cmdpal/{src => }/Microsoft.Terminal.UI/version.rc (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/ActionViewModel.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/App.xaml (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/App.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/LargeTile.scale-100.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/LargeTile.scale-125.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/LargeTile.scale-150.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/LargeTile.scale-200.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/LargeTile.scale-400.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/LockScreenLogo.scale-200.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/SmallTile.scale-100.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/SmallTile.scale-125.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/SmallTile.scale-150.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/SmallTile.scale-200.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/SmallTile.scale-400.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/SplashScreen.scale-100.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/SplashScreen.scale-125.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/SplashScreen.scale-150.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/SplashScreen.scale-200.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/SplashScreen.scale-400.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square150x150Logo.scale-100.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square150x150Logo.scale-125.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square150x150Logo.scale-150.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square150x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square150x150Logo.scale-400.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-16.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-256.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-32.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-48.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.scale-100.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.scale-125.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.scale-150.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.scale-200.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.scale-400.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-16.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-24.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-24_altform-unplated.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-256.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-32.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-48.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/StoreLogo.backup.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/StoreLogo.scale-100.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/StoreLogo.scale-125.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/StoreLogo.scale-150.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/StoreLogo.scale-200.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/StoreLogo.scale-400.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Wide310x150Logo.scale-100.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Wide310x150Logo.scale-125.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Wide310x150Logo.scale-150.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Wide310x150Logo.scale-200.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Assets/Wide310x150Logo.scale-400.png (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/AllAppsPage.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/AppAction.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/AppCache.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/AppItem.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/AppListItem.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/OpenPathAction.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/AppxFactory.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/AppxPackageHelper.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/IApplicationActivationManager.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/IAppxFactory.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestApplication.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestApplicationsEnumerator.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestProperties.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestReader.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/IPackage.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/IPackageManager.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/IProgram.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/IShellLinkHelper.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/LogoType.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/Native.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/PackageManagerWrapper.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/PackageWrapper.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/ProgramSource.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/ShellLinkHelper.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/UWP.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/UWPApplication.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/Apps/Programs/Win32Program.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/QuitAction/QuitAction.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/QuitAction/QuitActionProvider.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/ReloadExtensionsAction.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Builtins/ReloadExtensionsActionProvider.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/ContextItemViewModel.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/FilteredListSection.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/ListItemViewModel.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/MainListItem.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/MainListPage.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/MainListSection.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/MainWindow.xaml (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/MainWindow.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Microsoft.CmdPal.UI.Poc.csproj (96%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Models/ExtensionObject`1.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Models/ExtensionWrapper.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/NativeMethods.txt (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Package.appxmanifest (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/PageViewModel.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Program.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/RecentsListSection.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Services/ExtensionService.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/SubmitFormArgs.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/TagViewModel.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Themes/Generic.xaml (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/DetailsControl.xaml (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/DetailsControl.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/DetailsViewModel.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/ErrorListItem.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/FormPage.xaml (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/FormPage.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/FormViewModel.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/ListPage.xaml (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/ListPage.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/MainPage.xaml (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/MainPage.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/MainViewModel.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/MarkdownPage.xaml (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/MarkdownPage.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/MarkdownPageViewModel.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/NoOpAction.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/SectionInfoList.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/Views/StringNotEmptyToVisibilityConverter.xaml.cs (100%) rename src/modules/cmdpal/{src => }/WindowsCommandPalette/app.manifest (100%) delete mode 100644 src/modules/cmdpal/extensions/HackerNewsExtension/Properties/PublishProfiles/win-arm64.pubxml delete mode 100644 src/modules/cmdpal/extensions/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml delete mode 100644 src/modules/cmdpal/extensions/HackerNewsExtension/Properties/launchSettings.json delete mode 100644 src/modules/cmdpal/extensions/MediaControlsExtension/Properties/PublishProfiles/win-arm64.pubxml delete mode 100644 src/modules/cmdpal/extensions/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml delete mode 100644 src/modules/cmdpal/extensions/MediaControlsExtension/Properties/launchSettings.json delete mode 100644 src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-arm64.pubxml delete mode 100644 src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml delete mode 100644 src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/launchSettings.json delete mode 100644 src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-arm64.pubxml delete mode 100644 src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml delete mode 100644 src/modules/cmdpal/extensions/SpongebotExtension/Properties/launchSettings.json delete mode 100644 src/modules/cmdpal/extensions/TemplateExtension/Properties/PublishProfiles/win-arm64.pubxml delete mode 100644 src/modules/cmdpal/extensions/TemplateExtension/Properties/PublishProfiles/win-x64.pubxml delete mode 100644 src/modules/cmdpal/extensions/TemplateExtension/Properties/PublishProfiles/win-x86.pubxml delete mode 100644 src/modules/cmdpal/extensions/TemplateExtension/Properties/launchSettings.json delete mode 100644 src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/Microsoft.CmdPal.Ext.Calc.csproj delete mode 100644 src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/Microsoft.CmdPal.Ext.Settings.csproj delete mode 100644 src/modules/cmdpal/src/WindowsCommandPalette/Properties/PublishProfiles/win-arm64.pubxml delete mode 100644 src/modules/cmdpal/src/WindowsCommandPalette/Properties/PublishProfiles/win-x64.pubxml delete mode 100644 src/modules/cmdpal/src/WindowsCommandPalette/Properties/launchSettings.json diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Assets/LockScreenLogo.scale-200.png b/src/modules/cmdpal/Exts/HackerNewsExtension/Assets/LockScreenLogo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/Assets/LockScreenLogo.scale-200.png rename to src/modules/cmdpal/Exts/HackerNewsExtension/Assets/LockScreenLogo.scale-200.png diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Assets/SplashScreen.scale-200.png b/src/modules/cmdpal/Exts/HackerNewsExtension/Assets/SplashScreen.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/Assets/SplashScreen.scale-200.png rename to src/modules/cmdpal/Exts/HackerNewsExtension/Assets/SplashScreen.scale-200.png diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Assets/Square150x150Logo.scale-200.png b/src/modules/cmdpal/Exts/HackerNewsExtension/Assets/Square150x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/Assets/Square150x150Logo.scale-200.png rename to src/modules/cmdpal/Exts/HackerNewsExtension/Assets/Square150x150Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Assets/Square44x44Logo.scale-200.png b/src/modules/cmdpal/Exts/HackerNewsExtension/Assets/Square44x44Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/Assets/Square44x44Logo.scale-200.png rename to src/modules/cmdpal/Exts/HackerNewsExtension/Assets/Square44x44Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/src/modules/cmdpal/Exts/HackerNewsExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png rename to src/modules/cmdpal/Exts/HackerNewsExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Assets/StoreLogo.png b/src/modules/cmdpal/Exts/HackerNewsExtension/Assets/StoreLogo.png similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/Assets/StoreLogo.png rename to src/modules/cmdpal/Exts/HackerNewsExtension/Assets/StoreLogo.png diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Assets/Wide310x150Logo.scale-200.png b/src/modules/cmdpal/Exts/HackerNewsExtension/Assets/Wide310x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/Assets/Wide310x150Logo.scale-200.png rename to src/modules/cmdpal/Exts/HackerNewsExtension/Assets/Wide310x150Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/CommentAction.cs b/src/modules/cmdpal/Exts/HackerNewsExtension/CommentAction.cs similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/CommentAction.cs rename to src/modules/cmdpal/Exts/HackerNewsExtension/CommentAction.cs diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/HackerNewsActionsProvider.cs b/src/modules/cmdpal/Exts/HackerNewsExtension/HackerNewsActionsProvider.cs similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/HackerNewsActionsProvider.cs rename to src/modules/cmdpal/Exts/HackerNewsExtension/HackerNewsActionsProvider.cs diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/HackerNewsExtension.csproj b/src/modules/cmdpal/Exts/HackerNewsExtension/HackerNewsExtension.csproj similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/HackerNewsExtension.csproj rename to src/modules/cmdpal/Exts/HackerNewsExtension/HackerNewsExtension.csproj diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/HackerNewsPage.cs b/src/modules/cmdpal/Exts/HackerNewsExtension/HackerNewsPage.cs similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/HackerNewsPage.cs rename to src/modules/cmdpal/Exts/HackerNewsExtension/HackerNewsPage.cs diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/LinkAction.cs b/src/modules/cmdpal/Exts/HackerNewsExtension/LinkAction.cs similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/LinkAction.cs rename to src/modules/cmdpal/Exts/HackerNewsExtension/LinkAction.cs diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/NewsPost.cs b/src/modules/cmdpal/Exts/HackerNewsExtension/NewsPost.cs similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/NewsPost.cs rename to src/modules/cmdpal/Exts/HackerNewsExtension/NewsPost.cs diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Package.appxmanifest b/src/modules/cmdpal/Exts/HackerNewsExtension/Package.appxmanifest similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/Package.appxmanifest rename to src/modules/cmdpal/Exts/HackerNewsExtension/Package.appxmanifest diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Program.cs b/src/modules/cmdpal/Exts/HackerNewsExtension/Program.cs similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/Program.cs rename to src/modules/cmdpal/Exts/HackerNewsExtension/Program.cs diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/SampleExtension.cs b/src/modules/cmdpal/Exts/HackerNewsExtension/SampleExtension.cs similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/SampleExtension.cs rename to src/modules/cmdpal/Exts/HackerNewsExtension/SampleExtension.cs diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/app.manifest b/src/modules/cmdpal/Exts/HackerNewsExtension/app.manifest similarity index 100% rename from src/modules/cmdpal/extensions/HackerNewsExtension/app.manifest rename to src/modules/cmdpal/Exts/HackerNewsExtension/app.manifest diff --git a/src/modules/cmdpal/extensions/MastodonExtension/Assets/LockScreenLogo.scale-200.png b/src/modules/cmdpal/Exts/MastodonExtension/Assets/LockScreenLogo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/MastodonExtension/Assets/LockScreenLogo.scale-200.png rename to src/modules/cmdpal/Exts/MastodonExtension/Assets/LockScreenLogo.scale-200.png diff --git a/src/modules/cmdpal/extensions/MastodonExtension/Assets/SplashScreen.scale-200.png b/src/modules/cmdpal/Exts/MastodonExtension/Assets/SplashScreen.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/MastodonExtension/Assets/SplashScreen.scale-200.png rename to src/modules/cmdpal/Exts/MastodonExtension/Assets/SplashScreen.scale-200.png diff --git a/src/modules/cmdpal/extensions/MastodonExtension/Assets/Square150x150Logo.scale-200.png b/src/modules/cmdpal/Exts/MastodonExtension/Assets/Square150x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/MastodonExtension/Assets/Square150x150Logo.scale-200.png rename to src/modules/cmdpal/Exts/MastodonExtension/Assets/Square150x150Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/MastodonExtension/Assets/Square44x44Logo.scale-200.png b/src/modules/cmdpal/Exts/MastodonExtension/Assets/Square44x44Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/MastodonExtension/Assets/Square44x44Logo.scale-200.png rename to src/modules/cmdpal/Exts/MastodonExtension/Assets/Square44x44Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/MastodonExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/src/modules/cmdpal/Exts/MastodonExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png similarity index 100% rename from src/modules/cmdpal/extensions/MastodonExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png rename to src/modules/cmdpal/Exts/MastodonExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png diff --git a/src/modules/cmdpal/extensions/MastodonExtension/Assets/StoreLogo.png b/src/modules/cmdpal/Exts/MastodonExtension/Assets/StoreLogo.png similarity index 100% rename from src/modules/cmdpal/extensions/MastodonExtension/Assets/StoreLogo.png rename to src/modules/cmdpal/Exts/MastodonExtension/Assets/StoreLogo.png diff --git a/src/modules/cmdpal/extensions/MastodonExtension/Assets/Wide310x150Logo.scale-200.png b/src/modules/cmdpal/Exts/MastodonExtension/Assets/Wide310x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/MastodonExtension/Assets/Wide310x150Logo.scale-200.png rename to src/modules/cmdpal/Exts/MastodonExtension/Assets/Wide310x150Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/MastodonExtension/MastodonExtension.csproj b/src/modules/cmdpal/Exts/MastodonExtension/MastodonExtension.csproj similarity index 100% rename from src/modules/cmdpal/extensions/MastodonExtension/MastodonExtension.csproj rename to src/modules/cmdpal/Exts/MastodonExtension/MastodonExtension.csproj diff --git a/src/modules/cmdpal/extensions/MastodonExtension/MastodonExtensionPage.cs b/src/modules/cmdpal/Exts/MastodonExtension/MastodonExtensionPage.cs similarity index 100% rename from src/modules/cmdpal/extensions/MastodonExtension/MastodonExtensionPage.cs rename to src/modules/cmdpal/Exts/MastodonExtension/MastodonExtensionPage.cs diff --git a/src/modules/cmdpal/extensions/MastodonExtension/Package.appxmanifest b/src/modules/cmdpal/Exts/MastodonExtension/Package.appxmanifest similarity index 100% rename from src/modules/cmdpal/extensions/MastodonExtension/Package.appxmanifest rename to src/modules/cmdpal/Exts/MastodonExtension/Package.appxmanifest diff --git a/src/modules/cmdpal/extensions/MastodonExtension/Program.cs b/src/modules/cmdpal/Exts/MastodonExtension/Program.cs similarity index 100% rename from src/modules/cmdpal/extensions/MastodonExtension/Program.cs rename to src/modules/cmdpal/Exts/MastodonExtension/Program.cs diff --git a/src/modules/cmdpal/extensions/MastodonExtension/SampleExtension.cs b/src/modules/cmdpal/Exts/MastodonExtension/SampleExtension.cs similarity index 100% rename from src/modules/cmdpal/extensions/MastodonExtension/SampleExtension.cs rename to src/modules/cmdpal/Exts/MastodonExtension/SampleExtension.cs diff --git a/src/modules/cmdpal/extensions/MastodonExtension/app.manifest b/src/modules/cmdpal/Exts/MastodonExtension/app.manifest similarity index 100% rename from src/modules/cmdpal/extensions/MastodonExtension/app.manifest rename to src/modules/cmdpal/Exts/MastodonExtension/app.manifest diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Assets/LockScreenLogo.scale-200.png b/src/modules/cmdpal/Exts/MediaControlsExtension/Assets/LockScreenLogo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/Assets/LockScreenLogo.scale-200.png rename to src/modules/cmdpal/Exts/MediaControlsExtension/Assets/LockScreenLogo.scale-200.png diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Assets/SplashScreen.scale-200.png b/src/modules/cmdpal/Exts/MediaControlsExtension/Assets/SplashScreen.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/Assets/SplashScreen.scale-200.png rename to src/modules/cmdpal/Exts/MediaControlsExtension/Assets/SplashScreen.scale-200.png diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Assets/Square150x150Logo.scale-200.png b/src/modules/cmdpal/Exts/MediaControlsExtension/Assets/Square150x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/Assets/Square150x150Logo.scale-200.png rename to src/modules/cmdpal/Exts/MediaControlsExtension/Assets/Square150x150Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Assets/Square44x44Logo.scale-200.png b/src/modules/cmdpal/Exts/MediaControlsExtension/Assets/Square44x44Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/Assets/Square44x44Logo.scale-200.png rename to src/modules/cmdpal/Exts/MediaControlsExtension/Assets/Square44x44Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/src/modules/cmdpal/Exts/MediaControlsExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png rename to src/modules/cmdpal/Exts/MediaControlsExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Assets/StoreLogo.png b/src/modules/cmdpal/Exts/MediaControlsExtension/Assets/StoreLogo.png similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/Assets/StoreLogo.png rename to src/modules/cmdpal/Exts/MediaControlsExtension/Assets/StoreLogo.png diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Assets/Wide310x150Logo.scale-200.png b/src/modules/cmdpal/Exts/MediaControlsExtension/Assets/Wide310x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/Assets/Wide310x150Logo.scale-200.png rename to src/modules/cmdpal/Exts/MediaControlsExtension/Assets/Wide310x150Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/MediaActionsProvider.cs b/src/modules/cmdpal/Exts/MediaControlsExtension/MediaActionsProvider.cs similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/MediaActionsProvider.cs rename to src/modules/cmdpal/Exts/MediaControlsExtension/MediaActionsProvider.cs diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/MediaControlsExtension.csproj b/src/modules/cmdpal/Exts/MediaControlsExtension/MediaControlsExtension.csproj similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/MediaControlsExtension.csproj rename to src/modules/cmdpal/Exts/MediaControlsExtension/MediaControlsExtension.csproj diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/MediaListItem.cs b/src/modules/cmdpal/Exts/MediaControlsExtension/MediaListItem.cs similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/MediaListItem.cs rename to src/modules/cmdpal/Exts/MediaControlsExtension/MediaListItem.cs diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Package.appxmanifest b/src/modules/cmdpal/Exts/MediaControlsExtension/Package.appxmanifest similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/Package.appxmanifest rename to src/modules/cmdpal/Exts/MediaControlsExtension/Package.appxmanifest diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/PrevNextTrackAction.cs b/src/modules/cmdpal/Exts/MediaControlsExtension/PrevNextTrackAction.cs similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/PrevNextTrackAction.cs rename to src/modules/cmdpal/Exts/MediaControlsExtension/PrevNextTrackAction.cs diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Program.cs b/src/modules/cmdpal/Exts/MediaControlsExtension/Program.cs similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/Program.cs rename to src/modules/cmdpal/Exts/MediaControlsExtension/Program.cs diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/SampleExtension.cs b/src/modules/cmdpal/Exts/MediaControlsExtension/SampleExtension.cs similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/SampleExtension.cs rename to src/modules/cmdpal/Exts/MediaControlsExtension/SampleExtension.cs diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/TogglePlayMediaAction.cs b/src/modules/cmdpal/Exts/MediaControlsExtension/TogglePlayMediaAction.cs similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/TogglePlayMediaAction.cs rename to src/modules/cmdpal/Exts/MediaControlsExtension/TogglePlayMediaAction.cs diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/app.manifest b/src/modules/cmdpal/Exts/MediaControlsExtension/app.manifest similarity index 100% rename from src/modules/cmdpal/extensions/MediaControlsExtension/app.manifest rename to src/modules/cmdpal/Exts/MediaControlsExtension/app.manifest diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkForm.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkForm.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkForm.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkForm.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkPage.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkPage.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkPage.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkPage.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkData.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkData.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkData.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkData.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkDataContext.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkDataContext.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkDataContext.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkDataContext.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderForm.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderForm.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderForm.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderForm.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderPage.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderPage.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderPage.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderPage.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/Bookmarks.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/Bookmarks.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/Bookmarks.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/Bookmarks.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarksActionProvider.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarksActionProvider.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarksActionProvider.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarksActionProvider.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/Microsoft.CmdPal.Ext.Bookmarks.csproj b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/Microsoft.CmdPal.Ext.Bookmarks.csproj similarity index 51% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/Microsoft.CmdPal.Ext.Bookmarks.csproj rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/Microsoft.CmdPal.Ext.Bookmarks.csproj index 4ed0f6179e..c044209825 100644 --- a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/Microsoft.CmdPal.Ext.Bookmarks.csproj +++ b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/Microsoft.CmdPal.Ext.Bookmarks.csproj @@ -1,10 +1,10 @@  - + Microsoft.CmdPal.Ext.Bookmarks enable - + diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/OpenInTerminalAction.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/OpenInTerminalAction.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/OpenInTerminalAction.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/OpenInTerminalAction.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/SourceGenerationContext.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/SourceGenerationContext.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/SourceGenerationContext.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/SourceGenerationContext.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/UrlAction.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/UrlAction.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Bookmark/UrlAction.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/UrlAction.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorAction.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorAction.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorAction.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorAction.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorActionProvider.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorActionProvider.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorActionProvider.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorActionProvider.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorTopLevelListItem.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorTopLevelListItem.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorTopLevelListItem.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorTopLevelListItem.cs diff --git a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/Microsoft.CmdPal.Ext.Calc.csproj b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/Microsoft.CmdPal.Ext.Calc.csproj new file mode 100644 index 0000000000..2d3cba680e --- /dev/null +++ b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/Microsoft.CmdPal.Ext.Calc.csproj @@ -0,0 +1,9 @@ + + + + Microsoft.CmdPal.Ext.Calc + + + + + diff --git a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/Microsoft.CmdPal.Ext.Settings.csproj b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/Microsoft.CmdPal.Ext.Settings.csproj new file mode 100644 index 0000000000..8784bd413d --- /dev/null +++ b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/Microsoft.CmdPal.Ext.Settings.csproj @@ -0,0 +1,9 @@ + + + + Microsoft.CmdPal.Ext.Settings + + + + + diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsActionProvider.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsActionProvider.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsActionProvider.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsActionProvider.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsForm.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsForm.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsForm.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsForm.cs diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsPage.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsPage.cs similarity index 100% rename from src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsPage.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsPage.cs diff --git a/src/modules/cmdpal/extensions/NewExtension.ps1 b/src/modules/cmdpal/Exts/NewExtension.ps1 similarity index 100% rename from src/modules/cmdpal/extensions/NewExtension.ps1 rename to src/modules/cmdpal/Exts/NewExtension.ps1 diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/LockScreenLogo.scale-200.png b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/LockScreenLogo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/LockScreenLogo.scale-200.png rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/LockScreenLogo.scale-200.png diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/SplashScreen.scale-200.png b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/SplashScreen.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/SplashScreen.scale-200.png rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/SplashScreen.scale-200.png diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/Square150x150Logo.scale-200.png b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/Square150x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/Square150x150Logo.scale-200.png rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/Square150x150Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/Square44x44Logo.scale-200.png b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/Square44x44Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/Square44x44Logo.scale-200.png rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/Square44x44Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/StoreLogo.png b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/StoreLogo.png similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/StoreLogo.png rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/StoreLogo.png diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/Wide310x150Logo.scale-200.png b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/Wide310x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/Assets/Wide310x150Logo.scale-200.png rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/Assets/Wide310x150Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Package.appxmanifest b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Package.appxmanifest similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/Package.appxmanifest rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/Package.appxmanifest diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/ProcessItem.cs b/src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessItem.cs similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/ProcessItem.cs rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessItem.cs diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/ProcessListPage.cs b/src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessListPage.cs similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/ProcessListPage.cs rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessListPage.cs diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/ProcessMonitorActionProvider.cs b/src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessMonitorActionProvider.cs similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/ProcessMonitorActionProvider.cs rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessMonitorActionProvider.cs diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/ProcessMonitorExtension.csproj b/src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessMonitorExtension.csproj similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/ProcessMonitorExtension.csproj rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessMonitorExtension.csproj diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Program.cs b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Program.cs similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/Program.cs rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/Program.cs diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/SampleExtension.cs b/src/modules/cmdpal/Exts/ProcessMonitorExtension/SampleExtension.cs similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/SampleExtension.cs rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/SampleExtension.cs diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/SwitchToProcess.cs b/src/modules/cmdpal/Exts/ProcessMonitorExtension/SwitchToProcess.cs similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/SwitchToProcess.cs rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/SwitchToProcess.cs diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/TerminateProcess.cs b/src/modules/cmdpal/Exts/ProcessMonitorExtension/TerminateProcess.cs similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/TerminateProcess.cs rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/TerminateProcess.cs diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/app.manifest b/src/modules/cmdpal/Exts/ProcessMonitorExtension/app.manifest similarity index 100% rename from src/modules/cmdpal/extensions/ProcessMonitorExtension/app.manifest rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/app.manifest diff --git a/src/modules/cmdpal/extensions/SampleExtension.sln b/src/modules/cmdpal/Exts/SampleExtension.sln similarity index 100% rename from src/modules/cmdpal/extensions/SampleExtension.sln rename to src/modules/cmdpal/Exts/SampleExtension.sln diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Assets/LockScreenLogo.scale-200.png b/src/modules/cmdpal/Exts/SpongebotExtension/Assets/LockScreenLogo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/Assets/LockScreenLogo.scale-200.png rename to src/modules/cmdpal/Exts/SpongebotExtension/Assets/LockScreenLogo.scale-200.png diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Assets/SplashScreen.scale-200.png b/src/modules/cmdpal/Exts/SpongebotExtension/Assets/SplashScreen.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/Assets/SplashScreen.scale-200.png rename to src/modules/cmdpal/Exts/SpongebotExtension/Assets/SplashScreen.scale-200.png diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Assets/Square150x150Logo.scale-200.png b/src/modules/cmdpal/Exts/SpongebotExtension/Assets/Square150x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/Assets/Square150x150Logo.scale-200.png rename to src/modules/cmdpal/Exts/SpongebotExtension/Assets/Square150x150Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Assets/Square44x44Logo.scale-200.png b/src/modules/cmdpal/Exts/SpongebotExtension/Assets/Square44x44Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/Assets/Square44x44Logo.scale-200.png rename to src/modules/cmdpal/Exts/SpongebotExtension/Assets/Square44x44Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/src/modules/cmdpal/Exts/SpongebotExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png rename to src/modules/cmdpal/Exts/SpongebotExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Assets/StoreLogo.png b/src/modules/cmdpal/Exts/SpongebotExtension/Assets/StoreLogo.png similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/Assets/StoreLogo.png rename to src/modules/cmdpal/Exts/SpongebotExtension/Assets/StoreLogo.png diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Assets/Wide310x150Logo.scale-200.png b/src/modules/cmdpal/Exts/SpongebotExtension/Assets/Wide310x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/Assets/Wide310x150Logo.scale-200.png rename to src/modules/cmdpal/Exts/SpongebotExtension/Assets/Wide310x150Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/CopyTextAction.cs b/src/modules/cmdpal/Exts/SpongebotExtension/CopyTextAction.cs similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/CopyTextAction.cs rename to src/modules/cmdpal/Exts/SpongebotExtension/CopyTextAction.cs diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Package.appxmanifest b/src/modules/cmdpal/Exts/SpongebotExtension/Package.appxmanifest similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/Package.appxmanifest rename to src/modules/cmdpal/Exts/SpongebotExtension/Package.appxmanifest diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Program.cs b/src/modules/cmdpal/Exts/SpongebotExtension/Program.cs similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/Program.cs rename to src/modules/cmdpal/Exts/SpongebotExtension/Program.cs diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/SampleExtension.cs b/src/modules/cmdpal/Exts/SpongebotExtension/SampleExtension.cs similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/SampleExtension.cs rename to src/modules/cmdpal/Exts/SpongebotExtension/SampleExtension.cs diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/SpongeSettingsForm.cs b/src/modules/cmdpal/Exts/SpongebotExtension/SpongeSettingsForm.cs similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/SpongeSettingsForm.cs rename to src/modules/cmdpal/Exts/SpongebotExtension/SpongeSettingsForm.cs diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/SpongebotCommandsProvider.cs b/src/modules/cmdpal/Exts/SpongebotExtension/SpongebotCommandsProvider.cs similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/SpongebotCommandsProvider.cs rename to src/modules/cmdpal/Exts/SpongebotExtension/SpongebotCommandsProvider.cs diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/SpongebotExtension.csproj b/src/modules/cmdpal/Exts/SpongebotExtension/SpongebotExtension.csproj similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/SpongebotExtension.csproj rename to src/modules/cmdpal/Exts/SpongebotExtension/SpongebotExtension.csproj diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/SpongebotPage.cs b/src/modules/cmdpal/Exts/SpongebotExtension/SpongebotPage.cs similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/SpongebotPage.cs rename to src/modules/cmdpal/Exts/SpongebotExtension/SpongebotPage.cs diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/SpongebotSettingsPage.cs b/src/modules/cmdpal/Exts/SpongebotExtension/SpongebotSettingsPage.cs similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/SpongebotSettingsPage.cs rename to src/modules/cmdpal/Exts/SpongebotExtension/SpongebotSettingsPage.cs diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/app.manifest b/src/modules/cmdpal/Exts/SpongebotExtension/app.manifest similarity index 100% rename from src/modules/cmdpal/extensions/SpongebotExtension/app.manifest rename to src/modules/cmdpal/Exts/SpongebotExtension/app.manifest diff --git a/src/modules/cmdpal/extensions/TemplateExtension/Assets/LockScreenLogo.scale-200.png b/src/modules/cmdpal/Exts/TemplateExtension/Assets/LockScreenLogo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/TemplateExtension/Assets/LockScreenLogo.scale-200.png rename to src/modules/cmdpal/Exts/TemplateExtension/Assets/LockScreenLogo.scale-200.png diff --git a/src/modules/cmdpal/extensions/TemplateExtension/Assets/SplashScreen.scale-200.png b/src/modules/cmdpal/Exts/TemplateExtension/Assets/SplashScreen.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/TemplateExtension/Assets/SplashScreen.scale-200.png rename to src/modules/cmdpal/Exts/TemplateExtension/Assets/SplashScreen.scale-200.png diff --git a/src/modules/cmdpal/extensions/TemplateExtension/Assets/Square150x150Logo.scale-200.png b/src/modules/cmdpal/Exts/TemplateExtension/Assets/Square150x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/TemplateExtension/Assets/Square150x150Logo.scale-200.png rename to src/modules/cmdpal/Exts/TemplateExtension/Assets/Square150x150Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/TemplateExtension/Assets/Square44x44Logo.scale-200.png b/src/modules/cmdpal/Exts/TemplateExtension/Assets/Square44x44Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/TemplateExtension/Assets/Square44x44Logo.scale-200.png rename to src/modules/cmdpal/Exts/TemplateExtension/Assets/Square44x44Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/TemplateExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/src/modules/cmdpal/Exts/TemplateExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png similarity index 100% rename from src/modules/cmdpal/extensions/TemplateExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png rename to src/modules/cmdpal/Exts/TemplateExtension/Assets/Square44x44Logo.targetsize-24_altform-unplated.png diff --git a/src/modules/cmdpal/extensions/TemplateExtension/Assets/StoreLogo.png b/src/modules/cmdpal/Exts/TemplateExtension/Assets/StoreLogo.png similarity index 100% rename from src/modules/cmdpal/extensions/TemplateExtension/Assets/StoreLogo.png rename to src/modules/cmdpal/Exts/TemplateExtension/Assets/StoreLogo.png diff --git a/src/modules/cmdpal/extensions/TemplateExtension/Assets/Wide310x150Logo.scale-200.png b/src/modules/cmdpal/Exts/TemplateExtension/Assets/Wide310x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/extensions/TemplateExtension/Assets/Wide310x150Logo.scale-200.png rename to src/modules/cmdpal/Exts/TemplateExtension/Assets/Wide310x150Logo.scale-200.png diff --git a/src/modules/cmdpal/extensions/TemplateExtension/Package.appxmanifest b/src/modules/cmdpal/Exts/TemplateExtension/Package.appxmanifest similarity index 100% rename from src/modules/cmdpal/extensions/TemplateExtension/Package.appxmanifest rename to src/modules/cmdpal/Exts/TemplateExtension/Package.appxmanifest diff --git a/src/modules/cmdpal/extensions/TemplateExtension/Program.cs b/src/modules/cmdpal/Exts/TemplateExtension/Program.cs similarity index 100% rename from src/modules/cmdpal/extensions/TemplateExtension/Program.cs rename to src/modules/cmdpal/Exts/TemplateExtension/Program.cs diff --git a/src/modules/cmdpal/extensions/TemplateExtension/SampleExtension.cs b/src/modules/cmdpal/Exts/TemplateExtension/SampleExtension.cs similarity index 100% rename from src/modules/cmdpal/extensions/TemplateExtension/SampleExtension.cs rename to src/modules/cmdpal/Exts/TemplateExtension/SampleExtension.cs diff --git a/src/modules/cmdpal/extensions/TemplateExtension/TemplateExtension.csproj b/src/modules/cmdpal/Exts/TemplateExtension/TemplateExtension.csproj similarity index 100% rename from src/modules/cmdpal/extensions/TemplateExtension/TemplateExtension.csproj rename to src/modules/cmdpal/Exts/TemplateExtension/TemplateExtension.csproj diff --git a/src/modules/cmdpal/extensions/TemplateExtension/TemplateExtensionPage.cs b/src/modules/cmdpal/Exts/TemplateExtension/TemplateExtensionPage.cs similarity index 100% rename from src/modules/cmdpal/extensions/TemplateExtension/TemplateExtensionPage.cs rename to src/modules/cmdpal/Exts/TemplateExtension/TemplateExtensionPage.cs diff --git a/src/modules/cmdpal/extensions/TemplateExtension/app.manifest b/src/modules/cmdpal/Exts/TemplateExtension/app.manifest similarity index 100% rename from src/modules/cmdpal/extensions/TemplateExtension/app.manifest rename to src/modules/cmdpal/Exts/TemplateExtension/app.manifest diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Contracts/IFileService.cs b/src/modules/cmdpal/Microsoft.CmdPal.Common/Contracts/IFileService.cs similarity index 100% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/Contracts/IFileService.cs rename to src/modules/cmdpal/Microsoft.CmdPal.Common/Contracts/IFileService.cs diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Contracts/ILocalSettingsService.cs b/src/modules/cmdpal/Microsoft.CmdPal.Common/Contracts/ILocalSettingsService.cs similarity index 100% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/Contracts/ILocalSettingsService.cs rename to src/modules/cmdpal/Microsoft.CmdPal.Common/Contracts/ILocalSettingsService.cs diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Extensions/ApplicationExtensions.cs b/src/modules/cmdpal/Microsoft.CmdPal.Common/Extensions/ApplicationExtensions.cs similarity index 100% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/Extensions/ApplicationExtensions.cs rename to src/modules/cmdpal/Microsoft.CmdPal.Common/Extensions/ApplicationExtensions.cs diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Extensions/IHostExtensions.cs b/src/modules/cmdpal/Microsoft.CmdPal.Common/Extensions/IHostExtensions.cs similarity index 100% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/Extensions/IHostExtensions.cs rename to src/modules/cmdpal/Microsoft.CmdPal.Common/Extensions/IHostExtensions.cs diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Helpers/Json.cs b/src/modules/cmdpal/Microsoft.CmdPal.Common/Helpers/Json.cs similarity index 100% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/Helpers/Json.cs rename to src/modules/cmdpal/Microsoft.CmdPal.Common/Helpers/Json.cs diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Helpers/RuntimeHelper.cs b/src/modules/cmdpal/Microsoft.CmdPal.Common/Helpers/RuntimeHelper.cs similarity index 100% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/Helpers/RuntimeHelper.cs rename to src/modules/cmdpal/Microsoft.CmdPal.Common/Helpers/RuntimeHelper.cs diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Microsoft.CmdPal.Common.csproj b/src/modules/cmdpal/Microsoft.CmdPal.Common/Microsoft.CmdPal.Common.csproj similarity index 77% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/Microsoft.CmdPal.Common.csproj rename to src/modules/cmdpal/Microsoft.CmdPal.Common/Microsoft.CmdPal.Common.csproj index 85e1c9bae7..d82d1a5342 100644 --- a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Microsoft.CmdPal.Common.csproj +++ b/src/modules/cmdpal/Microsoft.CmdPal.Common/Microsoft.CmdPal.Common.csproj @@ -1,5 +1,5 @@ - + Microsoft.CmdPal.Common enable @@ -18,7 +18,7 @@ - + diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Models/LocalSettingsOptions.cs b/src/modules/cmdpal/Microsoft.CmdPal.Common/Models/LocalSettingsOptions.cs similarity index 100% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/Models/LocalSettingsOptions.cs rename to src/modules/cmdpal/Microsoft.CmdPal.Common/Models/LocalSettingsOptions.cs diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/NativeMethods.txt b/src/modules/cmdpal/Microsoft.CmdPal.Common/NativeMethods.txt similarity index 100% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/NativeMethods.txt rename to src/modules/cmdpal/Microsoft.CmdPal.Common/NativeMethods.txt diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Services/FileService.cs b/src/modules/cmdpal/Microsoft.CmdPal.Common/Services/FileService.cs similarity index 100% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/Services/FileService.cs rename to src/modules/cmdpal/Microsoft.CmdPal.Common/Services/FileService.cs diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Services/IApp.cs b/src/modules/cmdpal/Microsoft.CmdPal.Common/Services/IApp.cs similarity index 100% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/Services/IApp.cs rename to src/modules/cmdpal/Microsoft.CmdPal.Common/Services/IApp.cs diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Services/IExtensionService.cs b/src/modules/cmdpal/Microsoft.CmdPal.Common/Services/IExtensionService.cs similarity index 100% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/Services/IExtensionService.cs rename to src/modules/cmdpal/Microsoft.CmdPal.Common/Services/IExtensionService.cs diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Services/IExtensionWrapper.cs b/src/modules/cmdpal/Microsoft.CmdPal.Common/Services/IExtensionWrapper.cs similarity index 100% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/Services/IExtensionWrapper.cs rename to src/modules/cmdpal/Microsoft.CmdPal.Common/Services/IExtensionWrapper.cs diff --git a/src/modules/cmdpal/src/Microsoft.CmdPal.Common/Services/LocalSettingsService.cs b/src/modules/cmdpal/Microsoft.CmdPal.Common/Services/LocalSettingsService.cs similarity index 100% rename from src/modules/cmdpal/src/Microsoft.CmdPal.Common/Services/LocalSettingsService.cs rename to src/modules/cmdpal/Microsoft.CmdPal.Common/Services/LocalSettingsService.cs diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/Converters.cpp b/src/modules/cmdpal/Microsoft.Terminal.UI/Converters.cpp similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/Converters.cpp rename to src/modules/cmdpal/Microsoft.Terminal.UI/Converters.cpp diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/Converters.h b/src/modules/cmdpal/Microsoft.Terminal.UI/Converters.h similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/Converters.h rename to src/modules/cmdpal/Microsoft.Terminal.UI/Converters.h diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/Converters.idl b/src/modules/cmdpal/Microsoft.Terminal.UI/Converters.idl similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/Converters.idl rename to src/modules/cmdpal/Microsoft.Terminal.UI/Converters.idl diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/IDirectKeyListener.idl b/src/modules/cmdpal/Microsoft.Terminal.UI/IDirectKeyListener.idl similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/IDirectKeyListener.idl rename to src/modules/cmdpal/Microsoft.Terminal.UI/IDirectKeyListener.idl diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/IconPathConverter.cpp b/src/modules/cmdpal/Microsoft.Terminal.UI/IconPathConverter.cpp similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/IconPathConverter.cpp rename to src/modules/cmdpal/Microsoft.Terminal.UI/IconPathConverter.cpp diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/IconPathConverter.h b/src/modules/cmdpal/Microsoft.Terminal.UI/IconPathConverter.h similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/IconPathConverter.h rename to src/modules/cmdpal/Microsoft.Terminal.UI/IconPathConverter.h diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/IconPathConverter.idl b/src/modules/cmdpal/Microsoft.Terminal.UI/IconPathConverter.idl similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/IconPathConverter.idl rename to src/modules/cmdpal/Microsoft.Terminal.UI/IconPathConverter.idl diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/Microsoft.Terminal.UI.def b/src/modules/cmdpal/Microsoft.Terminal.UI/Microsoft.Terminal.UI.def similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/Microsoft.Terminal.UI.def rename to src/modules/cmdpal/Microsoft.Terminal.UI/Microsoft.Terminal.UI.def diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj b/src/modules/cmdpal/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj similarity index 93% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj rename to src/modules/cmdpal/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj index 7b9bdf6662..efceefbf82 100644 --- a/src/modules/cmdpal/src/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj +++ b/src/modules/cmdpal/Microsoft.Terminal.UI/Microsoft.Terminal.UI.vcxproj @@ -1,7 +1,7 @@ - ..\..\..\..\..\ + ..\..\..\..\ $(PathToRoot)packages\Microsoft.WindowsAppSDK.1.5.240428000 $(PathToRoot)packages\Microsoft.Windows.CppWinRT.2.0.240111.5 @@ -188,7 +188,7 @@ - + @@ -198,7 +198,7 @@ - + diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/ResourceString.cpp b/src/modules/cmdpal/Microsoft.Terminal.UI/ResourceString.cpp similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/ResourceString.cpp rename to src/modules/cmdpal/Microsoft.Terminal.UI/ResourceString.cpp diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/ResourceString.h b/src/modules/cmdpal/Microsoft.Terminal.UI/ResourceString.h similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/ResourceString.h rename to src/modules/cmdpal/Microsoft.Terminal.UI/ResourceString.h diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/ResourceString.idl b/src/modules/cmdpal/Microsoft.Terminal.UI/ResourceString.idl similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/ResourceString.idl rename to src/modules/cmdpal/Microsoft.Terminal.UI/ResourceString.idl diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/init.cpp b/src/modules/cmdpal/Microsoft.Terminal.UI/init.cpp similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/init.cpp rename to src/modules/cmdpal/Microsoft.Terminal.UI/init.cpp diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/packages.config b/src/modules/cmdpal/Microsoft.Terminal.UI/packages.config similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/packages.config rename to src/modules/cmdpal/Microsoft.Terminal.UI/packages.config diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/pch.cpp b/src/modules/cmdpal/Microsoft.Terminal.UI/pch.cpp similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/pch.cpp rename to src/modules/cmdpal/Microsoft.Terminal.UI/pch.cpp diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/pch.h b/src/modules/cmdpal/Microsoft.Terminal.UI/pch.h similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/pch.h rename to src/modules/cmdpal/Microsoft.Terminal.UI/pch.h diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/til_string.h b/src/modules/cmdpal/Microsoft.Terminal.UI/til_string.h similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/til_string.h rename to src/modules/cmdpal/Microsoft.Terminal.UI/til_string.h diff --git a/src/modules/cmdpal/src/Microsoft.Terminal.UI/version.rc b/src/modules/cmdpal/Microsoft.Terminal.UI/version.rc similarity index 100% rename from src/modules/cmdpal/src/Microsoft.Terminal.UI/version.rc rename to src/modules/cmdpal/Microsoft.Terminal.UI/version.rc diff --git a/src/modules/cmdpal/WindowsCommandPalette.sln b/src/modules/cmdpal/WindowsCommandPalette.sln index 2f0fa75b7a..44195e35fa 100644 --- a/src/modules/cmdpal/WindowsCommandPalette.sln +++ b/src/modules/cmdpal/WindowsCommandPalette.sln @@ -2,11 +2,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.11.34929.205 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CmdPal.UI.Poc", "src\WindowsCommandPalette\Microsoft.CmdPal.UI.Poc.csproj", "{F71CF22B-A5C7-4328-A5B3-F4191AE57314}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CmdPal.UI.Poc", "WindowsCommandPalette\Microsoft.CmdPal.UI.Poc.csproj", "{F71CF22B-A5C7-4328-A5B3-F4191AE57314}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sample Extensions", "Sample Extensions", "{B7FF739F-7716-4FC3-B622-705486187B87}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Terminal.UI", "src\Microsoft.Terminal.UI\Microsoft.Terminal.UI.vcxproj", "{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Terminal.UI", "Microsoft.Terminal.UI\Microsoft.Terminal.UI.vcxproj", "{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extension SDK", "Extension SDK", "{FAA24D36-5515-467C-91E7-101A189AAF48}" EndProject @@ -14,29 +14,29 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.CmdPal.Extensions EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CmdPal.Extensions.Helpers", "extensionsdk\Microsoft.CmdPal.Extensions.Helpers\Microsoft.CmdPal.Extensions.Helpers.csproj", "{79060D06-7174-4D66-8D0B-4FF021154049}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CmdPal.Common", "src\Microsoft.CmdPal.Common\Microsoft.CmdPal.Common.csproj", "{05CDE6EE-23AE-42AF-A9F5-E398C382675F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CmdPal.Common", "Microsoft.CmdPal.Common\Microsoft.CmdPal.Common.csproj", "{05CDE6EE-23AE-42AF-A9F5-E398C382675F}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SpongebotExtension", "extensions\SpongebotExtension\SpongebotExtension.csproj", "{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SpongebotExtension", "Exts\SpongebotExtension\SpongebotExtension.csproj", "{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HackerNewsExtension", "extensions\HackerNewsExtension\HackerNewsExtension.csproj", "{1A506BBA-06A9-476E-B5D3-1495F299D53F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HackerNewsExtension", "Exts\HackerNewsExtension\HackerNewsExtension.csproj", "{1A506BBA-06A9-476E-B5D3-1495F299D53F}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MediaControlsExtension", "extensions\MediaControlsExtension\MediaControlsExtension.csproj", "{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MediaControlsExtension", "Exts\MediaControlsExtension\MediaControlsExtension.csproj", "{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProcessMonitorExtension", "extensions\ProcessMonitorExtension\ProcessMonitorExtension.csproj", "{9456257A-3292-4A8D-AF63-9830EABE7ED2}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProcessMonitorExtension", "Exts\ProcessMonitorExtension\ProcessMonitorExtension.csproj", "{9456257A-3292-4A8D-AF63-9830EABE7ED2}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Prototype", "Prototype", "{B4B13D2C-8C19-43D0-9FD4-3084F42EA4C2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TemplateExtension", "extensions\TemplateExtension\TemplateExtension.csproj", "{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TemplateExtension", "Exts\TemplateExtension\TemplateExtension.csproj", "{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MastodonExtension", "extensions\MastodonExtension\MastodonExtension.csproj", "{65E22130-6A8F-4AB7-80EC-FF75475DE821}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MastodonExtension", "Exts\MastodonExtension\MastodonExtension.csproj", "{65E22130-6A8F-4AB7-80EC-FF75475DE821}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Built-in Extensions", "Built-in Extensions", "{272D0E9A-8FC3-49F5-8FAD-79ABAE8AB1E4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CmdPal.Ext.Bookmarks", "src\Exts\Microsoft.CmdPal.Ext.Bookmark\Microsoft.CmdPal.Ext.Bookmarks.csproj", "{C5BADA22-70FF-41D1-9529-28F4891316A8}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CmdPal.Ext.Bookmarks", "Exts\Microsoft.CmdPal.Ext.Bookmark\Microsoft.CmdPal.Ext.Bookmarks.csproj", "{C5BADA22-70FF-41D1-9529-28F4891316A8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CmdPal.Ext.Calc", "src\Exts\Microsoft.CmdPal.Ext.Calc\Microsoft.CmdPal.Ext.Calc.csproj", "{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CmdPal.Ext.Calc", "Exts\Microsoft.CmdPal.Ext.Calc\Microsoft.CmdPal.Ext.Calc.csproj", "{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CmdPal.Ext.Settings", "src\Exts\Microsoft.CmdPal.Ext.CmdPalSettings\Microsoft.CmdPal.Ext.Settings.csproj", "{7F6796A4-4233-4CEC-914F-95EC7A5283A0}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CmdPal.Ext.Settings", "Exts\Microsoft.CmdPal.Ext.CmdPalSettings\Microsoft.CmdPal.Ext.Settings.csproj", "{7F6796A4-4233-4CEC-914F-95EC7A5283A0}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/ActionViewModel.cs b/src/modules/cmdpal/WindowsCommandPalette/ActionViewModel.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/ActionViewModel.cs rename to src/modules/cmdpal/WindowsCommandPalette/ActionViewModel.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/App.xaml b/src/modules/cmdpal/WindowsCommandPalette/App.xaml similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/App.xaml rename to src/modules/cmdpal/WindowsCommandPalette/App.xaml diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/App.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/App.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/App.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/App.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/LargeTile.scale-100.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/LargeTile.scale-100.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/LargeTile.scale-100.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/LargeTile.scale-100.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/LargeTile.scale-125.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/LargeTile.scale-125.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/LargeTile.scale-125.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/LargeTile.scale-125.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/LargeTile.scale-150.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/LargeTile.scale-150.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/LargeTile.scale-150.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/LargeTile.scale-150.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/LargeTile.scale-200.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/LargeTile.scale-200.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/LargeTile.scale-200.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/LargeTile.scale-200.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/LargeTile.scale-400.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/LargeTile.scale-400.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/LargeTile.scale-400.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/LargeTile.scale-400.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/LockScreenLogo.scale-200.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/LockScreenLogo.scale-200.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/LockScreenLogo.scale-200.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/LockScreenLogo.scale-200.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/SmallTile.scale-100.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/SmallTile.scale-100.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/SmallTile.scale-100.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/SmallTile.scale-100.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/SmallTile.scale-125.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/SmallTile.scale-125.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/SmallTile.scale-125.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/SmallTile.scale-125.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/SmallTile.scale-150.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/SmallTile.scale-150.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/SmallTile.scale-150.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/SmallTile.scale-150.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/SmallTile.scale-200.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/SmallTile.scale-200.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/SmallTile.scale-200.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/SmallTile.scale-200.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/SmallTile.scale-400.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/SmallTile.scale-400.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/SmallTile.scale-400.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/SmallTile.scale-400.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/SplashScreen.scale-100.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/SplashScreen.scale-100.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/SplashScreen.scale-100.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/SplashScreen.scale-100.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/SplashScreen.scale-125.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/SplashScreen.scale-125.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/SplashScreen.scale-125.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/SplashScreen.scale-125.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/SplashScreen.scale-150.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/SplashScreen.scale-150.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/SplashScreen.scale-150.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/SplashScreen.scale-150.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/SplashScreen.scale-200.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/SplashScreen.scale-200.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/SplashScreen.scale-200.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/SplashScreen.scale-200.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/SplashScreen.scale-400.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/SplashScreen.scale-400.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/SplashScreen.scale-400.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/SplashScreen.scale-400.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square150x150Logo.scale-100.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square150x150Logo.scale-100.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square150x150Logo.scale-100.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square150x150Logo.scale-100.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square150x150Logo.scale-125.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square150x150Logo.scale-125.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square150x150Logo.scale-125.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square150x150Logo.scale-125.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square150x150Logo.scale-150.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square150x150Logo.scale-150.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square150x150Logo.scale-150.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square150x150Logo.scale-150.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square150x150Logo.scale-200.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square150x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square150x150Logo.scale-200.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square150x150Logo.scale-200.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square150x150Logo.scale-400.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square150x150Logo.scale-400.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square150x150Logo.scale-400.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square150x150Logo.scale-400.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-16.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-16.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-16.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-16.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-256.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-256.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-256.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-256.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-32.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-32.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-32.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-32.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-48.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-48.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-48.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.altform-unplated_targetsize-48.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.scale-100.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.scale-100.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.scale-100.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.scale-100.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.scale-125.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.scale-125.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.scale-125.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.scale-125.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.scale-150.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.scale-150.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.scale-150.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.scale-150.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.scale-200.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.scale-200.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.scale-200.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.scale-400.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.scale-400.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.scale-400.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.scale-400.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-16.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-16.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-16.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-16.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-24.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-24.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-24.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-24.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-24_altform-unplated.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-24_altform-unplated.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-24_altform-unplated.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-256.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-256.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-256.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-256.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-32.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-32.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-32.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-32.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-48.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-48.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-48.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Square44x44Logo.targetsize-48.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/StoreLogo.backup.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/StoreLogo.backup.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/StoreLogo.backup.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/StoreLogo.backup.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/StoreLogo.scale-100.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/StoreLogo.scale-100.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/StoreLogo.scale-100.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/StoreLogo.scale-100.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/StoreLogo.scale-125.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/StoreLogo.scale-125.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/StoreLogo.scale-125.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/StoreLogo.scale-125.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/StoreLogo.scale-150.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/StoreLogo.scale-150.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/StoreLogo.scale-150.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/StoreLogo.scale-150.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/StoreLogo.scale-200.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/StoreLogo.scale-200.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/StoreLogo.scale-200.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/StoreLogo.scale-200.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/StoreLogo.scale-400.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/StoreLogo.scale-400.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/StoreLogo.scale-400.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/StoreLogo.scale-400.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Wide310x150Logo.scale-100.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Wide310x150Logo.scale-100.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Wide310x150Logo.scale-100.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Wide310x150Logo.scale-100.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Wide310x150Logo.scale-125.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Wide310x150Logo.scale-125.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Wide310x150Logo.scale-125.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Wide310x150Logo.scale-125.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Wide310x150Logo.scale-150.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Wide310x150Logo.scale-150.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Wide310x150Logo.scale-150.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Wide310x150Logo.scale-150.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Wide310x150Logo.scale-200.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Wide310x150Logo.scale-200.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Wide310x150Logo.scale-200.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Wide310x150Logo.scale-200.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Assets/Wide310x150Logo.scale-400.png b/src/modules/cmdpal/WindowsCommandPalette/Assets/Wide310x150Logo.scale-400.png similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Assets/Wide310x150Logo.scale-400.png rename to src/modules/cmdpal/WindowsCommandPalette/Assets/Wide310x150Logo.scale-400.png diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AllAppsPage.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AllAppsPage.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AllAppsPage.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AllAppsPage.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppAction.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AppAction.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppAction.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AppAction.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppCache.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AppCache.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppCache.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AppCache.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppItem.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AppItem.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppItem.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AppItem.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppListItem.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AppListItem.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/AppListItem.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AppListItem.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/OpenPathAction.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/OpenPathAction.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/OpenPathAction.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/OpenPathAction.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/AppxFactory.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/AppxFactory.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/AppxFactory.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/AppxFactory.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/AppxPackageHelper.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/AppxPackageHelper.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/AppxPackageHelper.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/AppxPackageHelper.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IApplicationActivationManager.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IApplicationActivationManager.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IApplicationActivationManager.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IApplicationActivationManager.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IAppxFactory.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IAppxFactory.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IAppxFactory.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IAppxFactory.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestApplication.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestApplication.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestApplication.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestApplication.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestApplicationsEnumerator.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestApplicationsEnumerator.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestApplicationsEnumerator.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestApplicationsEnumerator.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestProperties.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestProperties.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestProperties.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestProperties.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestReader.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestReader.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestReader.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IAppxManifestReader.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IPackage.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IPackage.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IPackage.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IPackage.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IPackageManager.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IPackageManager.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IPackageManager.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IPackageManager.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IProgram.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IProgram.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IProgram.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IProgram.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IShellLinkHelper.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IShellLinkHelper.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/IShellLinkHelper.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/IShellLinkHelper.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/LogoType.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/LogoType.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/LogoType.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/LogoType.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/Native.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/Native.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/Native.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/Native.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/PackageManagerWrapper.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/PackageManagerWrapper.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/PackageManagerWrapper.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/PackageManagerWrapper.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/PackageWrapper.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/PackageWrapper.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/PackageWrapper.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/PackageWrapper.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/ProgramSource.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/ProgramSource.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/ProgramSource.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/ProgramSource.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/ShellLinkHelper.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/ShellLinkHelper.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/ShellLinkHelper.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/ShellLinkHelper.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/UWP.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/UWP.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/UWP.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/UWP.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/UWPApplication.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/UWPApplication.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/UWPApplication.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/UWPApplication.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/Win32Program.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/Win32Program.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/Apps/Programs/Win32Program.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/Programs/Win32Program.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/QuitAction/QuitAction.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitAction.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/QuitAction/QuitAction.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitAction.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/QuitAction/QuitActionProvider.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitActionProvider.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/QuitAction/QuitActionProvider.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitActionProvider.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/ReloadExtensionsAction.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsAction.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/ReloadExtensionsAction.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsAction.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Builtins/ReloadExtensionsActionProvider.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsActionProvider.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Builtins/ReloadExtensionsActionProvider.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsActionProvider.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/ContextItemViewModel.cs b/src/modules/cmdpal/WindowsCommandPalette/ContextItemViewModel.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/ContextItemViewModel.cs rename to src/modules/cmdpal/WindowsCommandPalette/ContextItemViewModel.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/FilteredListSection.cs b/src/modules/cmdpal/WindowsCommandPalette/FilteredListSection.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/FilteredListSection.cs rename to src/modules/cmdpal/WindowsCommandPalette/FilteredListSection.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/ListItemViewModel.cs b/src/modules/cmdpal/WindowsCommandPalette/ListItemViewModel.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/ListItemViewModel.cs rename to src/modules/cmdpal/WindowsCommandPalette/ListItemViewModel.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/MainListItem.cs b/src/modules/cmdpal/WindowsCommandPalette/MainListItem.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/MainListItem.cs rename to src/modules/cmdpal/WindowsCommandPalette/MainListItem.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/MainListPage.cs b/src/modules/cmdpal/WindowsCommandPalette/MainListPage.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/MainListPage.cs rename to src/modules/cmdpal/WindowsCommandPalette/MainListPage.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/MainListSection.cs b/src/modules/cmdpal/WindowsCommandPalette/MainListSection.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/MainListSection.cs rename to src/modules/cmdpal/WindowsCommandPalette/MainListSection.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/MainWindow.xaml b/src/modules/cmdpal/WindowsCommandPalette/MainWindow.xaml similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/MainWindow.xaml rename to src/modules/cmdpal/WindowsCommandPalette/MainWindow.xaml diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/MainWindow.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/MainWindow.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/MainWindow.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/MainWindow.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Microsoft.CmdPal.UI.Poc.csproj b/src/modules/cmdpal/WindowsCommandPalette/Microsoft.CmdPal.UI.Poc.csproj similarity index 96% rename from src/modules/cmdpal/src/WindowsCommandPalette/Microsoft.CmdPal.UI.Poc.csproj rename to src/modules/cmdpal/WindowsCommandPalette/Microsoft.CmdPal.UI.Poc.csproj index c1acc8cdd9..ca34349b39 100644 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Microsoft.CmdPal.UI.Poc.csproj +++ b/src/modules/cmdpal/WindowsCommandPalette/Microsoft.CmdPal.UI.Poc.csproj @@ -1,5 +1,5 @@  - + WinExe WindowsCommandPalette @@ -68,7 +68,7 @@ - + diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Models/ExtensionObject`1.cs b/src/modules/cmdpal/WindowsCommandPalette/Models/ExtensionObject`1.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Models/ExtensionObject`1.cs rename to src/modules/cmdpal/WindowsCommandPalette/Models/ExtensionObject`1.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Models/ExtensionWrapper.cs b/src/modules/cmdpal/WindowsCommandPalette/Models/ExtensionWrapper.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Models/ExtensionWrapper.cs rename to src/modules/cmdpal/WindowsCommandPalette/Models/ExtensionWrapper.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/NativeMethods.txt b/src/modules/cmdpal/WindowsCommandPalette/NativeMethods.txt similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/NativeMethods.txt rename to src/modules/cmdpal/WindowsCommandPalette/NativeMethods.txt diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Package.appxmanifest b/src/modules/cmdpal/WindowsCommandPalette/Package.appxmanifest similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Package.appxmanifest rename to src/modules/cmdpal/WindowsCommandPalette/Package.appxmanifest diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/PageViewModel.cs b/src/modules/cmdpal/WindowsCommandPalette/PageViewModel.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/PageViewModel.cs rename to src/modules/cmdpal/WindowsCommandPalette/PageViewModel.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Program.cs b/src/modules/cmdpal/WindowsCommandPalette/Program.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Program.cs rename to src/modules/cmdpal/WindowsCommandPalette/Program.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/RecentsListSection.cs b/src/modules/cmdpal/WindowsCommandPalette/RecentsListSection.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/RecentsListSection.cs rename to src/modules/cmdpal/WindowsCommandPalette/RecentsListSection.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Services/ExtensionService.cs b/src/modules/cmdpal/WindowsCommandPalette/Services/ExtensionService.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Services/ExtensionService.cs rename to src/modules/cmdpal/WindowsCommandPalette/Services/ExtensionService.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/SubmitFormArgs.cs b/src/modules/cmdpal/WindowsCommandPalette/SubmitFormArgs.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/SubmitFormArgs.cs rename to src/modules/cmdpal/WindowsCommandPalette/SubmitFormArgs.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/TagViewModel.cs b/src/modules/cmdpal/WindowsCommandPalette/TagViewModel.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/TagViewModel.cs rename to src/modules/cmdpal/WindowsCommandPalette/TagViewModel.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Themes/Generic.xaml b/src/modules/cmdpal/WindowsCommandPalette/Themes/Generic.xaml similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Themes/Generic.xaml rename to src/modules/cmdpal/WindowsCommandPalette/Themes/Generic.xaml diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/DetailsControl.xaml b/src/modules/cmdpal/WindowsCommandPalette/Views/DetailsControl.xaml similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/DetailsControl.xaml rename to src/modules/cmdpal/WindowsCommandPalette/Views/DetailsControl.xaml diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/DetailsControl.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/DetailsControl.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/DetailsControl.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/DetailsControl.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/DetailsViewModel.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/DetailsViewModel.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/DetailsViewModel.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/DetailsViewModel.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ErrorListItem.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/ErrorListItem.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/ErrorListItem.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/ErrorListItem.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPage.xaml b/src/modules/cmdpal/WindowsCommandPalette/Views/FormPage.xaml similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPage.xaml rename to src/modules/cmdpal/WindowsCommandPalette/Views/FormPage.xaml diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPage.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/FormPage.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPage.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/FormPage.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/FormViewModel.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/FormViewModel.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/FormViewModel.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/FormViewModel.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPage.xaml b/src/modules/cmdpal/WindowsCommandPalette/Views/ListPage.xaml similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPage.xaml rename to src/modules/cmdpal/WindowsCommandPalette/Views/ListPage.xaml diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPage.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/ListPage.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPage.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/ListPage.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml b/src/modules/cmdpal/WindowsCommandPalette/Views/MainPage.xaml similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml rename to src/modules/cmdpal/WindowsCommandPalette/Views/MainPage.xaml diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/MainPage.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/MainPage.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/MainPage.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/MainViewModel.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/MainViewModel.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/MainViewModel.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPage.xaml b/src/modules/cmdpal/WindowsCommandPalette/Views/MarkdownPage.xaml similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPage.xaml rename to src/modules/cmdpal/WindowsCommandPalette/Views/MarkdownPage.xaml diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPage.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/MarkdownPage.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPage.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/MarkdownPage.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPageViewModel.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/MarkdownPageViewModel.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/MarkdownPageViewModel.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/MarkdownPageViewModel.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/NoOpAction.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/NoOpAction.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/NoOpAction.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/NoOpAction.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/SectionInfoList.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/SectionInfoList.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/SectionInfoList.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/SectionInfoList.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Views/StringNotEmptyToVisibilityConverter.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/StringNotEmptyToVisibilityConverter.xaml.cs similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/Views/StringNotEmptyToVisibilityConverter.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/StringNotEmptyToVisibilityConverter.xaml.cs diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/app.manifest b/src/modules/cmdpal/WindowsCommandPalette/app.manifest similarity index 100% rename from src/modules/cmdpal/src/WindowsCommandPalette/app.manifest rename to src/modules/cmdpal/WindowsCommandPalette/app.manifest diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/PublishProfiles/win-arm64.pubxml deleted file mode 100644 index ccd091e1b4..0000000000 --- a/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/PublishProfiles/win-arm64.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - ARM64 - win-arm64 - bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ - true - False - False - True - False - True - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml deleted file mode 100644 index d7548ab0a8..0000000000 --- a/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - x64 - win-x64 - bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ - true - False - False - True - False - True - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/launchSettings.json b/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/launchSettings.json deleted file mode 100644 index 2df74d9a89..0000000000 --- a/src/modules/cmdpal/extensions/HackerNewsExtension/Properties/launchSettings.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "profiles": { - "HackerNewsExtension (Package)": { - "commandName": "MsixPackage" - }, - "HackerNewsExtension (Unpackaged)": { - "commandName": "Project" - } - } -} \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/PublishProfiles/win-arm64.pubxml deleted file mode 100644 index ccd091e1b4..0000000000 --- a/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/PublishProfiles/win-arm64.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - ARM64 - win-arm64 - bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ - true - False - False - True - False - True - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml deleted file mode 100644 index d7548ab0a8..0000000000 --- a/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - x64 - win-x64 - bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ - true - False - False - True - False - True - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/launchSettings.json b/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/launchSettings.json deleted file mode 100644 index d397a4b5e7..0000000000 --- a/src/modules/cmdpal/extensions/MediaControlsExtension/Properties/launchSettings.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "profiles": { - "MediaControlsExtension (Package)": { - "commandName": "MsixPackage" - }, - "MediaControlsExtension (Unpackaged)": { - "commandName": "Project" - } - } -} \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-arm64.pubxml deleted file mode 100644 index ccd091e1b4..0000000000 --- a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-arm64.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - ARM64 - win-arm64 - bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ - true - False - False - True - False - True - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml deleted file mode 100644 index d7548ab0a8..0000000000 --- a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - x64 - win-x64 - bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ - true - False - False - True - False - True - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/launchSettings.json b/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/launchSettings.json deleted file mode 100644 index 31adf00d01..0000000000 --- a/src/modules/cmdpal/extensions/ProcessMonitorExtension/Properties/launchSettings.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "profiles": { - "ProcessMonitorExtension (Package)": { - "commandName": "MsixPackage" - }, - "ProcessMonitorExtension (Unpackaged)": { - "commandName": "Project" - } - } -} \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-arm64.pubxml deleted file mode 100644 index ccd091e1b4..0000000000 --- a/src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-arm64.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - ARM64 - win-arm64 - bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ - true - False - False - True - False - True - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml deleted file mode 100644 index d7548ab0a8..0000000000 --- a/src/modules/cmdpal/extensions/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - x64 - win-x64 - bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ - true - False - False - True - False - True - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/SpongebotExtension/Properties/launchSettings.json b/src/modules/cmdpal/extensions/SpongebotExtension/Properties/launchSettings.json deleted file mode 100644 index e6c43e9ec8..0000000000 --- a/src/modules/cmdpal/extensions/SpongebotExtension/Properties/launchSettings.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "profiles": { - "SpongebotExtension (Package)": { - "commandName": "MsixPackage" - }, - "SpongebotExtension (Unpackaged)": { - "commandName": "Project" - } - } -} \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/TemplateExtension/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/extensions/TemplateExtension/Properties/PublishProfiles/win-arm64.pubxml deleted file mode 100644 index ccd091e1b4..0000000000 --- a/src/modules/cmdpal/extensions/TemplateExtension/Properties/PublishProfiles/win-arm64.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - ARM64 - win-arm64 - bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ - true - False - False - True - False - True - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/TemplateExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/extensions/TemplateExtension/Properties/PublishProfiles/win-x64.pubxml deleted file mode 100644 index d7548ab0a8..0000000000 --- a/src/modules/cmdpal/extensions/TemplateExtension/Properties/PublishProfiles/win-x64.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - x64 - win-x64 - bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ - true - False - False - True - False - True - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/TemplateExtension/Properties/PublishProfiles/win-x86.pubxml b/src/modules/cmdpal/extensions/TemplateExtension/Properties/PublishProfiles/win-x86.pubxml deleted file mode 100644 index 4ed30a5eed..0000000000 --- a/src/modules/cmdpal/extensions/TemplateExtension/Properties/PublishProfiles/win-x86.pubxml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - FileSystem - x86 - win-x86 - win10-x86 - bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ - true - False - False - True - False - True - - \ No newline at end of file diff --git a/src/modules/cmdpal/extensions/TemplateExtension/Properties/launchSettings.json b/src/modules/cmdpal/extensions/TemplateExtension/Properties/launchSettings.json deleted file mode 100644 index e9374fab80..0000000000 --- a/src/modules/cmdpal/extensions/TemplateExtension/Properties/launchSettings.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "profiles": { - "TemplateExtension (Package)": { - "commandName": "MsixPackage" - }, - "TemplateExtension (Unpackaged)": { - "commandName": "Project" - } - } -} diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/Microsoft.CmdPal.Ext.Calc.csproj b/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/Microsoft.CmdPal.Ext.Calc.csproj deleted file mode 100644 index 25408c8154..0000000000 --- a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.Calc/Microsoft.CmdPal.Ext.Calc.csproj +++ /dev/null @@ -1,9 +0,0 @@ - - - - Microsoft.CmdPal.Ext.Calc - - - - - diff --git a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/Microsoft.CmdPal.Ext.Settings.csproj b/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/Microsoft.CmdPal.Ext.Settings.csproj deleted file mode 100644 index 475f532c0f..0000000000 --- a/src/modules/cmdpal/src/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/Microsoft.CmdPal.Ext.Settings.csproj +++ /dev/null @@ -1,9 +0,0 @@ - - - - Microsoft.CmdPal.Ext.Settings - - - - - diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/src/WindowsCommandPalette/Properties/PublishProfiles/win-arm64.pubxml deleted file mode 100644 index ccd091e1b4..0000000000 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Properties/PublishProfiles/win-arm64.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - ARM64 - win-arm64 - bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ - true - False - False - True - False - True - - \ No newline at end of file diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/src/WindowsCommandPalette/Properties/PublishProfiles/win-x64.pubxml deleted file mode 100644 index d7548ab0a8..0000000000 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Properties/PublishProfiles/win-x64.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - FileSystem - x64 - win-x64 - bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ - true - False - False - True - False - True - - \ No newline at end of file diff --git a/src/modules/cmdpal/src/WindowsCommandPalette/Properties/launchSettings.json b/src/modules/cmdpal/src/WindowsCommandPalette/Properties/launchSettings.json deleted file mode 100644 index 937307cebe..0000000000 --- a/src/modules/cmdpal/src/WindowsCommandPalette/Properties/launchSettings.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "profiles": { - "PT Run v2 (Package)": { - "commandName": "MsixPackage" - }, - "PT Run v2 (Unpackaged)": { - "commandName": "Project" - } - } -} \ No newline at end of file From f5d58be8221375b979d78933c9ba2d3bc8d9280a Mon Sep 17 00:00:00 2001 From: Mike Griese Date: Fri, 6 Sep 2024 12:53:29 -0500 Subject: [PATCH 20/26] Add a class diagram (#44) this represents the CURRENT STATE of the spec --- .../doc/initial-sdk-spec/initial-sdk-spec.md | 162 +++++++++++++++++- 1 file changed, 161 insertions(+), 1 deletion(-) diff --git a/src/modules/cmdpal/doc/initial-sdk-spec/initial-sdk-spec.md b/src/modules/cmdpal/doc/initial-sdk-spec/initial-sdk-spec.md index 5b9997de18..dcce39c181 100644 --- a/src/modules/cmdpal/doc/initial-sdk-spec/initial-sdk-spec.md +++ b/src/modules/cmdpal/doc/initial-sdk-spec/initial-sdk-spec.md @@ -1,7 +1,7 @@ --- author: Mike Griese created on: 2024-07-19 -last updated: 2024-08-26 +last updated: 2024-09-06 issue id: n/a --- @@ -67,6 +67,7 @@ functionality. - [Using the Clipboard](#using-the-clipboard) - [Advanced scenarios](#advanced-scenarios) - [Status messages](#status-messages) + - [Class diagram](#class-diagram) - [Future considerations](#future-considerations) - [Arbitrary parameters and arguments](#arbitrary-parameters-and-arguments) - [URI activation](#uri-activation) @@ -1271,6 +1272,164 @@ enum PageStatusKind { push pop sounds wrong. Maybe `AddStatus` and `ClearStatus`? +## Class diagram + +This is a diagram attempting to show the relationships between the various types we've defined for the SDK. Some elements are omitted for clarity. (Notably, `IconDataType` and `IPropChanged`, which are used in many places.) + +The notes on the arrows help indicate the multiplicity of the relationship. +* "*" means 0 or more (for arrays) +* "?" means 0 or 1 (for optional/nullable properties) +* "1" means exactly 1 (for required properties) + +```mermaid +classDiagram + class ICommand { + String Name + IconDataType Icon + } + IPage --|> ICommand + class IPage { + Boolean Loading + } + + IInvokableCommand --|> ICommand + class IInvokableCommand { + ICommandResult Invoke() + } + + class IForm { + String TemplateJson() + String DataJson() + String StateJson() + ICommandResult SubmitForm(String payload) + } + IFormPage --|> IPage + class IFormPage { + IForm[] Forms() + } + IForm "*" *-- IFormPage + + IMarkdownPage --|> IPage + class IMarkdownPage { + String Title + String[] Bodies() + IDetails Details() + IContextItem[] Commands + } + %% IMarkdownPage *-- IDetails + IContextItem "*" *-- IMarkdownPage + IDetails "?" *-- IMarkdownPage + %%%%%%%%% + + class IFilterItem + + ISeparatorFilterItem --|> IFilterItem + class ISeparatorFilterItem + + IFilter --|> IFilterItem + class IFilter { + String Id + String Name + IconDataType Icon + } + + class IFilters { + String CurrentFilterId + IFilterItem[] AvailableFilters() + } + IFilterItem "*" *-- IFilters + + class IFallbackHandler { + void UpdateQuery(String query) + } + + + %% IListItem --|> INotifyPropChanged + class IListItem { + String Title + String Subtitle + ICommand Command + IContextItem[] MoreCommands + ITag[] Tags + IDetails Details + IFallbackHandler FallbackHandler + } + IContextItem "*" *-- IListItem + IDetails "?" *-- IListItem + ICommand "?" *-- IListItem + ITag "*" *-- IListItem + IFallbackHandler "?" *-- IListItem + + class ISection { + String Title + IListItem[] Items + } + IListItem "*" *-- ISection + + class IGridProperties { + Windows.Foundation.Size TileSize + } + + IListPage --|> IPage + class IListPage { + String SearchText + String PlaceholderText + Boolean ShowDetails + IFilters Filters + IGridProperties GridProperties + + ISection[] GetItems() + } + IGridProperties "?" *-- IListPage + ISection "*" *-- IListPage + IFilters "*" *-- IListPage + + IDynamicListPage --|> IListPage + class IDynamicListPage { + ISection[] GetItems(String query) + } + + class IDetails { + IconDataType HeroImage + String Title + String Body + IDetailsElement[] Metadata + } + + class ITag { + IconDataType Icon + String Text + Windows.UI.Color Color + String ToolTip + ICommand Command + } + ICommand "?" *-- ITag + + %%%%%% + class IContextItem + + ISeparatorContextItem --|> IContextItem + class ISeparatorContextItem + ICommandContextItem --|> IContextItem + class ICommandContextItem { + ICommand Command + String Tooltip + Boolean IsCritical + } + ICommand "?" *-- ICommandContextItem + + + + class ICommandProvider { + String DisplayName + IconDataType Icon + + IListItem[] TopLevelCommands() + } + IListItem "*" *-- ICommandProvider +``` + + ## Future considerations ### Arbitrary parameters and arguments @@ -1356,6 +1515,7 @@ shown to the user when the page stops loading and the list of elements filtered is empty. Is that just a `Details` object? A markdown body? + ## Footnotes The `.idl` for this SDK can be generated directly from this file. To do so, run the following command: From 3b7a33b3dccb830773bc859ad006f4aac2e3fd2b Mon Sep 17 00:00:00 2001 From: Mike Griese Date: Fri, 6 Sep 2024 14:12:27 -0500 Subject: [PATCH 21/26] Some other SDK renaming (to get rid of old `Actions` references) (#47) * All the `ActionProvider`s were renamed to `CommandProvider` * `Page`s all got a `Title` * `IListItem` got it own `Icon` * `ActionResult` -> `CommandResult` * add all the pubxml's we lost --- .gitignore | 6 +- src/modules/cmdpal/.gitignore | 401 +----------------- .../Exts/HackerNewsExtension/CommentAction.cs | 4 +- .../Exts/HackerNewsExtension/LinkAction.cs | 4 +- .../Properties/PublishProfiles/win-x64.pubxml | 19 + .../Properties/launchSettings.json | 10 + .../MastodonExtensionPage.cs | 2 +- .../Properties/PublishProfiles/win-x64.pubxml | 19 + .../Properties/launchSettings.json | 10 + .../PrevNextTrackAction.cs | 2 +- .../Properties/PublishProfiles/win-x64.pubxml | 19 + .../Properties/launchSettings.json | 10 + .../TogglePlayMediaAction.cs | 4 +- .../AddBookmarkForm.cs | 8 +- .../BookmarkPlaceholderForm.cs | 6 +- .../Bookmarks.cs | 2 +- ...rovider.cs => BookmarksCommandProvider.cs} | 4 +- .../OpenInTerminalAction.cs | 2 +- .../UrlAction.cs | 4 +- .../CalculatorAction.cs | 2 +- ...ovider.cs => CalculatorCommandProvider.cs} | 4 +- ...Provider.cs => SettingsCommandProvider.cs} | 4 +- .../SettingsForm.cs | 6 +- ...er.cs => ProcessMonitorCommandProvider.cs} | 2 +- .../Properties/PublishProfiles/win-x64.pubxml | 19 + .../Properties/launchSettings.json | 10 + .../SampleExtension.cs | 2 +- .../SwitchToProcess.cs | 4 +- .../TerminateProcess.cs | 4 +- .../Exts/SpongebotExtension/CopyTextAction.cs | 2 +- .../Properties/PublishProfiles/win-x64.pubxml | 19 + .../Properties/launchSettings.json | 10 + .../SpongebotExtension/SpongeSettingsForm.cs | 6 +- .../Properties/PublishProfiles/win-x64.pubxml | 19 + .../Properties/launchSettings.json | 10 + .../TemplateExtensionPage.cs | 2 +- .../Builtins/Apps/AppAction.cs | 4 +- .../Builtins/Apps/OpenPathAction.cs | 4 +- .../Builtins/QuitAction/QuitAction.cs | 2 +- ...tionProvider.cs => QuitCommandProvider.cs} | 2 +- .../Builtins/ReloadExtensionsAction.cs | 2 +- ....cs => ReloadExtensionsCommandProvider.cs} | 2 +- .../Properties/PublishProfiles/win-x64.pubxml | 19 + .../Properties/launchSettings.json | 10 + ...pper.xaml.cs => CommandProviderWrapper.cs} | 16 +- .../Views/ListPage.xaml.cs | 2 +- .../Views/MainPage.xaml.cs | 10 +- .../Views/MainViewModel.xaml.cs | 22 +- .../Views/NoOpAction.xaml.cs | 2 +- .../doc/initial-sdk-spec/initial-sdk-spec.md | 20 +- .../list-elements-mock-002.pdn | Bin 0 -> 281445 bytes .../list-elements-mock-002.png | Bin 0 -> 230625 bytes .../{Action.cs => Command.cs} | 2 +- .../{ActionResult.cs => CommandResult.cs} | 14 +- .../FormPage.cs | 14 +- .../InvokableCommand.cs | 2 +- .../ListItem.cs | 11 + .../ListPage.cs | 13 +- .../MarkdownPage.cs | 23 +- .../NoOpAction.cs | 6 - .../NoOpCommand.cs | 6 + .../Page.cs | 30 ++ .../Tag.cs | 2 +- .../Microsoft.CmdPal.Extensions.idl | 5 +- ...soft.Windows.CommandPalette.Extensions.idl | 222 ---------- 65 files changed, 362 insertions(+), 766 deletions(-) create mode 100644 src/modules/cmdpal/Exts/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml create mode 100644 src/modules/cmdpal/Exts/HackerNewsExtension/Properties/launchSettings.json create mode 100644 src/modules/cmdpal/Exts/MastodonExtension/Properties/PublishProfiles/win-x64.pubxml create mode 100644 src/modules/cmdpal/Exts/MastodonExtension/Properties/launchSettings.json create mode 100644 src/modules/cmdpal/Exts/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml create mode 100644 src/modules/cmdpal/Exts/MediaControlsExtension/Properties/launchSettings.json rename src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/{BookmarksActionProvider.cs => BookmarksCommandProvider.cs} (97%) rename src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/{CalculatorActionProvider.cs => CalculatorCommandProvider.cs} (90%) rename src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/{SettingsActionProvider.cs => SettingsCommandProvider.cs} (90%) rename src/modules/cmdpal/Exts/ProcessMonitorExtension/{ProcessMonitorActionProvider.cs => ProcessMonitorCommandProvider.cs} (91%) create mode 100644 src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml create mode 100644 src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/launchSettings.json create mode 100644 src/modules/cmdpal/Exts/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml create mode 100644 src/modules/cmdpal/Exts/SpongebotExtension/Properties/launchSettings.json create mode 100644 src/modules/cmdpal/Exts/TemplateExtension/Properties/PublishProfiles/win-x64.pubxml create mode 100644 src/modules/cmdpal/Exts/TemplateExtension/Properties/launchSettings.json rename src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/{QuitActionProvider.cs => QuitCommandProvider.cs} (95%) rename src/modules/cmdpal/WindowsCommandPalette/Builtins/{ReloadExtensionsActionProvider.cs => ReloadExtensionsCommandProvider.cs} (93%) create mode 100644 src/modules/cmdpal/WindowsCommandPalette/Properties/PublishProfiles/win-x64.pubxml create mode 100644 src/modules/cmdpal/WindowsCommandPalette/Properties/launchSettings.json rename src/modules/cmdpal/WindowsCommandPalette/Views/{ActionsProviderWrapper.xaml.cs => CommandProviderWrapper.cs} (79%) create mode 100644 src/modules/cmdpal/doc/initial-sdk-spec/list-elements-mock-002.pdn create mode 100644 src/modules/cmdpal/doc/initial-sdk-spec/list-elements-mock-002.png rename src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/{Action.cs => Command.cs} (93%) rename src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/{ActionResult.cs => CommandResult.cs} (74%) delete mode 100644 src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/NoOpAction.cs create mode 100644 src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/NoOpCommand.cs create mode 100644 src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Page.cs delete mode 100644 src/modules/cmdpal/extensionsdk/Microsoft.Windows.CommandPalette.Extensions/Microsoft.Windows.CommandPalette.Extensions.idl diff --git a/.gitignore b/.gitignore index 89541c3a2e..66532cc074 100644 --- a/.gitignore +++ b/.gitignore @@ -224,7 +224,7 @@ ClientBin/ *.publishsettings orleans.codegen.cs -# Including strong name files can present a security risk +# Including strong name files can present a security risk # (https://github.com/github/gitignore/pull/2483#issue-259490424) #*.snk @@ -322,7 +322,7 @@ ImageResizer/tools/** # OpenCover UI analysis results OpenCover/ -# Azure Stream Analytics local run output +# Azure Stream Analytics local run output ASALocalRun/ # MSBuild Binary and Structured Log @@ -331,7 +331,7 @@ ASALocalRun/ # NVidia Nsight GPU debugger configuration file *.nvuser -# MFractors (Xamarin productivity tool) working folder +# MFractors (Xamarin productivity tool) working folder .mfractor/ # Temp build files diff --git a/src/modules/cmdpal/.gitignore b/src/modules/cmdpal/.gitignore index 5bb04dd16c..062f40d6fd 100644 --- a/src/modules/cmdpal/.gitignore +++ b/src/modules/cmdpal/.gitignore @@ -1,398 +1,5 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.tlog -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*.json -coverage*.xml -coverage*.info - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio 6 auto-generated project file (contains which files were open etc.) -*.vbp - -# Visual Studio 6 workspace and project file (working project files containing files to include in project) -*.dsw -*.dsp - -# Visual Studio 6 technical files -*.ncb -*.aps - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# Visual Studio History (VSHistory) files -.vshistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd - -# VS Code files for those working on multiple tools -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -*.code-workspace - -# Local History for Visual Studio Code -.history/ - -# Windows Installer files from build outputs -*.cab -*.msi -*.msix -*.msixbundle -*.msm -*.msp - -# JetBrains Rider -*.sln.iml \ No newline at end of file +# Allow launchSettings.json in the Properties folder to be committed to source +# control. This overrides the one in the root .gitignore, because all the cmdpal +# projects will explode without this file +!**/Properties/launchSettings.json diff --git a/src/modules/cmdpal/Exts/HackerNewsExtension/CommentAction.cs b/src/modules/cmdpal/Exts/HackerNewsExtension/CommentAction.cs index 6f0b19267d..77a0d89f1c 100644 --- a/src/modules/cmdpal/Exts/HackerNewsExtension/CommentAction.cs +++ b/src/modules/cmdpal/Exts/HackerNewsExtension/CommentAction.cs @@ -18,9 +18,9 @@ internal sealed class CommentAction : InvokableCommand Icon = new("\ue8f2"); // chat bubbles } - public override ActionResult Invoke() + public override CommandResult Invoke() { Process.Start(new ProcessStartInfo(_post.CommentsLink) { UseShellExecute = true }); - return ActionResult.KeepOpen(); + return CommandResult.KeepOpen(); } } diff --git a/src/modules/cmdpal/Exts/HackerNewsExtension/LinkAction.cs b/src/modules/cmdpal/Exts/HackerNewsExtension/LinkAction.cs index 6d3c1a9a35..bb64321122 100644 --- a/src/modules/cmdpal/Exts/HackerNewsExtension/LinkAction.cs +++ b/src/modules/cmdpal/Exts/HackerNewsExtension/LinkAction.cs @@ -18,9 +18,9 @@ internal sealed class LinkAction : InvokableCommand this.Icon = new("\uE8A7"); } - public override ActionResult Invoke() + public override CommandResult Invoke() { Process.Start(new ProcessStartInfo(_post.Link) { UseShellExecute = true }); - return ActionResult.KeepOpen(); + return CommandResult.KeepOpen(); } } diff --git a/src/modules/cmdpal/Exts/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/Exts/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..fb069f3e3d --- /dev/null +++ b/src/modules/cmdpal/Exts/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,19 @@ + + + + + FileSystem + x64 + win-x64 + win10-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + False + + diff --git a/src/modules/cmdpal/Exts/HackerNewsExtension/Properties/launchSettings.json b/src/modules/cmdpal/Exts/HackerNewsExtension/Properties/launchSettings.json new file mode 100644 index 0000000000..200e182015 --- /dev/null +++ b/src/modules/cmdpal/Exts/HackerNewsExtension/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "HackerNewsExtension (Package)": { + "commandName": "MsixPackage" + }, + "HackerNewsExtension (Unpackaged)": { + "commandName": "Project" + } + } +} diff --git a/src/modules/cmdpal/Exts/MastodonExtension/MastodonExtensionPage.cs b/src/modules/cmdpal/Exts/MastodonExtension/MastodonExtensionPage.cs index 226683206a..5589cfb221 100644 --- a/src/modules/cmdpal/Exts/MastodonExtension/MastodonExtensionPage.cs +++ b/src/modules/cmdpal/Exts/MastodonExtension/MastodonExtensionPage.cs @@ -23,7 +23,7 @@ internal sealed class MastodonExtensionPage : ListPage new ListSection() { Items = [ - new ListItem(new NoOpAction()) { Title = "TODO: Implement your extension here" } + new ListItem(new NoOpCommand()) { Title = "TODO: Implement your extension here" } ], } ]; diff --git a/src/modules/cmdpal/Exts/MastodonExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/Exts/MastodonExtension/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..fb069f3e3d --- /dev/null +++ b/src/modules/cmdpal/Exts/MastodonExtension/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,19 @@ + + + + + FileSystem + x64 + win-x64 + win10-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + False + + diff --git a/src/modules/cmdpal/Exts/MastodonExtension/Properties/launchSettings.json b/src/modules/cmdpal/Exts/MastodonExtension/Properties/launchSettings.json new file mode 100644 index 0000000000..9520129ecb --- /dev/null +++ b/src/modules/cmdpal/Exts/MastodonExtension/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "MastodonExtension (Package)": { + "commandName": "MsixPackage" + }, + "MastodonExtension (Unpackaged)": { + "commandName": "Project" + } + } +} diff --git a/src/modules/cmdpal/Exts/MediaControlsExtension/PrevNextTrackAction.cs b/src/modules/cmdpal/Exts/MediaControlsExtension/PrevNextTrackAction.cs index 1f259f2b35..51c0f94c7f 100644 --- a/src/modules/cmdpal/Exts/MediaControlsExtension/PrevNextTrackAction.cs +++ b/src/modules/cmdpal/Exts/MediaControlsExtension/PrevNextTrackAction.cs @@ -41,6 +41,6 @@ internal sealed class PrevNextTrackAction : InvokableCommand _ = _mediaSession.TrySkipNextAsync(); } - return ActionResult.KeepOpen(); + return CommandResult.KeepOpen(); } } diff --git a/src/modules/cmdpal/Exts/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/Exts/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..fb069f3e3d --- /dev/null +++ b/src/modules/cmdpal/Exts/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,19 @@ + + + + + FileSystem + x64 + win-x64 + win10-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + False + + diff --git a/src/modules/cmdpal/Exts/MediaControlsExtension/Properties/launchSettings.json b/src/modules/cmdpal/Exts/MediaControlsExtension/Properties/launchSettings.json new file mode 100644 index 0000000000..0f70c2867f --- /dev/null +++ b/src/modules/cmdpal/Exts/MediaControlsExtension/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "MediaControlsExtension (Package)": { + "commandName": "MsixPackage" + }, + "MediaControlsExtension (Unpackaged)": { + "commandName": "Project" + } + } +} diff --git a/src/modules/cmdpal/Exts/MediaControlsExtension/TogglePlayMediaAction.cs b/src/modules/cmdpal/Exts/MediaControlsExtension/TogglePlayMediaAction.cs index 151c7c8666..21d297e99d 100644 --- a/src/modules/cmdpal/Exts/MediaControlsExtension/TogglePlayMediaAction.cs +++ b/src/modules/cmdpal/Exts/MediaControlsExtension/TogglePlayMediaAction.cs @@ -17,13 +17,13 @@ public sealed class TogglePlayMediaAction : InvokableCommand Icon = new(string.Empty); } - public override ActionResult Invoke() + public override CommandResult Invoke() { if (MediaSession != null) { _ = MediaSession.TryTogglePlayPauseAsync(); } - return ActionResult.KeepOpen(); + return CommandResult.KeepOpen(); } } diff --git a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkForm.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkForm.cs index 9afe223761..268b0cd3ba 100644 --- a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkForm.cs +++ b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/AddBookmarkForm.cs @@ -58,12 +58,12 @@ internal sealed class AddBookmarkForm : Form public override string StateJson() => throw new NotImplementedException(); - public override ActionResult SubmitForm(string payload) + public override CommandResult SubmitForm(string payload) { var formInput = JsonNode.Parse(payload); if (formInput == null) { - return ActionResult.GoHome(); + return CommandResult.GoHome(); } // get the name and url out of the values @@ -100,7 +100,7 @@ internal sealed class AddBookmarkForm : Form }; // Construct a new json blob with the name and url - var jsonPath = BookmarksActionProvider.StateJsonPath(); + var jsonPath = BookmarksCommandProvider.StateJsonPath(); var data = Bookmarks.ReadFromFile(jsonPath); data.Data.Add(formData); @@ -108,6 +108,6 @@ internal sealed class AddBookmarkForm : Form Bookmarks.WriteToFile(jsonPath, data); AddedAction?.Invoke(this, null); - return ActionResult.GoHome(); + return CommandResult.GoHome(); } } diff --git a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderForm.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderForm.cs index 95aeec01b8..7b493ba8d8 100644 --- a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderForm.cs +++ b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarkPlaceholderForm.cs @@ -71,7 +71,7 @@ internal sealed class BookmarkPlaceholderForm : Form public override string StateJson() => throw new NotImplementedException(); - public override ActionResult SubmitForm(string payload) + public override CommandResult SubmitForm(string payload) { var target = _bookmark; @@ -80,7 +80,7 @@ internal sealed class BookmarkPlaceholderForm : Form var formObject = formInput?.AsObject(); if (formObject == null) { - return ActionResult.GoHome(); + return CommandResult.GoHome(); } foreach (var (key, value) in formObject) @@ -107,6 +107,6 @@ internal sealed class BookmarkPlaceholderForm : Form System.Diagnostics.Debug.WriteLine($"Error launching URL: {ex.Message}"); } - return ActionResult.GoHome(); + return CommandResult.GoHome(); } } diff --git a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/Bookmarks.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/Bookmarks.cs index 8cf57b244e..7c3a1dd1e0 100644 --- a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/Bookmarks.cs +++ b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/Bookmarks.cs @@ -39,6 +39,6 @@ public sealed class Bookmarks { var jsonString = JsonSerializer.Serialize(data, _jsonOptions); - File.WriteAllText(BookmarksActionProvider.StateJsonPath(), jsonString); + File.WriteAllText(BookmarksCommandProvider.StateJsonPath(), jsonString); } } diff --git a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarksActionProvider.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarksCommandProvider.cs similarity index 97% rename from src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarksActionProvider.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarksCommandProvider.cs index 6d7ea7870d..58a73973ac 100644 --- a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarksActionProvider.cs +++ b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/BookmarksCommandProvider.cs @@ -11,7 +11,7 @@ using Microsoft.CmdPal.Extensions.Helpers; namespace Microsoft.CmdPal.Ext.Bookmarks; -public class BookmarksActionProvider : ICommandProvider +public class BookmarksCommandProvider : ICommandProvider { public string DisplayName => $"Bookmarks"; @@ -20,7 +20,7 @@ public class BookmarksActionProvider : ICommandProvider private readonly List _commands = []; private readonly AddBookmarkPage _addNewCommand = new(); - public BookmarksActionProvider() + public BookmarksCommandProvider() { _addNewCommand.AddedAction += AddNewCommand_AddedAction; } diff --git a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/OpenInTerminalAction.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/OpenInTerminalAction.cs index 4bc8d4ef71..7c95ae99c0 100644 --- a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/OpenInTerminalAction.cs +++ b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/OpenInTerminalAction.cs @@ -36,6 +36,6 @@ internal sealed class OpenInTerminalAction : InvokableCommand System.Diagnostics.Debug.WriteLine($"Error launching Windows Terminal: {ex.Message}"); } - return ActionResult.Dismiss(); + return CommandResult.Dismiss(); } } diff --git a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/UrlAction.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/UrlAction.cs index 1c08e739f6..1e051f8957 100644 --- a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/UrlAction.cs +++ b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Bookmark/UrlAction.cs @@ -27,7 +27,7 @@ public class UrlAction : InvokableCommand Url = url; } - public override ActionResult Invoke() + public override CommandResult Invoke() { var target = _url; try @@ -47,7 +47,7 @@ public class UrlAction : InvokableCommand System.Diagnostics.Debug.WriteLine($"Error launching URL: {ex.Message}"); } - return ActionResult.Dismiss(); + return CommandResult.Dismiss(); } internal static Uri? GetUri(string url) diff --git a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorAction.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorAction.cs index 16408fa728..3fa5014073 100644 --- a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorAction.cs +++ b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorAction.cs @@ -31,7 +31,7 @@ public class CalculatorAction : InvokableCommand // ClipboardHelper.SetText(_result); } - return ActionResult.KeepOpen(); + return CommandResult.KeepOpen(); } internal void SetResult(string result, bool success) diff --git a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorActionProvider.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorCommandProvider.cs similarity index 90% rename from src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorActionProvider.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorCommandProvider.cs index d44bace9ea..e08ec34a18 100644 --- a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorActionProvider.cs +++ b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.Calc/CalculatorCommandProvider.cs @@ -9,13 +9,13 @@ using Microsoft.CmdPal.Extensions; // and more about our project templates, see: http://aka.ms/winui-project-info. namespace Microsoft.CmdPal.Ext.Calc; -public class CalculatorActionProvider : ICommandProvider +public class CalculatorCommandProvider : ICommandProvider { public string DisplayName => $"Calculator"; private readonly CalculatorTopLevelListItem calculatorCommand = new(); - public CalculatorActionProvider() + public CalculatorCommandProvider() { } diff --git a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsActionProvider.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsCommandProvider.cs similarity index 90% rename from src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsActionProvider.cs rename to src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsCommandProvider.cs index 18e8127cc3..ff63928b92 100644 --- a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsActionProvider.cs +++ b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsCommandProvider.cs @@ -8,13 +8,13 @@ using Microsoft.CmdPal.Extensions.Helpers; namespace Microsoft.CmdPal.Ext.Settings; -public class SettingsActionProvider : ICommandProvider +public class SettingsCommandProvider : ICommandProvider { public string DisplayName => $"Settings"; private readonly SettingsPage settingsPage = new(); - public SettingsActionProvider() + public SettingsCommandProvider() { } diff --git a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsForm.cs b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsForm.cs index 72ea6096df..724ef89004 100644 --- a/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsForm.cs +++ b/src/modules/cmdpal/Exts/Microsoft.CmdPal.Ext.CmdPalSettings/SettingsForm.cs @@ -77,15 +77,15 @@ internal sealed class SettingsForm : Form public override string StateJson() => throw new NotImplementedException(); - public override ActionResult SubmitForm(string payload) + public override CommandResult SubmitForm(string payload) { var formInput = JsonNode.Parse(payload)?.AsObject(); if (formInput == null) { - return ActionResult.GoHome(); + return CommandResult.GoHome(); } // Application.Current.GetService().SaveSettingAsync("GlobalHotkey", formInput["hotkey"]?.ToString() ?? string.Empty); - return ActionResult.GoHome(); + return CommandResult.GoHome(); } } diff --git a/src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessMonitorActionProvider.cs b/src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessMonitorCommandProvider.cs similarity index 91% rename from src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessMonitorActionProvider.cs rename to src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessMonitorCommandProvider.cs index 4df8272ed3..33b24c2027 100644 --- a/src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessMonitorActionProvider.cs +++ b/src/modules/cmdpal/Exts/ProcessMonitorExtension/ProcessMonitorCommandProvider.cs @@ -7,7 +7,7 @@ using Microsoft.CmdPal.Extensions.Helpers; namespace ProcessMonitorExtension; -internal sealed class ProcessMonitorActionProvider : ICommandProvider +internal sealed class ProcessMonitorCommandProvider : ICommandProvider { public string DisplayName => "Process Monitor Commands"; diff --git a/src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..fb069f3e3d --- /dev/null +++ b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,19 @@ + + + + + FileSystem + x64 + win-x64 + win10-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + False + + diff --git a/src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/launchSettings.json b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/launchSettings.json new file mode 100644 index 0000000000..7adb50094c --- /dev/null +++ b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "ProcessMonitorExtension (Package)": { + "commandName": "MsixPackage" + }, + "ProcessMonitorExtension (Unpackaged)": { + "commandName": "Project" + } + } +} diff --git a/src/modules/cmdpal/Exts/ProcessMonitorExtension/SampleExtension.cs b/src/modules/cmdpal/Exts/ProcessMonitorExtension/SampleExtension.cs index dd52b79d8e..11c16104cf 100644 --- a/src/modules/cmdpal/Exts/ProcessMonitorExtension/SampleExtension.cs +++ b/src/modules/cmdpal/Exts/ProcessMonitorExtension/SampleExtension.cs @@ -26,7 +26,7 @@ public sealed class SampleExtension : IExtension switch (providerType) { case ProviderType.Commands: - return new ProcessMonitorActionProvider(); + return new ProcessMonitorCommandProvider(); default: return null; } diff --git a/src/modules/cmdpal/Exts/ProcessMonitorExtension/SwitchToProcess.cs b/src/modules/cmdpal/Exts/ProcessMonitorExtension/SwitchToProcess.cs index 3d9e5671e2..cadb411363 100644 --- a/src/modules/cmdpal/Exts/ProcessMonitorExtension/SwitchToProcess.cs +++ b/src/modules/cmdpal/Exts/ProcessMonitorExtension/SwitchToProcess.cs @@ -22,9 +22,9 @@ internal sealed class SwitchToProcess : InvokableCommand this.Name = "Switch to"; } - public override ActionResult Invoke() + public override CommandResult Invoke() { SwitchToThisWindow(process.Process.MainWindowHandle, true); - return ActionResult.KeepOpen(); + return CommandResult.KeepOpen(); } } diff --git a/src/modules/cmdpal/Exts/ProcessMonitorExtension/TerminateProcess.cs b/src/modules/cmdpal/Exts/ProcessMonitorExtension/TerminateProcess.cs index 2ad8e9836c..438784373e 100644 --- a/src/modules/cmdpal/Exts/ProcessMonitorExtension/TerminateProcess.cs +++ b/src/modules/cmdpal/Exts/ProcessMonitorExtension/TerminateProcess.cs @@ -18,10 +18,10 @@ internal sealed class TerminateProcess : InvokableCommand Name = "End task"; } - public override ActionResult Invoke() + public override CommandResult Invoke() { var process = Process.GetProcessById(_process.ProcessId); process.Kill(); - return ActionResult.KeepOpen(); + return CommandResult.KeepOpen(); } } diff --git a/src/modules/cmdpal/Exts/SpongebotExtension/CopyTextAction.cs b/src/modules/cmdpal/Exts/SpongebotExtension/CopyTextAction.cs index d0123c493c..e76475292f 100644 --- a/src/modules/cmdpal/Exts/SpongebotExtension/CopyTextAction.cs +++ b/src/modules/cmdpal/Exts/SpongebotExtension/CopyTextAction.cs @@ -26,6 +26,6 @@ public class CopyTextAction : InvokableCommand Clipboard.SetContent(dataPackage); // ClipboardHelper.SetText(Text); - return ActionResult.KeepOpen(); + return CommandResult.KeepOpen(); } } diff --git a/src/modules/cmdpal/Exts/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/Exts/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..fb069f3e3d --- /dev/null +++ b/src/modules/cmdpal/Exts/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,19 @@ + + + + + FileSystem + x64 + win-x64 + win10-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + False + + diff --git a/src/modules/cmdpal/Exts/SpongebotExtension/Properties/launchSettings.json b/src/modules/cmdpal/Exts/SpongebotExtension/Properties/launchSettings.json new file mode 100644 index 0000000000..9c5e235100 --- /dev/null +++ b/src/modules/cmdpal/Exts/SpongebotExtension/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "SpongebotExtension (Package)": { + "commandName": "MsixPackage" + }, + "SpongebotExtension (Unpackaged)": { + "commandName": "Project" + } + } +} diff --git a/src/modules/cmdpal/Exts/SpongebotExtension/SpongeSettingsForm.cs b/src/modules/cmdpal/Exts/SpongebotExtension/SpongeSettingsForm.cs index 89319bd952..4db6ef22d1 100644 --- a/src/modules/cmdpal/Exts/SpongebotExtension/SpongeSettingsForm.cs +++ b/src/modules/cmdpal/Exts/SpongebotExtension/SpongeSettingsForm.cs @@ -56,12 +56,12 @@ internal sealed class SpongeSettingsForm : Form public override string StateJson() => throw new NotImplementedException(); - public override ActionResult SubmitForm(string payload) + public override CommandResult SubmitForm(string payload) { var formInput = JsonNode.Parse(payload); if (formInput == null) { - return ActionResult.GoHome(); + return CommandResult.GoHome(); } // get the name and url out of the values @@ -77,6 +77,6 @@ internal sealed class SpongeSettingsForm : Form """; File.WriteAllText(SpongebotPage.StateJsonPath(), json); - return ActionResult.GoHome(); + return CommandResult.GoHome(); } } diff --git a/src/modules/cmdpal/Exts/TemplateExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/Exts/TemplateExtension/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..fb069f3e3d --- /dev/null +++ b/src/modules/cmdpal/Exts/TemplateExtension/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,19 @@ + + + + + FileSystem + x64 + win-x64 + win10-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + False + + diff --git a/src/modules/cmdpal/Exts/TemplateExtension/Properties/launchSettings.json b/src/modules/cmdpal/Exts/TemplateExtension/Properties/launchSettings.json new file mode 100644 index 0000000000..e9374fab80 --- /dev/null +++ b/src/modules/cmdpal/Exts/TemplateExtension/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "TemplateExtension (Package)": { + "commandName": "MsixPackage" + }, + "TemplateExtension (Unpackaged)": { + "commandName": "Project" + } + } +} diff --git a/src/modules/cmdpal/Exts/TemplateExtension/TemplateExtensionPage.cs b/src/modules/cmdpal/Exts/TemplateExtension/TemplateExtensionPage.cs index 7af04d49ba..fd19fc6987 100644 --- a/src/modules/cmdpal/Exts/TemplateExtension/TemplateExtensionPage.cs +++ b/src/modules/cmdpal/Exts/TemplateExtension/TemplateExtensionPage.cs @@ -23,7 +23,7 @@ internal sealed class TemplateExtensionPage : ListPage new ListSection() { Items = [ - new ListItem(new NoOpAction()) { Title = "TODO: Implement your extension here" } + new ListItem(new NoOpCommand()) { Title = "TODO: Implement your extension here" } ], } ]; diff --git a/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AppAction.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AppAction.cs index d32dae0a5d..005c3fa723 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AppAction.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/AppAction.cs @@ -59,9 +59,9 @@ internal sealed class AppAction : InvokableCommand } } - public override ActionResult Invoke() + public override CommandResult Invoke() { _ = Launch(); - return ActionResult.GoHome(); + return CommandResult.GoHome(); } } diff --git a/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/OpenPathAction.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/OpenPathAction.cs index 4a75315bfd..bfcf29da2a 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/OpenPathAction.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Builtins/Apps/OpenPathAction.cs @@ -20,10 +20,10 @@ internal sealed class OpenPathAction(string target) : InvokableCommand }); } - public override ActionResult Invoke() + public override CommandResult Invoke() { LaunchTarget(_target).Start(); - return ActionResult.GoHome(); + return CommandResult.GoHome(); } } diff --git a/src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitAction.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitAction.cs index 2cdfafbc94..29dcc4194f 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitAction.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitAction.cs @@ -20,7 +20,7 @@ public class QuitAction : InvokableCommand, IFallbackHandler public override ICommandResult Invoke() { QuitRequested?.Invoke(this, new()); - return ActionResult.KeepOpen(); + return CommandResult.KeepOpen(); } public void UpdateQuery(string query) diff --git a/src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitActionProvider.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitCommandProvider.cs similarity index 95% rename from src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitActionProvider.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitCommandProvider.cs index 3aefec8d92..c1d2fb31f3 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitActionProvider.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Builtins/QuitAction/QuitCommandProvider.cs @@ -8,7 +8,7 @@ using Windows.Foundation; namespace WindowsCommandPalette.BuiltinCommands; -public class QuitActionProvider : ICommandProvider +public class QuitCommandProvider : ICommandProvider { public string DisplayName => string.Empty; diff --git a/src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsAction.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsAction.cs index 97c35e252b..aaf1c7258e 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsAction.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsAction.cs @@ -17,7 +17,7 @@ public class ReloadExtensionsAction : InvokableCommand, IFallbackHandler public override ICommandResult Invoke() { - return ActionResult.GoHome(); + return CommandResult.GoHome(); } public void UpdateQuery(string query) diff --git a/src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsActionProvider.cs b/src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsCommandProvider.cs similarity index 93% rename from src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsActionProvider.cs rename to src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsCommandProvider.cs index b458d8e92b..ec89f2bd88 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsActionProvider.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Builtins/ReloadExtensionsCommandProvider.cs @@ -8,7 +8,7 @@ using Windows.Foundation; namespace WindowsCommandPalette.BuiltinCommands; -public class ReloadExtensionsActionProvider : ICommandProvider +public class ReloadExtensionsCommandProvider : ICommandProvider { public string DisplayName => string.Empty; diff --git a/src/modules/cmdpal/WindowsCommandPalette/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/WindowsCommandPalette/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..fb069f3e3d --- /dev/null +++ b/src/modules/cmdpal/WindowsCommandPalette/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,19 @@ + + + + + FileSystem + x64 + win-x64 + win10-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + False + + diff --git a/src/modules/cmdpal/WindowsCommandPalette/Properties/launchSettings.json b/src/modules/cmdpal/WindowsCommandPalette/Properties/launchSettings.json new file mode 100644 index 0000000000..2043707ea3 --- /dev/null +++ b/src/modules/cmdpal/WindowsCommandPalette/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "WindowsCommandPalette (Package)": { + "commandName": "MsixPackage" + }, + "WindowsCommandPalette (Unpackaged)": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/src/modules/cmdpal/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/CommandProviderWrapper.cs similarity index 79% rename from src/modules/cmdpal/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs rename to src/modules/cmdpal/WindowsCommandPalette/Views/CommandProviderWrapper.cs index a71b0ddc70..ffd70b7aa5 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Views/ActionsProviderWrapper.xaml.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Views/CommandProviderWrapper.cs @@ -8,26 +8,26 @@ using Windows.Win32; namespace WindowsCommandPalette.Views; -public sealed class ActionsProviderWrapper +public sealed class CommandProviderWrapper { public bool IsExtension => extensionWrapper != null; private readonly bool isValid; - private ICommandProvider ActionProvider { get; } + private ICommandProvider CommandProvider { get; } private readonly IExtensionWrapper? extensionWrapper; private IListItem[] _topLevelItems = []; public IListItem[] TopLevelItems => _topLevelItems; - public ActionsProviderWrapper(ICommandProvider provider) + public CommandProviderWrapper(ICommandProvider provider) { - ActionProvider = provider; + CommandProvider = provider; isValid = true; } - public ActionsProviderWrapper(IExtensionWrapper extension) + public CommandProviderWrapper(IExtensionWrapper extension) { extensionWrapper = extension; var extensionImpl = extension.GetExtensionObject(); @@ -36,7 +36,7 @@ public sealed class ActionsProviderWrapper throw new ArgumentException("extension didn't actually implement ICommandProvider"); } - ActionProvider = provider; + CommandProvider = provider; isValid = true; } @@ -47,7 +47,7 @@ public sealed class ActionsProviderWrapper return; } - var t = new Task(() => ActionProvider.TopLevelCommands()); + var t = new Task(() => CommandProvider.TopLevelCommands()); t.Start(); var commands = await t.ConfigureAwait(false); @@ -72,7 +72,7 @@ public sealed class ActionsProviderWrapper } } - public override bool Equals(object? obj) => obj is ActionsProviderWrapper wrapper && isValid == wrapper.isValid; + public override bool Equals(object? obj) => obj is CommandProviderWrapper wrapper && isValid == wrapper.isValid; public override int GetHashCode() { diff --git a/src/modules/cmdpal/WindowsCommandPalette/Views/ListPage.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/ListPage.xaml.cs index 032115ed63..838439428d 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Views/ListPage.xaml.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Views/ListPage.xaml.cs @@ -18,7 +18,7 @@ namespace WindowsCommandPalette.Views; /// /// An empty page that can be used on its own or navigated to within a Frame. /// -public sealed partial class ListPage : Page, INotifyPropertyChanged +public sealed partial class ListPage : Microsoft.UI.Xaml.Controls.Page, INotifyPropertyChanged { public ListPageViewModel? ViewModel { get; set; } diff --git a/src/modules/cmdpal/WindowsCommandPalette/Views/MainPage.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/MainPage.xaml.cs index f84371090b..2034382439 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Views/MainPage.xaml.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Views/MainPage.xaml.cs @@ -91,7 +91,7 @@ public sealed partial class MainPage : Page // TODO! I don't understand async enough to get why this has to be ConfigureAwait(false) foreach (var provider in ViewModel.BuiltInCommands) { - var wrapper = new ActionsProviderWrapper(provider); + var wrapper = new CommandProviderWrapper(provider); ViewModel.ActionsProvider.Add(wrapper); await LoadTopLevelCommandsFromProvider(wrapper).ConfigureAwait(false); @@ -271,7 +271,7 @@ public sealed partial class MainPage : Page try { await extension.StartExtensionAsync(); - var wrapper = new ActionsProviderWrapper(extension); + var wrapper = new CommandProviderWrapper(extension); ViewModel.ActionsProvider.Add(wrapper); await LoadTopLevelCommandsFromProvider(wrapper); } @@ -281,11 +281,11 @@ public sealed partial class MainPage : Page } } - private async Task LoadTopLevelCommandsFromProvider(ActionsProviderWrapper actionProvider) + private async Task LoadTopLevelCommandsFromProvider(CommandProviderWrapper CommandProvider) { // TODO! do this better async - await actionProvider.LoadTopLevelCommands().ConfigureAwait(false); - foreach (var i in actionProvider.TopLevelItems) + await CommandProvider.LoadTopLevelCommands().ConfigureAwait(false); + foreach (var i in CommandProvider.TopLevelItems) { ViewModel.TopLevelCommands.Add(new(i)); } diff --git a/src/modules/cmdpal/WindowsCommandPalette/Views/MainViewModel.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/MainViewModel.xaml.cs index 3ea533ebde..8f9f31fc15 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Views/MainViewModel.xaml.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Views/MainViewModel.xaml.cs @@ -20,14 +20,14 @@ namespace WindowsCommandPalette.Views; public sealed class MainViewModel : IDisposable { - private readonly QuitActionProvider _quitActionProvider = new(); - private readonly ReloadExtensionsActionProvider _reloadActionProvider = new(); + private readonly QuitCommandProvider _quitCommandProvider = new(); + private readonly ReloadExtensionsCommandProvider _reloadCommandProvider = new(); public AllAppsPage Apps { get; set; } = new(); - public event TypedEventHandler? QuitRequested { add => _quitActionProvider.QuitRequested += value; remove => _quitActionProvider.QuitRequested -= value; } + public event TypedEventHandler? QuitRequested { add => _quitCommandProvider.QuitRequested += value; remove => _quitCommandProvider.QuitRequested -= value; } - public ObservableCollection ActionsProvider { get; set; } = []; + public ObservableCollection ActionsProvider { get; set; } = []; public ObservableCollection> TopLevelCommands { get; set; } = []; @@ -47,11 +47,11 @@ public sealed class MainViewModel : IDisposable internal MainViewModel() { - BuiltInCommands.Add(new BookmarksActionProvider()); - BuiltInCommands.Add(new CalculatorActionProvider()); - BuiltInCommands.Add(new SettingsActionProvider()); - BuiltInCommands.Add(_quitActionProvider); - BuiltInCommands.Add(_reloadActionProvider); + BuiltInCommands.Add(new BookmarksCommandProvider()); + BuiltInCommands.Add(new CalculatorCommandProvider()); + BuiltInCommands.Add(new SettingsCommandProvider()); + BuiltInCommands.Add(_quitCommandProvider); + BuiltInCommands.Add(_reloadCommandProvider); ResetTopLevel(); @@ -184,7 +184,7 @@ public sealed class MainViewModel : IDisposable public void Dispose() { - _quitActionProvider.Dispose(); - _reloadActionProvider.Dispose(); + _quitCommandProvider.Dispose(); + _reloadCommandProvider.Dispose(); } } diff --git a/src/modules/cmdpal/WindowsCommandPalette/Views/NoOpAction.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/NoOpAction.xaml.cs index 4e7615b12c..138e84292b 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Views/NoOpAction.xaml.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Views/NoOpAction.xaml.cs @@ -11,6 +11,6 @@ public sealed class NoOpAction : InvokableCommand { public override ICommandResult Invoke() { - return ActionResult.KeepOpen(); + return CommandResult.KeepOpen(); } } diff --git a/src/modules/cmdpal/doc/initial-sdk-spec/initial-sdk-spec.md b/src/modules/cmdpal/doc/initial-sdk-spec/initial-sdk-spec.md index dcce39c181..cf921270b2 100644 --- a/src/modules/cmdpal/doc/initial-sdk-spec/initial-sdk-spec.md +++ b/src/modules/cmdpal/doc/initial-sdk-spec/initial-sdk-spec.md @@ -488,6 +488,7 @@ information that the host application will then use to render the page. ```csharp interface IPage requires ICommand { + String Title { get; }; Boolean Loading { get; }; } ``` @@ -500,6 +501,9 @@ Pages can be one of several types, each detailed below: * [Markdown](#Markdown) * [Form](#Form) +If a page returns a null or empty `Title`, DevPal will display the `Name` of the +`ICommand` instead. + Pages have a `Loading` property which they can use to indicate to DevPal that the content is still loading. When `Loading` is `true`, DevPal will show an intederminate loading bar to the user. When `Loading` is `false`, DevPal will @@ -551,10 +555,11 @@ interface ICommandContextItem requires IContextItem { interface ISeparatorContextItem requires IContextItem {} interface IListItem requires INotifyPropChanged { + IconDataType Icon{ get; }; String Title{ get; }; String Subtitle{ get; }; ICommand Command{ get; }; - IContextItem[] MoreCommands{ get; }; // TODO: name should be better + IContextItem[] MoreCommands{ get; }; ITag[] Tags{ get; }; IDetails Details{ get; }; IFallbackHandler FallbackHandler{ get; }; @@ -595,9 +600,14 @@ they like. * For example: An "Agenda" extension may want to have one section for each day, with each section's items containing the events for the day. +![Another mockup of the elements of a list item](./list-elements-mock-002.png) -Each ListItem has one default `Action`. This is the action that will be run when -the user selects the item. ListItems may also have a list of `MoreCommands`. +Each ListItem has one default `Command`. This is the command that will be run +when the user selects the item. If the IListItem has a non-null `Icon`, that +icon will be displayed in the list. If the `Icon` is null, DevPal will display +the `Icon` of the list item's `Command` instead. + + ListItems may also have a list of `MoreCommands`. These are additional commands that the user can take on the item. These will be displayed to the user in the "More commands" flyout when the user has that item selected. As the user moves focus through the list to select different items, we @@ -897,7 +907,6 @@ simple formatting options. ```csharp interface IMarkdownPage requires IPage { - String Title { get; }; String[] Bodies(); // TODO! should this be an IBody, so we can make it observable? IDetails Details(); IContextItem[] Commands { get; }; @@ -1289,6 +1298,7 @@ classDiagram } IPage --|> ICommand class IPage { + String Title Boolean Loading } @@ -1311,7 +1321,6 @@ classDiagram IMarkdownPage --|> IPage class IMarkdownPage { - String Title String[] Bodies() IDetails Details() IContextItem[] Commands @@ -1346,6 +1355,7 @@ classDiagram %% IListItem --|> INotifyPropChanged class IListItem { + IconDataType Icon String Title String Subtitle ICommand Command diff --git a/src/modules/cmdpal/doc/initial-sdk-spec/list-elements-mock-002.pdn b/src/modules/cmdpal/doc/initial-sdk-spec/list-elements-mock-002.pdn new file mode 100644 index 0000000000000000000000000000000000000000..541fbc8b52bde4276bc78f954a8543d26f342f08 GIT binary patch literal 281445 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 _kind; - public static ActionResult Dismiss() + public static CommandResult Dismiss() { - return new ActionResult() + return new CommandResult() { _kind = CommandResultKind.Dismiss }; } - public static ActionResult GoHome() + public static CommandResult GoHome() { - return new ActionResult() + return new CommandResult() { _kind = CommandResultKind.GoHome, _args = null, }; } - public static ActionResult KeepOpen() + public static CommandResult KeepOpen() { - return new ActionResult() + return new CommandResult() { _kind = CommandResultKind.KeepOpen, _args = null, diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/FormPage.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/FormPage.cs index e026132724..4d3f742637 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/FormPage.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/FormPage.cs @@ -4,19 +4,7 @@ namespace Microsoft.CmdPal.Extensions.Helpers; -public class FormPage : Action, IFormPage +public class FormPage : Page, IFormPage { - private bool _loading; - - public bool Loading - { - get => _loading; - set - { - _loading = value; - OnPropertyChanged(nameof(Loading)); - } - } - public virtual IForm[] Forms() => throw new NotImplementedException(); } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/InvokableCommand.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/InvokableCommand.cs index 79a222b70d..8418ed6108 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/InvokableCommand.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/InvokableCommand.cs @@ -4,7 +4,7 @@ namespace Microsoft.CmdPal.Extensions.Helpers; -public class InvokableCommand : Action, IInvokableCommand +public class InvokableCommand : Command, IInvokableCommand { public virtual ICommandResult Invoke() => throw new NotImplementedException(); } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListItem.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListItem.cs index 98166538e6..c6a1127c19 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListItem.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListItem.cs @@ -8,6 +8,7 @@ namespace Microsoft.CmdPal.Extensions.Helpers; public class ListItem : BaseObservable, IListItem { + private IconDataType? _icon; private string _title = string.Empty; private string _subtitle = string.Empty; private ITag[] _tags = []; @@ -16,6 +17,16 @@ public class ListItem : BaseObservable, IListItem private IContextItem[] _moreCommands = []; private IFallbackHandler? _fallbackHandler; + public IconDataType? Icon + { + get => _icon ?? _command?.Icon; + set + { + _icon = value; + OnPropertyChanged(nameof(Icon)); + } + } + public string Title { get diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListPage.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListPage.cs index ef2f242692..63bb85fee5 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListPage.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/ListPage.cs @@ -1,11 +1,10 @@ namespace Microsoft.CmdPal.Extensions.Helpers; -public class ListPage : Action, IListPage +public class ListPage : Page, IListPage { private string _placeholderText = string.Empty; private string _searchText = string.Empty; private bool _showDetails; - private bool _loading; private IFilters? _filters; private IGridProperties? _gridProperties; @@ -39,16 +38,6 @@ public class ListPage : Action, IListPage } } - public bool Loading - { - get => _loading; - set - { - _loading = value; - OnPropertyChanged(nameof(Loading)); - } - } - public IFilters? Filters { get => _filters; diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MarkdownPage.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MarkdownPage.cs index bb8a7a9a1f..a804bf17f7 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MarkdownPage.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/MarkdownPage.cs @@ -4,31 +4,10 @@ namespace Microsoft.CmdPal.Extensions.Helpers; -public class MarkdownPage : Action, IMarkdownPage +public class MarkdownPage : Page, IMarkdownPage { - private bool _loading; private ITag[] _tags = []; - private string _title = ""; - public string Title - { - get => !string.IsNullOrEmpty(_title) ? _title : Name; - set - { - _title = value; - OnPropertyChanged(nameof(Title)); - } - } - - public bool Loading - { - get => _loading; - set - { - _loading = value; - OnPropertyChanged(nameof(Loading)); - } - } public ITag[] Tags { get => _tags; diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/NoOpAction.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/NoOpAction.cs deleted file mode 100644 index e8b594dc16..0000000000 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/NoOpAction.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Microsoft.CmdPal.Extensions.Helpers; - -public class NoOpAction : InvokableCommand -{ - public override ICommandResult Invoke() => ActionResult.KeepOpen(); -} diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/NoOpCommand.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/NoOpCommand.cs new file mode 100644 index 0000000000..c6ab2865c3 --- /dev/null +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/NoOpCommand.cs @@ -0,0 +1,6 @@ +namespace Microsoft.CmdPal.Extensions.Helpers; + +public class NoOpCommand : InvokableCommand +{ + public override ICommandResult Invoke() => CommandResult.KeepOpen(); +} diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Page.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Page.cs new file mode 100644 index 0000000000..2554610efc --- /dev/null +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Page.cs @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CmdPal.Extensions.Helpers; + +public class Page : Command, IPage +{ + private bool _loading; + private string _title = string.Empty; + + public bool Loading + { + get => _loading; + set + { + _loading = value; + OnPropertyChanged(nameof(Loading)); + } + } + public string Title + { + get => _title; + set + { + _title = value; + OnPropertyChanged(nameof(Name)); + } + } +} diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs index 103edcee24..9cbfff7679 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions.Helpers/Tag.cs @@ -60,7 +60,7 @@ public class Tag : BaseObservable, ITag set { _command = value; - OnPropertyChanged(nameof(Action)); + OnPropertyChanged(nameof(Command)); } } diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions/Microsoft.CmdPal.Extensions.idl b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions/Microsoft.CmdPal.Extensions.idl index 4b22161417..51f2ced8d1 100644 --- a/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions/Microsoft.CmdPal.Extensions.idl +++ b/src/modules/cmdpal/extensionsdk/Microsoft.CmdPal.Extensions/Microsoft.CmdPal.Extensions.idl @@ -124,6 +124,7 @@ namespace Microsoft.CmdPal.Extensions [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] interface IPage requires ICommand { + String Title { get; }; Boolean Loading { get; }; } @@ -150,10 +151,11 @@ namespace Microsoft.CmdPal.Extensions [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] interface IListItem requires INotifyPropChanged { + IconDataType Icon{ get; }; String Title{ get; }; String Subtitle{ get; }; ICommand Command{ get; }; - IContextItem[] MoreCommands{ get; }; // TODO: name should be better + IContextItem[] MoreCommands{ get; }; ITag[] Tags{ get; }; IDetails Details{ get; }; IFallbackHandler FallbackHandler{ get; }; @@ -188,7 +190,6 @@ namespace Microsoft.CmdPal.Extensions [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] interface IMarkdownPage requires IPage { - String Title { get; }; String[] Bodies(); // TODO! should this be an IBody, so we can make it observable? IDetails Details(); IContextItem[] Commands { get; }; diff --git a/src/modules/cmdpal/extensionsdk/Microsoft.Windows.CommandPalette.Extensions/Microsoft.Windows.CommandPalette.Extensions.idl b/src/modules/cmdpal/extensionsdk/Microsoft.Windows.CommandPalette.Extensions/Microsoft.Windows.CommandPalette.Extensions.idl deleted file mode 100644 index 723c429aa9..0000000000 --- a/src/modules/cmdpal/extensionsdk/Microsoft.Windows.CommandPalette.Extensions/Microsoft.Windows.CommandPalette.Extensions.idl +++ /dev/null @@ -1,222 +0,0 @@ -namespace Microsoft.CmdPal.Extensions -{ - [contractversion(1)] - apicontract RunContract {} - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IExtension { - IInspectable GetProvider(ProviderType providerType); - void Dispose(); - }; - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - enum ProviderType { - Commands = 0, - }; - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - runtimeclass IconDataType { - IconDataType(String iconString); - String Icon { get; }; - }; - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface INotifyPropChanged { - event Windows.Foundation.TypedEventHandler PropChanged; - }; - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - runtimeclass PropChangedEventArgs { - PropChangedEventArgs(String propertyName); - String PropertyName { get; }; - }; - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface ICommand requires INotifyPropChanged{ - String Name{ get; }; - IconDataType Icon{ get; }; - } - - enum CommandResultKind { - Dismiss, // Reset the palette to the main page and dismiss - GoHome, // Go back to the main page, but keep it open - KeepOpen, // Do nothing. - GoToPage, // Go to another page. GoToPageArgs will tell you where. - }; - [uuid("f9d6423b-bd5e-44bb-a204-2f5c77a72396")] - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface ICommandResultArgs{}; - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface ICommandResult { - CommandResultKind Kind { get; }; - ICommandResultArgs Args { get; }; - } - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IGoToPageArgs requires ICommandResultArgs{ - String PageId { get; }; - } - - // This is a "leaf" of the UI. This is something that can be "done" by the user. - // * A ListPage - // * the MoreCommands flyout of for a ListItem or a MarkdownPage - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IInvokableCommand requires ICommand { - ICommandResult Invoke(); - } - - [uuid("ef5db50c-d26b-4aee-9343-9f98739ab411")] - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IFilterItem {} - - [uuid("0a923c7f-5b7b-431d-9898-3c8c841d02ed")] - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface ISeparatorFilterItem requires IFilterItem {} - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IFilter requires IFilterItem { - String Id { get; }; - String Name { get; }; - IconDataType Icon { get; }; - } - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IFilters { - String CurrentFilterId { get; set; }; - IFilterItem[] Filters(); - } - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface ITag { - IconDataType Icon { get; }; - String Text { get; }; - Windows.UI.Color Color { get; }; - String ToolTip { get; }; - ICommand Command { get; }; - }; - - [uuid("6a6dd345-37a3-4a1e-914d-4f658a4d583d")] - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IDetailsData {} - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IDetailsElement { - String Key { get; }; - IDetailsData Data { get; }; - } - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IDetails { - IconDataType HeroImage { get; }; - String Title { get; }; - String Body { get; }; - IDetailsElement[] Metadata { get; }; - } - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IDetailsTags requires IDetailsData { - ITag[] Tags { get; }; - } - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IDetailsLink requires IDetailsData { - Windows.Foundation.Uri Link { get; }; - String Text { get; }; - } - [uuid("58070392-02bb-4e89-9beb-47ceb8c3d741")] - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IDetailsSeparator requires IDetailsData {} - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IPage requires ICommand { - Boolean Loading { get; }; - } - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IFallbackHandler { - void UpdateQuery(String query); - } - - [uuid("c78b9851-e76b-43ee-8f76-da5ba14e69a4")] - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IContextItem {} - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface ICommandContextItem requires IContextItem { - ICommand Command { get; }; - String Tooltip { get; }; - Boolean IsCritical { get; }; // todo: better name for "make this red" - - // TODO-future: we should allow app developers to specify a default keybinding for each of these actions - } - [uuid("924a87fc-32fe-4471-9156-84b3b30275a6")] - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface ISeparatorContextItem requires IContextItem {} - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IListItem requires INotifyPropChanged { - String Title{ get; }; - String Subtitle{ get; }; - ICommand Command{ get; }; - IContextItem[] MoreCommands{ get; }; // TODO: name should be better - ITag[] Tags{ get; }; - IDetails Details{ get; }; - IFallbackHandler FallbackHandler{ get; }; - } - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface ISection { - String Title { get; }; - IListItem[] Items { get; }; - } - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IGridProperties { - Windows.Foundation.Size TileSize { get; }; - } - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IListPage requires IPage { - String SearchText { get; }; - String PlaceholderText { get; }; - Boolean ShowDetails{ get; }; - IFilters Filters { get; }; - IGridProperties GridProperties { get; }; - - ISection[] GetItems(); // DevPal will be responsible for filtering the list of items - } - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IDynamicListPage requires IListPage { - ISection[] GetItems(String query); // DevPal will do no filtering of these items - } - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IMarkdownPage requires IPage { - String Title { get; }; - String[] Bodies(); // TODO! should this be an IBody, so we can make it observable? - IDetails Details(); - IContextItem[] Commands { get; }; - } - - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IForm { // TODO! should this be observable? - String TemplateJson(); - String DataJson(); - String StateJson(); - ICommandResult SubmitForm(String payload); - } - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface IFormPage requires IPage { - IForm[] Forms(); - } - - [contract(Microsoft.CmdPal.Extensions.ExtensionsContract, 1)] - interface ICommandProvider requires Windows.Foundation.IClosable - { - String DisplayName { get; }; - IconDataType Icon { get; }; - // TODO! Boolean CanBeCached { get; }; - // TODO! IFormPage SettingsPage { get; }; - - IListItem[] TopLevelCommands(); - }; - - -} From f77a747d15d2cb6921473043320cd0b8c5ecc304 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Fri, 6 Sep 2024 13:27:51 -0700 Subject: [PATCH 22/26] Recovering arm64 support and adjusting runtime ID for x64 --- .../PublishProfiles/win-arm64.pubxml | 18 ++++++++++++++++++ .../Properties/PublishProfiles/win-x64.pubxml | 3 +-- .../PublishProfiles/win-arm64.pubxml | 18 ++++++++++++++++++ .../PublishProfiles/win-arm64.pubxml | 18 ++++++++++++++++++ .../Properties/PublishProfiles/win-x64.pubxml | 3 +-- .../PublishProfiles/win-arm64.pubxml | 18 ++++++++++++++++++ .../Properties/PublishProfiles/win-x64.pubxml | 3 +-- .../PublishProfiles/win-arm64.pubxml | 18 ++++++++++++++++++ .../Properties/PublishProfiles/win-x64.pubxml | 3 +-- .../PublishProfiles/win-arm64.pubxml | 18 ++++++++++++++++++ .../Properties/PublishProfiles/win-x64.pubxml | 3 +-- 11 files changed, 113 insertions(+), 10 deletions(-) create mode 100644 src/modules/cmdpal/Exts/HackerNewsExtension/Properties/PublishProfiles/win-arm64.pubxml create mode 100644 src/modules/cmdpal/Exts/MastodonExtension/Properties/PublishProfiles/win-arm64.pubxml create mode 100644 src/modules/cmdpal/Exts/MediaControlsExtension/Properties/PublishProfiles/win-arm64.pubxml create mode 100644 src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/PublishProfiles/win-arm64.pubxml create mode 100644 src/modules/cmdpal/Exts/SpongebotExtension/Properties/PublishProfiles/win-arm64.pubxml create mode 100644 src/modules/cmdpal/Exts/TemplateExtension/Properties/PublishProfiles/win-arm64.pubxml diff --git a/src/modules/cmdpal/Exts/HackerNewsExtension/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/Exts/HackerNewsExtension/Properties/PublishProfiles/win-arm64.pubxml new file mode 100644 index 0000000000..ccd091e1b4 --- /dev/null +++ b/src/modules/cmdpal/Exts/HackerNewsExtension/Properties/PublishProfiles/win-arm64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + ARM64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + True + + \ No newline at end of file diff --git a/src/modules/cmdpal/Exts/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/Exts/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml index fb069f3e3d..2c790532c6 100644 --- a/src/modules/cmdpal/Exts/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml +++ b/src/modules/cmdpal/Exts/HackerNewsExtension/Properties/PublishProfiles/win-x64.pubxml @@ -6,8 +6,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. FileSystem x64 - win-x64 - win10-x64 + win-x64 bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ true False diff --git a/src/modules/cmdpal/Exts/MastodonExtension/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/Exts/MastodonExtension/Properties/PublishProfiles/win-arm64.pubxml new file mode 100644 index 0000000000..e7a6a3728c --- /dev/null +++ b/src/modules/cmdpal/Exts/MastodonExtension/Properties/PublishProfiles/win-arm64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + ARM64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + False + + diff --git a/src/modules/cmdpal/Exts/MediaControlsExtension/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/Exts/MediaControlsExtension/Properties/PublishProfiles/win-arm64.pubxml new file mode 100644 index 0000000000..cea430ad55 --- /dev/null +++ b/src/modules/cmdpal/Exts/MediaControlsExtension/Properties/PublishProfiles/win-arm64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + ARM64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + False + + diff --git a/src/modules/cmdpal/Exts/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/Exts/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml index fb069f3e3d..2c790532c6 100644 --- a/src/modules/cmdpal/Exts/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml +++ b/src/modules/cmdpal/Exts/MediaControlsExtension/Properties/PublishProfiles/win-x64.pubxml @@ -6,8 +6,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. FileSystem x64 - win-x64 - win10-x64 + win-x64 bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ true False diff --git a/src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/PublishProfiles/win-arm64.pubxml new file mode 100644 index 0000000000..cea430ad55 --- /dev/null +++ b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/PublishProfiles/win-arm64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + ARM64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + False + + diff --git a/src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml index fb069f3e3d..2c790532c6 100644 --- a/src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml +++ b/src/modules/cmdpal/Exts/ProcessMonitorExtension/Properties/PublishProfiles/win-x64.pubxml @@ -6,8 +6,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. FileSystem x64 - win-x64 - win10-x64 + win-x64 bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ true False diff --git a/src/modules/cmdpal/Exts/SpongebotExtension/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/Exts/SpongebotExtension/Properties/PublishProfiles/win-arm64.pubxml new file mode 100644 index 0000000000..cea430ad55 --- /dev/null +++ b/src/modules/cmdpal/Exts/SpongebotExtension/Properties/PublishProfiles/win-arm64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + ARM64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + False + + diff --git a/src/modules/cmdpal/Exts/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/Exts/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml index fb069f3e3d..2c790532c6 100644 --- a/src/modules/cmdpal/Exts/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml +++ b/src/modules/cmdpal/Exts/SpongebotExtension/Properties/PublishProfiles/win-x64.pubxml @@ -6,8 +6,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. FileSystem x64 - win-x64 - win10-x64 + win-x64 bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ true False diff --git a/src/modules/cmdpal/Exts/TemplateExtension/Properties/PublishProfiles/win-arm64.pubxml b/src/modules/cmdpal/Exts/TemplateExtension/Properties/PublishProfiles/win-arm64.pubxml new file mode 100644 index 0000000000..cea430ad55 --- /dev/null +++ b/src/modules/cmdpal/Exts/TemplateExtension/Properties/PublishProfiles/win-arm64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + ARM64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + False + + diff --git a/src/modules/cmdpal/Exts/TemplateExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/Exts/TemplateExtension/Properties/PublishProfiles/win-x64.pubxml index fb069f3e3d..2c790532c6 100644 --- a/src/modules/cmdpal/Exts/TemplateExtension/Properties/PublishProfiles/win-x64.pubxml +++ b/src/modules/cmdpal/Exts/TemplateExtension/Properties/PublishProfiles/win-x64.pubxml @@ -6,8 +6,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. FileSystem x64 - win-x64 - win10-x64 + win-x64 bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ true False From a76af1f8c79813f2a43680a073b95ae046a8a939 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Fri, 6 Sep 2024 13:29:44 -0700 Subject: [PATCH 23/26] missed one --- .../Properties/PublishProfiles/win-x64.pubxml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/modules/cmdpal/Exts/MastodonExtension/Properties/PublishProfiles/win-x64.pubxml b/src/modules/cmdpal/Exts/MastodonExtension/Properties/PublishProfiles/win-x64.pubxml index fb069f3e3d..2c790532c6 100644 --- a/src/modules/cmdpal/Exts/MastodonExtension/Properties/PublishProfiles/win-x64.pubxml +++ b/src/modules/cmdpal/Exts/MastodonExtension/Properties/PublishProfiles/win-x64.pubxml @@ -6,8 +6,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. FileSystem x64 - win-x64 - win10-x64 + win-x64 bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ true False From 4524a6c079984520b0a3e7cb01d982ab882a0395 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Fri, 6 Sep 2024 15:37:10 -0700 Subject: [PATCH 24/26] more and more :) --- .../WindowsCommandPalette/ListItemViewModel.cs | 8 ++++---- .../cmdpal/WindowsCommandPalette/TagViewModel.cs | 14 +++++++------- .../Views/FormPageViewModel.xaml.cs | 2 +- .../Views/ListPageViewModel.xaml.cs | 11 ++++++----- .../WindowsCommandPalette/Views/MainPage.xaml.cs | 6 +++--- 5 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/modules/cmdpal/WindowsCommandPalette/ListItemViewModel.cs b/src/modules/cmdpal/WindowsCommandPalette/ListItemViewModel.cs index b2daba4800..91cc77074d 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/ListItemViewModel.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/ListItemViewModel.cs @@ -24,9 +24,9 @@ public sealed class ListItemViewModel : INotifyPropertyChanged, IDisposable internal string Icon { get; private set; } - internal Lazy _Details; + private readonly Lazy _details; - internal DetailsViewModel? Details => _Details.Value; + internal DetailsViewModel? Details => _details.Value; public event PropertyChangedEventHandler? PropertyChanged; @@ -70,7 +70,7 @@ public sealed class ListItemViewModel : INotifyPropertyChanged, IDisposable internal bool HasMoreCommands => AllCommands.Any(); - internal TagViewModel[] Tags = []; + public TagViewModel[] Tags { get; set; } = []; internal bool HasTags => Tags.Length > 0; @@ -111,7 +111,7 @@ public sealed class ListItemViewModel : INotifyPropertyChanged, IDisposable this.Tags = model.Tags.Select(t => new TagViewModel(t)).ToArray(); } - this._Details = new(() => + this._details = new(() => { try { diff --git a/src/modules/cmdpal/WindowsCommandPalette/TagViewModel.cs b/src/modules/cmdpal/WindowsCommandPalette/TagViewModel.cs index 4baa219a20..5b1678069e 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/TagViewModel.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/TagViewModel.cs @@ -12,11 +12,11 @@ namespace DeveloperCommandPalette; public sealed class TagViewModel : INotifyPropertyChanged { - internal ITag Tag; + private readonly ITag _tag; - internal IconDataType Icon => Tag.Icon; + internal IconDataType Icon => _tag.Icon; - internal string Text => Tag.Text; + internal string Text => _tag.Text; public event PropertyChangedEventHandler? PropertyChanged; @@ -25,15 +25,15 @@ public sealed class TagViewModel : INotifyPropertyChanged internal IconElement IcoElement => Microsoft.Terminal.UI.IconPathConverter.IconMUX(Icon?.Icon ?? string.Empty, 10); // TODO! VV These guys should have proper theme-aware lookups for default values - internal Brush BorderBrush => new SolidColorBrush(Tag.Color); + internal Brush BorderBrush => new SolidColorBrush(_tag.Color); - internal Brush TextBrush => new SolidColorBrush(Tag.Color.A == 0 ? Color.FromArgb(255, 255, 255, 255) : Tag.Color); + internal Brush TextBrush => new SolidColorBrush(_tag.Color.A == 0 ? Color.FromArgb(255, 255, 255, 255) : _tag.Color); - internal Brush BackgroundBrush => new SolidColorBrush(Tag.Color.A == 0 ? Tag.Color : Color.FromArgb((byte)(Tag.Color.A / 4), Tag.Color.R, Tag.Color.G, Tag.Color.B)); + internal Brush BackgroundBrush => new SolidColorBrush(_tag.Color.A == 0 ? _tag.Color : Color.FromArgb((byte)(_tag.Color.A / 4), _tag.Color.R, _tag.Color.G, _tag.Color.B)); public TagViewModel(ITag tag) { - this.Tag = tag; + this._tag = tag; // this.Tag.PropChanged += Tag_PropertyChanged; } diff --git a/src/modules/cmdpal/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs index 78a952b514..6be6722daa 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Views/FormPageViewModel.xaml.cs @@ -12,7 +12,7 @@ public sealed class FormPageViewModel : PageViewModel { internal IFormPage Page => (IFormPage)this.PageAction; - internal ObservableCollection Forms = new(); + public ObservableCollection Forms { get; set; } = new(); public FormPageViewModel(IFormPage page) : base(page) diff --git a/src/modules/cmdpal/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs index 9ac4ec07d7..34fe9d25f5 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Views/ListPageViewModel.xaml.cs @@ -13,8 +13,9 @@ namespace WindowsCommandPalette.Views; public sealed class ListPageViewModel : PageViewModel { - internal readonly ObservableCollection Items = []; - internal readonly ObservableCollection FilteredItems = []; + private readonly ObservableCollection _items = []; + + public ObservableCollection FilteredItems { get; set; } = []; internal IListPage Page => (IListPage)this.PageAction; @@ -92,7 +93,7 @@ public sealed class ListPageViewModel : PageViewModel // FilteredItems.Add(sectionItems); } - ListHelpers.InPlaceUpdateList(Items, newItems); + ListHelpers.InPlaceUpdateList(_items, newItems); ListHelpers.InPlaceUpdateList(FilteredItems, newItems); } @@ -114,7 +115,7 @@ public sealed class ListPageViewModel : PageViewModel // Static lists don't need to re-fetch the items if (string.IsNullOrEmpty(query)) { - return Items; + return _items; } //// TODO! Probably bad that this turns list view models into listitems back to NEW view models @@ -122,7 +123,7 @@ public sealed class ListPageViewModel : PageViewModel try { var allFilteredItems = ListHelpers.FilterList( - Items + _items .SelectMany(section => section) .Select(vm => vm.ListItem.Unsafe), _query).Select(li => new ListItemViewModel(li)); diff --git a/src/modules/cmdpal/WindowsCommandPalette/Views/MainPage.xaml.cs b/src/modules/cmdpal/WindowsCommandPalette/Views/MainPage.xaml.cs index 2034382439..eaa6553428 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Views/MainPage.xaml.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Views/MainPage.xaml.cs @@ -281,11 +281,11 @@ public sealed partial class MainPage : Page } } - private async Task LoadTopLevelCommandsFromProvider(CommandProviderWrapper CommandProvider) + private async Task LoadTopLevelCommandsFromProvider(CommandProviderWrapper commandProvider) { // TODO! do this better async - await CommandProvider.LoadTopLevelCommands().ConfigureAwait(false); - foreach (var i in CommandProvider.TopLevelItems) + await commandProvider.LoadTopLevelCommands().ConfigureAwait(false); + foreach (var i in commandProvider.TopLevelItems) { ViewModel.TopLevelCommands.Add(new(i)); } From c36da68701542a30feefe2577a93fa5aa5015d5e Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Fri, 6 Sep 2024 15:41:26 -0700 Subject: [PATCH 25/26] last error! --- .../cmdpal/WindowsCommandPalette/Services/ExtensionService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/cmdpal/WindowsCommandPalette/Services/ExtensionService.cs b/src/modules/cmdpal/WindowsCommandPalette/Services/ExtensionService.cs index fdd5db25bb..038b6216c7 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Services/ExtensionService.cs +++ b/src/modules/cmdpal/WindowsCommandPalette/Services/ExtensionService.cs @@ -125,7 +125,7 @@ public class ExtensionService : IExtensionService, IDisposable return false; } - private static async Task<(IPropertySet?, List)> GetCmdPalExtensionPropertiesAsync(AppExtension extension) + private static async Task<(IPropertySet? CmdPalProvider, List ClassIds)> GetCmdPalExtensionPropertiesAsync(AppExtension extension) { var classIds = new List(); var properties = await extension.GetExtensionPropertiesAsync(); From 133627ac2e810944f91becd3a7215780809be191 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Fri, 6 Sep 2024 15:42:16 -0700 Subject: [PATCH 26/26] removing property --- .../cmdpal/WindowsCommandPalette/Microsoft.CmdPal.UI.Poc.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/cmdpal/WindowsCommandPalette/Microsoft.CmdPal.UI.Poc.csproj b/src/modules/cmdpal/WindowsCommandPalette/Microsoft.CmdPal.UI.Poc.csproj index ca34349b39..c54f812f98 100644 --- a/src/modules/cmdpal/WindowsCommandPalette/Microsoft.CmdPal.UI.Poc.csproj +++ b/src/modules/cmdpal/WindowsCommandPalette/Microsoft.CmdPal.UI.Poc.csproj @@ -9,7 +9,6 @@ true enable enable - False