ECR authentication 401 error

Hi, I am trying to push image to my private ECR registry using specific credentials and receive 401 error with com.google.cloud.tools.jib.registry.RegistryUnauthorizedException.
Here is my gradle  file:
plugins {
	id 'org.springframework.boot' version '2.1.3.RELEASE'
	id 'java'
  	id 'com.google.cloud.tools.jib' version '1.0.2'
}

apply plugin: 'io.spring.dependency-management'

group = 'jib.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

jib {
  to {
    image = 'ecrregistryname/imagename'
    auth {
      username = 'myusername'
      password = 'mypass'
    }
  }
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

When I run './gradlew jib' command for build and send image to registry I receive this stack trace:
➜  demo ./gradlew jib
Starting a Gradle Daemon (subsequent builds will be faster)

Containerizing application to ecrregistryname/imagename...

* What went wrong:
Execution failed for task ':jib'.
> com.google.cloud.tools.jib.plugins.common.BuildStepsExecutionException: Build image failed, perhaps you should make sure your credentials for 'ecrregistryname' are set up correctly

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Got more than one input Future failure. Logging failures after the first
com.google.cloud.tools.jib.registry.RegistryUnauthorizedException: Unauthorized for ecrregistryname/imagename
        at com.google.cloud.tools.jib.registry.RegistryEndpointCaller.call(RegistryEndpointCaller.java:271)
        at com.google.cloud.tools.jib.registry.RegistryEndpointCaller.callWithAllowInsecureRegistryHandling(RegistryEndpointCaller.java:152)
        at com.google.cloud.tools.jib.registry.RegistryEndpointCaller.call(RegistryEndpointCaller.java:142)
        at com.google.cloud.tools.jib.registry.RegistryClient.callRegistryEndpoint(RegistryClient.java:356)
        at com.google.cloud.tools.jib.registry.RegistryClient.checkBlob(RegistryClient.java:241)
        at com.google.cloud.tools.jib.builder.steps.PushBlobStep.call(PushBlobStep.java:116)
        at com.google.cloud.tools.jib.builder.steps.PushBlobStep.call(PushBlobStep.java:40)
        at com.google.common.util.concurrent.CombinedFuture$CallableInterruptibleTask.runInterruptibly(CombinedFuture.java:180)
        at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:57)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: com.google.api.client.http.HttpResponseException: 401 Unauthorized
        at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1102)
        at com.google.cloud.tools.jib.http.Connection.send(Connection.java:200)
        at com.google.cloud.tools.jib.registry.RegistryEndpointCaller.call(RegistryEndpointCaller.java:232)
        ... 11 more

Got more than one input Future failure. Logging failures after the first
com.google.cloud.tools.jib.registry.RegistryUnauthorizedException: Unauthorized for<PHONE_NUMBER>70.dkr.ecr.us-east-2.amazonaws.com/jib-demo
        at com.google.cloud.tools.jib.registry.RegistryEndpointCaller.call(RegistryEndpointCaller.java:271)
        at com.google.cloud.tools.jib.registry.RegistryEndpointCaller.callWithAllowInsecureRegistryHandling(RegistryEndpointCaller.java:152)
        at com.google.cloud.tools.jib.registry.RegistryEndpointCaller.call(RegistryEndpointCaller.java:142)
        at com.google.cloud.tools.jib.registry.RegistryClient.callRegistryEndpoint(RegistryClient.java:356)
        at com.google.cloud.tools.jib.registry.RegistryClient.checkBlob(RegistryClient.java:241)
        at com.google.cloud.tools.jib.builder.steps.PushBlobStep.call(PushBlobStep.java:116)
        at com.google.cloud.tools.jib.builder.steps.PushBlobStep.call(PushBlobStep.java:40)
        at com.google.common.util.concurrent.CombinedFuture$CallableInterruptibleTask.runInterruptibly(CombinedFuture.java:180)
        at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:57)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: com.google.api.client.http.HttpResponseException: 401 Unauthorized
        at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1102)
        at com.google.cloud.tools.jib.http.Connection.send(Connection.java:200)
        at com.google.cloud.tools.jib.registry.RegistryEndpointCaller.call(RegistryEndpointCaller.java:232)
        ... 11 more
* Get more help at https://help.gradle.org

As I understand this could be an issue with http/https proxy. In documentation I found this section - https://github.com/GoogleContainerTools/jib/blob/master/docs/faq.md#how-do-i-configure-a-proxy, but I didn't find how exactly build command should look like in my simple case to fix this issue. Could you please create some example how to do it?
Also, I tried to use allowInsecureRegistries flag, but this wasn't have any impact on this issue.
Thank you!

Hi @mboldysh.  Can you confirm that you've installed and configured the ECR docker credential helper?
https://github.com/awslabs/amazon-ecr-credential-helper
To verify that it is working, please then try something like:
$ echo https://555818183070.dkr.ecr.us-east-2.amazonaws.com/jib-demo | docker-credential-ecr-login
{
  "Username": "xxx",
  "Secret": "yazzz"
}

Hi @briandealwis. As I understand there are two opportunities for login to ECR which described here - https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#authentication-methods. I want to use the second approach which as I understand doesn't require any credential helpers, but only username and password, is it correct?

You are correct that you won't need a credential helper if you provide to.auth.username and to.auth.passowrd.

As I understand this could be an issue with http/https proxy. In documentation I found this section - https://github.com/GoogleContainerTools/jib/blob/master/docs/faq.md#how-do-i-configure-a-proxy, but I didn't find how exactly build command should look like in my simple case to fix this issue. Could you please create some example how to do it?

Unclear if a proxy is related to this issue, but anyways, I believe you can put them in gradle.properties (untested).
systemProp.http.proxyHost=our.corp.proxy.com
systemProp.http.proxyPort=3128
systemProp.http.proxyUser=user               # if needed
systemProp.http.proxyPassword=password       # if needed
systemProp.http.nonProxyHosts=...            # if desired
systemProp.https.proxyHost=our.corp.proxy.com
systemProp.https.proxyPort=3128              # usually same as HTTP-request proxy
systemProp.https.proxyUser=user              # if needed
systemProp.https.proxyPassword=password      # if needed

Hi @chanseokoh I saw this config in other issues but I'm a bit confused which proxy host and port I should paste into it. Is port should be 3128 or it's just an example port which should be replaced and which host I should use? Should it contain only registryAddress or registryAddress/imageName?
I tried this config:
systemProp.http.proxyHost=555818183070.dkr.ecr.us-east-2.amazonaws.com
systemProp.http.proxyPort=3128
systemProp.http.proxyUser=myusername
systemProp.http.proxyPassword=mypass
systemProp.http.nonProxyHosts=*.internal.com|localhost|<IP_ADDRESS>
systemProp.https.proxyHost=555818183070.dkr.ecr.us-east-2.amazonaws.com
systemProp.https.proxyPort=3128
systemProp.https.proxyUser=myusername
systemProp.https.proxyPassword=mypass
systemProp.https.nonProxyHosts=*.internal.com|localhost|<IP_ADDRESS>

But build failed with timeout:
Execution failed for task ':jib'.
> com.google.cloud.tools.jib.plugins.common.BuildStepsExecutionException: Connect to<PHONE_NUMBER>70.dkr.ecr.us-east-2.amazonaws.com/<IP_ADDRESS>:3128 timed out

Oops!  Missed that you specified the auth block.
Are you sure you're behind a proxy?  Are you using the user and password provided by the aws ecr get-login command?  Can you use docker push and docker pull?
https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-basics.html#use-ecr

systemProp.http.proxyHost=555818183070.dkr.ecr.us-east-2.amazonaws.com

Is port should be 3128

From what you did and said, I wonder if you've got a wrong idea with proxy here.<PHONE_NUMBER>70.dkr.ecr.us-east-2.amazonaws.com doesn't look like it's your proxy but an actual target registry (ECR, that is) where you want to push your images. Certainly it doesn't make sense to set http.ProxyHost to that. That said, as @briandealwis said, I'm not sure if you are behind a proxy in your organization. It seems likely you are not providing correct username/password. Does you password have a special character?

Yes, I misunderstanded the idea of proxy here. This is exactly not what I looking for. @briandealwis @chanseokoh you were right the problem was with credentials. Instead of using credentials which provided with 'aws ecr get-login --no-include-email' I'm used user credentials. Thank you for help!
The gradle.build version which work for me looks like this:
plugins {
	id 'org.springframework.boot' version '2.1.3.RELEASE'
	id 'java'
  	id 'com.google.cloud.tools.jib' version '1.0.2'
}

apply plugin: 'io.spring.dependency-management'

group = 'jib.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

jib {
  to {
    image = '555818183070.dkr.ecr.us-east-2.amazonaws.com/jib-demo'
    auth {
      username = 'AWS'
      password = 'aws ecr get-login --no-include-email --region us-east-2'.execute().text.split(" ")[5]
    }
  }
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

Also, as the information that for login to ECR we should use a password from 'aws ecr get-login --no-include-email' is not present in jib README file maybe it's something that can be improved.
Thanks!

@mboldysh if you install and configure the docker-credential-ecr-login helper then you can get rid of auth section entirely: Jib will call out to it automagically to obtain the required credentials.  Since you're already using the aws command line, it should just work as I believe it just calls out to aws ecr get-login.

@briandealwis yes I can do it, but I don't see any reason to install one more tool just to login to ECR instead of just write username and password in my build.gradle file. Actually, write username and password looks even simpler for me. Also, I believe docker-credential-ecr-login it's a helper for a docker daemon, so that docker is required in this case while setting up credentials in build.gradle allows build and push images without docker.

Generally I believe the recommendation is against including credentials as part of your source. On top of that docker is not usually required to use the credential helpers. I would at least give it a try.

@loosebazooka Yes, including credentials as part of source code is not a good idea, but it's easy to avoid it by specifying a password  as 'gcloud auth print-access-token'.execute().text.trim() for GCR and as 'aws ecr get-login --no-include-email --region us-east-2'.execute().text.split(" ")[5] for ECR. And my point is, this single line just replace a helper tool which I should install and configure.

Ah okay, my fault, I misunderstood the comment. Carry on.

Hi @mboldysh
I am trying to push an image to the ECR using jib auth as per your comments earlier but it doesn't seem to work for me. The task is triggered from my build.gradle
`plugins {
id 'java'
id 'maven-publish'
id 'war'
id 'com.google.cloud.tools.jib' version '3.0.0'
}
apply plugin: "nebula.ospackage"
apply plugin: "nebula.nebula-release"
apply from: 'jib.gradle'`
And the contents of jib.gradle are as below.
`def warVersion = project.version
if(warVersion.toString().contains("-")) {
warVersion = project.version.toString().replaceAll("-", ".")
}
jib {
from {
image = 'tomcat:jdk8-adoptopenjdk-hotspot'
}
to {
image = 'XXXXXXXX.dkr.ecr.ap-southeast-2.amazonaws.com/XXXXXXXXX'
auth {
username = 'AWS'
password = 'aws ecr get-login --no-include-email --region ap-southeast-2'.execute().text.split(" ")[0]
}
tags = ["${warVersion}"]
}
`
On the GitLab CI, it gets rejected
`

Cannot run program "aws": error=2, No such file or directory`

Thanks.


[CELEBORN-1621][FOLLOWUP] Support enabling worker tags via config

What changes were proposed in this pull request?

Adding support to enable/disable worker tags feature by a master config flag.
Fixed BUG: After this change #2936, admins can also define the tagsExpr for users. In a case user is passing an empty tagsExpr current code will ignore the admin defined tagsExpr and allow job to use all workers.

Why are the changes needed?
https://cwiki.apache.org/confluence/display/CELEBORN/CIP-11+Supporting+Tags+in+Celeborn
Does this PR introduce any user-facing change?
NA
How was this patch tested?
Existing UTs

can we see the worker tags with RESTful API /api/v1/workers both in master and worker end?

can we see the worker tags with RESTful API /api/v1/workers both in master and worker end?

@turboFei Not yet, i am working it. Workers tags will be available on Master API only.


PLEASE. I BEG YOU MICROSOFT! PLEASE DON'T END SUPPORT FOR WINDOWS SUBSYSTEM FOR ANDROID

Is your feature request related to a problem? Please describe
My favourite Windows emulator is this app. I no longer like Windows 11 because of this. I got a Windows 11 computer and now I just wanna throw it away after hearing this news. Why is this happening to WSA?  If you still kills this feature.
Please specify the version of Windows Subsystem for Android
Please don't kill this feature and instead, enhance it!

sad indeed, windows 11 and WSA is the only reason I jump from windows 7 to windows 11, I hate windows 8 and 10, so yeah, now that windows 11 losing WSA, how do I do this now ._,

I'm sad too. But my older sister said to me that one day they may rethink continuing WSA and enhance it. Oh and the community can help. I saw ADeltaX repository on GitHub now turns to WSA-community now

this is the only thing that keeps me from using windows, once this isn't usable anymore I'll switch to macs.

Hopefully they will pick it up again.

Maybe this project will go on? https://github.com/MustardChef/WSABuilds/issues/330

Want to voice my support as well.
It is such a convenient interface for working with apps that either don't need to be portable, require more power, or could use a larger display (there are incredible drawing apps). It could be the beginning of something truly amazing and has a lot of potential for growth that would be a shame to throw away.

upvote this in the feedback hub to get Microsoft's attention
https://aka.ms/AAqk69c

It is absolute foolishness and shortsightedness from Satya Nadella and his cohorts in the executive chair to ax WSA.
Let me spell it out as Satya has been lacking in the logic department lately with the blunder of Copilot+ to answer for.
Windows 11 lacks a mobile app library in the Microsoft Store. Microsoft excels in the triple E--embrace, extend, extinguish.
You are doing the polar opposite by axing this. Really.
Apparently, 2nd generation Snapdragon X next year brings further efficiency improvements to enable smaller and more passive designs. With it, you are going to release an 11" Surface Pro, and competitors will likely be bringing smaller tablets as well... without a competent app library to entice users.
Software trumps hardware always. Look at NVIDIA. Look at Tesla.
No one buys a tablet, especially smaller tablets where touch comes first and foremost in regular usage, without tablet-optimized, touch-friendly apps.
The beauty of WSA is it enables users to have tablet-optimized, touch-friendly apps from Android despite Microsoft Store's shortcomings, its admission of failure with Progressive Web Apps  glorified web bookmarks lately replacing most real modern apps.
You could be literally embracing and extending Android to stay ahead while having a super power Android could never dream of: bringing full Windows program support along with access to Android's 2-million-plus touch-optimized apps.
That's win-win, but you'd rather have loss-lose due to myopia.
DeX and Stage Manager can never dream of this cornucopia of app compatibility and you throw it away, despite all of these software engineers' painstaking efforts.
Never mind you stupidly got rid of Windows 10's Tablet Mode, which us users can thankfully still bring back with https://github.com/valinet/ExplorerPatcher.
Never mind you can justify keeping Windows Subsystem for Linux without it bringing a revenue flow. Axing WSA because the Amazon Appstore partnership failed is throwing the baby out with the bathwater.
You are staring at your very advantage over Android, macOS, iPadOS, and iOS right in the face, and casting it aside as if it were nothing.
 WSA is the way forward to stay ahead and is your upper hand to keep an ace up your sleeve.

It is absolute foolishness and shortsightedness from Satya Nadella and his cohorts in the executive chair to ax WSA.
Let me spell it out as Satya has been lacking in the logic department lately with the blunder of Copilot+ to answer for.
Windows 11 lacks a mobile app library in the Microsoft Store. Microsoft excels in the triple E--embrace, extend, extinguish.
You are doing the polar opposite by axing this. Really.
Apparently, 2nd generation Snapdragon X next year brings further efficiency improvements to enable smaller and more passive designs. With it, you are going to release an 11" Surface Pro, and competitors will likely be bringing smaller tablets as well... without a competent app library to entice users.
Software trumps hardware always. Look at NVIDIA. Look at Tesla.
No one buys a tablet, especially smaller tablets where touch comes first and foremost in regular usage, without tablet-optimized, touch-friendly apps.
The beauty of WSA is it enables users to have tablet-optimized, touch-friendly apps from Android despite Microsoft Store's shortcomings, its admission of failure with ~Progressive Web Apps~ glorified web bookmarks lately replacing most real modern apps.
You could be literally embracing and extending Android to stay ahead while having a super power Android could never dream of: bringing full Windows program support along with access to Android's 2-million-plus touch-optimized apps.
That's win-win, but you'd rather have loss-lose due to myopia.
DeX and Stage Manager can never dream of this cornucopia of app compatibility and you throw it away, despite all of these software engineers' painstaking efforts.
Never mind you stupidly got rid of Windows 10's Tablet Mode, which us users can thankfully still bring back with https://github.com/valinet/ExplorerPatcher.
Never mind you can justify keeping Windows Subsystem for Linux without it bringing a revenue flow. Axing WSA because the Amazon Appstore partnership failed is throwing the baby out with the bathwater.
You are staring at your very advantage over Android, macOS, iPadOS, and iOS right in the face, and casting it aside as if it were nothing.
 WSA is the way forward to stay ahead and is your upper hand to keep an ace up your sleeve.

Um thanks? I guess everyone uses Google Play and phone so they don't need this.

It is absolute foolishness and shortsightedness from Satya Nadella and his cohorts in the executive chair to ax WSA.
Let me spell it out as Satya has been lacking in the logic department lately with the blunder of Copilot+ to answer for.
Windows 11 lacks a mobile app library in the Microsoft Store. Microsoft excels in the triple E--embrace, extend, extinguish.
You are doing the polar opposite by axing this. Really.
Apparently, 2nd generation Snapdragon X next year brings further efficiency improvements to enable smaller and more passive designs. With it, you are going to release an 11" Surface Pro, and competitors will likely be bringing smaller tablets as well... without a competent app library to entice users.
Software trumps hardware always. Look at NVIDIA. Look at Tesla.
No one buys a tablet, especially smaller tablets where touch comes first and foremost in regular usage, without tablet-optimized, touch-friendly apps.
The beauty of WSA is it enables users to have tablet-optimized, touch-friendly apps from Android despite Microsoft Store's shortcomings, its admission of failure with ~Progressive Web Apps~ glorified web bookmarks lately replacing most real modern apps.
You could be literally embracing and extending Android to stay ahead while having a super power Android could never dream of: bringing full Windows program support along with access to Android's 2-million-plus touch-optimized apps.
That's win-win, but you'd rather have loss-lose due to myopia.
DeX and Stage Manager can never dream of this cornucopia of app compatibility and you throw it away, despite all of these software engineers' painstaking efforts.
Never mind you stupidly got rid of Windows 10's Tablet Mode, which us users can thankfully still bring back with https://github.com/valinet/ExplorerPatcher.
Never mind you can justify keeping Windows Subsystem for Linux without it bringing a revenue flow. Axing WSA because the Amazon Appstore partnership failed is throwing the baby out with the bathwater.
You are staring at your very advantage over Android, macOS, iPadOS, and iOS right in the face, and casting it aside as if it were nothing.
 WSA is the way forward to stay ahead and is your upper hand to keep an ace up your sleeve.   And you know what, they partnered OpenAI for this, and I still prefer OpenAI ChatGPT than Microsoft Copilot. They thinks everyone hates WSA and prefers AI better and they will get those juicy money. But no, in reality, everyones hates Microsoft AI.

Maybe this project will go on? MustardChef/WSABuilds#330

It's hard 'cause @MustardChef's builds mostly depend on Microsoft's as well, isn't it? I don't want WSA to be ended like this either. 😭

Yeah, the credit of MustardChef...
WSA is still the trademarks of Microsoft Cooperation.


Statistic events with literal MaxMind JSON objects for city

Describe the bug
When testing our DSpace 6.3 → DSpace 7.6 migration I noticed on the new statistics page that we have some cities with literal MaxMind JSON objects, for example:

com.maxmind.geoip2.record.City [ {"geoname_id":3936456,"names":{"de":"Lima","ru":"Лима","pt-BR":"Lima","ja":"リマ","en":"Lima","fr":"Lima","es":"Lima"}} ]
com.maxmind.geoip2.record.City [ {} ]

See screenshot from a DSpace 7 community statistics page. These are present in our DSpace 6 Solr statistics core, but we only noticed them because of DSpace 7's new statistics page. Using the Solr query below I found we have 1.6 million of these!
It is unclear to me where these came from. We do have some third-party Atmire add-ons in our DSpace repository.
To Reproduce
Steps to reproduce the behavior:

Query your Solr statistics core for city:com.maxmind.geoip2.record.City* to see if there are any

For what it's worth, I solved this in our Solr statistics with a small Python script to process the JSON and re-import it.
First I exported 1.6 million statistics documents that had the JSON objects using solr-import-export-json with the following command:
./run.sh -s http://localhost:8081/solr/statistics -a export -o stats-maxmind-cities.json -f 'city:com*' -k uid

(Note the Solr query selecting afflicted documents: city:com*).
Then I used this Python script (requires the jsonlines package):
#!/usr/bin/env python3

import json
import os

import jsonlines

def fix_city(value):
    """Clean city string."""

    # Remove some crap so this can be a dict
    value = value.replace("com.maxmind.geoip2.record.City [ ", "")
    value = value.replace(" ]", "")

    # Try to read the cleaned string as a dict and access the English name
    try:
        # Assuming all city objects have an English version
        value = json.loads(value)["names"]["en"]
    except KeyError:
        value = ""

    return value

input_filename = "/home/aorth/Downloads/stats-maxmind-cities.json"
output_filename = "/home/aorth/Downloads/stats-maxmind-cities-fixed.json"

if os.path.exists(output_filename):
    os.remove(output_filename)

# Open the JSON file and iterate over each line as an object
with jsonlines.open(input_filename) as reader:
    for obj in reader:
        # Remove cities that are empty objects
        if obj["city"] == "com.maxmind.geoip2.record.City [ {} ]":
            del obj["city"]
        else:
            obj["city"] = fix_city(obj["city"])

        # Write each line back out (appending)
        with jsonlines.open(output_filename, mode="a") as writer:
            writer.write(obj)

Then I re-imported the cleaned JSON:
$ ./run.sh -s http://localhost:8983/solr/statistics -a import -o ~/stats-maxmind-cities-fixed.json -k uid


[shardformer] support bert/gpt2 and downstream model with new api and dtensor

support bert/gpt2 and downstream model with new api and dtensor

Closed by #4024 .


Update CODEOWNERS

No changes needing a change description found.

You can try these changes at https://cadlplayground.z22.web.core.windows.net/prs/3506/
Check the website changes at https://tspwebsitepr.z22.web.core.windows.net/prs/3506/


Use crypto/rand instead of math/rand

https://github.com/golang/go/issues/11871 states that math/rand is not secure. It would be wise to have this package to use crypto/rand instead

Hi @adamo57 !
I understand that anything security related should use crypto/rand. Can you help me to understand why that could be important the way it is used in this library?
The offending code:
ms += random.Intn(2*maxJitter) - maxJitter

It is used to spread out requests to help prevent too many requests coming in at the same time to an http resource. Value collisions or deterministic values should not be an issue. At least, I don't think they should be an issue :)
Any insight into an advantage in changing is appreciated.


jira_issue directive with html builder

Platform: Windows 10 Enterprise 64bit 1909
Python: 3.8.2
Sphinx: 3.1.2
confluencebuilder: 1.2.0 and 1.3.0-dev0
Project: https://github.com/Cielquan/python_test
When I add a jira_issue directive into the docs e.g. index.rst and build it with the confluence builder it works with 1.2, but not so really on 1.3-dev0 (but thats another topic). When I want to build the docs with the html builder I get the error below, because the jira_issue directive is missing, which I don't understand because the config.py does not change and the confluencebuilder extension is included.
Exception occurred:
  File "c:\users\riedelc\projects\python_test\.tox\docs\lib\site-packages\sphinx\writers\html5.py", line 790, in unknown_visit
    raise NotImplementedError('Unknown node: ' + node.__class__.__name__)
NotImplementedError: Unknown node: jira_issue
The full traceback has been saved in C:\Users\xxx\AppData\Local\Temp\sphinx-err-elo188s7.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
A bug report can be filed in the tracker at <https://github.com/sphinx-doc/sphinx/issues>. Thanks!
ERROR: InvocationError for command 'C:\Users\xxx\Projects\python_test\.tox\docs\Scripts\sphinx-build.EXE' -b html -aE docs/source docs/build/html (exited with code 2)

When I add a setup func to the config like this (and add -t builder_confluence to the command):
def setup(app):
    if not tags.has("builder_confluence"):  # type: ignore # noqa
        from sphinx.directives import SeeAlso
        app.add_directive("jira_issue", SeeAlso)

I get the Warning:
WARNING: while setting up extension conf.py: directive 'jira_issue' is already registered, it will be overridden

Which is even stranger.

The directive implementations introduced by this extension are specifically designed for this extension. If the content being generated uses the directives provided in this extension but also want to handle other builder types, there are ways to get this to work. The current solution available is to use the only directive, which would allow you to exclude the custom directives from this extension. For example:
.. only:: confluence and singleconfluence

    .. jira_issue:: TEST-123

Although, I can agree this does not look pretty and a bit annoying if you want to build against the standard builders (html, latex and text). This extension should see if there is a way to gracefully handle standard builders to suppress the content in these nodes.
Note that the directives introduced are not really designed to support the standard builder types (let alone any other builder types -- would be out of the scope for this extension). There is flexibility for other extensions to override the node implementations (if desired) -- this extension only registers the internal nodes if they are not already registered (for advanced cases/external extensions to work with).
Another workaround, if you want to avoid editing the content itself, would be to suppress or manipulate the node content yourself (in a manner similar to what you mentioned above). For example, to ignore the jira_issue directives in the html builder, a user could do the following in their configuration:
from docutils import nodes
from sphinxcontrib.confluencebuilder.nodes import jira_issue

def setup(app):
    def visit_ignore(self, node):
        raise nodes.SkipNode
    app.add_node(jira_issue,
        html=(visit_ignore, None))

One can even be more bold an try to create content based off the node itself, but note that the node implementations are subject to change (e.g. there will be some future changes to address an issue with the JIRA-based implementation and the singleconfluence builder; 860d6e82f412ea02a515cd4583a60db5b1dc95aa).

Thanks for the lengthy answer. 😄
The only directive sound good as a basic workaround. But then there is no link to the jira issue.
What I would like to have is at least a note mentioning the jira issue, optionally with a link to the issue. Therefore my example with the seealso directive, which is deprecated in 4.0.
It has not to be like the implementation in the confluence docs, with issue status etc., but would be very nice. I don't know if it's possible or in which range it would be possible to implement.
I will take a deeper look in the node manipulation thing and post my solution here, when I find one satisfying my ideas.

Based on my initial proposal with the seealso directive I have found a solution.
It will add a "See also" info box when not using the confluence builder (or rather not setting -t builder_confluence) and have "JIRA issue: " as content.
You need to add the snippet below to your conf.py:
extensions.append("sphinx.ext.extlinks")
extlinks = {"jira_issue": ("<LINK TO YOUR JIRA INSTANCE>/%s", "")}

if tags.has("builder_confluence"):
    extensions.append("sphinxcontrib.confluencebuilder")

def setup(app):
    if not tags.has("builder_confluence"):
        from sphinx.directives.other import SeeAlso

        class _SeeAlso(SeeAlso):
            def run(self):
                self.content[0] = "JIRA issue: " + f":jira_issue:`{self.content[0]}`"
                return super().run()

        app.add_directive("jira_issue", _SeeAlso)

The solution works for plain jira_issue directives without any paramters like .. jira_issue:: XXX-1. If you want to use e.g. the :server-id: parameter you have to change the code to support that.


Registration

@JuliaRegistrator register

@JuliaRegistrator register

Registration pull request created: JuliaRegistries/General/87078
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.0.1 -m "<description of version>" 9d4f6acede91afecc250d0f3f3204fb3d043663a
git push origin v1.0.1

@JuliaRegistrator register

Registration pull request created: JuliaRegistries/General/87080
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v1.0.2 -m "<description of version>" a8fd23b1d1b91528257a171cfa0011c95a770a4b
git push origin v1.0.2


documentation/Installation.md contains reference to dev branches

for instance:
...
Clone OKIT
sudo bash -c "git clone -b toxophilist/auth --depth 1 https://github.com/oracle/oci-designer-toolkit.git /okit"
...
shouldn't public steps refer to GA versions?
Best

Update for v0.21.0


Updated json Resistance/YT-1300

This is the same as #111, which seems to be closed?
Added the generic YT and updated the other 3 ships with correct data, so just replace the pilots block of the existing json.
YASB has xws for Solo/Chewie as "hansoloresistance" and "chewbaccaresistance"
{
"name": "Resistance Sympathizer",
"initiative": 2,
"limited": 0,
"xws": "resistancesympathizer",
"text": "After witnessing the Hosnian Cataclysm, some spacers willingly aided the Resistance with whatever ships they had.",
"image": "http://www.infinitearenas.com/xw2browse/images/resistance/resistance-sympathizer.jpg",
"cost": 68,
"slots": [
"Crew",
"Crew",
"Gunner",
"Illicit",
"Modification",
"Title"
]
}
{
"name": "Chewbacca",
"caption": "Loyal Companion",
"initiative": 4,
"limited": 1,
"xws": "chewbacca-scavengedyt1300"
"ability": "After a friendly ship at range 0/3 is destroyed, you may perform an action. Then you may perform a bonus attack.",
"image": "http://www.infinitearenas.com/xw2browse/images/resistance/chewbacca.jpg",
"cost": 72,
"slots": [
"Talent",
"Crew",
"Crew",
"Gunner",
"Illicit",
"Modification",
"Title"
]
},
{
"name": "Han Solo",
"caption": "Jaded Smuggler",
"initiative": 6,
"limited": 1,
"xws": "hansolo-scavengedyt1300"
"ability": "SETUP: You can be placed anywhere in the play area beyond range 3 of enemy ships.",
"image": "http://www.infinitearenas.com/xw2browse/images/resistance/han-solo.jpg",
"cost": 76,
"slots": [
"Talent",
"Crew",
"Crew",
"Gunner",
"Illicit",
"Modification",
"Title"
]
},
{
"name": "Rey",
"caption": "Resourceful Scavenger",
"initiative": 5,
"limited": 1,
"xws": "rey",
"ability": "While you defend or perform an attack, if the enemy ship is in your [Front Arc], you may spend 1 [Force] to change 1 of your blank results to an [Evade] or [Hit] result.",
"image": "https://images-cdn.fantasyflightgames.com/filer_public/f9/27/f9276fd7-52fd-4b05-8599-05039fa479e6/swz19_a2_reys-pilot.png",
"force": { "value": 2, "recovers": 1 }
"cost": 80,
"slots": [
"Force Power",
"Crew",
"Crew",
"Gunner",
"Illicit",
"Modification",
"Title"
]
}

Closed via #115. Thanks.


feat(evm-cheatcodes): MINOR/AESTHETIC: Alias prank(address) to spoof(address)

Motivation
Semantically (in English, so there is a bias), spoof more closely defines the behavior and actions that prank accomplishes. Think of phone-number spoofing or email spoofing. prank is really spoofing the msg.sender (rather than "pranking" it).
Solution
This PR exposes a new cheatcode accessed via spoof that still calls the underlying prank implementation for simplicity and backwards compatibility.
Tests coming, just drafting for visibility.

Personally I would prefer not to merge this PR for the following reasons:

The name prank comes from a prank phone call, so here you are making a prank CALL in the EVM. Therefore it does define the behavior of the action, though perhaps that logic should be documented better for clarity
We'd also need to add startSpoof, and stopSpoof for consistency, which means adding 3 redundant cheat codes which clutters the cheat code interface

Personally I would prefer not to merge this PR for the following reasons:

The name prank comes from a prank phone call, so here you are making a prank CALL in the EVM. Therefore it does define the behavior of the action, though perhaps that logic should be documented better for clarity
We'd also need to add startSpoof, and stopSpoof for consistency, which means adding 3 redundant cheat codes which clutters the cheat code interface

@mds1 I definitely see your point around cluttering the cheat code interface. I was planning to add the startSpoof and stopSpoof this evening. It's not ideal, especially if/when more cheat codes are added in the future.
While I love the prank call analogy, I personally still find it somewhat unclear for a couple of reasons:

The signature prank(address) semantically suggests that you are making a prank call to that address, but in fact you are using that address to prank call another address. This was actually the original source of my confusion (I thought I should be calling prank() on the address that I wanted to prank call, so to speak).

While you are making a prank call in the EVM, the cheat is invoked in the context of a test. So I think its name should more closely describe what it's doing at the test contract level (imitating an address sender) than what it's doing under the hood (literally performing a prank CALL).

Of course this is a pretty subjective argument. The idea spawned from a hackathon over this weekend where number of us were confused by naming, but clearly we figured it out quickly enough (by actually re-reading the nested Cheat Code documentation 😄 ). Happy to abandon if others think it's too much overhead, or at worse even more confusing.

I generally think that having one canonical way to do things is better than multiple ways to do things as its more socially scalable

This can be done in userland, i.e. write a method called spoof that calls prank. For that reason (+ maintainability in not having aliases) I will close this. cc @gakonst @mattsse as well if they have any objections. :smile:

This can be done in userland, i.e. write a method called spoof that calls prank. For that reason (+ maintainability in not having aliases) I will close this. cc @gakonst @mattsse as well if they have any objections. 😄

Makes sense!

I agree with all comments above - thanks for the work / understanding @dmfxyz! Aliasing makes sense here at a separate contract


Can not save execution graph to image

Hi team,
I'd like to save my execution graph  to an image for sharing with teammates or making document. But it is too big for a screenshot.
Besides, I'd like my execution graph to show execution time per step to view all. Which step takes most of the time?
Hope can get it in the future.
Thank you so much

Hello, @kenziehong! Thank you for the contribution!
Some workarounds until we implement the requested features:

you can pinch the trackpad to zoom out and make a screenshot
you can see the individual execution times for each job in the "Nested Runs" section (clicking on a job box will take you to that job's details)


Syntax error in the SQL query that is used to retrieve application name by application consumer key.

Description:
Getting "ORA-00933: SQL command not properly ended" error when executing the following query to retrieve application name by application consumer key on the oracle database ( Oracle Database 12c Enterprise Edition Release <IP_ADDRESS>.0.).
SELECT APP.NAME FROM AM_APPLICATION AS APP INNER JOIN AM_APPLICATION_KEY_MAPPING AS MAP ON APP.APPLICATION_ID = MAP.APPLICATION_ID WHERE CONSUMER_KEY = 'consumer_key';
Steps to reproduce:

Execute the following query on a oracle database ( Oracle Database 12c Enterprise Edition Release <IP_ADDRESS>.0.).
SELECT APP.NAME FROM AM_APPLICATION AS APP INNER JOIN AM_APPLICATION_KEY_MAPPING AS MAP ON APP.APPLICATION_ID = MAP.APPLICATION_ID WHERE CONSUMER_KEY = 'consumer_key';

Then, the following error was observed in the output console.
ERROR at line 1: ORA-00933: SQL command not properly ended

Affected Product Version:
2.6.0

Public fix will be available when adding the public fix for https://github.com/wso2/product-apim/issues/9851. Hence close the issue


Tullia hook for running some QA tests on PRs

This also:

bump tullia
include tullia CLI in nix develop shells
breakdown tullia tasks in a few (hopefully stable) units.

Apart from tullia list I'm not sure how to test it further without merging, since cicero use tasks from master...

@Jimbo4350 with this PR no tests will be run. It's a first step to be able to later plug-in some tests into the cicero tasks DAG.
The actual tests list is being work-on by QA team. @mkoura should be more explicit about what QA team want to run on each PR.

Which QA tests? There needs to be some documentation around this to understand which tests are run.

I will work this week on a short documentation for these tests/pipelines.

I'm not sure what setup is done by tullia. For QA tests you can run smtg like
NODE_REV=ee4cfdd0001fb7d211cdcabe84d3e532d3f6e7ad ENABLE_P2P=1 UPDATE_PV8=1 MAKE_TARGET=testpr ./.github/regression.sh

from cardano-node-tests repo and it will launch tests in nix shell with correct environment. The script prepares the environment and launches make testpr.


enforce template id when importing author time

Pull requests into cqm-parsers require the following. Submitter and reviewer should :white_check_mark: when done. For items that are not-applicable, note it's not-applicable ("N/A") and :white_check_mark:.
Submitter:

[ ] This pull request describes why these changes were made.
[ ] Internal ticket for this PR:
[ ] Internal ticket links to this PR
[ ] Code diff has been done and been reviewed
[ ] Tests are included and test edge cases
[ ] Tests have been run locally and pass

Reviewer 1:
Name:

[ ] Code is maintainable and reusable, reuses existing code and infrastructure where appropriate, and accomplishes the task’s purpose
[ ] The tests appropriately test the new code, including edge cases
[ ] You have tried to break the code

Reviewer 2:
Name:

[ ] Code is maintainable and reusable, reuses existing code and infrastructure where appropriate, and accomplishes the task’s purpose
[ ] The tests appropriately test the new code, including edge cases
[ ] You have tried to break the code

Codecov Report

Merging #124 (606eccd) into master (6581256) will increase coverage by 3.30%.
The diff coverage is 85.98%.

@@            Coverage Diff             @@
##           master     #124      +/-   ##
==========================================
+ Coverage   87.09%   90.39%   +3.30%
==========================================
  Files          67       67
  Lines        1968     1989      +21
==========================================
+ Hits         1714     1798      +84
+ Misses        254      191      -63

Impacted Files
Coverage Δ

lib/qrda-export/catIII-r2-1/qrda3_r21.rb
32.91% <20.00%> (+1.26%)
:arrow_up:

lib/qrda-export/helper/aggregate_object_helper.rb
36.36% <30.76%> (+0.80%)
:arrow_up:

lib/html-export/qdm-patient/qdm_patient.rb
94.36% <81.81%> (+62.62%)
:arrow_up:

lib/qrda-export/helper/date_helper.rb
92.85% <100.00%> (ø)

...rda-import/base-importers/demographics_importer.rb
100.00% <100.00%> (ø)

lib/qrda-import/base-importers/section_importer.rb
87.79% <100.00%> (+1.66%)
:arrow_up:

...t/data-element-importers/adverse_event_importer.rb
100.00% <100.00%> (ø)

...-element-importers/allergy_intolerance_importer.rb
100.00% <100.00%> (ø)

...ata-element-importers/assessment_order_importer.rb
100.00% <100.00%> (ø)

...element-importers/assessment_performed_importer.rb
100.00% <100.00%> (ø)

... and 42 more

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 35619bf...606eccd. Read the comment docs.


team_name was never used, causing failure for manually entered teams

args.team_name != args.team, thus a team_url of https://None.slack.com was attempted for manually entered team names. I wonder if that team actually exists? Regardless is not what we're looking for.

Great catch. Thanks for the fix!

:parrot:


Add mode for plotting the complex plane

Problem Statement
Allow for the plotting of complex numbers and loci in an argand diagram
Evidence or User Insights
This would be greatly beneficial to students learning about complex numbers. This is part of the further maths syllabus for high school students in the UK, I am not sure about other countries.
Goals
Allow for plotting of complex numbers and loci in the form

x+iy
re^iθ
|z|=r
|z-(a+bi)|=|z-(x+iy)|

Non-Goals
Non-goals include things such as visualisation of transformations of the complex plane.
Requested Assignment
I'm just suggesting this idea.  I don't want to implement it.

@matthew4850 Thanks for your submission! We think this is potentially very interesting, and while plotting complex numbers certain is a topic in mathematics, it is unclear how widespread this is in curriculums. We would like to keep this issue open to collect more data to better understand how common working with these types of equations is in and out for the classroom before moving forward with it. If you can provide additional support/justification, that would really help. Otherwise, we will keep it open to community discussion.

/cc @matthew4850 @grochocki This is indeed a good suggestion. Complex numbers and their representation on the Argand plane is a part of the high school curriculum followed in India.


Far clipping plane needs adjusting

In the Flyer demo, can't see asteroids and rings until they are close to your face. Working on RenderManager path to fix this.

Fixed in RenderManager by passing near and far clip plane values from Unity camera


Offline matlab_batcher

added an offline version of the matlab batcher for simple running of
offline mode without having to do edits.
Further adapted .gitignore to ignore data, resources and result files.
Most important: adapt changes in Themi/src/

Ready for release 0.201509281017


Load component

{{#load-relationship post 'comments' as |loader|}}

  {{#if loader.isLoading}}
    fetching
  {{/if}}

  {{#if loader.isLoaded}}
    there are {{post.comments.length}} comments
  {{/if}}

{{/load-relationship}}

I'm using a basic version on this in my app, no e-concurrency or anything:
export default Component.extend({
  isLoaded: false,
  isLoading: false,
  isError: false,

  didInsertElement() {
    this._super(...arguments);
    let model = this.get('model');
    let relationship = this.get('relationship');

    if (model.hasLoaded(relationship)) {
      this.setLoaded();
    } else {
      this.setLoading();
      model.load(relationship)
        .then(() => this.setLoaded())
        .catch((error) => this.setError(error));
    }
  },

  setLoading() {
    this.setProperties({
      isLoaded: false,
      isLoading: true,
      isError: false
    });
  },

  setLoaded() {
    this.setProperties({
      isLoaded: true,
      isLoading: false,
      isError: false
    });
  },

  setError(error) {
    this.setProperties({
      isLoaded: false,
      isLoading: false,
      isError: error
    });
  }
}).reopenClass({
  positionalParams: ['model', 'relationship']
});

Let me know if you want a PR

This is now the highest priority feature in my mind! 👍 🔥
This is important because having a component to load data lets Ember developers keep their templates declarative while also allowing them to explicitly express when data is loaded and how it affects the UI.
If you want, we can start with what you have. I'd love to get this into storefront and iterate on it!
Off the top of my head we'll need to answer a few questions...

What is the API of this template? I've been thinking something like...

{{#load-relationship post 'comments' as |loading error data|}}
 ...
{{/load-relationship}}

How do we handle component tear downs given the asynchronous nature of this component? We need to guard against the component being destroyed before the ajax response comes back from the server.

There's some unknown unknowns here. As we start writing test cases for this component I'm sure we'll uncover new things!

Let me know your thoughts.


Changing the Tuple of Indices for GridLocator in PlotPrefs and True Trajectory is still different in some cases

The experiments fail because of the PlotPrefs GridLocator Tuple of Indices (2, 3, 4). When I change it to (1, 2, 3), it runs fine.
    "absrel-newloc": _PlotPrefs(
        True,
        False,
        GridLocator(
            ["coeff_mse", "coeff_f1"],
            (..., (2, 3, 4)),
            (
                {"diff_params.kind": "kalman", "diff_params.alpha": None},
                {
                    "diff_params.kind": "kalman",
                    "diff_params.alpha": lambda a: isinstance(a, int),
                },
                {"diff_params.kind": "trend_filtered"},
                {"diff_params.diffcls": "SmoothedFiniteDifference"},
            ),
        ),
    )

However, the True Trajectory figures are still different, for cubic_ho:

My guess is that that's because you're not using at least 5 values of sim_params.noise_rel  which values for noise rel did you use?
This is a really interesting example, since it looks like the initial values are the same, the second just takes more steps in the integration.  Can you try to add a logging message (logger.info(...)) when simulating to see what point is simulated, what x0 was, and how long the simulation went?

sim_params.noise_rel are [0.05, 0.1, 0.15, 0.2, 0.25, 0.3]
I double checked again and you are right, they all start from the same initial point and the length of the trajectory depends on how long the simulation went for. I'll still add a logging message and run the experiment again.

Interesting, I'm not sure how you're getting a ValueError for (2, 3, 4).  Can you show me a more full error?

The error goes like this
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
Cell In[3], line 1
----> 1 results = ex.run(**resolved_args)

File ~/gen-experiments/src/gen_experiments/gridsearch/__init__.py:258, in run(seed, group, grid_params, grid_vals, grid_decisions, other_params, skinny_specs, series_params, metrics, plot_prefs)
    236 results: GridsearchResultDetails = {
    237     "system": group,
    238     "plot_data": [],
   (...)
    255     ),
    256 }
    257 if plot_prefs:
--> 258     plot_data = find_gridpoints(plot_prefs.plot_match, intermediate_data, results)
    259     results["plot_data"] = plot_data
    260     for gridpoint in plot_data:

File ~/gen-experiments/src/gen_experiments/gridsearch/__init__.py:601, in find_gridpoints(find, where, context)
    599     for index_of_ax, indexes_in_ax in keep_axes:
    600         amax_arr = ser[index_of_ax][1]
--> 601         amax_want = amax_arr[np.ix_(inds_of_metrics, indexes_in_ax)].flatten()
    602         partial_match |= {void_to_tuple(el) for el in amax_want}
    603 logger.info(
    604     f"Found {len(partial_match)} gridpoints that match metric-plot_axis criteria"
    605 )

IndexError: index 4 is out of bounds for axis 1 with size 4

Question: What is the significance of the tuple of indices (2, 3, 4) and can they not just be replaced by (1, 2, 3)?

2, 3, 4 are the indices of the plot axis that we're looking for.  So if sim_params.noise_rel are [0.05, 0.1, 0.15, 0.2, 0.25, 0.3], then (2, 3, 4) refers to 0.15, .2, and 0.25.  There's nothing inherently important about them, but the fact that it's getting a bug is concerning.

Ok I've recreated this error


Unable to remove participants from groups

Removing participants from groups gives the error "Failed to remove participant: Address field must not be blank!".
I did some digging in the code, and it seems like on line 271 of the file "/lib/layouts/conversation_details/contact_tile.dart" (android app), handle.address in api.chatParticipant("remove", chat.guid, handle.address) is probably always null (maybe?). I have experience with Java, but none with dart, and although the code looked somewhat similar in ways it wasn't enough for me to really debug it.

server bug


v2.2.0 🕹

Closes #172
Closes #886
Closes #888
Closes #1685
Closes #694
📝 Description

New component added: Slider #1686
New component added: Breadcrumbs #1794
React Aria Client side router support added, this allows components such as Link, Tabs, Listbox and Dropdown items to be rendered as links and navigate using the proper navigation function for each framework. #1764
RTL Support added to Accordion. #1725
RTL Support added to Avatar & AvatarGroup components #1727
RTL Support added to ButtonGroup #1726
Spacing units changed from px to rem this improves the mobile components' sizes #1688
Tabs/Tab new prop added shouldSelectOnPressUp which is enabled by default true, this prop defines whether the tabs selection should occur on press up instead of press down. #1688
Chip font size changed to text-tiny on sm size. #1688
Button with only the icon now displays only the spinner during loading #1800

💣 Is this a breaking change (Yes/No): Yes

📝 Additional Information
Breaking Changes

Popover API changed to improve the arrow implementation, arrow is now a pseudo-element, which allows the popover to also move the arrow altogether, this change impacts the Popover, Tooltip and Select implementations.

Popover changes:
  <Popover
      showArrow
      backdrop="opaque"
      placement="right"
      classNames={{
-        base: "py-3 px-4 border border-default-200 bg-gradient-to-br from-white to-default-300 dark:from-default-100 dark:to-default-50",
-        arrow: "bg-default-200",
+        base: [
+          // the "before" pseudo element is now the popover' arrow
+          "before:bg-default-200"
+        ],
+        content: [ // now we need to use the "content" slot to actually modify the popover' content styles
+          "py-3 px-4 border border-default-200",
+          "bg-gradient-to-br from-white to-default-300",
+          "dark:from-default-100 dark:to-default-50",
        ],
      }}
    >
      <PopoverTrigger>
        <Button>Open Popover</Button>
      </PopoverTrigger>
      <PopoverContent>
        {(titleProps) => (

              Popover Content

This is the popover content

        )}
      </PopoverContent>
  </Popover>

Tooltip changes:
 <Tooltip
      showArrow
      placement="right"
      content="I am a tooltip"
      classNames={{
-        base: "py-2 px-4 shadow-xl text-black bg-gradient-to-br from-white to-neutral-400",
-        arrow: "bg-neutral-400 dark:bg-white",
+        base: [
+          // the "before" pseudo element is now the popover' arrow
+          "before:bg-neutral-400 dark:before:bg-white",
+        ],
+        content: [ // now we need to use the "content" slot to actually modify the popover' content styles
+          "py-2 px-4 shadow-xl",
+          "text-black bg-gradient-to-br from-white to-neutral-400",
+        ],
      }}
    >
      <Button variant="flat">Hover me</Button>
</Tooltip>

Select changes:
 <Select
      items={users}
      label="Assigned to"
      className="max-w-xs"
      variant="bordered"
      classNames={{
        label: "group-data-[filled=true]:-translate-y-5",
        trigger: "min-h-unit-16",
        listboxWrapper: "max-h-[400px]",
      }}
      listboxProps={{
        itemClasses: {
          base: [
            "rounded-md",
            "text-default-500",
            "transition-opacity",
            "data-[hover=true]:text-foreground",
            "data-[hover=true]:bg-default-100",
            "dark:data-[hover=true]:bg-default-50",
            "data-[selectable=true]:focus:bg-default-50",
            "data-[pressed=true]:opacity-70",
            "data-[focus-visible=true]:ring-default-500",
          ],
        },
      }}
      popoverProps={{
        classNames: {
-          base: "p-0 border-small border-divider bg-background",
-          arrow: "bg-default-200",
+          base: "before:bg-default-200", // the before pseudo element controls the popover's arrow
+          content: "p-0 border-small border-divider bg-background", // now instead of the "base" slot we use the "content" slot
        },
      }}
      renderValue={(items) => {
        return items.map((item) => (

            <Avatar
              alt={item.data.name}
              className="flex-shrink-0"
              size="sm"
              src={item.data.avatar}
            />

              {item.data.name}
              ({item.data.email})

        ));
      }}
    >
      {(user) => (
        <SelectItem key={user.id} textValue={user.name}>

            <Avatar alt={user.name} className="flex-shrink-0" size="sm" src={user.avatar} />

              {user.name}
              {user.email}

        </SelectItem>
      )}
    </Select>
  );
}`;

Dropdown Changes
    <Dropdown
      showArrow
      classNames={{
-        base: "py-1 px-1 border border-default-200 bg-gradient-to-br from-white to-default-200 dark:from-default-50 dark:to-black",
-        arrow: "bg-default-200",
+        content: "py-1 px-1 border border-default-200 bg-gradient-to-br from-white to-default-200 dark:from-default-50 dark:to-black",  // now instead of the "base" slot we use the "content"
+        base: "before:bg-default-200",  // the before pseudo element controls the popover's arrow
      }}
    >

📝 Additional Information

@jrgarciadev can you tell me when the release of this version is planned?

Any ETA for release? Need range slider by next week or must go with 3rd party lib by then.

Hey @jrgarciadev, the new Autocomplete component looks awesome, but is there any chance we can have something like renderValue of the Select to render a custom selected values?
Thanks for the awesome work!

Hey @jrgarciadev, the new Autocomplete component looks awesome, but is there any chance we can have something like renderValue of the Select to render a custom selected values?
Thanks for the awesome work!

Hey @toxsick thanks!, we plan to add custom render value support later, once we include the multiple selection mode


Support Query.WhereIn(field, array-of-arrays)

Currently trying to write a sample, and this query fails:
Query query = citiesRef.WhereIn("Regions",
    new[] { new[] { "west_coast" }, new[] { "east_coast" } });

Error:
System.ArgumentException: Array values cannot directly contain other array values

(It may be worth trying to address #4981 and this at the same time.)


Unable to Install luisgen

ERR! Failed at PostInstall Script
Unable to install Luisgen in ubuntu (bionic beaver) 18.04
To Reproduce
Steps to reproduce the behavior:

sudo npm install luisgen -g

`vagrant@ubuntu-bionic:~$ sudo npm install luisgen -g
/usr/local/bin/luisgen -> /usr/local/lib/node_modules/luisgen/bin/luisgen.js

<EMAIL_ADDRESS>postinstall /usr/local/lib/node_modules/luisgen/node_modules/dotnet-2.0.0
node -e "/*PostInstall: Installs platform-specific .NET framework */try{require('./dist/app.js')}catch(e){}"

events.js:183
throw er; // Unhandled 'error' event
^
Error: spawn /usr/bin/node ENOENT
at _errnoException (util.js:1022:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
at onErrorNT (internal/child_process.js:372:16)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
npm ERR! Linux 4.15.0-23-generic
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "luisgen" "-g"
npm ERR! node v8.10.0
npm ERR! npm  v3.5.2
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>postinstall: node -e "/*PostInstall: Installs platform-specific .NET framework */try{require('./dist/app.js')}catch(e){}"
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script 'node -e "/*PostInstall: Installs platform-specific .NET framework */try{require('./dist/app.js')}catch(e){}"'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the dotnet-2.0.0 package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node -e "/*PostInstall: Installs platform-specific .NET framework */try{require('./dist/app.js')}catch(e){}"
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs dotnet-2.0.0
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls dotnet-2.0.0
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     /home/vagrant/npm-debug.log
`
Expected behavior
successful installation
Screenshots
N/A
Desktop (please complete the following information):

OS: Ubuntu 18.04 LTS

@tsuwandy - have we seen anything similar on dispatch?
@chrimc62 FYI

@tsuwandy @chrimc62 Yes. similar issue with dispatch.
`><EMAIL_ADDRESS>postinstall /usr/local/lib/node_modules/botdispatch

npm install -g dotnet-2.0.0

npm ERR! Linux 4.15.0-23-generic
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "-g" "dotnet-2.0.0"
npm ERR! node v8.10.0
npm ERR! npm  v3.5.2
npm ERR! path /home/vagrant/.npm/dotnet-2.0.0/1.4.4/package/package.json.1625320364
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall open
npm ERR! Error: EACCES: permission denied, open '/home/vagrant/.npm/dotnet-2.0.0/1.4.4/package/package.json.1625320364'
npm ERR!  { Error: EACCES: permission denied, open '/home/vagrant/.npm/dotnet-2.0.0/1.4.4/package/package.json.1625320364'
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'open',
npm ERR!   path: '/home/vagrant/.npm/dotnet-2.0.0/1.4.4/package/package.json.1625320364' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! Please include the following file with any support request:
npm ERR!     /usr/local/lib/node_modules/botdispatch/npm-debug.log
npm ERR! Linux 4.15.0-23-generic
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "-g" "botdispatch"
npm ERR! node v8.10.0
npm ERR! npm  v3.5.2
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>postinstall: npm install -g dotnet-2.0.0
npm ERR! Exit status 243
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script 'npm install -g dotnet-2.0.0'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the botdispatch package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     npm install -g dotnet-2.0.0
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs botdispatch
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls botdispatch
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     /home/vagrant/npm-debug.log

I was able to 'sudo npm install luisgen -g' on 16.04 (xenial xerus). I'm upgrading to 18.04 to see if I can repro.

Thanks @jwiley84 , I will temporarily switch to 16.04 (xenial xerus) , However it would be great to have it in the current LTS 18.04 bionic.

@jwiley84 the issue persists in xenial xerus as well,. any alternative steps that you could suggest?
`vagrant@ubuntu-xenial:/$ sudo npm install -g luisgen
/usr/local/bin/luisgen -> /usr/local/lib/node_modules/luisgen/bin/luisgen.js

<EMAIL_ADDRESS>postinstall /usr/local/lib/node_modules/luisgen/node_modules/dotnet-2.0.0
node -e "/*PostInstall: Installs platform-specific .NET framework */try{require('./dist/app.js')}catch(e){}"

events.js:167
throw er; // Unhandled 'error' event
^
Error: spawn /usr/local/bin/node ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:229:19)
at onErrorNT (internal/child_process.js:406:16)
at process._tickCallback (internal/process/next_tick.js:63:19)
Emitted 'error' event at:
at Process.ChildProcess._handle.onexit (internal/child_process.js:235:12)
at onErrorNT (internal/child_process.js:406:16)
at process._tickCallback (internal/process/next_tick.js:63:19)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>postinstall: node -e "/*PostInstall: Installs platform-specific .NET framework */try{require('./dist/app.js')}catch(e){}"
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/vagrant/.npm/_logs/2018-08-01T15_02_14_622Z-debug.log`

@ponarunkumar
@jwiley84 and I have used the command "sudo npm install luisgen -g" without being able to repro the issue
Going to investigate how else there may be discrepancies between the results you and @disophisis are having versus the ones jwiley & I are receiving

I have another idea. Investigating.

I am still investigating the matter, however, I believe the reason I ran into no issues using 'sudo npm install luisgen -g' on either my xenial or my bionic is because I was using dotnet 2.1. Further attempts to downgrade my dotnet to dotnet-2.0 and repro this have me running into a separate issue that will take a bit longer to correct ("no package dotnet-2.0.0 found" during installation). As soon as I am able to successfully install dotnet-2.0.0 and attempt another repro, I will update again.

Sorry, just noticed this thread.  @ponarunkumar, did you follow instructions on this page to pre-install .NET Core on Ubuntu?
https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x

@ponarunkumar
@jwiley84 and I have finally successfully repro'd the error you have gotten on 2 different Ubuntu servers:

one with updated .NET Core
one without

and have both received the same error.
Continuing to investigate further

@vishwacsena added
Discussion

notes: unable to install .NET Core SDK 2.0.0 on Ubuntu 18.04 because 2.0.0 is unavailable to 18.04
the error reads something along the lines of needing dotnet  core 2.0.0
however it does look like in install links that Tien provided, .NET Core 2.1.105+ SDK is available to Ubuntu 18.04

Thanks @Zerryth.
@chrimc62; @tsuwandy - the issue seems to be that we require 2.0.0 which does not support several linux distributions. Unless there is a hard dependency to 2.0.0, can we update both dispatch and luisgen to support the latest dotnet core v2.1.200? This would enable more customers to use the tools on a wider array of supported distributions.

@Zerryth, I just checked this page https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x#install-net-core-for-supported-red-hat-enterprise-linux-rhel-versions and it has links to install .NET Core 2.0 runtime/SDK.   Did you try using one of those .NET Core 2.0 links for Ubuntu 18.04? SDK is actually not needed, only the runtime.   I'll try updating to .NET Core 2.1 regardless.

@tsuwandy regarding runtime - ah, I see.
Looking into it, it looks like Ubuntu 18.04 is avaiable on .NET Core Runtimes 2.0.7+ (i.e. not 2.0.5, 2.0.6)--if that matters at all.
In any case, just now I went ahead and installed Runtime 2.0.7 and then afterwards tried installing .NET SDK 2.1.105 (already had it) and got "Failed at the<EMAIL_ADDRESS>postinstall script 'node -e ...." error
installs/upgrades + error below
ashleyho@AshleyHoUbuntu2:~$ wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
ashleyho@AshleyHoUbuntu2:~$ sudo dpkg -i packages-microsoft-prod.deb
(Reading database ... 98515 files and directories currently installed.)
Preparing to unpack packages-microsoft-prod.deb ...
Unpacking packages-microsoft-prod (1.0-ubuntu18.04.1) over (1.0-ubuntu18.04.1) ...
Setting up packages-microsoft-prod (1.0-ubuntu18.04.1) ...
ashleyho@AshleyHoUbuntu2:~$ sudo apt-get install apt-transport-https
Reading package lists... Done
Building dependency tree
Reading state information... Done
apt-transport-https is already the newest version (1.6.3).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
ashleyho@AshleyHoUbuntu2:~$ sudo apt-get update
Hit:1 https://packages.microsoft.com/repos/microsoft-ubuntu-bionic-prod bionic InRelease
Hit:2 http://azure.archive.ubuntu.com/ubuntu bionic InRelease
Get:3 http://azure.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:4 http://azure.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Get:5 http://azure.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [277 kB]
Get:6 http://azure.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [157 kB]
Get:7 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]
Fetched 680 kB in 1s (892 kB/s)
Reading package lists... Done
ashleyho@AshleyHoUbuntu2:~$ sudo apt-get install dotnet-hosting-2.0.7
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  dotnet-hosting-2.0.7
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 2336 B of archives.
After this operation, 8192 B of additional disk space will be used.
Get:1 https://packages.microsoft.com/repos/microsoft-ubuntu-bionic-prod bionic/main amd64 dotnet-hosting-2.0.7 amd64 2.0.7-1 [2336 B]
Fetched 2336 B in 0s (10.4 kB/s)
Selecting previously unselected package dotnet-hosting-2.0.7.
(Reading database ... 98515 files and directories currently installed.)
Preparing to unpack .../dotnet-hosting-2.0.7_2.0.7-1_amd64.deb ...
Unpacking dotnet-hosting-2.0.7 (2.0.7-1) ...
Setting up dotnet-hosting-2.0.7 (2.0.7-1) ...
ashleyho@AshleyHoUbuntu2:~$ sudo apt-get install apt-transport-https
Reading package lists... Done
Building dependency tree
Reading state information... Done
apt-transport-https is already the newest version (1.6.3).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
ashleyho@AshleyHoUbuntu2:~$ sudo apt-get  update
Hit:1 https://packages.microsoft.com/repos/microsoft-ubuntu-bionic-prod bionic InRelease
Hit:2 http://azure.archive.ubuntu.com/ubuntu bionic InRelease
Hit:3 http://azure.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:4 http://azure.archive.ubuntu.com/ubuntu bionic-backports InRelease
Hit:5 http://security.ubuntu.com/ubuntu bionic-security InRelease
Reading package lists... Done
ashleyho@AshleyHoUbuntu2:~$ sudo apt-get install dotnet-sdk-2.1.105
Reading package lists... Done
Building dependency tree
Reading state information... Done
dotnet-sdk-2.1.105 is already the newest version (2.1.105-1).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
ashleyho@AshleyHoUbuntu2:~$ sudo npm install luisgen -g
/usr/local/bin/luisgen -> /usr/local/lib/node_modules/luisgen/bin/luisgen.js                                                                                ░░░╟
                                                                                ░░░╟
><EMAIL_ADDRESS>postinstall /usr/local/lib/node_modules/luisgen/node_modules/dotnet-2.0.0
> node -e "/*PostInstall: Installs platform-specific .NET framework */try{require('./dist/app.js')}catch(e){}"

events.js:183                                                                                ░░░╟
      throw er; // Unhandled 'error' event
      ^

Error: spawn /usr/bin/node ENOENT
    at _errnoException (util.js:1022:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
    at onErrorNT (internal/child_process.js:372:16)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
npm ERR! Linux 4.15.0-1018-azure                                                                                ░░░╟
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "luisgen" "-g"
npm ERR! node v8.10.0
npm ERR! npm  v3.5.2
npm ERR! code ELIFECYCLE

npm ERR<EMAIL_ADDRESS>postinstall: `node -e "/*PostInstall: Installs platform-specific .NET framework */try{require('./dist/app.js')}catch(e){}"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script 'node -e "/*PostInstall: Installs platform-specific .NET framework */try{require('./dist/app.js')}catch(e){}"'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the dotnet-2.0.0 package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node -e "/*PostInstall: Installs platform-specific .NET framework */try{require('./dist/app.js')}catch(e){}"
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs dotnet-2.0.0
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls dotnet-2.0.0
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/ashleyho/npm-debug.log

Blocked on .net core supporting this specific distro

@tsuwandy; @chrimc62 ; @Zerryth  - can this be resolved? AFAIK, we just need to update readme for 2.1 install instructions - right?

Yes, we have now switched to .NET Core 2.1 for both LuisGen and Dispatch CLI.   .NET Core 2.1 is supported in Ubuntu 18.04 distro.  @ponarunkumar, could you try again and reactivate otherwise?  I have verified that latest Dispatch works in Ubuntu 18.04 myself.


xlnx_psttc_timer driver has an imprecise z_clock_set_timeout() implementation

The xlnx_psttc_timer driver used in qemu_cortex_r5 has a sloppy z_clock_set_timeout() implementation.  If asked to set a timeout for N ticks in the future, it simply adds N ticks worth of counter cycles to the current time and schedules an interrupt for that time.
This is incorrect, as any fractional tick that may have elapsed at the moment of the call will get lost, leading to timekeeping errors over time.  The driver needs to announce ticks as close to their natural "tick boundaries" as possible, and not lose precision.
See the documentation for z_clock_set_timeout() in include/drivers/timer/system_timer.h and doc/reference/kernel/timing/clocks.rst, and also the implementation of the tick rounding logic in other timer drivers (nrf_rtc_timer, hpet and cortex_m_systick are all very mature).

See notes in a patch in #29296 . It appears that one reason for having a timer driver which lost time like this is that the clock configuration for this qemu board was off: it simply wasn't able to keep up with timer interrupts, which were taking as much as a full tick to complete.  With a "correct" timer driver that loss would be detected (correctly) as late tick arrivals, which would throw off timing.


Fix 9.x osx-arm64

The 9.x branch for osx-arm64 was accidentally built for x86_64, hopefully this fixes it (but I'm still checking).

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


Update react admin areas (CampaignAdmin / AssetAdmin) support namespaced models

At the moment we do quite a lot of hard-coding of PHP model objects within react front-end. When model names are namespaced, or even changed, the front end is not able to adequately cope with this change.
With the introduction of namespaces, also, it is no longer possible to use a FQN for any class as a javascript property.
We will need to inject the model class into the front end via getClientConfig(), and respected by react.

Pull request at https://github.com/silverstripe/silverstripe-framework/pull/5731


[EUWE] Fix actions' icons of policy events

This is backported https://github.com/ManageIQ/manageiq-ui-classic/pull/754
https://bugzilla.redhat.com/show_bug.cgi?id=1436228

@martinpovolny please approve if this is good to go


Unify delta xds WatchedResources.ResourcesNames maintainence

(This is used to request new product features, please visit https://discuss.istio.io for questions on using Istio)
Describe the feature request
Now the resourceNames for delta xds is not only updated in xds request handling but also in pushing.
We can see con.proxy.Lock is widely used, it can easily lead to deadlock. And even very difficult for us to do a little bit of refactoring.
cc @ramaraochavali @howardjohn Want to know your idea first
Describe alternatives you've considered
Affected product area (please put an X in all that apply)
[ ] Ambient
[ ] Docs
[ ] Dual Stack
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Affected features (please put an X in all that apply)
[ ] Multi Cluster
[ ] Virtual Machine
[ ] Multi Control Plane
Additional context

What do you mean by "unify"? Can share more details on your idea?

By unify i mean, r/w on WatchedResources could probably be put together in one place.

That makes sense


With fading, root motion does not correctly extract local position by rotation accumulator

Tested versions
Reproducible in any 4.x
System information
Godot v4.3.stable - Windows 10.0.19044 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3080 (NVIDIA; <IP_ADDRESS>12) - AMD Ryzen 9 5950X 16-Core Processor (32 Threads)
Issue description
The root motion accumulator system, while a huge step up from 3.5, is still unable to address crossfading.
The problem
When a character is crossfading from one animation to another, they will often transition in such a way that undesired diagonal or negative movement is created from using the blended root rotation accumulator of the two animations against their blended root motion. Practically speaking, only a root-aligned movement vector needs to be considered.
Allow me to explain.
I have a 90 degree walk start, in two directions.

Left
Right

Taking the right animation for instance, because the animation ends with the root motion accumulator facing -X, while my normal walk cycle starts facing -Y (+Z in Godot), what ends up happening is diagonal drift when xfading the two.
To demonstrate this, I have slowed down the start animation with a TimeScale while keeping the walk cycle at normal speed to exaggerate the effect of this drift.
No xfade:
https://github.com/user-attachments/assets/310bcf7d-38bb-48f8-9b5f-323121856774
0.2 xfade:
https://github.com/user-attachments/assets/f0ffa2f5-63e2-4818-a7c9-7eeb49df96d6
Here is how I handle my root motion, for my Auto-Rig Pro character in Blender for a root bone with a Z-up, Y-forward orientation.
root_movement = $AnimationTree.get_root_motion_position() / delta
root_rotation = $AnimationTree.get_root_motion_rotation()

if abs(root_rotation.get_euler().z) > 0:
	rotate_y(root_rotation.get_euler().z)

# root direction in animation space
var root_rotation_accumulator = animation_tree.get_root_motion_rotation_accumulator()

# rotating the movement vector to be in root's local space
var root_aligned_movement_vector = -root_movement.rotated(Vector3.UP, -root_rotation_accumulator.get_euler().y)

# rotating vector to be in global space
var vel: Vector3 = global_basis.get_rotation_quaternion() * root_aligned_movement_vector

DebugDraw3D.draw_line(global_position, global_position + vel, Color.RED)

I came up with this independently of the documentation but from my testing should yield an identical result to the documented method.
The solution

Either correctly interpret, or let us define the forward direction of the root bone in AnimationMixer.

Since the current get_root_motion_position()/get_root_motion_rotation() operates under "global" space,

Provide a way to get the neutralized root motion position and rotation vectors in the LOCAL space of the root bone, so that crossfading becomes possible without errors. This would mean that for a simple animation like my turn, each frame of get_root_motion_local_position would be largely towards the bone's forward axis, and each get_root_motion_local_rotation would be entirely on the bone's up axis.

Using these "local" values in root motion code would allow for identical results with smooth crossfades. In my mind, this seems to be the most straightforward way to address this, @TokageItLab might have a better idea.
Steps to reproduce
Download the project, play it, press WASD to move at a 90 degree angle from the facing direction and observe the drift.
Then, open AnimationTree > move > start and change the fadeout time to 0. Try again, and observe lack of drift.
Minimal reproduction project (MRP)
root_motion_drift_MRP.zip

I remember this matter being pointed out in the past as another issue. The problem is simpler: there is no actual Transform there in root motion dwlta.
Consider the case of a 90deg rotation without a move, the actual total delta of the root motion is short of 90deg due to the crossfade.
It is the same for translation: if the root motion moves 1m and there is a crossfade, the total actual delta will be less than 1m.
I wonder if other game engines handle it correctly. If so, there may be a solution by making some changes to the delta calculation process, but I don't know, I haven't researched it in detail. It would be helpful to make a survey comparing the root motion system in several engine/environments.

Consider the case of a 90deg rotation without a move, the actual total delta of the root motion is short of 90deg due to the crossfade.
It is the same for translation: if the root motion moves 1m and there is a crossfade, the total actual delta will be less than 1m.

Even with duration accounted for and a perfect handoff via xfade, we would still get drift. Consider this:

Even though the blend should treat the crossfade region as the exact same thing while keeping movement vector intact, it doesn't, because:
with get_root_motion returning position and rotation world space:

animation A's root motion accumulator points to -X while animation B's root motion accumulator points to +Z, and
A's root motion position delta returns (-0.1, 0, 0) and B's returns (0,0,0.1) for the entire duration of the crossfade, with our only way of neutralizing these two being an already skewed (blended) root motion accumulator.

So, we would move diagonally, between +Z and -X, during the crossfade. That's the issue.
Accumulator was a step in the right direction but all that was really needed was just returning a movement delta that treated the root bone's axes as (0,0,0).

I see the essence of the problem now.
Node3D's transform performs rotation after position as specification (also consistent with glTF), but CharacterBody's velocity performs position after rotation, so it is necessary to get the local position by accumulator.
However, if there is fading, the sum of the root motion delta and the root motion accumulator delta will be different, this is exactly what the problem is.
I am not sure if this problem can be solved by simply calculating the delta of the root motion position in local space, taking into account the rotation, but I will investigate later.

I am not sure if this problem can be solved by simply calculating the delta of the root motion position in local space before blending, taking into account the rotation, but I will investigate later.

I appreciate it. Please test against my minimal reproduction project as this problem is a little tricky to highlight in ordinary use.

I sent https://github.com/godotengine/godot/pull/99394, please check if it helps and calculates correctly.


Disable Sort for multi select

How to get list of data from multi select dropdown  in same order in which user chooses .
Currently list gets sorted ,how to override / disable this sort functionality

@manasarora119
You can use the sortComparator input to pass a custom sorting function that is called when sorting the selected values.
Here is a stackblitz example

@ViktorSlavov  ,
Great   , it works fine .
Thanks for your quick response


feat: stop service gracefully

close: #18

merge this first, although the issue is not solved(corruption on metad file remains :()


Normal write does not require response

Hi, little weird thing I am experiencing. Might just be me misunderstanding things, but I thought the difference between write  and writeWithoutResponse  would be that in the first case, need_rsp would be true while in the latter case it would be false. However, this appears not to be the case:
Relevant portion of the NativeScript code
} else if (result === 'write 1') {
	this._bluetooth
		.write({
			peripheralUUID: context.peripheral.UUID,
			serviceUUID: service.UUID,
			characteristicUUID: characteristic.UUID,
			value: 1
		})
		.then(
			result => {
				context.set('feedback', `value written: ${result}`);
				context.set('feedbackTimestamp', this._getTimestamp());
			},
			errorMsg => {
				context.set('feedback', errorMsg);
				context.set('feedbackTimestamp', this._getTimestamp());
			}
		);
} else if (result === 'write arraybuffer') {
	console.log('about to write ArrayBuffer');
	const bufView = new Uint8Array([97, 114, 114, 97, 121, 98, 117, 102, 102, 101, 114]); // str = arraybuffer
	this._bluetooth
		.writeWithoutResponse({
			peripheralUUID: context.peripheral.UUID,
			serviceUUID: service.UUID,
			characteristicUUID: characteristic.UUID,
			value: bufView.buffer
		})
		.then(
			() => {
				context.set('feedback', 'value written');
				context.set('feedbackTimestamp', this._getTimestamp());
			},
			errorMsg => {
				context.set('feedback', errorMsg);
				context.set('feedbackTimestamp', this._getTimestamp());
			}
		);
}

ESP-IDF (Bluetooth server) output:
I (7840866) GATTS_TABLE_DEMO: GATT_WRITE_EVT, handle = 42, value len = 1, need_rsp = false, value :
I (7840876) GATTS_TABLE_DEMO: 01
I (7847436) GATTS_TABLE_DEMO: GATT_WRITE_EVT, handle = 42, value len = 11, need_rsp = false, value :
I (7847436) GATTS_TABLE_DEMO: 61 72 72 61 79 62 75 66 66 65 72

Is this me misunderstanding the difference between write and writeWithoutResponse, or am I otherwise doing something wrong here?

I dont know about your server code nor really either about the need_rsp thing.
What i can tell you is that i use both methods with different ble devices and they trigger the correct behavior on the ble device with the correct acknowledge(with write)
Honestly and sadly i cant help.you with much more that that :(. You can look at the code to see if you see something weird (i am saying it works "for me")


The word 'display' was misspelled

The word 'display' was misspelled in the "Fonts on the Client Computer" section

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

#sign-off
Thanks, @JoshGer !

Correction confirmed. Thanks.


it should be simple to start setup with docker-compose up

It should be simple to start lnd using docker-compose up and have everything "just work" however some services fail.  we could also split out a seperate yml file for use with litecoin in case someone wants to choose which type of node they run.  So for example, if someone did docker-compose up this would just run the btc setup, but if instead they did docker-compose -f docker-compose.ltc.yml up then it would run just litecoin or both perhaps.  splitting out a seperate yml file would also make testing and development simpler imo.

I put quite some effort into a project which can generate a simnet cluster which works out-of-the-box:
https://github.com/darwin/simverse
When you generate default one via ./sv create you can look at generated docker-compose.yml and related docker files and scripts under _workspace/default. This could be some inspiration for implementing refresh of docker support here.

Fixed by #2699.


Missing turbine blocks on 1.8.9?

I'm running on 1.8.9 and it seems I cannot find turbine blocks?
Version : Advanced Generators <IP_ADDRESS> (MC 1.8.9)

Turn off hiding block with missing items in JEI - they works but models and textures are not finished.


Making init dictionaries thread-safe to prevent issues with non-centralized startup

Add TODO and formatting.

@tellarin,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


ng new xxx fails silently

Developing on Windows 10
Running all commands from cmd with administrator privileges
ng new xxx-app gets stuck, and nothing happens.
run ng new xxx-app --d and get what seems to be a good list of tasks... But since the first time , I have been unable to run the command and get results. It just gets stuck, but can terminate wit ctr-C
run ng new xxx-app --v and get the messages attached

File attached with results of verbose
ngLog2.txt

run ng -v and the result is

C:\D>ng -v
angular-cli: 1.0.0-beta.10
node: 5.7.0
os: win32 x64

deleted all modules in users npm and npm-cache directories at C:\Users\XXXXX\AppData\Roaming\npm and C:\Users\XXXXX\AppData\Roaming\npm-cache
and reinstalled angular-cli, with same behavior.
Sometimes running these commands just get stuck.

I can't reproduce this myself, but from your log this looks network related. Does that give you any clue?

Closing as inactive.


Create truenas_jail_nossl

Hi, i have sent you my file. Most of the command can be put into a batch file and the installer is ready

The intention was wo have an internal http only server, which can be addressed from outside via an https proxy on opensense.
this is why there is no ssl config included.


Using with ReactiveAggregate loads ALL Docs in Pub

Hi!
First off, this package is amazing! Really eliminates a lot of the boilerplate code you'd have to use to display tabular data in Meteor with a bunch of options.
This seemed to work almost instantly with regular pub/sub fn for a single collection. I verified in MiniMongo that I only had page # of Docs being loaded at a time.
However, I want to use a custom pub fn to display related data. tutorial shows to use publishComposite . This is a great plugin that I use everywhere, however it states to not use when you need a lot of documents.
Thus, I wanted to see if this lib would work with ReactiveAggregate. It actually worked on first try!
However, I noticed it slowed things down. Upon inspecting MiniMongo, I saw that ALL my Documents were being DLd from the Server everytime pub fn got hit. So, it's like like the page fn doesn't work with ReactiveAggregate, any ideas?
Any possible workarounds, perhaps using PublishComposite might work
Thanks!

Ah, using the ids param and then applying $match: {         _id: {             $in: ids         }     }
in the pub fn seemed to do the trick


Define basics for collecting Iceberg metadata for the current snapshot

Dear Gobblin maintainers,
Please accept this PR. I understand that it will not be reviewed until I have checked off all the steps below!
JIRA

[ ] My PR addresses the following Gobblin JIRA issues and references them in the PR title. For example, "[GOBBLIN-XXX] My Gobblin PR"

https://issues.apache.org/jira/browse/GOBBLIN-1707 - "Add Iceberg support to DistCp"

Description

[ ] Here are some details about my PR, including screenshots (if applicable):

Toward eventual full DistCp Iceberg support: walk an iceberg's metadata to determine all physical file paths for both metadata and actual data.  At present these are the full contents; subsequently we'll calculate a delta against previously copied data.
Tests

[ ] My PR adds the following unit tests OR does not need testing for this extremely good reason:

I tested manually, and working now to create a test iceberg that I could check into src/test/resources, which has no PII.  that would be a fast follow along w/ the test, if I'm unable to generate that before committing this (to share code and unblock collaborators).
Commits

[ ] My commits all reference JIRA issues in their subject lines, and I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "How to write a good git commit message":

Subject is separated from body by a blank line
Subject is limited to 50 characters
Subject does not end with a period
Subject uses the imperative mood ("add", not "adding")
Body wraps at 72 characters
Body explains "what" and "why", not "how"

Codecov Report

Merging #3559 (47d5f7f) into master (d0e530a) will increase coverage by 2.53%.
The diff coverage is 0.00%.

@@             Coverage Diff              @@
##             master    #3559      +/-   ##
============================================
+ Coverage     46.81%   49.34%   +2.53%
+ Complexity    10514     9048    -1466
============================================
  Files          2095     1718     -377
  Lines         81945    66404   -15541
  Branches       9129     7592    -1537
============================================
- Hits          38361    32767    -5594
+ Misses        40040    30549    -9491
+ Partials       3544     3088     -456

Impacted Files
Coverage Δ

...management/copy/iceberg/IcebergCatalogFactory.java
0.00% <0.00%> (ø)

...ta/management/copy/iceberg/IcebergHiveCatalog.java
0.00% <0.00%> (ø)

...a/management/copy/iceberg/IcebergSnapshotInfo.java
0.00% <0.00%> (ø)

...lin/data/management/copy/iceberg/IcebergTable.java
0.00% <0.00%> (ø)

...e/gobblin/service/monitoring/GitConfigMonitor.java
95.23% <0.00%> (-4.77%)
:arrow_down:

...a/org/apache/gobblin/cluster/GobblinHelixTask.java
81.72% <0.00%> (-2.16%)
:arrow_down:

.../modules/scheduler/GobblinServiceJobScheduler.java
64.11% <0.00%> (-1.44%)
:arrow_down:

...main/java/org/apache/gobblin/util/HadoopUtils.java
29.54% <0.00%> (-0.33%)
:arrow_down:

...anagement/copy/replication/ConfigBasedDataset.java
68.87% <0.00%> (ø)

...metrics/reporter/KeyValueMetricObjectReporter.java

... and 382 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


E2E GitHub action

Create GitHub Action to run E2E tests
Fix #30

Minor change
I've noticed a warning produced when Run actions/upload-artifact@v3 is executed, check whether this is intended

Warn: "No files were found with the provided path: playwright-report/. No artifacts will be uploaded."

I have removed this step


⚠ Spryr has degraded performance

In 7fa0431, Spryr (https://spryr.com) experienced degraded performance:

HTTP code: 200
Response time: 10084 ms

Resolved: Spryr performance has improved in da78ad7 after 7 minutes.


community: Add support for SAP HANA Vector hnsw index creation

Issue: Added support for creating indexes in the SAP HANA Vector engine.
Changes:

Introduced a new function create_hnsw_index in hanavector.py that enables the creation of indexes for SAP HANA Vector.
Added integration tests for the index creation function to ensure functionality.
Updated the documentation to reflect the new index creation feature, including examples and output from the notebook.
Fix the operator issue in  _process_filter_object function and change the array argument to a placeholder in the similarity search SQL statement.

@baskaryan Could you please have a look at this PR, in case of any problems please let me know:)

close this pull request, will open again.


Update to Contributing.md Examples

Not sure if this is the desired instructions but when submitting my last example realized I added code to the examples.ts for it to appear in the playground and that instruction is not mention in the contribution.md

Thanks for this!