Integration with Keycloak / Unable to read data of configured administratorGroupName camunda-admin

We got error after upgrade on Keycloak 12.04 and Camunda 7.15 and using newer plugin version (GitHub - camunda-community-hub/camunda-bpm-identity-keycloak: Camunda Keycloak Identity Provider Plugin):
…
‘processEngineFactoryBean’: FactoryBean threw exception on object creation; nested exception is org.camunda.bpm.engine.impl.identity.IdentityProviderException: Unable to read data of configured administratorGroupName camunda-admin
…
With new plugin there is property: plugin.identity.keycloak.administratorGroupName=camunda-admin
If I remove property Camunda will start, but another error will occur later.
It is interesting if we use Keycloak with Docker error does not happen. But in production we have Keycloak without Docker. Both Keycloaks have same version and camunda-client settings are same.
There are  two more similar questions on Camunda forum and both are not answered:

https://forum.camunda.org/t/integration-with-keycloak/28318
https://forum.camunda.org/t/camunda-and-keaycloak-users-integration/27937

Below is my answer to author from above link:
We have 2 configuration files, as we have 2 profiles: one with Basic authentication which currently works in production and another using Keycloak. Older Camunda-Keycloak plugin was working without issues using Keycloak 9 and Camunda 7.11. We use properties instead yaml. We use HTTPS and and we have configured Proxy with Apache. We got addtitonal issues with CORS and Preflight/MixedContent as in production we have now Keycloak on diferrent domain. For this reason I made some additional changes in properties and httpd file to fix CORS and MixedContent errors. Fix was done when using basic authentication or Keycloak with docker. As with Keycloak without docker (downloaded on Ubuntu) Camunda does not even start if administratorGroupName=camunda-admin is set.
Identity provider classes and properties are copied from github - /camunda-community-hub/camunda-bpm-identity-keycloak.
Current error (“Unable to read data of configured administratorGroupName camunda-admin”) did not appear when we tested with Keycloak 12.04 installed with Docker. Problem occurs with Keycloak 12.04 installed without Docker on Ubuntu. Keycloak database I have exported from Keycloak 9 using script:
sudo docker exec keycloak-ecl /opt/jboss/keycloak/bin/standalone.sh -Djboss.socket.binding.port-offset=100 -Dkeycloak.migration.action=export -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.realmName=my-realm -Dkeycloak.migration.usersExportStrategy=REALM_FILE -Dkeycloak.migration.file=/opt/jboss/keycloak/imports/my-realm.json
I do not know if it could cause some kind of an issue. In Keycloak UI it looks all identical.
camunda-admin group is configured in Keycloak and same setting was working with older version of plugin.
Client secret is correct. One can see in logs when it fails.
stack_trace_camunda_error.txt
config_files.txt

You clearly get a HTTP 403 Forbidden:
Caused by: org.springframework.web.client.HttpClientErrorException$Forbidden: 403 Forbidden: [{"error":"unknown_error"}]

Are you sure that within your client camunda-ecl you have service accounts enabled and you have added client roles for realm-management as described ( query-groups, query-users, view-users)??

Btw: the configuration property administratorGroupName is not new, it existed since the beginning. Your error has nothing to do with that configuration, you are missing general rights to access Keycloak's REST API and query users and groups. Which might be a problem of your Keycloak setup.

Setting
logging.level.org.camunda.bpm.extension.keycloak: DEBUG
logging.level.org.springframework.web.client.RestTemplate: DEBUG

might give you further debug info on the queries sent to Keycloak.

You clearly get a HTTP 403 Forbidden:
Caused by: org.springframework.web.client.HttpClientErrorException$Forbidden: 403 Forbidden: [{"error":"unknown_error"}]

Are you sure that within your client camunda-ecl you have service accounts enabled and you have added client roles for realm-management as described ( query-groups, query-users, view-users)??

Roles are assigned. Before we used realm roles. Recently we changed on client roles. So both are there. Service account is enabled.

Btw: the configuration property administratorGroupName is not new, it existed since the beginning. Your error has nothing to do with that configuration, you are missing general rights to access Keycloak's REST API and query users and groups. Which might be a problem of your Keycloak setup.

Before we used the camunda-keycloak plugin with Keycloak 9 and Camunda 7.11. It was configured by another person who is not working with us.
Plugin had much less defined properties and java classes were little different. I assume that he took the version which was before present on github.
And "plugin.identity.keycloak.administratorGroupName=camunda-admin" was not present in application.properties. But everything was working.
After upgrading to Keycloak 12.04 and Camunda 7.15 this plugin stopped working, so we decided to replace it with one which is currently available on github.
I noticed that if I comment "# plugin.identity.keycloak.administratorGroupName=camunda-admin" Camunda will start without error, but another error happens later.
As you said, to me it also looks like there is some problem with Keycloak. As I wrote on the Camunda forum. When Camunda points to Keycloak 12.04 installed with Docker(Red Hat/jboss) it works. When it points to Keycloak 12.04 without Docker downloaded on Ubuntu we get: "Unable to read data of configured administratorGroupName camunda-admin".
The Keycloak database/realm on "Keycloak 12.04 downloaded on Ubuntu" was exported/imported from Keycloak 9 using a script from the command line. I do not know if it could cause some issues. In Keycloak UI I did not notice some relevant difference.

Interesting - you have "camunda-admin" as role? Hmm... What's the reason for this and what are you trying to achieve with that role?
The Keycloak Identity Provider requires the following:

It must have the rights to read users and groups of your respective realm.
It reads users and groups form your realm. It does not read roles.
If you configure the parameter administratorGroupName=camunda-admin it requires a group camunda-admin

You clearly have no rights to access the respective REST API endpoint URL of Keycloak and according to that something in your configuration is wrong.
If you can access Keycloak in a Docker Image, but you can't access Keycloak running the same configuration elsewhere, you should check the connection between Camunda and the other Keycloak instance. Furthermore: is the setup of Keycloak really exactly identical?? Or are there some basic setup parameters in your Keycloak standlone instance which require more attention?

Setting
logging.level.org.camunda.bpm.extension.keycloak: DEBUG
logging.level.org.springframework.web.client.RestTemplate: DEBUG

might give you further debug info on the queries sent to Keycloak.

I added it to application.properties and now we get a few additional lines in the logs:
[DEBUG] 2021-08-04 08:47:02,409 org.springframework.web.client.RestTemplate - HTTP GET https://MY_KEYCLOAK_SERVER/auth/realms/ecl-realm/.well-known/openid-configuration
[DEBUG] 2021-08-04 08:47:02,468 org.springframework.web.client.RestTemplate - Accept=[application/json, application/*+json]
[DEBUG] 2021-08-04 08:47:03,082 org.springframework.web.client.RestTemplate - Response 200 OK
[DEBUG] 2021-08-04 08:47:03,104 org.springframework.web.client.RestTemplate - Reading to [java.util.Map<java.lang.String, java.lang.Object>]
...
[INFO ] 2021-08-04 08:47:05,686 org.camunda.bpm.extension.keycloak - KEYCLOAK-01001 PLUGIN KeycloakIdentityProvider activated on process engine default
...
[INFO ] 2021-08-04 08:47:19,897 org.camunda.bpm.spring.boot - STARTER-SB016 Skip initial filter creation, the filter with this name already exists: All tasks
[DEBUG] 2021-08-04 08:47:19,949 org.camunda.bpm.extension.keycloak.rest.KeycloakRestTemplate - HTTP POST https://MY_KEYCLOAK_SERVER/auth/realms/ecl-realm/protocol/openid-connect/token
[DEBUG] 2021-08-04 08:47:19,952 org.camunda.bpm.extension.keycloak.rest.KeycloakRestTemplate - Accept=[text/plain, application/json, application/+json, /]
[DEBUG] 2021-08-04 08:47:19,957 org.camunda.bpm.extension.keycloak.rest.KeycloakRestTemplate - Writing [client_id=camunda-ecl&client_secret=MY_SECRET&grant_type=client_credentials] as "application/x-www-form-urlencoded;charset=UTF-8"
[DEBUG] 2021-08-04 08:47:20,209 org.camunda.bpm.extension.keycloak.rest.KeycloakRestTemplate - Response 200 OK
[DEBUG] 2021-08-04 08:47:20,211 org.camunda.bpm.extension.keycloak.rest.KeycloakRestTemplate - Reading to [java.lang.String] as "application/json"
[DEBUG] 2021-08-04 08:47:20,308 org.camunda.bpm.extension.keycloak.rest.KeycloakRestTemplate - HTTP GET https://MY_KEYCLOAK_SERVER/auth/admin/realms/ecl-realm/group-by-path/camunda-admin
[DEBUG] 2021-08-04 08:47:20,309 org.camunda.bpm.extension.keycloak.rest.KeycloakRestTemplate - Accept=[text/plain, application/json, application/+json, /]
[DEBUG] 2021-08-04 08:47:20,325 org.camunda.bpm.extension.keycloak.rest.KeycloakRestTemplate - Response 403 FORBIDDEN
[DEBUG] 2021-08-04 08:47:20,344 org.camunda.bpm.extension.keycloak.rest.KeycloakRestTemplate - HTTP GET https://MY_KEYCLOAK_SERVER/auth/admin/realms/ecl-realm/groups?search=camunda-admin
[DEBUG] 2021-08-04 08:47:20,345 org.camunda.bpm.extension.keycloak.rest.KeycloakRestTemplate - Accept=[text/plain, application/json, application/*+json, /]
[DEBUG] 2021-08-04 08:47:20,354 org.camunda.bpm.extension.keycloak.rest.KeycloakRestTemplate - Response 403 FORBIDDEN
[WARN ] 2021-08-04 08:47:20,359 org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.camunda.bpm.spring.boot.starter.SpringBootProcessApplication$WebApplicationConfiguration': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.camunda.bpm.spring.boot.starter.SpringBootProcessApplication': Unsatisfied dependency expressed through field 'processEngine'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'processEngineFactoryBean': FactoryBean threw exception on object creation; nested exception is org.camunda.bpm.engine.impl.identity.IdentityProviderException: Unable to read data of configured administratorGroupName camunda-admin
....
Caused by: org.springframework.web.client.HttpClientErrorException$Forbidden: 403 Forbidden: [{"error":"unknown_error"}]
...

You successfully get a token. You are not allowed to query groups. As you can see the Identity Provider tries several ways to get information of the group camunda-admin, but all request get a response "403 FORBIDDEN". This must be due to your Keycloak configuration.

What happens if you give your client the roles query-users, view-users, query-groups for realm-management (as described in the documentation)?

Interesting - you have "camunda-admin" as role? Hmm... What's the reason for this and what are you trying to achieve with that role?
The Keycloak Identity Provider requires the following:

It must have the rights to read users and groups of your respective realm.
It reads users and groups form your realm. It does not read roles.
If you configure the parameter administratorGroupName=camunda-admin it requires a group camunda-admin

You clearly have no rights to access the respective REST API endpoint URL of Keycloak and according to that something in your configuration is wrong.
If you can access Keycloak in a Docker Image, but you can't access Keycloak running the same configuration elsewhere, you should check the connection between Camunda and the other Keycloak instance. Furthermore: is the setup of Keycloak really exactly identical?? Or are there some basic setup parameters in your Keycloak standlone instance which require more attention?

The camunda-admin role existed before I came to work on the project. It is configured by a person who is not working with us any more. In the current configuration the camunda-admin group has a mapped role camunda-admin. Role camunda-admin as you have seen is assigned to camunda-ecl client under Service Account.
Users who access camunda from frontend applications also have a camunda-admin role as they are members of the camunda-admin group. So far it was working with an older version of the camunda-keycloak plugin. I noticed with the old version of the plugin if I removed camunda-admin role from the Service Account I got an error.
Setting of the Keycloak standalone instance was done by my colleague. He is now on vacation until next week. I remember that he created user admin and some steps which were not needed to do using docker.
I could also look at Keycloak standalone instance. Which file will be relevant to check?

What happens if you give your client the roles query-users, view-users, query-groups for realm-management (as described in the documentation)?

I sent the screenshot above. Realm roles:  query-users, view-users, query-groups are also assigned as Effective roles to camunda-ecl client Service Account.

It may be relevant to mention that last we have 403 as CSRF was not disabled.
[DEBUG] 2021-07-20 14:52:13,174 org.springframework.security.web.session.SessionManagementFilter - Request requested invalid session id 1F50FA4A4E3CF29AEDEB0CE26BD74D53
[DEBUG] 2021-07-20 14:52:13,174 org.springframework.security.web.csrf.CsrfFilter - Invalid CSRF token found for http://MY_SERVER/camunda-ecl/rest/process-definition/key/Process_Controls/start
[DEBUG] 2021-07-20 14:52:13,177 org.springframework.security.web.access.AccessDeniedHandlerImpl - Responding with 403 status code

It may be also relevant to add. Inside of Camunda container I have found in camunda-ecl-engine.log:
[filterName=All tasks], MY_DOMAIN.camunda.config.plugin.KeycloakIdentityProvider@6731787b, disableDeploymentResourcePattern, eventPublisherPlugin, ConnectProcessEnginePlugin, SpringBootSpinProcessEnginePlugin]' activated on process engine 'default'
[ERROR] 2021-08-04 00:02:20,221 org.camunda.bpm.engine.persistence - ENGINE-03081 No startup lock property found in database
[ERROR] 2021-08-04 00:02:20,237 org.camunda.bpm.engine.persistence - ENGINE-03068 No deployment lock property found in databse
[ERROR] 2021-08-04 00:02:20,238 org.camunda.bpm.engine.persistence - ENGINE-03078 No history cleanup lock property found in databse
[INFO ] 2021-08-04 00:02:20,297 org.camunda.bpm.engine - ENGINE-00001 Process Engine default created.
[INFO ] 2021-08-04 00:02:51,212 org.camunda.bpm.engine.cfg - ENGINE-12003 Plugin 'CompositeProcessEnginePlugin[genericPropertiesConfiguration, camundaProcessEngineConfiguration, camundaDatasourceConfiguration, camundaJpaConfiguration, camundaJobConfiguration, camundaHistoryConfiguration, camundaMetricsConfiguration, camundaAuthorizationConfiguration, failedJobConfiguration, CreateFilterConfiguration

@darpasoft:
You should definitely separate concerns and aspects. The Keycloak Identity Provider Connection to the Keycloak instance is totally different from your CSRF 403 error of Spring Boot Security SSO setup.
Everything you write about your configuration sounds very special. Somehow your colleague managed to setup a Keycloak instance which worked with an older Keycloak version. The logic and behaviour of this plugin hasn't changed in any way since the first official version (which is available on Maven Central). What I can do for you is to describe what this Plugin expects and how it works.
1.) The Keycloak Identity Provider requests a token from your realm by using the configured client id and client secret using grant type client secret. With that token, which is clearly connected to the configured Camunda client, the Keycloak Identity Provider reads users and groups out of your realm.
2.) According to that there is no need to give special rights and roles to the camunda-admin group within Keycloak. For the Identity Provider Plugin this is just data from Keycloak like any other group. The difference is on the Camunda side only. Only within Camunda this group has a special meaning and therefore Camunda authorizations (which are Camunda internal) will be set accordingly.
Sorry that I can't tell you remotely what is wrong with your somehow very special setup. I would suggest to start with a clean setup as described in the documentation of this plugin and from that develop your further restrictions.
If you want to compare Keycloaks internal setup itself, just go for the respective Keycloak server configuration files. Basically its a JBoss Wildfly instance.
A last hint: you said "Plugin had much less defined properties and java classes were little different. I assume that he took the version which was before present on github.". That sounds strange to me. Where exactly did you get it and which version does it have?
I would strongly recommend to use the official released version available on Maven Central. And nothing in between. When using Spring Boot this is just a dependency in your Maven or Gradle build file.

This time I have commented parameter administratorGroupName=camunda-admin in application.properties. Camunda starts without error. Keycloak login screen appears but during the login process there is a similar error with Response 403 FORBIDDEN. My hope was that new logs could help to identify issues - below attached.
I have also checked JWT token payload copied from browser debugger. There are no assigned roles in payload as it used to be.
This time I have commented parameter administratorGroupName=camunda-admin in application.properties. Camunda starts without error. Keycloak login screen appears but during the login process there is a similar error with Response 403 FORBIDDEN. My hope was that new logs could help to identify issues - below attached.
I have also checked JWT token payload copied from browser debugger. There are no assigned roles in payload as it used to be.
{
"exp":<PHONE_NUMBER>,
"iat":<PHONE_NUMBER>,
"jti": "70b026ad-a8d3-4d28-bfb0-63be4cfb432c",
"iss": "https://MY_URL/auth/realms/ecl-realm",
"sub": "fbdeb345-c0e7-44a5-a0cc-e4f5bd45507d",
"typ": "Serialized-ID",
"session_state": "92fff491-130e-4a33-9dde-c3fd62084d39",
"state_checker": "j6dzhFKuKcsgLR-Wh2pykBx6FddRs_MWZjg24FA7ETE"
}
camunda_logs_stack_trace_2.txt

"I would suggest to start with a clean setup as described in the documentation of this plugin and from that develop your further restrictions."
That is exactly what we did last weeks with Camunda. And it has worked until when it was connected to keycloak running with docker. I could also try to rebuild a new camunda client on keycloak instead doing export.
"Where exactly did you get it and which version does it have?"
I got it from our repository. From where previous worker got I do not know.
I can see in GIT history that camunda-bpm-identity-keycloak had version 1.2.0. Now we have 2.1.0.
For example, here is the extractAuthenticatedUser method from our history. You can see differences.
public class KeycloakAuthenticationProvider extends ContainerBasedAuthenticationProvider {

@Override
public AuthenticationResult extractAuthenticatedUser(HttpServletRequest request, ProcessEngine engine) {

	// Extract authentication details
    OAuth2Authentication authentication = (OAuth2Authentication) SecurityContextHolder.getContext().getAuthentication();
    if (authentication == null) {
        return AuthenticationResult.unsuccessful();
    }
    Authentication userAuthentication = authentication.getUserAuthentication();
    if (userAuthentication == null || userAuthentication.getDetails() == null) {
        return AuthenticationResult.unsuccessful();
    }

    // Extract user ID from Keycloak authentication result - which is part of the requested user info
    @SuppressWarnings("unchecked")
    // String userId = ((HashMap<String, String>) userAuthentication.getDetails()).get("sub");
    //String userId = ((HashMap<String, String>) userAuthentication.getDetails()).get("email"); // useEmailAsCamundaUserId = true
    String userId = ((HashMap<String, String>) userAuthentication.getDetails()).get("preferred_username"); // useUsernameAsCamundaUserId = true
    if (StringUtils.isEmpty(userId)) {
        return AuthenticationResult.unsuccessful();
    }

    // Authentication successful
    AuthenticationResult authenticationResult = new AuthenticationResult(userId, true);
    authenticationResult.setGroups(getUserGroups(userId, engine));

    return authenticationResult;
}

Thanks for help , all suggestions and information on how plugin works.

@darpasoft:
The source you're showing is clearly from the SSO example. Which showcases the integration of Spring Boot Security / SSO with OAuth2 together with the provided Identity Provider Plugin. So this is just an example (and has of course been updated over the time to use newer Spring Boot Versions including the security / OAuth2 dependencies etc).
But this is again to be differenciated from the Keycloak Identity Provider Plugin itself. Which you will have as a dependency in your project. The problem you're facing has nothing to do with the above setup. You have problems when querying groups or users using Keycloak's admin rest api. You won't find the token used in these requests within the plugin in your browser. The Keycloak Identity Providers requests and uses its own token.
Your log file for the commented out admin group configuration shows the same symptoms as before: you get a 403 when requesting user details. In Keycloak your configured Camunda client has no rights to query users and groups.
What you can do to test all this independently from anything else is use e.g. a REST plugin or Postman and a) request a token with client id and client secret using grant type client secret as I mentioned before and then b) access the admin REST API of Keycloak using this token as Authorization header simply by e.g. requesting all groups or users (see Keycloak documentation for the endpoint and the details of such a request). You should get a HTTP 403 as well.
I just think, that you're somehow lost in the many aspects of what you have changed at once.
To clearify: with "start with a clean setup as described in the documentation" i was pointing to your Keycloak configuration, not any source code of your custom application. Why don't you setup a new realm within your Keycloak instance, setup the Camunda Client exactly like described, add a sample group and user to that realm, and see if everything is ok with that config?

I think that I am clear what I have changed following instructions from github (https://github.com/camunda-community-hub/camunda-bpm-identity-keycloak). But I may not know all aspects of how plugin
 and keycloak work.
I have just created a completely new realm and new client with new names with settings explained at camunda-community-hub/camunda-bpm-identity-keycloak and changed application.properties accordingly. As result I got the exact same error: Unable to read data of configured administratorGroupName camunda-admin / 403.
So far I can see the only difference is step 1 as here we do not use docker:

Keycloak docker images can be found on Keycloak Docker Hub.

Looks like the admin rest api of Keycloak is completely closed in your standalone instance?

Do you know in which file is this configured on a standalone instance?

There is a) the standalone.xml (standard configuration for Wildfly) as well as b) some other configuration files of the domain etc. in a separate sub folder.
In your case I would first check everything with a REST tool an try to reproduce the HTTP 403.
You have several Keycloak URLs:
a) token specific, e.g
https://MY_KEYCLOAK_SERVER/auth/realms/ecl-realm/  protocol/openid-connect/token
b) admin api of your realm
https://MY_KEYCLOAK_SERVER/auth/admin/realms/ecl-realm/  [users|groups|...]
Both general paths must be accessible from outside.

Ok, I have reproduced 403 with Postman:
A) Getting token:
POST https://MY_SERVER/auth/realms/ecl-realm2/protocol/openid-connect/token with client_id, client_secret and audience in body of request
Response:
{
"access_token": "eyJhb...",
"expires_in": 300,
"refresh_expires_in": 1800,
"refresh_token": "eyJhbGciOi...",
"token_type": "Bearer",
"not-before-policy": 0,
"session_state": "71d0e556-5692-48ca-9fe7-6ae15490cf4d",
"scope": "email profile"
}

Token payload:
{
"exp":<PHONE_NUMBER>,
"iat":<PHONE_NUMBER>,
"jti": "027a88ac-2e19-4ef8-a446-566b74df5120",
"iss": "https://MY_SERVER/auth/realms/ecl-realm2",
"aud": "account",
"sub": "7ff5578a-1b2a-4b78-80c6-9d341eed7d42",
"typ": "Bearer",
"azp": "camunda-ecl3",
"session_state": "c2e1d700-3f77-44e5-a614-902207fbd14e",
"acr": "1",
"allowed-origins": [
"MY_ORIGIN",
"<IP_ADDRESS>"
],
"realm_access": {
"roles": [
"offline_access",
"view-users",
"uma_authorization",
"query-groups",
"query-users"
]
},
"resource_access": {
"camunda-ecl3": {
"roles": [
"view-users",
"query-groups",
"query-users"
]
},
"account": {
"roles": [
"manage-account",
"manage-account-links",
"view-profile"
]
}
},
"scope": "email profile",
"email_verified": false,
"clientId": "camunda-ecl3",
"clientHost": "<IP_ADDRESS>",
"preferred_username": "service-account-camunda-ecl3",
"clientAddress": "<IP_ADDRESS>"
}
Refresh token payload:
{
"exp":<PHONE_NUMBER>,
"iat":<PHONE_NUMBER>,
"jti": "3f2fe367-00b6-46bc-973c-1c13344ec708",
"iss": "https://MY_SERVER/auth/realms/ecl-realm2",
"aud": "https://MY_SERVER/auth/realms/ecl-realm2",
"sub": "7ff5578a-1b2a-4b78-80c6-9d341eed7d42",
"typ": "Refresh",
"azp": "camunda-ecl3",
"session_state": "71d0e556-5692-48ca-9fe7-6ae15490cf4d",
"scope": "email profile"
}
B) Get users
GET https://MY_SERVER/auth/admin/realms/ecl-realm2/users
Authorization Bearer eyJhb...
Response:
403 Forbidden
{
"error": "unknown_error"
}

Ok, I found that problem was with missing roles in the realm_management. It looks like it is not enough to add roles to Realm roles or Client roles to my client.
They have to be added also at realm-management. Actually I just tested with Postman. It works if roles are only added to "Client Roles" under realm-management.
It looks that those roles under realm-management were not exported with export/import tools.
In Documentation:
4 Add the roles query-groups, query-users, view-users to the service account client roles of your realm (master-realm or realm-management, depending on whether you are using master or a separate realm):
There was also some misunderstanding in our communication:

What happens if you give your client the roles query-users, view-users, query-groups for realm-management (as described in the documentation)?
I sent the screenshot above. Realm roles: query-users, view-users, query-groups are also assigned as Effective roles to camunda-ecl client Service Account.

I was thinking that you refer to "Realm Roles". Today I noticed that under "Client Roles" there is realm-management. It would be helpful to add an extra screenshot in documentation.
According to today's test with Postman it looks like that "or"  does not fit as written in documentation.

That's exactly what the documentation of the plugin says or was meant to say. Maybe it helps to enhance the docu with an additional screenshot of real-management to prevent misunderstandings of other users in the future.
Glad you made it :-)
I will close this issue then.


audio sources not in plugin still

Hi, it's been months since I've had this issue. I contacted loupedeck support asking about it back then, and they said back that the issue would be resolved soon. It has not been fixed. All my audio sources I need are not in the OBS loupedeck plugin. Why hasn't this been fixed yet? Its been months (look at images below)

I use a plugin in OBS Studio that allows me to separate audio tracks. The Loupedeck OBS plugin used to work with my OBS audio plugin, but after an update of the Loupedeck OBS plugin it would not show these audio sources anymore in the loupedeck program. WHY, what changed it? Please fix this.

Got the same issue, you ever get a solution to it?

Got the same issue, you ever get a solution to it?

I emailed loupedeck support. They told me that apparantly it'll be fixed in an update that will come out tomorrow. So let's wait and hope it'll be fixed for now.

Got the same issue, you ever get a solution to it?

I emailed loupedeck support. They told me that apparantly it'll be fixed in an update that will come out tomorrow. So let's wait and hope it'll be fixed for now.

still waiting for the update unless I just haven't gotten it for some reason.

Got the same issue, you ever get a solution to it?

I emailed loupedeck support. They told me that apparantly it'll be fixed in an update that will come out tomorrow. So let's wait and hope it'll be fixed for now.

still waiting for the update unless I just haven't gotten it for some reason.

me too.... it's probably late from tweaking some small stuff. I hope they won't be too late after promising it'll release the day after I mailed them.

Same problem after upgrading to V6. Is there any solution already?

Same problem after upgrading to V6. Is there any solution already?

Sadly not from what I've seen so far it's starting to annoy me where I'm about to disconnect my thing and change to a different one.

Same problem after upgrading to V6. Is there any solution already?

Sadly not from what I've seen so far it's starting to annoy me where I'm about to disconnect my thing and change to a different one.

I still have the same issues as well, I messaged loupedeck support immediately. If they say anything I'll be sure to add it here.

Update: I had to make a bug report and send in the data to them. I tried to explain everything as best as possible to them. I hope we'll get the issue fixed with this but I don't see it being fixed any time soon.

This absolutely STUPID! My loupdeck was setup and working exactly as I wanted then this latest update broke all my OBS and spotify setup. Updates are meantg to add functionality not remove it! Even the default plugin actions dont work! If I unassign and try to reassign the default action its say action unavailble and remains greyed out. Installed the update that recently appeared and it made it WORSE! now NO TOUCH CONTROLS WORK and NO rotary control even appear as an option such terrible customer support!

yes, everytime you create new Audio Source it is in... so i have to delete and recreate my audio sources everytime i restart OBS... when i name them exactly as they were, my loupedeck remembers, and i don´t have to set it up...

New Loupedeck Update, Update 6.0.1. It still hasn't fixed the issue yet.
What was even more enraging, is that when I went to the "Release notes" and checked "Known issues" the bug with OBS doesn't even show up in the list of issues. So either they don't believe me when I email loupedeck support, or they don't care.
To everyone who has replied in here, I urge to also contact support saying that you have the same issue. If enough people contact them about it they they will have to listen.
Here's the link to contact their support:
https://support.loupedeck.com/kb-tickets/new

Good morning,
Still no fix... the last update of the OBS plugin was two months ago now. I no longer have hope of being able to use this product for my streams. Luckily I'm still able to return it free of charge, that's what I'm going to do to upgrade to a StreamDeck, it's certainly a little more expensive but we know why in the end.
In short, disgusted with this product, I will not recommend it.

So Loupedeck isnt usefull for my only reason "Streaming via OBS" anymore, so i put my Loupedeck into the dumpster... Never using anything from Loupedeck again... Better use Elgato Steamdeck. Its a bit more expensive, but it works, and ever has...

Too many flaws for this product in the end:
Sound tracks that do not appear, the inability to select a specific source in a group (Either you define the visibility of the entire group, or you have to take the source out of the group), the constant instability which means that certain functions only work when they want to... Really, it's probably the worst purchase I've made since I started as a streamer...
I wanted to add this, in case anyone new to me is like me and has the opportunity to return the product before it's too late: Avoid this product... it's a disaster...


Depth vs. Elevation

I am having trouble understanding the difference between a depth-based query and an elevation-based query: This might a) be a bug, or b) simply a topic in the documentation I haven't found yet ;-)
Specifically, I am querying cvmsi with either UCVM_COORD_GEO_DEPTH or UCVM_COORD_GEO_ELEV.
I would have expected that depth simply changes the sign of the elevation query in this case.
However, this doesn't seem to be true:
echo "-117.916 33.933 100" | ucvm_query -f ~/software/ucvm-17.1.0/conf/ucvm.conf -m cvmsi -c gd
 -117.9160    33.9330    100.000    125.203    387.000      cvmsi   1585.323    603.470   2115.323       none      0.000      0.000      0.000      crust   1585.323    603.470   2115.323
echo "-117.916 33.933 100" | ucvm_query -f ~/software/ucvm-17.1.0/conf/ucvm.conf -m cvmsi -c ge
 -117.9160    33.9330    100.000    125.203    387.000      cvmsi   1473.994    499.840   2097.744       none      0.000      0.000      0.000      crust   1473.994    499.840   2097.744
echo "-117.916 33.933 -100" | ucvm_query -f ~/software/ucvm-17.1.0/conf/ucvm.conf -m cvmsi -c ge
 -117.9160    33.9330   -100.000    125.203    387.000      cvmsi   1604.115    694.910   2118.290       none      0.000      0.000      0.000      crust   1604.115    694.910   2118.290

This also shows when visualizing the result:

Note, that the screenshot above is not raw UCVM-data but contains (identical) postprocessing in the upper layers, in both cases.

After some testing, I think I figured out what is expected for
gd/ge. I started with cvmh since this is the model that is
elevation based.
At 33.933, -117.916, the elevation is about 120. (I used google
earth)
echo "-117.916 33.933 0" | ./ucvm_query -f ../conf/ucvm.conf -m cvmh -c gd    --> crust   2127.145    661.332   1959.885  necho "-117.916 33.933 120" | ./ucvm_query -f ../conf/ucvm.conf -m cvmh -c ge   --> crust   2127.145    661.332   1959.885 echo "-117.916 33.933 200" | ./ucvm_query -f ../conf/ucvm.conf -m cvmh -c gd   --> crust   2201.784    725.676   1989.581 echo "-117.916 33.933 -80" | ./ucvm_query -f ../conf/ucvm.conf -m cvmh -c ge   --> crust   2201.784    725.676   1989.581 echo "-117.916 33.933 300" | ./ucvm_query -f ../conf/ucvm.conf -m cvmh -c gd   --> crust   2245.924    763.728   2006.388 echo "-117.916 33.933 -180" | ./ucvm_query -f ../conf/ucvm.conf -m cvmh -c ge   --> crust   2245.924    763.728   2006.388 echo "-117.916 33.933 500" | ./ucvm_query -f ../conf/ucvm.conf -m cvmh -c gd   --> crust   2348.962    852.554   2043.559 echo "-117.916 33.933 -380" | ./ucvm_query -f ../conf/ucvm.conf -m cvmh -c ge   --> crust   2348.962    852.554   2043.559
switching to cvmsi, the elevation is alittle different..
echo "-117.916 33.933 0" | ./ucvm_query -f ../conf/ucvm.conf -m cvmsi -c gd   --> crust    664.070    235.770   1969.857 echo "-117.916 33.933 123" | ./ucvm_query -f ../conf/ucvm.conf -m cvmsi -c ge   --> crust    664.070    217.400   1969.857 echo "-117.916 33.933 125" | ./ucvm_query -f ../conf/ucvm.conf -m cvmsi -c gd   --> crust   1547.285    627.860   2109.316 echo "-117.916 33.933 0" | ./ucvm_query -f ../conf/ucvm.conf -m cvmsi -c ge   --> crust   1547.520    627.860   2109.354 echo "-117.916 33.933 200" | ./ucvm_query -f ../conf/ucvm.conf -m cvmsi -c gd   --> crust   1542.550    670.691   2108.569 echo "-117.916 33.933 -75" | ./ucvm_query -f ../conf/ucvm.conf -m cvmsi -c ge   --> crust   1542.279    670.540   2108.526 echo "-117.916 33.933 300" | ./ucvm_query -f ../conf/ucvm.conf -m cvmsi -c gd   --> crust   1763.532    725.390   2143.462 echo "-117.916 33.933 -175" | ./ucvm_query -f ../conf/ucvm.conf -m cvmsi -c ge   --> crust   1763.198    725.390   2143.409 echo "-117.916 33.933 500" | ./ucvm_query -f ../conf/ucvm.conf -m cvmsi -c gd   --> crust   2088.755    992.890   2194.814 echo "-117.916 33.933 -375" | ./ucvm_query -f ../conf/ucvm.conf -m cvmsi -c gejj   --> crust   2088.518    992.743   2194.777

Thanks, this makes sense now.
Here's the new entry in the docs for later reference: https://github.com/SCECcode/UCVMC/wiki/Query-By-Elevation-Versus-Query-By-Depth


Entropy source for unpredictable numbers is guessable

The Heruko crypto-verify needs to be able to construct unpredictable numbers. This requires a high entropy key, in order to yield the security guarantees required for an unpredictable number. However the key used is a 3 digit number. Hence without any entropy. It should be replaced with a high entropy key stored in an environment variable.
See section 2.5.4 in the NFT Minting security report.
See Jira issue 291.

3 digit number it was a password(key) to hash messages.
secret generated in the UnpredictableNumberTool constructor: crypto.randomBytes(UnpredictableNumberTool.BYTES_IN_SEED)
is it OK? @jot2re

@jot2re , ok, I got it.
so many bytes must be the KEY to stay service secure?

At least 16 bytes. Preferably 32 bytes.

key updated to 32bytes. you can see it in the heroku app settings

Great! Thanks @oleggrib


android: add android:exported to manifest, login without accessToken

Hi,
could, you publish changes, pls?
Thank you!

@azmicirit hey, could you publish that to npm, pls? Thank you!

@azmicirit I could refactor my changes to prevent breaking changes in the current version. I would like to add method loginWithoutToken, and the login method revert to the previous state if it helps you to publish changes to npm faster. Is it OK for you? Thank you!

@bebjakub Could you make that change please? otherwise I have to create a new branch. I'll add this module into NPM as soon as possible if I find a free time.


Fix segmentation fault when building Python 3.6 image

I'm not 100% sure what the guidelines or rules are around PRs like this, happy to make any adjustments that might be required to get this merged.
This fixes the issues reported in #160 for the Alpine build. For Python
3.6, the build succeeds but test illustrate that ctypes related test
fail with segmentation faults. This also prevents optimized builds
because they rely on a full run of the test suite.
The fix is based on the release candidate build of Python 3.6.1 in
Alpine Edge. It switches to system libraries for libffi and expat in
the same way it's used in the Alpine build
file.

I'm glad you found a workaround for the segfault, but I'm still not sold on --enable-optimizations -- it's a lot of additional build time with what seems like minimal benefit (as @yosifkit mentioned over in https://github.com/docker-library/python/issues/160).  It actually takes so long to build that Travis CI ends up killing the build. :disappointed:

@tianon I can totally understand your point about the optimizations. The segmentation fault still remains as an issue though. If you are using the regular build an run the unittest, it basically fails with the same error as described in #160.
How do you feel about removing --enabled-optimizations and --with-lto but merging the fix for the segmentation fault related to the ctypes build? I'm happy to update the PR accordingly.


ARROW-9004: [C++][Gandiva] Support building with LLVM 10

LLVM 7 and 8 are still supported.
Clang Tools still use 8 because Clang Tools 10 reports an error for
RaipdJSON in sanitizer build. We should work on this as a separated
task.
e.g.:
https://github.com/kou/arrow/runs/725786805?check_suite_focus=true
/usr/include/rapidjson/internal/stack.h:117:13: runtime error: applying non-zero offset 16 to null pointer
     #0 0x7f4d336c0e2c in void arrow::rapidjson::internal::Stack<arrow::rapidjson::CrtAllocator>::Reserve<arrow::rapidjson::GenericValue<arrow::rapidjson::UTF8<char>, arrow::rapidjson::MemoryPoolAllocator<arrow::rapidjson::CrtAllocator> > >(unsigned long) /usr/include/rapidjson/internal/stack.h:117:13

Ubuntu 16.04 still use LLVM 8 because LLVM 10 requires C++ 14 but g++
5 on Ubuntu 16.04 is too old to use
cpp/src/arrow/vendored/datetime/date.h.
CentOS 8 packages still use LLVM 8 because there are no packages for
LLVM 10 on CentOS 8.
manylinux1 still use LLVM 8 because g++ 4.8.2 is old to build LLVM 9
or later.
Conda package for Windows still use LLVM 8 because llvmdev 9 or later
use Visual Studio 2017. We need to use Visual Studio 2017 not 2015 to
use llvmdev 9 or later.

@github-actions crossbow submit -g nightly

Didn't we recently upgrade to llvm 9? Why jump to llvm10 so early?

@pprudhvi as it says in the PR description LLVM 7 and 8 are still supported

@pprudhvi Because I found a trouble with Gandiva + LLVM 9: https://github.com/apache/arrow/pull/7280#issuecomment-635634955
I need help from Gandiva experts or LLVM experts to solve it but nobody doesn't help for now.
I started working on LLVM 10 support to break the problem down. If the problem is reproducible with LLVM 10, it will be a Gandiva problem. If the problem isn't reproducible with LLVM 10, it will be a LLVM 9 problem.
The problem isn't occurred with LLVM 10. It may be a LLVM 9 problem.
If you think that we should support LLVM 9, could you take a look https://github.com/apache/arrow/pull/7280#issuecomment-635634955 ?

@github-actions crossbow submit -g nightly

The "Python Cron / AMD64 Conda Python 3.7 Dask latest" failure is unrelated to this change.
Some nightly failures are also unrelated to this change.
I want to merge this in this week if nobody objects it.

No objections from me

No objections.
I'll merge this.


Add destroy permanently bang

Add a #destroy_permanently! method, which calls the ActiveRecord destroy! method under the covers, causing an Error to be raised if the record is not destroyed
Also a few housekeeping items:

Fix a bug where #destroy_permanently would hard-delete when the destroy operation is aborted
Update specs to use modern RSpec syntax
Remove deprecated alias_method_chain call
Update .travis.yml to run specs using supported versions of Ruby and Rails
Bump the version to reflect a non-backwards-compatible change per semver

+1 looks great, thanks for all the cleanup in here!

Needs moar tests.

+1 👍


SQLServerConnection

Question
Why do you think the instance variable "state" in SQLServerConnection  don't need to be volatile.
The Method abort(Executor)  implements java.sql.Connection.abort(Executor)
I think that the javadoc means the other thread should see the change (closed Connection).
But yes the javadoc from  java.sql.Connection.abort(Executor) is not really explicit.

Hi @fischerRo ,
Please describe your use case a bit more. How are you trying to access state after Connection.abort()?

Hi @ulvii,
I think if Thread A ist using the Connection and Thread B use Connection.abort(Executor) to abort the Connection that Thread A is using - perhaps because some blocking or loop problem on Thread A. So i think Thread A self not always (->java language spec.) could see the change from hist state variable. At the moment i think so: if the thread A not see the "state" change,  but he could not read/write to the Socket, so in the exception code a "second" Connection.close()  for Thread A is called.
Kind Regards
Roman Fischer

Hi @fischerRo ,
I created #1194 , please let me know if it resolves your issue.

Hi @ulvii,
Thanks, yes this resolves this issue.


Error rendering plots and reports

After upgrading to the latest code plots and reports are failing:
Error: An error has occurred. Check your logs or contact the app author for clarification.

In the pod logs there is this error.
Warning: Error in : could not find function "where"
--
  | 136: <Anonymous>

The where is part of tidyverse/tidyselect: https://tidyselect.r-lib.org/reference/language.html

The latest R 4.0.0 rocker/shiny-verse image has an upgraded tidyselect, but that version has issues with openshift: https://github.com/matthewhirschey/ddh/pull/89
OpenShift has stringent security requirements that the 4.0.0 image is not compatible with.
There is an issue for this: https://github.com/rocker-org/rocker/issues/295
I am going to try just upgrading tidyselect to see if that will fix this problem.

It looks like we changed !any_of(c("cell_line", "lineage")) to where(is.numeric) in code/fun_plots.R:
https://github.com/matthewhirschey/ddh/pull/97/files#diff-0adc94d148254eb981abb5a14b3cfde8
The version of R/tidyverse we are deploying doesn't include the where function.
@matthewhirschey Do you know of a backwards compatible version of where(is.numeric)?
Instead of relying upon rocker-org as a base image I can try building the image from scratch, but it may take a little while.

working on it...

Try taking out where(), and just leaving:
pivot_longer(cols = is.numeric, names_to = "gene_symbol", values_to = "dep_score") %>%
I get all sorts of warnings that this is deprecated, and where() is the current way to call a function within the select-helpers. So let's try that.
I just pushed a changed fun_plot.R file to the enhance_pathways branch, that you can test.

I deployed enhance_pathways but it now fails with:

Warning: Predicate functions must be wrapped in `where()`.
--
  |
  | # Bad
  | data %>% select(is.numeric)
  |
  | # Good
  | data %>% select(where(is.numeric))
  |
  | ℹ Please update your code.
  | This message is displayed once per session.
  | Warning: Error in : This tidyselect interface doesn't support predicates yet.
  | ℹ Contact the package author and suggest using `eval_select()`.
  | 133: <Anonymous>

I got that as a warning too, but not an error to cause failure...

Yep Warning: Error is kind of confusing.
If found a tidyverse_update function that recommends packages to update so I'm trying that out now.

OK. I also just pushed another change to enhance_pathways that should work.
The code is very explicit, and I didn't like it as much as calling the numeric variables, but I think it'll work as-is.

I think the problem with reports might be a different issue.
I saw this in the logs:

Warning: Error in ctx$onInvalidate: Reactive context was created in one process and accessed from another
--
  | 39: domain$onError
  | 38: promiseDomain$onError
  | 37: <Anonymous>
  | From earlier call:
  | 99: base$wrapOnRejected
  | 98: base$wrapOnRejected
  | 97: base$wrapOnRejected
  | 96: base$wrapOnRejected
  | 95: base$wrapOnRejected
  | 94: base$wrapOnRejected
  | 93: base$wrapOnRejected
  | 92: domain$wrapOnRejected
  | 91: promiseDomain$onThen
  | 90: action
  | 83: promise
  | 82: self$then
  | 81: promise$finally
  | 80: finally
  | 79: download$func [/srv/code/app.R#649]

Perhaps we need a call to force() https://github.com/rstudio/shiny/issues/2163 ?

I think the plots are working now after deploying the latest changes.

So where() is still there, because you upgraded tidy select, but not tidy verse, because that would have broken Rocker?
In this case, I'm lost on that error. Never seen it. I can dig.

Looks like report generation is still having issues.
Example:
https://www.datadrivenhypothesis.org/?show=detail&content=gene&symbol=BRCA1
Error in logs:
Warning in file(con, "w") :
--
  | cannot open file 'report_app.knit.md': Permission denied
  | Warning: Error in file: cannot open the connection
  | 39: domain$onError
  | 38: promiseDomain$onError
  | 37: <Anonymous>
  | From earlier call:
  | 99: base$wrapOnRejected
  | 98: base$wrapOnRejected
  | 97: base$wrapOnRejected
  | 96: base$wrapOnRejected
  | 95: base$wrapOnRejected
  | 94: base$wrapOnRejected
  | 93: base$wrapOnRejected
  | 92: domain$wrapOnRejected
  | 91: promiseDomain$onThen
  | 90: action
  | 83: promise
  | 82: self$then
  | 81: promise$finally
  | 80: finally
  | 79: download$func [/srv/code/app.R#650]

report_app.knit.md is an intermediate document before a PDF is generated
Is it a problem with where/how this document is stored, which is then rendered to a PDF?

Is it a problem with where/how this document is stored, which is then rendered to a PDF?

I think that is the problem. The pdf generation writes files into the current directory. We have code to change to a temp directory which should be writable. Not sure why this is a problem again.

Everything checks out on my end; thanks for your help 🙏

Welcome. Always glad to help.


Add support for the hybrid post-quantum KEM (X25519Kyber768Draft00) experimentally.

Codecov Report

Merging #263 (13a45ba) into main (765f22d) will decrease coverage by 0.17%.
The diff coverage is 82.60%.

@@            Coverage Diff             @@
##             main     #263      +/-   ##
==========================================
- Coverage   97.61%   97.44%   -0.17%
==========================================
  Files          34       35       +1
  Lines        2222     2233      +11
  Branches      216      217       +1
==========================================
+ Hits         2169     2176       +7
- Misses         52       56       +4
  Partials        1        1

Flag
Coverage Δ

unittests
97.44% <82.60%> (-0.17%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

src/kems/dhkem.ts
97.68% <66.66%> (-2.32%)
:arrow_down:

src/identifiers.ts
100.00% <100.00%> (ø)

src/interfaces/kemInterface.ts
100.00% <100.00%> (ø)

src/utils/misc.ts
96.07% <100.00%> (+0.72%)
:arrow_up:


KAFKA-4218: Enable access to key in ValueTransformer

This PR groups KAFKA-4218,  KAFKA-4726 and KAFKA-3745.

Thanks for the PR.
As this is a public API change, we need a KIP...

Thanks for reminding, done.

Thanks for this PR and the associated KIP-149, @jeyhunkarimov!
(Review ongoing)

Thanks for review @miguno. Because my initial solution didn't guard the key object and was not backwards-compatible (as discussed in mailing list), I had to change the PR and KIP accordingly.


'Not Found' error when deleting a text data block

When we delete a text data block, first we delete the block.
Then, the LiveTextEditor.useBlock is triggered and call API.unsubscribeFromBlockChannel where we check the existence of the block. It fails and throws a 'Not Found' error.
see with Maxence how it must be handled to be ok.
maybe we don't have to check that the object exists when we launch an unsubscribe.

The handling of the unsubscription does not need to check if the block is there. Just ask to unsubscribe. If there were nothing, it is juste fine.

commit f9d00e04f1bd2bb7def33f95164a128d1b157f54


Feature/generate

Summary by CodeRabbit

New Features

Introduced a command-line interface for generating schema definitions from Prisma schema files.
Added automated code review configuration to streamline review processes within the repository.
Enhanced metadata generator with a comprehensive set of configuration options and documentation for improved usability.

Documentation

Updated the README file to include detailed installation, usage, configuration, and contributing guidelines.

Tests

Implemented unit tests for the SchemaParser and schema generation functionalities to ensure correct operations across various scenarios.
Added tests for the command-line interface to validate input handling and functionality.

@coderabbitai review

@coderabbitai fix all, please review again

@coderabbitai i refactor the code, please review again

@coderabbitai fixed all, please review again

@coderabbitai  Can you go through all the code and point out all the problems at once?

@coderabbitai All the content you reviewed has been resolved and one refactor issue are add it in todo. If you think there is no problem, please approve it.


Browser executable check fails on RHEL for chromium-headless

I am using a Red Hat Enterprise Linux machine (version 8.3) with Python 3.6.8 and the current version of html2image.
On this distribution, several choices are presented when we want to install Chromium on it :
chromium.x86_64 96.0.4664.110-2.el8 epel
chromium-common.x86_64 96.0.4664.110-2.el8 epel
chromium-headless.x86_64 96.0.4664.110-2.el8 epel

I went for the last option since it looked the most convenient for our use case.
Instead of the usual Chromium package which install the full browser with its standard executable, this package installs only a Chromium "headless shell", located in /usr/lib64/chromium-browser/headless_shell
The issue I have is that, unlike the classic Chromium versions, this executable fails the executable check in html2image:
>>> from html2image import Html2Image
>>> hti = Html2Image(browser_executable='/usr/lib64/chromium-browser/headless_shell', custom_flags=['--headless', '--disable-gpu', '--disable-software-rasterizer', '--default-background-color=ffffffff'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/html2image/html2image.py", line 86, in __init__
    flags=custom_flags,
  File "/usr/local/lib/python3.6/site-packages/html2image/browsers/chrome.py", line 187, in __init__
    self.executable = executable
  File "/usr/local/lib/python3.6/site-packages/html2image/browsers/chrome.py", line 204, in executable
    self._executable = _find_chrome(value)
  File "/usr/local/lib/python3.6/site-packages/html2image/browsers/chrome.py", line 94, in _find_chrome
    'Failed to find a seemingly valid chrome executable '
FileNotFoundError: Failed to find a seemingly valid chrome executable in the given path.

This is because /usr/lib64/chromium-browser/headless_shell --version apparently does not give the Chromium version as expected.
It should be noted that, if I bypass the check by commenting it, everything works fine except that (I am able to make "screenshots" of pages normally).
I am unsure how this issue could be correctly fixed, maybe a special flag or condition could be implemented.

Hello, thank you for opening an issue.
A way to temporarily solve your issue would be to set the HTML2IMAGE_TOGGLE_ENV_VAR_LOOKUP to any value (example : true), and set an environment variable with any of the following names :
- HTML2IMAGE_CHROME_BIN
- HTML2IMAGE_CHROME_EXE
- CHROME_BIN
- CHROME_EXE
to the path of your Chromium executable. Html2image iterates over these environment variable names in the same order as they are listed above. If CHROME_BIN is already set on your system but you wish not to change its content, you can set HTML2IMAGE_CHROME_BIN for example.
Although this feature has yet to be documented and tested, it should do the trick, as the path provided using this method are not subject to any tests.

Regarding a fix, an argument could indeed be added the Html2Image class' __init__(), for instance.


Can't find the "minigrid-configs" directory and base-4rooms.json file

Hello, Hoang
I'm trying to run your work recently. I followed your instructions in README.md to build the environment and install minigrid and rlpyt.
After that, when i try to do the Example run command for MiniGrid's MultiRoom environment, but there is no "minigrid-configs" directory and "base-4rooms.json" file.
I got the message:
FileNotFoundError: [Errno 2] No such file or directory: 'experiments/minigrid-configs/multiroom/base-4rooms.json'
What step did i miss?
Thank you so much!
Best,
Kevin

Hi @Lai-Chien-Chun, you have to first check out the update-minigrid branch.


Added Queue problems in python

Proposed Changes
Add a short description here

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[ ] I have read the CONTRIBUTING document.
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.
[ ] I have checked that my PR is not a duplicate

Why is there an ipynb file here?
This does not follow the coding style, there are no tests, it does not add any functionality to a Python project.
And how is this a bug fix?


Update Composer dependencies (2023-10-06-00-10)

Visual regression test passed!
View the visual regression test report


chore(githooks): swap ghooks for husky

Husky supports git UIs
Config is simpler
People excluding myself are maintaining it 😀

LGTM

Current coverage is 100% (diff: 100%)

Merging #18 into master will not change coverage

@@           master   #18   diff @@
===================================
  Files           1     1
  Lines          76    76
  Methods         0     0
  Messages        0     0
  Branches        0     0
===================================
  Hits           76    76
  Misses          0     0
  Partials        0     0

Powered by Codecov. Last update 7982724...e0d8d0b


[RELAY][BACKEND] CompileEngine refactor.

[x] Move interpreter, graph runtime codegen to backend
[x] Introduce CompileEngine
[x] refactor Interpreter and graph runtime codegen to use CompileEngine
[x] change fuse_ops to create function inplace(not add to globalvar)
[x] Enhanced graph codegen to support tuple input/output case
[x] Make relay.build and relay.optimize consistent with nnvm

cc @jroesch @eqy @MarisaKirisame  please review

I will review first thing in the morning.

Overall looks good 👍, I think we should still lift all local functions into global definitions before optimizing, it is a good invariant and allows us to do global transformations (in follow-up passes) without having to rewrite the functions which depend on them. If we are worried about performance we can re-perform inning at the end.
@MarisaKirisame could you take a look at this? it effect us.

re global function lifting. I did not do them in the fuseops to make sure that the current API do not depend heavily on module, once we introduce the entry_func field into module I think we will be more comfortable using modules, that can come as a followup

@jroesch how do we do closure? If all function are global I dont think we even have the concept of closure, as we have no partial application.

Overall pretty good, except that line which I think is incorrect.

@jroesch @MarisaKirisame please take another look, I have rebased and add support for tuple input(concat)


opensync: add noise floor reporting

Add noise floor reporting to survey stats
Fix survey stats

Signed-off-by: Arif Alam<EMAIL_ADDRESS>

Thank-you.
Please provide updated proto for opensync_stats when you complete this merge.

merged into pending, Thanks !


Finish transforming target/arduino_101 to target/zephyr

This is follow up patch to https://github.com/Samsung/jerryscript/pull/1143 , and based on the suggestion of the original contributor, @sergioamr , that if more than one board of Zephyr is supported, that it makes sense to rename target to just "zephyr".
Taking a comment from the previous PR:

I am a bit surprised (confused) because I thought Zephyr is x86 only.

Zephyr is actually quite portable and supports number of architectures. To prove that my changes from #1143 are usable beyond just x86 and ARM, I've added an ARC architecture board. I don't have one, so cannot test if it boots, but it builds an ELF which has the correct machine code. I guess it's helpful to include (with a comment that it's not tested fully).

Then, the patchset goes over renaming files/dirs and updating README to mention support for more boards of different architectures (well, so far it's mostly "virtual" boards of qemu_x86 and qemu_cortex_m3).
As before, there're individual commits for ease of review, ready to be squashed once overall approach is ack'ed.
@sergioamr : Please review.

I think the patch is OK in general. Just a few fixes

LGTM

Finally I've got a computer back and i can look at this.
Please, have a look to my changes on your branch.

@pfalcon please check : https://github.com/pfalcon/jerryscript/pull/1

@sergioamr : Thanks, I'm going to integrate it later today. As everything should be squashed together I guess, there will be just a signoff line from you, is it ok?

All suggestions and additional patches integrated, squashed to a single commit, rebased to the master as of now.

@pfalcon travis signals error now. Please swap the signed-off lines. As you are commiting the patch, the checker script expects your signed-off line as the last one in the commit message.

Thanks for the hint, done. Watching Travis...

LGTM.

LGTM

LGTM, please rabase to the current master, so we can land it.

@LaszloLango why the rebase is needed? There is no conflicts.
@pfalcon if there is indeed something that needs to be done, can you follow up so we get this landed.

@poussa, I know there is no conflicts. The "problem" is in our development process. We don't use merge commits, so we have to rebase the master to the branch we want to merge and push. Branch must be up to date to do this. But it changes the hash of the commit, so GitHub won't notice it is on master when we pushed it. I can land the PR without rebasing it, but I have to close the PR manually after it's done. Other option is to use the 'squash and merge' option of GitHub. It does exactly what we need, but it changes the author of the commit (based on GitHub user info) and usually breaks the Sign-off checker, so travis (and make precommit) will fail.

@LaszloLango Understood. Lets follow the process then.

Rebased - sorry for the delay, I'm on vacation this week, may be not available next days again. @poussa : if there is a need to rebase again, maybe you could clone this PR and rebased/resubmit it? Thanks in advance.


Cannot log in

Am trying to download the x86 version of MCPE to use with MCPE Launcher, but everytime I run gplaydl and enter my credentials I get:

http response body: Error=BadAuthentication

I've tried using my normal password and an app specific password, but nothing works for me...

Use the apk-download branch from mcpelauncher, I integrated gplaydl there and implemented a browser based auth.

Brilliant - thank you. I'll give that a go.

Compile fails with:
`CMake Error at CMakeLists.txt:34 (add_subdirectory):
The source directory
/home/paul/tmp/mcpelauncher-linux/gplay_api

does not contain a CMakeLists.txt file.
CMake Error at CMakeLists.txt:35 (set_target_properties):
set_target_properties Can not find target to add properties to: gplaydl
`

Clone recursively, also, wrong project.


Add CAN standby mode and wake-up support (IDFGH-4003)

ESP32 need a CAN transceiver to commicate with other units on bus.
And most of transcervers have a standby pin, like NXP's TJA1XXX, TI's TCAN1XXX and so on.
So why not add  standby pin to config,  standby state to status and wake-up from standby automatically function and so on?

It is extremely standard in automotive circles to use a sleep pin with the can transceiver. You are really overcomplicating this. No one uses through hole ICs anymore, certainly not for automotive. Just roll a quick pcb and it’ll be on your doorstep in a week for ~$20 (sparkfun is even cheaper but I use JLCpcb).
Robert Vogt IV
CEO
IOSiX, LLC
1300 Tefft Ct #1
Saline, MI  48176
P: +1-855-OBD-1939
C: +1-734-730-9690
@.***

On Sep 28, 2021, at 12:38 AM, Kevin Schlosser @.***> wrote:

That would work but.. in order to make it work a pull-up would need to be used in order to supply voltage to the transceivers standby pin. A pin on the ESP32 would need to be used to wake the transceiver by turning the pin on and off as needed. When no frames have been received for a specified amount of time the interface in the ESP32 deactivated then the pin connected to the transceivers standby would need to be turned on and the pin connected to the transceivers receive pin would need to be used to wake the ESP32 on that pin falling. When the ESP32 enters sleep the pin connected to the standby would float and the pull-up in the transceiver would keep the pin pulled high. Once the ESP32 wakes the TWAI interface needs to be activated and then the pin to the transceiver standby would need to be enabled and by default it will take the transceiver out of standby mode.
It has a reference pin which is good.
Only bad thing I can see is there is no through hole version, that means no breadboard prototyping. and for those DIY'ers not savvy enough to solder SMDs we are still SOL.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

I like to breadboard this way I am able to test and make sure I have everything right. The MCP2562 has a through hole version and it also supports the wakeup feature.


Gallery, Lists: Missing GPU frames when entering Lists

Open Gallery, tap into List.
Notice the missed GPU frames:

Trace coming soon...

Trace blocked on https://github.com/dart-lang/sdk/issues/26976

Behold. The trace!

loading-list.json.zip

This is looking pretty good. We're still missing some GPU frames when entering lists demo. Tested on a Nexus 5.
Going to close.


Learning Materials?

I was wondering if we want to link to something related to learning materials or courses in the main page's Other Resources section. I think you were suggesting something along these lines, @Lisanna?

I was suggesting that the project proponents group is well qualified to deliver on-demand courses if needed. Maybe we could link The Carpentries / CodeRefinery materials and add that if enough people are interested we can organise related courses?

Ok, sounds good. We can certainly include those links.
As for the question of organizing courses, I reckon we could link to a survey that aims to get an idea of how much interest there is (and in what). Would you be interested in putting this together?
Organizationally, I think we should keep potential courses cleanly separated from the expert list, as the two are very different offerings.

Links added. Anyone who would like to add other links or a survey, please feel free to do so.

Lisanna has added a thing asking people to email us if they are interested in courses, so I'm closing here for now.

I've changed the passage asking people to send us an email if they're interested in training workshops; it now links to a Google form instead. I think this will be easier to handle, as it's separate from any other emails (like bug reports or CoC stuff), doesn't implicitly require us to write an answer for each request (emails kind of do), and summarizes the responses automatically.


Chart tooltip still clipped with small enough chart

Describe the bug
I'm pulling this out from another bug that should be closed: https://github.com/stripe/stripe-apps/issues/433#issuecomment-1124947766
Chart tooltips have another edge case where there isn't enough room and we need some design thought for how to solve it.
To Reproduce
Copied from the comment linked above:
We're still running into this issue. We're on 7.1.0. I remember before this change even when your mouse was all the way to the right the tooltip would be offscreen, it looks like it now there is a threshold at which point the tooltip moves left but there are still cases where it is off screen. See code and gif below
    <LineChart
      data={[
        { date: 1, spend: 27090.11, label: 'Last Month' },
        { date: 2, spend: 47688.94, label: 'Last Month' },
        { date: 3, spend: 66087, label: 'Last Month' },
        { date: 4, spend: 103086.96, label: 'Last Month' },
        { date: 5, spend: 122523.14, label: 'Last Month' },
        { date: 6, spend: 136082.01, label: 'Last Month' },
        { date: 7, spend: 154369.16, label: 'Last Month' },
        { date: 8, spend: 180095.6, label: 'Last Month' },
        { date: 9, spend: 188037.67, label: 'Last Month' },
        { date: 10, spend: 219680.93, label: 'Last Month' },
        { date: 11, spend: 235415.28, label: 'Last Month' },
        { date: 12, spend: 270065.19, label: 'Last Month' },
        { date: 13, spend: 315726.01, label: 'Last Month' },
        { date: 14, spend: 353437.76, label: 'Last Month' },
        { date: 15, spend: 377527.7, label: 'Last Month' },
        { date: 16, spend: 396718.56, label: 'Last Month' },
        { date: 17, spend: 459309.6, label: 'Last Month' },
        { date: 18, spend: 480227.7, label: 'Last Month' },
        { date: 19, spend: 510180.49, label: 'Last Month' },
        { date: 20, spend: 540363.17, label: 'Last Month' },
        { date: 1, spend: 9831.63, label: 'This Month' },
        { date: 2, spend: 34961.04, label: 'This Month' },
        { date: 3, spend: 45227.57, label: 'This Month' },
        { date: 4, spend: 57852.73, label: 'This Month' },
        { date: 5, spend: 66665.95, label: 'This Month' },
        { date: 6, spend: 71261.91, label: 'This Month' },
        { date: 7, spend: 103654.25, label: 'This Month' },
      ]}
      x={{
        value: 'date',
        domain: [1, 20],
      }}
      y={{ label: 'Spend', value: 'spend', format: { currency: 'USD' } }}
      color='label'
    />

Expected behavior
We should position the tooltip better
Screenshots

Desktop (please complete the following information):
OS: macos
Browser chrome
Version 100.0.4896.127 (Official Build) (arm64)
Additional context
See https://github.com/stripe/stripe-apps/issues/433

Encountered it as well. I'd say it's not an "edge case" as the issue occurs even with a much smaller tooltip. This basically makes the charts nice visuals, unusable for numeric data as there are only two ticks for the y axis and it's impossible to tell the value without a tooltip.
One suggestion is, if there would've been a way of triggering a callback when a data point is selected by moving mouse cursor, it'd provide a suitable workaround, allowing to implement statically positioned "tooltip" externally, like it's done in the Today section of the Stripe's own Dashboard for the daily revenue chart.


Bump dependencies

Bump Optim dependency to avoid warning as happened in StateSpaceModels, remove upper bounds

Now you fixed the versions, is that right?

Good question, I thought 0.20.0 meant [0.20.0, 0.21.0) according to https://julialang.github.io/Pkg.jl/v1/compatibility/ but I'm not sure now

Ok so no symbol is same as caret (0.20 == ^0.20), which is not fixed, it's in fact less restrictive than ˜. I think both are the same for pre-1.0.0 though packages.


when enabled spawnDelay and then go anand then useand thand then go to use the command in the server causing the server to go down

Bug: [Bug Name]
Informations
theSpawn Version: [1.6.0]
Server-OS: [Linux Ubuntu 20.04]
PHP Version: [8.0.12]
PocketMine-MP Version: [4.0.0]
Error
[Console Error:]
readjustment instructions
[I've done...]
[1. ...]
[2. ...]
[3. ...]
fix suggestions [optional]
[Your suggestion]

Please fill out the version-informations and send the error!

Closed due to lack of information.


(fix) Design rejects - Part III

This PR is related to #167347142
Fixes or addresses the following issues from the TO-DO list:

[x] Feed: Pending has it's own card design and modal design. (Orange) - need to wait for #163177443 and  #164289070 -> Modals will be addressed on https://www.pivotaltracker.com/story/show/167614001 / I'll check feed styling on another task.
[x] Settings Menu: It's not the latest design. -> Will be worked on: #167646423
[x] Fixed an issue where content would overflow from feed items on certain devices.
[x] Feed: modal "from:" is too close to avatar image
[x] claim screen doesn't fit iphone 5 -> Here we could shrink some elements (ie: font-size, margins, etc.) but it would require altering what's in the design. Currently applied sizes are correct, so I don't think it would be wise for my to change all of that without asking you first if that's OK. Besides this particular issue, designs in general don't take into account the device's clock bar, browser top / bottom bar, etc., so some other section might not fit into an iPhone's 5 screen, even when at first glance the design's dimensions are OK.
[x] Send: "Enter the recipient name" should be in a brighter gray, please confirm all the colors. -> Changed the placeholder color.
[x] Pop-up: The background should be brightened and blurred. -> Created an issue for this #167653239, not a trivial task.
[x] Profile: The light blue icons are too small and not aligned. -> Fixed, and updated with new icons.
[x] Profile: camera icon doesnt look centered -> Fixed, and updated with new icons.
[x] Profile: There is still some issue with the profile pic, some sort of offset. -> There were some issues with the border and width, fixed them.

@fernandomg

I don't recall seeing this white margin/padding around the "Alpha tones are for..." poster, so I'm assuming this is a change introduced in this PR:

Fixed.

I kinda see icons smaller than what they look in the wireframes. Also, it looks like the username has been changed in wireframes.

Yeah, I've noticed. I wasn't going to fix that as it wasn't reported on the TO-DO list, but it should be fixed now.

In 'View Avatar' screen, buttons are unaligned, see wireframes. Also, found out that the title is different (it should now read: 'Your Profile'), and Profile reads 'Your Profile' also (this has nothing to do with the PR, but if you can change them to match the updated wireframes, that would be great). To make it to this page you have to tap on the avatar image in the profile page.

That section looks (almost) nothing like on the design, but I updated the icons and its positions anyway.


Fix cancellation ID existentials in iOS 14

Fixes #2233.
On iOS 14, DismissEffect is broken because effect cancellation uses AnyHashable throughout, which can lead to nested AnyHashable(AnyHashable(...)) IDs, which can hash differently depending on the level of nesting. By preserving the hashable ID up to being stored in the internal cancellation token type, we can avoid a hash lookup failure that prevents a dismissal from happening.

13 Tem 2023 Per 19:19 tarihinde Stephen Celis @.***>
şunu yazdı:

@.**** commented on this pull request.
In
Sources/ComposableArchitecture/Reducer/Reducers/PresentationReducer.swift
https://github.com/pointfreeco/swift-composable-architecture/pull/2283#discussion_r1262787211
:

@@ -477,8 +477,8 @@ extension Task where Success == Never, Failure == Never {
}
}
extension EffectPublisher {

internal func _cancellable(
id: AnyHashable = _PresentedID(),

internal func _cancellable<ID: Hashable>(
id: ID = _PresentedID(),

I think this is safe for the versions of Swift we support, but we could
also create overloads...
—
Reply to this email directly, view it on GitHub
https://github.com/pointfreeco/swift-composable-architecture/pull/2283#pullrequestreview-1528810468,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ATJ5CDIHWRIDUV6AKWMAA5TXQANYTANCNFSM6AAAAAA2IGSTUQ
.
You are receiving this because you are subscribed to this thread.Message
ID: <pointfreeco/swift-composable-architecture/pull/2283/review/1528810468
@github.com>


install issues

voicerss-tts 1.0.6 has requirement requests>=2.19.1, but you'll have requests 2.5.0 which is incompatible.                                                                                kalliope 0.5.4 has requirement apscheduler>=3.6.0, but you'll have apscheduler 3.0.1 which is incompatible.                                                                                kalliope 0.5.4 has requirement mock>=3.0.5, but you'll have mock 1.0.1 which is incompatible.                                                                                kalliope 0.5.4 has requirement pyyaml>=5.1, but you'll have pyyaml 3.11 which is incompatible.                                                                                kalliope 0.5.4 has requirement requests>=2.22.0, but you'll have requests 2.5.0 which is incompatible.                                                                                configurationutil 3.7.2 has requirement PyYaml>=3.12, but you'll have pyyaml 3.11 which is incompatible.                                                                                classutils 1.18.0 has requirement requests>=2.7.0, but you'll have requests 2.5.0 which is incompatible.                                                                                cachingutil 1.2.7 has requirement requests>=2.11.1, but you'll have requests 2.5.0 which is incompatible.

The work on Jasper - specifically making it work as-is and refactoring to Python 3 is being conducted at https://github.com/aplawson/jasper-client -- including a tutorial on how to build it and/or deploy it with a custom Raspbian ISO image. //adam


[GLUTEN-5341] Fixes SPARK-42782: Hive compatibility check for get_json_object

What changes were proposed in this pull request?
Fixes get_json_object test introduced in spark 3.5 to check compatibility with hive. * character is not supported in velox in json queries.
(Fixes: #5341)
How was this patch tested?
Ran in local

@gaoyangxiaozhu @yma11

@zhli1142015 Could you please review? Thanks

CC @PHILO-HE

Only one nit.

I have addressed it, thanks.

===== Performance report for TPCH SF2000 with Velox backend, for reference only ====

query
log/native_5467_time.csv
log/native_master_04_24_2024_89015c915_time.csv
difference
percentage

q1
35.29
36.07
0.785
102.23%

q2
26.27
27.37
1.095
104.17%

q3
36.92
37.10
0.184
100.50%

q4
41.61
41.34
-0.265
99.36%

q5
69.01
69.85
0.842
101.22%

q6
5.91
7.48
1.566
126.48%

q7
86.53
87.34
0.813
100.94%

q8
86.59
85.05
-1.541
98.22%

q9
125.51
124.31
-1.197
99.05%

q10
44.55
45.36
0.810
101.82%

q11
20.46
20.43
-0.031
99.85%

q12
27.62
28.57
0.951
103.44%

q13
55.70
54.36
-1.344
97.59%

q14
19.08
18.41
-0.663
96.53%

q15
31.26
30.50
-0.757
97.58%

q16
13.49
13.97
0.477
103.54%

q17
103.04
102.31
-0.733
99.29%

q18
147.67
147.87
0.207
100.14%

q19
13.64
13.55
-0.088
99.36%

q20
27.55
28.75
1.202
104.36%

q21
284.97
288.81
3.846
101.35%

q22
14.65
15.13
0.483
103.30%

total
1317.31
1323.95
6.640
100.50%


Installing eslint in a fresh app shows npm warnings

Is this a bug report?
I think so, but I'm not sure.
Did you try recovering your dependencies?
Yes, I did.
$ npm --version
6.4.1

Which terms did you search for in User Guide?
eslint
Environment
Environment:
  OS:  Windows 10
  Node:  10.10.0

  Yarn:
  npm:  6.4.1
  Watchman:  Not Found
  Xcode:  N/A
  Android Studio:  Not Found

Packages: (wanted => installed)
  react: ^16.5.2 => 16.5.2
  react-dom: ^16.5.2 => 16.5.2
  react-scripts: 1.1.5 => 1.1.5

Steps to Reproduce

npm init react-app my-app
cd my-app
npm install eslint --save-dev

Expected Behavior
Eslint should install with the lastest version (currently 5.6.1) without problems and it should show no warnings during installation.
Actual Behavior
Several npm warnings are shown stating that an older version of eslint should be installed by me as it is a peer dependency of several packages which were automatically installed with eslint.
$ npm install eslint --save-dev
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none is installed. You must install peer dependencies yourself.
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS><5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>- 4.x but none is installed. You must install peer dependencies yourself.
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>|| ^3 || ^4 but none is installed. You must install peer dependencies yourself.
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>|| ^4.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

+<EMAIL_ADDRESS>added 30 packages from 33 contributors, updated 6 packages, moved 1 package and audited 14759 packages in 10.093s
found 0 vulnerabilities

Reproducible Demo
Not available.

It's not supported to install ESLint inside a CRA project. You already have ESLint there.
What are you trying to do?

I would ask you to file an issue with https://github.com/TechChange/eslint-config and ask them to support the newer eslint.
That being said, most of my plugins worked smoothly with the newer eslint version, it is very possible that the plugin you mentioned would be technically unaffected.

As a side note, unfortunately your statement is not evident from reading the documentation of the project. It is not self-evident for a newbie like me what packages "are already there", as you say. Is there a reason why they are not listed in the README?
Nor it is clear either that I cannot install them by my own when they are "already there"... Is it explained anywhere?

@xavierguarch
Sorry, I agree it isn't super clear and we should document this better. AFAIK in 2.x (to be released today) we actually warn if you attempt to do it so you'd know about the issue sooner.
We "hide" dependencies like Babel, ESLint, webpack, etc, so that we can make sure they work together well, and manage their versions. If you install a different version on top you're risking breaking our setup.
ESLint will probably work (although not always). If you attempt to do something similar with Babel or webpack it will definitely break.

@bugzpodder Thanks Jack, i'll follow your advice and give it a try!

I'd also add we don't really have a supported way to add linter plugins right now.

@gaearon When you say:

ESLint will probably work (although not always).

Are you saying that installing ESLint by my own as I did will probably work (despite the npm warnings, which I should ignore)? Is that what you mean?

I'm saying that I'm not sure if it'll create problems or not (especially if you install a different version than we use internally). But if npm start still works, should be okay.

I'd also add we don't really have a supported way to add linter plugins right now.

Well, supposing that I managed to have the ESLint plugin I want to use to work with the last version of ESLint, I understand that this two steps would suffice:

npm install https://github.com/TechChange/eslint-config --save-dev
Add the following to my .eslintrc:

{
  "extends": ["techchange/react"]
}

I'll try it and I'll let you know.

FYI, npm start works without problems after installing an older version of ESLint by my own and using the snippet above in my .eslintrc.
Anyway, I understand from your comments @gaearon and @bugzpodder that the preferred route in my case would be to keep using the ESLint version that comes with create-react-app (now that I know that!) and have the plugin simply be upgraded to support it.
Thanks for your comments.
The only real issue here would be then a documentation one to make more clear:

Which packages are already managed by create-react-app
That you cannot install those packages by your own without going into problems...

I have updated the title to better reflect the desired behaviour.

For the record, the current version of CRA<EMAIL_ADDRESS>still allows me to install eslint by my own without giving any error:
C:\temp\my-app>npm install eslint --save-dev
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

+<EMAIL_ADDRESS>added 7 packages from 7 contributors, updated 3 packages and audited 35826 packages in 15.614s
found 0 vulnerabilities

But it will in fact create a little mess which is worst when you try to uninstall it:
C:\temp\my-app>npm uninstall eslint
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none is installed. You must install peer dependencies yourself.
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS><6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none is installed. You must install peer dependencies yourself.
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>- 5.x but none is installed. You must install peer dependencies yourself.
npm WARN<EMAIL_ADDRESS>requires a peer of eslint@^3 || ^4 || ^5 but none is installed. You must install peer dependencies yourself.
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>|| ^4.0.0 || ^5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

removed 7 packages and audited 35639 packages in 10.535s
found 0 vulnerabilities

😰


chore: refactor transfer process description

Closes #185
Update transfer process description + fix typos and broken links

Previously, the diagrams visualized who transferred the dataAddress to whom in what message (depending on Push vs Pull). I found that quite helpful - maybe readd?


Template literal expression is not assignable to matching template literal type

Bug Report

🔎 Search Terms

template literal types, template literal assignability
🕗 Version & Regression Information

This is the behavior in every version I tried, and I reviewed the FAQ for entries about template literal types.

⏯ Playground Link

Playground link with relevant code
💻 Code

type Templated = `${string} ${string}`;

const value1: string = "abc";
const templated1: Templated = `${value1} abc` as const;
// Type '`${string} abc`' is not assignable to type '`${string} ${string}`'.

const value2 = "abc";
const templated2: Templated = `${value2} abc` as const;

Note in the second case, where value2 is a literal string, the assignment works okay.
🙁 Actual behavior

Type '`${string} abc`' is not assignable to type '`${string} ${string}`'.

🙂 Expected behavior

I would expect this value to be assignable, since the statically known ~value~ type matches the template pattern.
It is also odd that the two cases above behave differently.

We currently don't have any assignability rules to allow assigning one arbitrary template type to another (which is what's being suggested here). It's worth thinking about what rules, if any, would make sense to add.

Ah, thanks @RyanCavanaugh, that makes sense.
This appears to be a generalization of the inferencing operation.  Inferencing is able to do a kind of matching, but only when all parts are closed.
If so, then this is related to #43060
type Foo<T> = T extends `${infer A} ${infer B}`
  ? A extends string
    ? B extends string
      ? true
      : never
    : never
  : never;

type V1 = Foo<`${string} abc`>; // never
type V2 = Foo<`abc def`>; // true

My respect and thanks, @ahejlsberg. ☀


Update requirements.txt

Just added a couple more dependencies for the Cloud Run app.

Hi Abi, may I know what are you using "requests" library for?


fix loot pic toa

Description:
removed unnecessary double loot value text for loot images and made it consistent with other loot images.
Changes:
removed unnecessary double loot value text for loot images and made it consistent with other loot images.
Other checks:

[ ] I have tested all my changes thoroughly.

Value() is purposely excluded, to keep the title line having enough space for usernames.

@gc ready for your review


New version request

Hi,
I was hoping to using the Saver logic shown here, would you be willing to do a release so that I can use it in a production environment easily?
Cheers!

We'll make a new version within the next few weeks. There are lots of new features that are being refined!


⚠ Jenkins Plugins Artifactory has degraded performance

In 04c06c6, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1213 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 8f0105b after 19 minutes.


Cannot install from source and no smurf() function

Hello,
I am having two troubles using SmuRF.
(1) Cannot install from source:
After downloading SMuRFv2.0.10.tar.gz, I faced skipping pax global extended headers installation problem.
(2) could not find function "smurf"
I also tried using devtools::install_github() function to install smurf. It can be install but when I try to call smurf function, I get a error Error in smurf() : could not find function "smurf"
I am using RStudio and R 4.2 environment on macOS (Monterey)
Hope you can give me some suggestion and help. Thank you for your time!

Hi this is due to a roxygen issue with package documentation, failed to install/read package correctly.
Please use the latest release of SMuRF: https://github.com/skandlab/SMuRF/releases/tag/SMuRFv2.0.11

devtools::install_github("skandlab/SMuRF", subdir="smurf")
Downloading GitHub repo skandlab/SMuRF@HEAD
√  checking for file 'C:\Users\huangwt\AppData\Local\Temp\Rtmpcn6JWZ\remotes45587b46ba1\skandlab-SMuRF-73b03fc\smurf/DESCRIPTION' ...

preparing 'smurf': (2.8s)
√  checking DESCRIPTION meta-information ...
checking for LF line-endings in source and make files and shell scripts
checking for empty or unneeded directories
NB: this package now depends on R (>= 3.5.0)
WARNING: Added dependency on R >= 3.5.0 because serialized objects in
serialize/load version 3 cannot be read in older versions of R.
File(s) containing such objects:
'smurf/data/cds-hg38.rds'
building 'smurf_2.0.tar.gz'

Installing package into ‘C:/Users/huangwt/Documents/R/win-library/4.1’
(as ‘lib’ is unspecified)

installing source package 'smurf' ...
** using staged installation
** R
** data
*** moving datasets to lazyload DB
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
converting help for package 'smurf'
finding HTML links ... done
CDSannotation_indel                     html
CDSannotation_snv                       html
indelRFpredict                          html
newcutoffs                              html
parsevcf_allfeaturesall                 html
read.vcf                                html
save.files                              html
smurf                                   html
snvRFpredict                            html
** building package indices
** testing if installed package can be loaded from temporary location
*** arch - i386
*** arch - x64
** testing if installed package can be loaded from final location
*** arch - i386
*** arch - x64
** testing if installed package keeps a record of temporary installation path
DONE (smurf)

library(smurf)
smurf()
[1] "SMuRFv2.0.11 (4th Jul 2022)"
smurf(directory=NULL, mode=NULL, nthreads = -1,
annotation=F, output.dir=NULL,  parse.dir=NULL,
snv.cutoff = 'default', indel.cutoff = 'default',
build=NULL, change.build=F, find.build=F,
t.label=NULL, re.tabIndex=F,
check.packages=T, file.exclude=NULL)

Thank you for your response! R CMD INSTALL SMuRFv2.0.11.tar.gz cannot install facing
ERROR: cannot extract package from '/Users/yaochung41/Downloads/SMuRF-SMuRFv2.0.11.tar.gz'
However, I have successfully install and use the function by first cloning github and than use install.packages("SMuRF/smurf", repos=NULL, type="source"


Prevents crash on Laravel 9 when using \Mail::extend()

Using this package with Laravel 9, it is not possible to use \Mail::extend().
This little change adds an empty extend() method to Laravel7Mailer to prevent it from crashing.

@mpociot Would love to know if this can be merged. I can't install this package because I'm running into this error, and it seems like this is the fix.


NVM plug-in does not work on OSX Yosemite

NVM plug-in does not work on OSX Yosemite and thus does not run the nvm.sh script.
Workaround
For OSX Yosemite: add the NVM boot code to your .zshrc and not rely on the plug-in until it's fixed.
### NVM (needed for OSX Yosemite) ###
~/.nvm/nvm.sh

Sorry, my error.  I had Brew's export setting too late in my .zshrc and it was stomping the version of NVM was setting.
Closing issue.


Fluent interface

I do love the fluent code but wouldn't it be better to write a fluent interface? It would eliminate the need for PIPED_VALUE.
For example see the fluent strings in Laravel:
https://laravel.com/docs/8.x/helpers#fluent-strings
You could do the same for arrays and others.
Am I missing something?

Can you give a literal example of the fluent interface you mean?
The difference vs Laravel string helpers for instance, is that those methods are custom and can be predefined. Whereas for this package, you can call any PHP method. So we can't write an interface for that —to provide autocompletion for instance— without defining every PHP method there is.

It would eliminate the need for PIPED_VALUE.

The reason we have the proxy class and PIPED_VALUE is the same as above: we don't have control over how these functions' signatures are written and these can vary wildly. For one function the piped value comes first, for another it's last or second or third. So PIPED_VALUE is there so you can choose yourself as which parameter the piped value should be passed, similar to the original RFC ($$ was used there).
Hope that answers some things. Always open to suggestions to improve this package.

Yes, I meant defining every PHP (string) method.
I know that is quite some work but it might be worth it.
We have to do it only once.

That's a lot of work and not manageable to keep up with. It's not just every string method, but every single PHP method and every change, every release. Maybe there's another way, but closing for now.


Use LoginScreen for UsernamePasswordAuthJSProvider, not modal (follows #4326)

Notes

Follows on from #4326
This relates to the self-host branch that @logan-anderson and @kldavis4 have been developing
Let me know if you'd like me to add a changeset - I assumed it wasn't necessary given it's a PR suggestion into the unreleased self-host feature branch but if that's incorrect I can easily add a changeset
I'd love to see the getLoginScreen function from PR 4326 (or something similar) added to TinaCMS and really only created this second PR as a demo in case it's helpful

Definitely no worries at all if you'd prefer to close this PR and leave the UsernamePasswordAuthJSProvider form untouched, but hopefully you'll consider the getLoginScreen function from PR 4326 regardless 🤞

Feature description

This refactors the form code for the UsernamePasswordAuthJSProvider so it now appears on a login screen, rather than appearing in a modal
It also includes a suggestion to hide the TinaCMS sidebar until the user has signed into the admin portal, though this second commit could easily be reverted if you'd prefer to always show the TinaCMS sidebar alongside the login screen

@coreyaus what is the context for this change?

Hey @kldavis4
Thanks for taking a look a this - I'll explain below but please let me know if anything is unclear
Initial PR (4326): Allowing each AuthProvider to use the loginScreen feature

The easier and more useful place to start is probably #4326. I created that PR because I noticed the AuthWallInner component exposed an optional loginScreen prop that was never actually being used and I realised it could provide a really handy feature for anyone creating their own AuthProvider (e.g. I've created my own for SupabaseAuth)
So in that first PR I added a getLoginScreen function to the AuthProvider class, modelled off the getSessionProvider function.

That would allow us to display a login screen directly within the Tina Admin Portal, rather than always redirecting to a separate /login route (which can be a little jarring)

I think PR 4326 is a useful (and simple) feature addition that would add value to people creating their own AuthProvider, and also simplify the process of doing so. I'd love to see that one get merged (while caring less about this current PR).

This current PR: Using the loginScreen approach for the UsernamePasswordAuthJSProvider
As an optional extension (in case it's useful but no dramas if not), I added this follow up PR to demonstrate how the existing UsernamePassword provider could be refactored to use a login screen. In part it stands to serve as a demo in case the initial PR (that I actually care more about) was unclear or too abstract (it only changes a few lines of code and in the interests of brevity doesn't explicitly show an example implementation of how the getLoginScreen method would be used)

This current PR doesn't make any functionality changes (besides the small item in the final dot point below), but aims to bring small some quality of life improvements to the code, particularly if you need to add other login strategies in the future (e.g. extensions to the username and password provider to support multi-factor authentication or whatever else people dream up). Obviously that's subjective though so feel free to dismiss these attempted improvements if they're not useful!

You can see a couple of example simplifications this PR makes in the screenshots below (though obviously happy to defer to others on whether they're actually improvements - very much appreciate this is your code and you might have different reasons for wanting the forms to appear in a modal!)

The main difference is that the username and password form now uses the existing loginScreen feature of the AuthWallInner component (which was previously unused), rather than opening the forms in a modal.
It would also make it possible for developers to use the UsernamePasswordAuthJSProvider but supply their own custom login form (e.g. if they have a preferred design for that form).

As a final point, this commit adds a couple of lines to hide the empty TinaCMS sidebar from the admin portal until the user has authenticated (a separate but related idea). The main result is that the final login page UX is made to feel more like a traditional app sign in experience.
Nested conditional logic is no longer required

Form logic and design can now live in its own component
This code now lives in its own UsernamePasswordLoginScreen.tsx component, rather than appearing in the generic AuthWallInner component: