Cannot run 1.16.5 fabric client

When using the latest forge-fabric template (https://github.com/architectury/architectury-templates/releases/tag/release_build_1698078656340), and trying to run the fabric client via bash ./gradlew fabric:runClient, the process fails (stalls) with following error:
> Task :fabric:runClient
[Architectury Transformer] Architectury Runtime 5.2.79
[Architectury Transformer] Read classpath in 909.9 ms
[Architectury Transformer] Listening at <PATH_TO_PROJECT>/common/build/devlibs/examplemod-1.0.0-dev.jar
Exception in thread "main" java.lang.ExceptionInInitializerError
        at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28)
        at net.fabricmc.devlaunchinjector.Main.main(Main.java:86)
        at dev.architectury.transformer.TransformerRuntime.main(TransformerRuntime.java:219)
Caused by: java.lang.IllegalStateException: duplicate fabric loader classes found on classpath: jar:file:<USER_HOME>/.gradle/caches/modules-2/files-2.1/net.fabricmc/fabric-loader/0.14.23/2ca7b6e98c484eb8b385f789ee3641b3808cd2dc/fabric-loader-0.14.23.jar!/net/fabricmc/loader/api/FabricLoader.class, jar:file:<PATH_TO_PROJECT>/.gradle/loom-cache/remapped_mods/loom_mappings_1_16_5_layered_hash_40359_v2/net/fabricmc/fabric-loader/0.13.2/fabric-loader-0.13.2.jar!/net/fabricmc/loader/api/FabricLoader.class
        at net.fabricmc.loader.impl.util.LoaderUtil.verifyClasspath(LoaderUtil.java:65)
        at net.fabricmc.loader.impl.launch.knot.Knot.<clinit>(Knot.java:347)
        ... 3 more

output of `bash ./gradlew fabric:runClient --info`
Initialized native services in: <USER_HOME>/.gradle/native
Initialized jansi services in: <USER_HOME>/.gradle/native
Received JVM installation metadata from '/usr/lib/jvm/java-17-openjdk': {JAVA_HOME=/usr/lib/jvm/java-17-openjdk, JAVA_VERSION=17.0.9, JAVA_VENDOR=N/A, RUNTIME_NAME=OpenJDK Runtime Environment, RUNTIME_VERSION=17.0.9+8, VM_NAME=OpenJDK 64-Bit Server VM, VM_VERSION=17.0.9+8, VM_VENDOR=Oracle Corporation, OS_ARCH=amd64}
Checking if the launcher JVM can be re-used for build. To be re-used, the launcher JVM needs to match the parameters required for the build process: --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED -Xmx2048M -Dfile.encoding=UTF-8 -Duser.country=DE -Duser.language=de -Duser.variant
To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/8.4/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation.
Starting process 'Gradle build daemon'. Working directory: <USER_HOME>/.gradle/daemon/8.4 Command: /usr/lib/jvm/java-17-openjdk/bin/java --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED -Xmx2048M -Dfile.encoding=UTF-8 -Duser.country=DE -Duser.language=de -Duser.variant -cp <USER_HOME>/.gradle/wrapper/dists/gradle-8.4-bin/1w5dpkrfk8irigvoxmyhowfim/gradle-8.4/lib/gradle-launcher-8.4.jar -javaagent:<USER_HOME>/.gradle/wrapper/dists/gradle-8.4-bin/1w5dpkrfk8irigvoxmyhowfim/gradle-8.4/lib/agents/gradle-instrumentation-agent-8.4.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 8.4
Successfully started process 'Gradle build daemon'
An attempt to start the daemon took 0.591 secs.
The client will now receive all logging from the daemon (pid: 3395752). The daemon log file: <USER_HOME>/.gradle/daemon/8.4/daemon-3395752.out.log
Daemon will be stopped at the end of the build
Using 16 worker leases.
Received JVM installation metadata from '/usr/lib/jvm/java-17-openjdk': {JAVA_HOME=/usr/lib/jvm/java-17-openjdk, JAVA_VERSION=17.0.9, JAVA_VENDOR=N/A, RUNTIME_NAME=OpenJDK Runtime Environment, RUNTIME_VERSION=17.0.9+8, VM_NAME=OpenJDK 64-Bit Server VM, VM_VERSION=17.0.9+8, VM_VENDOR=Oracle Corporation, OS_ARCH=amd64}
Watching the file system is configured to be enabled if available
Now considering [<PATH_TO_PROJECT>] as hierarchies to watch
File system watching is active
Starting Build
Settings evaluated using settings file '<PATH_TO_PROJECT>/settings.gradle'.
Projects loaded. Root project using build file '<PATH_TO_PROJECT>/build.gradle'.
Included projects: [root project 'architectury-example-mod', project ':common', project ':fabric', project ':forge']

> Configure project :
Evaluating root project 'architectury-example-mod' using build file '<PATH_TO_PROJECT>/build.gradle'.
Architect Plugin: 3.4.149
Architectury Loom: 1.3.358
(kotlinx.metadata.jvm.KotlinClassMetadata) with version (0.6.2-1.8.20-28) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-metadata-jvm/0.6.2/40848914d93649a068cd41d1814247292c650dfa/kotlinx-metadata-jvm-0.6.2.jar)
(org.objectweb.asm.ClassVisitor) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar)
(org.objectweb.asm.tree.analysis.Analyzer) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar)
(org.objectweb.asm.commons.ClassRemapper) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/9.5/19ab5b5800a3910d30d3a3e64fdb00fd0cb42de0/asm-commons-9.5.jar)
(org.objectweb.asm.tree.ClassNode) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar)
(org.objectweb.asm.util.ASMifier) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar)
(com.fasterxml.jackson.databind.ObjectMapper) with version (2.14.2) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.14.2/1e71fddbc80bb86f71a6345ac1e8ab8a00e7134/jackson-databind-2.14.2.jar)
(com.google.gson.Gson) with version (null) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.10.1/b3add478d4382b78ea20b1671390a858002feb6c/gson-2.10.1.jar)
(com.google.common.base.Preconditions) with version (null) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/31.1-jre/60458f877d055d0c9114d9e1a2efb737b4bc282c/guava-31.1-jre.jar)
(org.apache.commons.io.FileUtils) with version (2.11.0) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.11.0/a2503f302b11ebde7ebc3df41daebe0e4eea3689/commons-io-2.11.0.jar)
Creating new SharedServiceManager(1268603128)
(kotlinx.metadata.jvm.KotlinClassMetadata) with version (0.6.2-1.8.20-28) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-metadata-jvm/0.6.2/40848914d93649a068cd41d1814247292c650dfa/kotlinx-metadata-jvm-0.6.2.jar)
(org.objectweb.asm.ClassVisitor) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar)
(org.objectweb.asm.tree.analysis.Analyzer) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar)
(org.objectweb.asm.commons.ClassRemapper) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/9.5/19ab5b5800a3910d30d3a3e64fdb00fd0cb42de0/asm-commons-9.5.jar)
(org.objectweb.asm.tree.ClassNode) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar)
(org.objectweb.asm.util.ASMifier) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar)
(com.fasterxml.jackson.databind.ObjectMapper) with version (2.14.2) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.14.2/1e71fddbc80bb86f71a6345ac1e8ab8a00e7134/jackson-databind-2.14.2.jar)
(com.google.gson.Gson) with version (null) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.10.1/b3add478d4382b78ea20b1671390a858002feb6c/gson-2.10.1.jar)
(com.google.common.base.Preconditions) with version (null) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/31.1-jre/60458f877d055d0c9114d9e1a2efb737b4bc282c/guava-31.1-jre.jar)
(org.apache.commons.io.FileUtils) with version (2.11.0) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.11.0/a2503f302b11ebde7ebc3df41daebe0e4eea3689/commons-io-2.11.0.jar)
(kotlinx.metadata.jvm.KotlinClassMetadata) with version (0.6.2-1.8.20-28) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-metadata-jvm/0.6.2/40848914d93649a068cd41d1814247292c650dfa/kotlinx-metadata-jvm-0.6.2.jar)
(org.objectweb.asm.ClassVisitor) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/9.5/dc6ea1875f4d64fbc85e1691c95b96a3d8569c90/asm-9.5.jar)
(org.objectweb.asm.tree.analysis.Analyzer) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.5/490bacc77de7cbc0be1a30bb3471072d705be4a4/asm-analysis-9.5.jar)
(org.objectweb.asm.commons.ClassRemapper) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/9.5/19ab5b5800a3910d30d3a3e64fdb00fd0cb42de0/asm-commons-9.5.jar)
(org.objectweb.asm.tree.ClassNode) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-tree/9.5/fd33c8b6373abaa675be407082fdfda35021254a/asm-tree-9.5.jar)
(org.objectweb.asm.util.ASMifier) with version (9.5) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-util/9.5/64b5a1fc8c1b15ed2efd6a063e976bc8d3dc5ffe/asm-util-9.5.jar)
(com.fasterxml.jackson.databind.ObjectMapper) with version (2.14.2) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.14.2/1e71fddbc80bb86f71a6345ac1e8ab8a00e7134/jackson-databind-2.14.2.jar)
(com.google.gson.Gson) with version (null) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.10.1/b3add478d4382b78ea20b1671390a858002feb6c/gson-2.10.1.jar)
(com.google.common.base.Preconditions) with version (null) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/31.1-jre/60458f877d055d0c9114d9e1a2efb737b4bc282c/guava-31.1-jre.jar)
(org.apache.commons.io.FileUtils) with version (2.11.0) was loaded from (<USER_HOME>/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.11.0/a2503f302b11ebde7ebc3df41daebe0e4eea3689/commons-io-2.11.0.jar)

> Configure project :common
Evaluating project ':common' using build file '<PATH_TO_PROJECT>/common/build.gradle'.
Creating new SharedServiceManager(865264224)
:setting up loom dependencies
:setting up loom dependencies
Applying installer data from <USER_HOME>/.gradle/caches/modules-2/files-2.1/net.fabricmc/fabric-loader/0.13.2/109bda4b44a9cfb77a889cf4d3b31e32376ed1e4/fabric-loader-0.13.2.jar
Found another installer JSON in (<USER_HOME>/.gradle/caches/modules-2/files-2.1/net.fabricmc/fabric-loader/0.13.2/109bda4b44a9cfb77a889cf4d3b31e32376ed1e4/fabric-loader-0.13.2.jar), ignoring
Found another installer JSON in (<USER_HOME>/.gradle/caches/modules-2/files-2.1/net.fabricmc/fabric-loader/0.14.23/2ca7b6e98c484eb8b385f789ee3641b3808cd2dc/fabric-loader-0.14.23.jar), ignoring
Found another installer JSON in (<USER_HOME>/.gradle/caches/modules-2/files-2.1/net.fabricmc/fabric-loader/0.14.23/2ca7b6e98c484eb8b385f789ee3641b3808cd2dc/fabric-loader-0.14.23.jar), ignoring
Could not find refmap definition, will be using default name: examplemod-common-refmap.json
Configuring compiler arguments for Java
Adding mixin to classpath of AP config: annotationProcessor
Adding mixin to classpath of AP config: testAnnotationProcessor
Could not find refmap definition, will be using default name: examplemod-common-refmap.json
Closing SharedServiceManager(865264224)

> Configure project :fabric
Evaluating project ':fabric' using build file '<PATH_TO_PROJECT>/fabric/build.gradle'.
Creating new SharedServiceManager(1203996990)
:setting up loom dependencies
:setting up loom dependencies
Applying installer data from <USER_HOME>/.gradle/caches/modules-2/files-2.1/net.fabricmc/fabric-loader/0.10.5+build.213/395f461392c21828f3ea23e725291ea088758498/fabric-loader-0.10.5+build.213.jar
Found another installer JSON in (<USER_HOME>/.gradle/caches/modules-2/files-2.1/net.fabricmc/fabric-loader/0.13.2/109bda4b44a9cfb77a889cf4d3b31e32376ed1e4/fabric-loader-0.13.2.jar), ignoring
Found another installer JSON in (<USER_HOME>/.gradle/caches/modules-2/files-2.1/net.fabricmc/fabric-loader/0.13.2/109bda4b44a9cfb77a889cf4d3b31e32376ed1e4/fabric-loader-0.13.2.jar), ignoring
Found another installer JSON in (<USER_HOME>/.gradle/caches/modules-2/files-2.1/net.fabricmc/fabric-loader/0.14.23/2ca7b6e98c484eb8b385f789ee3641b3808cd2dc/fabric-loader-0.14.23.jar), ignoring
Found another installer JSON in (<USER_HOME>/.gradle/caches/modules-2/files-2.1/net.fabricmc/fabric-loader/0.14.23/2ca7b6e98c484eb8b385f789ee3641b3808cd2dc/fabric-loader-0.14.23.jar), ignoring
Could not find refmap definition, will be using default name: examplemod-fabric-refmap.json
Configuring compiler arguments for Java
Adding mixin to classpath of AP config: annotationProcessor
Adding mixin to classpath of AP config: testAnnotationProcessor
Could not find refmap definition, will be using default name: examplemod-fabric-refmap.json
Closing SharedServiceManager(1203996990)

> Configure project :forge
Evaluating project ':forge' using build file '<PATH_TO_PROJECT>/forge/build.gradle'.
Creating new SharedServiceManager(330078889)
:setting up loom dependencies
:migrated srg fields in 75.19 μs
:setting up loom dependencies
Could not find refmap definition, will be using default name: examplemod-forge-refmap.json
Configuring compiler arguments for Java
Adding mixin to classpath of AP config: annotationProcessor
Adding mixin to classpath of AP config: testAnnotationProcessor
Could not find refmap definition, will be using default name: examplemod-forge-refmap.json
Closing SharedServiceManager(330078889)
All projects evaluated.
Task path 'fabric:runClient' matched project ':fabric'
Task name matched 'runClient'
Selected primary task 'runClient' from project :fabric
Tasks to be executed: [task ':common:compileJava', task ':common:processResources', task ':common:classes', task ':common:jar', task ':fabric:compileJava', task ':fabric:processResources', task ':fabric:classes', task ':fabric:generateDLIConfig', task ':fabric:generateLog4jConfig', task ':fabric:generateRemapClasspath', task ':fabric:prepareArchitecturyTransformer', task ':fabric:configureLaunch', task ':fabric:downloadAssets', task ':fabric:extractNatives', task ':fabric:configureClientLaunch', task ':fabric:runClient']
Tasks that were excluded: []
Resolve mutations for :common:compileJava (Thread[Execution worker Thread 2,5,main]) started.
:common:compileJava (Thread[Execution worker Thread 2,5,main]) started.

> Task :common:compileJava UP-TO-DATE
Watching 3 directories to track changes
Watching 4 directories to track changes
Watching 5 directories to track changes
Watching 8 directories to track changes
Watching 9 directories to track changes
Watching 10 directories to track changes
Watching 11 directories to track changes
Watching 12 directories to track changes
Watching 13 directories to track changes
Watching 14 directories to track changes
Caching disabled for task ':common:compileJava' because:
  Build cache is disabled
Skipping task ':common:compileJava' as it is up-to-date.
No compile result for :common:compileJava
No compile result for :common:compileJava
No compile result for :common:compileJava
No compile result for :common:compileJava
No compile result for :common:compileJava
No compile result for :common:compileJava
Resolve mutations for :common:processResources (Thread[Execution worker Thread 2,5,main]) started.
:common:processResources (Thread[Execution worker Thread 2,5,main]) started.

> Task :common:processResources UP-TO-DATE
Watching 18 directories to track changes
Watching 22 directories to track changes
Caching disabled for task ':common:processResources' because:
  Build cache is disabled
Skipping task ':common:processResources' as it is up-to-date.
Resolve mutations for :common:classes (Thread[Execution worker Thread 2,5,main]) started.
:common:classes (Thread[Execution worker Thread 2,5,main]) started.

> Task :common:classes UP-TO-DATE
Skipping task ':common:classes' as it has no actions.
Resolve mutations for :common:jar (Thread[Execution worker Thread 2,5,main]) started.
:common:jar (Thread[Execution worker Thread 2,5,main]) started.

> Task :common:jar UP-TO-DATE
Watching 23 directories to track changes
Watching 24 directories to track changes
Caching disabled for task ':common:jar' because:
  Build cache is disabled
Skipping task ':common:jar' as it is up-to-date.
work action resolve examplemod-dev.jar (project :common) (Thread[Execution worker Thread 2,5,main]) started.
Resolve mutations for :fabric:compileJava (Thread[Execution worker Thread 2,5,main]) started.
:fabric:compileJava (Thread[Execution worker Thread 2,5,main]) started.

> Task :fabric:compileJava UP-TO-DATE
Watching 28 directories to track changes
Watching 32 directories to track changes
Watching 33 directories to track changes
Watching 34 directories to track changes
Watching 35 directories to track changes
Watching 36 directories to track changes
Watching 37 directories to track changes
Watching 38 directories to track changes
Watching 39 directories to track changes
Watching 40 directories to track changes
Watching 41 directories to track changes
Watching 42 directories to track changes
Watching 43 directories to track changes
Watching 44 directories to track changes
Watching 45 directories to track changes
Watching 46 directories to track changes
Watching 47 directories to track changes
Watching 48 directories to track changes
Watching 49 directories to track changes
Watching 50 directories to track changes
Watching 51 directories to track changes
Watching 52 directories to track changes
Watching 53 directories to track changes
Watching 54 directories to track changes
Watching 55 directories to track changes
Watching 56 directories to track changes
Watching 57 directories to track changes
Watching 58 directories to track changes
Watching 59 directories to track changes
Watching 60 directories to track changes
Watching 61 directories to track changes
Watching 62 directories to track changes
Watching 63 directories to track changes
Watching 64 directories to track changes
Watching 65 directories to track changes
Watching 66 directories to track changes
Watching 67 directories to track changes
Watching 68 directories to track changes
Watching 69 directories to track changes
Watching 70 directories to track changes
Watching 71 directories to track changes
Watching 72 directories to track changes
Watching 73 directories to track changes
Watching 74 directories to track changes
Watching 75 directories to track changes
Watching 76 directories to track changes
Watching 77 directories to track changes
Watching 78 directories to track changes
Watching 79 directories to track changes
Watching 80 directories to track changes
Watching 81 directories to track changes
Watching 82 directories to track changes
Watching 83 directories to track changes
Watching 84 directories to track changes
Caching disabled for task ':fabric:compileJava' because:
  Build cache is disabled
Skipping task ':fabric:compileJava' as it is up-to-date.
No compile result for :fabric:compileJava
No compile result for :fabric:compileJava
No compile result for :fabric:compileJava
No compile result for :fabric:compileJava
No compile result for :fabric:compileJava
No compile result for :fabric:compileJava
Resolve mutations for :fabric:processResources (Thread[Execution worker Thread 2,5,main]) started.
:fabric:processResources (Thread[Execution worker Thread 2,5,main]) started.

> Task :fabric:processResources UP-TO-DATE
Watching 85 directories to track changes
Watching 86 directories to track changes
Caching disabled for task ':fabric:processResources' because:
  Build cache is disabled
Skipping task ':fabric:processResources' as it is up-to-date.
Resolve mutations for :fabric:classes (Thread[Execution worker Thread 2,5,main]) started.
:fabric:classes (Thread[Execution worker Thread 2,5,main]) started.

> Task :fabric:classes UP-TO-DATE
Skipping task ':fabric:classes' as it has no actions.
Resolve mutations for :fabric:generateDLIConfig (Thread[Execution worker Thread 2,5,main]) started.
:fabric:generateDLIConfig (Thread[Execution worker Thread 2,5,main]) started.

> Task :fabric:generateDLIConfig
Caching disabled for task ':fabric:generateDLIConfig' because:
  Build cache is disabled
Task ':fabric:generateDLIConfig' is not up-to-date because:
  Task has not declared any outputs despite executing actions.
Resolve mutations for :fabric:generateLog4jConfig (Thread[Execution worker Thread 2,5,main]) started.
:fabric:generateLog4jConfig (Thread[Execution worker Thread 2,5,main]) started.

> Task :fabric:generateLog4jConfig
Caching disabled for task ':fabric:generateLog4jConfig' because:
  Build cache is disabled
Task ':fabric:generateLog4jConfig' is not up-to-date because:
  Task has not declared any outputs despite executing actions.
Resolve mutations for :fabric:generateRemapClasspath (Thread[Execution worker Thread 2,5,main]) started.
:fabric:generateRemapClasspath (Thread[Execution worker Thread 2,5,main]) started.

> Task :fabric:generateRemapClasspath UP-TO-DATE
Watching 87 directories to track changes
Caching disabled for task ':fabric:generateRemapClasspath' because:
  Build cache is disabled
Skipping task ':fabric:generateRemapClasspath' as it is up-to-date.
Resolve mutations for :fabric:prepareArchitecturyTransformer (Thread[Execution worker Thread 2,5,main]) started.
:fabric:prepareArchitecturyTransformer (Thread[Execution worker Thread 2,5,main]) started.

> Task :fabric:prepareArchitecturyTransformer
Caching disabled for task ':fabric:prepareArchitecturyTransformer' because:
  Build cache is disabled
Task ':fabric:prepareArchitecturyTransformer' is not up-to-date because:
  Task has not declared any outputs despite executing actions.
Could not find refmap definition, will be using default name: examplemod-fabric-refmap.json
Resolve mutations for :fabric:configureLaunch (Thread[Execution worker Thread 2,5,main]) started.
:fabric:configureLaunch (Thread[Execution worker Thread 2,5,main]) started.

> Task :fabric:configureLaunch
Skipping task ':fabric:configureLaunch' as it has no actions.
Resolve mutations for :fabric:downloadAssets (Thread[Execution worker Thread 2,5,main]) started.
:fabric:downloadAssets (Thread[Execution worker Thread 2,5,main]) started.

> Task :fabric:downloadAssets UP-TO-DATE
Watching 88 directories to track changes
Caching disabled for task ':fabric:downloadAssets' because:
  Build cache is disabled
Skipping task ':fabric:downloadAssets' as it is up-to-date.
Resolve mutations for :fabric:extractNatives (Thread[Execution worker Thread 2,5,main]) started.
:fabric:extractNatives (Thread[Execution worker Thread 2,5,main]) started.

> Task :fabric:extractNatives UP-TO-DATE
Watching 89 directories to track changes
Caching disabled for task ':fabric:extractNatives' because:
  Build cache is disabled
Skipping task ':fabric:extractNatives' as it is up-to-date.
Resolve mutations for :fabric:configureClientLaunch (Thread[Execution worker Thread 2,5,main]) started.
:fabric:configureClientLaunch (Thread[Execution worker Thread 2,5,main]) started.

> Task :fabric:configureClientLaunch
Skipping task ':fabric:configureClientLaunch' as it has no actions.
Resolve mutations for :fabric:runClient (Thread[Execution worker Thread 2,5,main]) started.
:fabric:runClient (Thread[Execution worker Thread 2,5,main]) started.

> Task :fabric:runClient
Caching disabled for task ':fabric:runClient' because:
  Build cache is disabled
Task ':fabric:runClient' is not up-to-date because:
  Task has not declared any outputs despite executing actions.
Starting process 'command '/usr/lib/jvm/java-17-openjdk/bin/java''. Working directory: <PATH_TO_PROJECT>/fabric/run Command: /usr/lib/jvm/java-17-openjdk/bin/java -Darchitectury.main.class=<PATH_TO_PROJECT>/fabric/.gradle/architectury/.main_class -Darchitectury.properties=<PATH_TO_PROJECT>/fabric/.gradle/architectury/.properties -Darchitectury.runtime.transformer=<PATH_TO_PROJECT>/fabric/.gradle/architectury/.transforms -Dfabric.dli.config=<PATH_TO_PROJECT>/fabric/.gradle/loom-cache/launch.cfg -Dfabric.dli.env=client -Dfabric.dli.main=net.fabricmc.loader.launch.knot.KnotClient -Djdk.attach.allowAttachSelf=true @/tmp/loom-classpath4317533382144511717.args -javaagent:<PATH_TO_PROJECT>/.gradle/architectury/architectury-transformer-agent.jar -Dfile.encoding=UTF-8 -Duser.country=DE -Duser.language=de -Duser.variant dev.architectury.transformer.TransformerRuntime
Successfully started process 'command '/usr/lib/jvm/java-17-openjdk/bin/java''
[Architectury Transformer] Architectury Runtime 5.2.79
[Architectury Transformer] Read classpath in 894.9 ms
[Architectury Transformer] Listening at <PATH_TO_PROJECT>/common/build/devlibs/examplemod-1.0.0-dev.jar
Exception in thread "main" java.lang.ExceptionInInitializerError
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28)
	at net.fabricmc.devlaunchinjector.Main.main(Main.java:86)
	at dev.architectury.transformer.TransformerRuntime.main(TransformerRuntime.java:219)
Caused by: java.lang.IllegalStateException: duplicate fabric loader classes found on classpath: jar:file:<USER_HOME>/.gradle/caches/modules-2/files-2.1/net.fabricmc/fabric-loader/0.14.23/2ca7b6e98c484eb8b385f789ee3641b3808cd2dc/fabric-loader-0.14.23.jar!/net/fabricmc/loader/api/FabricLoader.class, jar:file:<PATH_TO_PROJECT>/.gradle/loom-cache/remapped_mods/loom_mappings_1_16_5_layered_hash_40359_v2/net/fabricmc/fabric-loader/0.13.2/fabric-loader-0.13.2.jar!/net/fabricmc/loader/api/FabricLoader.class
	at net.fabricmc.loader.impl.util.LoaderUtil.verifyClasspath(LoaderUtil.java:65)
	at net.fabricmc.loader.impl.launch.knot.Knot.<clinit>(Knot.java:347)
	... 3 more

This is not a Loom bug: Architectury API pulls in an older version of Fabric Loader that conflicts with the newer version that is in the template. You can fix it by adding this snippet to your fabric build.gradle:
configurations.all {
   resolutionStrategy {
     force("net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}")
   }
}

I had seen that there where different versions in the dependency declarations, but didn't knew that it actually pulls both in. I just tried around with different gradle versions & loom versions and architectury-loom 1.0 with gradle 7.4 had no issue with the project, so I thought it might be a loom bug.
Anyway; thanks for the fix, it works now!


Remove blank person from admin person show

This commit removes an additional reference to the blank-person image which was missed in the previous series of commits.

:+1:


nanos fails to load if localStorage is broken

It's possible to get localStorage into a corrupted state where all operations throw an exception as seen here: https://stackoverflow.com/questions/18877643/error-in-local-storage-ns-error-file-corrupted-firefox
Currently nanos requires localStorage to not throw in order to operate successfully, otherwise things like the SessionClientBox and the ClientBuilder will throw exceptions and never finish their execution.
We could fix all these call sites to guard against localStorage exceptions, however those exceptions are a very rare occurence and not expected by most developers, especially as they are not even documented on the Mozilla Developer Network (https://developer.mozilla.org/en-US/docs/Web/API/Storage/getItem)
Instead I plan to polyfil localStorage (and possibly sessionStorage) with just an in memory storage that will persist for the lifetime of the page when localStorage is detected to be broken.

We might want to consider always decorating localStorage so we can detect these exceptions and gracefully fall back to in memory storage, but its not clear if this failure can happen during operation.
Another option would be to not polyfil local storage but switch to a FOAM implementation which is provided by the context, has .get/.set methods and is more easily decorated.  localStorage is being used as a global variable which should instead be provided by the context.


cpm tests now download less components and can be run in parallel.

The cpm tests previously would each fetch at minimum the CPM module from github, and possibly other components. Now we pre-popluate a shared cache with each rapids-cmake package and the cpm module.
The end result of this is two fold. First we reduce the amount of network requests, and testing is quicker as we can run
more tests in parallel.

@gpucibot merge


Formatting of floating point

There are challenges when using BigDecimal and constructors such as BigDecimal(Double) vs BigDecimal(String).  For example: BigDecimal(1.0) has different "scale" than BigDecimal("1.0")
Design & implement a consistent policy for FloatingBigRational.  Options may include:

Follow the patterns of BigDecimal
Always show a decimal point to emphasize the floating-point nature, eg, "3.0 / 2.0" vs "3 / 2"

Present code leans towards the former (partly by accident).

Note that internally FloatingBigRational is still the ratio of two BigIntegers, not two BigDecimals.  Option 2 would imply:
println(FixedBigRational.valueOf(2))
println(FloatingBigRational.vallueOf(2))

prints:
3/2
3.0/2.0


Updated Scrollbar of the page

@jeffreycharters Hey, I updated the scrollbar which is also syncing with dark mode and light mode.

@michaella23 thanku for your review


What is the zhou_host_protein transformed dataset?

Dear all, I am researching the data source that is used for constructing the KG-COVID-19. I noticed that there is a set of dataset called "zhou_host_protein". I also see in this file: https://kg-hub.berkeleybop.io/kg-covid-19/current/transformed/zhou_host_proteins/edges.tsv
It seems from this file, that the Zhou_host-proteins associated with mainly some publications with PMID provided and STRING proteins. However, there is no information about the origin of the "zhou_host_proteins". Can you please direct me to the original publication or the original list that you referred here as "zhou_host_proteins"?
Thanks,
Asiyah Lin

Never mind. I found in YAML file: refer to the paper "Network-based drug repurposing for novel coronavirus 2019-nCoV/SARS-CoV-2".


Joke songs

The Joke songs that I have need to be assigned for the week(s) it will be in.  I would also like to know which songs are going to be used.
-Thx

Yw

Do we have the weeks that are going to be put in yet?

There's gonna be one joke song in the demo for now. But we'll make it as a free play song


Added driver_config support

I needed to extent your repo for the use of nfs volumes. Therefore, I added these three lines, where the config string gets instantiated. I think this could be merged really easy :)

Hello @wakonp, can you tell me something more about the need for this PR?

I am currently working on a project for my master thesis, where I have to create a practicing environment for students at my university. Therefore, I started using Jupyterhub with your SwarmSpawner, which is really awesome by the way.
To achieve persistent data storage in every spawned Jupyter Notebook I used Docker Volumes. The problem with these volumes is, that they are only available on a specific node. So if a student logs in a again and the SwarmSpawner creates the Notebook Server on a different node, his/hers volume (data) is not available there.
So I created a NFS-Server Container on my main node, which is available from every other node in the docker swarm. Now every time a new Notebookserver is created (user logs in) the SwarmSpawner needs to create a volume with Driver_Config option. There you can define which driver docker should use to create the volume (in my case 'type' = 'nfs4'). So every time a new Docker Service is created, a new Volume, which links to my NFS Server, is created. Now User always write their data on the NFS-Server Share and not in the Docker Volumes.
I am currently working at my repo. I also described this here

great, thanks!
Are you using a docker volume plugin?
I see you are struggling with the UID/GID for the nfs.
One solution (I used this before leaving NFS) was to have joyvan also as a owner of the nfs server, in this way UID and GID remain the same.
Another think is: do you use some auth with NFS server?

I did not install any third party plugins for docker.
I just use the local driver driver: local.
Well I do not struggle anymore 😄 . I created a working solution and I am currently writing it down in my wiki.
When a user logs in at the Hub the Authenticator checks if he is authorized for the service. If this is the case the authenticate function is called in any Jupyterhub Authenticator. So if everything works fine, this function returns the username to the Hub, which is instantiating the Spawner and providing it with the username.
I did following:
Before the username is returned by the Authenticator I call:
docker exec -it  NFS_CONTAINER useradd username
docker exec -it  NFS_CONTAINER mkdir /USERHOMESHARE/username && chown username /USERHOMESHARE/username
So the NFS_CONTAINER creates a new user for the authenticated username and provides a new folder owned by the new user.
One of the two mounts I mentioned in my previous comment points directly to the USERHOMESHARE/username folder of my NFS_CONTAINER. So the user will always get his/her shared NFS-Homefolder.
Furthermore, before the notebook server is started via the arg in the container_spec, which is  start-singleuser.sh I call:
NB_UID=docker exec jupyterhub_nfs id -u username
NB_GID=docker exec jupyterhub_nfs id -g username
This adds NB_UID and NB_GID to the ENV of the 'not yet spawned' notebook. Now the notebook only needs to get started with the root user.
The start.sh script checks if the Notebook-Server is spawned as root and takes the ENV variables UID and GID and alters the $NB_USER (jovyan). At the end root starts the notebook as $NB_USER which has the new NB_UID and NB_GID and can write in his/her NFS share.
The second mount is needed for nbgrader but that's a different story 😄

Nice solution!
The security is limited to UID/GID?

That's right! I manage all rights/permissions in the NFS Container.
Another feature of my project is, that the SwarmSpawner can check if the username is a teacher or a student. The teacher can create assignments in nbgrader, wheras the student can attempt assignments (starts two different docker images, teacher- order studentennotebook).
In addition the NFS User will get either the group 'students' or the group 'teachers'. So I can manage the rights for nbgrader submittions.
But that feature is very specific and I dont really think that this should be part of the SwarmSpawner Repo. Maybe only as a extension repo something like SwarmSpawnerNbGrader.

Cool solution @wakonp!! I have learned so many new things just by reading your explanation here as well as the 'half-baked' wiki. I am especially looking forward to try configuring my Jupyterhub with the NB_UID and NB_GID to change the user jovyan on the spawned NB. Good job! I will keep monitoring the development here and in your repo.

By the way I created an Issue at the jupyter/docker-stacks which resulted in this pull request 435. Now the UID and GID won't get changed while starting the notebook server via start.sh, but the docker run command will be used like this:
docker run -u 501 -g 501 --group-add user-writable -it jupyter/base-notebook
So if you want to use the SwarmSpawner you have to add the user property in the container_specs as shown here. The docker run command with the user option will be described here.
So I think the final jupyterhub_config.py would look like this:
c.SwarmSpawner.container_spec = {
			'args' : ['start-singleuser.sh'],
                        'Image' : os.environ.get('SWARMSPAWNER_NOTEBOOK_IMAGE'),
			'mounts' : mounts,
                        'user' : os.environ.get(NB_UID')+':'+os.environ.get('NB_GID')
          }

and the mounts configuration is still the same? I actually have a problem understanding this part of configuration:
'options' : {
     'type' : 'nfs4',
	 'o' : 'addr='+os.environ.get('NFSSERVER_IP')+',rw',
	 'device' : ':'+os.environ.get('NFSSERVER_USERDATA_DEVICE')
   }

Where did you get the information about this 'options'? I could not find it in the documentation.

HI @hans-permana ,you are passing this info to the spawner.
NFSSERVER_IP is your nfs server (you need to have one)
NFSSERVER_USERDATA_DEVICE is the path inside the nfs server, like /myshares/myuser

Hi @barrachri, thanks for the info. However, my question is more like: who will use the DriverConfig object? Where does the addr key come from? Is it to be used by a wrapper around mount command in unix. If so, I could not find this in the manual page.

DriverConfig is a Docker option :)

Hi @hans-permana,
The mount configuration in the mount array as displayed beneath will be used to create new Docker Volumes before the Service gets spawned.
mounts = [{'type' : 'volume',
'target' : os.environ.get('SWARMSPAWNER_NOTEBOOK_DIR'),
'source' : 'jupyterhub-user-{username}',
'no_copy' : True,
'driver_config' : {
  'name' : 'local',
  'options' : {
     'type' : 'nfs4',
	 'o' : 'addr='+os.environ.get('NFSSERVER_IP')+',rw',
	 'device' : ':'+os.environ.get('NFSSERVER_USERDATA_DEVICE')
   }
}},{
'type' : 'volume',
'target' : '/srv/nbgrader/exchange',
'source' : 'jupyter-exchange-volume',
'no_copy' : True,
'driver_config' : {
  'name' : 'local',
  'options' : {
     'type' : 'nfs4',
	 'o' : 'addr='+os.environ.get('NFSSERVER_IP')+',rw',
	 'device' : ':'+os.environ.get('NFSSERVER_ASSIGNMENTDATA_DEVICE')
   }
}}]

So the the objects in the array gets instantiated with this class.
You can do it in the command line like this:

docker volume create --driver local
--opt type=nfs
--opt o=addr=<IP_ADDRESS>,rw
--opt device=:/path/to/dir
foo
https://docs.docker.com/engine/reference/commandline/volume_create/#extended-description

The --opt attributes are the driver_config for docker.

Thanks @wakonp, that's exactly what I was looking for :)
@barrachri, is this PR going to be merged? I think it is a very useful feature and I can imagine it will be useful for many.

Yes, definitively.
If you are not in rush I plan to do this during the weekend.
I plan to add more info inside the readme and update the PyPI package

not at all :) Thanks guys for the help 👍


return generated Event-UUID when executing a FSW application

any chance you can look at this and either accept, comment further, or reject?

:+1: Sorry, didn't know it updated. Github only notifies on comments not commits :(


Question: CDN(HTTPS)

Hi :smiley:
I'm just trying to play some examples at jsfiddle or something like that, but,
Do you have resource on CDN(HTTPS not HTTP)?
Anyway thank you for your gread work!

github pages will serve the file using SSL if you don't use the CNAME version:
https://tonejs.github.io/CDN/r6/Tone.js

Awesome! Thanks.


Form labels conflict with each other

PHP Version: 8.2.20   | Shopware Version: <IP_ADDRESS>  | Affected area / extension: Platform(Default)

Expected behaviour:
We use both, the contact form and the newsletter form on the same page.
However, as shops need to be compliant with the newest accessibility guidelines, we are really thorough with the approach.
We expected them to have different and unique labels so it won't throw accessibility errors using the WAVE accessibility checker browser addon.
Actual behaviour:
The email field label of the newsletter form and the email field label of the contact form are equal "email". This will clash with accessibility checkers.
Should have unique label texts.
How to reproduce:
putting both on the same template/page.

[public] Shopware automated response: This issue is linked to the internal issue: NEXT-38975
[created from NEXT-38975, comment 503622]

[public]

FixVersion Change: <IP_ADDRESS>

This issue will be / was solved in Shopware version <IP_ADDRESS>.
[created from NEXT-38975, comment 520251]


Feature(streaming): support streaming logs with websocket

Problem
Currently, UserALE bundles logs into a buffer and flushes the buffer on a regular interval or in response to certain event triggers before POSTing them to the REST API url. This works well in most circumstances, but adds unnecessary network overhead. Also if requests are dropped we have no back up mechanism.
Solution
Add support for websocket connections if the backend REST API supports them. Upon first connection to the back-end, we would check to see if web sockets are supported, if so, we would upgrade the connection.
This achieves two things:

Minimizes network overhead
Adds redundancy

We would still store logs in a client-side memory buffer and flush them over the socket. However, the socket reduces network overhead. And if the connection ever gets dropped before the buffer has been flushed, then we can concurrently work to re-establish the connect while continuing to store event logs in the buffer. Upon reconnect, you flush all logs to relieve back-pressue. In this way, no logs are ever dropped. As an escape hatch, if the buffer exceeds a certain memory threshold, then you can treat it like a FIFO queue and start dumping old logs to avoid a memory leak.

Working on this


validate :on currently not working

http://edgeguides.rubyonrails.org/active_record_validations.html#on Is currently not working, reform ignores it.
A current work around if anyone else has the issue:
validates :some_column, presence: true, if: ->(f) { f.model.new_record? }

This has gone a little stale. I think that this is somewhat mitigated when a form is encapsulated within an operation.
If using dry-validations you could also build rules that only run if your form is persisted e.g.
def valid_field(value)
  return true if !form.persisted?  # the check passes

  value > 12 # if persisted then we check further
end

I'm going to close this, but please reopen if you need. 😄


MicroBuild v2: Port changes from release/1.2 to release/1.1

This change is

FYI @ianwjhalliday @Cellule @digitalinfinity @curtisman


Next.js Support (SWC)

Feature Request
A description of the problem you're trying to solve.
Actually SWC doesn't works with Next.js, since the project moved from Babel to SWC. Would be great to support this popular framework.

Inquired swc creator (@kdy1), but he replied like below:

SWC is not supporting TypeScript type system yet, therefore it is not possible now.

Therefore, I recommend you again, build typescript-json function call through tsc and import that in swc. When swc starts supporting the TypeScript type system, I promise you that I will implement special transformer for the swc. It would be exciting even for me.

Hey @samchon, do you think it is possible now to add support in the current state of swc?

I still don't understand the difference between supporting typescript type, from what I see in this library you implement transformers and looking at swc plugins and playing with AST it seems possible to implement (rewrite) this plugin for rust to add swc support.
Or am I confusing these two things?

Without type system, how can I implement type checker? Not possible only with plugin API, but needs type system, too.

Sorry to bother but I just want to understand, from what I could understand by searching the swc codebase, today swc has this file typescript.rs which represents the Typescript AST.
In addition, swc also parses the AST and returns the type information:

And reading some plugins written in rust for swc, like this one, it looks like it's possible to create what typescript-json does.
I ran the example in the README and the output of TSON.equals is:
const result2 = ((input, path = "$input") => {
    const $join = typescript_json_1.default.equals.join;
    const $io = [
        (input, path, exceptionable) => "string" === typeof input.name && "number" === typeof input.age && Object.entries(input).every(([key, value]) => {
            if (undefined === value)
                return true;
            if (["name", "age"].some(prop => key === prop))
                return true;
            return false;
        })
    ];
    return null !== input && ("object" === typeof input && null !== input && $io[0](input, path + "", true));
})(person); // -> false, do not allow

The library transforms the code and generates this function to validate equality.
So with these things it is theoretically possible to implement the same behavior, what exactly is the type system you need swc to implement this transformation?

@H4ad
I repeat that, not possible.
To make validation script, typescript-json must get type information from compiler, but SWC and Babel are not providing the type information. Without the type information, how can I make above validation script? SWC and Babel provides AST but type info is not in there. It's the reason why I can't support SWC and Babel yet.
As you're asking me repeatedly, I asked to the SWC author directly and below is the formal answer from him:

타입 정보 안 줘요 (no type information)

@samchon
Now I understand, sorry to bother you and thanks for your time and patience, I hope one day the author decides to implement it, it would be great to have this kind of library implemented in such a fast compiler.

Will support through #509

FYI https://github.com/swc-project/swc/issues/657#issuecomment-1328242358
It's a huge effort, though, so no idea on timeline.

I was able to run typia in nextjs via ts-loader, it is not ideal but at least something:
const nextConfig = {
  webpack: (config) => {
    config.module.rules.push({
      test: /\.typia\.(ts)x?$/, // I put typia code in separate files just not to slow down overall build performance
      loader: 'ts-loader',
      options: {
        transpileOnly: false, // Important: otherwise there will be no type information
        compilerOptions: {
          noEmit: false, // Important: otherwise build will fail because of void emit
        },
      },
    });

    return config;
  },
};

Here is stackblitz
Maybe it is worth to be mentioned in docs?

@petertflem except that you have to use separate file for typia code there should be no other disadvantages

@aspirisen Would it matter much if it compiled other code? I don't really plan to, other than for types and interfaces, but just out of interest. It wouldn't use SWC probably, but other than that?

@petertflem you can transpile other code via ts-loader, but it is much slower than SWC

@aspirisen Thanks for the reply! 🙂

@petertflem you can transpile other code via ts-loader, but it is much slower than SWC

Can you show how ? If we use ts-loader will we be able to use this library ?

https://typia.io/docs/setup/#webpack
This be helpful?


Delay init only once

What does this PR do?

Checklist

[ ] This is an enhancement of existing features, or a new feature in existing plugins

[ ] I have updated CHANGELOG.asciidoc
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] Added an API method or config option? Document in which version this will be introduced
[ ] I have made corresponding changes to the documentation

[x] This is a bugfix

[ ] I have updated CHANGELOG.asciidoc
~[ ] I have added tests that would fail without this fix~ This one is tested manually

[ ] This is a new plugin

[ ] I have updated CHANGELOG.asciidoc
[ ] My code follows the style guidelines of this project
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] I have updated CHANGELOG.asciidoc
[ ] I have updated supported-technologies.asciidoc
[ ] Added an API method or config option? Document in which version this will be introduced
[ ] Added an instrumentation plugin? Describe how you made sure that old, non-supported versions are not instrumented by accident.

[ ] This is something else

[ ] I have updated CHANGELOG.asciidoc

:green_heart: Build Succeeded

Expand to view the summary

Build stats

Build Cause: [Pull request #1262 opened]

Start Time: 2020-06-30T08:02:56.969+0000

Duration: 37 min 15 sec

Test stats :test_tube:

Test
Results

Failed
0

Passed
312

Skipped
10

Total
322


Filter SQLAlchemy's warning on which optuna depends

https://github.com/cupy/cupy/pull/7262#issuecomment-1371737070

/test mini

Test failure are unrelated.


MODE-1279 - Fixed repository blocking after performing a full-text search multiple times

The fix was part of the https://github.com/ModeShape/modeshape/pull/207 pull request, which basically removed explicit synchronization around the LuceneSearchProcessor and Engine.
In addition:

the Lucene version was updated from 3.1.0 to 3.4.0
the LuceneSearchSession was updated to avoid the possible loss of content when indexing the same content in the same workspace from multiple threads

Overall, the changes look very good except for the files that seem to have only formatting changes. If that's the case, can we remove those files from the pull-request?

Do you want me to revert the above mentioned files ?

If you wouldn't mind, try reverting the two files, moving those 'request.add(NoMoreFederatedRequests)' lines, and running the tests again.

Ok, will update the mentioned files are per comment

Updated code as per comments: reverted styling and moved NoMoreFederatedRequest inside finally block.

Merged into the 'master' branch.


User replication along with image replication

Could you please educate us how to replicate users from one harbor to another as we are able to enable replicate images from one harbor to another.

The image replication is designed to replicate images across independent instances.  So user information and there roles cannot be replicated, they have to be managed separately.

Any API we can use to manage users and their roles based replicated projects?
Thanks and Kind Regards,
Bala Deshamouni
On Jul 19, 2018, at 9:37 PM, Daniel Jiang <notifications<EMAIL_ADDRESS>wrote:
The image replication is designed to replicate images across independent instances. So user information and there roles cannot be replicated, they have to be managed separately.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/vmware/harbor/issues/5350#issuecomment-406462912, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AJR2snxpu1sfOqsFt7R2wQlHVNjMiXZYks5uITRHgaJpZM4VXKb3.

https://github.com/vmware/harbor/blob/master/docs/swagger.yaml#L684
https://github.com/vmware/harbor/blob/master/docs/swagger.yaml#L485


Adding a custom scrollbar to the website.

Current Behavior
The scrollbar right now is a normal scrollbar. It can be improved and customized according to the website's theme.
Desired Behavior
I can customize the scrollbar according to the colors mainly visible in the website. It can be made eye catching by giving a linear gradient. The overall improvement of the scrollbar can add to the enhanced ui of the website.
Screenshots / Mockups

@thekavikumar Please check and assign  this issue!


This seems to be caused by https://github.com/cloudfoundry-incubator/cf-abacus/blob/master/lib/aggregation/aggregator/src/index.js#L445, where we expect to have SINK env.variable.
Accidentially we have "sink" app running on the same platform that responds with 404 and breaks the Abacus pipeline.
What's the idea behind this additional "sink" component?

The SINK can be configured to stream all the aggregated usage to another app outside the Abacus pipeline (for further archiving, analytics, a notification system, a billing system etc). Usage should not be posted anywhere if SINK is not configured. This is a bug in the Abacus dataflow module, I'm going to work on a fix.


Cosmic text

Rebase of https://github.com/bevyengine/bevy/pull/8808
This needs all the information from that PR, as well as an update to cosmic-text 0.10.0
but this compiles and can run the ui/text.rs example, and thats about it.
Left image is 15c54b55427ef340d4d1616b165a98c9e5658c32
Right image is 8e3de7b73f6580e11b7206172b637aa0cbc0f93e

LeftOver TODOs:
// TODO: TextPipeline: cache buffers / store buffers on the entity
// TODO: TextPipeline: solve spans with different font sizes, see https://github.com/pop-os/cosmic-text/issues/64
// TODO: TextPipeline: reconstruct byte indices for keeping track of eventual cursors in text input
// TODO: TextPipeline: (future work) split text entities into section entities
// TODO: TextPipeline: (future work) text editing
// TODO: [crates::bevy_text::Font::from_bytes] font validation
// TODO: Remove mutext from FontSystem the only reason we need a mutex is due to TextMeasure
// TODO: TextPipeline::create_buffer: Support multiple section font sizes, pending upstream implementation in cosmic_text For now, just use the first section's size or a default
// TODO: Support line height as an option. Unitless 1.2 is the default used in browsers (1.2x font size).
// TODO: TextPipeline cache textbuffers see (glyphon/iced)

So this would have to be updated to cosmic-text 0.10 as well, since this is just a way to get the work of @tigregalis working on main.

@tigregalis I must have messed up somethign in the rebasing and everything, and I absolutely could not figure out how to fix it.
So basically, made an entirely new commit, containing all the changes in this branch, mashed into one. To make it possible for me to just keep the branch rebased onto main.
If you want some credit on the commit, do you have any suggestions on how to fix this? you can find the branch here https://github.com/TotalKrill/bevy/tree/cosmic-text-fix-githistory
The only way someone, including me can continue work on this is if the mess i made of the git-history is fixed, and this is the only way I could figure out how to do it

@TotalKrill https://stackoverflow.com/questions/7442112/how-to-attribute-a-single-commit-to-multiple-developers

Hello!
I am having less time than anticipated ( sorry ) which means that adopting this might have been premature from my side.
However, changing to the cosmic-text crate from the current one would be beneficial, since cosmic text seems to become the rust text standard.
Seeing this, I am seeing that the started port tried to implement a few new features, and thus changed quite a bit of the original code. Since I did not write the first implementation, is there a way we could reduce the scope of this pull request, to get cosmic-text into bevy, for the reason to enable further improvements that cosmic-text CAN provide.
If that is an option, could someone help me with defining a clear goal of what a minumum acceptable pull request for this would be? @alice-i-cecile @tigregalis @nicoburns ?

Copying from discord (there is also some more chat about  text around that point in the channel):
I believe it needs:

https://github.com/pop-os/cosmic-text/issues/42#issuecomment-1607731931 / https://github.com/pop-os/cosmic-text/issues/70 for correct alignment
https://github.com/pop-os/cosmic-text/pull/150 for mixed text sizes (which existing bevy text supports).

And it could also do with a new Taffy release, which will allow the PR to remove a Mutex, but that's probably not blocking.
I can see a case that regressing on multiple font sizes could be acceptable (although I'm always quite loathe to break things that users might quite reasonably be depending on), but I feel like breaking text alignment wouldn't be?

I agree, the system fonts did look almost finished.
However, the API for using the system fonts did not really feel very "Bevy", so I put the removal of that feature in a separate commit, so that it could be easily re-added in another PR after the backend switch feels okay.

tested the performance in text_debug, and there was a 10x slowdown when running with Shaping::Advanced, compared to Shaping::Basic. Not a big fan of the regression of performance.

Bevy
Cosmic Text Shaping::Basic
Cosmic Text Shaping::Advanced

--release
~2400fps
~2200fps
~1000fps

--debug
~200fps
~200fps
~20fps

With this test, I would suggest using Shaping::Basic for now

I think the last part of this, might be what to do with all the sprinkled TODOs left in the codebase. I am personally a bit ambivalent, I do like them, since it would probably guide someone looking to implement additional features.
Also, maybe a new PR for the system font feature as well, since I suspect a merge would just squash these commits.

I think the last part of this, might be what to do with all the sprinkled TODOs left in the codebase. I am personally a bit ambivalent, I do like them, since it would probably guide someone looking to implement additional features.

I'm fine to leave them. If we remove them, we should make an issue or ten.

Also, maybe a new PR for the system font feature as well, since I suspect a merge would just squash these commits.

Agreed. I would like that in a different PR.

tested the performance in text_debug, and there was a 10x slowdown when running with Shaping::Advanced, compared to Shaping::Basic. Not a big fan of the regression of performance.
Bevy	Cosmic Text Shaping::Basic	Cosmic Text Shaping::Advanced
--release	~2400fps	~2200fps	~1000fps
--debug	~200fps	~200fps	~20fps
With this test, I would suggest using Shaping::Basic for now

Any idea why it's so expensive, what does the advanced text shaping give us?

Any idea why it's so expensive, what does the advanced text shaping give us?

I believe it's using RustyBuzz instead of Swash for shaping + doing proper unicode line breaking. I think it gives us support for things like non-latin text and ligatures. I'm not 100% sure on the details, but it's something like that. It should only affect FPS like that for constantly changing text, as shaping only needs to happen once per string, and isn't required for relayouts (although I'm not sure if the current implementation enables this).
Iced added Shaping::Basic specifically for debug mode performance (I don't think it's intended for shipping to end users). But IMO we'd be better off just always compiling deps in release mode. Taffy is also super-slow in debug mode, and I'm sure a lot of the rendering stuff is too.

I imagine Shaping::Basic would be a good tradeoff for some games / parts of games that know that they will only be rendering really basic text though. Perhaps it could be exposed as an option on a per-text-node basis?

Yeah I can definitely see the benefits of having advanced shaping for
specific use cases.
However, I would also argue that for changing backend, this would be
enough, and I rather err on the side of performance :)
One further PR could be to discuss adding a feature gate for the shaping
methods. But again, I would rather put that in another PR, where
discussions of why it is so slow, and what it gives us could be considered
in further depth.
Since it's quite Low code / potentially high impact
On Mon, Nov 13, 2023, 16:38 Nico Burns @.***> wrote:

I imagine Shaping::Basic would be a good tradeoff for some games / parts
of games that know that they will only be rendering really basic text
though. Perhaps it could be exposed as an option on a per-text-node basis?
—
Reply to this email directly, view it on GitHub
https://github.com/bevyengine/bevy/pull/10193#issuecomment-1808399406,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAYY7BXGGRGXYE62SCBMFCDYEI5F3AVCNFSM6AAAAAA6H4OQLGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMBYGM4TSNBQGY
.
You are receiving this because you were mentioned.Message ID:
@.***>

Seems there are now merge conflicts, I consider this ready to merge, with follow up PRs preferably done after this has been merged.
Even thought it's gonna be merged, I assume that my branch on my fork will not be affected, so that code I removed can be collected from there afterwards

Even thought it's gonna be squashed ehne merged, I assume that my branch on my fork will not be affected, so that code I removed can be collected from there afterwards

Correct :)

Are multiple text colors in a single bundle also not supported?
In the example below, both sections are the same size (understandably, with current cosmic-text limitations).
But they are also both green, which I would hope would work.
use bevy::prelude::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
    // UI camera
    commands.spawn(Camera2dBundle::default());

    commands.spawn(TextBundle::from_sections([
        TextSection::new(
            "S1",
            TextStyle {
                font_size: 60.,
                color: Color::GREEN,
                font: asset_server.load("fonts/FiraSans-Bold.ttf"),
            },
        ),
        TextSection::new(
            "S2",
            TextStyle {
                font_size: 30.0,
                color: Color::RED,
                font: asset_server.load("fonts/FiraSans-Bold.ttf"),
            },
        ),
    ]));
}

Labelling as Controversial: until we have a fix for https://github.com/pop-os/cosmic-text/issues/64 we're taking a pretty reasonable sizable of functionality. Might be the right choice, but not one I would want to make unilaterally.

Thank you for taking the time to review this! I have rectified all the easy things. Responded to the comment with a :+1:  to indicate I did it.
Others I left a comment on.

It would be nice to add "bevy with the subpixel_glyph_atlas feature" into the benchmarks -- as far as I know this is something that cosmic-text is doing by default.

Are multiple text colors in a single bundle also not supported?
In the example below, both sections are the same size (understandably, with current cosmic-text limitations).
But they are also both green, which I would hope would work.
use bevy::prelude::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
    // UI camera
    commands.spawn(Camera2dBundle::default());

    commands.spawn(TextBundle::from_sections([
        TextSection::new(
            "S1",
            TextStyle {
                font_size: 60.,
                color: Color::GREEN,
                font: asset_server.load("fonts/FiraSans-Bold.ttf"),
            },
        ),
        TextSection::new(
            "S2",
            TextStyle {
                font_size: 30.0,
                color: Color::RED,
                font: asset_server.load("fonts/FiraSans-Bold.ttf"),
            },
        ),
    ]));
}

I also think that should work? in the examples/ui/text.rs, i fI explicitly set the colors to RED and GOLD in those sections, i get the expected result..

Q: Are there plans to support "font families", in other words, the ability to select the correct font asset based on style options? As opposed to what we have now: if you want to draw text in italic you have to pick an italic font.
See https://github.com/bevyengine/bevy/issues/9725

Q: Are there plans to support "font families", in other words, the ability to select the correct font asset based on style options? As opposed to what we have now: if you want to draw text in italic you have to pick an italic font.
See #9725

that would be supported by loading multiple fonts (e.g. loading an entire font family, or loading system fonts), and the FontQuery API. i don't recall if FontQuery was removed or not for this initial implementation as part of the system fonts feature that was (temporarily) removed, but my original implementation did have this working if not battle-tested

I removed everything regarding font families and system fonts in one (maybe two) PRs, to make it easier to make into a separate PR directly after this had landed.
My plan was to decontroversialize this as much as possible, to get cosmic-text in, since I believe the future potential with cosmic-text is better adapted for adding things such as font families etc.

@TotalKrill I am in 100% agreement with that approach. Small bites.
We can talk about font-families later. I think that it should be something that can be defined either in code or as an asset, and in asset form can be something simple like a RON to TOML file.

I have picked up the multiple font size / line height work in cosmic-text. There is a new PR (which is rebased on the latest cosmic-text main branch) here: https://github.com/pop-os/cosmic-text/pull/235. There's still quite a bit to sort out, but I'm going to make it a priority to get this work done so hopefully we will see relatively fast progress.

@TotalKrill Btw, cosmic-text are claiming greatly improved shaping performance in 0.11, so it might be interesting to upgrade this PR to the new version and re-run the benchmarks you ran before if you have time.

Did a quick check on this, I get stuck on the changes in the TexturaAtlas and TextureAtlasLayout
When I last checked this, the TextureAtlas contained the handle to the image it was using to draw the textureatlas information on.
Do anyone know where I should be looking for the information about which Handle<Image> the textureatlaslayout is currently lacking this information, so they have to be paired somewhere else i assume.
in this code, I am lacking the information at crates/bevy_text/src/text2d.rs:141 when trying to go get it working in main.

Reran the benches after rebase still on cosmic text 0.10

Bevy@c641882cf
Cosmic Text Shaping::Basic
Cosmic Text Shaping::Advanced

--release
~1300fps
~2200fps
~1100fps

--debug
~60fps
~190fps
~20fps

Also please consider using the shape-run-cache feature if you aren't already, it boosts advanced shaping performance even more but requires manual cache trimming.

@jackpot51 I will wait with doing optimization efforts from this, mostly since I believe there is a large chance of bugs with doing manual cache clearance at this point in time.
For anyone wondering why this does not get merged, the current implementation of cosmic-text in bevy removes some functionality, and thus its controversial to add this. When the multi-font-size feature is implemented in cosmic-text ( current work here PR: https://github.com/pop-os/cosmic-text/pull/235)  there will be no reduction of functionality, and significant performance boost, along with support for more advanced text features such as ligatures and such. (feel free to correct me here)
I believe that this work, will make it easier to upstream text-editing widgets (looking at a current text-edit implementation: https://github.com/StaffEngineer/bevy_cosmic_edit).

Currently it crashes if it is trying to render a font that is not loaded.
See this code:
use bevy::{prelude::*, text::BreakLineOn};

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_systems(Startup, setup)
        .add_systems(Update, create_ui)
        .run();
}

fn setup(mut commands: Commands) {
    commands.spawn(Camera2dBundle::default());
}

fn create_ui(mut commands: Commands, assets: Res<AssetServer>) {
    commands
        .spawn(NodeBundle {
            style: Style {
                width: Val::Vw(100.),
                height: Val::Vh(100.),
                align_items: AlignItems::Center,
                justify_content: JustifyContent::Center,
                ..default()
            },
            ..default()
        })
        .with_children(|parent| {
            parent
                .spawn((
                    NodeBundle {
                        style: Style {
                            width: Val::Px(200.),
                            height: Val::Px(200.),
                            ..default()
                        },
                        ..default()
                    },
                    Outline::new(Val::Px(5.), Val::Px(0.), Color::WHITE),
                ))
                .with_children(|parent| {
                    parent.spawn(TextBundle {
                        text: Text {
                            sections: vec![TextSection::new(
                                "AAAAAAAAAAAAAAAAAAA",
                                TextStyle {
                                    font: assets.load("fonts/FiraSans-Bold.ttf"),
                                    font_size: 40.,
                                    color: Color::WHITE,
                                },
                            )],
                            justify: default(),
                            linebreak_behavior: BreakLineOn::NoWrap,
                        },
                        ..default()
                    });
                });
        });
}

It gives this error message:
thread 'Compute Task Pool (2)' panicked at bevy/crates/bevy_text/src/pipeline.rs:339:47:
called `Option::unwrap()` on a `None` value

I think it should instead not render the text while the font is still loading like it did before.

#13010 may be interested in this

This is the path forward, but we're waiting on the next cosmic-text release before we can merge this.

Can we try removing the mutex per the discussion on Discord that suggested it might no longer be necessary?

I've removed one Mutex in https://github.com/TotalKrill/bevy/pull/3. The other could be removed by storing a single global FontSystem as a singleton entity and passing through an &mut reference to it to the layout system rather than storing an  Arc reference to it in the TextMeasureInfo.

I'm getting very small text with this PR. I think it's a scale factor issue as my screen has a scale factor of 2.0 and the text looks about half the size it should be.

I'm getting very small text with this PR. I think it's a scale factor issue as my screen has a scale factor of 2.0 and the text looks about half the size it should be.

@Dimchikkk did you solve this issue in bevy_cosmic_edit?

I'm getting very small text with this PR. I think it's a scale factor issue as my screen has a scale factor of 2.0 and the text looks about half the size it should be.

@Dimchikkk did you solve this issue in bevy_cosmic_edit?

Not sure if it's a proper fix but font size looks good to me on retina and non-retina displays: https://github.com/TotalKrill/bevy/pull/5

I've removed one Mutex in TotalKrill#3. The other could be removed by storing a single global FontSystem as a singleton entity and passing through an &mut reference to it to the layout system rather than storing an Arc reference to it in the TextMeasureInfo.

I've removed the last Mutex in https://github.com/TotalKrill/bevy/pull/9 - the FontSystem is available via the TextPipeline resource.

Simple followup TODO to add: Add a line breaking setting that uses this variant: https://docs.rs/cosmic-text/latest/cosmic_text/enum.Wrap.html#variant.WordOrGlyph.

After https://github.com/TotalKrill/bevy/pull/16, the text2d example crashes with
thread 'Compute Task Pool (1)' panicked at /Users/me/.cargo/registry/src/index.crates.io-6f17d22bba15001f/cosmic-text-0.12.0/src/glyph_cache.rs:92:18:

* Use an undefined buffer size when computing the "max-content" width.

After TotalKrill#16, the text2d example crashes with
thread 'Compute Task Pool (1)' panicked at [...]/cosmic-text-0.12.0/src/glyph_cache.rs:92:18:
attempt to add with overflow

https://github.com/TotalKrill/bevy/pull/18 addresses both of these. API for specifying text bounds (especially unbounded axes) in Text2dBundle changed as a result, but IMO much more logical.

API for specifying text bounds (especially unbounded axes) in Text2dBundle changed as a result, but IMO much more logical.

👍 from me.
I guess
pub const fn new(width: f32, height: f32)
pub const fn horizontal(width: f32)
pub const fn vertical(height: f32)

would roughly match a similar pattern in UiRect.

@TotalKrill once CI is green (there's a new lint), ping me and I'll get this merged ASAP.

Thank you to everyone involved with the authoring or reviewing of this PR! This work is relatively important and needs release notes! Head over to https://github.com/bevyengine/bevy-website/issues/1582 if you'd like to help out.

Thank you to everyone involved with the authoring or reviewing of this PR! This work is relatively important and needs release notes! Head over to https://github.com/bevyengine/bevy-website/issues/1653 if you'd like to help out.


Logical Problem of sending method

BUG REPORT
I found a logical problem while reading source code. The problem method is located in org.apache.rocketmq.client.latency.MQFaultStrategy#selectOneMessageQueue(final TopicPublishInfo tpInfo, final String lastBrokerName).
The first problem is that when code runs into the first for-loop, it basically traverse the list of all message queue, and select one available to return.  But when it checks the availability of the broker it got before, here comes the problem.
In that checking block, it provides two conditions: null == lastBrokerName || mq.getBrokerName().equals(lastBrokerName).  The second condition is the source of my problem. When this condition being triggered, it represents that producer need to re-send message and to pick one queue as target of sending.
Meanwhile, this also means that the AVAILABLE broker is just the same broker it used last time, which is NOT AVAILABLE. It seemed to be wrong and should add a ! at start of the second condition. This is the first question.
The second question is, In this method, when calling tpInfo.getQueueIdByBroker(notBestBroker);, it returns an Integer variable named writeQueueNums represents the number of  available queues under the notBestBroker for writting messages from producer.
And under the situation that writeQueueNums is greater than zero, which means there exists certain amount of available queues, it in success calls 'tpInfo.selectOneMessageQueue()' to get an instance of MessageQueue. Then it checks the notBestBroker whether or not be null and set some info for mq. Is there any necessity for this "not-null"check? I don't think so, for this notBestBroker itself has already been referenced. It's contradictory and weird.
The 3rd question is that why it remove the notBestBroker from the list of failed(not available
) broker when there is no available queue to write?

You can submit a PR to solve these problems:)

thank you for replying. I'll give it a try.

I've committed a PR, please check if it is useful :)

Can you make a association with issue and pr?

Seems a few guys have already mentioned this topic. See #1938 #1576 #1302 #760.
And by now the result of the discussion is no need to fix it.


Fix lint, changelog entry, tests for #4373

This pull request works on top of user contribution in #4373 and includes the following changes:

Fixes lint
Regenerates sample config
Add changelog entry
Add tests for the new change

This pull request works on top of user contribution in #4373

FYI https://help.github.com/articles/committing-changes-to-a-pull-request-branch-created-from-a-fork/

@armab Yeah, I wanted to do that (and I did it in the past in other fork PRs) but for some reason it didn't work on that PR (perhaps because it was based off master and not off some separate branch)?


Fix phpcs for Travis CI (do not merge yet)

Merge when solved, might require some tuning

Excuse me, looks like a false positive

All fixed ;-)

👏🏼


Add icon to executable

Should be able to use this package to add info and icons: https://github.com/josephspurrier/goversioninfo


Unable to use openAuthenticationPolicies in accessControl for Logic Apps ARM template

Using ARM template unable to use the openAuthenticationPolicies for Logic App deployment
          "accessControl": {           "triggers": {             "allowedCallerIpAddresses": [               {                 "addressRange": "<IP_ADDRESS>/32"               },               {                 "addressRange": "<IP_ADDRESS>/32"               }             ],             "openAuthenticationPolicies": {                 "policies": {                   "adfpolicy": {                     "type": "AAD",                     "claims": [                       {                         "name": "Audience",                         "values": "https://management.core.windows.net/"                       }                     ]                   }                 }             }           },           "contents": {             "allowedCallerIpAddresses": [               {                 "addressRange": "<IP_ADDRESS>/32"               },               {                 "addressRange": "<IP_ADDRESS>/32"               }             ]           }         }
I get this error whenever the arm template is executed. If I remove the openAuthenticationPolicies block the template works fine.

I am also confused with about the values or value to be used in the claims block.

if "claims": [{ "name": "Audience", "values": "https://management.core.windows.net/"}]
Error waiting for deployment: Code="DeploymentFailed" Message="At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details." Details=[{"code":"BadRequest","message":"{\r\n  \"error\" : {\r\n    \"code\": \"InvalidRequestContent\",\r\n    \"message\": \"The request content is not valid and could not be deserialized: 'Could not  find member 'values' on object of type 'OpenAuthenticationPolicyClaim'. Path 'properties.accessControl.triggers.openAuthenticationPolicies.policies.adfpolicy.claims[0].values', line 1, position 434.'.\"\r\n  }\r\n}"}]]
if  "claims": [{ "name": "Audience", "value": "https://management.core.windows.net/"}]
Error waiting for deployment: Code="DeploymentFailed" Message="At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details." Details=[{"code":"BadRequest","message":"{\r\n  \"error\" : {\r\n    \"code\": \"OAuthIssuerClaimValue\",\r\n    \"message\": \"OAuth authentication policy 'adfpolicy' in access control configuration of workflow is not valid. The required claim 'iss' is missing.\"\r\n  }\r\n}"}]
Reference:

https://github.com/Azure/azure-rest-api-specs/blob/master/specification/logic/resource-manager/Microsoft.Logic/stable/2019-05-01/logic.json#L9021
https://github.com/MicrosoftDocs/azure-docs/issues/60176
https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-securing-a-logic-app#define-authorization-policy-in-azure-resource-manager-template

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

ID: 95b48753-cabe-fe92-42de-21775f4f99c3
Version Independent ID: 45a1fa90-c4f8-6d0b-e1a8-ed996de671eb
Content: Secure access and data - Azure Logic Apps
Content Source: articles/logic-apps/logic-apps-securing-a-logic-app.md
Service: logic-apps
GitHub Login: @ecfan
Microsoft Alias: estfan

@akdracarys - Thanks for posting the question. We are currently investigating into the issue and will update you shortly.

@akdracarys Thanks for catching that! Based on the REST API Spec, it is indeed value and not values. I have corrected my comment in the issue that you've linked and I've also raised a PR for the doc, which once merged should reflect in a couple of hours.
As for the error that you see even when using value, is stating that iss (Issuer in the portal) is a required claim. This mentioned in the table above the ARM Template snippet. I've also added a note specific for the ARM Template section.

@PramodValavala-MSFT Thank you for clarifying. The issue is been resolved now.
       "accessControl": {
          "triggers": {
            "allowedCallerIpAddresses": [
              {
                "addressRange": "<IP_ADDRESS>/32"
              },
              {
                "addressRange": "<IP_ADDRESS>/32"
              }
            ],
            "openAuthenticationPolicies": {
                "policies": {
                  "adfpolicy": {
                    "type": "AAD",
                    "claims": [
                      {
                        "name": "iss",
                        "values": "https://sts.windows.net/"
                      }
                    ]
                  }
                }
            }
          },
          "contents": {
            "allowedCallerIpAddresses": [
              {
                "addressRange": "<IP_ADDRESS>/32"
              },
              {
                "addressRange": "<IP_ADDRESS>/32"
              }
            ]
          }
        }


swipeLayout.addSwipeListener methods called multiple times

When i swipe, the onOpen methods is called multiple times. It varies every time.
Sometimes, it's called once, sometimes twice, most times thrice or more.
Could you please help?
    public class ItemListAdapter extends ArrayAdapter<ItemDetails> {
    Context cContext;

    / *        //return the SwipeLayout resource id in the layout.
    public int getSwipeLayoutResourceId(int position) {

    }*/

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        viewHolder.swipeLayout.addSwipeListener(new SwipeLayout.SwipeListener() {
            @Override
            public void onClose(SwipeLayout layout) {
                //when the SurfaceView totally cover the BottomView.
     //                    Log.i("swipelayout", "onClose");
            }

            @Override
            public void onUpdate(SwipeLayout layout, int leftOffset, int topOffset) {
                //you are swiping.
                Log.i("swipelayout", "onUpdate " + " " + leftOffset + " " + topOffset);
            }

            @Override
            public void onStartOpen(SwipeLayout layout) {
    //                    Log.i("swipelayout", "onStartOpen");
            }

            @Override
            public void onOpen(final SwipeLayout layout) {

                    if (layout.getOpenStatus() == SwipeLayout.Status.Open && layout.isSwipeEnabled()) {
                        layout.postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                layout.close();
                                if (layout.getDragEdge() == SwipeLayout.DragEdge.Left) {
                                    Log.i("swipelayout", "DELETE Item");
                                } else if (layout.getDragEdge() == SwipeLayout.DragEdge.Right) {
                                    Log.i("swipelayout", "Item PAID");
                                    paidItem(ItemObject);
                                }
                            }
                        }, 500);
                    }
            }

            @Override
            public void onStartClose(SwipeLayout layout) {
                Log.i("swipelayout", "onStartClose");
            }

            @Override
            public void onHandRelease(final SwipeLayout layout, final float xvel, final float yvel) {
                //when user's hand released.
                Log.i("swipelayout", "onHandRelease " + " " + xvel + " " + yvel);
            }
        });

    }

public class ViewHolder {
...
}

}

I checked out your solution for issue#17 ... is there any equivalent fillValues() method in ArrayAdapter class?

I have the same issue, it seems it's called multiple times until we release the finger ad the view is open.

Thanks HugoGresse. I will try that.

Hugo's solution isn't quite what you are looking for.
onHandRelease is called BEFORE onOpen or onClose.
what you need is something similar to his suggestion:
inside new SimpleSwipeListener(){...}
private boolean isAlreadyOpen;

@Override
public void onOpen(SwipeLayout layout){
  if(isAlreadyOpen) return;

   //your function here

  isAlreadyOpen = true;
}

@Override
public void onClose(SwipeLayout layout){
  isAlreadyOpen = false;
}

Hello,
Have you found any solution to this problem?

@tsakmalis I've a solution for you...
I've created a simple derived SwipeLayout class that you can use for handle listener events direct from SwipeLayout:
import android.content.Context
import android.util.AttributeSet
import com.daimajia.swipe.SwipeLayout

open class SwipeLayoutEx : com.daimajia.swipe.SwipeLayout {
    constructor(context: Context?) : super(context)
    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context?, attrs: AttributeSet?, defStyle: Int) : super(context, attrs, defStyle)

    private val mSwipeListener = SwipeListenerBase()

    override fun onAttachedToWindow() {
        super.onAttachedToWindow()
        this.addSwipeListener(mSwipeListener)
    }

    override fun onDetachedFromWindow() {
        this.removeSwipeListener(mSwipeListener)
        super.onDetachedFromWindow()
    }

    inner class SwipeListenerBase : SwipeLayout.SwipeListener {
        override fun onOpen(layout: SwipeLayout) {
            mOnSwipeOpen?.invoke(layout)
        }

        override fun onUpdate(layout: SwipeLayout, leftOffset: Int, topOffset: Int) {
            mOnSwipeUpdate?.invoke(layout, leftOffset, topOffset)
        }

        override fun onStartOpen(layout: SwipeLayout?) {
            mOnSwipeStartOpen?.invoke(layout)
        }

        override fun onStartClose(layout: SwipeLayout?) {
            mOnSwipeStartClose?.invoke(layout)
        }

        override fun onHandRelease(layout: SwipeLayout?, xvel: Float, yvel: Float) {
            mOnSwipeHandRelease?.invoke(layout, xvel, yvel)
        }

        override fun onClose(layout: SwipeLayout?) {
            mOnSwipeClose?.invoke(layout)
        }
    }

    private var mOnSwipeOpen: ((layout: SwipeLayout?) -> Unit)? = null
    private var mOnSwipeClose: ((layout: SwipeLayout?) -> Unit)? = null
    private var mOnSwipeStartOpen: ((layout: SwipeLayout?) -> Unit)? = null
    private var mOnSwipeStartClose: ((layout: SwipeLayout?) -> Unit)? = null
    private var mOnSwipeHandRelease: ((layout: SwipeLayout?, xvel: Float, yvel: Float) -> Unit)? = null
    private var mOnSwipeUpdate: ((layout: SwipeLayout, leftOffset: Int, topOffset: Int) -> Unit)? = null

    fun onSwipeOpen(f: (layout: SwipeLayout?) -> Unit): SwipeLayoutEx {
        mOnSwipeOpen = f
        return this
    }

    fun onSwipeClose(f: (layout: SwipeLayout?) -> Unit): SwipeLayoutEx {
        mOnSwipeClose = f
        return this
    }

    fun onSwipeStartOpen(f: (layout: SwipeLayout?) -> Unit): SwipeLayoutEx {
        mOnSwipeStartOpen = f
        return this
    }

    fun onSwipeStartClose(f: (layout: SwipeLayout?) -> Unit): SwipeLayoutEx {
        mOnSwipeStartClose = f
        return this
    }

    fun onSwipeHandRelease(f: (layout: SwipeLayout?, xvel: Float, yvel: Float) -> Unit): SwipeLayoutEx {
        mOnSwipeHandRelease = f
        return this
    }

    fun onSwipeUpdate(f: (layout: SwipeLayout, leftOffset: Int, topOffset: Int) -> Unit): SwipeLayoutEx {
        mOnSwipeUpdate = f
        return this
    }
}

Now, you can use it like that:
mySwipeLayout
  .onSwipeOpen { layout ->
    toast("You layout is opened!!")
  }.onSwipeClose {
    toast("You layout is closed!!")
  }

carmas123, can you please write it in java


domain

Goals

Expected Results

Actual Results

Steps to Reproduce

Code Sample

Version of Realm and Tooling

Realm framework version: ?
Realm Object Server version: ?
Xcode version: ?
iOS/OSX version: ?
Dependency manager + version: ?

Please file a new issue taking care to fill out the issue template. We can't help you from an issue title alone.


parser: Use encapsulated string constants for non-file sources

🦟 Bug fix
Fixes #536, follow-up to #537
Downstream: https://github.com/ignitionrobotics/ign-gazebo/pull/794
Summary
Takes prior revision of #537.
Checklist

[x] Signed all commits for DCO
[x] Added tests
[x] Updated documentation (as needed) - N/A
[x] Updated migration guide (as needed) - N/A
[ ] Code check passed (In source directory, run sh tools/code_check.sh)
[ ] All tests passed (See
test coverage)
[ ] While waiting for a review on your PR, please help review
another open pull request
to support the maintainers

Note to maintainers: Remember to use Squash-Merge

I think this will change behavior in a stable release. The string "data-string" is used in a stable release of ign-gazebo. Can we target this to main?

I think this will change behavior in a stable release.

True. How about keeping the string as data-string on this branch and updating it to <data-string> on main?

Done! Retargeted main
Meta: I'm a wee bit confused on release process and expected stability for version branches and all that. Y'all got a page that explains that part?

Per VC, ABI checker failure may be due to statefulness; @azeey will try to re-run; simplest mitigation may be to ignore CI results and merge pending approval.


Weird characters on screen after Font "ter-v32b" in /etc/vconsole.conf

When using FONT="ter-v32b" in /etc/vconsole.conf, LY behaves this way: It shows strange/weird/wrong characters (specially in the border). And it shows the box in the wrong position. Instead of centered, it is moved to the upper-right corner.
It is needed to press some arrow key, for LY to display the login box correctly (position and characters). I am using this font, because it allows the user to have bigger characters on screen, and improve readability.

Due to a recent kernel update, I had to review all of the parameters passed to it via Grub. And I found out that these two were interfering with LY:
quiet (only small chars, no big font)
console=ttyS0,115200n8 (after boot, it was always waiting on tty1)

The solution was removing them from GRUB_CMDLINE_LINUX_DEFAULT