OAuth support for the Wikidata extension

See #1612
Update:
As discussed below , three-legged OAuth support for the Wikidata extension is not useful now or in the near future, since it requires the multi-user support of OpenRefine, which still has a long way to go.
This PR doesn't achieve all the goals of  #1612 , it just adds two-legged OAuth support (enable using owner-only consumer to login).

Hi @wetneb @tfmorris, the GSoC coding period has started, I'll work on this PR to add OAuth support to the Wikidata extension, so you can see my progress here.

Hi @wetneb @tfmorris , I've finished the OAuth prototype with commit#de080e6. I've tested it locally and written some unit tests for it. You can see that I've uploaded some edits using the Wikidata extension with OAuth:

You can test it with the following steps:

install the latest Wikidata-Toolkit locally, since the version with OAuth functionality hasn't been released it. You need to set the version to "0.12.0".

propose an OAuth consumer at https://meta.wikimedia.org/wiki/Special:OAuthConsumerRegistration/propose, the callback should be set to "http://localhost:3333/command/wikidata/authorized". For "Applicable grants", check "High-volume editing", "Edit existing pages" and "Create, edit, and move pages" (I still need to figure out the rights needed).

configure WIKIDATA_CLIENT_ID and WIKIDATA_CLIENT_SECRET in refine.ini. Or you can manually set the environment variables "ext.wikidata.clientid" and "ext.wikidata.clientsecret".

use the Wikidata extension to login and upload some edits to Wikidata. You should see this dialog when you login to Wikidata:

@wetneb @tfmorris In the implementation of commit#de080e6, I use ConnectionManager to hold an  ApiConnnection instance (can be BasicApiConnection or OAuthApiConnection). This way, only one connection is supported at the same time. This makes sense since OpenRefine currently is not for multiple users to share, and it also makes it possible to save/restore the login credentials (username/password or OAuth access token/secret) to/from the preferences.
But this is a weird design. To enable the OAuth functionality, the user has to register an OAuth consumer (the consumer cannot be owner-only consumer, since for owner-only consumers, the usual authorization flow will not work). Typically, OpenRefine is used locally, so the user must set the callback URL to, for example, "http://localhost:3333/command/wikidata/authorized". But as mentioned at the OAuth consumer regsitration of wikimedia:

Proposals which look like test apps (have "test" in the name or use localhost as the callback URL) will be ignored; you can use them with your own account, for 30 days.

So the consumer will be invalid after a month, unless OpenRefine is hosted in public and the registration is approved. For local use, it's better to use the owner-only consumer. In that case, to login, the user can just give OpenRefine the consumer id/secret and the access token/secret, just like the username/password.
So I'm going to change the design (which is similar to the design in first version of my GSoC proposal):

If consumer id and consumer secret are not configured in refine.ini, keep the original login dialog, and add a new form to support login with owner-only consumer:

In this case, two-legged OAuth is supported. We still use ConnectionManager to hold one connection and can save/restore the credentials.

Otherwise, three-legged OAuth is supported. This is about enabling multiple users to uploading edits to Wikidata at the same time, it's still far from full multi-user support (for example, access control and collaborative editing are not supported). In this case, we only provide the following login form:

If the user clicks on the "Log in" button, the three-legged OAuth flow then begins. The access token/secret will be saved in cookie, and the connection is kept in session. OpenRefine will not serialize the credentials (since the "Remember credentials" option is gone).

@afkbrb that sounds like a very sensible plan! Yes the current design is far from ideal for a multi-user setting, I am glad you are pushing the architecture in the right direction.

I like the new proposal better. It's much cleaner to store the secrets client side than server side. I'd even go as far as suggesting that perhaps we don't want to allow the saving of passwords in refine.ini since we have no way to encrypt them reliably.

To host OpenRefine in public, we'll only support using OAuth to login, the host must configure the consumer id/secret somewhere that OpenRefine can reach. refine.ini should be visible only to the host, so I think it's safe to keep the credentials in refine.ini, though encrypting them would be better.

Hi @wetneb @tfmorris , I've almost finished the new design. But I don't know how to deal with the serialization/deserialization of operations properly.
To be more specific, we are changing the wikidata extension to support multiple users to upload edits to Wikidata at the same time, so each PerformWikibaseEditsOperation must be bind to a user/connection. But how to serialize/deserialize the operation with the connection properly? I think it's not secure to include the connection in the serializing result. So when deserializing, we need to provide the operation with a connection somehow. The deserializing logic is in ApplyOperationsCommand, which is in the main module. We could check if the deserializing result is an instance of  PerformWikibaseEditsOperation, if it is, we could get the connection from session and set it to the result. But in this way, we are mixing the main module and the wikidata extension together, so it's not a good solution.
Maybe we could add an " initWithRequest(HttpServletRequest request)" method to the AbstractOperation class, the method is used to init an operation with the data from the request (such as the connection we need). This method should be implemented in AbstractOperation as an empty method, since most operations now don't need to be inited with the request. But an operation can choose to override it if needed. For example, for the PerformWikibaseEditsOperation, it can override the method like this:
    @Override
    public void  initWithRequest(HttpServletRequest request) {
        connection = (ApiConnection) request.getSession().getAttribute("wikidata-connection");
    }

So after it is deserialized, it can get the connection needed from the request.
Do you think this is a proper solution? Or can we solve this in a better way? Looking forward to your suggestions.

This is an interesting problem! I would say that full multi-user support is beyond the scope of this PR. It is of course useful to think about it as we are doing things, but it is good to keep the scope of the PR as small as it can be.
To address your point specifically: the JSON serialization of operations must be changed with a lot of care, because this JSON format is exposed to the user (when they export their workflow in the Undo/Redo tab). So the crucial question here is: when exporting a workflow to a JSON blob, do we want to also serialize the connection information? I would say no, because this information is generally private, and users expect to be able to share JSON workflows, or re-execute them when logged in via other methods.
At the moment, when a user applies a JSON workflow, we just expect them to be logged in already and we fetch the connection via a static instance. If they are not logged in, the operation will fail. This is of course not ideal, but is mostly down to the fact that operations do not have a good API to expose their requirements and dependencies before being applied (so many other operations will fail similarly, for instance if the column they are supposed to be applied on does not exist).
For now I propose that we keep this architecture: the connection is fetched from the ConnectionManager, which can return either a password-based connection instance or an OAuth one, depending on how the user has logged in. We can (and should) change this later on, but I would say that this problem is distinct from adding OAuth support.

If we go that route, I think we might want to create a separate subclass of AbstractOperation with a different constructor, similar to the way that EngineDependentOperation, but it seems unusual that this is an Operation at all, rather than a Command, since it doesn't modify the data. My apologies for not noticing this sooner.
Both the Freebase UploadDataCommand, which this is probably most analogous to, and the various cloud exports in the GData module are implemented as Commands.
@wetneb is there a specific reason that this is structured as an Operation instead of a Command?
On the multi-user front, OpenRefine is decidedly not multi-user, so I don't think we should attempt a half solution here. We should minimize the exposure of credentials, but other than that follow the existing pattern of it being single user.

@wetneb is there a specific reason that this is structured as an Operation instead of a Command?

Yes, the idea is that uploading the edits is an operation as part of a larger workflow. You could argue that it should be an exporter instead, but we do not have long-running exporters and there are data upload workflows where it makes sense to do multiple uploads (for instance, creation of new items and updates of existing items separately), so capturing this as an exporter would not let JSON workflows capture them.

If we go that route, I think we might want to create a separate subclass of AbstractOperation with a different constructor, similar to the way that EngineDependentOperation, but it seems unusual that this is an Operation at all, rather than a Command, since it doesn't modify the data. My apologies for not noticing this sooner.

@tfmorris  Thanks for your suggestion, that could be a good solution for the serialization/deserialization problem. That problem occurs only if we want to support multiple connections at the same time, but now I am think that maybe we should still support only one connection/user after reading both your comments.

For now I propose that we keep this architecture: the connection is fetched from the ConnectionManager, which can return either a password-based connection instance or an OAuth one, depending on how the user has logged in. We can (and should) change this later on, but I would say that this problem is distinct from adding OAuth support.

This way, we don't need to take care of the PerformWikibaseEditsOperation. But only one connection is supported at the same time. This is not a big problem because OpenRefine is usually used by a single user. Here's one question: when will we introduce a full multi-user support to OpenRefine? I guess that won't happen in the near future that should appear in a 4.x version.

OAuth support is arguably not very useful in a setting when the rest of the software is decidedly single-user, but there is still a case for it (I use OpenRefine but I don't trust it to handle my password securely, or I want to control the action OpenRefine can do by limiting the scopes of my OAuth application).

So I begin to think about the final goal of this PR, do we really need the three-legged OAuth support?
If we only introduce two-legged OAuth support here (i.e., add support for using owner-only consumer to login), it can already benefit a lot to users who want to limit the rights they give to OpenRefine and don't want to give OpenRefine their passwords. And we only need to deal with the single connection held by ConnectionManager.
Three-legged OAuth makes sense only when multi-user support is available. That's why we have to add a very limited multi-user support here. Ideally, OpenRefine should have a user system first, then we bind a user's Wikidata account to their OpenRefine user account via OAuth. Also, in my new design above, for the three-legged OAuth support, I divide OpenRefine to local mode (single user) and public mode (multiple users), different modes result in different behaviors both in the backend and the frontend. Since the public mode is almost useless for now or in the near future, the design is adding unnecessary complexity to OpenRefine.
I guess we should focus on single-user support on 3.x for now, and only add support for using owner-only consumer to login in this PR. The three-legged OAuth support should be introduced in a 4.x version when multi-user support is avaiable. But this doesn't seem like the goal of #1612. By changing the goal, I'm a little worried about my first evaluation of GSoC :)
We can still use three-legged OAuth support to authorize a single user, as I've already finished with commit#de080e6. But if the simpler two-legged OAuth can do the same thing, why don't we choose it?
I really need your suggestions on whether we should change the goal or not.

@afkbrb It's a little difficult to have this discussion because we are in 3 different geos widely separated in space and time, but please let me reassure you that changing the goal in a mutually agreed way will have absolutely no negative effect on your evaluation. Adapting to evolving requirements is a key part of software engineering.
From my point of view, I think the two-legged OAuth support would be sufficient, but let's hear what @wetneb has to say. Either way, I think we want to preserve the work that you've done on the three-legged support regardless.
As for multi-user support, I think it's orthogonal to the scalability work being targeted for what's being called "4.0," but definitely something bigger than we'd be comfortable fitting into 3.x, so definitely not in the immediate future.

when will we introduce a full multi-user support to OpenRefine?

That definitely requires a lot of thought as it brings up many important design questions! I agree with @tfmorris that we are highly unlikely to ship a full multi-user support soon, but I would not be opposed that you start thinking about some small steps towards that. But I would really like that we do this in PRs that are as granular as possible.
I think there is a good case for letting operations rely on authentication information obtained from user cookies. The current mechanism to store user credentials is really not satisfactory (storing credentials in plain text in the preferences is bad), so it is worth working on this even if it does not actually enable multi-user support: this would just improve the security of the tool a lot. As we are also thinking about adding authentication support for other operations (such as reconciliation, with endpoints requiring some sort of authentication, #2015), now feels like a good time to start thinking about that more seriously.

do we really need the three-legged OAuth support?

How about this:

in this PR we do not add three-legged OAuth support, just the two-legged version. The PR does not need to change the architecture of ConnectionManager
in a separate issue (to be opened) we discuss architectural changes to allow operations to rely on user cookies;
once we have agreement about this issue we implement it in another PR;
finally we add three-legged OAuth support building up on the new architecture.

Does this sound like a sensible plan? Of course if we do not reach a consensus around the new architecture we can also skip the last three bullet points and let @afkbrb move on to other aspects of the GSoC project (wikibase support), but in any case we will have the consensual parts of OAuth (two-legged workflows) implemented.
I think this is a great opportunity to get @afkbrb involved in interesting architectural discussions, so I would be keen to take advantage of this opportunity :)

in this PR we do not add three-legged OAuth support, just the two-legged version. The PR does not need to change the architecture of ConnectionManager.

...but in any case we will have the consensual parts of OAuth (two-legged workflows) implemented.

Yes, that's what I want to do in this PR in the next.

The current mechanism to store user credentials is really not satisfactory (storing credentials in plain text in the preferences is bad)

So in the following commits, when we add the two-legged OAuth support, do we still store the credentials in preferences? In the future, when we add multi-user support, user's own credentials should definitely be stored in the client side. But now, if we store the credentials in the server side, ConnectionManager is able to read them and try restoring a connection with them automatically. In this case, the user doesn't need to login before replaying a serialized PerformWikibaseEditsOperation. If the credentials are store in the client side, the user does need to login before replaying it.

in a separate issue (to be opened) we discuss architectural changes to allow operations to rely on user cookies;
once we have agreement about this issue we implement it in another PR;

Agree, and I think that could be easy (the proposed initWithRequest(reqeust) method above should actually be able to do it).

finally we add three-legged OAuth support building up on the new architecture.

Even if we agree on some changes to allow operations to rely on user cookies, it's just solving the serialization/deserialization problem. The three-legged OAuth is still not very useful in the absence of full multi-user support, and I don't expect it to be merged into the master branch. But if you agree, I can create a new branch and push my work on three-legged OAuth support to it for later reference.

I agree with @wetneb that storing credentials in plain text is undesirable and I don't think it's too much of a burden to ask users to login. I'd rather prioritize security over convenience.

But if you agree, I can create a new branch and push my work on three-legged OAuth support to it for later reference.

Yes, I think that would be good.

Hi, I finished the owner-only consumer support just now.
To test it, we still need to clone https://github.com/Wikidata/Wikidata-Toolkit.git and install it locally. The version should be set to "0.12.0".
I changed the login dialog in the commit. Hope you like it.

@tfmorris @wetneb , waiting for your review :)

@afkbrb Sorry for the delay! I've been trying to finish up some critical bug fixes which are blocking the 3.4 release. I will get to it before the end of the weekend.

No hurry, I just want to remind you that the OAuth support is almost done, I'll begin to prepare for the wikibase support in the following days. The preparation won't take me too much time, so we can still improve the OAuth support during that period.

When I attempt to build wdtk with the pom.xml edited to version 0.12.0, I get the following errors when I try to build with Maven
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] 'dependencies.dependency.version' for com.squareup.okhttp3:okhttp-urlconnection:jar must be a valid version but is '${okhttpVersion}'. @ line 38, column 13
[ERROR] 'dependencies.dependency.version' for com.squareup.okhttp3:mockwebserver:jar must be a valid version but is '${okhttpVersion}'. @ line 43, column 13
[ERROR] 'dependencies.dependency.version' for se.akerfeldt:okhttp-signpost:jar must be a valid version but is '${okhttpSignpostVersion}'. @ line 49, column 13
 @
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR]   The project org.wikidata.wdtk:wdtk-wikibaseapi:0.11.1 (/Users/tfmorris/git/Wikidata-Toolkit/wdtk-wikibaseapi/pom.xml) has 3 errors
[ERROR]     'dependencies.dependency.version' for com.squareup.okhttp3:okhttp-urlconnection:jar must be a valid version but is '${okhttpVersion}'. @ line 38, column 13
[ERROR]     'dependencies.dependency.version' for com.squareup.okhttp3:mockwebserver:jar must be a valid version but is '${okhttpVersion}'. @ line 43, column 13
[ERROR]     'dependencies.dependency.version' for se.akerfeldt:okhttp-signpost:jar must be a valid version but is '${okhttpSignpostVersion}'. @ line 49, column 13

I'm sure I could debug it, but perhaps you could fork that repo, make the version edit and whatever other edits are necessary and send us a link to it so it works out of the box? I'm not going to work on it any more tonight, so no rush.

Sorry I didn't make it clear. I just tried again, simply replace all "0.11.1" with "0.12.0" should work.

@tfmorris one easy way to build and install WDTK for this PR is:
mvn versions:set -DnewVersion=0.12.0
mvn install

After that you should be able to build this PR.
To get this merged, we could:

ask to get a new version of WDTK released (in which case it would be good to make sure we do not foresee any other change on that side at the moment)
install a local jar in the repo
publish a snapshot on Maven with our org.openrefine domain.
Have you got preferences?

@wetneb

The discrepancy between the appearance of the two login fields is something that was there before, just throwing that in if you happen to know how to solve this cleanly (but not a requirement to merge the PR obviously).

Interesting, I can't reproduce it on the latest Firfox (I mean the different size of the two inputs). Part of the discrepancy is due to the fact that we did define the style of "input[type=text]" in common.less but the definition of "input[type=password]" is missing there. So probably setting the styles of "input[type=text]" and "input[type=password]" to the same could solve the problem.
The following screenshots are also made on Firfox (I've swapped the two explaining messages):
Before defining the style of "input[type=password]":

After:

Besides, I don't know why the image right to "Remember me" was missing on your Firefox. I failded to reproduce it on my Chrome and Firefox. Can you see that image on another browser?

@afkbrb @wetneb I was finally able to build by editing wdtk-wikibaseapi/pom.xml to hardcode the values for '${okhttpSignpostVersion}' and '${okVersion}'. I'm not sure if it was a platform dependent difference in evaluation order or something else, but I'm not going to attempt to debug it. I'm running the latest mvn 3.6.3 on Mac OS X.
@wetneb Either a locally hosted jar or self-published maven artifact works for me. I guess I have a slight preference for the latter because it's closest to our target, but it's not a strong preference.

@tfmorris now the PR should compile out of the box for you, hopefully (I am using the Maven Central snapshot repository for the first time so I hope I did not get things wrong).

"information.png" should definitely be "Information.png", but it's weird that the image was loaded normally when I was testing. I'll try figuring out what happened.

Thanks for your approvals 🎉

@wetneb Thanks for publishing the artefact! That'll definitely make things easier, although I did get this built yesterday after I figured out that I needed to edit all the POM versions.
@afkbrb Looks great! I made a few clarifying edits to the wiki page with the consumer registration instructions. Can we restrict the target to just www.wikidata.org instead of *? It seems like that's all we should need. In general, the more restrictions the users can put in place, the more comfortable they will be.
The icon looks good now. The only nit that I have about it is that I expected it to be clickable. I clicked it several times before giving up, only to realize later that I was resetting the hover timeout every time I clicked. Perhaps we should think about the best way to inform the user. We should also make an explicit statement that they shouldn't use "Remember" on a shared computer they don't control.

Can we restrict the target to just www.wikidata.org instead of *? It seems like that's all we should need.

Limiting to www.wikidata.org  should work, since we only deal with it. I'll test it.

The only nit that I have about it is that I expected it to be clickable. I clicked it several times before giving up, only to realize later that I was resetting the hover timeout every time I clicked. Perhaps we should think about the best way to inform the user.

The cursor doesn't become a pointer when it's moved to the information icon, I think this might be enough to inform the user that it's not a clickable element.

Limiting to www.wikidata.org should work, since we only deal with it. I'll test it.

Actually, I tested it with my registration and it seemed to work fine (at least as far as authentication goes). I'll update the wiki page.
Thanks for all your work! It looks really good.

Uploading edits also works.

Hi @tfmorris , can you merge https://github.com/OpenRefine/OpenRefine/tree/wikidata-extension-oauth to master so we can have more people test it with our nightly releases. Or do I need to create a PR for that?

@afkbrb Sorry, when I did the merge I didn't notice that the original PR wasn't against master, but @wetneb's development branch. Can you please create a PR from your branch to OpenRefine/master so that we have a record of what was merged and I'll merge it for you? Thanks

I created that branch on OpenRefine actually...
I'll create a PR right now.
Maybe next time when I work on the Wikibase support, I should directly create the PR against master.

Maybe next time when I work on the Wikibase support, I should directly create the PR against master.

Yes, please.


Does the msal-react library automatically refreshes the token?

Core Library
MSAL.js v2 (@azure/msal-browser)
Core Library Version
2.33.0
Wrapper Library
MSAL React (@azure/msal-react)
Wrapper Library Version
1.5.3
Public or Confidential Client?
Public
Description
Does the msal-react library automatically refreshes the token?
I am using Azure app registration, but can see only access token as a part of response returned by "acquireTokenSilent". Access token lifetime (as per jwt.io) looks like 1.5 hours.
How does the token refresh work here?
Do we get a new token after 1.5 hours of does the user logout? I am using web api at backend which are getting authorized with the JWT generated on frontend. Will my API start giving 401 after 1.5 hours?
MSAL Configuration
Not a configuraiton issue

Relevant Code Snippets
Using this to get the access token
 instance.acquireTokenSilent({
                scopes: ["User.Read"],
                account: account

Identity Provider
Azure AD / MSA
Source
External (Customer)

Thank you for pointing me to the right direction.


Feature/j value

I had some problems with Nustache to identify a boolean with Newtonsoft because it return a JValue instead of a boolean as type.
I added a new micro service to identify the value of the Newtonsoft.Json.Linq.JValue with its tests.

Currently I have updated the Nuget package on my server as prerelease version but I prefer to use your official Nuget package.
When do you think take a look on this pull requests?

Hey there,
It seems like it would work perfectly fine however it goes out of the ValueGetter/ValueGetterFactory structure that Nustache uses to find its values.
I'd be hesitant about including it purely as this logic should be within that structure and it could set bad precedent.
I was planning to look at performing essentially the same logic but within a factory (for checking if the object is a JToken and in a ValueGetter which performs the logic of getting the typed values from the object.
This was IsTruthy wouldn't have to be adjusted as it would be performed on primitive types.
What do you think of that solution?

Ok, I will apply the logic into a new one ValueGetter with its factory.

Perfect thank you, if you need any advice feel free to ask. I would do it myself but i'm currently working on a side project and have little time.

Done, I saw that you already have PropertyDescriptorValueGetterFactory and I just added a condition into PropertyDescriptorValueGetter to check whether the value received is a JValue.
The previous unit tests still works very well.

Hello,
When do you think check the PR and update the Nuget package? Because I need an update soon and I whether it's too late, I will create a new one just for me.

I should be able to merge this and get it pushed today. Within the next few hours, work permitting at latest this evening GMT.

Thank you! Sorry to rush you ;)

This has been merged in for you and released. Thanks for your contribution.

Thank you for your quick answer.


Support new cockroachdb metrics for v24.1.

Now that cockroachdb v24.1 is generally available, Datadog should support metrics added in the latest release. I believe the new metrics should be added to the metrics map and metadata.csv. I would be happy to send a PR adding the new metrics, unless it's easier for the Datadog team (cc @FlorentClarret) to do it.
I would also be curious to hear what kind of process the Datadog team would support for regular updates. Do you all have some automation to update the metrics mapping and metadata? If not, would you accept a PR adding that automation?
cc @sudomateo

Hello @jmcarp 👋
Thanks for opening this issue! I let the team in charge of the integration know about this, they will reach out soon.

Thank you! Having a regular process to update the integration metrics would be a fantastic experience. CockroachDB already generates its metrics for its documentation in this https://github.com/cockroachdb/cockroach/blob/master/docs/generated/metrics/metrics.html file. Perhaps we can use that.

👋 @jmcarp and @sudomateo supporting new out-of-the-box metrics is not just a question of automation. We brought this up internally and the decision was to limit the metrics to the ones we added in March of this year:

https://github.com/DataDog/integrations-core/pull/17079
https://github.com/DataDog/integrations-core/pull/17141
https://github.com/DataDog/integrations-core/pull/17155
https://github.com/DataDog/integrations-core/pull/17163
https://github.com/DataDog/integrations-core/pull/17164
https://github.com/DataDog/integrations-core/pull/17166
https://github.com/DataDog/integrations-core/pull/17183
https://github.com/DataDog/integrations-core/pull/17192

Thank you for the update! It's unfortunate it's not what we exactly wanted to hear, but it's understandable.


WIP: Double Linked List Library

Fixes #36

Closed because #44 will implement a doubly linked list better.


[Task]: Change SMTP plugin Body Type form dropdown to segmented button control

Is there an existing issue for this?

[X] I have searched the existing issues

SubTasks

Instead of having a drop down to select the body type and another input for body content, use the segmented button control to select the type of body and text area for entering the content.

Originally posted by @parth-appsmith in https://github.com/appsmithorg/appsmith/issues/20787#issuecomment-1533175973

I can pick this up. Please assign !

please review https://github.com/appsmithorg/appsmith/pull/26302


Multimap seems to be converted to just regular map using just first key value pairs

I have a 5 pair multimap but when I try to pass it back from C++ to lua, it swallows the duplicate key pairs and gives me a map with just 3 values.
See https://godbolt.org/z/6zcbM5znj to try it.
#include <limits>
#include <sol/sol.hpp>
#include <iostream>
#include <vector>
#include <unordered_set>

int main()
{
    sol::state lua;
    lua.set("mmtest", sol::as_table_t<std::unordered_multimap<uint64_t, uint64_t>>(std::unordered_multimap<uint64_t, uint64_t>{{1,10}, {1,11}, {2,20}, {3,30}, {3,31} } ));

    sol::table result = lua.script("return mmtest ");
    sol::object first_key = result.get<sol::object>(1);
    if (first_key.is<sol::table>()) {
         std::cout <<  "I am a table\n";
    }
    sol::type what_am_i = first_key.get_type();
    std::cout << type_name(lua, what_am_i) << "\n";

     std::cout << result.get<uint64_t>(1) << "\n";
     std::cout << result.get<uint64_t>(2) << "\n";
     std::cout << result.get<uint64_t>(3) << "\n";
     std::cout << result.size() << "\n";
}

Program output is:
number
10
20
30
3

I was expecting the values of a multimap to be a table or vector

This is probably because we recognize this is some kind of map, but don't acknowledge things that overwrite previous inserts. (Tables in Lua get built up by just inserting one value after the next.) I'll need to add a new-ish category of detection for multimap types, then perform the insertions....

One problem we're going to have here is how we make a multimap in Lua, and what the API for the table looks like. The conversion between and map and a multimap is going to be pretty brutal, and the performance metrics will drop heavily if we do something like e.g. make every pushed value a table even if there's only 1 value to that key. We might have to have a mix of single values and table values, but this will definitely complicate people's usage of the API.


added leetcode First_Unique_Character_in_a_String

Please add comments in your solution explaining the logic used.
Refer this

comments explaining the solution added


implement transitionMount prop

This MR Delays rendering inner children if transitionMount is false or the container sizes have yet to be calculated
I'm not sure if this is the best way to achieve this, but it worked for my use case

Sorry for taking so long, github didn't notifiy me at all 😤
Do we want to wait how https://github.com/drcmda/mauerwerk/issues/3 turns out before making a release?


Fix storage pool description visibility in modal

NOTE: the reported issue was reproducible on an older version of Chrome (v118) in 2.5K resolution (2560x1440).
On supported Chrome versions the issue is not reproducible.
This cleanup also fixes it for a lower resolution (800x1280: Nexus 10 / Kindle Fire HDX).
Fixes: https://issues.redhat.com/browse/DFBUGS-6
Before:

After:

/approve
/lgtm


"How to contribute" site is broken

Describe the bug
A clear and concise description of what the bug is. site is broken with "page not found"
To Reproduce
Steps to reproduce the behavior:

Go to 'wiki.near.org/contribute/'
Click on 'how-to-contribute' at this link 'https://wiki.near.org/contribute/how-to-contribute'
3.. See error " page not found.

Expected behavior
Should route to the correct page that explains contribution guidelines/details on contributing to near codebase
Screenshots

Desktop (please complete the following information):

OS: [e.g. MacOS]

Additional context
None

this issue is now solved by the documentation team and the page is merged/migrated to https://wiki.near.org/development/how-to-contribute


xSPUsageApplication + Proxy

Ran into an issue where when deploying a SharePoint farm using DSC, the Search Service Application components weren't starting; the infamous "unable to retrieve topology component health states" notification.  Upon research, it was determined to be because the Usage Application Proxy was not started.
When reviewing the xSPUsageApplication module, I noticed it was missing two lines where the Usage Application Proxy is provisioned:
$UP = Get-SPServiceApplicationProxy | where {$_.TypeName -like "Usage*"}
$UP.Provision()
Can we get this added to the xSPUsageApplication module?

Hey @brussell41 - thanks for reporting. We had this reported in #241 and the fix is in the dev branch to be included in our next release!

That's great. Thank you for your response!
Keep up the great work!
Get Outlook for iOS
On Tue, May 10, 2016 at 8:43 PM -0700, "Brian Farnhill"<EMAIL_ADDRESS>wrote:
Closed #294.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub


Update wiki command to use embeds

embed title should be the wiki title

and if there is a main image, make that the embed thumbnail


⚠ Bofrost.be has degraded performance

In 359a88b, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 960 ms

Resolved: Bofrost.be performance has improved in 2b182b8.


Update ecosystem.json

Changes to Zora. Change from NFT to Social and add new description.
What changed? Why?
Notes to reviewers
How has it been tested?

@lucacurranCB Thanks a bunch! Closing this since we already updated in #533 .


Refused to get unsafe header "djdt-store-id"

We're getting instances of this error in the javascript console while using the toolbar in local development.
This stems from a CORS issue where only certain headers are only allowed to be accessed unless whitelisted.  In 997387228ecb4e0787568047237ca0455dfa9ec6 this code was added:
    update_on_ajax() {
        const sidebar_url =
            document.getElementById("djDebug").dataset.sidebarUrl;
        const slowjax = debounce(ajax, 200);

        const origOpen = XMLHttpRequest.prototype.open;
        XMLHttpRequest.prototype.open = function () {
            this.addEventListener("load", function () {
                let store_id = this.getResponseHeader("djdt-store-id");
                if (store_id !== null) {
                    store_id = encodeURIComponent(store_id);
                    const dest = `${sidebar_url}?store_id=${store_id}`;
                    slowjax(dest).then(function (data) {
                        replaceToolbarState(store_id, data);
                    });
                }
            });
            origOpen.apply(this, arguments);
        };
    },

Since it's patching XMLHttpRequest.open to attempt to examine all ajax requests, this gets triggered when making requests to things that don't allow djdt-store-id access (and shouldn't, because they're owned by third parties and don't know anything about this tool).  This doesn't appear to functionally break anything, but it adds confusing error messages.
I think the answer is to squash the error in this line: let store_id = this.getResponseHeader("djdt-store-id");.  It's not clear to me how to do this, though, since the docs don't mention any possibility of this function doing anything other than returning a result or returning null, and my searching only finds discussions of how to fix the problem when you own the other side of the requests or generally actually need to access this header.
(Also kinda sorta related to #1399, which is about documentation of CORS issues.)

First, is this just logged as an error or does it actually break anything? If it's the former we could add a banner (using console.log or something) on startup which tells people that this may happen and that people can just ignore it. If it breaks anything else it should be fixed. I assume that we do not get an exception or something there which we could catch and ignore though, so a solution may be a bit involved. Since all panels return JSON these days (not HTML) it should be relatively straightforward to insert the store ID as a field instead of sending it along as a header.
Or maybe we should just tell people how to configure their CORS headers so that this doesn't happen.

It's just a logged error; as far as I can tell it doesn't break anything, just is confusing for developers and masks real errors.
It's not something that can be fixed by configuring CORS headers, unless you convince the entire internet to add djdt-store-id as a whitelisted header just in case someone happens to be using their site in a piece of software that's also using django-debug-toolbar.  These are third-party requests that shouldn't be having any non-standard headers accessed, by design; the only reason this is happening is because the toolbar is (as befits a debug tool) aggressive about trying to inspect everything, even things that normally wouldn't be in the app's direct visibility.

This appears to be an issue with Chromium. It's not an error, but an uncatchable warning. See this blog post for more info.
The solution is:
  if (xhr.getAllResponseHeaders().indexOf("djdt-store-id) >= 0) {
    store_id = xhr.getResponseHeader("djdt-store-id");
  }

I'll write up a PR


How can I provide the collection to the file under test.

I used this repo to successfully setup mongodb in my test environment. It works great when I create and populate a collection within the test file, but when I import a method from another file that uses a collection it doesn't recognize it. Which isn't surprising.
Is there an example of how to set up a test mongodb with collections that are available to files that import them?

@Lyonsclay check my project https://github.com/RodolfoSilva/graphql-typescript-server-boilerplate I'm using the solution proposed by @vladgolubev


Animating curve of Taper Deformer

Is this possible?

Animation curves aren't exposed to the animator, so no. What are you trying to do?

I would like to taper deform a mesh over time. Would there be another way of implementing this?

We'll as long as you are ok with using a linear curve , you can just make the animation curve a straight line at the height of one and animate the "top" and "bottom" floats.

Apologies, but I am not sure what you mean by this. This is something that would be done outside of the animator?

If you are ok with not using the curve to perform the taper, you can just use the "top" and "bottom" parameters which are animateable but can't do anything other than a linear taper.
Having a curve like this:

Is the same as setting top and bottom to this:

If you don't see the top and bottom parameters in the inspector, make sure you have the newest version of deform (although be careful updating, this system is still in early development so big sweeping changes aren't uncommon)


Typescript

Gave you access to the repository containing the current Typescript work, if you want to take a look.
Started from the main OneForm component and trying to get everything to have types from there, typing error by typing error.
If you look over it and have any questions / want to discuss things, ask away. 😄
As for your questions in the other issue:
Generics
In typed languages, you sometimes (often actually) want to indicate that there is an entire family of functions with the same name, but different parameter types. useState and useRef are good examples. In TS they're actually generic functions that depend on the type of the data you pass into them. So for example ref.current will be the same type as the initial data you pass in to useRef. Generally TS figures that out itself when you give useRef a starting data point, but you might want to clarify at times or when you don't give it a starting value, so you'll call it as useRef<DataType>(initial). (useRef is actually a special case as it's overloaded to provide a version for when you don't give it an initial value, but in that case it assumes that ref.current is DataType | undefined). It's pretty well explained on the TS docs site here
Record
It's pretty much just a short-hand way to say that it's an object dictionary. It has two generic arguments, key type and value type, where key type is a combination of string, number, and symbol (as those are the only key types an object takes in JS). You can also write it long-form as Record<string, string> = { [key: string]: string }, but Record is usually more readable. (The long form is definitely useful for more specific cases, like defining extra specific keys, or using template string types for the key, like: { [key: `data-${string}`]: string } being a good type for the HTML data-* elements.
Pick
Typescript has some utility types that ( docs here ) that help with defining things based on existing types. Pick does just as its name suggests and creates a sub-type from a given type that only contains some of its keys. So given an interface Foo { a: number, b: string, c: any }, Pick<Foo, 'a'> will create a type for {a: number} and Pick<Foo, 'a' | 'c'> will create a type for { a: number, c: any }. This is very useful when you have certain connected types. In the example I gave ( ({ groupValidation, identifierGroup }: Pick<IdentifierGroup, 'groupValidation' | 'identifierGroup'>) ), I could have written down the actual type of { groupValidation, identifierGroup }, but given that they'll always be a subset of an IdentifierGroup, if I feel the need to change what their types are in IdentifierGroup later (and as my understanding of the actual code grows, it's likely to happen), using Pick will actually update them here too and I can see if the new type works out with the existing code. While I could easily have typed them as IdentifierGroup directly, that type has extra required properties that you don't always pass around in your code.
Related utility types to Pick are Omit, Exclude, and Extract. You can think of Pick as an allow-list for keys, Extract as an allow-list for types that match, Omit as a block-list for keys, and Exclude as a block-list for types that match.

It does take a bit to really understand and be comfortable with generics. But a lot of the types that are even slightly complex use them, so you'll get a lot of practice 😁
The const/let thing is actually to prevent another use-case (I even have a TODO comment there to let you know 😋)
			// TODO: PR check subsequentValues for non-object stuff
			let subsequentValues = onChange({
				fieldName: identifier,
				value,
				values,
			});
			if (typeof subsequentValues !== 'object') subsequentValues = {};

The problem is that if the onChange handler somehow doesn't return an object or undefined the code would break. So that's to fix that.

As for the effort, it took a couple of days up to now, and I should finish today or tomorrow, I think. Using my current typings as a base though, you should be able to convert the main project pretty fast, it would just be a bit tedious. 😄

Which libraries and configurations should I add to get TypeScript working? I can look it up, but feel free to add a PR. We're only working with Jest, Storybook, Rollup, and React, so I don't think it'll be too crazy.

Shouldn't be too crazy, but I haven't yet tried rollup with my projects tbh. I just made a basic CRA project and started in there, my goal was just to generate the definitions file, and didn't care about actually having all the extras :)
A quick look though shows that it should be super easy. Your config isn't too crazy at all, so it should be simple to make work.

I have checks in there for undefined. { ...undefined } works fine whereas [ ...undefined ] does not. In this example, it should be doing a .concat, but I'm thinking I have a .filter(Boolean) in there.
Or do you mean the type system doesn't like it?

I meant if the code returns something that is not object/undefined. Like, let's say it returns a number or a string. It would try to spread it and break instead of ignoring it.

Ah, that fine then. If we try-catch around where it fails, we can throw a suitable error message.
The API expects either void or an object of changed values.

The fact that Typescript would complain doesn't mean the edge cases can't be accessed. Sometimes you pass data that you don't strictly type or you get annoyed and force TS to shut up (it's quite tempting at times to just go as any) or you get some data from the server (TS is compile-time only, the type info is lost after that), or you use JS.
TBH, I don't think it's an important enough error to not just ignore the result of the function if it's not an object. I usually go for the least amount of strictness I can get away with :)


Add Cpp Podcast

Hacktoberfest notes:

due to volume of submissions, we may not be able to review PRs that do not pass tests and do not have informative titles.
please read our contributing guidelines
be sure to check the output of Travis-CI for linter errors
if this is your first open source contribution, make sure it's not your last!

What does this PR do?
Add Resource(s) | Remove Resource(s) | Add info | Improve Repo
For resources
Description
Why is this valuable (or not)?
How do we know it's really free?
For book lists, is it a book? For course lists, is it a course? etc.
Checklist:

[x] Not a duplicate
[x] Included author(s) if appropriate
[x] Lists are in alphabetical order
[x] Needed indications added (PDF, access notes, under construction)

it's a screencast
the original source is here https://www.screencast.com/users/Dr.Mutawa/folders/Cpp


I'd like to upload my Multiplex portfolio

I'd like to add my portfolio. simple and can fit 1 HTML file.

Ok

pr #45 merged


create and commit "artifacts/vars-build" instead of dynamically creating/deleting during TestPromoteArtifacts

Is your feature request related to a problem? Please describe
This is motivated by @dblock 's PR comment on https://github.com/opensearch-project/opensearch-build/pull/1490#discussion_r786190883
Describe the solution you'd like
The test files below shall be checked in instead of being dynamically setup.
https://github.com/opensearch-project/opensearch-build/blob/main/tests/jenkins/TestPromoteArtifacts.groovy#L76-L84
Describe alternatives you've considered
No response
Additional context
No response
Acceptance Criteria:
The test files under artifacts/vars-build are committed as part of the code instead of being copied in setUp function and then deleted in after function.
https://github.com/opensearch-project/opensearch-build/blob/main/tests/jenkins/TestPromoteArtifacts.groovy#L76-L84

[Triage] Hi @tianleh, can you add the acceptance criteria and update the issue?
Thanks!

[Triage] Hi @tianleh, can you add the acceptance criteria and update the issue?
Thanks!

@gaiksaya Thanks for the info! I just added Acceptance Criteria part. Let me know if it is easier to understand now.

@tianleh Any update on the current status?

We have separated out the build-libraries into its own repository https://github.com/opensearch-project/opensearch-build-libraries. The tests now use its own version and grabs the right version tag of build-libraries for testing.
Closing this issue!
Thanks!


Add functionality to read MAC address from Micron and Winbond flash f…

…or Z1
* Add properties for flash0 node in device-tree
* Automatically select the OTP read command and MAC offset depending on the flash type
* Change the configurations:
	- if MAC address is stored in flash memory array:
		CONFIG_ZYNQ_GEM=y
		CONFIG_ZYNQ_GEM_SPI_MAC_OFFSET=0x????
	- if MAC address is stored in flash OTP area:
		CONFIG_ZYNQ_GEM=y
		CONFIG_ZYNQ_GEM_SPI_MAC_OTP=y

Signed-off-by: Ana-Maria-Eliza Balas<EMAIL_ADDRESS>

Codecov Report

Merging #1364 (de76bd7) into master (59515a9) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #1364   +/-   ##
=======================================
  Coverage   46.47%   46.47%
=======================================
  Files          28       28
  Lines        4953     4953
  Branches      971      971
=======================================
  Hits         2302     2302
  Misses       2594     2594
  Partials       57       57

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 59515a9...de76bd7. Read the comment docs.


feat(Admin): Allow changing languages

Task
Adds buttons to change the language of the back office

Pull request checklist
Please check if your PR fulfills the following requirements:

[x] Make sure you are requesting to pull a topic/feature/bugfix branch (right side). Don't request your master!
[x] Make sure you are making a pull request against the develop branch (left side). Also you should start your branch off our develop.
[x] Check the commit's or even all commits' message styles matches our requested structure.
[x] Check your code additions will fail neither code linting checks nor unit test.

Pull request type

Please check the type of change your PR introduces:

[ ] Bugfix
[X] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] Documentation content changes
[ ] Other (please describe):

What is the current behavior?

Issue Number: 181286881
What is the new behavior?

Allows users to change the language of the Backoffice

Does this introduce a breaking change?

[ ] Yes
[x] No

Other information

@tsubik the main feature is done. I'll just add change all the strings in the BO to use I18n later (after I'm done with the other tasks)


Edit podspec swift_version from 4.2 to 5.0

SideMenu.podspec also needs an update from 4.2 to 5.0!

@stelabouras Not much of a change, but I believe this is also required for Xcode to properly recognize this as a Swift 5.0 project!

Ah, good catch, thanks!


Filter recommendation may be incompatible with URI Template spec

It looks as if using filter[name]=value directly is incompatible with the URI Template specification documented in RFC6570, but filter%5Bname%5D=value works. Unsure if that’s expected or not.
The practical consequences of this are as follows:

URI templates cannot be used to specify precise filter patterns in URLs that follow the JSON API recommendation. eg: expand("{?filter[name]}", name="val") will not expand to the expected string "?filter[name]=val" using popular URI template libraries.
URI templates like {?filter*} can be expanded to valid URLs with the %5B-%5D encoding (see example here), but this means that the template cannot specify an expansion of exact parameter names, nor can it expand to a non-urlencoded key names with the [] characters appearing.
For newcomers to JSON API who want to leverage existing libraries for URI generation, there’s additional overhead in having to look up RFC documents and interpret the ambiguity of whether [] and %5B%5D mean the same thing or not. These generated URLs are less readable and don’t follow the examples on the JSON API website.

It would be good to confirm whether or not an incompatibility exists, and document this somewhere/somehow to clarify what the expectations are. URI Templates are a powerful and standardised way of generating URLs and seem like a good complement to JSON API itself.

@maetl Sorry for the terribly delayed reply. I just tested this on express (node) and rack (ruby). Both treat percent encoded and literal values the same. I'm not sure what server you're using, but I suspect you'll see similar behavior anywhere else. I'll update the specification to include a note about this. PR incoming!

Resolved in #756


MySQL UNION

Consider following question on StackOverflow: http://stackoverflow.com/questions/4230780/mysql-query-with-multiple-limits
I have similar task, but I can't find union function in Esqueleto. Can I introduce similar single query using Esqueleto or should I make several queries?
Thank you.

I am also surprised at the lack of UNION - any idea roughly how hard this would be?

I don't foresee anyproblems, @ocharles, it shouldn't be too hard.  Most work is probably going to be on the test suite :).

I took a stab at this issue and it's actually a lot more complicated than I anticipated :).  I've tried adding:
union :: [query a] -> query a -- resp. unionAll

My first approach was morphing SideData into a monster GADT that basically amounted to:
    RealSideData {...as beore...}
  | UnionSideData [(a, RealSideData)]

This approach failed because of the SqlSelect typeclass.  The one available at toRawSql can't be used because it's not available when UnionSideData is created.  And we don't have a SqlSelect constraint on union.
I was planning on adding an an associated type family to the Esqueleto type class in order to change the type of union to UnionConstraint a => [query a] -> query a, which I think would solve the issue.
Then I realize that the whole SideData contraption could be removed in favor of adding a new constructor to SqlExpr and calling toRawSql directly on union's implementation.  At this point I've put this endeavor to a pause.


Remove reference to SQL server

I did not simply replace SQL server with Cassandra DB because the architecture diagram seems to suggest that a load balancer is not needed between the business tier and the data tier

@leslie-smpx : Thanks for your contribution! The author(s) have been notified to review your proposed change. @MikeWasson

I don't think I'm the right person to review this @ktoliver

@sakthi-vetrivel Sorry, I apparently was in the wrong browser window. Apologies.
@doodlemania2 Could you review this PR? Thank you.

@doodlemania2 Is it accurate to assign PRs to you where @MikeWasson appears in the article metadata?

@ktoliver - yes, I can be your reviewer!


Website down

The Website seems to be unavailable.

Hey! Yes, thank you, we are migrating to a new DNS, that's why there are some temporate problems

working now


Jaskirat singh branch - Improve Error Handling in index.js

Proposed Changes
File Existence Check:
Add a check to ensure the specified configuration file exists before attempting to read it.
Detailed Error Reporting:
Differentiate between network errors, file not found errors, permission errors, and other unexpected errors.
Graceful Error Handling:
Add pre-checks to validate input and configuration before making network requests or file operations.
Enhanced Error Messages:
Update error messages to be more descriptive and helpful.
try {
// Code that might throw errors
} catch (error) {
if (error.response) { // Axios or network-related errors
console.error(Network error: ${error.response.status} - ${error.response.statusText}.red);
} else if (error.code === 'ENOENT') { // File not found
console.error(File not found: ${error.path}.red);
} else if (error.code === 'EACCES') { // Permission error
console.error(Permission denied: ${error.path}.red);
} else {
console.error(Unexpected error: ${error.message}.red);
}
process.exit(1); // Exit with error code
}

These catch blocks you added can never occur. We have try catch blocks in the functions which are doing the network calls / filesystem access and are then throwing a helpful error message telling what exectly went wrong. I'd say this is better than this here as this file shouldn't aware of the underlying technical details of the functions they are calling.
The error that are thrown by the functions also doesn't have code / response attributes or anything on them so these if statements will never be triggered.
Also we are not using axios so the comments in the code are also confusing. And this is also chaning the behaviour of this cli by exiting with a error code of 1 here, which would be a breaking change and not a bugfix.
If you are looking to do some some smaller improvments, I'd recommend to either:

Try to replace the request / request-promise lib with the now build in fetch method in node, so that we can drop this dependency
Investigate why the tool is printing warning when run with node 22 and how we can get rid of the warnings.

Also please have a look at the contibuting guide: https://pwning.owasp-juice.shop/companion-guide/latest/part3/contribution.html for code style guidelines, the code here isn't passing the linter.


Adding a persona

Inspired by @gedankenstuecke. What do you think?

Looks good. Only change I would make is to the style: change "self taught" to "self-taught".


The length field in yii\db\SchemaBuilderTrait::binary() is being ignored for mysql.

What steps will reproduce the problem?
Trying to create a LONGBLOB field via
$this->db->createCommand()->createTable("test_blob", [
    "id" 	=> $this->integer(),
    "datum" => $this->binary(4294967295), // LONGBLOB
    "txt" 	=> $this->string()
])->getSql();

What is the expected result?
CREATE TABLE `test_blob` (
	`id` int(11),
	`datum` blob(4294967295),
	`txt` varchar(255)
);

What do you get instead?
CREATE TABLE `test_blob` (
	`id` int(11),
	`datum` blob,
	`txt` varchar(255)
);

Additional info

Q
A

Yii version
2.0.9

PHP version
7.0.9

Operating system
Ubuntu 16.04

Source
http://stackoverflow.com/questions/39721423/yii2-create-migration-with-longblob-field

you are using the DB independent syntax, which is limited like this. If you want to create a MySQL specific column, you can use MySQL specific syntax:
    "datum" =>'LONGBLOB',

Shouldn't the binary function not take in a length then?

MySQL BLOB does not take a length so we can not translate the specification of a length to mysql syntax.


Provide scrape-able metrics for prometheus

I'd like to know that prometheus-adapter is functioning as expected, currently there's no visibility into how many metrics it's pulling, or how long it's taking to pull those metrics, or failures pulling metrics.
Ideally prometheus-adapter would provide a prometheus scrapeable /metrics endpoint with some indication of how many custom metrics it's providing, if it's had errors etc.

These are actually already provided, oops!


Accept multiple files in command line

Hope this is the right place to ask. Can it do this? For example, start Meld with meld file1 file2.

No not at the moment. Could add it as a new method, currently we have

normal
drag & drop
filelist

so the :new: one could be

cmdline (file1 file2 file3 etc)

I actually can think of a use for this myself already so I will look into it.
At the moment for file comparison: it can be done using WinMerge as that supports Drag & Drop - see Wiki - or you can do it in Total Commander - see here for three solutions http://superuser.com/questions/238039/can-i-use-an-replace-internal-diff-in-total-commander-with-an-external-diff-prog
If you really want to use F4MM you could do it with a little AutoHotkey helper script. Save this as meld.ahk and use that script as Editor and choose the Filelist option. That way the selected files will be put on the command line after running meld.exe (you may have to adjust the path to your meld.exe) - it will lack the icon in the popup menu of course.
FileRead, in, %1%
Loop, parse, in, `n, `r
    files .= """" A_LoopField """" A_Space
Run, c:\Program Files (x86)\Meld\Meld.exe %files%

Thanks for a detailed answer. I'll check the workarounds that let me use Meld, it's my tool of choice. "cmdline" totally makes sense, thanks for working on it. 👍

Nice project for the holidays ☃

This has been added, you can try it here https://github.com/hi5/F4MiniMenu/tree/dev-method4cmdline
When setting up an editor choose "4 - cmdline" - see also the changelog in the readme for more updates


Proposal: Feature dependsOn options customization

As for now, you can define that a feature dependsOn another feature but you are "forced" to specify all options that should be used in the "parent" feature.
On the other hand, you can specify that the new feature should be installed after other feature, by specifying installsAfter but  the other feature is not installed if the user does not specify it in devcontainer.json.
The problem is that you can't allow the user to specify the options for the "parent" feature and, at the same time, "force" that feature to be installed before the dependent feature (with the user specified configuration, if he specified it).
For example:

I can have a nvm feature that installs Node Version Manager.  This feature might have the version option where the user can specify the version of nvm to install.

{
  "id": "nvm",
  "version": "0.0.1",
  "name": "nvm",
  "description": "Installs nvm (Node Version Manager).",
  "options": {
    "version": {
      "type": "string",
      "proposals": [
        "latest",
        "0.39"
      ],
      "default": "latest",
      "description": "Version of NVM to install."
    }
  }
}

Then, you might have a node-nvm feature that install Node.js using nvm.  This feature also has a version option where the user can specify the version of Node.js to install.

{
  "id": "node-nvm",
  "version": "0.0.1",
  "name": "Node.js (via nvm)",
  "description": "Installs Node.js using nvm (Node Version Manager).",
  "options": {
    "version": {
      "type": "string",
      "proposals": [
        "node",
        "18",
        "16",
        "14"
      ],
      "default": "node",
      "description": "Select or enter a Node.js version to install"
    }
  }
}

The problem here is that, if node-nvm dependsOn nvm, the developer is "forced" to specify the nvm version that should be installed -if not specified, the default one is used- (and the user is not allowed to change it).
{
  "id": "node-nvm",
  "version": "0.0.1",
  "name": "Node.js (via nvm)",
  "description": "Installs Node.js using nvm (Node Version Manager).",
  "options": {
    "version": {
      "type": "string",
      "proposals": [
        "node",
        "18",
        "16",
        "14"
      ],
      "default": "node",
      "description": "Select or enter a Node.js version to install"
    }
  },
  "dependsOn": {
    "./local-features/nvm": {}
  }
}

If the user also specifies a nvm feature in devcontainer.json, two versions are installed (or probably only the first one installed, if the feature checks if the command is installed before trying to install it again, but the user can't be sure if the version installed is the one specified by him or the one "hard-coded" in the node-nvm's devcontainer-feature.json).
You could also use installAfter so the user can configure nvm to specify the version he wants to install, but the problem here is that, if the user do not specify the nvm feature, it is not "automatically" installed.
{
  "id": "node-nvm",
  "version": "0.0.1",
  "name": "Node.js (via nvm)",
  "description": "Installs Node.js using nvm (Node Version Manager).",
  "options": {
    "version": {
      "type": "string",
      "proposals": [
        "node",
        "18",
        "16",
        "14"
      ],
      "default": "node",
      "description": "Select or enter a Node.js version to install"
    }
  },
  "installsAfter": [
    "./local-features/nvm"
  ]
}

There might be two approaches here to solve the problem:

Allow a pass-throw of options, so the node-nvm extension could have options to configure the "underlying" nvm extension and pass them on.  Something like:

{
  "id": "node-nvm",
  "version": "0.0.1",
  "name": "Node.js (via nvm)",
  "description": "Installs Node.js using nvm (Node Version Manager).",
  "options": {
    "version": {
      "type": "string",
      "proposals": [
        "node",
        "18",
        "16",
        "14"
      ],
      "default": "node",
      "description": "Select or enter a Node.js version to install"
    },
    "nvmVersion": {
      "type": "string",
      "proposals": [
        "latest",
        "0.39"
      ],
      "default": "latest",
      "description": "Version of NVM to install."
    }
  },
  "dependsOn": {
    "./local-features/nvm": {
    	"version": "${options.nvmVersion}"
    }
  }
}

In dependsOn, allow to specify that a feature depends on other feature but, if the user already defines the feature, use the user defined feature options instead of the ones (or default ones) defined in the dependsOn.

To me, the second one allows for more flexibility.  The user is allowed to specify how to install nvm so the node-nvm uses that config but, if the user does not explicitly specify a nvm configuration the one specified in node-nvm dependsOn configuration should be used.
A third approach might be the combination of both.  Allow the options "pass-throw" but only apply that config if the user did not already configured the "parent" feature.

Thank you for the detailed outline of your thoughts!  I totally agree that there's room for improvement here.
Approach (1) seems to be a really good solution/compromise here, as it unblocks "passing down" options to dependencies while still tightly coupling the child Feature to its parent.  Users are able to choose if a child's option(s) are customizable OR if they should be "frozen" with this given Feature release.  Of course, with each Feature release that dependency's options could be updated.
My fear with approach (2) is that it could make it easier for a user to accidentally select incompatible child/parent Features without realizing the implication (ie: A user may not realize that a dependency exists and overrides it)

Yes, the only thing here is that, in case of (1), to give flexibility, the amount of options to be redefined (to be passed -throw) might be huge (depending on the combination of both extension options).


how to directly autocompletion when I typed

How to directly autocompletion when I typed <cr>? when i typed <cr> ,the annoying messages below just showed.I can't get the expand expression until i typed 1. I don't konw if it could be fix by plugin ultisnips or nvim-completion-manager.

here is my nvim configure
" fzf.vim and ultisnips-------------------------------------------------------------------{{{

  set rtp+=/usr/local/opt/fzf

  " ultisnips
    let g:UltiSnipsSnippetDirectories = ['/Users/qj/.config/nvim/UltiSnips']
  " set rtp+=/Users/qj/.config/nvim/ultisnips
  " Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe.
	let g:UltiSnipsExpandTrigger = '<C-j>'
	let g:UltiSnipsJumpForwardTrigger = '<C-f>'
	let g:UltiSnipsJumpBackwardTrigger = '<C-b>'
	" let g:UltiSnipsListSnippets="<c-s-j>"
	" If you want :UltiSnipsEdit to split your window.
	let g:UltiSnipsEditSplit="vertical"
"}}}

" nvim-completion-manager------------------------------------------------------------------{{{

  imap <expr> <CR>  (pumvisible() ?  "\<c-y>\<Plug>(expand_or_nl)" : "<Plug>delimitMateCR")
	imap <expr> <Plug>(expand_or_nl) (cm#completed_is_snippet() ? "\<C-j>":"\<CR>")
	inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
	inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"

"}}}

It is UltiSnips feature.
Not nvim-completion-manager issue.


Add support for zaplib.callRustInSameThreadSync in JS main thread

See individual commits!

I realised that I didn't add tests yet, so will do that before merging.


fix [UnderTow does not collect data] bug

UnderTow does not collect data, befause
[com.navercorp.pinpoint.plugin.undertow.interceptor.ConnectorsExecuteRootHandlerInterceptor#handlerPredicate ] return a Predicate， but the Predicate‘s test method always return false.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.nick_zw seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Thank you for your contribution.
We will review this PR.


notify user if deploying function in different namespace

Fix: #235

Codecov Report

Merging #239 (7e46875) into main (cd4b4ab) will increase coverage by 0.11%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #239      +/-   ##
==========================================
+ Coverage   85.23%   85.34%   +0.11%
==========================================
  Files          77       77
  Lines        3115     3125      +10
  Branches      524      530       +6
==========================================
+ Hits         2655     2667      +12
+ Misses        460      458       -2

Impacted Files
Coverage Δ

src/cli/func-api.ts
50.00% <100.00%> (ø)

...ions/function-command/build-and-deploy-function.ts
89.47% <100.00%> (+1.23%)
:arrow_up:

.../functions/function-tree-view/functionsTreeItem.ts
36.36% <0.00%> (+3.63%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update cd4b4ab...7e46875. Read the comment docs.


Switch package manager to pnpm

pnpm properly handles peerDependencies, which yarn v1 does not. Proper management of peer dependencies will be critical to support usage of @glimmer/validator, which can not be duplicated at run time. A subsequent PR will bring in this peer dep as a part of a refactor of TrackedObject.

@dgeb as I overall prefer pnpm over yarn and love ergonomics it brings to monorepos, I'm curios how switching to pnpm in this repo can help solving issues with peer deps for consuming apps?

I'm curios how switching to pnpm in this repo can help solving issues with peer deps for consuming apps?

@SergeAstapov Proper handling of peer deps is essential for packages such as @glimmer/validator, which can only be installed/registered once globally. In fact, there is a global check in place to specifically ensure this. This check will fail when using yarn and adding a peer dep of @glimmer/validator to the tracked-built-ins addon package. This happens because yarn incorrectly hoists this dep to the root node_modules, and it is resolved multiple times at run-time when run together with the test-app.
On the other hand, pnpm does not hoist this peer dep to the root node_modules, so it will not be resolved and registered multiple times when run together with test-app (or any other client app).

@dgeb that makes sense. so idea is to get the test setup in this addon to properly reflect the real-world consuming app use case

@dgeb you may submit https://github.com/tracked-tools/tracked-built-ins/pull/393/files#diff-4138d264b0db08dc8194a4ed0f79c64e2ad0c62e0787d0b1e7fd73a22a56755a in separate PR, we'll merge and voila - no approvals would be needed

@SergeAstapov Great idea, thanks! See #394

@SergeAstapov I believe this is ready when you are. Thanks in advance (and no rush)!

Thank you @dgeb! I love CI speed improvements this gives ⚡

note for myself: replace dependabot with renovate for pnpm support

next step: replace dependabot with renovate for pnpm support

@SergeAstapov In a brief look at similar pnpm-based addons that use renovate, I came across https://github.com/NullVoxPopuli/ember-popperjs/blob/main/.github/renovate.json5 from @NullVoxPopuli.
Does that look like a good starting point for this project or do you have a renovate template / settings you would prefer?

@dgeb https://github.com/NullVoxPopuli/ember-popperjs/blob/main/.github/renovate.json5 seem good, just IMO might over-complicated. I wonder if we can start with something simpler, e.g. like https://github.com/mainmatter/renovate-config/blob/main/default.json5 and adjust as we go considering how much automation we want/need here?

just another idea - maybe it worth to add renovate-config to addon blueprint when it has github as CI provider? that way, it could be iterated over by whole community to provide good overall defaults as I think majority of addons have either renovate or dependabot integrated
indeed would need an RFC for that

@SergeAstapov good call on both counts 👍
I'll prep a PR with the simpler config from mainmatter to start.

over-complicated.

there is a reason for some of that complication ;)
renovate, by default, does breaking-change merges with the dependencies.
only devDependencies of a library are safe to change willy-nilly

renovate, by default, does breaking-change merges with the dependencies.

@NullVoxPopuli ah, thanks for the heads up! Looks like the rangeStrategy option is particularly important here.
I agree with @SergeAstapov that it would be ideal if we (i.e. the ember community) should iterate on a common config to use in the addon blueprint. Let's discuss this more soon (probably in an open issue and/or on discord).


Text Color unreadable for Note Graph in Dark Mode

Please select the area your Bug applys to. (Multiple selections are Possible)

[ ] Onboard. Initial vault setup and import/export pods
[ ] Create. Note creation, lookup, snippets and templates
[x] Retrieve. Backlinks, references, graph view
[ ] Structure. Refactoring, multi-vault and schemas
[ ] Publish. Sharing your repo with the world
[ ] Misc (Choose this if your not sure)

Describe the bug
Text Color is unreadable for Note Graph V2 in Dark Mode. The text color appears to be same as background color of the graph view.
To Reproduce
Steps to reproduce the behavior:

Go to 'File' - Preferences - Color Theme - Select Dark Theme (Visual Studio Dark or anyother)
Perform Ctrl + Shift + P - Dendron: Show Note Graph V2
The graph view appears but the text is too dark to read

Expected behavior
Graph View text color should be different than background color for it to be readable
Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information)

OS: Windows 10
Browser [e.g. chrome, safari]
Version 0.47.1

Additional context
Add any other context about the problem here.
Dendron Log file
Please attach the output of >Dev:Dendron: Open Logs here

Fresh reinstall of vscode resolved this issue


rails routing helpers not included

is there any reason rails url helpers are not included by default, or PR is welcome?

this looks to be fixed in at least 1.4.5 on

@rileytg thank you.


Uncaught TypeError: Cannot read property 'reverse' of undefined

[Enter steps to reproduce below:]

Toggled slack panel
Attempted to open a DM

NOTE OAuth was fine on set-up.
Atom Version: 1.0.0
System: Mac OS X 10.10.3
Thrown From: slack-chat package, v3.2.8
Stack Trace
Uncaught TypeError: Cannot read property 'reverse' of undefined
At /Users/Alex/.atom/packages/slack-chat/lib/views/chat-view.coffee:47

TypeError: Cannot read property 'reverse' of undefined
  at /Users/Alex/.atom/packages/slack-chat/lib/views/chat-view.coffee:47:74
  at /Users/Alex/.atom/packages/slack-chat/node_modules/sc-client/lib/app.js:147:18
  at done (/Users/Alex/.atom/packages/slack-chat/node_modules/sc-client/node_modules/needle/lib/needle.js:355:7)
  at PassThrough.<anonymous> (/Users/Alex/.atom/packages/slack-chat/node_modules/sc-client/node_modules/needle/lib/needle.js:523:9)
  at emitNone (events.js:72:20)
  at PassThrough.emit (events.js:163:7)
  at _stream_readable.js:891:16
  at process._tickCallback (node.js:357:13)

Commands
     -0:10.5.0 fuzzy-finder:toggle-file-finder (atom-text-editor.editor.is-focused)
     -0:09.1.0 editor:consolidate-selections (atom-text-editor.editor.mini.is-focused)
     -0:09.1.0 core:cancel (atom-text-editor.editor.mini.is-focused)
     -0:08.4.0 command-palette:toggle (atom-text-editor.editor.is-focused)
     -0:05.4.0 core:confirm (atom-text-editor.editor.mini.is-focused)
     -0:05.4.0 slack-chat:toggle (atom-text-editor.editor)

Config
{
  "core": {
    "excludeVcsIgnoredPaths": false,
    "projectHome": "/Users/Alex/Projects"
  },
  "slack-chat": {
    "api_key": "****",
    "api_secret": "****",
    "api_token": "****"
  }
}

Installed Packages
# User
figlet, v0.4.0
linter, v1.1.0
minimap, v4.10.1
slack-chat, v3.2.8

# Dev
No dev packages

Same error here.

In the main Slack App, use the /remind command.
When Slackbot sends you the reminder, this error will be thrown

Atom Version: 1.0.0
System: Mac OS X 10.10.3
Thrown From: slack-chat package, v3.2.8
Stack Trace
Uncaught TypeError: Cannot read property 'reverse' of undefined
At /Users/phatlipp/.atom/packages/slack-chat/lib/views/chat-view.coffee:47

TypeError: Cannot read property 'reverse' of undefined
  at /Users/phatlipp/.atom/packages/slack-chat/lib/views/chat-view.coffee:47:74
  at /Users/phatlipp/.atom/packages/slack-chat/node_modules/sc-client/lib/app.js:147:18
  at done (/Users/phatlipp/.atom/packages/slack-chat/node_modules/sc-client/node_modules/needle/lib/needle.js:355:7)
  at PassThrough.<anonymous> (/Users/phatlipp/.atom/packages/slack-chat/node_modules/sc-client/node_modules/needle/lib/needle.js:523:9)
  at emitNone (events.js:72:20)
  at PassThrough.emit (events.js:163:7)
  at _stream_readable.js:891:16
  at process._tickCallback (node.js:357:13)

Commands
     -8:13.1.0 core:confirm (atom-text-editor.editor.mini.is-focused)
     -8:12.2.0 editor:consolidate-selections (atom-text-editor.editor.mini.is-focused)
     -8:12.2.0 core:cancel (atom-text-editor.editor.mini.is-focused)
     -8:11.1.0 git-plus:menu (atom-text-editor.editor.is-focused)
     -8:10.1.0 core:move-down (atom-text-editor.editor.mini.is-focused)
     -8:09.8.0 core:confirm (atom-text-editor.editor.mini.is-focused)
 24x -7:52.2.0 core:undo (atom-text-editor.editor.is-focused)
     -7:44.7.0 core:save (atom-text-editor.editor.is-focused)
     -4:13.2.0 git-plus:menu (textarea.form-control.native-key-bindings)
     -4:12 core:confirm (atom-text-editor.editor.mini.is-focused)
     -4:10.5.0 core:move-down (atom-text-editor.editor.mini.is-focused)
     -4:10.1.0 core:confirm (atom-text-editor.editor.mini.is-focused)
     -3:55 git-plus:log (atom-text-editor.editor.is-focused)
  5x -3:03.5.0 core:backspace (atom-text-editor.editor.is-focused)
     -2:59.6.0 core:save (atom-text-editor.editor.is-focused.autocomplete-active)
     -2:29.5.0 core:select-all (textarea.form-control.native-key-bindings)

Config
{
  "core": {
    "excludeVcsIgnoredPaths": false,
    "themes": [
      "seti-ui",
      "one-dark-syntax"
    ],
    "disabledPackages": [
      "atom-typescript",
      "language-jade"
    ]
  },
  "slack-chat": {
    "api_secret": "[REDACTED]",
    "api_key": "[REDACTED]",
    "api_token": "[REDACTED]"
  }
}

Installed Packages
# User
.bin, vundefined
angularjs, v0.3.0
atom-beautify, v0.28.7
atom-pair, v1.1.6
color-picker, v2.0.7
docblockr, v0.7.2
git-plus, v5.2.2
linter, v1.1.0
merge-conflicts, v1.3.2
minimap, v4.10.1
remote-atom, v1.2.6
seti-ui, v0.7.1
slack-chat, v3.2.8

# Dev
No dev packages

Made a quick fix to solve the error that occurs when trying to get the history
I made the @type to 'im' if false(not set)
Chat-view.coffee, row 22-33

  initialize: (@stateController, @chat) ->
    @width(400)
    @type = 'im'
    @type =
      switch
        when @chat.is_channel? then 'channels'
        when @chat.is_im? then 'im'
        when @chat.is_group? then 'groups'
    if !@type
      @type = 'im'
    @getChatLog()
    @eventHandlers()

Still getting the error:
Atom Version: 1.0.2
System: Mac OS X 10.10.4
Thrown From: slack-chat package, v3.2.8
Stack Trace
Uncaught TypeError: Cannot read property 'reverse' of undefined
At /Users/Alex/.atom/packages/slack-chat/lib/views/chat-view.coffee:47

TypeError: Cannot read property 'reverse' of undefined
  at /Users/Alex/.atom/packages/slack-chat/lib/views/chat-view.coffee:47:74
  at /Users/Alex/.atom/packages/slack-chat/node_modules/sc-client/lib/app.js:147:18
  at done (/Users/Alex/.atom/packages/slack-chat/node_modules/sc-client/node_modules/needle/lib/needle.js:355:7)
  at PassThrough.<anonymous> (/Users/Alex/.atom/packages/slack-chat/node_modules/sc-client/node_modules/needle/lib/needle.js:523:9)
  at emitNone (events.js:72:20)
  at PassThrough.emit (events.js:163:7)
  at _stream_readable.js:891:16
  at process._tickCallback (node.js:357:13)

Commands
     -0:33.5.0 settings-view:open (atom-text-editor.editor.is-focused)
     -0:13 fuzzy-finder:toggle-file-finder (atom-text-editor.editor.is-focused)
     -0:11.9.0 core:backspace (atom-text-editor.editor.mini.is-focused)
     -0:11.7.0 editor:consolidate-selections (atom-text-editor.editor.mini.is-focused)
     -0:11.7.0 core:cancel (atom-text-editor.editor.mini.is-focused)
     -0:10.3.0 command-palette:toggle (atom-text-editor.editor.is-focused)
     -0:07.2.0 core:confirm (atom-text-editor.editor.mini.is-focused)
     -0:07.2.0 slack-chat:toggle (atom-text-editor.editor)
     -0:06.1.0 linter:set-bubble-transparent (atom-text-editor.editor.is-focused)

Config
{
  "core": {
    "excludeVcsIgnoredPaths": false,
    "projectHome": "/Users/Alex/Projects",
    "destroyEmptyPanes": false,
    "disabledPackages": [
      "linter-javac"
    ]
  },
  "slack-chat": {
    "api_key": "*******************",
    "api_secret": "**************************",
    "api_token": "***********************"
  }
}

Installed Packages
# User
figlet, v0.4.0
language-docker, v1.1.3
linter, v1.2.3
minimap, v4.11.2
slack-chat, v3.2.8

# Dev
No dev packages

same error here

Also getting the same error even with the edit

Same error here

Same error :(

Same error here

same here

I am experiencing this error as well.

Here too.


Windows Update requiring .NET Framework 3.5 broken

Describe the bug
Update fails due to error code 0x800f081f. This seems to be tied with .NET 3.5 and below. When trying to turn feature on you get a Group Policy error.
To Reproduce
Steps to reproduce the behavior:

Go to Windows Update
Click on 2024-01 Cumulative Update for Windows 11 Version 23H2 for x64-based Systems (KB5034123)
See update failure
Try to solve error by enabling .NET Framework 3.5
See error saying Group Policy prevents this from happening

Expected behavior
Having the option to temporarily re-enable .NET Framework 3.5
Screenshots

Desktop (please complete the following information):

OS: Windows 11 Build 22631.2428
Version 22631.2428

Additional context

Thanks @olsonperrensen for the great issue submission!
It doesn't surprise us that something would eventually break from this. Microsoft/Windows doesn't even implement support for the hardening best practices correctly in most of their applications.
Our best suggestion for you in the mean time, is to revert to a restore point or snapshot, or reinstall windows.
Prior to running this script again, please remove or rename the files in the files folder to prevent some of the more game breaking bugs. You'll see that we've already done that in our other repos that take advantage of this script.


[Request] Search endpoint field & Subscription menu position

Search endpoint field
I think this is not urgently needed but I just wanna request endpoint search using text field.
I may search it using ctrl + f to find an endpoint but I don't like to use it, cause it's not as simple as it should be.

Subscription position
It would be easier to find it, if you put subscription menu below the mutations

Keep up your great job! This library is amazing.
Thanks in advance.

I'm not sure if/when search is coming, but in v2 Subscriptions will be along with Queries and Mutations by default:
https://github.com/anvilco/spectaql/pull/573


[Azure Search] Improve field weights (including boosting tags)

Pull request: https://nuget.visualstudio.com/NuGetMicrosoft/_git/NuGetDeployment/pullrequest/1080?_a=overview
Try to improve the following queries:

aad -> microsoft.identitymodel.clients.activedirectory
excel -> EPPlus
mail -> SendGrid, Mailkit
ml.net ->Microsoft.ML
orm -> Dapper
rx -> System.Reactive
mysql -> MySqlConnector
pdf -> itextsharp
postgres -> Npgsql
Material -> MahApps.Metro
wpf -> MahApps.Metro
logging -> NLog, log4net, serilog

Modifying the tag field's weight had a stronger effect than expected: results seemed better generally, but this wasn't a clear win. Adding a field weight of 2 resulted in the following for the target queries:
"aad" - microsoft.identitymodel.clients.activedirectory went up from 2nd to 1sxt
"excel" - EPPlus went up from 8th to 5th
"mail" - Sendgrid went up from 7th to 4th
"ml.net" -> Microsoft.ML went to the 4th result
"orm" -> Dapper went from 4th to 1st
"mysql" -> MysqlConnector went from 11th to 8th

Tag field weight
Offline Score

0 (Control)
0.82024

Final scoring profile:

Exact id weight: 4.75
Tokenized id weight: 3
Tags weight: 4
Downloads score boost: 16,500

Search Scorer output:
Curated Search Queries
======================
Control:   0.823311284680628
Treatment: 0.852353941306183

Biggest Winners (20)
--------------------
websocket                     => +0.0081
Microsoft.AspNetCore.App      => +0.0029
excel                         => +0.0025
pdf                           => +0.0022
Microsoft.EntityFrameworkCore => +0.0016
aws                           => +0.0016
postgres                      => +0.0013
mysql                         => +0.0012
microsoft                     => +0.0011
XLSX                          => +0.0009
sftp                          => +0.0008
entityframework               => +0.0008
EntityFramework               => +0.0007
kafka                         => +0.0007
RDLC                          => +0.0007
System.Net.Http.Formatting    => +0.0006
identityserver                => +0.0006
email                         => +0.0006
log                           => +0.0006
commandline                   => +0.0006

Biggest Losers (20)
-------------------
Tags:"seq-app"               => -0.0018
google.apis                  => -0.0014
automapper                   => -0.0009
signalr                      => -0.0009
Microsoft.ReportViewer       => -0.0009
powershell                   => -0.0008
itext                        => -0.0008
entityframeworkcore          => -0.0007
blazor                       => -0.0006
NPOI                         => -0.0005
Microsoft.AspNet.WebPages    => -0.0004
mysql.data                   => -0.0004
barcode                      => -0.0004
AutoMapper                   => -0.0003
Tags:"html-to-image"         => -0.0003
log4net                      => -0.0003
itext7                       => -0.0003
Microsoft.Extensions.Logging => -0.0003
syncfusion.ej2.blazor        => -0.0003
FluentValidation             => -0.0003

Feedback
========
Control:   0.690217380337595
Treatment: 0.715881457788619

Biggest Winners (20)
--------------------
netcore          => +0.0163
MS, .net core    => +0.0091
aws              => +0.0030
Postgres         => +0.0030
sqlite           => +0.0030
Youtrack         => +0.0030
boletonet        => +0.0025
ORM              => +0.0025
unit test        => +0.0025
aad              => +0.0023
ef               => +0.0023
Ef               => +0.0023
mocking          => +0.0022
CacheManager     => +0.0018
entity framework => +0.0018
EntityFramework  => +0.0018
ldap             => +0.0018
logging          => +0.0018
Loggly           => +0.0018
oragon           => +0.0018

Biggest Losers (20)
-------------------
multi line        => -0.0030
mysql             => -0.0026
common mark       => -0.0023
entity            => -0.0023
Entity framework  => -0.0023
dotnetnuke        => -0.0018
FluentAssertion   => -0.0018
identity server   => -0.0018
IdentityServer    => -0.0018
itext             => -0.0018
miniprofiler.mvc  => -0.0018
my sample lib     => -0.0018
mysql data entity => -0.0018
postgresql        => -0.0018
twitch            => -0.0018
Umbraco           => -0.0018
XPlat             => -0.0018
uwp pdf           => -0.0012
microsoft         => -0.0008
Microsoft.        => -0.0008

Experimenting with multi term boost with the following configs:
Exact id weight: 4.75
Tokenized id weight: 3
Tags weight: 4
Downloads score boost: 16,500

Multi term boost
Curated Search Score
Feedback score

3
0.8524
0.7159

5
0.8524
0.7086

Releases:

Db2AzureSearch: 505646
Auxiliary2AzureSearch: 506851
Catalog2AzureSearch: 506850
Owners2AzureSearch: 506852

This will be finished by https://github.com/NuGet/Engineering/issues/2877.

Is this fixed? The link is dead

Hi, this was shipped back in December. I left a little more context on the search relevancy issue here: https://github.com/NuGet/NuGetGallery/issues/4124#issuecomment-582182709


Pairing not working

Hello, after upgrade to latest version (before this I used version 1.2), pairing stop working. I tryed iOS 12 and iOS 14 and both ended with exception:
org.bouncycastle.crypto.tls.TlsFatalAlert: bad_record_mac(20)
at io.github.hapjava.server.impl.crypto.ChachaDecoder.decodeCiphertext(ChachaDecoder.java:31) ~[hap-2.0.0-snapshot.jar:na]
at io.github.hapjava.server.impl.crypto.ChachaDecoder.decodeCiphertext(ChachaDecoder.java:41) ~[hap-2.0.0-snapshot.jar:na]
at io.github.hapjava.server.impl.pairing.FinalPairHandler.decrypt(FinalPairHandler.java:44) ~[hap-2.0.0-snapshot.jar:na]

sounds like a newer bcprov version.
have you changed anything in pom.xml? please make sure bcprov 1.51 is used

Problem solved, thank you. I use spring-cloud-openfeign and bcprov 1.64 is in its dependencies.


[iOS] Fabric: Fixes transform when there are multiple values that contain a matrix

Summary:
Fixes #47467 .
Changelog:
[IOS] [FIXED] - Fabric: Fixes transform when there are multiple values that contain a matrix
Test Plan:
Repro in Fixes #47467

Nice, it works for me.

The problem here is that Transform::FromTransformOperation is incorrect for arbitrary transforms. Can you fix that method instead?

This actually seems broken at the point of parsing: if we have multiple elements of type matrix, we just override the values: https://github.com/facebook/react-native/blob/main/packages/react-native/ReactCommon/react/renderer/components/view/conversions.h#L613-L622

@javache Hi, please help to review it again. I added a new ivar matrix for transform operation, seems it's necessary when having multiple elements of type matrix.

This significantly increase the size of the Transform struct. What's the use-case for providing multiple full transforms from JS? I'd rather enforce that if you have a transform element you can only have a single element.

I also believe that using multiple matrices is a very rare use case, but the old architecture does support it. Should I restore the parser logic for multiple matrices, which  just override the values?

No, I think that's wrong too. I think I'd rather enforce that if you use a matrix you can only have a single element? (maybe we can add this to processTransform. In the new architecture, we support percentage transforms, so we can't combine this up front and have to pay a larger representation cost, so this seems like a reasonable trade-off? I'd add a console.error in this case, and document this behaviour as expected.
At that point Transform could even become a std::variant where it's either a list of transforms or a fixed matrix?

@javache Hi, I added the transform check in processTransform, please review it again.

@javache Done. :)


Dev to Main

I didn't merge dev into main to apply the fix. Instead I merged the fix branch to dev and main separately


New package: x64dbg.x64dbg version snapshot_2023-10-05_13-38

Description

Resolve https://github.com/microsoft/winget-pkgs/issues/122919

Checks

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?

[x] Does your manifest conform to the 1.5 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

During test, it seems that x64dbg.exe, x32dbg.exe and x96dbg.exe are unable to launch with command in terminal. Go to %LOCALAPPDATA%\Microsoft\WinGet\Links and double-click the .symlink icon can launch the GUI of target application.


getting 'could not reach the server' error

Describe the bug
I am trying to bringup a simple chatbot from chainlit. I am using local LLM. Hence there is some time delay in response. My problem is that, very frequently I am getting "could not reach the server" error. though I made LLM call to run via syncio, I am still facing same issue. Can some one help me on this. Below is the code that I am using to get response from llm
To Reproduce
Steps to reproduce the behavior:
running below code.
@cl.on_message
async def main(message: cl.Message):
await cl.Message(
content=f"Received: {message.content}",
).send()
print("llm invoked, wait for response")
query = message.content
response = asyncio.run(agent_executor.invoke(input=query))
print("response received", response)
await cl.Message(
    content=f"Bot Answer: {response}"
).send()

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS] windows
Browser [e.g. chrome, safari]
Version [e.g. 22] 1.0.401 version of chainlit

Additional context
Add any other context about the problem here.

Did you managed to resolve the problem?

Hey, I don't know if that's a good fix or bad, I added a while True in main file so, the chainlit instance didn't get killed.
I continued with that, rather digging so much. I was expecting the service to run, help me if there is someother (better way) to keep the service running.

yes @settur1409 I am also facing the same problem while running the llama3 model

I am facing the issue while using chromadb and openai in aws eks .. unable to find the fix..

I suspect, its the issue with chainlit and nothing related to LLM, or vector store, as a work around you can have a while True in main file.

Can you share how do you put this while True? It was on the on_message function? thanks @settur1409

Hope this should help
imports ...
@on_chat_start
async def chat_start()
...
@cl.on_message
async def main()
wait for user input
call chain invoke
if name=="main":
while True:
pass

Hope this should help
imports ...
@on_chat_start async def chat_start() ...
@cl.on_message async def main() wait for user input call chain invoke
if name=="main": while True: pass

I hope this helps others facing the same error. I resolved the issue by using concurrent.futures, which creates a separate thread to handle the task.
Below is a simple code example demonstrating how to run a text_to_speech function that takes time to execute. This solution resolved the 'Could not reach the server' error for me:
import asyncio
import concurrent.futures
async def speak_async(answer: str):
loop = asyncio.get_running_loop()
with concurrent.futures.ThreadPoolExecutor() as pool:
await loop.run_in_executor(pool, text_to_speech, answer)


Add a Floating "BACK/SCROLL-TO-TOP " Button

I have noticed that since the Slug cards on your website has increased ,the user finds it difficult to navigate back to the top midway while scrolling as the Scroll top button in your website is located at the very bottom of the site.
So, I want to add a scroll top button with fixed position which will increase the usability of the website. I have also added a screenshot which shows a "back-to-top button" .
Please review and assign this issue to me, if it seems useful. @vikhyatsingh123
Hacktoberfest

i can solve this issue, pl assign it to me


design doc for demo logging story

placeholder

Closing placeholder until we're ready to create our logging story


quantization

can we infer the Pytorch int8 model? what is the benchmark report pytorch int8 vs trt int8?

I did not develop PyTorch QAT; I simply used the PyTorch-Quantization toolkit as an intermediate step to simulate QAT. The ultimate goal is to use QAT in TensorRT, leveraging NVIDIA's high-performance integer kernels which utilize integer Tensor Cores.


v1.0.0b4

@elprans, can you take a quick look if everything looks fine for this release? We want to catch a core-tools release train this evening so wanted to get a new worker version out before that.


Though the result may vary. Here is one of them:
before: 1 loop, best of 5: 300 nsec per loop
:0: UserWarning: The test results are likely unreliable. The worst time (4.1 usec) was more than four times slower than the best time (300 nsec).
after: 1000000 loops, best of 5: 241 nsec per loop

#11276