Strings with the same content doesn't work properly

With two strings with the same content, only the first one is obfuscated. The second returns junk chars.
StringCareTest.zip

Since v2.2 it has been patched, but this issue needs work

Is this fixed? I've noticed there is a new version...

Not yet

Oh ok.
Thank you.
Please update me when it gets fixed.

@AndroidDeveloperLB check out v3.0.
This issue should be solved.

Seems to be fixed according to my tests.
However, when I use the library on the large project, I get this:
More than one file was found with OS independent path 'META-INF/library_release.kotlin_module'
Please explain why this occurs when using this repository.

I think this type of message means an external dependency is being added multiple times. This article in StackOverflow talks about it:
https://stackoverflow.com/questions/49676155/what-does-program-type-already-present-mean/49767860
In our case:
{
	"kind": "error",
	"text": "Program type already present: org.apache.commons.lang3.SerializationException",
	"sources": [{}],
	"tool": "D8"
}

You should solve it by implementing the library excluding that package:
implementation ("com.stringcare:library:$stringcare_version") {
    exclude group: 'org.apache.commons' module: 'lang3'
}

Or:
implementation ("com.stringcare:library:$stringcare_version") {
    exclude group: 'org.apache.commons' module: 'commons-lang3'
}

I haven´t tested it.

I tried adding this:
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/library_release.kotlin_module'
}

And also this:
    implementation("com.stringcare:library:$stringcare_version") {
        exclude group: 'org.apache.commons', module: 'lang3'
        exclude group: 'commons-io', module: 'commons-io'
    }

And I ran this:
./gradlew clean cleanBuildCache :app:assembleDebug
Still I have the same issue:
AGPBI: {"kind":"error","text":"Program type already present: org.apache.commons.lang3.SerializationException","sources":[{}],"tool":"D8"}

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesAndResourcesWithR8ForCalleridRelease'.
> com.android.tools.r8.CompilationFailedException: Compilation failed to complete

I just noticed that I'm on "release" build. When switching to "debug" build, I can see more information. There is this conflict:

The only thing that is related to commons-io on the project is this one:
   api 'commons-io:commons-io:2.6'
And it's the latest stable version:
https://mvnrepository.com/artifact/commons-io/commons-io

I'm seeing the correct module name (with conflict) is commons-lang3, so you sould use:
implementation("com.stringcare:library:$stringcare_version") {
     exclude group: 'org.apache.commons', module: 'commons-lang3'
}

Now it finally builds, but then I have a new issue. As soon as I call SC.reveal(R.string.something), I get this crash:
    java.lang.ExceptionInInitializerError
        at com....$1.run(WFGeneral.java:31)
     Caused by: java.lang.NumberFormatException: For input string: "..."
        at java.lang.Integer.parseInt(Integer.java:615)
        at java.lang.Integer.parseInt(Integer.java:650)
        at com.stringcare.library.CPlusLogic$Companion.revealV3(CPlusLogic.kt:128)
        at com.stringcare.library.SC$Companion.reveal(SC.kt:124)
        at com.stringcare.library.SC$Companion.reveal(SC.kt:107)
        at com.stringcare.library.SC$Companion.reveal(SC.kt:87)
        at com.stringcare.library.SC.reveal(Unknown Source:2)
        ...

So I think it still can't handle strings as the native string handling on Android.

Looks like the value of R.string.something string is ..., and that's wrong.
Analyze your APK for ensuring the plugin obfuscates strings: Build > Analyze APK
You can test it too by calling getString(R.string.something) and check what returns.
Should return something like: 123, -4, 45, 67, -56, 3, 27..

It's not really "...". I changed it because it's a private key :)
Putting this string into the sample I've made, it works perfectly fine.
However, when using the Analyze APK on the large app, I don't see just numbers. I see the original string. It wasn't obfuscated/encoded at all.

I think it's a configuration problem and StringCare plugin doesn't find valid resource files.

By default, SC looks for strings in every strings.xml file inside src\main folder of your module.

Is your string located on the default folder/file?
I mean the "default" string resource is src\main\res\values{any_locale}\strings.xml.
If your resource file is not called strings.xml you'll have to configure StringCare for reading more file names.
Also If your string resource is located on a different source folder, configure it.
 src\other_source_folder\res\values{any_locale}\strings.xml
Check out the Configuration page for more details.

That's true. Strings files are sent to translators, so it's bad to send them the keys too.
We have the special strings in a different file: "keys.xml".
However, we had it already set up on the previous versions of the library, as such:
stringcare {
//    debug true
    modules {
        app {
            stringFiles = ['strings.xml', "keys.xml"]
            srcFolders = ['src/main']
        }
    }
}

It's not correct anymore ?

You use a Windows platform and the srcFolders array could be breaking the compilation.
I mean:
stringcare {
    modules {
        app {
            stringFiles = ['strings.xml', "keys.xml"]
            srcFolders = ['src/main'] <- windows uses \\ (double slash) while macos uses /
        }
    }
}

Try without the srcFolders var, the default config for the source folder should be enougth:
stringcare {
    modules {
        app {
            stringFiles = ['strings.xml', "keys.xml"]
        }
    }
}

You can try too:
stringcare {
    modules {
        app {
            stringFiles = ['strings.xml', "keys.xml"]
            srcFolders = ['src\\main']
        }
    }
}

We use both MacOS and Windows.
And it's not true that Windows can't use "/". And it's on gradle, so it has its own language.
But I've tried just for seeing if it helps.
Removing the srcFolders = ['src/main'] or replacing it with the srcFolders = ['src\\main'] line causes the app not to be built, showing me these errors:

Have you tried src\main?

Using srcFolders = ["src\\main"] got the same issue.
Using srcFolders = ["src\main"] got me this isssue:

Using srcFolders = ["src/main"] , it was built fine, but crashed at runtime with the NumberFormatException as before.

I don't know what's happening.
The KotlinSample project uses a similar configuration:
stringcare {
    debug true
    main_module "app"
    modules {
        app {
            stringFiles = ['strings.xml', "strings_extra.xml"]
            srcFolders = ["src\\main", "src\\other_source"]
        }
    }
}

And it works fine in Windows.

I noticed I had to delete manually the build folder (clean task doesn't remove all files and subfolders)

I confirm this configuration works on macOS and Windows:
apply plugin: StringCare

stringcare {
    modules {
        app {
            stringFiles = ["strings.xml", "strings_extra.xml"]
            srcFolders = ["src${File.separator}main", "src${File.separator}other_source"]
        }
    }
}

Ensure you delete the build folder completely.

OK so I used this the next lines and deleted all "build" folders manually after closing the IDE :
stringcare {
    modules {
        app {
            stringFiles = ["strings.xml", "keys.xml"]
            srcFolders = ["src${File.separator}main"]
        }
    }
}

And I got this error (after running the IDE again and trying to build&run the app)  :
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeSyncmeappDebugResources'.
> org.codehaus.groovy.runtime.GStringImpl cannot be cast to java.lang.String

And if I use the next thing again, but with deletion of "build" folders, it still crashes :
stringcare {
//    debug true
    modules {
        app {
            stringFiles = ["strings.xml", "keys.xml"]
            srcFolders = ["src/main"]
        }
    }
}

I'm working on path treatment.
Meanwhile, you can try calling toString() method over the text template:
"src${File.separator}main".toString()

There is a new release (v3.1)

You can use the unix separator char / on Windows too.

apply plugin: StringCare
stringcare {
    modules {
        app {
            stringFiles = ["strings.xml","more_strings.xml"]
            srcFolders = ["src/main", "src/other_variant_source"]
        }
        library {
            srcFolders = ['src/other_folder/main']
        }
    }
}

Added two Gradle tasks for tracing and solving possible bugs or configurations. Checkout the Task page.

I still get the same Android resource linking failed errors , whether I use "src${File.separator}main".toString() or srcFolders = ["src/main"] .
I tried to delete all "build" folders too. Didn't help.
The 0.9 version could handle the paths fine. Are you sure that's the cause to the issue?
What do you want to do with the tasks you've pointed to, exactly? I think such a thing should be contacted via email. The app isn't mine. It's of my job.

I'm not sure because on my projects always works and pass all the tests (on Windows and macOS).
The new tasks shows too much info about the obfuscation process (located files for the given configuration, fingerprint, obfuscation test..) and should help you to find what fails.
You can send it to my mail.

I know. The POC works fine too. I have no idea why this doesn't work on the large app.
The link doesn't say about adding stringcareTestObfuscate variant.
Do you mean adding something like that:
productFlavors {
stringcareTestObfuscate {
//stuff here, same as on the normal app
}
}

stringcareTestObfuscate{$variant} task

Do you mean adding something like that?

No, no. It works as the build Gradle task:
// this would be the main task that builds all variants
gradlew.bat build

// this would be the task that builds the debug variant
gradlew.bat buildDebug

// this would be the task that builds the firstflavorSecondflavorDebug variant
gradlew.bat buildFirstflavorSecondflavorDebug

If you run gradlew.bat signingReport you will see all the available variants for your project.
stringcarePreview task
I recomend to run this task too. It doesn't need any variant and could be helpful for solving the problem, or at least to notice what's wrong.
You can see an output sample of both task in the wiki section.

So how do I add one for StringCare exactly?

I told you where it's explained:

There is a new release (v3.1)
..

Added two Gradle tasks for tracing and solving possible bugs or configurations. Checkout the Task page.

I've read it, but I don't understand why I don't see the task on the IDE, so I thought that maybe I need to add the task.
Please explain.
Should I just run a command?

Yes. Run the command on terminal, in the project's directory.

OK I've sent you via email

You only have sent the stringcarePreview task report, and seems to be ok. Files and strings are found.
Whats shows the stringcareTestObfuscate${variant} task?
Choose an existing BuildVariant for this value:
Ex:
$ gradlew.bat stringcareTestObfuscateDebug

You can write me this on email...
Anyway, sent again, this time with the output of this command.

Found how to fix it, but it doesn't mean the issue isn't here.
I've fixed it by removing the part that lets StringCare handle "strings.xml" file.
The reason:
We don't even need it to scan this file. Only "keys.xml".
Now it works fine, I think.
The reason the issue exists, though, is that the library ruins the resources of "strings.xml" files, even though there is no hidden="true" anywhere in any of those files.
My guess is that it happens when there are translations being used. Not just one "strings.xml" file.

I've noticed that it still can have issues.
We have 2 kinds of versions for the app (using build-variant), and StringCare didn't return the correct value of one of the strings in "keys.xml" correctly on the other version, so I get Gibberish instead.
I tried this (based on : https://github.com/StringCare/AndroidLibrary/wiki/Configuration#additional-resource-folders )  :
stringcare {
    modules {
        app {
            stringFiles = ["keys.xml"]
            srcFolders = ["src/main","src/the_other_app_variant"]
        }
    }
}

so I tried to rename the "keys.xml" file into something else on the other app, and tried again using this method. Still couldn't deal with it.
Note that there are keys on the extra app that are overriding the main app.
So what I think is that those issues are connected. Meaning that if there is a need to handle multiple files or strings from different files, it doesn't work correctly.

I'll review why it fails with your strings.xml file.
About the other issue you mentioned, if I understood, do have you something like this? (for example)
1º src/main/.../keys.xml:
<resources>
    <string name="grievous" hidden="true">General Kenobi</string>
</resources>

2º src/the_other_app_variant/.../keys.xml:
<resources>
    <string name="grievous" hidden="true">General Kenobi 2</string>
</resources>

Yes, the files are are such:
app\src\main\res\values\keys.xml
And:
app\src\the_other_app_variant\res\values\keys.xml

With the following configuration:
sourceSets {
    main.res.srcDirs = ['src/main/res', 'src/other_source/res']
}

I get the normal error response for duplicating resources:
[string/grievous] C:\Users\..\KotlinSample\app\src\other_source\res\values\strings_extra.xml:

Error: Duplicate resources

And the project can't compile.

Why did you configure sourceSets  ? It should work fine without it.
I already wrote it's a different variant of the same app. The second variant should use the strings with priority of itself. Meaning that in the example you wrote, the string of grievous will be General Kenobi 2 and not the other one.

You have to configure the sourceSets.

src/main/.../keys.xml:

<resources>
    <string name="grievous" hidden="true">General Kenobi</string>
</resources>

src/the_other_app_variant/.../keys.xml:

<resources>
    <string name="kenobi" hidden="true">Hello There</string>
</resources>

With no configuration you will get this error because in code you use R.string.kenobi and it's not included in the default folder src/main/res:
error: failed linking file resources.

Android doesn't know where your files are inside src folder. The default configuration is the following:
sourceSets {
    main.res.srcDirs = ['src/main/res']
}

You can define multiple sourceSets configurations for different flavors and buildTypes:
sourceSets {
    productionFlavor {
         main.res.srcDirs = ['src/main/res', 'src/production/res']
    }
    developmentFlavor {
         main.res.srcDirs = ['src/main/res', 'src/dev/res']
    }
}

But not repeat the same resource identifier or you will get this:
Error: Duplicate resources

Check out the official documentation for more details:
https://developer.android.com/studio/build/build-variants#configure-sourcesets

That is incorrect. Both apps work fine for years. The resources are shared between them, and one overrides the other.

That is incorrect. Both apps worked fine for years. The resources are shared between them

Between what? Resource files from the same sourceSet? Please explain me

and one overrides the other

I don't understand anything hahaha

You haven't read the documentation well.

If you list multiple directories, Gradle uses all of them to collect
sources. Because Gradle gives these directories equal priority, if
you define the same resource in more than one directory, you get an
error when merging resources. The default directory is 'src/main/res'.

You haven't understood the only thing you have read:

By default, Android Studio creates the main/ source set and directories for everything you want to share between all your build variants.

That means:
src/
    main/     <-- source set
        java/ <-- directory
        res/    <-- directory

This is what you find when you create a new Android project.
And I told you the default (for resources) is:
sourceSets {
    main.res.srcDirs = ['src/main/res']
}

On the other hand:

However, you can create new source sets to control exactly what files Gradle compiles and packages for specific build types, product flavors (and combinations of product flavors when using flavor dimensions), and build variants.

And a few lines below, the sample:
android {
  ...
  sourceSets {
    // Encapsulates configurations for the main source set.
    main {
      // Changes the directory for Java sources. The default directory is
      // 'src/main/java'.
      java.srcDirs = ['other/java']

      // If you list multiple directories, Gradle uses all of them to collect
      // sources. Because Gradle gives these directories equal priority, if
      // you define the same resource in more than one directory, you get an
      // error when merging resources. The default directory is 'src/main/res'.
      res.srcDirs = ['other/res1', 'other/res2']

      // Note: You should avoid specifying a directory which is a parent to one
      // or more other directories you specify. For example, avoid the following:
      // res.srcDirs = ['other/res1', 'other/res1/layouts', 'other/res1/strings']
      // You should specify either only the root 'other/res1' directory, or only the
      // nested 'other/res1/layouts' and 'other/res1/strings' directories.

      // For each source set, you can specify only one Android manifest.
      // By default, Android Studio creates a manifest for your main source
      // set in the src/main/ directory.
      manifest.srcFile 'other/AndroidManifest.xml'
      ...
    }

    // Create additional blocks to configure other source sets.
    androidTest {

      // If all the files for a source set are located under a single root
      // directory, you can specify that directory using the setRoot property.
      // When gathering sources for the source set, Gradle looks only in locations
      // relative to the root directory you specify. For example, after applying the
      // configuration below for the androidTest source set, Gradle looks for Java
      // sources only in the src/tests/java/ directory.
      setRoot 'src/tests'
      ...
    }
  }
}
...

And I suggested you add something like this:
sourceSets {
    productionFlavor {
         main.res.srcDirs = ['src/main/res', 'src/production/res']
    }
    developmentFlavor {
         main.res.srcDirs = ['src/main/res', 'src/dev/res']
    }
}

And finally you say:

There are no issues of "Duplicate resources" , not when we used v0.9 of StringCare, and not when we didn't use it at all.

StringCare doesn't have any relation with "Duplicate resources" error. If you read fine the documentation, you'll see this:

Because Gradle gives these directories equal priority, if
you define the same resource in more than one directory, you get an
error when merging resources. The default directory is 'src/main/res'

To make sure I'm correct, I've tested what I just have explained to you. I have used the KotlinSample project.
Removing sourceSets from KotlinSample project you'll get this:

The strings from different sourceSets aren't detected until I add:
sourceSets {
       main.res.srcDirs = ['src/main/res', 'src/other_source/res']
}

Could you please read better?

I tried to create an empty project (without StringCare) han define two simple strings.xml files with the same resource identifier.
The additional string file isn't detected until I add this:
sourceSets {
    main.res.srcDirs = ['src/main/res', 'src/other_source/res']
}

And after that, I got the Duplicate resources error:

I don't see in your sample project that you can choose between 2 build variants of apps :

and removing the part of sourceSets  didn't affect anything. Still works fine.
You also didn't set productFlavors. Also just one package name, which doesn't make sense if you want to make 2 different apps.
This can't be an example of 2 different apps sharing code and/or resources.
Here, I've found some samples for you to try:
https://github.com/obaro/MultipleFlavorSample.git (based on https://www.androidauthority.com/building-multiple-flavors-android-app-706436/ )
https://github.com/bmuschko/gradle-android-examples/tree/master/product-flavors
https://github.com/bkraszewski/MultiFlavorDemo (based on https://softwarehut.com/multi-flavor-apps-development-android-need/ )
Notice how they all of them don't need to set sourceSets  .
And it was this way for years. So much that in order to import those projects and run them, you need to update them a lot .
Here, I've made the smallest sample I can think of, to show how it works :
MyApplication.zip
Also watch the video, showing that indeed it works fine, using the same string, on both apps, yet with different value:
2019-06-25_10-53-36.zip
Why close this issue?
It still exists.

I closed the issue because it’s solved.
On the other side you try to understand how sourceSets works and it doesn’t have any relation with StringCare.
My last comment proves it.

I didn't ask about sourceSets . I don't even use it. I said you don't need it for app flavors.
If it's not related to StringCare, please explain why it causes issues when trying to use StringCare, while building&rnning a different flavor.
I don't know what exactly "proves it", and what is "it" that was proven.
There is a bug in StringCare, which causes the app not being able to be built. It might be related to translations, and it might be related to flavors, and maybe to both.
In short, the bug still exists.

It proves that (without StringCare) wrong configurations causes build errors.

Even the sample that you've provided works fine without any sourceSet, so I don't understand what is this sample for.

You don't (want to) understand anything hahaha
If you run TestApp.zip this is the first you get running the app, but you don't say it ;)
Duplicate resources

Say whatever you want, but it fails without using StringCare.

You can do a second test removing the sourceSets and trying to call a string resource on the other source from the main source. You'll get something like this:

I'm not gonna answer any more.


http://resumable.languageforge.org returns Unauthenticated

Strangely it seems that using resumable over http results in Unauthenticated, which is confusing, because we don't expect it to ever work.
With http: The 401 trace is pretty bare.

Same url except with https:

here's the logs from the server
2023-12-05T15:56:21.107433575Z info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
2023-12-05T15:56:21.107482476Z       => TraceId:67b7fbeddb2037a0f7098d8c150cce86 => ConnectionId:0HMVIB5Q5R38Q => RequestPath:/api/v03/pullBundleChunk RequestId:0HMVIB5Q5R38Q:00000010
2023-12-05T15:56:21.107504827Z       Request starting HTTP/1.1 GET http://resumable.languageforge.org/api/v03/pullBundleChunk?offset=0&chunkSize=5000&transId=f1874d74-6a0d-449b-b2b5-580d48a14331&baseHashes[]=d5e4dac6e4d8&baseHashes[]=934155b69e03&repoId=grobish-test-flex - - -
2023-12-05T15:56:21.107509537Z info: Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware[1]
2023-12-05T15:56:21.107512827Z       => TraceId:67b7fbeddb2037a0f7098d8c150cce86 => ConnectionId:0HMVIB5Q5R38Q => RequestPath:/api/v03/pullBundleChunk RequestId:0HMVIB5Q5R38Q:00000010
2023-12-05T15:56:21.107516157Z       Request:
2023-12-05T15:56:21.107519147Z       Protocol: HTTP/1.1
2023-12-05T15:56:21.107522397Z       Method: GET
2023-12-05T15:56:21.107525317Z       Scheme: https
2023-12-05T15:56:21.107528187Z       PathBase:
2023-12-05T15:56:21.107531087Z       Path: /api/v03/pullBundleChunk
2023-12-05T15:56:21.107533977Z       Host: resumable.languageforge.org
2023-12-05T15:56:21.107537027Z       User-Agent: HgResume v03
2023-12-05T15:56:21.107539857Z       Accept-Encoding: gzip
2023-12-05T15:56:21.107542977Z       X-Request-ID: [Redacted]
2023-12-05T15:56:21.107545817Z       X-Real-IP: [Redacted]
2023-12-05T15:56:21.107548908Z       X-Original-Proto: [Redacted]
2023-12-05T15:56:21.107551998Z       X-Forwarded-Port: [Redacted]
2023-12-05T15:56:21.107554998Z       X-Original-Host: [Redacted]
2023-12-05T15:56:21.107557958Z       X-Forwarded-Scheme: [Redacted]
2023-12-05T15:56:21.107560798Z       X-Scheme: [Redacted]
2023-12-05T15:56:21.107563938Z       X-Original-Forwarded-For: [Redacted]
2023-12-05T15:56:21.107566908Z       cdn-loop: [Redacted]
2023-12-05T15:56:21.107569858Z       cf-ipcountry: [Redacted]
2023-12-05T15:56:21.107572998Z       cf-ray: [Redacted]
2023-12-05T15:56:21.107575908Z       cf-visitor: [Redacted]
2023-12-05T15:56:21.107578968Z       cf-connecting-ip: [Redacted]
2023-12-05T15:56:21.107581888Z       X-Original-For: [Redacted]
2023-12-05T15:56:21.107702261Z info: LexSyncReverseProxy.Auth.BasicAuthHandler[7]
2023-12-05T15:56:21.107711161Z       => TraceId:67b7fbeddb2037a0f7098d8c150cce86 => ConnectionId:0HMVIB5Q5R38Q => RequestPath:/api/v03/pullBundleChunk RequestId:0HMVIB5Q5R38Q:00000010
2023-12-05T15:56:21.107715531Z       HgAuthScheme was not authenticated. Failure message: No authorization header
2023-12-05T15:56:21.107751222Z info: Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2]
2023-12-05T15:56:21.107756702Z       => TraceId:67b7fbeddb2037a0f7098d8c150cce86 => ConnectionId:0HMVIB5Q5R38Q => RequestPath:/api/v03/pullBundleChunk RequestId:0HMVIB5Q5R38Q:00000010
2023-12-05T15:56:21.107760922Z       Authorization failed. These requirements were not met:
2023-12-05T15:56:21.107772082Z       DenyAnonymousAuthorizationRequirement: Requires an authenticated user.
2023-12-05T15:56:21.107775792Z       LexSyncReverseProxy.Auth.UserHasAccessToProjectRequirement
2023-12-05T15:56:21.107779222Z info: LexSyncReverseProxy.Auth.BasicAuthHandler[12]
2023-12-05T15:56:21.107782482Z       => TraceId:67b7fbeddb2037a0f7098d8c150cce86 => ConnectionId:0HMVIB5Q5R38Q => RequestPath:/api/v03/pullBundleChunk RequestId:0HMVIB5Q5R38Q:00000010
2023-12-05T15:56:21.107786432Z       AuthenticationScheme: HgAuthScheme was challenged.
2023-12-05T15:56:21.107828603Z info: Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler[12]
2023-12-05T15:56:21.107883174Z       => TraceId:67b7fbeddb2037a0f7098d8c150cce86 => ConnectionId:0HMVIB5Q5R38Q => RequestPath:/api/v03/pullBundleChunk RequestId:0HMVIB5Q5R38Q:00000010
2023-12-05T15:56:21.107890484Z       AuthenticationScheme: Bearer was challenged.
2023-12-05T15:56:21.107894275Z info: Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware[2]
2023-12-05T15:56:21.107897665Z       => TraceId:67b7fbeddb2037a0f7098d8c150cce86 => ConnectionId:0HMVIB5Q5R38Q => RequestPath:/api/v03/pullBundleChunk RequestId:0HMVIB5Q5R38Q:00000010
2023-12-05T15:56:21.107901705Z       Response:
2023-12-05T15:56:21.107905295Z       StatusCode: 401
2023-12-05T15:56:21.107909335Z       WWW-Authenticate: Basic realm="SyncProxy",Bearer
2023-12-05T15:56:21.107912535Z       lexbox-version: v2023-12-01-50c171d4
2023-12-05T15:56:21.107920385Z info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
2023-12-05T15:56:21.107924455Z       => TraceId:67b7fbeddb2037a0f7098d8c150cce86 => ConnectionId:0HMVIB5Q5R38Q => RequestPath:/api/v03/pullBundleChunk RequestId:0HMVIB5Q5R38Q:00000010
2023-12-05T15:56:21.107928035Z       Request finished HTTP/1.1 GET https://resumable.languageforge.org/api/v03/pullBundleChunk?offset=0&chunkSize=5000&transId=f1874d74-6a0d-449b-b2b5-580d48a14331&baseHashes[]=d5e4dac6e4d8&baseHashes[]=934155b69e03&repoId=grobish-test-flex - 401 - application/problem+json 0.6326ms

I can easily get a 401 with curl:
PS C:\Users\tim> curl "http://resumable.languageforge.org/api/v03/pullBundleChunk?offset=0&chunkSize=5000&transId=f1874d74-6a0d-449b-b2b5-580d48a14331&baseHashes[]=d5e4dac6e4d8&baseHashes[]=934155b69e03&repoId=grobish-test-flex"
curl : The remote server returned an error: (401) Unauthorized.
At line:1 char:1
+ curl "http://resumable.languageforge.org/api/v03/pullBundleChunk?offs ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

Note, I only get a 401 when using http://resumable.languageforge.org.
I get a 308 if I try using http://resumable.languagedepot.org.
So, resumable.languageforge.org, seems to be configured differently.

good investigation Tim, thanks! I'll close this as won't fix since it's the same as before.


"trustedpeers" feature

Description
Better to call it trustedkeys as we already have --p2p-static-peers for the peers, but sometimes we don't know ip to make multiaddr, so we could provide only trusted keys. It's common for tests when we don't know ip of the future container.

Looks like it's a requirement to pass some Hive tests as we have usually 1 connected peer there and ban it is equal to fail the tests.


Add: Gillette Public Access Television Channel 190

Channel Name
Gillette Public Access Television Channel 190
Alternative Names (optional)
GPA-TV Channel 190
Network (optional)
No response
Owners (optional)
No response
Country
US
Subdivision (optional)
US-WY
City (optional)
Gillette
Broadcast Area
s/US-WY
Languages
eng
Categories (optional)
general
NSFW
FALSE
Launched (optional)
No response
Closed (optional)
No response
Replaced By (optional)
No response
Website (optional)
https://play.champds.com/gillettewy/live/5
Logo
https://yt3.googleusercontent.com/ytc/AGIKgqMoPQ32FU8R2lR71LXhYrC3tCHfjJEXcm6E9PEO=s176-c-k-c0x00ffffff-no-rj
Notes
https://securestream6.champds.com/hlssstc/GilletteWYLIVE/GilletteWYLIVE_HQ.m3u8?pID=50ba5516-9185942a

Please update your request:

the size of the logo should not exceed 512x512px
incorrect broadcast area code

https://github.com/iptv-org/database/blob/master/CONTRIBUTING.md#channels

Corrected


api modeling checkers should be enabled in all profiles

api modelling checker do some background modelling
which information is required for the other checkers
they should be enabled

Are we sure that the current "disable everything that isn't enabled" isn't redundant with --analyzer-no-default-checks? The change is fine, but that flag still bugs me.

I have checked the current implementation of --analyzer-no-default-checks, and if its boolean value is false, then API-modelling alongside with platform-specific checks are enabled. My personal preference would be to NOT provide the flag to Clang when using CodeChecker (thus making the option value false, which would mean enabling the core, API, and platform checks), however, I think making such a change would require throughout testing, as it could affect user expericence. Otherwise LGTM.

This pull request is the replacement of this
https://github.com/Ericsson/codechecker/pull/2306

We have come to the conclusion, that we should merge this change into both master, and 6.10.1 branch, and the new selection of default checkers should only be released in 6.11.


The docfx version had to be downgraded because of issue with v2.47

See issue here:
https://github.com/dotnet/docfx/issues/4535
We should check if a new version has this fixed.
It will remain a good practice to install a specific version of docfx so external changes can not break the build.

Is this the reason the api reference is gone from https://mapsui.com/api/index.html ?

Is this the reason the api reference is gone from https://mapsui.com/api/index.html ?

No, it was an actual error in the build. I had not noticed the missing api reference. Thanks for mentioning this. I looked into it tonight and have things working now with VS2019 build tools and the latest version of docfx, 2.48.0.


can not continue ; error

`Performing system checks...
System check identified some issues:
WARNINGS:
saleor.W001: Session caching cannot work with locmem backend
HINT: User sessions need to be globally shared, use a cache server like Redis.
System check identified 1 issue (0 silenced).
Unhandled exception in thread started by <function check_errors..wrapper at 0x11465b048>
Traceback (most recent call last):
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
self.connect()
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 189, in connect
self.connection = self.get_new_connection(conn_params)
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 176, in get_new_connection
connection = Database.connect(**conn_params)
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/psycopg2/init.py", line 130, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (<IP_ADDRESS>) and accepting
TCP/IP connections on port 5432?
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/utils/autoreload.py", line 228, in wrapper
fn(*args, **kwargs)
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 128, in inner_run
self.check_migrations()
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/core/management/base.py", line 422, in check_migrations
executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/migrations/executor.py", line 20, in init
self.loader = MigrationLoader(self.connection)
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/migrations/loader.py", line 52, in init
self.build_graph()
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/migrations/loader.py", line 209, in build_graph
self.applied_migrations = recorder.applied_migrations()
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/migrations/recorder.py", line 65, in applied_migrations
self.ensure_schema()
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/migrations/recorder.py", line 52, in ensure_schema
if self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()):
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 254, in cursor
return self._cursor()
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 229, in _cursor
self.ensure_connection()
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
self.connect()
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/utils.py", line 94, in exit
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/utils/six.py", line 685, in reraise
raise value.with_traceback(tb)
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
self.connect()
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/backends/base/base.py", line 189, in connect
self.connection = self.get_new_connection(conn_params)
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 176, in get_new_connection
connection = Database.connect(**conn_params)
File "/Users/robiulislam/anaconda3/lib/python3.6/site-packages/psycopg2/init.py", line 130, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (<IP_ADDRESS>) and accepting
TCP/IP connections on port 5432?
`

It looks like Postgres is not running on your machine (5432 is its default port) and the application hasn't started as it couldn't connect to the database.


[webview] Support for macOS

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Use case
I'd like to provide a way to display web content in a Flutter macOS app. For some reason this is not supported right now.
I've also tried a number of alternative packages, none of which are still either actively maintained or are missing macOS support or have some other limitations.
Proposal
I'd like to provide a way to display web content in a Flutter macOS app. For some reason this is not supported right now.

It probably depends on this long standing feature in progress https://github.com/flutter/flutter/issues/41722

Closing this issue as a duplicate of https://github.com/flutter/flutter/issues/41725. Please follow up on it (and https://github.com/flutter/flutter/issues/41722) for further updates.


Feature Request: Support Model Self-References

I currently have a database schema, where a member can belong to a sub-group and a sub-group can belong to a group. I want to redesign the model to be more flexible (e.g. there could be a sub-sub-group etc.). So I wanted to associate a group with itself, so it could have a "parent" group.
Using NodeJS, sequelize and sequelize-typescript, I have the following definition:
@Table
export default class Group extends Model<Group> {

    @Column
    name: string;

    @ForeignKey(() => Group)
    @Column
    parentId: number;

    @HasOne(() => Group)
    parent: Group;
}

However, I get the error:

MSSQL does not support self-referential constraints, we will remove it but we recommend restructuring your query

As I understand, SQL Server supports self-joins, it even supports this directly as a foreign key to the table itself. What it does not support is creating such keys with ON [UPDATE/DELETE] CASCADE. As it so happens, the default in sequelize is to specify ON DELETE CASCADE, and sequelize-typescript has no way to override that. Is that correct, and if so is it possible to add this as a feature?

Hey, this does not help?

Cool


Create LICENSE.md

Solved issue #6. Please add 'hacktoberfest-accepted' label to PR and Merge it.

Please add 'hacktoberfest-accepted' label to this PR and merge it.


Made a Node class

So this is what I perceived from Ariel's comment about implementing Node as object.
Let me know if I got it right or changes need to be made.

Yes, the code is fine, and you have the general idea, but I don't like putting this in the modules package, as it isn't a module. I'll also make some inline comments about the API.

Well I wasn't sure where to put the Node class so added to the Module package as for now modules will be calling it to instantiate a node. However, the other place I can think of is the bridge package. Would that be fine?

Don't put it in any package, just leave it in the root dir for now. When I can think of a good package name, I'll move it there


Fix examples link

fixes #52

Keep all end-to-end examples in the centralized Splunk example repository so sales and other customer focused groups have a single location to point customers.

According to spec ^. :(


Problem with className property of DateInput component

It used to be possible to pass in a className property to style the DateInput component, but recent changes have caused the className to automatically be assigned to "datepicker__input" instead of this.props.className.

Oh man, that shouldn't break. I'll spend some time this week to get this fixed. (+ add a test)


Notifications UX feedback

Refs: #91163
There are some things which I dislike about the notifications UX:

Top level hide uses the Escape icon, same as the icon per notification which has a stronger meaning. Suggestion -> we should use a different icon for the top level action
The difference between an unread and a hidden notification is not very clear to me and I think it can be confusing to our users. When do I actually see a badge in the notification bell? Since I do not see it if I just hide all my notificaitons with ESC. Do you treat them as read then?
There should be clearer UX indication that the top level actions are run on everything, Currently that is not the case as they look tied to the top level notification.

Top level hide uses the Escape icon, same as the icon per notification which has a stronger meaning. Suggestion -> we should use a different icon for the top level action

@isidorn to clarify, you mean that the top level X just closes the center while the notification X deletes it. I think one suggestion was to use the arrow down icon from the panel:

When do I actually see a badge in the notification bell? Since I do not see it if I just hide all my notificaitons with ESC. Do you treat them as read then?

No, pressing ESC or waiting until the toast is removed does not mark it as read. The reasoning is that ESC can be pressed accidentally without paying attention to notifications and since the hide after timeout, we also do not know if they were read. This is consistent with what Windows does for notifications afaik.

There should be clearer UX indication that the top level actions are run on everything, Currently that is not the case as they look tied to the top level notification.

I think the icon for dismissing all notifications is consistent with other places like search results. I am not sure what you mean with the X icon running on everything, that one simply closes the notification center. Please clarify.

I’d be in favor of using the down chevron to hide the notification center (pretty sure we’ve discussed this before)

I can do that change for Feb if we think it is the right way.

Yes I mean the top level x. Using the chevron makes more sense here, agree
Ok. This makes sense, issue https://github.com/microsoft/vscode/issues/91444 was confusing me
I meant that it is a global action and visually it looks more tied to the top most notification than to the whole notification center. I believe the top level actions need some more ux polish to make them look more global.

Fixed the close icon to show like this:

As for making the actions look more global I am open for suggestions. Maybe you can bring it up at the next UX call with ideas if you have any.

My idea is to use the border left and right around notification such that they look like they are floating in the Notifications area.
The top bar  and this border woul use the same darker background color.


Use of functions inside the equation section

It seems not possible to use a function (apart from Julia built-in functions) inside the equation section (like the getForce(...) function in the Modia example "CollidingBalls.jl"). I tried to define it inside and outside the respective module. While generation of the runtime-generated function for the rhs (in the instantiation) works fine, evaluation of it gives the error that the function is not defined. Is there a work-around or is this a limitation of TinyModia (compared to Modia)?
Thanks in advance!

We wanted to use RuntimeGeneratedFunctions instead of invokelatest. However, we encountered some problems when enabling the correct module context. We will work on this in the coming days (maybe going back to using invokelatest). Note, also that events are not yet supported in TinyModia.

Is the behaviour below related to this?
I just now installed TinyModia and just tried to follow the Filter example (in the Julia REPL). However, when trying to instantiate the model, I get:
julia> filter = @instantiateModel(Filter)

Instantiating model Filter

Model error: You must use `RuntimeGeneratedFunctions.init(@__MODULE__)` at module
top level before using runtime generated functions in Main
Aborting instantiateModel

Sorry. All tests were not updated. However, we are now considering using invokelatest() instead since the need to include these lines is then avoided.

We are now using Base.invokelatest instead.


[BUG] Query.bind works incorrectly for boolean values

Describe the bug
I've got an endpoint like this
router.route('/api/v1/dic/search/[:word]').link(
          () => DictionaryController(),
        );

And an operation in my controller
 @Operation.get('word')
  Future<Response> search(
    @Bind.path('word') String word, {
    @Bind.query('excludeSubwords') bool excludeSubwords = false,
    @Bind.query('pinyinizeTranslations') bool pinyinizeTranslations = true,
  }) async {
    ///...
}

To Reproduce
I send a request from postman
http://<IP_ADDRESS>:8888/api/v1/dic/search/洋?excludeSubwords=true&pinyinizeTranslations=false
Expected behavior
pinyinizeTranslations == false and excludeSubwords == true
Actual behavior
pinyinizeTranslations == true and excludeSubwords == false
Screenshots

It will work correctly for strings. If I replace the declaration for this
 @Operation.get('word')
  Future<Response> search(
    @Bind.path('word') String word, {
    @Bind.query('excludeSubwords') String excludeSubwords = '',
    @Bind.query('pinyinizeTranslations') String pinyinizeTranslations = '',
  }) async {
}

the strings will be "false" and "true" as expected. So it's definitely an issue in conduit

How bool query params are handled in Conduit is if they are present in the query they are treated as true. If they are not present they are treated as false. So in your case, your query should be:
ip/path?excludeSubwords

This will result in excludeSubwords=true and pinyinizeTranslations=false
This is not a bug.

Hi. Thanks for the explanation. But it's really inobvious and not the best solution I think. The problem is that you might just use something like this on the frontend
Future<DictionaryData?> search({
   required String value,
   bool excludeSubwords = true,
   bool pinyinizeTranslations = false,
}) async {
   return get<DictionaryData>('api/v1/dic/search/洋?excludeSubwords=$excludeSubwords&pinyinizeTranslations=$pinyinizeTranslations');
}

So the parameters are always added.
It's not much of a problem to use some param constructor to make it compatible with conduit but the more people use Conduit the more issues like this will be opened.
I can fix it and make a pull request if you don't mind changing this functionality

You can do the pull request, but there are open questions about what happens if I do:
HTTP://whatever.com?pinyinizeTranslations=1

or
HTTP://whatever.com?pinyinizeTranslations=0

You have to think about all the cases.

(: not a good idea, it's sound like c.

what's the reason behind make this decision of using exisitence of boo query to express true? that's sound's weird, for newby like me, i nearly think this is a bug before i found this sollution.

You can do the pull request, but there are open questions about what happens if I do:
HTTP://whatever.com?pinyinizeTranslations=1

or
HTTP://whatever.com?pinyinizeTranslations=0

You have to think about all the cases.

Not really, 1 or 0 must be accepted by int params only. If you pass 1 or 0 where a boolean is expected, the better way would be just throw a bad request error. Totally agree with MansonLuo , it's not a c/c++ it's REST

Going to close this as this appears to be resolved. Not making any changes here.


Parse (a - b) as sub BinaryOp.

Issue #354. Please review. In theory there is nothing else missing. Sending as draft just to make sure I covered the current functions state.

                        }

Can this be cleaned up now?
See #356

Refers to: src/libraries/Microsoft.PowerFx.Core/IR/IRTranslator.cs:763 in a8e65bc. [](commit_id = a8e65bc5f4d7fcb437945f514aa136bf38571063, deletion_comment = False)


Javascript Challenge Works But Doesn't Check Proper Conditional

Challenge http://www.freecodecamp.com/challenges/waypoint-generate-random-whole-numbers-within-a-range has an issue. Please describe how to reproduce it, and include links to screenshots if possible.
The code input below:

produces the following output:

which meets the criteria set out in the challenge but doesn't actually produce the proper integer output.
I've been trying to experiment with the programming practices I know of and I declare a variable to assign the Math.floor(Math.random())*(max - min +1)) + min to a variable called "randomRange" and that's the variable I call.

Result:

Thank you for your report. I'll improve test cases to actualy check that random value is returned.


Fix nested null value overrides

Closes #5184
What this PR does / why we need it:
This PR adds tests for setting nested values to null and ensure such values are actually deleted.
Special notes for your reviewer:
I've split this into 4 commits. They do the following:

Adds some code to the tests to make it easier to add nested null values tests.
Adds tests that fails.
Does a fairly minimal fix - this is enough to make the tests pass.
The last commit touches a bit more code, and attempts to simplify the coalescence more broadly by consolidating on to a single codepath, and being a bit more careful about which maps are mutated. Tests continue to pass - but I'm a little less confident about the full impact of this commit.

If applicable:

[x] this PR contains unit tests

@aeijdenberg can you fix this by adding metadata to the integration tests? Really want to get this fix in place.

@cdenneen - I've found the missing metadata, added it, and removed the nil check. Let me know if you'd like that added back in.
(oh, and also re-based on latest master)

I’m okay with nil being valid “null” setting but that’s just me

@aeijdenberg can you add label bug and awaiting review

@aeijdebberg can you please add those labels?

Only admins can attach labels. I've done the needful

Thanks @bacongobbler

Hi I just saw this from #5184 👋 I'm late to the party
@cdenneen Quick reply to https://github.com/helm/helm/pull/5185#issuecomment-477104181: the reason I added these 5 lines in the test initially is that null, Null, NULL, and ~ are all valid when parsed, but different from empty string "". I think it's fine that these are already checked on these lines and don't need to be re-checked in the deeply nested test added by this PR 👍
@aeijdenberg re point 4 in the PR description, I'm also not fully sure about other possible impacts of this (second to last) commit: e69e8887cefb5b93e0e6dea7d82cb1fd819e1477. @bacongobbler I'd like another set of eyes on that. But, it does fix the 🐛 (the updated tests are great, and I also manually tested with a few different scenarios I'm aware of form community helm/charts) - everything seems to work 💯

Hi all, sorry to go quiet on this PR. Am back on deck now - let me know if any changes are desired.

I resolved my last comment. This LGTM 👍 but would still like another set of eyes on the reorganizing commit I mentioned here https://github.com/helm/helm/pull/5185#issuecomment-485919391

Hey @aeijdenberg so that refactor commit looks pretty good, but I want to review it a little more in depth with @scottrigby to make sure it doesn't affect other things. Would you be willing to pop that commit off of this PR and open it as a separate PR? It would allow us to merge this fix and address the refactor in another PR.
Thanks for going through the refactoring effort with this code. We really appreciate it!

@thomastaylor312 - done. I've rebased on latest master, squashed the commits (excluding the refactor), and have opened #5821 for the refactoring.


SAMOA-14: Disambiguate ARFFFileStream

Removed the old ARFFFileStream, and moved all the stream-related classed under org.apache.samoa.streams
The new ARFFFileStream allows different sources for the file (e.g., local or HDFS):
bin/samoa local target/SAMOA-Local-0.4.0-incubating-SNAPSHOT.jar "PrequentialEvaluation -s (ArffFileStream -s HDFSFileStreamSource -f /user/$USER/covtypeNorm.arff)"

+1
I think that using "ArffFileStream -s HDFSFileStreamSource " is simple, so this is fine for me.

Ha, I thought that was how it was supposed to work all along ;-)


RFC-20161116001: Using conn pool at the server side between target address may boost the performance

https://github.com/xtaci/kcptun/blob/master/server/main.go#L72
The be a net.Dial inside for loop. May be using a conn pool to handle the net.Dial gain better performance.
welcome comment to tell what you think about it .
The Dial may cause time to wait dial success . so if we already dial a conn pool. we should just using one ready conn from the pool.

After finish https://github.com/xtaci/kcptun/pull/273 PR, we found may be we can do more to improve the performance.

I made another project. using a conn pool to prepare connection to upstream dns server. improved the performance.
https://github.com/netroby/dnscache/blob/master/resolver.go#L30
May be it can do the same thing for xtaci

I am working on implement it .base on my #273 pr

Already done. welcome test. code review or comment

Draft a test release  https://github.com/netroby/kcptun/releases/tag/v20161117


FEATURE: Add Check Numbers to Accounts

Github Issue (if applicable): n/a
Trello Link (if applicable): https://trello.com/c/5R2AM94e
Forum Link (if applicable): n/a
Explanation of Bugfix/Feature/Enhancement:
Adding a check column to the accounts page. YNAB actually already had the 'checkNumber' in their data model for transactions so I'm using that to store the data (using localStorage wouldn't really be ideal).
Recommended Release Notes:
Added check numbers to the accounts page!

Very cool. Something to consider; allow the user to select the location of the new column or at least give them a few choices. I suppose you could just go ahead and make the columns "arrangeable". :)
Is there any concern that this is updating "real" data that didn't previously exist or are you saying that the check number is already in the data and this simply makes it visible and modifiable? I suspect it's the latter but wanted to ask.

Yah this is the latter

@shama just want to give you a heads up on this PR that the check number field you guys set up would be a perfect place for us to store this data.
If you've got any concerns about us using this field, better to have that chat before we release if at all possible.

Thanks for the heads up!
I would avoid storing user data in the check number field. We consider that field deprecated. The check number field could very well be flat out removed from the database. Although if we ever did, we would migrate any existing data in that field into the memo field. (In fact we have some migrations that will do this already, which potentially could affect this toolkit feature too)
Another idea would be to store a custom data format the memo field and parse it. That way the data is still accessible to the user with/without the toolkit enabled and the data will be more safely stored.

:( I have to say I really do not understand Jesse's position on check numbers. It's not like they're going to go away. Anyway not in our lifetimes. It just seems crazy to me and a lot of fellow YNABers.

@shama If we were to use the memo field for this, is there some kind of tagging you guys do during a migration indicate that something is a check number?
ie: if the check number field is stored as "12345", does the migration put "check number: 12345" into the memo?
We're going to need a way to know what substring in the memo field is the checkNumber in order to figure this out.

@joshmadewell Unfortunately we don't. At the moment, we just prepend whatever the bank, file or YNAB 4 gives us to the memo field.
I checked around the forums to see if there was a common format people use that we could use when entering check numbers into the memo field but they varied quite a bit (ck 12345, check 12345, #12345 or just 12345).
I'll ask around the team about the check number field and see how likely it will be removed from the database in the near future. If it is going to be removed soon, I'll see if we could update the code to tag the check number in the memo field in a way the toolkit could read.

@shama, alternatively, I think the long term solution here is to create a property like userProperties on each transaction. Then when/if you guys release an API you can just give access to this field, which is a JSON blob that lives on each transaction.
It'd be on every consuming app to deal with it and do funky stuff with it, and you only have one field to keep there, which you don't have to do anything with in your code.
Could you consider adding something like that to the transaction object? Storing it in the memo would be a less than ideal user experience if every memo is like:
{ "checkNumber": "11234", "excludedFromAddOnCalculation": true, "otherThing": "1234"}
You'll want some place to store free form additional tags for add ons in the future no matter what you do I reckon. We can just moving the check number to that field if it exists.

The other reason for not storing a JSON blob in the memo field is it would screw up the real user data IF they decide to turn off this feature. I was going to suggest it but didn't for this very reason. Of course if YNAB natively changed the memo field to a JSON blob that wouldn't be an issue. The down side is that every single row would have to be "processed". Could be quite a hit. We'd also have to be mindful of the maximum length of the memo field. As always there are pluses and minuses to every solution.
Or the check number field could just be left in the data base...lol

@dbaldon the other big use case is if they use YNAB on a computer without the toolkit installed.
I feel like having a field that's not memo is the right way to go, and wouldn't be hard for YNAB to maintain, regardless of DB backend behind all the Ember Data stuff.

@blargity A JSON blob is a great idea! I'll be sure to mention it to the team when/if we discuss building an API. Also I just want to reiterate that all my comments here are totally unofficial and outside of YNAB. I'm here on my own because I really appreciate all the work you all are doing and think it's helping a great deal of people.
I asked around the team and the consensus was the check number field will definitely be removed but nobody has any plans to do it soon. So feel free to use that field completely unofficially and just be aware that it could one day be removed from the database and the user data there could potentially be lost.
I'll be sure to give you all a heads up if I do see that field's removal coming down the pipeline too.

@shama of course, we appreciate the time and unofficial pipeline you give us back to the team!
I know we're working for the same goal (awesome YNAB user experience), so when we're contemplating doing something that might mess with people's YNAB experiences or your back end systems in any way I like to see if you or Taylor want to comment.
If it works out well in the roadmap, a painless way to get rid of that field once users are relying on it would be to create that JSON blob field, copy the data across in a consistent way, then axe the old field.
Anyway, I'll go ahead and merge/release this and we'll take it as it comes in the future.
Thanks again for your help!


Added guard around loading assemblies for inspection

Prerequisites

[X] I have written a descriptive pull-request title
[X] I have verified that there are no overlapping pull-requests open
[X] I have verified that I am following the Nancy code style guidelines
[X] I have provided test coverage for my change (where applicable)

Description
Fix for #2553
Could not use Assembly.ReflectionOnlyLoad(...) is it loads it into the current AppDomain

:heart:


override of commons-clie

@psiroky: can you remove the commented line:
 ?

Yes, we definitely should. Although, after we merge #207 we won't need that change in depMgmt. It will be enough to just override the property.

@mbiarnes could you please fix this one? It should be enough to just override the version property (and then please verify this via effective-pom).
Not directly related to this PR: just minor thing, but it would be great to use your own github user for these version changing commits (instead of the kiereleaseuser). It is then easier to pin point the exact person who did the change in case of any further questions after it was committed.

Merged by https://github.com/droolsjbpm/droolsjbpm-build-bootstrap/commit/68ab22d071a16efb8afbe4a7f5d2ad61c0f92c75


Metadata search: Hint to the users that conditions can be searched for now

In the main search we currently see:

I would expect this to hint currently that not only Gene IDs or symbols can be searched for, but also conditions and cell types. So maybe "Gene ID, gene symbol, cell type or condition/factor" and possibly expand examples below (I would love to see for instance as example "epithelial cell of lung") which should take us to datasets that also have anatomograms. Maybe the curators can suggest more example to put below.

I wouldn't use lung cancer as an example at this point though, it's giving a bit weird results (retina cells, 'not available' for cell types) - I made a ticket about it
maybe 'diabetes mellitus' or 'COVID-19'

Duplicate of #262. We’re in the process of streamlining our workflow with GitHub issues and this should be the original one pointed by the PR. Sorry for that!


chore(lint): apply eslint and formatting to the project

Adds an ESLint config!

:tada: This PR is included in version 1.7.5 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release
v1.7.5
v1.7.5

Your semantic-release bot :package::rocket:


Check-fail in MaxPool3DGrad

Click to expand!
Issue Type
Bug
Source
binary
Tensorflow Version
tf 2.9 and 2.11.0-dev20220828
Custom Code
No
OS Platform and Distribution
Linux Ubuntu 20.04
Mobile device
No response
Python version
3.10
Bazel version
No response
GCC/Compiler version
No response
CUDA/cuDNN version
CUDA 11.5
GPU model and memory
No response
Current Behaviour?
A check-fail can be triggered in MaxPool3DGrad when some of the inputs' dimension sizes are zero.

Standalone code to reproduce the issue
import tensorflow as tf
with tf.device("GPU:0"):
    orig_input = tf.random.uniform([19, 10, 0, 7, 19], dtype=tf.float32)
    orig_output = tf.random.uniform([19, 4, 0, 4, 19], dtype=tf.float32)
    grad = tf.random.uniform([19, 4, 0, 4, 19], dtype=tf.float32)
    ksize = [1, 16, 10, 31, 1]
    strides = [1, 3, 1, 2, 1]
    padding = "SAME"
    data_format = "NDHWC"
    res = tf.raw_ops.MaxPool3DGrad(
        orig_input=orig_input,
        orig_output=orig_output,
        grad=grad,
        ksize=ksize,
        strides=strides,
        padding=padding,
        data_format=data_format,
    )

Relevant log output
2022-08-29 16:23:58.920831: F ./tensorflow/core/util/gpu_launch_config.h:129] Check failed: work_element_count > 0 (0 vs. 0)
Aborted (core dumped)

Hi @gadagashwini !
Could you look at this issue. It is throwing a segmentation crash with GPU mode in 2.8, 2.9, 2.10.rc2 and nightly but running fine in CPU mode.
Thank you!

There are many cases where the CPU version and GPU version will give different results. Sometimes this is because of different hardware capabilities, other times because of different efficiencies.
Considering the performance in GPU, usually all the validations will not be performed as CPU.

I agree that some validations can be ignored for performance in GPU. But it would be better if such ABORTs are checked in advance with precise EXCEPTIONs.

@shijy16,
I tried to execute the mentioned code on both CPU and GPU with the tensorflow v2.14 and it was executed without any issue/error or the crash. Kindly find the gist of it here. Thank you!


should throw exceptions instead of errors

Errors mean very serious system-level problems that could abort the program. Since mapdb is a component in a larger system, it should not throw Errors, but instead Exceptions. Looking at the descriptions of a few, especially IllegalAccessError, it's clear that these aren't to be thrown lightly.

There is discussion about checked versus unchecked exceptions. MapDB decided to use unchecked exceptions for compatibility with interfaces such as java.util.Map. But the IllegalAccessError should not be thrown, all exceptions should be unified under common org.mapdb.Exception

If you'd like, I'll look into replacing exceptions like IOException with org.mapdb.Exception equivs.

@roxchkplusony please do. You can add new subclasses to org.mapdb.Exception. Also keep on mind that Kotlin does not catches exceptions, so the IOException might remain unhandled in Kotlin code.

There is UncheckedIOException (https://www.google.com/search?q=UncheckedIOException) in the stdlib.   It may be useful to use or extend it when wrapping an IOException.


Unable to click delete link with confirm prompt

Hi, I have the following step definition:
When /^I click on the operator delete button$/ do
  node = page.find(:xpath, '//a[contains(@class, "delete")]')
  page.evaluate_script('window.confirm = function() { return true; }')
  click_link(node.text)
end

While this step definition works in selenium and capybara-webkit, it does not seem to work in akephalos.
The error I receive is the following:
    When I click on the operator delete button                             # features/step_definitions/operators_step.rb:74
      com.gargoylesoftware.htmlunit.ScriptException: Exception invoking jsxFunction_getComputedStyle (NativeException)
      (druby://<IP_ADDRESS>:41317) org/jruby/RubyKernel.java:2064:in `send'
      (druby://<IP_ADDRESS>:41317) org/jruby/RubyKernel.java:1418:in `loop'
      (druby://<IP_ADDRESS>:41317) org/jruby/RubyProc.java:268:in `call'
      (druby://<IP_ADDRESS>:41317) org/jruby/RubyProc.java:232:in `call'
      ./features/step_definitions/operators_step.rb:85:in `/^I click on the operator delete button$/'
      features/managing_operators_and_roles.feature:77:in `When I click on the operator delete button'

Does anybody have any idea why not?

Hi Nathan,
Does it give you any error using #confirm_dialog?
https://github.com/Nerian/akephalos2/blob/master/spec/integration/confirm_dialog_spec.rb#L10


End of turn should remove weapon as child from Worm

Otherwise, you can end up with a situation like this:

Furthermore, sharing weapons from one inventory bugs out if the weapon is already a child of another worm.

This was fixed last night.


fix(memory): throw error if no input/output key is specified and there are multiple keys

@jopcmelo
This change fixes an issue that causes a lot of confusion when debugging Langchain applications. The issue is that when providing multiple keys to a memory instance, Langchain throws an error saying that an input/output key must be specified. The problem is that when the key conflict is related to the output scenario, the error message only mentions "input".
To fix and keep the code readable, I ended up separating the key-checking function from the objects and created another function called getOutputValue with a more descriptive message focused on output values, not input.

@jacoblee93, could you please review this PR?

cc @nfcampos

@jacoblee93 , do you think we can merge this one?

Hi, apologies for the delay - wanted to make sure I looked at it very carefully since it's changing a base class.

Thank you!


Class 'Subject' incorrectly extends base class 'Observable'.

file-upload/angular2-app$ sudo npm start

<EMAIL_ADDRESS>start /opt/lampp/htdocs/ap/file-upload/angular2-app
tsc && concurrently "npm run tsc:w" "npm run lite"

node_modules/rxjs/Subject.d.ts(16,22): error TS2415: Class 'Subject' incorrectly extends base class 'Observable'.
Types of property 'lift' are incompatible.
Type '<T, R>(operator: Operator<T, R>) => Observable' is not assignable to type '(operator: Operator<T, R>) => Observable'.
Type 'Observable' is not assignable to type 'Observable'.
Type 'T' is not assignable to type 'R'.
npm ERR! Linux 3.19.0-42-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "start"
npm ERR! node v7.6.0
npm ERR! npm  v4.1.2
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>start: tsc && concurrently "npm run tsc:w" "npm run lite"
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script 'tsc && concurrently "npm run tsc:w" "npm run lite" '.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the angular2-start package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     tsc && concurrently "npm run tsc:w" "npm run lite"
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs angular2-start
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls angular2-start
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     /opt/lampp/htdocs/ap/file-upload/angular2-app/npm-debug.log

It would be great if you show the steps to replicate this.

Closing this, since no activity.


nodejs?

as subject says. thanks

No intention on making a Node.js version.
You could try calling cli.py via the command line from your app.


Support web-auth way for wecom provider

This PR: https://github.com/casbin/casdoor/pull/200 only implemented the QR code way. We also need to implement the web-auth way, see: https://work.weixin.qq.com/api/doc/90001/90143/91120

@sh1luo


Auto-detect the default BYOH interface for hosts

Describe the solution you'd like
We have upgraded kube-vip images to v0.4.1 (#462). This version has features to auto-detect the default interface for VIP (related PR) using --autoInterface option.
Currently, we detect and update the host network interface manually (agent/host_registrar.go#L86-L131). Having upgraded to the given version, we can now leverage the auto-detection feature and refactor the agent to use this instead of manual detection and updates.
Environment:

Cluster-api-provider-bringyourownhost version:
Kubernetes version: (use kubectl version --short):
OS (e.g. from /etc/os-release): Ubuntu 20.04.4 LTS (Focal Fossa)

Hii @sachinkumarsingh092 @anusha94 I would love to work on this issue.
Reading the description I understand as of now the codebase is used to detect and update the host network interface manually but with upgradation of kube-vip images to v0.4.1 we could use --autoInterface option.
Could anyone point where I should make changes to leverage the required things :))
Thanks.

/assign @VibhorChinda

Hey @VibhorChinda, thanks for your interest in this!
So the way we currently detect the interface for the BYOH host is shown in this function  (it traverses all the interfaces and matches the default network IP for the default gateway and assigns the default Interface name). This is saved as DefaultNetworkInterfaceName and used in our templates with the vip_interface environment variable. All the places where we have updated the kube-vip image can be referenced in #462.
The --autoInterface option hasn't been updated in the docs but you can just remove the --interface flag or the vip_interface in our case to achieve similar results.
(See this thread: https://kubernetes.slack.com/archives/C01RXPHDATB/p1638969848103800?thread_ts=1638965549.102100&cid=C01RXPHDATB)
So for now you can start by trying if you can still achieve this without the vip_interface variable.
@anusha94 please correct me if I missed anything.

So what I have understood is I have to remove the env variable (vip_interface) from the file [Line-82, 83]
And it will automatically detect right ?

Make similar changes for the other templates mentioned in PR #462.
After that, we can refactor the section that finds and sets the network interface name in agent/registration/host_registrar.go.

/unassign @VibhorChinda
/assign @anusha94


Public API for Block Update Thumbnail

🚀 Feature
A public facing API to block thumbnail update. This API would work in any layer.
Motivation
I am trying to squeeze every bit of performance for live image preview in napari. Currently, I am utilizing layer.data = new_image function which also updates the thumbnail.
Pitch
layer.is_thumbnail_update as a boolean that can be set by widgets/plugins or something like that. If it is set to false, than the thumbnail is not updated when data is changed.
Note that there is already some mechanism that is similar in the Shapes layer only.
Alternatives
layer._update_thumbnail = lambda : ... would disable the thumbnail update for the time being but this is private API.
Additional context
There might be a need for a special API to update the data with minimal triggering of optional features (thumbnail update).

This might be a useful workaround, but I think ultimately we need to solve the real issue :P Would be great to make thumbnail generation faster, but even better: async! @andy-sweet :)

I'm supportive of this as a workaround.
Especially because I'm unconvinced by the utility of thumbnails in their current form and we're effectively maintaining a whole separate rendering pipeline for them.
For this reason, I have considered proposing to remove them completely. But maybe we could just take one representative slice at initialization and never update them after that, as suggested here.
We could try to optimize the code to make it run faster. I don't think there's much value to generating the thumbnails asynchronously (at least while the GIL is still around in Python) since most of the work probably can't release the GIL.

I think that we could experiment with making thumbnail generation lazy. So do not compute it until someone requests.
Ant then to block it, one could simply block the thumbnail signal.

I am not sure how the thumbnail is currently generated but if it is a resize of the image then that is a large overhead for large 2D images for little gain. if it that is the case, maybe it is better to generate it lazely as a snapshot from the viewer.
That being said, I still think the option to disable it completely is essential for use cases such as live previews.

To be clear, I do see how much of a difference having this API can make in practice; I just think that it's not something users/plugin developers should have to know/think about. But happy to approve something like this for the time being!


Compiling Multi Project/Module JDK 9 Build

I am testing out JDK 9 support against 4.1-milestone-1 with a multi project build, where each project is a single Jigsaw module and some modules depend on other modules.
Root project 'parent'
+--- Project ':core'
+--- Project ':module-a' (Depends on :core)

module-info.java for core
module namespace.core {
  exports namespace.core.package;
}

module-info.java for module-a
module namespace.module_a {
  requires namespace.core;
}

Expected Behavior
Compilation of module-info.java files with inter-project/module dependencies should succeed.  I know official Jigsaw support has been postponed for a later release, but I was hoping that maybe compilation would be available sooner?
Current Behavior
> ./gradlew compileJava
module-info.java:2: error: module not found: namespace.core
  requires namespace.core;

Environment
Gradle 4.1-milestone-1
Build time:   2017-06-20 17:05:46 UTC
Revision:     3ad5af92d482b963cc6b00fb5ad53b608606d657
Groovy:       2.4.11
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          9-ea (Oracle Corporation 9-ea+173-jigsaw-nightly-h6494-20170608)
OS:           Mac OS X 10.12.5 x86_64

4.1 is aiming for using JDK 9 to build a project. I don't think we are supporting building Jigsaw modules yet.

You should be able to build Java modules now with the latest 6.4 nightly - see https://github.com/gradle/gradle/issues/890#issuecomment-603289940 for details. Please comment there if you still face any issues.


Remove user avatar from new comment form on threads

While scanning a conversation, I inadvertently scan for my avatar as well to see if I've commented and on which threads I've participated in (related: #1065). However, I see my own avatar on each new comment form in each thread.
Suggestion: Remove your own avatar from the Reply form in PR review threads.
Now

After

Let me know your thoughts and I can submit a PR with an implementation!

Side note
I'm not sure how much your own avatar is useful on the new comment form at the bottom either, but the threads ones are more misleading as they could occur multiple times.

100% agree

@hkdobrev Are you still working on this, or can I pick it up?


I ran a server configured with multiple client authentication modes, one of which is verify-if-given using VerifyClientCertIfGiven. To test its behavior, I used a client that presented an invalid certificate—meaning the certificate could not be verified by the server's stored CA. Given that I expected the TLS handshake to fail.
What did you see happen?
The TLS handshake did not fail. Instead it continued to the application authentication logic, and when I checked the certificate metadata, I noticed that len(tlsInfo.State.PeerCertificates) was equal to zero, treating it like certificate not provided at all.
What did you expect to see?
Per the official docs Im expecting that it should be return and failed (and not fallback) since once client provide a certificate it should be a valid one to the stored CA:
// VerifyClientCertIfGiven indicates that a client certificate should be requested
// during the handshake, but does not require that the client sends a
// certificate. If the client does send a certificate it is required to be
// valid.
VerifyClientCertIfGiven

yelkabetz, go1.21 is not longer supported. Are you experiencing the same issue with go1.22 or go1.23?

same in go1.22


Selecting time with set_focus_date

Hi,
I select the date and time, then hide  with the button, and then when I open it I can't select the time without the code like this:
  useEffect(() => {     dispatch({ type: "SET_FOCUS_DATE", date: selectedDates[0] });   }, [dispatch, selectedDates]);
https://codesandbox.io/p/devbox/time-selection-useeffect-wpz4dr?file=%2Fsrc%2Fcomponents%2Ftime.tsx%3A15%2C1-17%2C33 here a example with a toggle button
Thanks

Hey, @armanpwnz your link is not working

still not working 🤷

@Feshchenko   https://codesandbox.io/p/devbox/time-selection-useeffect-wpz4dr?file=%2Fsrc%2Fcomponents%2Ftime.tsx should work, ыorry, I forgot to access the sandbox.

Hey @armanpwnz, I hope you are doing well.
What is happening in your example, the focusDate is the internal datepicker state. So when you hide and show it the state is lost, that's how React works.
You have a focusDate prop in configuration.
So what you need to do is to persist it outside of UI that will be hidden.
Here is a link to Sanbox with a working example without useEffect and manual dispatch, (but your solution is also good)


Clarify conflicts with existing networking in README

The README should clarify if this component will "play nice" with existing networks, or whether it needs to be run in a sandboxed / isolated network.
My worry is that running it on my <IP_ADDRESS>/24 may break all the IP allocations. That concern can be alleviated by stating in the README how this software is designed to be used.
For instance pixiecore by the same author as MetalLB says it uses a DHCP proxy. I'm not sure what path Plundr takes.

@nathangoulding who should this be assigned to, to get it resolved? A simple one-liner in the README is enough to disambiguate and reassure testers.

@alexellis is this still valid?

Hello, as boots only make sure that other machines won't get IP from boots, but how can we make sure our network booting machine does not get IP from existing DHCP server? Do we still need to add dhcp-ignore in existing DHCP server to prevent network booting get IP from existing DHCP server?

Yes, the same question with @ydp. Should we modify the existing DHCP server? @alexellis

Hi @ydp I tried the demo in my local network and carefully checked the logs. You do not need to add the ignore in existing DHCP server. Both existing DHCP and Tinkerbell will respond to DHCP request, and the client will ignore the one without PXE info. Hence only Tinkerbell's DHCP will take effect, which is very handy.

Definitely, I would recommend adding the explanation in README.

@bingzhangdai  Thanks for your reply! I did similar test before but get opposite answer. In my experiment, if client does not get pxe info, it just hangs. Maybe this is client related? related to the pxe version which is Nic related?  or I should try more experiments?

@ydp I am not an expert in this area, but I can tell you what I saw.
First, you should check the boot container (if you run the example by docker compose) log to see if Tinkerbell did recieved the DHCP request. You should get something similar to this,
{"level":"info","ts":1691115288.4517825,"caller":"dhcp4-go@v0.0.0-20190402165401-39c137f31ad3/handler.go:105","msg":"","service":"github.com/tinkerbell/boots","pkg":"dhcp","pkg":"dhcp","event":"recv","mac":"ac:1f:6b:ee:0c:dc","via":"<IP_ADDRESS>","iface":"ens192","xid":"\"6c:ee:0c:dc\"","type":"DHCPDISCOVER","secs":4}
{"level":"info","ts":1691115288.451905,"caller":"boots/dhcp.go:88","msg":"parsed option82/circuitid","service":"github.com/tinkerbell/boots","pkg":"main","mac":"ac:1f:6b:ee:0c:dc","circuitID":""}
{"level":"info","ts":1691115288.4522583,"caller":"dhcp4-go@v0.0.0-20190402165401-39c137f31ad3/handler.go:61","msg":"","service":"github.com/tinkerbell/boots","pkg":"dhcp","pkg":"dhcp","event":"send","mac":"ac:1f:6b:ee:0c:dc","dst":"<IP_ADDRESS>","iface":"ens192","xid":"\"6c:ee:0c:dc\"","type":"DHCPOFFER","address":"<IP_ADDRESS>","next_server":"<IP_ADDRESS>","filename":"undionly.kpxe"}

This indicated that the DHCP was recieved and IP address was assigned.
Actually, I did expereince the hanging during IPXE initialising devices... in Hyper-v generation 1 VM, but I still got the above log

I do not know whether it is Tinkerbell's problem or just incompatibility between Tinkerbell and Hyper-v's NIC or PXE. I turned my head to physical machines and then succeeded. By looking carefully at the screeshot, what I can tell for sure is the hanging I encountered had nothing to do with DHCP.
Hope this would help. :)

Thank you @bingzhangdai  I will try more experiments!

I did more experiments (20 times on 2 machines), only one machine stuck in below status in one time (which could be a potential ipxe or networking issue).

so, looks like the problem does not exist!!
At least, the first phase when Intel boot agent try to get pxe info, it will not hang, unless there is absolutely no pxe info returned by any dhcp servers, which I also did an experiment, it will hang with error like this:

Then, I found that I actually recorded the process when I had the stuck issue several months ago, below is the screenshot:

Indeed, the Intel boot agent works well, it only hangs at ipxe booting phase.
Then I remembered that back then I did not actually use tinkerbell boots, I was using Openstack Ironic to boot machines, the ipxe binary used was 1.21.1+git-20220113, but now, the ipxe version I am using is 1.0.0+ (from the first screenshot), and I checked the code commit used is https://github.com/tinkerbell/ipxedust/pull/76 , which is using ipxe binary from 2023/03/07, which is much newer.
So, I guess the old ipxe binary has issue to ignore the incorrect dhcp server, in my case it is <IP_ADDRESS> , the correct dhcp server should be <IP_ADDRESS> .
Anyway, as long as no issue happens like the second screenshot, I would think boots and Intel boot agent work well regarding ignoring other dhcp server.

compared the ipxe code in https://github.com/ipxe/ipxe/compare/fbbdc3926...54fcb7c29ce2fabe109286e3c4dfeb297e0f3916
the most suspicious commit that fixed the dhcp issue is this one https://github.com/ipxe/ipxe/commit/8450fa4a7b9a8236a43b74639fc80bada994ce07
More info is in
https://github.com/ipxe/ipxe/pull/798
https://github.com/ipxe/ipxe/pull/879

Oh, I think it's because boots is using embedded script.

I guess it's not because the commits, but boots is using embedded ipxe script. see https://github.com/ipxe/ipxe/issues/395#issuecomment-864499966

Glad to hear. "No boot framework" or "nothing to boot" may also result from missing files from tftp like initramfs-aarch64, initramfs-x86_64, vmlinuz-aarch64, vmlinuz-x86_64 or so. I can see the error from boots log. Anyway, it is merely a minor problem :)

Hi @bingzhangdai  Just let you know, I am still not convinced by the experiment result, and asked questions in https://github.com/ipxe/ipxe/discussions/1012 , they told me it should be undefined behavior. So for safety reason, even though my several experiments showed success, I will still switch back to "only one DHCP" environment.


tools: Add extra space

Dpkg is really sensitive to spaces in the changelog format it seems

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 33.853%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
6011

Relevant Lines:
17756

💛  - Coveralls


fix canon-cups-ufr2 for previously broken printers

The ufr2 driver relies on black-box binaries from Canon, with baked-in FHS assumptions. Previously, a LD_PRELOAD shim has been used to adapt calls to some libc functions and correct the path arguments passed. Unfortunately, this hack doesn't work for all printers; some of the Canon libraries rely on invoking syscalls directly, and can't be mollified with ld.so tricks.
And so blacker arts were needed. Introduce a wrapper that uses ptrace to intercept all syscalls performed by the binary; when a supported syscall is identified, read its path argument from the binary's address space, see if it's a broken FHS path, and if necessary inject a corrected path into the process's address space before allowing the fixed-up syscall to proceed.
This has some pros and cons. The cons:

ptrace is sometimes restricted (it's allowed under the default NixOS config though)
ptrace is only available on Linux (but I think installing cups drivers through nix only makes sense on NixOS?)
there's a minor performance penalty (syscalls cost several times as much)
it's crazy (this binary doesn't seem to do any of the things that might break it, though)

The pros:

got my D530 working (just in time to print that shipping label...)
it's a general solution; it should work for any printer that uses this driver, and it should work for future versions of the driver

Fixes #44330
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Can't you just use proot?

Is this PR still relevant?

Is this PR still relevant?

Unsure.. I no longer have a Canon printer, so can't test @kazcw's changes here.


[Feature]: Discuss adding coderabbit to our repository

Description
AI code Review as additional reviewer. Appears to be free with frequency limits for open source projects.
https://coderabbit.ai/
Definition of Done
Decision if we should keep the rabbit.

https://github.com/una-auxme/paf23/pull/297#issuecomment-2379145871

We will try this


import of deep-diff to Typescript broken with 0.3.5 and 0.3.6

When the releases of the past 2 days, my current code is now broken. I believe this has to do with the imports of the package.  This would be fine, except for two things:

The version number updates should be compliant with SEMVER standards and issue a breaking change (IE. 0.4.0, not 0.3.x).
The documentation (README etc) has no explanation of the import requirements of the package that are not ancient es versions.

On previous versions of deep-diff up until 0.3.4, my working code imported this package as:
import { diff } from 'deep-diff';
.. .. ..
.. .. ..
let isDifferent = diff(lh, rh);

This worked excellently. With the release of 0.3.5 and 0.3.6, the compiler now chokes on this import by stating flatly:
TypeError: deep_diff_1.diff is not a function
Punting to a catch-all import like this:
import * as dDiff from 'deep-diff';
also does no good.
I'm losing my mind trying to understand the change and how it can be accommodated and used in Typescript. I tried reviewing the '@types/deep-diff' was no more helpful as it seems not to be current.
What export changes were made to deep-diff, and how should Typescript users now adjust to import this package? (again, all of this could be resolved instantly if there was a useful README.)...

i have  a same issue

There was no intentional change in exports — I cannot know, let alone test, all of the scenarios in which people use this library... it was written for nodejs and happily works in most browsers. That being said, now that you've reported an issue with Typescript I'll investigate why you may be encountering issues.
Maybe we can get @thiamsantos to weigh in or take a look, since #92 Change module system of the main file was probably resolved and PR accepted by @flitbit in haste.
I can appreciate the opinion on SEMVER, although semver has not risen to the level of "standard", I'd call it a best practice and I try to adhere; again, unintentional.
At your earliest convenience, please reference the version that previously worked for you, as suggested by @nassirian. If you aren't using a package system that enables such then you can reference the pre-built version that was kindly provided.
In regards to the usefulness of the README, please submit a PR that includes guidelines for usage with Typescript, I'm sure there are others that would appreciate your contribution. I don't use Typescript at all so I probably won't be the most efficient resource in figuring it out.
If I were to start looking though, I'd probably do something like this:

Set up a test to see if importing index.es.js works
If not, import index.js directly and step through lines 2 thru 4 — I'd love to know which path is taken when you run it. The nested ternary that figures out the module system/environment is the essence of what changed. Previously, I had devised my own from bits of code here and there, before there were good patterns in general use.
Submit a PR or report back.

I also don't use Typescript. Regardless that, is important to know how works the module resolution of Typescript. @nassirian @kgentes do you have any idea?
What I know is that two kinds of the module are exposed. Module bundlers that support ES2015 reads the properties pkg.module or pkg.jsnext:main and import the file specified there. And others systems read the property pkg.main and import the file specified there. In other words, who supports es modules import index.es.js and all th rest import index.js.
If Typescript is importing index.es.js the issue can be related on how the methods are defined, because instead of exporting an object with the methods, the es2015 module is actually exporting an object with the default property that is the object that holds the methods of deep-diff.
Given this, I think the approach below should work:
import {default as dDiff} from 'deep-diff'

let isDifferent = dDiff.diff(lh, rh);

I use TypeScript and have the issue reported here, anyway I found that the problem is not TypeScript but the Webpack (v2.4.1) module bundler.
As @thiamsantos said, webpack is picking index.es.js instead of index.js and it's generating a wrong default export:
// ...
__webpack_exports__["default"] = (accumulateDiff);
// ...

by manually erasing jsnext:main from deep-diff/package.json all works as before.
I wonder if this is related to this webpack issue.

I also experienced this issue with plain javascript using Webpack.
var diff = require('deep-diff').diff

This fails to find diff.
Downgrading to 0.3.4 fixes the issue for me.

To answer your question @flitbit , as I said in my initial post, this problem has begun with "the release of 0.3.5 and 0.3.6".  My code works fine with version 0.3.4.   Sounds like you have a lot of info on this already.

I am trying to solve this issue by translating the methods definition for named exports. With that I was able to solve all cases pointed here, but when you you this module in a CommonJS environment, the following code will throw an error.
var dd = require('deep-diff')
// ...
dd(lhs, rhs)

Will be needed to specify the method.
var dd = require('deep-diff')
// ...
dd.dif(lhs, rhs)
// or
dd.default(lhs, rhs)

But it will work like a charm in ES2015/Typescript code.
import {default as diff} from 'deep-diff'; // explicit 'default'
// is equal to:
import diff from 'deep-diff'; // implicit 'default'
// is equal to:
var a = require('deep-diff').default;

If chosen use completely the ES modules we could also add an explanation on README explaining what to do if you are runnning diff on a CommonJS or  browser environment. Redux-thunk is a good example of what can be done. What's your opinion @flitbit? If you like I can send a PR doing that.

Using deep-diff 0.3.7, TypeScript 2.3.2 with Webpack 2.4.1 the only workable solution I have found is:
import { default as DD } from 'deep-diff';
// usage DD[method]()
DD.observableDiff(this._diff, latest, (d) => {

});

Notes:
Also have "@types/deep-diff": "^0.0.30", in my project package.json
Editing the deep-diff package.json jsnext:main had no effect in resolving issue.

Any solution here?
import { diff } from 'deep-diff' is broken, no diff found

While there is still no definitive solution, you could do:
import {default as dDiff} from 'deep-diff'

let isDifferent = dDiff.diff(lh, rh);

Kinda hackish, isn't it? :)
I hoped for true es6 import like
import { deepDiff} from 'deep-diff'
or
import deepDiff from 'deep-diff'

with this setup I didn't have any problem:
ts-node v3.3.0
node v8.9.0
typescript v2.5.3
deep-diff: 0.3.8

just did a simple import * as deep from 'deep-diff' and used it.

Yeah - the only way I could get this working after hours with Angular 5 / CLI is downgrading it to 0.3.4 which is disappointing, but back to the races

I had some problems importing diff in typescript @flitbit (e.g.):
import { diff } from 'deep-diff';

However I was able to get
import { DeepDiff } from 'deep-diff';

working and it appears so far working fine. Looking good @flitbit 👍

this issue is fixed in v1, it can be closed


Add a new 'describe' command to get a textual summary of key graph features.

Oh and describe needs to go in the README.


Fix CI failing on package installation

apt update was missing (and needed as package indices drift out of date).

I think this is good for review/merge to fix CI on open PRs.
There's other improvements (e.g. an action used seems like it's been abandoned so possibly we should find a new one).
But this minimally fixes things I suspect.


Incorporate promise results into toast

Can i  provide a function to the success/error messages to incorporate the result/error of the promise?
toast.promise(
  myPromise,
  {
    loading: 'Loading',
    success: (data) => `Successfully saved ${data.name}`,
    error: (err) => `This just happened: ${err.toString()}`,
  }
)

Yes, you can. The example you provided will work out of the box. Here’s a REPL to demonstrate:
https://svelte.dev/repl/24dd3ad1df394a9d8bc6333a2e7a19d3?version=3.48.0

@kbrgl did something change since then . In a sveltekit (typescript) project. I get the error
Type '(data: any) => string' is not assignable to type 'Renderable'.

where Renderable is defined as
export declare type Renderable = typeof SvelteComponent | string | null;

as per the code . So
(args:any) => string

is not covered by the Renderable type ??
Sorry i had to add this to a closed issue.

if i do this however
const customMessage = (arg: any): string => { }
export declare type Renderable = typeof SvelteComponent | typeof customMessage | string | null;

The error goes away .havent tested though. will test now and maybe do a PR if that is fine by you