Single line of text in multiple languages possible?

Hi!
Consider a single line of text with words in multiple langues. This requires running the line-breaking algorithm on each span of text separately since the line-breaking function takes a language parameter.
But then the algorithm puts a hard break at the end of each piece of text.
Is this a limitation of UAX#14 or libunibreak? And is there a workaround?
Thanks!

The language information is used to tailor some specific behaviour regarding line breaking, especially concerning punctuation marks like quotes. In mixed-language text, set the language to the ‘main’ language. I do not suppose you want to use different styles of quotation marks in your text, do you?
Also remember that not setting the language at all is generally safe, though it can result in fewer line breaking opportunities.

@adah1972 thanks for the info. I don't have the notion of a base language in my API, any arbitrary span of text can have a different language attribute, but that puts a hard-break between spans. Looks like I need to add the notion of a paragraph language.


The .exe file is too big

How am I supposed to let someone open this .exe file when I can't share it anywhere due to the size of it? Genuinely wondering! I tested this .exe file myself and I'm absolutely amazed by the detail of information it can grab. Absolutely 10/10 coding, love this so much.

First of all, thank you for the complement. I really appreciate that.
Second, Pyinstaller does not compile the program to an executable, what it does is it packs the program and the python interpreter together, thus increasing the file size. I have applied almost all the possible ways to reduce the file size, otherwise the size would be more than 12 mb if the grabber is packed normally. So reducing the size more than this is next to impossible.


ARROW-11790: [Rust][DataFusion] Change builder signatures to take impl Interator<Item=Expr> rather than &[Expr]

NOTE:
Since is a fairly major backwards incompatible change (many callsites need to be updated, though mostly mechanically); I gathered some feedback on this approach in https://github.com/apache/arrow/pull/9692 and this is the PR I propose for merge.
I'll leave this open for several days and also send a note to the mailing lists for additional comment
It is part of my overall plan to make the DataFusion optimizer more idiomatic and do much less copying ARROW-11689
Rationale:
All callsites currently need an owned Vec (or equivalent) so they can pass in &[Expr] and then Datafusion copies all the Exprs. Many times the original Vec<Expr> is discarded immediately after use (I'll point out where this happens in a few places below). Thus I it would better (more idiomatic and often less copy/faster) to take something that could produce an iterator over Expr
Changes

Change Dataframe so it takes Vec<Expr> rather than &[Expr]
Change LogicalPlanBuilder so it takes impl Iterator<Item=Expr> rather than &[Expr]

I couldn't figure out how to allow the Dataframe API (which is a Trait) to take an impl Iterator<Item=Expr>

I couldn't figure out how to allow the Dataframe API (which is a Trait) to take an impl Iterator<Item=Expr>

Yeah, it's a pain but impl trait (in both return and argument position) isn't supported in traits right now. Afaik there were some historical discussions about opening up the system to support it but I can't find anything recent.
Related: is there a reason that DataFrame is a trait with a single impl? I'm wondering if it could be a concrete struct with the actual execution logic handling more exotic setups (custom TableProvider impls etc), which would free it from all the trait-imposed restrictions. Are we expecting to support multiple DF implementations?

Related: is there a reason that DataFrame is a trait with a single impl? I'm wondering if it could be a concrete struct with the actual execution logic handling more exotic setups (custom TableProvider impls etc), which would free it from all the trait-imposed restrictions. Are we expecting to support multiple DF implementations?

@jorgecarleitao  might know the answer to that as he introduced the DataFrame trait initially. @ritchie46  has a dataframe library polars which maybe someday could be integrated: https://www.ritchievink.com/blog/2021/02/28/i-wrote-one-of-the-fastest-dataframe-libraries/. It is interesting to me that many of the polars features and implementation seems very similar to the  features in DataFusion

@alamb , I do not know the reason. I did not use it on datafusion-python, mostly because the trait is not really used anywhere: we have no generics or dyn DataFrame. I am fine dropping it until we see a need for it, but @andygrove likely had some plans here :)

@alamb , I do not know the reason. I did not use it on datafusion-python, mostly because the trait is not really used anywhere: we have no generics or dyn DataFrame. I am fine dropping it until we see a need for it, but @andygrove likely had some plans here :)

I can explain :-)
My motivation was extensibility. I wanted users to be able to use the DataFusion DataFrame for local (in-process) execution but then be able to run distributed by having a mechanism to tell the context which DataFrame impl to use (configuration change rather than code change).
I have a much better idea now though of the requirements so plan on writing up a design once Ballista is in this repo.

And just to be clear, I am fine with removing the trait.

I am going to rebase this PR and merge it once CI passes

And just to be clear, I am fine with removing the trait.

Thanks @andygrove  -- I have no particular need to remove the DataFrame trait, but if it gets in the way we can definitely revisit 👍

I wrote up some very brief notes in https://issues.apache.org/jira/browse/ARROW-12064

Got. Then fwiw, I think that we can build that with this trait, we just need a bit more work / investigation:
I am not 100% sure, but I think that the path for libraries that want to expose a different DataFrame (datafusion-python needs this) and use datafusion's ExecutionContext is to make:
struct ExecutionContext<D: DataFrame>
For the case of Ballista, I think we need the opposite: Ballista has an ExecutionContext, and DataFrame should just have a way of absorving that implementation, e.g. via DataFrame<C: ExecutionContext> (we need a trait for ExecutionContext for this).
(This is a hand-waving idea)


Update chart reloader to 1.0.120

This PR contains the following updates:

Package
Update
Change

reloader
patch
1.0.119 -> 1.0.120

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠ Warning: custom changes will be lost.


Bugfix: filter_by_feature_groups=None

it works now for [“tfs”, “cotfs”] etc
still throwing an error when filter_by_feature_groups=None
See Luca's message to fix

Fixed by 84c323e


VRAM and RAM infos displayed in logs right after closing the game

Is it normal for these information to appear in logs right after closing the game?
[2020-12-14 15:28:13.719] [info] Computed .text crc: D7E90F30
[2020-12-14 15:28:13.719] [info] 	Resolved to version: 1.04
[2020-12-14 15:28:13.741] [info] 	AMD SMT Patch: success
[2020-12-14 15:28:13.813] [info] 	Spectre patch: success
[2020-12-14 15:28:13.814] [info] 	Pool patch: success
[2020-12-14 15:28:13.817] [info] 	Virtual Input Patch: success
[2020-12-14 15:28:14.255] [info] 		Detected RAM: 15GB, using 11GB
[2020-12-14 15:28:14.387] [info] 		Using 8GB of VRAM

From the timestamps I can see that the action happened when the patch is applied, but I reloaded the log file while in the game, but the last 2 rows weren't there.
i7 8770k, 16GB of RAM, RTX 2080.

It's normal ;)

Using a 3090.
Log says using 23GB but with GPU-Z i never observer more than 7-8GB VRAM usage

This is a hint for the memory pool, not a hard allocation, it tells the game it can use 23 if needed.

Using a 3090.
Log says using 23GB but with GPU-Z i never observer more than 7-8GB VRAM usage

I have 128GB of RAM, and it doesn't use most of it either;)

@yamashi Shouldn't that be replacing the values in memory pool budget.csv? Is it safe to me manually change this?

You can change the values yes, my method hooks the reader and when it finds a value that is not ideal it fixes it.


Release Script Fix

Changes
Making sure grep does not error out when the string it's searching for is not found, this was
preventing the script to run successfully due to enabled pipefail bash option.
Submitter Checklist

[x] ~Includes tests if functionality changed/was added~
[x] ~Includes docs if changes are user-facing~
[x] Set a kind label on this PR
[x] Release notes block has been filled in, or marked NONE

Release Notes
NONE

/assign @SaschaSchwarze0
I'm looking forward to have the v1.1 tag present 🙏


Option to annotate the gemfile

From @jakeonrails on February 4, 2016 23:18
Hi,
I think it would be useful to have a way to annotate a Gemfile with comments describing the gems included in the Gemfile, taken from the short description field in a gem's gemspec.
I am happy to write the code to make this happen but I know nothing about the bundler codebase, and seeing as it is quite large, could really use a pointer toward the place in the code that would make the most sense to implement this.
Copied from original issue: bundler/bundler-features#109

From @jakeonrails on February 5, 2016 1:24
Is there some documentation somewhere for how to build a plugin? I can't find anything on the bundler homepage and it's not searchable (AFAIK)
Also, for a tool such as this, I would think it would need access to the metadata bundler retrieves when it fetches stuff from rubygems. Having this thing run as a plugin would mean having to make a whole separate series of requests to rubygems, right? Or does the plugin system have a hook that I could tap into to fetch this data?

From @segiddins on February 4, 2016 23:48
This sounds more like a plugin than core bundler functionality to me, to be honest.

From @segiddins on February 5, 2016 1:42
You can name an executable bundle-foo and you're always free to require 'bundler' ;)


docs: Delivery UI permissions

What changed?
Documentation

Why was this change made?
To explain how to setup permissions for Delivery UI

How was this change implemented?
N/A

How did you validate the change?
N/A

Release notes
N/A

Documentation Changes
N/A

@SamLR - if you have a chance to take a look at this PR that would be great - in particular, now that we the user permissions doc as well, whether you agree this is the right place for this content.

The intention of this page wasn't so much in-depth discussion of which permissions were needed to run gitops and why (that's left to the service-account/user permission pages) but to cover a high level view of how to configure OIDC and kubernetes RBAC to work well with gitops.
Frankly revising this page I'm (almost) tempted to delete most of the code block at the end.
With that said I think this should probably be split between either service-account and user pages or, possibly, a dedicated enterprise permissions page (as we should probably have similar documentation for the CAPI & policy features of enterprise)

I can try to review by e.o.d Wednesday, but please don't hold on my account if someone else is able to review beforehand 👍

additionally, a suggested update would be to reference this page from here as well  https://docs.gitops.weave.works/docs/configuration/recommended-rbac-configuration/. In particular the note:

These recommendations are for Weave GitOps Core. A similar system can be used within Enterprise but it would need to be adapted to account for multi-cluster configurations and is beyond the scope of this document.


ForecastDFDataset setting autoregressive_modeling False leads to no variety in model predictions

My time series dataset consists of many input columns and a few target columns. I aim to train a PatchTSMixer model and PatchTST model to forecast the target columns given the previous values of the target columns in the context window, and then to train a second PatchTSMixer and PatchTST model to forecast the same target columns, but when not given the previous target values in the context.
I noticed that ForecastDFDataset has a boolean argument called "autoregressive_modeling", which when set to False, masks the targets values in the context window by setting them to 0. I believe this is what I'm looking for regarding my latter task. If I'm mistaken, please let me know.
When training my models with autoregressive_modeling = True, there are no issues and the models perform well. However, when setting autoregressive_modeling = False for the same dataset and training the models, my models only predict 0 on the test set for all target columns and time steps with minimal variance.
I've tried possible solutions such as changing the mask value to 1, but then the models predict only 1 for all target columns. I've also tried leaving autoregressive_modeling = True for the training set, and False for the validation/test set, however this lead to the same issue.
The target columns are not part of the "conditional columns" and so future target values are not masked.
For context I am using a TimeSeriesPreprocessor with scaling = True. I am training for 1 epoch using a learning rate of 0.001 (though I tried 5 epochs to no success). My PatchTSMixer and PatchTST have the following configs:
PatchTSMixerConfig(
    context_length = 128,
    prediction_length = 64,
    patch_length = 8,
    patch_stride = 8,
    num_input_channels = 20,
    d_model = 16,
    num_layers = 8,
    expansion_factor = 2,
    dropout = 0.1,
    head_dropout = 0.1,
    mode = "common_channel",
    scaling = "std"
)

PatchTSTConfig(
    context_length = 128,
    prediction_length = 64,
    patch_length = 8,
    patch_stride = 8,
    num_input_channels = 24,
    random_mask_ratio = 0.4,
    d_model = 128,
    ffn_dim = 256,
    num_attention_heads = 16,
    num_hidden_layers = 3,
    dropout = 0.2,
    head_dropout = 0.2,
    scaling = "std",
    pooling_type = None,
    channel_attention = False,
    pre_norm = True,
    norm_type = "batchnorm"
)

For inference on the test set, I extract predictions by doing the following:
predictions = trainer.predict(dataset)
pred_values = predictions.predictions[0][..., :num_targets]
true_values = predictions.label_ids[..., :num_targets]

Any help will be greatly appreciated. If the autoregressive_modeling boolean has a different purpose than what I thought, then let me know and please provide some guidance of how I could use these models to forecast time series without given the previous target values in the context window. Thanks in advance.

@JamieToddUK
The autoregressive_modeling option is experimental -- we quickly added it to see if we could limit the autoregressive tendencies of the model, for example, in cases where one wants to learn relationships between the target and other variables, rather the past target values.
We had similar conclusions as above -- generally, autoregressive_modeling=False did not work well. It is likely to be removed in the future.

@wgifford No worries, I understand. Thanks for the help.


Logging data to the console.

Is this supported.
Wanted to use this for debugging purposes.

Begin and please close this issue.

@brianraila, here is example code: https://github.com/Rahix/avr-hal/blob/main/examples/arduino-uno/src/bin/uno-usart.rs

another way of logging

@brianraila, here is example code: https://github.com/Rahix/avr-hal/blob/main/examples/arduino-uno/src/bin/uno-usart.rs

Thanks so much, this works!


Refactoring documentation about WM deployment with Docker and venv

Impact of the new feature
Have a more user-friendly documentation about WM agent deployment with Docker and venv. This particularly needs to be done before running the next training sessions on debugging (https://github.com/dmwm/WMCore/issues/11849)
Is your feature request related to a problem? Please describe.
The documentation is too scattered across the MKDocs repo
Describe the solution you'd like
Merge these documents into one.

The beginning of the WMAgent overview document lists information and code structure mostly on a component-by-component basis. This should be mostly valid.
The middle part of the WMAgent overview document, starting from https://gitlab.cern.ch/dmwm/wmcore-docs/-/blob/master/docs/wmcore/WMAgent.md#a-set-of-usable-initial-commands-to-use-once-loged-in-to-an-agent up to the debugging section relates to the old rpm based agents and we must update this.
The last part of this document starting from: https://gitlab.cern.ch/dmwm/wmcore-docs/-/blob/master/docs/wmcore/WMAgent.md#running-wmagent-components-in-standalone-mode-for-advanced-debugging to the end is up to date.
This deployment procedure: https://gitlab.cern.ch/dmwm/wmcore-docs/-/blob/master/docs/wmcore/WMAgent-deployment.md is obsolete - relates to the rpm based agents
This document https://gitlab.cern.ch/dmwm/wmcore-docs/-/blob/master/docs/wmcore/WMAgent-in-Docker.md is valid up until this paragraph: https://gitlab.cern.ch/dmwm/wmcore-docs/-/blob/master/docs/wmcore/WMAgent-in-Docker.md?ref_type=heads#single-docker-image-for-wmagentmariadbcouchdb-rpm-style everything for the later may be deleted, we can keep some minor explanations from there like what we need to mount, but some of them heavily changed because we moved the structure of our mount points to start from a single root, which is /data/dockerMount. Then we may wish to explain the different views of those mount points from inside and outside the container, there are also the user auth mounts that we take from the system and the docker mount points for the runtime environment, which end up inside the container at $WMA_INSTALL_DIR/Docker. We can consider dedicating a completely separate document on this explaining the whole structure of our containers

Describe alternatives you've considered
None

@anpicci we briefly discussed this yesterday, but now that I read its initial description, I just wanted to share some extra information and perspective here.
If we really decide to refactor the WMAgent documentation, then I think we could add this ticket as part of the meta-issue https://github.com/dmwm/WMCore/issues/11875 (which already has a ticket for legacy/out-dated content); and perhaps consider it as normal plan instead of Ops.
If the goal is only to describe/improve the Docker and virtual-environment based deployments, then yes, this ticket looks self-container. In addition, I think a good starting point is https://gitlab.cern.ch/dmwm/wmcore-docs/-/blob/master/docs/wmcore/WMAgent-in-Docker.md, which already gives a brief description of the docker deployment.
For the outcome - especially if it involves content removal - I would ask you and @todor-ivanov to actually provide a merge request instead of pushing changes upstream. This way others have the opportunity to look into the actual changes and identify anything that might be undesired.

hi @amaltaro  @anpicci  @mapellidario
And here is a big PR adding a full Deployment section.  The way how I structured it should mostly fit in what we have discussed a week ago regarding document purpose etc., And it also suggests a common structure with equal set of bullets in the relevant documents of matching types/proposes.
I am still working on finalizing the last few documents - related to one or two setup methods, but I am working on them. the rest of the PR is soon to come.
p.s. Before making comments or reject what is suggested here, please do render the so suggested change with the instructions provided in the README: https://gitlab.cern.ch/dmwm/wmcore-docs/#running-documentation-locally

The following issue must be resolved in parallel with the current one:
https://github.com/dmwm/WMCore/issues/12182
The PR resolving it:
https://github.com/dmwm/WMCore/pull/12183

Here is the document:
https://cms-wmcore.docs.cern.ch/deployment/introduction/


[ISSUE-2730] Add the number of unseq merge times in TsFile name.

Description
Hi all :
I have submitted a pr for ISSUE-2730, please take a look.
This issue about add the number of unseq merge times in TsFile name.
The modules involved are as follows:
   1、server/engine/merge
   2、server/engine/storagegroup
Content1 ...
Content2 ...
Content3 ...

This PR has:

[ ] been self-reviewed.

[ ] concurrent read
[ ] concurrent write
[ ] concurrent read and write

[ ] added documentation for new or modified features or behaviors.
[ ] added Javadocs for most classes and all non-trivial methods.
[ ] added or updated version, license, or notice information
[ ] added comments explaining the "why" and the intent of the code wherever would not be obvious
for an unfamiliar reader.
[ ] added unit tests or modified existing tests to cover new code paths, ensuring the threshold
for code coverage.
[ ] added integration tests.
[ ] been tested in a test IoTDB cluster.

Key changed/added classes (or packages if there are too many classes) in this PR

@HTHou  Hi haonan, I have submitted a pr for  "Add the number of unseq merge times in TsFile name" please take a look.

@HTHou Hi  haonan  Are there any adjustments we need to make


Default internalBack button to display=true in Skills Display, over-ride to not display in client libs

This will help with backwards compatibility. After skills-service 1.5 is deployed, clients that have not upgraded their client-libs yet will still have the same user experience in regards to the internal back button, but the back button will not be displayed by default once they upgrade their skilltree client lib.

:+1:


WinUI 3 Cant instantiate a UserControl from a location outside the application package or directory (XamlParseException)

Describe the bug
When instantiating a UserControl from outside the application package an XamlParseException is thrown from the UserControl constructor at this.InitializeComponent().
Exception thrown at 0x773B35D2 (KernelBase.dll) in HostApp.exe: WinRT originate error - 0x80004005 : 'Cannot locate resource from 'ms-appx:///Plugin/PluginUserControl.xaml'.'.
Exception thrown: 'Microsoft.UI.Xaml.Markup.XamlParseException' in WinRT.Runtime.dll
WinRT information: Cannot locate resource from 'ms-appx:///Plugin/PluginUserControl.xaml'.
XAML parsing failed.

Steps to reproduce the bug
See minimal reproducing repository https://github.com/williamfigtree/WinUIPluginIssue. Key steps to recreate:

Create a class library "Plugin" using template "Class Library (WinUI 3 in Desktop)"

Add a UserControl "PluginUserControl" using template "User Control (WinUI 3)" to Plugin.csproj

Create an application "HostApp" using template "Black App, Packaged (WinUI 3 in Desktop)"

Add the "PluginLoadContext" class from this tutorial https://docs.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support to HostApp.csproj
using System;
using System.Reflection;
using System.Runtime.Loader;

namespace HostApp
{
    class PluginLoadContext : AssemblyLoadContext
    {
        private AssemblyDependencyResolver _resolver;

        public PluginLoadContext(string pluginPath)
        {
            _resolver = new AssemblyDependencyResolver(pluginPath);
        }

        protected override Assembly Load(AssemblyName assemblyName)
        {
            string assemblyPath = _resolver.ResolveAssemblyToPath(assemblyName);
            if (assemblyPath != null)
            {
                return LoadFromAssemblyPath(assemblyPath);
            }

            return null;
        }

        protected override IntPtr LoadUnmanagedDll(string unmanagedDllName)
        {
            string libraryPath = _resolver.ResolveUnmanagedDllToPath(unmanagedDllName);
            if (libraryPath != null)
            {
                return LoadUnmanagedDllFromPath(libraryPath);
            }

            return IntPtr.Zero;
        }
    }
}

Add the following code to the App constructor. You may need to modify the path to Plugin.dll.
    public App()
    {
        this.InitializeComponent();

        // Attempt to load a UserControl from a plugin dll
        // PluginUserControl throws an XamlParsingExcpetion during instantiation

        // Locate plugin dll in the Plugin project bin directory
        var rootPath =<EMAIL_ADDRESS>typeof(Program).Assembly.Location);
        var pluginDllPath = Path.Combine(rootPath, @"Plugin\bin\x86\Debug\net5.0-windows10.0.19041.0\Plugin.dll");

        // Instantiate PluginUserControl
        var pluginLoadContext = new PluginLoadContext(pluginDllPath);
        using (pluginLoadContext.EnterContextualReflection())
        {
            var pluginUserControl = Activator.CreateInstance("Plugin", "Plugin.PluginUserControl");
        }
    }

Build Plugin.csproj

Deploy and debug HostApp.csproj

Expected behavior
The UserControl is instantiated and the UserControl XAML resources supplied by the external project, package, or directory are located.
Screenshots
No response
NuGet package version
No response
Windows app type

[ ] UWP
[ ] Win32

Device form factor
Desktop
Windows version
November 2019 Update (18363)
Additional context
This is a blocking issue for applications which require plugins which supply their own UI.
Observed the issue with WinUI 3 1.0.0-preview3.
https://github.com/microsoft/microsoft-ui-xaml/issues/3888 describes a similar requirement but does not come to an appropriate solution as it requires files from the plugin to be copied into the main package. This prevents separate build and distribution of applications and plugins.
https://github.com/microsoft/microsoft-ui-xaml/issues/1365#issuecomment-534803147 and https://docs.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support suggest that AssemblyLoadContext is the intended mechanism for plugin support and do not indicate any separate system for XAML resources.

I have the same issue. Why is it marked as "closed"?
I followed the https://docs.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support example, but it only does console stuff. When trying to get the plugin to have UI components, it just doesn't work.

This may be related to 5536

Dynamic loading of a UserControl isn't supported yet, unless we can find a workaround. The restriction is in the code for the UserControl that's generated by the Xaml compiler, where it assumes that its markup is stored in the app's resources (ms-appx):
public void InitializeComponent()
{
    if (_contentLoaded)
        return;

    _contentLoaded = true;

    global::System.Uri resourceLocator = new global::System.Uri("ms-appx:///UserControl1.xaml");
    global::Microsoft.UI.Xaml.Application.LoadComponent(this, resourceLocator, global::Microsoft.UI.Xaml.Controls.Primitives.ComponentResourceLocation.Application);
}

There might be a way to work around it by not calling this generated InitializeComponent and instead writing that code with a different Uri for the resourceLocaler. @RealTommyKlein might have ideas. I know that that URI needs to be ms-appx, ms-appdata, or ms-resource.

@MikeHillberg @RealTommyKlein I was not successful replacing the generated InitializeComponent() with a different implementation. That seems like it should work though, perhaps I'm doing something wrong...
Using an optional package to include my plugin project in the app dependency graph I expected to be able to use a URI like "ms-appx://PluginPackageIdentityName/UserControl1.xaml" per these docs: https://docs.microsoft.com/en-us/windows/uwp/app-resources/uri-schemes#authority-ms-appx-and-ms-appx-web. Unfortunately the same "Cannot locate resource..." exception is thrown.
What am I missing?

At least for the InitializeComponent replacement, something like this should work:
        public MainWindow()
        {
            // Remove default compiler-generated InitializeComponent implementation, and use our hand-written one instead
            //this.InitializeComponent();
            this.InitializeComponentCustom();
        }

        public void InitializeComponentCustom()
        {
            if (_contentLoaded)
                return;

            _contentLoaded = true;

            global::System.Uri resourceLocator = new global::System.Uri("ms-appx:///SomeCustomLocation/PluginUserControl.xaml");
            global::Microsoft.UI.Xaml.Application.LoadComponent(this, resourceLocator, global::Microsoft.UI.Xaml.Controls.Primitives.ComponentResourceLocation.Application);
        }

But I suspect the LoadComponent call is failing because PluginUserControl.xaml isn't present in the application's resources.pri.  Normally there's an entry generated for it during the build if the application references the "Plugin" library directly, but since it's loaded by reflection instead, the class library's resources.pri with the PluginUserControl.xaml entry isn't merged into the application's resources.pri.  I don't think using a control from a library loaded via reflection is currently supported for that reason - @evelynwu-msft and @marb2000 since we were discussing this yesterday.

What about resource merge at run-time?
I tried it some time ago, but I don't remember the results. But for sure it didn't end working. Just thinking...
The first approach was:
Plugin:
public static List<ResourceDictionary> GetResources()
{
	return new List<ResourceDictionary>()
	{
		new ResourceDictionary
		{
			Source = new Uri("ms-appx:///Views/ModulePage.xaml", UriKind.Relative)
		}
	};
}

Host:
foreach (ResourceDictionary re in plugin.GetResources())
{
	Application.Current.Resources.MergedDictionaries.Add(re);
}

The second approach was mannually getting resources (at least string values and only for testing) and setting control text properties ... no luck, as the MainResourceMap does not contain plugin resources, no matter if trying at plugin or host code.
var resourceContext = new Windows.ApplicationModel.Resources.Core.ResourceContext();// not using ResourceContext.GetForCurrentView
resourceContext.QualifierValues["Language"] = "en-US";
var resourceMap = Windows.ApplicationModel.Resources.Core.ResourceManager.Current.MainResourceMap.GetSubtree("Resources");
string resourceValue = resourceMap.GetValue("AppDescription", resourceContext).ValueAsString;

Then I ended up playing with makepri with no results.
Maybe something more drastic like resource merge at plugin install time, involving makepri?
Or try to use another resource system type/workflow in plugins?

I discovered that I am able to successfuly load the UserControl if it is included in an optional package and the URI specifies the full path to the installed package location e.g.
ms-appx:///C:/Program Files/WindowsApps/[Package full name]/HostApp.SimplePlugin/SimpleUI.xaml.
This is a viable workaround for simple things but leaves a big outstanding issue with resource location. Features like Resource.resw files and 3rd party controls with embedded xaml data do not work from the plugin package. So more on that:
@RealTommyKlein The plugin's resources.pri file does seem to be loaded into the application's resources although not into MainResourceMap. I can see this by inspecting AllResourceMaps on ResourceManager.Current at runtime:

Perhaps the plugin's resources.pri is incorrect? I am using the resources.pri file that VisualStudio generates for a WinUI3 class library. Does it need to contain a named resource for the UserControl xaml and not the xbf? Is it formatted incorrectly? Here's the plugin pri dump resources.pri.xml.zip and a trimmed down version with just the relevant resource map:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PriInfo>
	<PriHeader>
		<WindowsEnvironment name="WinCore" version="1.2" checksum="1912541329"/>
		<AutoMerge>false</AutoMerge>
		<IsDeploymentMergeable>true</IsDeploymentMergeable>
		<TargetOS version="10.0.0"/>
		<ReverseMap>false</ReverseMap>
	</PriHeader>
	<QualifierInfo>
		<Qualifiers>
			<Qualifier name="Language" value="EN-US" priority="700" scoreAsDefault="1.0" index="1"/>
		</Qualifiers>
		<QualifierSets>
			<QualifierSet index="1">
				<Qualifier name="Language" value="EN-US" priority="700" scoreAsDefault="1.0" index="1"/>
			</QualifierSet>
		</QualifierSets>
		<Decisions>
			<Decision index="2">
				<QualifierSet index="1">
					<Qualifier name="Language" value="EN-US" priority="700" scoreAsDefault="1.0" index="1"/>
				</QualifierSet>
			</Decision>
		</Decisions>
	</QualifierInfo>
	<ResourceMap name="HostApp.SimplePlugin" primary="true" uniqueName="ms-appx://HostApp.SimplePlugin/" version="1.0">
		<VersionInfo version="1.0" checksum="1169589394" numScopes="16" numItems="15"/>
		<ResourceMapSubtree index="1" name="Files">
			<ResourceMapSubtree index="15" name="HostApp.SimplePlugin">
				<NamedResource name="SimpleUI.xbf" index="14" uri="ms-resource://HostApp.SimplePlugin/Files/HostApp.SimplePlugin/SimpleUI.xbf">
					<Decision index="1">
						<QualifierSet index="0"/>
					</Decision>
					<Candidate type="Path">
						<QualifierSet index="0"/>
						<Value>HostApp.SimplePlugin\SimpleUI.xbf</Value>
					</Candidate>
				</NamedResource>
			</ResourceMapSubtree>
		</ResourceMapSubtree>
	</ResourceMap>
</PriInfo>

And here is the repo I'm using to test this with optional packages https://github.com/williamfigtree/WinUI3-plugin-sample. I've had to use a custom build script on the optional package project due to lack of VisualStudio tooling for WinUI3.

I have tried https://github.com/microsoft/microsoft-ui-xaml/issues/6299#issuecomment-1023856405 by @williamfigtree and it works for a single UserControl. However, if that UserControl contains another UserControl, then it fails.
So if you have a MainApp that tries to load a UserControlA from a AssemblyX, you would be able to load UserControlA as mentioned. However if there is another UserControlB in AssemblyX and UserControlA uses it in the XAML file, then we get XAML Parsing exception when loading the UserControlA. @RealTommyKlein do you have any suggestion or work around that you can think off.
Also, @marb2000 has mentioned that the WinUI team is concentrating on the core infrastructure this year, instead of adding more controls. Would you consider this issue/feature among core infrastructure tickets that needs to be addressed in 1.1 or 1.2? This issue is preventing us from developing a class of application (plugins with UIs). I am sure many others in the community too would like to see it addressed soon. @marb2000, @MikeHillberg,  A guidance would help us immensely to determine the direction for our project.

WE have further found few more things
[1] It is possible to load multiple UserControls, however you would need to do it in the code and then assign then to the Content properties, something like
<Page>
     <ContentControl x:Name="ControlA"/>
....
     <ContentControl x:Name="ControlB"/>
</Page>

ControlA.Content = new MyUserControl();

[2] Also, these UserControls can't have a DependencyProperty.
[3] Also, the plugin can't define a AttachedProperty that can be used in the UserControls XAML

Issue still present in 1.1.0-preview2. The plugin architecture is a critical piece of my companies application and this needs to be resolved before we can move forward with WinUI 3.

This would be useful for XAML Studio in the future as well to be able to load custom diagnostic tools from other assemblies based on some plug-in API. This seems like a pretty common scenario we see a lot of folks build into apps for mods/customizations/plugins.

It's still an issue in 1.1 full release :( I can't create my application with that error.

@evelynwu-msft is this related to http://task.ms/36925415?  mention the workaround?

@evelynwu-msft is this related to http://task.ms/36925415? mention the workaround?
(update: since this is dynamically activated, rather than project-referenced, looks like some of the approaches above will be necessary)

I can't open that link because it gives me an error :(

@evelynwu-msft is this related to http://task.ms/36925415? mention the workaround?
(update: since this is dynamically activated, rather than project-referenced, looks like some of the approaches above will be necessary)

No, this is a bona fide feature request.

Describe the bug
When instantiating a UserControl from outside the application package an XamlParseException is thrown from the UserControl constructor at this.InitializeComponent().

Have you tried with a CustomControl using template Custom Control (WinUI 3)? Do you have the same issue?

This may be related to https://github.com/microsoft/microsoft-ui-xaml/issues/7788

Does still not work.

@axodox Would you mind providing some example code showing how you went about this?

So here is how we were able to load WinUI controls / converters from plug-ins:
First some notes:

We are using WinUI 2.x Nuget with C++/WinRT in a UWP project.

Our plugins for the UI are based on the Windows Runtime Component (C++/WinRT) template

To make things easy on us (and our future users) we have created a custom nuget package which supplies our plugin SDK headers, DLLs and a build targets, which can deploy the plug-in and generate the MSIX package for it as well in a single Visual Studio project

We generate the plugin MSIX from command line using the MakeAppX.exe, SignTool.exe etc., note this requires some specific, for example for XAML you must make sure to have the package resource index (PRI) files also in the package (something I wasted some time on...), we are NOT using related sets

Our plug-ins have a single C export called Init, which receives a pointer to our dependency container implementation, in the method the plug-ins can resolve components from the dependency container and register their services, e.g. register a new XAML panel on our tool panel

First we locate the plug-ins, which are in optional packages:

  PluginCollection PluginProviderBase::GetPluginPackages()
  {
    _logger.log(log_severity::info, L"Enumerating plug-ins...");
    auto dependencies = Package::Current().Dependencies();

    unordered_map<wstring, Package> results;
    for (const auto& dependency : dependencies)
    {
      if (dependency.IsFramework() || !dependency.IsOptional()) continue;

      auto pluginId = wstring(dependency.Id().FamilyName());
      results.emplace(pluginId, dependency);
      _logger.log(log_severity::info, L"Plug-in detected: %s", dependency.DisplayName().c_str());
    }

    return results;
  }

Then if a plug-in is selected we load it:

bool PluginProviderBase::TryLoadPlugin(const std::wstring& pluginId)
  {
    if (_loadedPlugins.count(pluginId)) return true;

    try
    {
      //Check if the plugin exists
      auto pluginPackageIt = _availablePlugins.find(pluginId);
      if (pluginPackageIt == _availablePlugins.end()) throw runtime_error("The specified plug-in package does not exist.");

      //Locate plug-in DLL
      auto pluginPackage = pluginPackageIt->second;
      auto packageFolder = pluginPackage.InstalledLocation();
      auto pluginLibraryPath = packageFolder.Path() + L"\\" + pluginPackage.Id().Name() + L".dll";

      //Load plugin DLL
      AddDllDirectory(packageFolder.Path().c_str());
      auto pluginLibrary = LoadLibrary(pluginLibraryPath.c_str());
      if (!pluginLibrary) throw_last_error();

      //Initialize plug-in
      InitializePlugin(pluginId, pluginLibrary);

      return true;
    }
    catch (const hresult_error& error)
    {
      _logger.log(log_severity::error, L"Failed to load plug-in %s: %s", pluginId.c_str(), error.message().c_str());
    }
    catch (const exception& error)
    {
      _logger.log(log_severity::error, L"Failed to load plug-in %s: %s", pluginId.c_str(), to_wstring(error.what()).c_str());
    }
    catch (...)
    {
      _logger.log(log_severity::error, L"Failed to load plug-in %s: unknown error.", pluginId.c_str());
    }

    return false;
  }

Then we initialize our plug-in - here you can see how we instantiate the XamlMetadataProvider of the plug-in, which is generated by the WinRT tooling when XAML controls are present in the runtime component:

  void PluginProvider::InitializePlugin(const wstring& /*pluginId*/, HMODULE pluginLibrary)
  {
    //Load Xaml Metadata
    wstring filePath;
    filePath.resize(256);
    GetModuleFileNameW(pluginLibrary, filePath.data(), DWORD(filePath.length()));

    auto libraryName = path(filePath).filename().replace_extension();
    auto metadataFactory = try_get_activation_factory(libraryName + L".XamlMetaDataProvider");
    if (metadataFactory)
    {
      auto metadataProvider = metadataFactory.ActivateInstance<IXamlMetadataProvider>();
      PluginXamlMetadataProvider::MetadataProviders().Append(metadataProvider);
    }

    //Initialize plug-in
    auto initializer = PluginInitializer(GetProcAddress(pluginLibrary, "Init"));
    if (!initializer) throw runtime_error("Failed to find plug-in initializer method.");

    auto container = _dependencyContainerReference.try_lock();
    if (!container) throw runtime_error("The dependency container is not available.");

    initializer(container.get());
  }

We then implemented a class PluginXamlMetadataProvider, which inherits from IXamlMetadataProvider - this class is however not in the main executable project, but in another windows runtime component one, which is referenced by the main project, this trigger the WinRT tooling to find it and use it for resolving namespaces in XAML code:

  [default_interface]
  runtimeclass PluginXamlMetadataProvider : Windows.UI.Xaml.Markup.IXamlMetadataProvider
  {
    PluginXamlMetadataProvider();

    static IVector<Windows.UI.Xaml.Markup.IXamlMetadataProvider> MetadataProviders{ get; };
  }

  IVector<IXamlMetadataProvider> PluginXamlMetadataProvider::_metadataProviders = single_threaded_vector<IXamlMetadataProvider>();

  IXamlType PluginXamlMetadataProvider::GetXamlType(TypeName const& type)
  {
    for (const auto& provider : _metadataProviders)
    {
      auto xamlType = provider.GetXamlType(type);
      if (xamlType) return xamlType;
    }

    return nullptr;
  }

  IXamlType PluginXamlMetadataProvider::GetXamlType(hstring const& fullName)
  {
    for (const auto& provider : _metadataProviders)
    {
      auto xamlType = provider.GetXamlType(fullName);
      if (xamlType) return xamlType;
    }

    return nullptr;
  }

  com_array<XmlnsDefinition> PluginXamlMetadataProvider::GetXmlnsDefinitions()
  {
    vector<XmlnsDefinition> xmlnsDefinitions;
    for (const auto& provider : _metadataProviders)
    {
      auto definitions = provider.GetXmlnsDefinitions();
      for (auto& definition : definitions)
      {
        xmlnsDefinitions.push_back(definition);
      }
    }

    return { xmlnsDefinitions.begin(), xmlnsDefinitions.end() };
  }

  IVector<IXamlMetadataProvider> PluginXamlMetadataProvider::MetadataProviders()
  {
    return _metadataProviders;
  }

This allows the xaml namespaces to be resolved. You will still need the custom InitializeComponent method with the package name in the UI to make it work.
Using the above you can build your app. And someone else can take your SDK and develop UI plug-ins which can be deployed without rebuilding the original app again.

Any way how to do this in C# with System.Reflection.Assembly?

Great! But is there any way how to do this in C# with System.Reflection.Assembly? Because I don't know how should I replicate this in C# :(

I think there should be - at least for UWP and WinUI 2 (somebody should verify WinUI 3). You could start with @williamfigtree's repo which shows how to load an assembly in C#, of course with UWP you would have separate packages, but that would work the same way as with C++. Then implement PluginXamlMetadataProvider in C# the same way as I did above (you might need to do this in a separate project, as with C++ we had an issues that it did not work when it was in the same project / assembly as the host). You should use the activator to instantiate the XamlMetadataProvider of the plug-in and add it to the provider's list, this should happen before instantiating the control. If you use UWP and multiple packages you would need to modify InitalizeComponent code as well to use the proper URI.

@axodox  Just wondering if you have tested

Does the dependency properties in the UserControls work?
Also have you been able to use x:Uid in XAML to display information from the resource file? I suppose it has something to do with the pri files and a separate story.

I tried in a C# application, the above points are not working, however I am able to place a UserControl within a XAML of another UserControl. We were not able to do that before your work around. Thanks to you we would be able to simplify the code a little bit.

@harvinders We have not tested those yet, I will definitely look into the dependency properties next week.

@Pietro228 in addition to what axodox's mentioned my repo has a powershell script that builds a WinUI 3 library as an optional package invoked from the post build target and a user control with the modified InitializeComponent code. None of it is beautiful but it might help you get started.

@Pietro228 in addition to what axodox's mentioned my repo has a powershell script that builds a WinUI 3 library as an optional package invoked from the post build target and a user control with the modified InitializeComponent code. None of it is beautiful but it might help you get started.

Thank you, I'll have a look! :)

@harvinders So I have tested the dependency properties, and they seem to work properly. I have tested it with an updating OneWay binding bound to a INotifyPropertyChanged capable class and it was updating on the UI. We are using pretty x:Bind exclusively.
I have also added one more change to the above example: I added recursion guards to PluginXamlMetadataProvider, as infinite recursion happens if you reference the DLL carrying PluginXamlMetadataProvider in both the plugin and your app.

@axodox
Did you create a new DependencyProperty in your control or are you taking about existing WinUI control's dependency properties. I had trouble with defining and using new Dependency Properties and Attached Properties.

@axodox
Did you create a new DependencyProperty in your control or are you taking about existing WinUI control's dependency properties. I had trouble with defining and using new Dependency Properties and Attached Properties.

I did create my own property, in fact I have not even tested built-in ones. I created a static field to store it, and initialized it like this:
  DependencyProperty SampleControl::_textProperty =
    DependencyProperty::Register(
      L"Text",
      xaml_typename<hstring>(),
      xaml_typename<TestLibrary::SampleControl>(),
      PropertyMetadata{ box_value(L"Default") } );
}

This is my IDL:
  [default_interface]
  runtimeclass SampleControl : Windows.UI.Xaml.Controls.UserControl
  {
    SampleControl();

    String Text;
    static Windows.UI.Xaml.DependencyProperty TextProperty{ get; };
  }

The static variables are initialized from the DLL main when the plugin is loaded. But basically codewise it is same as usual for me.
Maybe there is a difference since we are using C++? There were certainly some differences between C# and C++ XAML functionality before on our project I have run into.

The bindings in C++ are done with autogenerated code like the one I have attached:
SamplePanelExtension.xaml.g.zip
I am not sure where this is with C#, maybe it uses reflection instead and that causes it to not find something. You could look into if you have similar files with C#, and compare them.

@Pietro228 in addition to what axodox's mentioned my repo has a powershell script that builds a WinUI 3 library as an optional package invoked from the post build target and a user control with the modified InitializeComponent code. None of it is beautiful but it might help you get started.

I was trying to run your code but I don't know what should I write to "my_certificate_path" argument in you post build PS script :(

@Pietro228 in addition to what axodox's mentioned my repo has a powershell script that builds a WinUI 3 library as an optional package invoked from the post build target and a user control with the modified InitializeComponent code. None of it is beautiful but it might help you get started.

I was trying to run your code but I don't know what should I write to "my_certificate_path" argument in you post build PS script :(
How can I get my certificate path and which should I use?

The post build step packages the plugin assembly as a signed msix. To do the signing you need a signing certificate (.pfx file). The argument "my_certificate_path" is the path to your signing certificate. You can create your own signing certificate for local development using the steps I've outlined in the repo readme which also links the MS docs. You will need to change a few details e.g. publisher name when you apply this to your own projects. :)

I've managed to get this working with some success in C#, however am still having problems where GetXamlType is getting called from the native Xaml interop with a null type argument if I reference certain things (like custom dependency properties using custom types). Best I can figure is that it is because the host apps PRI file doesn't include references to the extension. I got it to work by merging the PRI files, but that isn't a shippable solution for user-installed extensions.
For reference, I have thrown a quick working library and example to do this in C#, and also does some special magic to keep hot reload working if your extension is not packaged with the application. (in my own use-case, I can launch the shipped host application with a cmdline argument pointing it at an extension output directory and have a lovely time with hot reload working :))
https://github.com/dnchattan/winui-extensions

Just wondering if the new API in the experimental build https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/experimental-channel#new-features-from-across-winappsdk, ResourceManagerInitializing could be of help to load the PRI resources from the plugins

I had problems at first with PRI as well with UWP / WinUI 2 / C++/WinRT. I had to do the following to fix it:

Rename the file to resources.pri and put it in the root of the msix
Create a package mapping file with a [ResourceMetadata] section
Make sure that the xaml files are also added to the msix under the directory named as target name
Use makeappx.exe to pack the files with the mapping

This way I could produce working plugins. Now we have it tested and working, the plugins are built after the main app from a separate git repo, so the main app has no knowledge of them.

@axodox thanks for the additional details. I'm trying to do this with an unpackaged app, so I'm a little off the rails when it comes to using an MSIX for the extension. This gives me some good info though, so I have a little more I can try out.

actually, now that I'm trying more scenarios with dependency properties and whatnot, it's still working for me where it definitely wasn't in my other project. will try porting my example to my actual code, but this is looking promising.

@cody3b glad I could be of help! The one thing I'm running into right now is where resources need to be loaded from the PRI (such as string resources). Feels like it's close to working but can't get the last piece.
FWIW I've pushed the shared library part of my solution to nuget if you want to consume it there. Open to any PRs if you need to change anything.
https://www.nuget.org/packages/CustomExtensions.WinUI/

Don't know if this can help someone but in my case could finally find a solution for this, it involves:

Using these tags in the .csproj

<EnablePreviewMsixTooling>true</EnablePreviewMsixTooling>
<GenerateLibraryLayout>true</GenerateLibraryLayout>
<!--FORCE INCLUSION OF *.pri FILE SO THAT STRING RESOURCES FROM THIS NUGET CAN BE ACCESSIBLE TO APPS THAT REFERENCE IT-->
<ItemGroup>
    <None Update="bin/$(Configuration)/$(TargetFramework)/$(PackageId).pri" CopyToOutputDirectory="CopyAlways" CopyToPublishDirectory="CopyAlways" />
</ItemGroup>

If 'None' tag doesn't succed alone on copying the PRI of the project inside the nuget (that's what happened to me), then we need to do it 'manually':

This can be done by copying the .pri file that is generated when I built my library (at bin/$(Configuration)/$(TargetFramework)/$(PackageId).pri), then putting it inside the nuget at the path nuget/lib/net7.0-windows10.0.22621/My.Project.Name.pri then using this nuget (I tested it locally first by manuallly dragging and dropping the .pri file inside the nuget, then referencing the local nuget from my app to see it worked)
If you want to integrate this into CI/CD, then implement it on the Devops build pipeline of theproject so that I no longer had to do this manually)

This is what my pipeline looked like in the end:
trigger:
- main

pool:
  vmImage: 'windows-latest'

variables:
  projectName: 'NameOfYourProject'
  solution: '**/$(projectName).sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'
  major: '1'
  minor: '0'
  revision: $[counter(variables['minor'], 1)] # This will get reset every time minor gets bumped.
  nugetVersion: '$(major).$(minor).$(revision)'
  targetFramework: 'net7.0-windows10.0.22621'

steps:
- task: NuGetToolInstaller@1

- task: DotNetCoreCLI@2
  displayName: 'Restore Nuget'
  inputs:
    command: 'restore'
    projects: '**/$(projectName)/$(projectName).csproj'
    feedsToUse: 'config'
    nugetConfigPath: '.\nuget.config'

- task: VSBuild@1
  displayName: 'Build'
  inputs:
    platform: 'Any CPU'
    solution: '$(solution)'
    configuration: '$(buildConfiguration)'

- task: DotNetCoreCLI@2
  displayName: 'Pack Nuget'
  inputs:
    command: 'pack'
    packagesToPack: '**/$(projectName)/$(projectName).csproj'
    packDirectory: '$(Build.ArtifactStagingDirectory)/package'
    includesymbols: true
    includesource: true
    versioningScheme: 'byEnvVar'
    versionEnvVar: 'nugetVersion'
    buildProperties: 'SymbolPackageFormat=snupkg'
    verbosityPack: 'Diagnostic'

- task: PowerShell@2
  displayName: 'Rename .nupkg to .zip'
  inputs:
    targetType: 'inline'
    script: |
      Write-Host "Renaming file $(Build.ArtifactStagingDirectory)\package\$(projectName).$(nugetVersion).nupkg to $(Build.ArtifactStagingDirectory)\package\$(projectName).$(nugetVersion).zip"
      Rename-Item -Path "$(Build.ArtifactStagingDirectory)\package\$(projectName).$(nugetVersion).nupkg" -NewName "$(Build.ArtifactStagingDirectory)\package\$(projectName).$(nugetVersion).zip"
      Write-Host "File $(Build.ArtifactStagingDirectory)\package\$(projectName).$(nugetVersion).nupkg successfully renamed to $(Build.ArtifactStagingDirectory)\package\$(projectName).$(nugetVersion).zip"
    showWarnings: true

- task: ExtractFiles@1
  displayName: 'Extract files from .zip into a folder'
  inputs:
    archiveFilePatterns: $(Build.ArtifactStagingDirectory)/package/$(projectName).$(nugetVersion).zip
    destinationFolder: $(Build.ArtifactStagingDirectory)/package/$(projectName).$(nugetVersion)/
    cleanDestinationFolder: true
    overwriteExistingFiles: false

- task: CopyFiles@2
  displayName: 'Copy PRI into folder'
  inputs:
    SourceFolder: '$(projectName)/bin/$(buildConfiguration)/$(targetFramework)/'
    Contents: '$(projectName).pri'
    TargetFolder: '$(Build.ArtifactStagingDirectory)/package/$(projectName).$(nugetVersion)/lib/$(targetFramework)/'

- task: ArchiveFiles@2
  displayName: 'Archive folder back into .zip'
  inputs:
    rootFolderOrFile: $(Build.ArtifactStagingDirectory)/package/$(projectName).$(nugetVersion)
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: $(Build.ArtifactStagingDirectory)/package/$(projectName).$(nugetVersion).zip
    replaceExistingArchive: true

- task: PowerShell@2
  displayName: 'Rename .zip back to .nupkg'
  inputs:
    targetType: 'inline'
    script: |
      Write-Host "Renaming file $(Build.ArtifactStagingDirectory)\package\$(projectName).$(nugetVersion).zip to $(Build.ArtifactStagingDirectory)\package\$(projectName).$(nugetVersion).nupkg"
      Rename-Item -Path "$(Build.ArtifactStagingDirectory)\package\$(projectName).$(nugetVersion).zip" -NewName "$(Build.ArtifactStagingDirectory)\package\$(projectName).$(nugetVersion).nupkg"
      Write-Host "File $(Build.ArtifactStagingDirectory)\package\$(projectName).$(nugetVersion).zip successfully renamed to $(Build.ArtifactStagingDirectory)\package\$(projectName).$(nugetVersion).nupkg"
    showWarnings: true

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact'
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)/package'

This fixed the exception WinRT information: Cannot locate resource from 'ms-appx:///Plugin/*.xaml'. for me. This was kind of like 2 days of work for me. So I hope it saves that from you!

Now that I wrote my workaround for that problem, I really think this is a problem that should be managed by the dotnet pack command, instead of having devs writing ape code to do the job that the nuget command line is supposed to do. Please fix this @microsoft

@Juansero29 Many thanks!  I ended up with this, after reading your post.  Working for simple libraries, using dotnet pack.
  <EnableMsixTooling>true</EnableMsixTooling>
  <ItemGroup Condition="$(TargetFramework.EndsWith('-windows10.0.19041.0'))">
    <None Include="bin/$(Platform)/$(Configuration)/$(TargetFramework)/$(AssemblyName).pri" Pack="true" PackagePath="lib/$(TargetFramework.TrimEnd('.0'))/" />
  </ItemGroup>

Great! But is there any way how to do this in C# with System.Reflection.Assembly? Because I don't know how should I replicate this in C# :(

I think there should be - at least for UWP and WinUI 2 (somebody should verify WinUI 3). You could start with @williamfigtree's repo which shows how to load an assembly in C#, of course with UWP you would have separate packages, but that would work the same way as with C++. Then implement PluginXamlMetadataProvider in C# the same way as I did above (you might need to do this in a separate project, as with C++ we had an issues that it did not work when it was in the same project / assembly as the host). You should use the activator to instantiate the XamlMetadataProvider of the plug-in and add it to the provider's list, this should happen before instantiating the control. If you use UWP and multiple packages you would need to modify InitalizeComponent code as well to use the proper URI.

Yes, I can confirm this works for WinUI3 as well, we have had a very similar solution in place since WinUI3 was released - 2021

Any news on this? I have a lot of plugins (config dialogs) and dedicated developers must implement all the UI by code... not ideal!

Any news on this? I have a lot of plugins (config dialogs) and dedicated developers must implement all the UI by code... not ideal!

As for me, stuff from other answers helped me a bit and:

I'm using MEF for plugin imports, this works for both packaged and unpackaged app with unpackaged plugins.
For packaged plugins, you may omit the resource merge, and it should work without additional setup.

The host app prompts the plugins to create their UI elements upon loading (so they can do that on UI thread),
and also worth noting - I am not using pri string resources, a MEF import with a "translator" class is used instead.

Replace InitializeComponent(); with code similar to this. You will need to merge the resource dictionaries and manually load the XAML component (as InitializeComponent would do by default, however using other paths). This workaround is used basically everywhere.public DeviceSettings()
{
    // Get the root folder of the plugin - mine are unpackaged and contain published files
    var pluginDir = Directory.GetParent(Assembly.GetAssembly(GetType())!.Location);

    // Find the resources.pri file and load it synchronously
    var priFile = StorageFile.GetFileFromPathAsync(
        Path.Join(pluginDir!.FullName, "resources.pri")).GetAwaiter().GetResult();

    // Manually load your resources into the app
    ResourceManager.Current.LoadPriFiles([priFile]);

    // My plugin has XAML and XBF files copied from release in ./Pages (relative to its .dll)
    // Those files also have their names the same as the classes - DeviceSettings.xaml/xaml.cs here
    Application.LoadComponent(this, new Uri($"ms-appx:///{
        Path.Join(pluginDir!.FullName, "Pages", $"{GetType().Name}.xaml")}"),
        ComponentResourceLocation.Application);
}

For certain setups, one additional step may be needed; resources.pri, .xaml, and .xbf files appear for me only in debug and release mode, there's none when I publish the plugins. As a workaround, I copy them "manually" by abusing post-build steps.
Again, note that in my case the UI stuff in in ./Pages (and plugin_Relay shoud probably be $(ProjectName) instead)
The .pri file is also renamed here so the handler has one thing less to worry about during its workaround execution.<Target Name="CopyResources" AfterTargets="Publish">
	<ItemGroup>
		<_CustomFiles1 Include="$(ProjectDir)$(OutDir)plugin_Relay\Pages\*.*" />
		<_CustomFiles2 Include="$(ProjectDir)$(OutDir)plugin_Relay.pri" />
	</ItemGroup>
	<Copy SourceFiles="@(_CustomFiles1)" DestinationFolder="$(PublishDir)\Pages" />
	<Copy SourceFiles="@(_CustomFiles2)" DestinationFiles="$(PublishDir)\resources.pri" />
</Target>

This may or may not help somebody, but well... it at least might be worth trying.
Posted code is from here, a plugin for this app.

My plugins are just dlls, standard net 8 dll with WinUI support enabled and released as nuget packages... LoadAssembly and assembly.CreateInstance() to load and execute them when downloaded on disk...

My plugins are just dlls, standard net 8 dll with WinUI support enabled and released as nuget packages... LoadAssembly and assembly.CreateInstance() to load and execute them when downloaded on disk...

So it's quite the same as in here, although without the extra steps for MEF support


[Feature Request] Update example packages.yml

Is your feature request related to a problem? Please describe.
Thanks for taking over this package. My request is related to the example packages.yml as specified in the README.md, it looks like this:
packages:
  - git: https://github.com/metaplane/dbt-expectations.git
    revision: bdb8f8e668da2743036a81fa95565d5787a56532

The use of a commit SHA, while technically a good practice, is not very intuitive for dbt developers who are used to versions and branches when it comes to pinning versions.
Describe the solution you'd like
I'd like to switch to version pinning. If a package is on the dbt Hub then the package can make use of constraints, e.g. revision: [">=0.10.0", "<0.11.0"]. For packages like this that are not on the Hub (yet!), we can only specify the exact version. I'd like to propose this:
packages:
  - git: https://github.com/metaplane/dbt-expectations.git
    revision: 0.10.5 # Check https://github.com/metaplane/dbt-expectations/releases for the latest release

@pgoslatara thanks for the issue! I think it s a good change and have opened a PR.


[SPARK-17415][SQL] Better error message for driver-side broadcast join OOMs

What changes were proposed in this pull request?
This is a trivial patch that catches all OutOfMemoryError while building the broadcast hash relation and rethrows it by wrapping it in a nice error message.
How was this patch tested?
Existing Tests

Here is the list of changes with whitespaces ignored: https://github.com/apache/spark/pull/14979/files?w=1

cc @davies

Test build #65005 has started for PR 14979 at commit b3c5cfe.

Test build #65005 has finished for PR 14979 at commit b3c5cfe.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/65005/
Test FAILed.

Merged build finished. Test FAILed.

Test build #3250 has started for PR 14979 at commit b3c5cfe.

Test build #3250 has finished for PR 14979 at commit b3c5cfe.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

LGTM - pending Jenkins.

Test build #65054 has started for PR 14979 at commit 3888632.

Test build #65054 has finished for PR 14979 at commit 3888632.

This patch fails PySpark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/65054/
Test FAILed.

Test build #3253 has started for PR 14979 at commit 3888632.

Test build #3253 has finished for PR 14979 at commit 3888632.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merging to master. Thanks!


Improve .editorconfig [skip ci]

The Issue
Some essential settings are missing and the editor defaults are used instead which could lead to differences with the various editors.
How This PR Solves The Issue
This patch introduces important default settings to avoid differences with the various editors.

I guess the one question would be if this conflicts with any existing files, so every time sombody touches them with vscode they'll get changed for no reaason.

I guess the one question would be if this conflicts with any existing files, so every time sombody touches them with vscode they'll get changed for no reaason.

I've quickly checked the existing files and so far I can see this should work and not make any conflicts.

Let me know when you want me to pull it.

Let me know when you want me to pull it.

Go ahead at any time.

I let the tests run on purpose for this one, just to see if we're getting any better commit statuses.

I think we probably want an indent of 2 spaces by default and 4 for markdown? /cc @mattstein ?


Fix dnscrypt-proxy resolvers parsing

The output is not originally caught from stderr by awk

Hello, The dnscrypt-proxy project has undergone major changes and the latest versions are incompatible with dnscrypt-loader. Dnscrypt-proxy now uses its own configuration files and changed the way it is loaded for execution (in fact it has improved a lot) and this has greatly impacted the dnscrypt-loader code that will have to be fully rewritten. Note that the proposed change will not make dnscrypt-loader work with the latest versions of dnscrypt-proxy. Personally I keep using version 1.6.0 without problems until I find time to upgrade dncrypt-loader. Just for reference take a look at https://github.com/jedisct1/dnscrypt-proxy/issues/607 and https://github.com/jedisct1/dnscrypt-proxy/issues/574


NEP data regrid need

NEP data on the portal need to be regrid to provide regrid options

also NWA12 uo vo umo vmi


Add created_by_id for Node, NodeRevision, Collection, and Tag

Summary
Now that the current authenticated user is required and reliably available, this adds a created_by_id attribute for Node, NodeRevision, Collection, and Tag that stores the ID of the user that created that entity. The database change is pretty minimal, just adding that column and updating the sqlalchemy models to configure the back populates so that you can do user.created_nodes -> List[Node], user.created_collections -> List[Collection], etc. A good chunk of this PR is addressing two side effects from this:

Instantiating any of these models now require that you include created_by_id, so I had to make that change everywhere and make sure current_user is passed into all of the places this happens
The alembic upgrade has to deal with the fact that existing deployments have not been tracking this directly up until this change. What I do there is I just backfill created_by_id=1 everywhere (since it's required) and then that allows a manual backfill later if the creating user can be figured out through other means like scanning the history table.

One other thing I did is add a User scalar for the graphql endpoint and updated the resolver for findNode so that it also can pull in the information of the creating user via a createdBy field.
{
  findNodes(names: ["users.sredai.a_test_transform"]) {
    name
    createdAt
    currentVersion
    deactivatedAt
    id
    createdBy {
      email
      id
      isAdmin
      name
      oauthProvider
      username
    }
  }
}

Test Plan
Updated all of the relevant tests.

[ ] PR has an associated issue: #
[ ] make check passes
[ ] make test shows 100% unit test coverage

Deployment Plan

Why did you decide to use User ID instead of just Username? Username must be unique as well, no? Then created_by_user would also be clearer that created_by_id, but perhaps you want expand the scope of entities that can create things in DJ. Please clarify, I may be missing some core ideas here.

I just wanted it to be consistent with all of the other relationships where we use ID and also thought it would just be a better practice. I could see us in the future allowing users to update their email and username in the system through the UI in which case those wouldn't be great foreign keys even though they are required to be unique.

Why did you decide to use User ID instead of just Username? Username must be unique as well, no? Then created_by_user would also be clearer that created_by_id, but perhaps you want expand the scope of entities that can create things in DJ. Please clarify, I may be missing some core ideas here.

I just wanted it to be consistent with all of the other relationships where we use ID and also thought it would just be a better practice. I could see us in the future allowing users to update their email and username in the system through the UI in which case those wouldn't be great foreign keys even though they are required to be unique.

Ah. Makes sense! We could still call it created_by_user an use the ID though.


context related issue

In if condition, should be:
@@if (context.name === 'test' && nav === true) {

To print context seems not working, tried both:
@@name and  @@context.name

Reference on #62.
This issue could be closed.


gnomeExtensions.fuzzy-app-search: 4 -> 4.0.1

Motivation for this change
My PR was merged so now the patch is not needed anymore. This repo has no tags, so I used the commit where the metadata.json got updated.
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

Actually, I have created a tag release for this (and will continue to create tag releases in the future) if you prefer to use those.

Actually, I have created a tag release for this (and will continue to create tag releases in the future) if you prefer to use those.

Thank you for the input, I've updated it to the tag.

Result of nixpkgs-review pr 123658 at 3b34293b run on x86_64-linux 1

2 packages built successfully:

gnomeExtensions.fuzzy-app-search
tests.trivial


[SA] Temporary solution to potential DOS

This has been fixed in https://github.com/osmosis-labs/osmosis/pull/8125


note about command substitution

if you run something like this
echo $(echo "value"; sleep 1 &)

there is no way to send sleep to background in bash. it will always wait.
this affects pages here, because pages are injected using $().
you can't send a response back, while also launching a process per-response that persists any length after the response.
i will solve this with a special file dir and a process launched ahead of time looking for files dropped off to launch, removing the long-running process from the command substitution. i am opening this because others may also encounter this. feel free to close. :-)
thanks for the fun project, very convenient except for all the bash.

ok right now i'm launching background right before start.sh
./provider/background.sh &
./provider/start.sh

https://github.com/developing-today/code/blob/462a05ed49b2ba9745700cf8fa5cc1a7420aa4bf/sources/identity/provider/background.sh
https://github.com/developing-today/code/blob/462a05ed49b2ba9745700cf8fa5cc1a7420aa4bf/sources/identity/provider/config.sh
https://github.com/developing-today/code/blob/462a05ed49b2ba9745700cf8fa5cc1a7420aa4bf/sources/identity/provider/pages/link.sh#L24
https://github.com/developing-today/code/blob/2359b20c4d924532c4b76f72a774079d8549578c/sources/identity/provider.sh#L76

there's probably a better way

are you sure about this? i think i am doing something like this on https://connect4.bashsta.cc/
https://github.com/cgsdev0/bash-connect4/blob/4083f698cdba7738cf3efef3977061dfc74fbff5/pages/drop/[team]/[col].sh#L148-L149
i remember this working fine, but i could totally be wrong

could you tell me more about what you're trying to do?

@dezren39 some questions

what version of bash?
what OS?

i'll try to see if i can repro

this is my laptop where i am hosting this, which is WSL. it could be WSL related, eventually it will be running in a vm somewhere and i can confirm if it reproduces elsewhere.
user@laptop-framework:~$ bash --version
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

user@laptop-framework:~$ cat /etc/os-release
cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"

i just made this change locally and it now times out before sending the result
# cat << EOF > "$BACKGROUND_JOB_PATH"
# #!/usr/bin/env bash
# CHARM_DIR="$CHARM_DIR" $IDENTITY_DIR/identity charm link -d -o "$LINK_CODE_PATH" -k "${FORM_DATA[$key]}"
# EOF
CHARM_DIR="$CHARM_DIR" $IDENTITY_DIR/identity charm link -d -o "$LINK_CODE_PATH" -k "${FORM_DATA[$key]}" &

yeah ok, i am able to repro this too 😢
i will look into a solution

okay i think i'm starting to understand this
i think you need to redirect stdin, stdout, and stderr on the background process, otherwise it will block the exit
i created an example project:
https://github.com/cgsdev0/bash-stack/tree/main/examples/bg-task
notable files:

the background task
endpoint that spawns bg task

i am using SSE here because it's currently the only mechanism for sending asynchronous data back to the user

ok i think i kind of understand, i can try and copy that example at least and see if it works for me, thank you

it works!!! thank you!


Investigate using xolvio:webdriver package for PhantomJS testing

Figure out if and how meteor-robotframework can use the xolvio:webdriver package.  There may be some advantages to re-use this package (used by meteor-cucumber) rather than require folk to install PhantomJS on their machines separately.
Currently, I have left the dependency commented out in the package.js file.

Selenium2Library includes a webdriver client (written in python), so xolvio:webdriver is not required.


New XYPoint Field to index and query documents that contains cartesian points

The new xy_point field type facilitates the indexing and searching of points represented as unit less x, y pairs that fall in a 2-dimensional planar coordinate system. This will be similar to geo_point field type but there are no range limitations (geo_point has a range limitation of -90 to 90 for latitude and -180 to 180 for longitude). The point field will be based on Lucene field type XYPoint
RFC - https://github.com/opensearch-project/geospatial/issues/90

Feature is merged into 2.x


Consider allowing extra fields in variants with #[from] attribute by specifying default values

I am facing this situation:
#[derive(Debug, Error)]
pub enum Error {
    #[error(
        "{}{}{}",
        match .path { Some(ref path) => &path[..], None => "" },
        match .path { Some(_) => ": ", None => "" },
        .source,
    )]
    Tera {
        path: Option<String>,
        #[from]
        #[source]
        source: tera::Error,
    },
   // other variants omitted
}

Which yields this error:
error: deriving From requires no fields other than source and backtrace
  --> src/lib.rs:26:9
   |
26 |         #[from]
   |         ^^^^^^^

However, there is a pretty reasonable implementation of From<tera::Error> for Error: make this extra field path be constructed with None. Something like:
impl From<tera::Error> for Error {
    fn from(source: tera::Error) -> Self {
        Self::Tera { path: None, source }
    }
}

I could implement it manually, but it feels like it's a work that the procedural macro could be doing. Not only in my situation, but also in many similar situations, From could be automatically implemented constructing extra fields with some given default values. I'd propose this API:
#[derive(Debug, Error)]
pub enum Error {
    #[error(
        "{}{}{}",
        match .path { Some(ref path) => &path[..], None => "" },
        match .path { Some(_) => ": ", None => "" },
        .source,
    )]
    Tera {
        #[default(None)]
        path: Option<String>,
        #[from]
        #[source]
        source: tera::Error,
    },
   // other variants omitted
}

And also, to improve ergonomics, if the default value is omitted from the attribute, the proc-macro could generate Default::default()  as the constructed value. For instance, since None == Default::default(), the code above would be equivalent to the code below:
#[derive(Debug, Error)]
pub enum Error {
    #[error(
        "{}{}{}",
        match .path { Some(ref path) => &path[..], None => "" },
        match .path { Some(_) => ": ", None => "" },
        .source,
    )]
    Tera {
        #[default]
        path: Option<String>,
        #[from]
        #[source]
        source: tera::Error,
    },
   // other variants omitted
}

I intend to implement this myself if I find some time to do it, but I need feedback first. Is this feature welcome? If I open a PR with this, would it be welcome?

I would prefer not to build this into thiserror. I think it's just fine to handwrite the simple From impl as you showed, or you can look for a more fully-featured derive(From) library that could generate this kind of impl based on attributes.


Deprecate set in helmfile.yaml

Ref https://github.com/roboll/helmfile/issues/227#issuecomment-416465961
You should use values files templates not to bloat up your helmfile.yaml

--set-file in difference to readFile  allow to use urls
like
  set:
  - name: "configMaps.dashboards.files.deployment\\.json"
    file: https://raw.githubusercontent.com/cloudposse/grafana-dashboards/feature-kube-prometheus-dashboards/kube-prometheus/deployment-dashboard.json

Very useful.

@goruha Thanks! I'm aware of the feature. Good to know about someone who actually use the feature! I'll add a dedicated template function to fetch a remote url, and will ask for your confirmation before I actually deprecate or even remove the set: thing.

@Stono Your use-case is completely valid!
Unfortunately, I have no idea how we could cleanly support it with the template values file feature.
Don't worry. I won't remove the set: feature without your confirmation.

@Stono any reason you don't put that ```
set:

name: deployment.containers[0].image.tag
value: {{ requiredEnv "GO_PIPELINE_COUNTER" }}

In your values.yaml?

@mumoshu thanks!

@Stono More concretely, you could add values.yaml.gotmpl like:
deployment:
  containers:
  - image:
      tag: {{ requiredEnv "GO_PIPELINE_COUNTER" }}

And add the filename to values: in helmfile.yaml:
releases:
- name: sauron-web
  namespace: sauron-web
  chart: aws/platform-helm-at-service
  version: 0.1.{{ requiredEnv "GO_DEPENDENCY_LABEL_PLATFORM" }}
  values:
  - environments/values.yaml
  - environments/{{ requiredEnv "HELMFILE_ENV" }}/values.yaml
  - values.yaml.gotmpl
  secrets:
  - environments/{{ requiredEnv "HELMFILE_ENV" }}/secrets.yaml

Note that the gotcha here is that the values.yaml generated from values.yaml.gotmpl would replace the entire deployment.containers[] yaml array. So in case you have a secondary container defined by default in preceding values.yaml files, modify your chart to change deployment.containers from an array to a hash.
After that your values.yaml.gotmpl becomes:
deployment:
  containers:
    primary:
      tag: {{ requiredEnv "GO_PIPELINE_COUNTER" }}

I find set to be very convenient when using helmfiles for testing. I'd hate to see it go.

@blissd You seem to be talking about the --set flag, right? That's another story than this. I'm not going to remove the flag at all.

No, I mean set in the helmfile.yaml itself. We've been using v0.19, which I think predates the gotmpl files, but I'd like to upgrade to a newer version.
However, I'd be hesitant to use the gotmpl files because I like my values files to be the same as what would be passed to helm without using helmfile.

@blissd Thanks for clarifying! Makes sense, but do you know inline values in helmfile.yaml? That's basically better alternative to set:

Thanks, the inline values work fine for my use case. I'll have the team here migrate to that.

If we do end up deprecating set in favor of inline values, could we also merge the values and secrets sections in some way? Right now, it's impossible to specify a values file that will have higher priority than a secrets file, e.g., this command line cannot be replicated: helm upgrade --install -f values.yaml -f secrets.yaml -f values.prod.yaml -f secrets.prod.yaml.
If you write it like this:
values:
  - values.yaml
  - values.{{ .Environment.Name }}.yaml
secrets:
  - secrets.yaml
  - secrets.{{ .Environment.Name }}.yaml

... you'll end up with the following command: helm upgrade --install -f values.yaml -f values.prod.yaml -f secrets.yaml -f secrets.prod.yaml; that gives items from secrets.yaml higher priority than those in values.prod.yaml during the recursive merge.

@philomory Thanks! Yeah that's a valid point. I was thinking if we could use remote secrets though. WDYT?

That's great if you've got your secrets in Vault, it's a bit more awkward when each chart your deploying has a chart-specific helm-secrets YAML file, and some of those files for specific microservices might have the same key with different values.

Actually, I suppose ref+sops:// would solve that case? It'd be nice if vals and go-getter could join forces to read a sops-encrypted file from a remote git repo, but maybe that's asking too much (and obviously that's unrelated to whether the set section is deprecated or not).

@philomory Yeah I thought ref+sops:// in values could replace secrets.
Re: reading a sops encrypted file from a remote git repo, that sounds like an interesting use-case indeed :) Created https://github.com/variantdev/vals/issues/35 to track it.

@mumoshu So... does ref+sops:// actually work? I tried the following:
# helmfile.yaml
values:
  - ref+sops://secrets.yaml?&format=yaml

releases:
  - name: dummy
    chart: incubator/raw
    values:
      - {{ .Values | toYaml | nindent 8 | trimPrefix " " }}

# secrets.yaml (before encrypting with sops)
foo: bar

Results:
$ helmfile template
in ./helmfile.yaml: environment values file matching "ref+sops://secrets.yaml?&format=yaml" does not exist in "."

There's not actually any examples of how to use ref+sops:// anywhere in the Helmfile documentation (not even the PRs linked from the documentation), they only show ref+vault://; but using the ref+sops:// syntax from the vals documentation doesn't seem to work for me.


Enable to specify SBT launcher in config.

Can be set to 'sbtn' for much quicker vite startup in case the sbt server is already running.

I missed something, will reiterate.


Update PDB2PQR version to v3.6.0

Resolves #176
NOTE: Leaving PR in Draft mode until the new PDB2PQR version v3.6.0 is available via PyPI. Testing this change in dev server currently pulls v3.5.2

The PDB2PQR 3.6.0 is available on PyPI now.  Sorry about the delay and thanks for the reminder!

I'm going to need to release PDB2PQR 3.6.1 later today because of a problem with the documentation build.  Sorry...

3.6.1 has been released here;  https://pypi.org/project/pdb2pqr/3.6.1/


Remarks section missing word

The Remarks section contains:

You can also add the  to your application's configuration file.

It seems to be missing a word between the and to.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 53e48129-8ce2-dc3c-9f92-ba5e11260eac
Version Independent ID: e602e52c-23ce-fc33-e2d9-fc8b113fc95b
Content: HandleProcessCorruptedStateExceptionsAttribute Class (System.Runtime.ExceptionServices)
Content Source: xml/System.Runtime.ExceptionServices/HandleProcessCorruptedStateExceptionsAttribute.xml
Product: dotnet-api
GitHub Login: @rpetrusha
Microsoft Alias: ronpet

Thanks for finding this @nnpcYvIVl! There is now an open pull request to resolve this issue.


APK building workflows (on demand and CI one)

Fix CI workflow so that it can properly build APKs after every commit.
Additionally, add one more workflow which can build any repo/branch without forking them.
Both of them upload the built APK when done; only the CI one is set to run
Issue link: https://github.com/Cloud-City-RS/OMNTelcoMetrics/issues/3
If we revisit this later on, the new key has to be generated by using the keytool tool, and then Base64'd and that has to be put in the Repo's Secrets as KEYSTORE, the key alias as KEYALIAS and the store/key passwords as STOREPASSWORD and KEYPASSWORD respectively.
The command for generating the new keystore is:
keytool -genkeypair -v -keystore new-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias cloudcity

and that will generate a  keystore with 'cloudcity' key alias

Summary by CodeRabbit

New Features

Introduced a new workflow for manually building Android APKs with customizable inputs.
Updated existing workflow to focus on building debug APKs, enhancing output detail during the process.

Bug Fixes

Improved file handling in APK build processes to accommodate variations in file names.

I dunno why it's not succeeding yet, but maybe it's still runing the workflow from master branch and that one is failing. Shouldn't be the case but, lets ship it regardless.


Use webpack v5

Describe the desired behavior
Build the variant switcher using webpack v5, as requested by dependabot in #42.
Describe the current behavior
It has not been upgraded as this introduces breaking changes. Attempts were made, and console errors rained.

Look into whether upgrading to the latest 4.x.x version resolves this security vulnerability


pcie nvme raid possible?

reposting this hear as i haven't received a reply at the rcraid-dkms github issue tracker in 3 days.
i recently upgraded to a Threadripper CPU and x399 chipset motherboard(an Asrock Phantom Gaming 6). A couple of days ago i purchased 2x Samsung 970 EVO+ pcie3 nvme m.2 sticks and installed them on the motherboard's m.2 slots. i am currently booting from a single intel 760p m.2 stick installed in an asrock Ultra Quad M.2 host bus adapter(is not a raid controller) with Kubuntu 19.04 as the OS.
i have gone thru the BIOS setti gs and enabled raid mode for the sata controller and turned on nvme raid mode under amd pbs(?) section. afyer a reboot and entering the bios again i was able to initialize the nvme sticks for raid use and assemble an array.
i booted to the OS(rcraid-dkms was already installed as i used it to test with a 2x 2.5in ssd raid 0 array and it worked splendidly), however i am unable to see any raid device composed of the two nvme sticks( the previous sata ssd array was deleted and the drives removed). only the two seperate nvme devices show up in fdisk.
is the current version of rcraid able to support nvme raid mode,.and if so, where might i find some documentation on how to get this array recognized by the OS.....i have followed many guides but so far have been unsuccesful with any attempts....alot of guides suggest to boot ubuntu installer in uefi mode, but i am not having any succsss to get the installer to reach a desktop. my desire is to have a 2TB raid 0 root that is bootable. i have looked into mdadm and a bootable array is not possible via that route and I'm not a fan of lvm.
is what i am asking possible?
some further info:
last bit of dmesg output concerning rcraid module:
[ 859.325295] <5>AMD, Inc. rcraid raid driver version 8.1.0 build_number 8.1.0-00039 built Jul 05 2019
[ 859.325297] <5>rcraid built on kubuntu by root on Fri 05 Jul 2019 07:53:18 PM UTC
[ 859.325299] <5>rcraid: cmd_q_depth 512, tag_q_depth 16, max_xfer 448, use_swl 0xffffffff
[ 859.325420] <5>rcraid_probe_one: vendor = 0x1022 device 0x43bd
[ 859.325429] <5>rcraid_probe_one: Total adapters matched 1
[ 859.325847] <5>rcraid: rc_init_adapter 64 bit DMA enabled
[ 859.326014] <6>### rc_init_adapter(): RC_EnableZPODD = 0
[ 859.326096] <3>rcraid:0 request_threaded_irq irq 160
[ 859.326101] <5>rcraid: card 0: AMD, Inc. AHCI
[ 860.400327] <6>rcraid: rc_event: config change detected on bus 0
[ 860.400867] scsi host4: AMD, Inc. AMD-RAID
[ 860.406385] scsi 4:0:24:0: Processor AMD-RAID Configuration V1.2 PQ: 0 ANSI: 5
[ 860.411387] scsi 4:0:24:0: Attached scsi generic sg3 type 3
as you can see it fails to create an sdX device, but is recognized.
listing of fdisk -l:
Disk /dev/loop0: 1.7 GiB,<PHONE_NUMBER> bytes, 3605184 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 5.6 TiB,<PHONE_NUMBER>272 bytes,<PHONE_NUMBER>6 sectors
Disk model: ARC-1231-VOL#01
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 97E0EB8F-E0B4-4355-B889-DCDF8E6D8322
Device Start End Sectors Size Type
/dev/sda1 2048<PHONE_NUMBER>7<PHONE_NUMBER>0 5.6T Linux filesystem
Disk /dev/nvme0n1: 953.9 GiB,<PHONE_NUMBER>168 bytes,<PHONE_NUMBER> sectors
Disk model: INTEL SSDPEKKW010T8
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: F95B1B91-01E0-4AD3-A9A5-C68E08FFCA97
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048<PHONE_NUMBER><PHONE_NUMBER> 953.9G Linux filesystem
Disk /dev/nvme1n1: 931.5 GiB,<PHONE_NUMBER>016 bytes,<PHONE_NUMBER> sectors
Disk model: Samsung SSD 970 EVO Plus 1TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x8fa8c2d5
Device Boot Start End Sectors Size Id Type
/dev/nvme1n1p1 63<PHONE_NUMBER><PHONE_NUMBER> 931.5G 82 Linux swap / Solaris
Disk /dev/nvme2n1: 931.5 GiB,<PHONE_NUMBER>016 bytes,<PHONE_NUMBER> sectors
Disk model: Samsung SSD 970 EVO Plus 1TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3313112f
Device Boot Start End Sectors Size Id Type
/dev/nvme2n1p1 63<PHONE_NUMBER><PHONE_NUMBER> 931.5G 82 Linux swap / Solaris
Disk /dev/sdb: 7.5 GiB,<PHONE_NUMBER> bytes, 15634432 sectors
Disk model: USB Flash Drive
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x4b9627aa
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 0 3742559 3742560 1.8G 0 Empty
/dev/sdb2 3711844 3719331 7488 3.7M ef EFI (FAT-12/16/32)
this is while booted from a Kubuntu USB installer in UEFI mode. you can clearly see the nvme devices listed ( /dev/nvme1n1 and /dev/nvme2n1, not sure what that swap partition type is about).
if you need anymore info, please let me know.
addendum:
after some further reading and finding out about the lsscsi utility, lsscsi produces the following output:
lsscsi
[0:0:0:1]    disk    Areca    ARC-1231-VOL#01  R001  /dev/sda
[0:0:16:0]   process Areca    RAID controller  R001  -
[1:0:0:0]    disk    Lexar    USB Flash Drive  1100  /dev/sdb
[2:0:24:0]   process AMD-RAID Configuration    V1.2  -
[N:2:4:1]    disk    Samsung SSD 970 EVO Plus 1TB__1            /dev/nvme2n1
[N:0:4:1]    disk    Samsung SSD 970 EVO Plus 1TB__1            /dev/nvme0n1
[N:1:1:1]    disk    INTEL SSDPEKKW010T8__1                     /dev/nvme1n1
seems that the driver fails at the N:2:4:1 and N:0:4:1 disk naming conventions...

Hi kubuntugamer,
I regret to say but I do not have any experience with NVME RAID arrays and no NVME drives here to try and find out. As you probably know, the Linux driver comes with large binary files, therefore there is no access to the source code to find out what the driver is really capable of. However, the binary files contain symbols with the string "NVME" in their names, although not many. In the documentation, for Windows you can find a description how to setup NVME disks for RAID. So there might be a slight hope to get your NVME raid array up and running. Besides from changing BIOS parameters I have no clue what might help. If you have access to Windows you might have a try and see if you can get it up and running - just to confirm that the hardware is OK and get the BIOS parameters right.
Good luck!


Install generator: Also copy select2 locales

These locale files are referenced in the generated all.js file, but
not actually copied over.

But they're only in the load path because we require the gem from the host app.
It seems like there's two ways of using this gem:

Install it in the development group and run the installer locally, then commit the files to the host project
Load the gem in production as well - in which case I don't think we need a large part of the installer

But they're only in the load path because we require the gem from the host app. It seems like there's two ways of using this gem:

Install it in the development group and run the installer locally, then commit the files to the host project
Load the gem in production as well - in which case I don't think we need a large part of the installer

Since we merged #41 and released v3.0 1.) is not necessary anymore. The installer is still necessary for the JS files unless you want to precompile a bunch of locale files you are not using in production.


Get fiat currency by code

In response to #2
@lasconic is that what you where looking for?
It return the currency object at this stage.
Would you prefer the currency id directly?

Sorry I should have messed up with my previous commit and tentative of using separate branchs....
Let me know if you want me to redo everything from scratch


Selected tab view position

Can we show the selected button view at the top of the tab like in the image below.

It worked if we set the settings.style.selectedBarVerticalAlignment = .top before super.viewDidLoad().


Migration to null-safety

Starting from Flutter 2.0 and Dart SDK 1.12.0, dart language now supports sound null safety which requires explicitly defining null values.

hey @curquiza , I've migrated the library to null safety on nnbd branch. I think we might release this version as a pre-release (1.0.0-nullsafety.0) for now. (I also increased minor version because nnbd migration is considered as breaking change).

Hello @TheMisir! This package will not release a 1.0.0 version until we are sure we are stable, and most of all, until MeiliSearch is stable (release a 1.0.0). This repository is even still considered as not ready for production at the moment. So no need to do a 1.0.0-nullsafety.0 tag. We can release the 0.2.0 version containing this nullsafety change.
Why would we need a pre-release for this?

I agree. Let's publish as v0.2.0.

I think you can re-open https://github.com/meilisearch/meilisearch-dart/pull/42 right? 😁


Database SSL Mode verify-ca or verify-full with a custom CA certificate

Expected Behavior
Given a custom root CA certificate for a postgres database server, I would like postgres to use verify-ca or verify-full SSL modes using the custom CA certificate.
Is there a mechanism for achieving this that maybe I have missed?
Actual Behavior
With the existing kubernetes manifests, there does not seem to be a mechanism for mounting a trusted certificate either in postgres default location or by specifying a custom location to postgres.
Steps to Reproduce the Problem

Configure Results with either DB_SSLMODE=verify-ca or DB_SSLMODE=verify-full.
Provide a trusted certificate to Results to be used by postgres.
Results API should undertake SSL verification using the trusted certificate when connecting, but does not.

Additional Info

Kubernetes version:
Output of kubectl version:
(paste your output here)

Tekton Pipeline version:
Output of tkn version or kubectl get pods -n tekton-pipelines -l app=tekton-pipelines-controller -o=jsonpath='{.items[0].metadata.labels.version}'

/kind feature
Agree this would be a net new feature, as Results would need to do the following:

Provide a means for the database certificate authority (CA) to be (optionally) mounted at a known path in the apiserver deployment.
Ensure that the path to the database CA is passed into the Postgres connection string, via the sslrootcert parameter.

See PostgreSQL SSL docs for further technical information.

/lifecycle frozen
This is an important security feature.

/assign enarha

@iainsproat, when you have a chance please TAL at #658. It implements the feature you asked for. Thanks.


[bug]

Please describe the bug

Help us reproduce what you're seeing

Expected behavior

Environment

Additional context

Hi, if you need help please make sure to fill out the template!