Failing to parse request body when using along with Spring Boot 2.1

Reproducible in:
The Slack SDK version
Note: I've tried several versions of bolt/bolt-servlet between 1.0.0-1.2.0 inclusive and gotten the same behavior.
[INFO] +- com.slack.api:bolt:jar:1.1.5:compile
[INFO] |  +- com.slack.api:slack-api-model:jar:1.1.5:compile
[INFO] |  +- com.slack.api:slack-api-client:jar:1.1.5:compile
[INFO] |  \- com.slack.api:slack-app-backend:jar:1.1.5:compile
[INFO] +- com.slack.api:bolt-servlet:jar:1.1.5:compile

Java Runtime version
Java 8 SE 1.8.0_221
OS info
So far I have only tested this in local dev environments using ngrok to communicate with Slack. I don't expect this is the cause of the problem, but just in case:
ProductName:	Mac OS X
ProductVersion:	10.14.6
BuildVersion:	18G95
Darwin Kernel Version 18.7.0: Tue Aug 20 16:57:14 PDT 2019; root:xnu-4903.271.2~2/RELEASE_X86_64

Steps to reproduce:
I am trying to do a slack command integration. The server receives the HTTP POST request from Slack that appears to contain all the correct information and in the correct format according to the API documentation, but my handler never actually gets executed.
Expected result:
My slash command handler defined below to get executed:
        app.command("/do-the-thing", (req, context) -> {

            SlashCommandPayload command = req.getPayload();

            slackMessageHandler.handleSlashCommand(command, context);

            return context.ack();
        });

Actual result:
The Slack Request parser receives an empty string as a body, and doesn't know what to do with it. Bolt acknowledges the request with a 200 but doesn't do anything because it doesn't recognize the request as a slash command.
 WARN  c.s.api.bolt.util.SlackRequestParser - No request pattern detected for

(blank, because the body given to the method is blank.)
I did some debugging and found that everything appears to be going fine until this line. The HttpServletRequest has the information in its reader, but this method fails to extract it. Ultimately, a blank String is sent as the body to SlackRequestParser.parse
Other notes
As an experiment, when I mock a mostly identical request to our URL where the only change is changing content-type Header to text/plain as opposed to  x-www-form-urlencoded it works, or at least, the parser a) receives a body with actual content and b) recognizes the content as a slash command.
This issue is also unique to slash commands. I am able to successfully receive and process events pushed to our URL from the events API.
Our basic code structure:
//SlackBotApplication.java
@SpringBootApplication
@EnableConfigurationProperties
@ServletComponentScan
public class SlackBotApplication {

    public static void main(String[] args) {
        try {
            ConfigurableApplicationContext applicationContext = new SpringApplicationBuilder()
                    .sources(SlackBotApplication.class)
                    .run(args);
            Thread.currentThread().join();
        } catch (Exception e) {
            System.out.println("Something went wrong " + e.getMessage());
}
}        }
    }

//SlackBotController.java
@WebServlet("/slack/events")
public class SlackAppController extends SlackAppServlet {
    public SlackAppController(App app) {
        super(app);
    }
}

//SlackBotConfigs.java
@Configuration
public class SlackBotConfigs {

    ...

    @Bean
    public App initSlackApp(SlackMessageHandler slackMessageHandler) {

        AppConfig appConfig = new AppConfig();

        appConfig.setSigningSecret(retrieveConfigurations().getSigningSecret());
        appConfig.setSingleTeamBotToken(retrieveConfigurations().getSlackbotToken());

        App app = new App(appConfig);

        app.event(AppMentionEvent.class, (payload, ctx) ->  {
            // do some stuff
              return ctx.ack()
        });

      app.event(MessageBotEvent.class, (payload, ctx) ->  {
          // do some stuff
          return ctx.ack()
      });

      app.command("/do-the-thing", (req, context) -> {

          //Do some stuff. Note that this handler never gets executed as a result of the issues we are facing
          return context.ack();
       });
   }
    ...
}

@drussotto Hi, thank you for asking this question!
We have an example built with Spring Boot in the document and it should work for you without this issue. https://slack.dev/java-slack-sdk/guides/supported-web-frameworks#spring-boot
I tried to reproduce your issue by creating a simple Spring Boot app but I was not able to see the same situation. For your information, here is the app that works for me: https://github.com/seratch/slack-java-sdk-issue-582-example-app/blob/main/src/main/java/hello/SlackApp.java

changing content-type Header to text/plain as opposed to x-www-form-urlencoded it works

This behavior sounds like additional Spring modules or Servlet filters may consume the request body in the case of form requests. If another library/module consumes the Reader object to bind a raw string body to some object, the situation described here can arise.
Can you check your Spring Boot app's configurations and dependencies? Some features affecting form requests may be automatically enabled.

@seratch , thank you so much for your help. I was able to get an example that is the same as yours working, but the original application I'm unable to get working still. I tried stripping out many of our dependencies but still facing the issue. This is the dependency tree of our application which still is not processing requests properly:
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.1.5.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:2.1.5.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot:jar:2.1.5.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-autoconfigure:jar:2.1.5.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:2.1.5.RELEASE:compile
[INFO] |  |  |  +- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO] |  |  |  |  \- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] |  |  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2:compile
[INFO] |  |  |  \- org.slf4j:jul-to-slf4j:jar:1.7.26:compile
[INFO] |  |  +- javax.annotation:javax.annotation-api:jar:1.3.2:compile
[INFO] |  |  \- org.yaml:snakeyaml:jar:1.23:runtime
[INFO] |  +- org.springframework.boot:spring-boot-starter-json:jar:2.1.5.RELEASE:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.8:compile
[INFO] |  |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile
[INFO] |  |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.9.8:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8:compile
[INFO] |  |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.5.RELEASE:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.19:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.19:compile
[INFO] |  |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.19:compile
[INFO] |  +- org.hibernate.validator:hibernate-validator:jar:6.0.16.Final:compile
[INFO] |  |  +- javax.validation:validation-api:jar:2.0.1.Final:compile
[INFO] |  |  +- org.jboss.logging:jboss-logging:jar:3.3.2.Final:compile
[INFO] |  |  \- com.fasterxml:classmate:jar:1.4.0:compile
[INFO] |  +- org.springframework:spring-web:jar:5.1.7.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-beans:jar:5.1.7.RELEASE:compile
[INFO] |  \- org.springframework:spring-webmvc:jar:5.1.7.RELEASE:compile
[INFO] |     +- org.springframework:spring-aop:jar:5.1.7.RELEASE:compile
[INFO] |     +- org.springframework:spring-context:jar:5.1.7.RELEASE:compile
[INFO] |     \- org.springframework:spring-expression:jar:5.1.7.RELEASE:compile
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.11.2:compile
[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.11.2:compile
[INFO] +- com.slack.api:bolt:jar:1.1.5:compile
[INFO] |  +- com.slack.api:slack-api-model:jar:1.1.5:compile
[INFO] |  |  \- com.google.code.gson:gson:jar:2.8.5:compile
[INFO] |  +- com.slack.api:slack-api-client:jar:1.1.5:compile
[INFO] |  |  \- org.slf4j:slf4j-api:jar:1.7.26:compile
[INFO] |  \- com.slack.api:slack-app-backend:jar:1.1.5:compile
[INFO] +- com.squareup.okhttp3:okhttp:jar:4.8.1:compile
[INFO] |  \- com.squareup.okio:okio:jar:2.7.0:compile
[INFO] +- com.slack.api:bolt-servlet:jar:1.1.5:compile
[INFO] +- org.jetbrains.kotlin:kotlin-stdlib:jar:1.3.72:compile
[INFO] |  +- org.jetbrains.kotlin:kotlin-stdlib-common:jar:1.3.72:compile
[INFO] |  \- org.jetbrains:annotations:jar:13.0:compile
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:2.1.5.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-test:jar:2.1.5.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-test-autoconfigure:jar:2.1.5.RELEASE:compile
[INFO] |  +- com.jayway.jsonpath:json-path:jar:2.4.0:compile
[INFO] |  |  \- net.minidev:json-smart:jar:2.3:compile
[INFO] |  |     \- net.minidev:accessors-smart:jar:1.2:compile
[INFO] |  |        \- org.ow2.asm:asm:jar:5.0.4:compile
[INFO] |  +- junit:junit:jar:4.12:compile
[INFO] |  +- org.assertj:assertj-core:jar:3.11.1:compile
[INFO] |  +- org.mockito:mockito-core:jar:2.23.4:compile
[INFO] |  |  +- net.bytebuddy:byte-buddy:jar:1.9.12:compile
[INFO] |  |  +- net.bytebuddy:byte-buddy-agent:jar:1.9.12:compile
[INFO] |  |  \- org.objenesis:objenesis:jar:2.6:compile
[INFO] |  +- org.hamcrest:hamcrest-core:jar:1.3:compile
[INFO] |  +- org.hamcrest:hamcrest-library:jar:1.3:compile
[INFO] |  +- org.skyscreamer:jsonassert:jar:1.5.0:compile
[INFO] |  |  \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:compile
[INFO] |  +- org.springframework:spring-core:jar:5.1.7.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-jcl:jar:5.1.7.RELEASE:compile
[INFO] |  +- org.springframework:spring-test:jar:5.1.7.RELEASE:compile
[INFO] |  \- org.xmlunit:xmlunit-core:jar:2.6.2:compile
[INFO] |     \- javax.xml.bind:jaxb-api:jar:2.3.1:compile
[INFO] |        \- javax.activation:javax.activation-api:jar:1.2.0:compile
[INFO] \- org.mockito:mockito-all:jar:1.10.19:test

This is the dependency tree of the sample application that is working:
[INFO] +- com.slack.api:bolt:jar:1.1.5:compile
[INFO] |  +- com.slack.api:slack-api-model:jar:1.1.5:compile
[INFO] |  |  \- com.google.code.gson:gson:jar:2.8.6:compile
[INFO] |  +- com.slack.api:slack-api-client:jar:1.1.5:compile
[INFO] |  |  \- com.squareup.okhttp3:okhttp:jar:4.8.1:compile
[INFO] |  |     +- com.squareup.okio:okio:jar:2.7.0:compile
[INFO] |  |     |  \- org.jetbrains.kotlin:kotlin-stdlib-common:jar:1.3.70:compile
[INFO] |  |     \- org.jetbrains.kotlin:kotlin-stdlib:jar:1.3.72:compile
[INFO] |  |        \- org.jetbrains:annotations:jar:13.0:compile
[INFO] |  \- com.slack.api:slack-app-backend:jar:1.1.5:compile
[INFO] +- com.slack.api:bolt-servlet:jar:1.1.5:compile
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.3.4.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:2.3.4.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:2.3.4.RELEASE:compile
[INFO] |  |  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.13.3:compile
[INFO] |  |  |  |  \- org.apache.logging.log4j:log4j-api:jar:2.13.3:compile
[INFO] |  |  |  \- org.slf4j:jul-to-slf4j:jar:1.7.30:compile
[INFO] |  |  +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
[INFO] |  |  \- org.yaml:snakeyaml:jar:1.26:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-json:jar:2.3.4.RELEASE:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.11.2:compile
[INFO] |  |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.11.2:compile
[INFO] |  |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.11.2:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.11.2:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.11.2:compile
[INFO] |  |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.11.2:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.3.4.RELEASE:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.38:compile
[INFO] |  |  +- org.glassfish:jakarta.el:jar:3.0.3:compile
[INFO] |  |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.38:compile
[INFO] |  +- org.springframework:spring-web:jar:5.2.9.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-beans:jar:5.2.9.RELEASE:compile
[INFO] |  \- org.springframework:spring-webmvc:jar:5.2.9.RELEASE:compile
[INFO] |     +- org.springframework:spring-aop:jar:5.2.9.RELEASE:compile
[INFO] |     +- org.springframework:spring-context:jar:5.2.9.RELEASE:compile
[INFO] |     \- org.springframework:spring-expression:jar:5.2.9.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot-devtools:jar:2.3.4.RELEASE:runtime
[INFO] |  +- org.springframework.boot:spring-boot:jar:2.3.4.RELEASE:compile
[INFO] |  \- org.springframework.boot:spring-boot-autoconfigure:jar:2.3.4.RELEASE:compile
[INFO] +- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO] |  +- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.25:compile
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:2.3.4.RELEASE:test
[INFO] |  +- org.springframework.boot:spring-boot-test:jar:2.3.4.RELEASE:test
[INFO] |  +- org.springframework.boot:spring-boot-test-autoconfigure:jar:2.3.4.RELEASE:test
[INFO] |  +- com.jayway.jsonpath:json-path:jar:2.4.0:test
[INFO] |  |  \- net.minidev:json-smart:jar:2.3:test
[INFO] |  |     \- net.minidev:accessors-smart:jar:1.2:test
[INFO] |  |        \- org.ow2.asm:asm:jar:5.0.4:test
[INFO] |  +- jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3:test
[INFO] |  |  \- jakarta.activation:jakarta.activation-api:jar:1.2.2:test
[INFO] |  +- org.assertj:assertj-core:jar:3.16.1:test
[INFO] |  +- org.hamcrest:hamcrest:jar:2.2:test
[INFO] |  +- org.junit.jupiter:junit-jupiter:jar:5.6.2:test
[INFO] |  |  +- org.junit.jupiter:junit-jupiter-api:jar:5.6.2:test
[INFO] |  |  |  +- org.apiguardian:apiguardian-api:jar:1.1.0:test
[INFO] |  |  |  +- org.opentest4j:opentest4j:jar:1.2.0:test
[INFO] |  |  |  \- org.junit.platform:junit-platform-commons:jar:1.6.2:test
[INFO] |  |  +- org.junit.jupiter:junit-jupiter-params:jar:5.6.2:test
[INFO] |  |  \- org.junit.jupiter:junit-jupiter-engine:jar:5.6.2:test
[INFO] |  |     \- org.junit.platform:junit-platform-engine:jar:1.6.2:test
[INFO] |  +- org.mockito:mockito-junit-jupiter:jar:3.3.3:test
[INFO] |  +- org.skyscreamer:jsonassert:jar:1.5.0:test
[INFO] |  |  \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
[INFO] |  +- org.springframework:spring-core:jar:5.2.9.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-jcl:jar:5.2.9.RELEASE:compile
[INFO] |  +- org.springframework:spring-test:jar:5.2.9.RELEASE:test
[INFO] |  \- org.xmlunit:xmlunit-core:jar:2.7.0:test
[INFO] +- org.projectlombok:lombok:jar:1.18.12:provided
[INFO] +- junit:junit:jar:4.13:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- org.hamcrest:hamcrest-all:jar:1.3:test
[INFO] \- org.mockito:mockito-core:jar:3.5.13:test
[INFO]    +- net.bytebuddy:byte-buddy:jar:1.10.15:test
[INFO]    +- net.bytebuddy:byte-buddy-agent:jar:1.10.15:test
[INFO]    \- org.objenesis:objenesis:jar:3.1:test

The most obvious difference is that in the broken application, okhttp 4.8.1 and kotlin-stdlib 1.3.72 are declared as top level dependencies as opposed to being brought in as dependencies of Bolt. If I remove either dependency declaration from my POM the relevant section of the dependency tree looks like this, and note the version change for kotlin-stdlib:
com.squareup.okhttp3:okhttp:jar:4.8.1:compile
[INFO] |  +- com.squareup.okio:okio:jar:2.7.0:compile
[INFO] |  |  \- org.jetbrains.kotlin:kotlin-stdlib-common:jar:1.3.70:compile
[INFO] |  \- org.jetbrains.kotlin:kotlin-stdlib:jar:1.2.71:compile

When I run the application this way, it won't even start. I get this error:
***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    okio.Segment.writeTo(Segment.kt:169)

The following method did not exist:

    kotlin.collections.ArraysKt.copyInto([B[BIII)[B

The method's class, kotlin.collections.ArraysKt, is available from the following locations:

    jar:file:/Users/drussotto/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.2.71/kotlin-stdlib-1.2.71.jar!/kotlin/collections/ArraysKt.class

It was loaded from the following location:

    file:/Users/drussotto/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.2.71/kotlin-stdlib-1.2.71.jar

Action:

Correct the classpath of your application so that it contains a single, compatible version of kotlin.collections.ArraysKt

In either case, I also get this log in the very beginning of starting my application: 2020-10-12 22:27:49.934 -0700 [main] INFO  o.s.core.KotlinDetector - Kotlin reflection implementation not found at runtime, related features won't be available. which I don't see in the working sample application. I have to imagine that the root cause is somewhere in this area, but I'm not sure what exactly or how to resolve the issue. Do you have any insight here?

Also, regarding the issue of classpath conflicts for the kotlin-stdlib 1.2.71, I'm not sure why that error even appears since it appears to me that they're referring to classes belonging to the same jar file. I've tried cleaning up that directory and redownloading it, but that didn't do anything helpful.

Thanks for sharing this. hmm, I'm not sure if this bin-compatibility issues between Kotlin minor versions is related to your original question about form request handling (probably, this is another issue and unrelated to the original topic, right?).
Generally speaking, issues around Spring Boot apps can be a bit complex depending on what modules and/or Gradle/Maven plugins are used. So, I'm not sure about what is happening in your project yet. If you could share a simple example project reproducing the issue with me, I may be able to help you.

@seratch I don't know if it is, which is why I bring it up. The reason why I think it could be related is that OkHttp requires that kotlin-stdlib dependency, and so I thought there was maybe something that okhttp should or shouldn't do to the request before it reaches the servlet and that could be the cause. Could be totally separate though, as you said - just wanted to share everything I'm seeing.
This repo contains a stripped down version of the project that still gives me the same behavior that I've described earlier. Please take a look when you get the chance and let me know if you're getting the same / any other insights you may glean from it. Thanks again.
https://github.com/drussotto/broken-slack-bot

@drussotto Thanks for sharing this. I found that this issue indeed arises with Spring Boot 2.1. Is there any chance of upgrading your Spring Boot version to 2.2+? I've confirmed it surely works with Spring Boot 2.2 and 2.3 (the latest).

@seratch We were able to get our application working with Spring 2.2.8. Thanks so much for your help! I'll close this question now.

@seratch I'm hitting the same issue with Spring Boot 2.1, and I'm having a harder time upgrading to 2.2. Any other paths to resolving this? Thanks!

@seratch I'm hitting the same issue with Spring Boot 2.1, and I'm having a harder time upgrading to 2.2. Any other paths to resolving this? Thanks!

@vikrim1 Unfortunately, I was not able to find the way to resolve this issue while using Spring Boot 2.1. Running your Bolt app separately in another Spring Boot 2.2+ app is the only other workaround I can suggest.

@vikrim1 Unfortunately, I was not able to find the way to resolve this issue while using Spring Boot 2.1. Running your Bolt app separately in another Spring Boot 2.2+ app is the only other workaround I can suggest.

I'm seeing the same issue with Spring Boot 2.3.11.RELEASE. Any insights into the cause of the original problem in the older version of Spring Boot, in case this is a regression?

@luispollo Just in case, I've verified that this issue does not occur with Spring Boot 2.3.11 itself. Here is a tiny app I used for checking it: https://gist.github.com/seratch/00eb210bbab6336a0c6b2304999bbb94 Thus, there should be a particular reason in your application.

Do you have any examples of features that might affect form requests?

The common causes of the situation described here are:

Lack of valid string request body (= unmodified as-is string data of request body)
Invalid system clock settings in the host your app is running

The first one is more common. If some of your Spring Boot add-ons/extensions parse (=in other words, they consume the InputStream of request body) under the hood, your Slack app endpoint is unable to know the valid request body data (as you may know, this is Servlets' limitation). Also, this is why we encourage using @WebServet type controllers for Bolt apps. Your web controller needs the access to the unmodified request body (InputStream) in HttpServletRequest.
I hope this was helpful to you and you'll figure out the cause of the situation in your app!

The first one is more common. If some of your Spring Boot add-ons/extensions parse (=in other words, they consume the InputStream of request body) under the hood, your Slack app endpoint is unable to know the valid request body data (as you may know, this is Servlets' limitation). Also, this is why we encourage using @WebServet type controllers for Bolt apps. Your web controller needs the access to the unmodified request body (InputStream) in HttpServletRequest.

Thanks for the feedback, @seratch. I'm using a @WebServlet controller. My suspicion is that one of the request filters in the chain is consuming the input stream before it gets to the controller, but I have 13 filters in my app, so it's taking a while to figure out which one is to blame. 😓

The first one is more common. If some of your Spring Boot add-ons/extensions parse (=in other words, they consume the InputStream of request body) under the hood, your Slack app endpoint is unable to know the valid request body data (as you may know, this is Servlets' limitation). Also, this is why we encourage using @WebServet type controllers for Bolt apps. Your web controller needs the access to the unmodified request body (InputStream) in HttpServletRequest.

Thanks for the feedback, @seratch. I'm using a @WebServlet controller. My suspicion is that one of the request filters in the chain is consuming the input stream before it gets to the controller, but we have dozens of filters, so it's taking a while to figure out which one is to blame. 😓

In my case it was OAuth filter, for anyone struggling with the issue

For anyone finding this thread, after running into this problem a few times, our final solution was to switch to socket mode, which avoids the needs for HTTP callbacks altogether. Highly recommended.

The same problem occurs after updating spring boot from 2.7.x to 3.0.0 where jakarta imports are used. I've also updated slack dependencies according to this example https://slack.dev/java-slack-sdk/guides/supported-web-frameworks#spring-boot
When I delete spring-security, the problem disappear. I do not have any custom filters, just the basic authentication. Any ideas for solution?

@Jankaz2 Thanks for sharing this. Perhaps, since Spring Boot v3, there may be some incompatibility with Spring Security extension. I will look into it later to find out a possible workaround for it but at this point, the only suggestion that I have is just to avoid using Spring Security for your bolt-java apps. If Spring Security is required for the rest of your app (I know this is true), I would suggest separating the Slack app part from the large Spring Boot app (I know this is not great for you, though).

I fixed the problem by using custom filter from this tutorial

I found a clean and, I believe, the correct solution for the problem.
As some have already discovered Spring Security is to blame:
OAuth2AuthenticationProcessingFilter.doFilter() -> tokenExtractor.extractToken() -> request.getParameter()
Inside request.getParameter(), you guessed it, the stream is read.
Since the Slack Api deals with its own authentication, we shouldn't even be processing any of the Spring Security Filter in the first place. Luckily Spring provides a proper way to to do this (Source: https://stackoverflow.com/questions/40475620/spring-security-exclude-url-on-custom-filter):
public void configure(WebSecurity web)
    web.ignoring().antMatchers("/slack/**");
}

my spring boot 3 app with slack also failed , even with such a clean spring security config :
@Bean
  fun filterChain(http: HttpSecurity): SecurityFilterChain {

    return http
      .authorizeHttpRequests { authorize ->
        authorize
          // .requestMatchers(antMatcher("/slack/**")).permitAll() // enable this line doesn't help
          .anyRequest().permitAll()
      }
      .build()
  }

The only way is to disable spring security :
@SpringBootApplication(
                       exclude = [SecurityAutoConfiguration::class] // to disable SpringSecurity
)

dependencies :
org.springframework.boot:spring-boot-dependencies:pom:3.1.0:runtime
com.slack.api:bolt-jakarta-servlet:jar:1.29.2:compile

and code is also simple :
@WebServlet("/slack/events")
class SlackEventsController(app: App) : SlackAppServlet(app)


Optimistic locking not supported by Dynalite

Does Dynalite support optimistic locking?
I have an integration test to prove that optimistic locking works . It work fine when running it with DynamoDb local but fails when using Dynalite.

Hi @sateeshampolu – if you could post some code to reproduce, that would be great, thanks!

Hi
I have a simple scenario.
`@DynamoDBTable(tableName = "someTable")
Class Entity {
@DynamoDBVersioned
private Long version;
@DynamoDBHashKey
private String id;
private String variableValue;
}
in a test if you do
Entity e1 = dynamoDbMapper.load(Entity.class, "ID1");
Entity e2 = dynamoDbMapper.load(Entity.class, "ID1");
e1.setVariableValue("value1")
e2.setVariableValue("value2")
dynamoDbMapper.save(e1);
dynamoDbMapper.save(e2);`
when you do this against DynamoDbLocal you get ConditionalCheckFailedException but against Dynalite it just works fine without exception.

Is there a way you can debug to see what DynamoDB commands that code is issuing to the server?


SNYK - Security upgrade alpine from 3.16.1 to 3

Keeping your Docker base image up-to-date means you’ll benefit from security fixes in the latest version of your chosen image.
Snyk recommend upgrading to alpine:3, as this image has only 0 known vulnerabilities.

Redundant.


Can't input Chinese characters.

I'm using Pixel 6 Pro with Android 14 and Samsung Galaxy Tab S9+ with Android 13.
In both devices I cannot input Chinese characters (and Japanese either). I've turned on the "textarea for IME" option to no avail.
Is there a solution to the problem?

I can input both, also on Samsung Galaxy with Android 13. But I don't know the reason. I didn't do any special thing to make it work.

I am using Samsung Galaxy A52s with Android 13 and I cannot input Japanese characters with Samsung Keyboard (QWERTY layout).
https://github.com/deadlyjack/Acode/assets/60216866/eaa4f612-276c-4fc5-aa04-341e2d3ae171

It was Gboard. But now it no longer works. I'm encountering a similar bug on Acode 1.9.0. Now, with Gboard, I cannot switch to a language/keyboard other than English or QWERTY. Meanwhile, I still can use Samsung Keyboard to input Chinese and Japanese characters as long as "Use textarea for IME" is turned off.

I have the same issue, Google input method cannot change to Chinese.
I guess it's because the language switch button is somewhat intercepted by Acode and Acode doesn't support it and neither pass it to system.

Check this : https://github.com/deadlyjack/Acode/issues/911#issuecomment-2421318533


Cannot recreate player after it has been destroyed

Version
4.10 - 4.11.1
Description
If I destroy the player (using the destroy btn or the "close" btn from the MediaSession), I can't find a way to display it again when I want to play more music
Steps to Reproduce

Go to the demo site,
After it starts playing music, click on the destroy btn
Now there's no way to make the player start again

Expected Behavior
After destroying the player, if I add more songs to the audioLists property, it should create a new player and start playing the new music
Current Behavior
There's no way to play more songs after the player has been destroyed. The only solution is to refresh the page so the <ReactJkMusicPlayer> is recreated
Comments
If you feel like this is not something you want to support, at least do not set the navigator's "stop" handler if showDestroy is false

at least do not set the navigator's "stop" handler if showDestroy is false

yes, it's a bug, i will optimize the issue, thank your feedback

After destroying the player, if I add more songs to the audioLists property, it should create a new player and start playing the new music

i think maybe add a new api like  this.audioInstance.rerender() to support more usage scenarios

i think maybe add a new api like this.audioInstance.rerender() to support more usage scenarios

If I understand your proposal well, I think it would be messier from a the client's code perspective, as I'd have to control when the destroy button was clicked, keep this "state". I think it would be easier if the player handles it automatically: If you add songs to it, it shows the player if not already shown, as it does on first usage.

Do you mean to make the destroy of the player like hidden,  not remove dom element, if playlist changed, to display player ?

i'm released version 4.11.2, the close button form the MediaSession scope is pause the music ,
And should not destroy player, you can upgrade for your navidrome :), i'm sorry to trouble you
about the cannot recreate player after it has been destroyed. we can talk that this is indeed a feature. will todo


[Question]: Official Releases?

I was trying out this app and was wondering if there was going to be official releases and user support?

In the near future

Ok, thank you for replying.


Compound Address Field - Lat/Long

I'm running into an issue with GeoLocation fields when running a ForceClient.SelectEntities.
Here is the code I'm running - where "Dealer_Geocode__Longitude__s" is one field from a compound object.
EntityModel model = client.DescribeEntity("Account");
client.SelectEntities("SELECT Id, Name, Dealer_Geocode__Longitude__s FROM Account", model);

I've verified the field exists in the model, but I get the error "Input string was not in a correct format." with the following stack trace, it looks like it's bombing out on the ParseDouble ...
at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
   at System.Xml.XmlConvert.ToDouble(String s)
   at CMS.SalesForce.EntityDoubleAttributeModel.DeserializeValue(String value)
   at CMS.SalesForce.EntitySerializer.Deserialize(sObject entitySource, EntityModel entityModel)
   at CMS.SalesForce.SelectEntitiesResult.<>c__DisplayClass3.<.ctor>b__0(sObject x)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at CMS.SalesForce.SelectEntitiesResult..ctor(QueryResult source, EntityModel model)
   at CMS.SalesForce.SelectEntitiesCommand.Execute(String statement, EntityModel model, SalesForceClientOptions options)
   at CMS.SalesForce.SalesForceClient.SelectEntities(String statement, EntityModel model, SalesForceClientOptions options)
   at CMS.SalesForce.SalesForceClient.SelectEntities(String statement, EntityModel model)
   at HWLSalesforce.SyncDealerAccounts(TaskInfo ti) in c:\Projects\client\kentico-hwl\CMS\App_Code\CMS\HWLSalesForce.cs:line 69
   at SalesforceSyncDealerTask.Execute(TaskInfo ti) in c:\Projects\client\kentico-hwl\CMS\App_Code\_framework

Ah, sorry to muddy the issues list here. I see what's happening.


Adding rounded corners to images (avatar...)

@gitbrent I faced a problem when try to show up the rounded avatar without rounding first so i created that PR to fix that problem in some cases we need to show rounded corners images.

Image options will allow to pass rounding attribute like
slide.addImage({
  x: 1.0, y: 1.0, w: 8.0, h: 4.0,
  hyperlink: { url: 'https://github.com/gitbrent/pptxgenjs', tooltip: 'Avatar' },
  path: 'images/monkey.jpg',
  rounding: true // default: false
});

Thanks @hoangpq !
I've added rounding to the Image demo slide.


Accessibility Audit - Carbon Website: Components - Slider

This epic is tied to a larger "release" that is meant to track the progress of the Accessibility Audit for the Carbon Website. We will audit all of the pages of the carbon website based on AVT 1, AVT 2, & AVT3 - which can be found here.

AVT 1: will audit the site against the IBM Accessibility Checker - browser extension

AVT 2: will audit the site against accessible keyboard interactions

AVT 3: will audit the site against screen readers

Legend:

🌶 fully audited - on all three AVT levels

:one: 🔍 AVT 1 audited
:two: 🔍 AVT 2 audited
:three: 🔍 AVT 3 audited

:boom: issues and documentation - on all three AVT levels are complete

:one: 🚨 AVT 1 issues submitted
:two: 🚨 AVT 2 issues submitted
:three: 🚨 AVT 3 issues submitted

:sparkles: tickets are triaged

Current status of this page: 1⃣ 🔍 AVT 1 audited & 🚨 AVT 1 issues submitted

Components - Slider

Usage: 6 issues - no new issues
Style: 3 issues - no new issues
Code:  6 issues - no new issues
Accessibility: 3 issues - no new issues

Closing due to inactivity. Will reopen if/when ready to be worked on again.


Missing compile-time error for const loop variable

Missing compile-time error for const loop variable in analyzer.
Failing language test:
language/const_for_in_variable_test/01

This has been fixed.


Add expansion of FTE and NFTE acroymns in tag page

Can add markdown files in this directory with the same name as the topic id.
https://github.com/open-innovations/yff-data/tree/main/src/_data/topic_text
These will be added to the pages if they exist
FYI @taz-chiles


http_archive does not support .zip archives

Add support to http_archive to download and extract .zip archives.

Implemented in 5b304f4d55d101b218d16e3ae8fa298805bac146.


Commands to Wialon protocol

My device send answers for commands, for example USSD responce, in UTF8 charset.
I made it configurable, because I'm not sure that every device used UTF8. My be It should be UTF8 by default.
Also I added more optional fields to CommandDialog

Looks good. Thanks.


added metainfo and desktop for flatpak

#96

please wait before merging, there is a small problem with the metainfo.
Feel free to make suggestions for the deskcription.

unless you would like to change something, its ready to be merged now.

I've created the v0.10.0+flatpak tag and merged these changes into master as well. If you need to make any further changes, I can update the v0.10.0+flatpak tag again.
I'll delete the release/v0.10.0-flatpak branch itself once the Flatpak work is finalized, but the tag will still remain, so please don't rely on the branch name for anything.


CI: travis script uses "pip freeze -a" -- result: "no such option: -a"

$ pip freeze -a
Usage:
  pip freeze [options]
no such option: -a

Full log: https://travis-ci.org/mbdevpl/python-readchar/jobs/339754857
The question might be... what is that "pip freeze" for in the first place?

The culprit is your last commit @magmax , please revert it or use --all, via #34.


apollo client resetStore triggers an error related to the defaults from apollo-link-state

Hi everyone,
I lost 2 day on this issue and i decided to ask for you help because i will loose my mind with this :)
My technology stack is the following one:
Server: AWS Lambda, Apollo Server, AWS Api Gateway, AWS RDS MySQL
Client: Apollo Client, Apollo Link State, Apollo Cache Persist
This is my defaults object:
export const defaults = {
    access: {
        shouldCheckTokens: false,
        isSignedIn: false,
        __typename: 'AccessState'
    }
};

So what i need to do is implement authentication in a serverless environment ... so i am storing 2 jwt tokens on the client that are generated upon login
What i was trying to do to top everything up is that if the client reloads the page to keep him logged in but to recheck the tokens and if they are not ok to actually resetStore
so this is the code that is supposed to do that:
let storeDefaults = defaults;
const cache = new InMemoryCache();

persistCache({
    cache,
    storage: window.localStorage,
    trigger: 'write',
}).then(() => {
    try {
        decode(localStorage.getItem(WOWZAAA_TOKEN));
        decode(localStorage.getItem(WOWZAAA_REFRRSH_TOKEN));
        storeDefaults.access.shouldCheckTokens = true;
        storeDefaults.access.isSignedIn = true;
    } catch (e) {}

    const stateLink = withClientState({
        resolvers,
        cache,
        defaults: storeDefaults,
    });
    const httpLink = createHttpLink({
        uri: 'https://api.wowzaaa.io/graphql'
    });
    const authLink = setContext((_, context) => {
        const { headers } = context;
        const token = localStorage.getItem(WOWZAAA_TOKEN);
        const refreshToken = localStorage.getItem(WOWZAAA_REFRRSH_TOKEN);
        return {
            headers: {
                ...headers,
                'wwz-token': token ? token : null,
                'wwz-refresh-token': refreshToken ? refreshToken : null
            }
        }
    })

    const client = new ApolloClient({
        cache,
        link: ApolloLink.from([stateLink, authLink.concat(httpLink)])
    });
    client.onResetStore(stateLink.writeDefaults);

    if (!document.getElementById('main-app')) {
        let div = document.createElement('div');
        div.id = "main-app";
        document.body.appendChild(div);
    }
    ReactDOM.render(
        <ApolloProvider client={client}>
            <Router>
                <Main />
            </Router>
        </ApolloProvider>,
        document.getElementById('main-app')
    );
});

so on resetStore i now get this:
ApolloError.js:34 Uncaught (in promise) Error: Network error: Cannot read property 'access' of undefined
    at new ApolloError (ApolloError.js:34)
    at QueryManager.js:218
    at <anonymous>

react-apollo.browser.umd.js:545 Unhandled (in react-apollo:Apollo(Apollo(Apollo(Apollo(withHandlers(lifecycle(pure(Main)))))))) Error: Network error: Cannot read property 'access' of undefined
    at new ApolloError (http://localhost:8080/vendor.84f481ea0da53644f8c9.js:41113:28)
    at ObservableQuery.u1/p.ObservableQuery.currentResult (http://localhost:8080/vendor.84f481ea0da53644f8c9.js:41224:24)
    at GraphQL.dataForChild (http://localhost:8080/vendor.84f481ea0da53644f8c9.js:7212:62)
    at GraphQL.render (http://localhost:8080/vendor.84f481ea0da53644f8c9.js:7262:33)
    at finishClassComponent (http://localhost:8080/vendor.84f481ea0da53644f8c9.js:53664:31)
    at updateClassComponent (http://localhost:8080/vendor.84f481ea0da53644f8c9.js:53641:12)
    at beginWork (http://localhost:8080/vendor.84f481ea0da53644f8c9.js:54016:16)
    at performUnitOfWork (http://localhost:8080/vendor.84f481ea0da53644f8c9.js:56015:16)
    at workLoop (http://localhost:8080/vendor.84f481ea0da53644f8c9.js:56079:26)
    at HTMLUnknownElement.callCallback (http://localhost:8080/vendor.84f481ea0da53644f8c9.js:46333:14)

so if anyone can help me not loose my mind i would really appreciate it :)
thanks

This could be related to this issue https://github.com/apollographql/apollo-link-state/issues/187

yes ... i guess no fix for now :(

@wowzaaa  Can you try this PR by installing locally https://github.com/apollographql/apollo-link-state/pull/193 . This is still experimental PR. But want to know if it fixes you issue

well this is embarrassing :D but can you tell me how i can i do that exactly :D?

#187 is now fixed! Upgrading to the latest versions of apollo-cache-inmemory and apollo-link-state should now fix your issue. Thank you for your patience 😀

i am sry to say that i still have the error :)
packake.json
"dependencies": {
    "animate.css": "^3.5.2",
    "apollo-cache-inmemory": "^1.1.7",
    "apollo-cache-persist": "^0.1.1",
    "apollo-client": "^2.2.2",
    "apollo-link-context": "^1.0.3",
    "apollo-link-http": "^1.3.2",
    "apollo-link-state": "^0.4.0",
    "autoprefixer": "^7.2.5",
    "aws-sdk": "^2.188.0",
    "axios": "^0.17.1",
    "babel-polyfill": "^6.26.0",
    "babel-runtime": "^6.26.0",
    "bootstrap": "^4.0.0",
    "compression-webpack-plugin": "^1.1.6",
    "css-loader": "^0.28.9",
    "dotenv": "^4.0.0",
    "graphql-tag": "^2.6.1",
    "jwt-decode": "^2.2.0",
    "react": "^16.2.0",
    "react-apollo": "^2.0.4",
    "react-async-script": "^0.9.1",
    "react-dom": "^16.2.0",
    "react-google-recaptcha": "^0.9.9",
    "react-router": "^4.2.0",
    "react-router-dom": "^4.2.2",
    "script-ext-html-webpack-plugin": "^1.8.8",
    "style-loader": "^0.19.1",
    "uglify": "^0.1.5",
    "webfontloader": "^1.6.28",
    "yup": "^0.24.0"
  }

"apollo-utilities": "^1.0.6",
same errors as in the initial post

@wowzaaa you have to update apollo-cache-inmemory to 1.1.7 and apollo-link-state to 0.4.0

u can see they have the latest version in package.json ... i deleted node_modules ... reinstalled ... nothing :(

@peggyrayzis  please reopen this
here is a reproduction of the error:
https://codesandbox.io/s/v69v13w0o0

Yes, this issue still exists.
client.onResetStore(stateLink.writeDefaults); as mentioned in the docs didn't resolve this issue.
I think, after resetStore is called, counter query is executed before onResetStore callback execution.
If onResetStore callback is executed before counter query, this problem might be solved

@wowzaaa you can temporarily fix the crashing of your app by add {} as fallback to resolverMap at line
change line 75 to
var resolverMap = resolvers[rootValue.__typename || type] || {};
check Local Development section of readme, if want to know how to make changes locally and test it

nope :( same thing
btw do i need to do anything special to reopen this issue? or maybe repost it


Fix fir filter convolution

The current FIR filter implementation does not reverse the filter taps before performing the convolution, leading to a correlation operation rather than convolution. This pull request fixes the problem.
For instance, passing a signal [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] through a filter with impulse response [1.0, 2.0] should produce [4.0, 7.0, 10.0, 13.0, 16.0], but the current implementation produces [5.0, 8.0, 11.0, 14.0, 17.0].
It can be verified with the following example:
use futuresdr::anyhow::{Context, Result};
use futuresdr::blocks::FirBuilder;
use futuresdr::blocks::VectorSink;
use futuresdr::blocks::VectorSinkBuilder;
use futuresdr::blocks::VectorSourceBuilder;
use futuresdr::runtime::Flowgraph;
use futuresdr::runtime::Runtime;

fn main() -> Result<()> {
    let mut fg = Flowgraph::new();

    let input = vec![1.0_f32, 2.0, 3.0, 4.0, 5.0, 6.0];
    let src = fg.add_block(VectorSourceBuilder::new(input.clone()).build());
    let filter = fg.add_block(FirBuilder::new::<f32, f32, _>([1.0, 2.0]));
    let snk = fg.add_block(
        VectorSinkBuilder::<f32>::new()
            .init_capacity(input.len())
            .build(),
    );

    fg.connect_stream(src, "out", filter, "in")?;
    fg.connect_stream(filter, "out", snk, "in")?;

    fg = Runtime::new().run(fg)?;

    let snk = fg
        .kernel::<VectorSink<f32>>(snk)
        .context("block not found")?;
    let v = snk.items();
    println!("{:?}", v);

    Ok(())
}

Thank you. My understanding is that this doesn't matter for firdes, since they are symmetric anyway, no?
Also, is this the way you would, intuitively, expect the API to work or should we maybe reverse the taps when creating the FIR block and pass the reversed taps to the FIR? Would probably also be faster (I assume). Or do you think this would be a strange API for the FIR function in futuresdr?

The problem arises with the polyphase decompositions, which are generally not symmetric.
The PR is indeed a bit slower than the current implementation. As you say, we could specify reversed taps (and I could reverse when I decompose the filter into polyphase components), but I find it a bit odd - at least it should be documented :)
I think the most intuitive way would be to reverse the taps in e.g., PolyphaseResamplingFirKernel::new(), but it is a bit tricky with the TapsAccessor trait. We could add a TapsAccessor::reverse() method or similar, but it would require the types to either be mutable or TapsAccessor::reverse() to return a new instance.
Adding a reverse() method would be relatively simple, but the question is how many methods we want to add to TapsAccessor. For instance, I would also prefer to split the taps in the polyphase filter (#54) into multiple separate TapAccessors, but this would require yet another method to the TapAccessor trait (or we should do the actual polyphase decomposition in firdes instead of PolyphaseResamplingFirKernel).
In the end, I guess it is a matter of preference and where to put the complexity. Performance wise, there is no doubt that we should aim for aligned arrays.

Thanks for your reply. I didn't consider the interaction with the TapAccessor. So let's go with this approach.

JuliDi, I agree that it would probably be more efficient.
I guess TapsAccessor needs to be modified to require also the IntoIterator. That could probably be quite useful in many situations.
To support .rev() as in your example, I believe we would also have to ensure that IntoIterator::IntoIter is a DoubleEndedIterator.
Do you think this could be done in a clean way without requiring where clauses everywhere?

Thanks for your Input, @AndersKaloer!
Presumably, without some tricks this could get very nasty indeed. There seem to be ways to implement traits for multiple types at once using macros (see e.g. https://stackoverflow.com/questions/39150216/implementing-a-trait-for-multiple-types-at-once).
For example, the implementation of the get() function for the TapsAccessor is the same for all types.https://github.com/FutureSDR/FutureSDR/blob/a92aed12a74b7978bb45bb5be43f9ebe0a1930b7/futuredsp/src/tapsaccessor.rs#L13
For the num_taps() on the arrays, I don't see the exact reason for not using self.len(). Does that not work here?

I've just come across this page https://doc.rust-lang.org/1.30.0/book/second-edition/ch19-03-advanced-traits.html#using-supertraits-to-require-one-traits-functionality-within-another-trait and started wondering whether we could just have the TapsAccessor trait require the DoubleEndedIterator. Then we automatically have that functionality – and for types that don't provide it by default, we can still implement it manually.
trait TapsAccessor: Send, TapsAccessor { ... }

Am I overlooking something or might this actually work?


Loop inside workflow causing external events being ignored.

Expected Behavior

I am looping inside a workflow to receive external events, but some events got ignored in this scenario.
Actual Behavior

No external events should be ignored.
Steps to Reproduce the Problem

Worker
public class LoopWorkflowWorker {
  public static void main(String[] args) throws Exception {
    // Register the Workflow with the builder.
    WorkflowRuntimeBuilder builder = new WorkflowRuntimeBuilder().registerWorkflow(LoopWorkflow.class);
    // Build and then start the workflow runtime pulling and executing tasks
    try (WorkflowRuntime runtime = builder.build()) {
      System.out.println("Start workflow runtime");
      runtime.start();
    }
  }
}

Client
public class LoopWorkflowClient {
  public static void main(String[] args) {
    try (DaprWorkflowClient client = new DaprWorkflowClient()) {
      String instanceId = client.scheduleNewWorkflow(LoopWorkflow.class);
      System.out.printf("Started a new external-event workflow with instance ID: %s%n", instanceId);

      for (int i = 0; i < 10; i++) {
        if (i%2 == 0) client.raiseEvent(instanceId, "Approval1", true);
        else client.raiseEvent(instanceId, "Approval2", true);
        Thread.sleep(5000);
      }

      client.waitForInstanceCompletion(instanceId, null, true);
      System.out.printf("workflow instance with ID: %s completed.", instanceId);

    } catch (TimeoutException | InterruptedException e) {
      throw new RuntimeException(e);
    }
  }
}

Workflow
public class LoopWorkflow extends Workflow {
  @Override
  public WorkflowStub create() {
    return ctx -> {
      while (true){
        Task<Boolean> approval1 = ctx.waitForExternalEvent("Approval1", boolean.class);
        Task<Boolean> approval2 = ctx.waitForExternalEvent("Approval2", boolean.class);
        Task<?> winner = ctx.anyOf(approval1, approval2).await();
        if (winner == approval1) {
          if (!ctx.isReplaying()) {
            System.out.println("approval1");
          }
        } else {
          if (!ctx.isReplaying()) {
            System.out.println("approval2");
          }
        }
      }
    };
  }
}

Expect to see interleave sequence of approval1 and approval2 but the output is

This means all approval2 events get ignored.
Release Note

RELEASE NOTE:

/assign

This behavior is expected
Cause: https://github.com/microsoft/durabletask-java/blob/ad8c959b580a635da818b6f4c56731adce0a8ef3/client/src/main/java/com/microsoft/durabletask/TaskOrchestrationExecutor.java#L420C28-L420C48, each iteration there are two tasks created and we put them in our task queue, but eventually only one task will be consumed in one iteration, so in next iteration, the other event will consume the old task left in the queue causing the behavior that this event is ignored (anyway we already lose the reference to the old task). Because we are using the loop inside workflow, the task queue is a singleton so old unconsumed tasks will pipe in that singleton queue causing this behavior.


ModuleNotFoundError: No module named 'malmopy'

Every time I try to run pig_chase_human_vs_agent.py, I get this error
Traceback (most recent call last):   File "D:\malmo-challenge\ai_challenge\pig_chase\pig_chase_human_vs_agent.py", line 26, in <module>     from malmopy.agent import RandomAgent ModuleNotFoundError: No module named 'malmopy'
I have already ran malmo-challange\setup.py

I don't know if this will help you, but I can remember running into this and having to run the pip install instructions to get it working. May give that a try. I don't think the devs are coming back to this project unfortunately.


Allow short contract IDs

This is my first piece of Rust code. Any feedback is welcome!
What
When a short ID is provided, it is padded with zeros at the end.
Why
Convenience
Closes #45
Known limitations
N/A

Ah, the problem might be that this PR doesn't have the changes from the main branch, and therefore I am using the CLI wrong in my test. Could you merge main in?


MQTT Forwarder request for Milesight

Hello,
this is a request for an MQTT forwarder to suit the Milesight Gateways please.

As far as I'm aware of, Milesight does not offer the option to install
additional packages on the gateway.
On Wed, Jun 12, 2024, 09:36 karaboLindiwe @.***> wrote:

Hello,
this is a request for an MQTT forwarder to suit the Milesight Gateways
please.
—
Reply to this email directly, view it on GitHub
https://github.com/chirpstack/chirpstack-mqtt-forwarder/issues/56, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AABIM6J33OPE7O4BPFF3D7TZHAB7HAVCNFSM6AAAAABJF3YGE6VHI2DSMVQWIX3LMV43ASLTON2WKOZSGM2DQMJWGQYTOMA
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Please see https://www.chirpstack.io/docs/gateway-configuration/milesight.html


fix: Release please action checks out repo on release for build

#22  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @AngelOnFira and the rest of your teammates on  Graphite


Allow dummy method signature to be more unique to prevent collisions

Changes
Fixes #1163
If --class-name is passed with only 1 Rust input, the class name is included in the dummy method.
Example:
flutter_rust_bridge_codegen --rust-input path/to/code.rs --class-name MyApi
dummy_method_to_enforce_bundling_MyApi

If there are 2 class names, then the default/fallback is used for the combined dummy method.
Example:
flutter_rust_bridge_codegen --rust-input path/to/one.rs path/to/two.rs --class-name MyApiOne MyApiTwo
dummy_method_to_enforce_bundling_CargoPackageNameInPascal

For single Rust inputs, the change is not breaking. However for the 2+ Rust inputs, the change is breaking.
I'm thinking about adding a new arg (ex. --base-class-name) that would prepend the real class name.
Example:
flutter_rust_bridge_codegen --rust-input path/to/one.rs path/to/two.rs --class-name MyApiOne MyApiTwo --base-class-name BaseClassName
dummy_method_to_enforce_bundling_BaseClassName_MyApiOne

dummy_method_to_enforce_bundling_BaseClassName

And if the user doesn't provide a base class name, _BaseClassName will not be added.
Let me know what you think.
Checklist

[x] An issue to be fixed by this PR is listed above.
[x] New tests are added to ensure new features are working. End-to-end tests are usually in the ./frb_example/pure_dart example, more specifically, rust/src/api.rs and dart/lib/main.dart.
[x] The code generator is run and the code is formatted (via just precommit).
[x] If this PR adds/changes features, documentations (in the ./book folder) are updated.
[x] CI is passing.

Remark for PR creator

Justfile is a task runner for the command line interface that allows you to run shell commands from a file named justfile in your project directory. You can use Justfile after installing it. Note that commands written in justfile of this repository are expected to be run in bash, not cmd or powershell. Running just ... commands in cmd or powershell will produce errors as the syntax is not compatible. On Windows, you can use git bash if you have Git installed.
If fzyzcjy does not reply for a few days, maybe he just did not see it, so please ping him.

I added the --base-class-name arg to fix the breaking issue I described above.
Here are the expected results:
No class names:
dummy_method_to_enforce_bundling

Base class name, no class names:
dummy_method_to_enforce_bundling_BaseClassName

No base class name, x class names:
dummy_method_to_enforce_bundling_ClassName

Base class name, x class names:
dummy_method_to_enforce_bundling_BaseClassNameClassName

Good job! I will probably review within a day :)

So, before checking the detailed implementation, we may need to firstly consider the API design.

As is mentioned above, it seems that this introduces some breaking change. Is this avoidable? We know breaking changes are bad ;)
It feels a little bit counter-intuitive to see both "class name" and "base class name", and a user may need a bit of time to understand what are the two things. So is it possible we somehow come up with a nicer user-facing API

Also cc @dbsxdbsx who implemented this helpful multi-file feature

So, before checking the detailed implementation, we may need to firstly consider the API design.

As is mentioned above, it seems that this introduces some breaking change. Is this avoidable? We know breaking changes are bad ;)
It feels a little bit counter-intuitive to see both "class name" and "base class name", and a user may need a bit of time to understand what are the two things. So is it possible we somehow come up with a nicer user-facing API

Also cc @dbsxdbsx who implemented this helpful multi-file feature

If we use just --class-name the change will be breaking in multi-file scenarios. There is no way to tell whether or not the user wants to make their dummy method unique. In a single file example, the change is not breaking because providing a class name is optional. If they happen to provide it, then the class name is added to the single dummy method.
I agree that it may be confusing. I think a more specific arg (ex. --dummy-method-suffix) would be better. Let me know what you think.

a more specific arg (ex. --dummy-method-suffix) would be better.

That sounds more specific to me.
Btw I am not sure whether this change will cause problems to some other proposals: Mainly https://github.com/fzyzcjy/flutter_rust_bridge/issues/947#issuecomment-1454807065 by @GregoryConrad (maybe in another issue but I cannot find it). In short, in the long term we are going to ensure symbols are not duplicated by adding postfix/prefix to each and every of them, not only the dummy_method_to_enforce_bundling one. Maybe this PR can address this problem as well uniformly?
Also cc @GregoryConrad

Maybe this PR can address this problem as well uniformly?

Sure!
In that case, should this be default behavior instead of needing an arg passed in? That way the user doesn't have to configure anything to be able to use multiple FRB libraries.

@fzyzcjy I think you are looking for this: https://github.com/dart-lang/sdk/issues/50565#issuecomment-1455695630
Ideally, it shouldn't just be the dummy method getting a prefix/suffix, but rather every function as @fzyzcjy mentioned above.

@fzyzcjy I think you are looking for this: dart-lang/sdk#50565 (comment)
Ideally, it shouldn't just be the dummy method getting a prefix/suffix, but rather every function as @fzyzcjy mentioned above. Every library should have a unique prefix/suffix, and perhaps FRB version should be added in as well.
@erikas-taroza Thanks for working on this! It's much needed.

I agree. I was asking because the dummy method, when changed, will need to be updated in the user's Swift/Obj-C code, making it break. I think that the uniqueness should be an OOTB feature.
I'll start working on this, converting back to draft.

FWIW, I think the prefix/suffix should be opt-in in the FRB code gen config struct, so it won’t break existing code, but is there for library authors (and others) who need it. I think breaking the swift/objc code, if the feature is opt-in, should be a non-issue.

@fzyzcjy, thanks for ccing me. Frankly, I am out of bandwidth to get into this issue and pr, since I am working on the shared block issue, which may erase the suffix with block_index for shared API, if it succeeds.
But generally, I hope no new flag is added unless it is essential. Better to make changes as transparent to the user as possible.

I do not have access to a Mac at the moment so I cannot test if the changes solve the problem. I asked the person that submitted an issue on my repo but they haven't responded yet.
If anyone can test, please create a new Flutter project with FRB (you can use the template). Then, set up my plugin using the test-frb-prefix branch. Add this to your pubspec.yaml and follow the README steps:
simple_audio:
    git:
      url: https://github.com/erikas-taroza/simple_audio
      branch: test-frb-prefix

That branch contains code that was generated by the changes in this PR. If everything works, it should be able to run on Mac. If it doesn't, this error should pop up:
'dummy_method_to_enforce_bundling' has different definitions in different modules; definition in module 'simple_audio.bridge_generated' first difference is function body

Thank you for your help.

@fzyzcjy Can this be reopened? The user of my plugin that initially ran into this issue confirmed that the PR works on their apple device.

Sure!

I just wonder if the change made by this PR is still meaningful, if mine  is merged. Anyway, @fzyzcjy , it is up to you.

Good question! I am busy and have not have time to review your PR (apologies!), but briefly looking at them this looks like a question. @erikas-taroza what do you think?

I just wonder whether the change made by this PR is still meaningful, if mine  is merged. Anyway, @fzyzcjy , it is up to you.

If your PR solves the original issue, then I think it is fine to use your solution instead of mine. The original issue was when a user of my plugin that uses FRB tried to use their own Rust code with FRB. It caused a naming collision on macOS/iOS because of duplicate symbols.


Make the cursor API stateful and widget-local.

This is an attempt at #1368. The point is that instead of calling set_cursor on every mouse move, we call it once and then it will take effect whenever the calling widget is hot or active.
Since this is a more "structured" API than the previous one, it's also a bit less powerful. This is because druid now takes care of bubbling and deciding between the various cursor requests, whereas in the previous API it was all under the caller's control. Having said that, I don't actually know of any realistic use-cases that the new API misses out on.

If I am not mistaken, this only allows setting cursors for WidgetPod boundaries? Since that's where the WidgetState is located. I think that is fine since most users should be using WidgetPod anyways. I don't think that should be a problem, but might be worth documenting somewhere.
I guess this is sort of what I also imagined at first, except I hit a wall at having some widget state managed by druid. I guess this is exactly that except it only works for setting cursors within WidgetPod boundaries.
I took a quick look at the code and it seems very straight-forward to me, looks good.

We definitely want to be able to set the cursor in Runebender to represent hovering over, eg, control points. Does this preclude that?

If I am not mistaken, this only allows setting cursors for WidgetPod boundaries? Since that's where the WidgetState is located. I think that is fine since most users should be using WidgetPod anyways. I don't think that should be a problem, but might be worth documenting somewhere.

If you call set_cursor once and forget about it, then yes, it will go according to the WidgetPod boundaries. But you can always track the location of the mouse and call set_cursor again if you want to do something more sophisticated.

We definitely want to be able to set the cursor in Runebender to represent hovering over, eg, control points. Does this preclude that?

I don't think so, no. You'll call set_cursor when the mouse goes over a control point, and then clear_cursor (or set_cursor again) when it leaves the control point. The main difference between this and the previous state of things is that you used to have to call set_cursor on every mouse move; now you do it when you actually want to change the cursor.

I don't think so, no. You'll call set_cursor when the mouse goes over a control point, and then clear_cursor (or set_cursor again) when it leaves the control point. The main difference between this and the previous state of things is that you used to have to call set_cursor on every mouse move; now you do it when you actually want to change the cursor.

I think it does? but maybe I'm interpreting the question wrong. Because if you set the cursor within a widget(pod) it will automatically set the cursor to that when it hovers over that widget(pod) right?

Right, but if you want to do something fancier (like only show a cursor while the mouse is over some more complicated subset of the WidgetPod), you can just listen to mouse moves and call set_cursor again (or clear_cursor) when appropriate.

Thanks for the comments! I think I've addressed them all, and I also realized that I never updated Split to clear the cursor...


format attribute under condition

I am using attribute format like this
module Api::V1
  class LocationResource < ApplicationResource
    #############
    # Attributes
    #############
    attribute :contact_number, format: :phone
    #############
    # Relations
    #############
    has_one :address
 end
end

I would like to apply format on contact_number if only address.country == 'US'
I couldn't find proper syntax for this.
Any idea?

The format doesn't contain a conditional feature. However you could create a custom getter for contact_number that inspects the address and applies the format.

How can I create that? can you give example please?

Try this:
module Api::V1
  class LocationResource < ApplicationResource
    #############
    # Attributes

    def contact_number
      if @model.address.country == 'US'
        # apply US formatting, return as a string
      else
        @model. contact_number
      end
    end

    attribute :contact_number
    #############
    # Relations
    #############
    has_one :address
 end
end

Thanks, I will try that way


Cannot be used with password input

Describe the bug
Drag box cannot work well when i use input type is password
Reproduction
excample:single-target
Steps to reproduce the behavior:

Focus password input
drag box
box cannot drag into dustbin, but box opacity changed

Expected behavior
work with password input
Desktop (please complete the following information):

OS: [ubuntu 18.04,mac os catalina]
Browser [chrome]
Version [77, 78]

Additional context
I find canDrag will be excuted before beginDrag. So making the input lose focus can solve the problem. But it doesn't seem very elegant way.

This is still an issue:
example: https://codesandbox.io/s/charming-clarke-4z6p7s?file=/src/Container.js
Desktop (please complete the following information):
OS: [ maxOS Ventura 13.6.1]
Browser [chrome]
Version [118.0.5993.117]


Broken paths for ped scenarios

Dear developers,
I'm trying to run the simulation by the example provided in your documentation. I've built the system from the master branch.
However, I'm facing several problems. The first one is about broken paths:
arena_rosnav_sim | [ INFO] [1689075067.757226281]: Loading scene [/home/docker_arena/catkin_ws/src/utils/arena-simulation-setup/world/map_empty/scenarios/map_empty.xml] for simulation
arena_rosnav_sim | [ INFO] [1689075067.757348850]: Could not load the given scene file, trying to load empty scene

The second one is the problem, described in this issue. PLease, could you help to solve all the problems? Thank you in advance!

The broken paths is a simple fix. The world directory is actually called worlds and the scenario directory is actually called ped_scenarios.
In release 0.2.2, edit the start_arena.launch file line 146 to     <param name="scene_file" value="$(find arena-simulation-setup)/worlds/$(arg world_file)/ped_scenarios/$(arg world_file).xml" type="string"/>
The other problem doesn't have a solution yet, but is new to commit 91cee6f42f42d9172616b604d53ebbcaeef2e5a1. Switching to 0.2.2 avoids it for now.


fix: env bug for fieldRef

What type of PR is this?

What does this PR do?

Which issue(s) does this PR fix?

Fixes #
Special notes for your reviewer:

Does this PR introduce a user-facing change?

NONE

/lgtm
/approve


[Question] How can I analyze the following memory footprint?

location_type                            count  memory_usage
=============                            =====  ============
ZendOpArrayBodyMemoryLocation            964    758080
ZendStringMemoryLocation                 8396   628116
ZendArrayTableMemoryLocation             515    299768
ZendOpArrayHeaderMemoryLocation          998    239520
ZendArrayTableOverheadMemoryLocation     467    125280
ZendArgInfosMemoryLocation               811    50976
ZendClassEntryMemoryLocation             80     39680
ZendArrayMemoryLocation                  412    23072
ZendObjectMemoryLocation                 158    22512
RuntimeCacheMemoryLocation               254    22176
LocalVariableNameTableMemoryLocation     804    16040
ObjectsStoreMemoryLocation               1      8192
ZendPropertyInfoMemoryLocation           118    6608
CallFrameVariableTableMemoryLocation     12     6528
DefaultPropertiesTableMemoryLocation     36     1584
DynamicFuncDefsTableMemoryLocation       91     1104
CallFrameHeaderMemoryLocation            13     1040
DefaultStaticMembersTableMemoryLocation  11     464
StaticMembersTableMemoryLocation         10     416
ZendReferenceMemoryLocation              3      96

What is a possible command that can help me find some more info on these data?

@maxgalbu
Hi!
From the output, the total size of the top 20 memory consuming types of locations is 2,251,252 bytes at the time of the analysis.
First, consider whether this approximately 2 MB of information is likely to be useful to you. If you are convinced that you have a memory problem of a much larger size, you may really need a memory analysis at a different timing, or Reli may not be getting the information you want to know, or the analyzed process was the wrong process.
General questions

What is your purpose of the analysis? Finding memory bottlenecks for performance tuning, or finding the cause of a memory leaks?
If you are convinced that the target process leaks memory, how are you convinced it?
In what timing did you use Reli?
What application runtime do you use? php-fpm, or mod_php?

Getting the summary
You should first see the summary. This summary gives you an rough idea of how useful the output is to you. The output would be like the below.
[
  {
    "zend_mm_heap_total": 536285184,
    "zend_mm_heap_usage": 400364587,
    "zend_mm_chunk_total": 283115520,
    "zend_mm_chunk_usage": 261628896,
    "zend_mm_huge_total": 253169664,
    "zend_mm_huge_usage": 138735691,
    "vm_stack_total": 262144,
    "vm_stack_usage": 10512,
    "compiler_arena_total": 1638400,
    "compiler_arena_usage": 1550992,
    "possible_allocation_overhead_total": 17044713,
    "possible_array_overhead_total": 82895216,
    "memory_get_usage": 533571712,
    "memory_get_real_usage": 536285184,
    "cached_chunks_size": 0,
    "heap_memory_analyzed_percentage": 75.03482249823618,
    "php_version": "v82",
    "analyzer": "reli 0.11.2"
  }
]

Look at "memory_get_usage" and "memory_get_real_usage". If they are much smaller than the memory usage you expected through ps or top commands, the target process may be using a lot of memory in areas outside ZendMM. This is an area that current Reli does not handle very well. So if you are interested in this area, use php-memprof, or massif with an experienced C programmer. If both the memory usage reported by Reli and ps or top commands are below your expectation, then the timing of the analysis or the target process can be wrong.
Also, one of the important fields is "heap_memory_analyzed_percentage". The closer this number is to 100, the better Reli knows the memory usage of the target process. Conversely, if it is closer to 0, Reli does not know much about the memory usage of the target process. Then it may be more fruitful to look for other analysis methods. You've once mentioned Phalcon in another issue. I don't know about phalcon well, but Reli currently doesn't support extracting information in the instance of internal classes provided by extensions, so I'm not confident that Reli can analyze the application built on Phalcon well enough.

thanks for the help. I fixed the memory leak by manually commenting part of code. Phalcon was the culprit so it was impossible to spot using reli-prof


fix: Empty swap table with valid swaps

PR Type

[x] Bugfix
[ ] Feature
[x] Refactoring

Context
Adds the ability to pass variables as ref to useGraphql
reviewers kindly also test , tyvm

removed: unsued code useNewCollectionId
fix: gallery item refetch with wrong params
[x] Closes #11296

Screenshot 📸

[x] My fix has changed something on UI;

@preschian any idea why the preview link is not working?

is not showing the skeleton first better and then fallback to the empty message?

@preschian any idea why the preview link is not working?

hhmm, this is new for me. seems like need to check it through netlify dashboard cc @vikiival

closing in favour of  #11303


Populate user guide "explanation"/"discussion"/"concept" pages

The user guide is for explaining the authentication, search, and access concepts in earthaccess, but they're currently a work in progress
### Tasks
- [ ] Populate user-guide/authentication
- [ ] https://github.com/nsidc/earthaccess/issues/855
- [ ] https://github.com/nsidc/earthaccess/issues/854

Closing as tasks have been converted to separate issues


Cannot read properties of undefined (reading 'value') on blockchain trx page

Steps to reproduce:

Log into Demo website with SSO flow
Open the blockchain trx page https://demo.staging.tonomy.foundation/blockchain-tx

Expected behaviour

Page renders and I can click to make a transaction

Actual behaviour

Error popup with "Cannot read properties of undefined (reading 'value')"

Needed to reset and bootstrap blockchain. This had not been done on staging with the latest code.


how about enable starttls check

which used for smtp, imap, ldap mostly.

such as this : https://github.com/openssl/openssl/issues/1955


Torch audio 0.11 breaks pitch shifts

I suspect there are APIs removed from torchaudio version 0.11 that causes it to break.
I am currently using torch-audiomentations.
Backward-incompatible changes
Ops

Dropped pseudo complex support from F.spectrogram, T.Spectrogram, F.phase_vocoder, and T.TimeStretch
The support for the pseudo complex type was deprecated in 0.10, and now they are removed in 0.11. For the detail of this migration plan, please refer to https://github.com/pytorch/audio/issues/1337.

        Args:
            complex_specgrams (Tensor):
                A tensor of dimension `(..., freq, num_frame)` with complex dtype.
            rate (float): Speed-up factor
            phase_advance (Tensor): Expected phase advance in each bin. Dimension of `(freq, 1)`

        Returns:
            Tensor:
                Stretched spectrogram. The resulting tensor is of the same dtype as the input
                spectrogram, but the number of frames is changed to ``ceil(num_frame / rate)``.

        Example
            >>> freq, hop_length = 1025, 512
            >>> # (channel, freq, time)
            >>> complex_specgrams = torch.randn(2, freq, 300, dtype=torch.cfloat)
            >>> rate = 1.3 # Speed up by 30%
            >>> phase_advance = torch.linspace(
            >>>    0, math.pi * hop_length, freq)[..., None]
            >>> x = phase_vocoder(complex_specgrams, rate, phase_advance)
            >>> x.shape # with 231 == ceil(300 / 1.3)
            torch.Size([2, 1025, 231])
        """
        if rate == 1.0:
            return complex_specgrams

        # pack batch
        shape = complex_specgrams.size()
        complex_specgrams = complex_specgrams.reshape([-1] + list(shape[-2:]))

        # Figures out the corresponding real dtype, i.e. complex128 -> float64, complex64 -> float32
        # Note torch.real is a view so it does not incur any memory copy.
        real_dtype = torch.real(complex_specgrams).dtype
        time_steps = torch.arange(0, complex_specgrams.size(-1), rate, device=complex_specgrams.device, dtype=real_dtype)

        alphas = time_steps % 1.0
        phase_0 = complex_specgrams[..., :1].angle()

        # Time Padding
        complex_specgrams = torch.nn.functional.pad(complex_specgrams, [0, 2])

        # (new_bins, freq, 2)
        complex_specgrams_0 = complex_specgrams.index_select(-1, time_steps.long())
        complex_specgrams_1 = complex_specgrams.index_select(-1, (time_steps + 1).long())

        angle_0 = complex_specgrams_0.angle()
        angle_1 = complex_specgrams_1.angle()

        norm_0 = complex_specgrams_0.abs()
        norm_1 = complex_specgrams_1.abs()

>       phase = angle_1 - angle_0 - phase_advance
E       RuntimeError: The size of tensor a (2100) must match the size of tensor b (345) at non-singleton dimension 1

Do you have any plans to update the support for torchaudio 0.11?

Sorry, just saw this issue. Seems like @ilaria-manco has whipped up a PR already, I'll review and merge when I have time!

Thank you @ilaria-manco  and @KentoNishi  so much!


Expose variantMatcher and variantParentMatcher utils

Clear and concise description of the problem
It will be helpful to have these utils exported from @unocss/code, so users can easily add custom variants.
Suggested solution
Usage example:
import type { Variant } from '@unocss/core'
import { variantMatcher } from '@unocss/core'

export function variantAfterFocusVisible(): Variant {
  return variantMatcher('after-focus-visible', (input) => ({ prefix: `input:focus-visible ~ $$ ${input.prefix}` }))
}

Alternative
No response
Additional context
No response
Validations

[X] Read the Contributing Guidelines.
[X] Read the README.md of using the package.
[X] Already used the Interactive Docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

Haven't noticed, can be imported from @unocss/preset-mini/utils. Closing this one 🙈

It's not from the core. And you can import it now:
import { variantMatcher } from '@unocss/preset-mini/utils'


Tests do not run

(v1.1) pkg> test Charibde
   Testing Charibde
 Resolving package versions...
   [ ... snipped ...]
ERROR: LoadError: UndefVarError: HeapedVectors not defined
Stacktrace:
 [1] include at ./boot.jl:326 [inlined]
 [2] include_relative(::Module, ::String) at ./loading.jl:1038
 [3] include(::Module, ::String) at ./sysimg.jl:29
 [4] top-level scope at none:2
 [5] eval at ./boot.jl:328 [inlined]
 [6] eval(::Expr) at ./client.jl:404
 [7] top-level scope at ./none:3

Weird, It is running successfully on my machine.

Even if you use ] add?

yes


Use oghttp2 HTTP/2 codec

Parallel to https://github.com/envoyproxy/envoy/issues/21245
Switching to oghttp2 allows

turning up UHV (https://github.com/envoyproxy/envoy/issues/27377) so significantly more standards compliant and consistent header sanitization
significantly better security pipeline for data plane (future-proofs against several zero days)

Theoretically no significant behavioral or performance differences (or we should turn them off =P)

cc @birenroy we have any internal docs for the last two points we can link here?

@alyssawilk what is the timeline for deprecating nghttp2?

Probably about a year (longer than the normal reloadable flag deprecation process, but it's also a larger change) but we can theoretically add an option to compile it out sooner if it's problematic.

Worth mentioning and unfortunately I forgot to link, https://github.com/envoyproxy/envoy/pull/31086 switched the default to oghttp2 last quarter!

We ran into some issues with oghttp2 and I have created: https://github.com/envoyproxy/envoy/issues/31710


Add defined shapes like an arrow.

I want to visualize different principal axes of a protein, I calculated them using two different methods and now want to show the difference between them. My idea for this was to directly draw two arrows (one for each main principal axes for both methods) on to the protein. The effect should be similar to centering the reference xyz axes (as eg in VMD).
How could I do that with ngl, or better nglview? I haven't found any primitive shapes in the docs.

Have a look at the Shape class http://arose.github.io/ngl/api/Shape.html
Also, there is basic support to show principal axes for any selection with the axes representation. Still undocumented but see http://arose.github.io/ngl/?example=axes.

per nglview, you can use
view.shape.add_arrow([NGL parameters])

Nice this works really well. Is there also a way to specify the color using HEX strings?

Nice. How do I remove arrow?


Remove base64 decoding/encoding of rabbitmq-server.conf for bosh cli v2 compat

Hi guys
The property rabbitmq-server.config allows specifying additional rabbitmq server config.
Currently, it expects a base64 encoded string as described in the docs.
However, this relies on the bosh cli to interpret ERB expressions in the deployment manifest. This was the case for the old ruby cli, but the new golang cli (v2) does (intentionally) not support this:
https://github.com/cloudfoundry/bosh-cli/issues/282
This forces bosh cli v2 users of this release to somehow (manually) preprocess the bosh deployment manifest before deploying (or just put base64 in the deployment manifest - either of it is not that nice) - it would be nicer if we could put the config as plain string, i.e. rabbitmq-server.raw_config or similar...  Would this be possible?
I can't see why passing rabbitmq-server.config as a plain string could lead to issues, i.e.:
rabbitmq-server:
  config: |
    [{rabbit, [{vm_memory_high_watermark,0.5}]}].

Hi @MatthiasWinzeler,
Thanks for your issue. We now recommend generating the Base64 encoded value outside of the BOSH interpolation process, rather than using ERB to generate it inline in the manifest.
Due to other dependencies we cannot change the way the release handles this input, and we also cannot add another property that could configure this at the moment.
Thanks,
@benchapman & @dlresende


kick.com all audio muted on the pages

Ill try to post screenshots of my settings but all permissions are turned on it seems to only happen on kick  all other sites have no issues after turning on permissions
https://i.imgur.com/hxajbA1.png
https://i.imgur.com/OXnSWt5.png

also it seems disabling the plugin fixed it but turning it back on without refreshing the page the plugin is working on the site but refreshing the page requires me to disable it again and i can turn it back on and it works until i refresh the page

Hi, i have tested the extension myself on kick.com and it works without problems, even without permissions... Would you mind explaining what do you mean when you say that it doesn't work when you refresh the page with the extension enabled? Like, does the audio get completely muted or just not get boosted? the only odd thing i found is that after refreshing the page the stream audio gets muted automatically (you can re-enable it by just pressing the button), but this also happens with the extension disabled so i think it's more of a firefox thing.

I can disable the extension then refresh a page and have the extension back on and until i refresh that page it works fine on that page then it breaks again if i refresh it. im new   to firefox

I'm sorry, but i can't seem to be able to reproduce this bug, so i have no way to fix it. You might want to try actually disabling the permissions, so that they get enabled only on click; that might fix it, at least on kick.com

it seems to be working now so i wonder if it was a bad gpu driver on nvidias end randomly i did DDU cause i felt like my other problem with games resizing randomly might be fixed with DDU.  so after fresh installing the driver i thought  it may have fixed this as well. not sure if that helps you in anyway for recommendations to other people. to try fresh installing GPU drivers with like DDU if they've recently updated the driver


Failing to clear wrapped line

Environment
Windows build number: 10.0.18362.657
Windows Terminal version (if applicable): Not sure; latest version on Microsoft Store as of 2020-03-01

Any other software?
PowerShell 6.2.4
Python 3.7.6
TensorFlow 1.14.0

Steps to reproduce
Run any program which attempts to clear a line that exceeds the size of the window and is wrapped onto the next line.
If the window is wide enough to fit the entire line, this is not an issue.
Expected behavior
The entire 'line' should be deleted
212/723 [=======>......................] - ETA: 25:52 - loss: 1.6581 - rpn_class_loss: 0.0278 - rpn_
bbox_loss: 0.3465 - mrcnn_class_loss: 0.3752 - mrcnn_bbox_loss: 0.4602 - mrcnn_mask_loss: 0.4483

Actual behavior
Only the last line of the wrapped line is cleared, leaving behind lots of cut off lines.
190/723 [======>.......................] - ETA: 27:10 - loss: 1.6521 - rpn_class_loss: 0.0285 - rpn_
191/723 [======>.......................] - ETA: 27:06 - loss: 1.6524 - rpn_class_loss: 0.0284 - rpn_
192/723 [======>.......................] - ETA: 27:02 - loss: 1.6509 - rpn_class_loss: 0.0283 - rpn_
193/723 [=======>......................] - ETA: 26:58 - loss: 1.6483 - rpn_class_loss: 0.0284 - rpn_
194/723 [=======>......................] - ETA: 26:54 - loss: 1.6486 - rpn_class_loss: 0.0283 - rpn_
195/723 [=======>......................] - ETA: 26:51 - loss: 1.6507 - rpn_class_loss: 0.0282 - rpn_
196/723 [=======>......................] - ETA: 26:47 - loss: 1.6606 - rpn_class_loss: 0.0281 - rpn_
197/723 [=======>......................] - ETA: 26:43 - loss: 1.6626 - rpn_class_loss: 0.0282 - rpn_
198/723 [=======>......................] - ETA: 26:40 - loss: 1.6598 - rpn_class_loss: 0.0282 - rpn_
199/723 [=======>......................] - ETA: 26:36 - loss: 1.6653 - rpn_class_loss: 0.0281 - rpn_
200/723 [=======>......................] - ETA: 26:33 - loss: 1.6666 - rpn_class_loss: 0.0282 - rpn_
201/723 [=======>......................] - ETA: 26:30 - loss: 1.6665 - rpn_class_loss: 0.0283 - rpn_
202/723 [=======>......................] - ETA: 26:28 - loss: 1.6713 - rpn_class_loss: 0.0283 - rpn_
203/723 [=======>......................] - ETA: 26:24 - loss: 1.6662 - rpn_class_loss: 0.0283 - rpn_
204/723 [=======>......................] - ETA: 26:20 - loss: 1.6652 - rpn_class_loss: 0.0282 - rpn_
205/723 [=======>......................] - ETA: 26:16 - loss: 1.6606 - rpn_class_loss: 0.0281 - rpn_
206/723 [=======>......................] - ETA: 26:13 - loss: 1.6575 - rpn_class_loss: 0.0281 - rpn_
207/723 [=======>......................] - ETA: 26:09 - loss: 1.6591 - rpn_class_loss: 0.0280 - rpn_
208/723 [=======>......................] - ETA: 26:05 - loss: 1.6565 - rpn_class_loss: 0.0279 - rpn_
209/723 [=======>......................] - ETA: 26:03 - loss: 1.6592 - rpn_class_loss: 0.0279 - rpn_
210/723 [=======>......................] - ETA: 25:59 - loss: 1.6577 - rpn_class_loss: 0.0280 - rpn_
211/723 [=======>......................] - ETA: 25:56 - loss: 1.6591 - rpn_class_loss: 0.0279 - rpn_
212/723 [=======>......................] - ETA: 25:52 - loss: 1.6581 - rpn_class_loss: 0.0278 - rpn_
bbox_loss: 0.3465 - mrcnn_class_loss: 0.3752 - mrcnn_bbox_loss: 0.4602 - mrcnn_mask_loss: 0.4483

This is probably related to the issues in #4200

This doesn't seem to be an issue with Windows Terminal - it happens in both PowerShell and Command Prompt in the default windows shell, so either it's an issue with TensorFlow or an issue with both Windows Terminal and the default shell.

Huh, thanks for following up. Does it reproduce in other terminals that work like xterm? That’s the compatibility level we’re going for :)

I tried it in Git Bash & Cygwin, since they both use mintty, but it doesn't seem to support deleting lines at all.

Okay, I've figured out that the specific problem is that TensorFlow is using carriage return (\r) for this.
My test:
for i in range(5):
    print((str(i) * 200) + '\r', end='')

print()

Note: I added the empty print() statement at the end so that the terminal wouldn't overwrite the last line.
Output:
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
44444444444444444444444444444444444444444444444444444444444444444444444444444444

Note: This also occured in VS Code's integrated terminal
Strangely, MinTTY had the same behaviour as Command Prompt and Windows Terminal this time

Should this issue be fixed? It seems to happen in pretty much every terminal.
It behaves this way in:

Windows Terminal
Command Prompt
MinTTY
VS Code Integrated Terminal
Terminal.app

Say, are you using python for Windows or python inside WSL?

Python for Windows, versions 3.7.6 and 3.8.0.
I just tested it on WSL though, same behaviour (Python 3.6.7)

I'm gonna say that this should be resolved as "by-design". I just tried this out in gnome-terminal and I'm seeing the same behavior with your simple repro case as what happens in conhost and Windows Terminal. I'd bet that this is just a misunderstanding by the TensorFlow maintainers that \r won't take you to the beginning of a wrapped line if the line started on another row, it'll only take you to the start of the current row.


React 16

It seems like react-router does not work with the babel setup, so instead try https://github.com/STRML/react-router-component ? However this is not on cdnjs yet
Alternatively do custom routing, https://auth0.com/blog/react-router-alternatives/ https://medium.com/@daveford/react-router-alternative-switch-acd7961f08db
or https://github.com/kriasoft/universal-router

wee, looks like latest Firefox supports ES Modules out of the box, https://caniuse.com/#search=modules


The index can be properly restored if the new number of pages is lower than the index.

@micazeve Uhm, could you help me figure out what just happened when I merged your PR? I approved and merged it, and the right column on this page says 2 participants...but when I check the project page, I'm still the only contributor. What happened?

If you compare commit dd0aeee at https://github.com/danielsaidi/Sheeeeeeeeet/commits/master with your commit at https://github.com/danielsaidi/KeyboardKit/commits/master your two commits look the same, right?

Hi, I just want to thank you for your implication in finding why I don't appear in the contributors list. I pushed using a computer where git was configured in a Gitlab session with another email address, so I just had to add this address in my Github account and everything was fixed :)
Thanks for the help and for this awesome library :)

Hi again,
What a relief! I once accidentally squash merged a pull request I received
for another library and thus "stole" the work of that contributor: Ever
since then I'm terrified of repeating that mistake :D
Thank you for your contribution to KeyboardKit!
All the best
Daniel
On Fri, Oct 5, 2018 at 9:11 AM Michaël Azevedo<EMAIL_ADDRESS>wrote:

Hi, I just want to thank you for your implication in finding why I don't
appear in the contributors list. I pushed using a computer where git was
configured in a Gitlab session with another email address, so I just had to
add this address in my Github account and everything was fixed :)
Thanks for the help and for this awesome library :)
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/danielsaidi/KeyboardKit/pull/5#issuecomment-427268053,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAaPZ31l20e6OqhPx-bgqrcRgsjDi18Eks5uhwYUgaJpZM4XHfyd
.


Documentation: broken link to Gitter

Main Github page has link to quiver Gitter at bottom.  I'd love to see a Gitter page for this, but currently the link yields 404 Not Found.

I'll look into opening a room when we move this project to getnelson.  In the meantime, many of the quiver developers are on getnelson/nelson Gitter.


Add enable/disable mode (for edition)

I'm submitting a
Feature request
Current behavior
You can switch to edit mode in any circumstances.
Expected behavior
It should be very convenient to block programmatically the edition mode (disable it).
Minimal reproduction of the problem with instructions
No response
What is the motivation / use case for changing the behavior?
There is lot of use-cases:

a request is still running to save the previous change
a user doesn't have rights on this particular item (in case of a use in item rendering)
a business constraint
...

Environment
No response

1.6 version was released with this feature.
Keeping this issue open as I can't deploy the new demo right now, related to https://github.com/angular-schule/angular-cli-ghpages/issues/137

I just published<EMAIL_ADDRESS>to npm! This version supports Angular 13.

Awesome @JohannesHoppe, thanks for providing this library to the community!

My pleasure! 😊

new version of the demo deployed 🚀


build: Add notifications to travis config

Names are flexible.  I just went with Karl because he set up with travis config with me.  I think our current config only sends results on branch pushes and pull requests, not direct contributions to  master, which is a blind spot on this repo and VulkanTools.  I probably should have put that in the description.

cherry-picked to master, thanks!  Feel free to change the email addresses in there.  We can turn this off if it doesn't work out, but I think it gives another level of information.


Bad output for shortcut generator functions

Description
The shortcut object notation of generator functions is badly formatted since version 1.6.3
Input
let a = {
 * myFunction() {
 }
}

Expected Output
let a = {
 * myFunction() {
 }
}

Actual Output
let a = {
 *
 myFunction() {
 }
}

Settings
{
                spaceAfterAnonFunction: true,
                indentCase: false,
                braceStyle: 'collapse-preserve-inline'
}

@Verdier - Have you tried v1.6.4.  This should be fixed there.

@bitwiseman yes you are true, the case with object notation is fixed, but the following remain in 1.6.4:
class A {
    fn() {
        return true;
    }

    * gen() {
        return true;
    }
}

result in:
class A {
    fn() {
        return true;
    }

    *
    gen() {
        return true;
    }
}

Thanks!

Does anyone have a work around for this?

@jwhitmarsh - One work around is to set operator_position to preserve-newline.
The beautifier is treating the * in this case as a multiply operator, so that setting will make it leave operators where they are.  But the side effect is other operators are not repositioned.


Missing standard core LaTeX symbols: /ae, /o, etc.

The following are standard LaTeX, and could be used inside \text for things like names attached to pieces of math, for example.
\oe         x0153
\OE         x0152
\ae         x00E6
\AE         x00C6
\aa         x00E5
\AA         x00C5
\o          x00F8
\O          x00D8
\l          x0142
\L          x0141
\ss         x00DF
\SS         x1E9E
\dag        x2020
\ddag       x2021
\P          x00B6
\copyright  x00A9
\pounds     x00A3

There are several reasons these are not included.  First, MathJax concentrates on math-mode macros, not text-mode ones.  Even though you can use \text{}, by default very few text macros are processed.  Second, MathJax doesn't usually define macros for characters that aren't in its default fonts, and most of the ones on your list are not in the MathJax fonts.  That means MathJax would need to call on local fonts on your system, and the results would vary from user to user, depending on the fonts they have installed.
You can, of course, define these macros yourself in your MathJax configuration, if you are willing to accept the variation that users may see.  You will need to include the textmacros package in your configuration, and you may want to set mtextInheritFont to true so that the unknown characters will match the rest of your text better.  For example:
MathJax = {
  loader: {load: ['[tex]/textmacros']},
  tex: {
    packages: {'[+]': ['textmacros']},
    macros: {
      oe: '\u0153',
      OE: '\u0152',
      ae: '\u00E6',
      AE: '\u00C6',
      aa: '\u00E5',
      AA: '\u00C5',
      o:  '\u00F8',
      O:  '\u00D8',
      l:  '\u0142',
      L:  '\u0141',
      ss: '\u00DF',
      SS: '\u1E9E',
      dag: '\u2020',
      ddag: '\u2021',
      P:  '\u00B6',
      copyright: '\u00A9',
      pounds: '\u00A3'
    }
  },
  chtml: {
    mtextInheritFont: true
  },
  sag: {
    mtextInheritFont: true
  }
};

should do the trick.


RMC-rustc interface: cranelift rustc interface

Closing this issue since we now have a good idea about this topic and have a plan in progress to properly interface with rustc (see #719 to see what steps have been taken to improve it until now).


Add Literals.getLabel method that accepts Optional input value

Literals.getLabel only accepts actual Value objects (with a fallback when the Value is null or not a Literal).
In combination with, for example, Models.object() this leads to slightly convulated code:
String label = Literals.getLabel(Models.object(m.filter(...)).orElse(null), fallback);

If Literals.getLabel also accepted an Optional value directly, we could do this instead:
String label = Literals.getLabel(Models.object(m.filter(...)), fallback);

in the implementation of getLabel() is overloaded.
		return l != null ? l.getLabel() : fallback;
	}

	/**
	 * Returns the result of {@link #getLabel(Literal, String) getLabel((Literal)v, fallback} in case the supplied value
	 * is a literal, returns the fallback value otherwise.
	 */
	public static String getLabel(Value v, String fallback) {
		return v instanceof Literal ? getLabel((Literal) v, fallback) : fallback;
	}

Is this issue fixed, since getLabel can now handle null values also?

@raghav17083 not really - this issue is about having a Literals.getLabel method that accepts a java.util.Optional instead of only a Value or Literal as its first argument.
This:
 String label = Literals.getLabel(Models.object(m.filter(...)), fallback);

won't work right now, because the result of the Models.object call is an Optional, not a Value or Literal.
It's a fairly minor thing but having this option will make for slightly cleaner and easier to read code when using these functions.

So, does this mean that we just have to overload the getLabel() method to account for an 'Optional' call?

Yes, exactly

@SakshiSaini17092 thanks for the pull request. Are you and @raghav17083 working together on this?

@SakshiSaini17092 thanks for the pull request. Are you and @raghav17083 working together on this?

Yes!


Remove unnecessary code after OpenMP backend removal

#858 has removed OpenMP backend with mechanism level async execution
shadow_statements vector is not used and always empty now
this will help to cleanup some logic/confusion in #994

$ grep -r shadow_statement *

codegen/codegen_cpp_visitor.cpp:    for (const auto& statement: shadow_statements) {
codegen/codegen_cpp_visitor.cpp:    shadow_statements.clear();
codegen/codegen_cpp_visitor.cpp:    if (!shadow_statements.empty()) {
codegen/codegen_cpp_visitor.hpp:    std::vector<ShadowUseStatement> shadow_statements;

added in #994


add_disk_to_vm: Fix unintialized variable if there are no disks attac…

"unit_number" does not become initialized if there are no disks currently attached to the VM.

Attn: @tianhao64 this seems like a no-brainer


Zabbix default password

Describe the bug
Unable to find in code the default frontend password. It could be easier if the default username and password were documented in the Readme.md.
Expected behavior

Maybe the default password configured during code execution could be documented right in the repo.
Would be possible to set it up as a varible during Ansible execution.

Hi @jefersonlemos
Default Username/password is now documented in the readme.