Kotlin support?

Hi, looks like a great possible replacement for packr!
Unfortunately, when I tried adding this to my Kotlin project, it bundled fine but then I got the following:
thread 'main' panicked at src/main.rs:140:6:
Failed to call main method: JavaException
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Exception in thread "Thread-0" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
        at com.unciv.app.desktop.DesktopLauncher.main(DesktopLauncher.kt)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more

So it looks like it's missing some basic files.
When I try to run the jar directly I get
❯ java -jar desktop-1.0.1.jar
no main manifest attribute, in desktop-1.0.1.jar

In order to build my .jar file that works, I use the following gradle config, which has a lot of little changes picked up over the years
:
tasks.register<Jar>("dist") { // Compiles the jar file
    dependsOn(tasks.getByName("classes"))

    // META-INF/INDEX.LIST and META-INF/io.netty.versions.properties are duplicated, but I don't know why
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE

    from(files(sourceSets.main.get().output.resourcesDir))
    from(files(sourceSets.main.get().output.classesDirs))
    // see Laurent1967's comment on https://github.com/libgdx/libgdx/issues/5491
    from({
        (
            configurations.runtimeClasspath.get().resolve() // kotlin coroutine classes live here, thanks https://stackoverflow.com/a/59021222
            + configurations.compileClasspath.get().resolve()
        ).map { if (it.isDirectory) it else zipTree(it) }})
    from(files(assetsDir))
    exclude("mods", "SaveFiles", "MultiplayerFiles", "GameSettings.json", "lasterror.txt")
    // This is for the .dll and .so files to make the Discord RPC work on all desktops
    from(files(discordDir))
    archiveFileName.set("${BuildConfig.appName}.jar")

    manifest {
        attributes(mapOf("Main-Class" to mainClassName, "Specification-Version" to BuildConfig.appVersion))
    }
}

Config:

plugins {
    id("kotlin")
    id("io.github.fourlastor.construo") version "1.2.0"
}
construo {
    // Construo fields should have docs
    // name of the executable
    name.set(BuildConfig.appName.lowercase())
    // human-readable name, used for example in the `.app` name for macOS
    humanName.set(BuildConfig.appName)
    // Optional, defaults to project version
    version.set(appVersion)
    // Optional, defaults to application.mainClass or jar task main class
    mainClass.set(mainClassName)
    // Optional, defaults to $buildDir/construo/dist
    // where to put the packaged zips
//        outputDir.set(deployFolder)

    targets{
        create<Target.MacOs>("macM1") {
            architecture.set(Target.Architecture.AARCH64)
            jdkUrl.set("https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.11%2B9/OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.11_9.tar.gz")
            identifier.set(BuildConfig.identifier)
        }
    }
}

Attached is the M1 zip created
In fact what would be great for me is if I could tell it "here's the jar file, don't worry about it, just pack"
The way I can with packr :)

hi! this doesn't depend on Kotlin, I believe it's because construo is not aware right now of other jar tasks other than jar and shadowJar (and it's using the task generated by jar in your case, which hasn't been configured). I think you could solve it by changing:
tasks.register<Jar>("dist") {
  // configuration here
}

with
tasks.jar {
    // configuration here
}

I don't have plans currently to support non-standard jar tasks, this might change in the future, but definitely not soon
Another thing I do suggest to take a look at is shadow, which produces a "fat jar", as in a jar with all the dependencies inlined inside

That works, the jar used is now correct, the wrapper now fails with no real info 🤔
~/dev/unciv/desktop/build/construo/macM1/Unciv.app/Contents/MacOS master* 0s                                                                                17/07/24 16:04:25
❯ ./unciv
[1]    63526 trace trap  ./unciv

Try to run it with RUST_BACKTRACE=full before the command.
Does the jar work if launched with java -jar <filename>.jar?

This looks like a jdk minification issue, does it work if you replace the jdk folder in the same folder as the executable with the original url you set in the gradle config to download it? If that works, it's definitely an issue when minifying the JDK (which is particularly tricky as the modules your app needs aren't always obvious, not even using jdeps from the JDK)
Things I would look at are:
Are you loading classes from the stdlib via reflection? In that case add
construo {
    jlink {
        // add arbitrary modules to be included when running jlink
        modules.addAll("module.name.here")
    }
}

Where module.name.here is the module containing that specific class (they're specified in the documentation from Oracle).
If you're doing HTTPS requests, that might be because of crypto modules missing, then you should be able to fix it by adding this:
construo {
    jlink {
        // add arbitrary modules to be included when running jlink
        modules.addAll("jdk.crypto.ec")
    }
}

I haven't found yet a less trial and error way of solving this issue, if you push a branch with the commits somewhere I can take a look when I have some time (I'll try tomorrow or Friday)

Even copying the entire JDK doesn't solve this :(
Here's the branch, run gradlew desktop:packageMacM1 from the root folder
Take your time, I know how these things are, I'm in no rush :)

I tried packaging a Linux x64 version (I don't have a Mac) and it runs, so at least we know it isn't a minification issue.
I think this might be an issue in roast (which is the runtime construo uses to startup the jdk) specific for MacOS. One way of getting a better error output could be running roast from source, it's a few steps but it shouldn't be complex:

Package the app with construo
clone roast (tag 0.0.7, the newest version changed a bit of the api)
Copy these files from the packaged game to the root folder of roast: config.json, jdk folder, Unciv.jar
Run roast from source (I use Visual Studio Code with the rust extension by Microsoft, but there's also RustRover from Jetbrains which is free for non-commercial projects, so you can use it with roast)

Note that you might need to install rust, I had for vscode. I can also try but it might take a while until I get access to a Mac

I'll try it!
And I'll try packaging a Linux version, if it works fine on Windows and Linux I'll move to it even if the Mac stuff is off :)

Hello! Did you have a chance to test this?

Hi, sorry
My son was born 2 weeks ago so that's been taking up most of my time :)
Hope to get to this soon 🙏🏿

Congrats!  When I replaced my main function with just "hello world" everything worked, so it's something within the function that's causing this
So while this is something that shouldn't silently fail, it is something that is code-specific to me 🤔
I gradually managed to isolate the problem to a specific Java function - GraphicsEnvironment.getLocalGraphicsEnvironment() based on java.awt.GraphicsEnvironment
Rechecked that it wasn't a JDK issue
SO APPARENTLY it's a MacOS + AWT issue
Perhaps related to https://github.com/oracle/graal/issues/4124 - it looks like AWT libraries have some magic going on

Aha! Great work on digging deeper on this :)
Maybe you could try packing with Liberica https://bell-sw.com/pages/downloads/#jdk-17-lts ? In the linked issue comments they say that the issue doesn't happen with it (even tho they're using the native image, so this might not work)

Unfortunately that does not solve the problem :(
Tried running the jar from both jdks in the command line (jdk/bin/java -jar Unciv.jar) and it Just Works so I have no idea what linking nonsense is going on here
Yet another exciting Java Runtime Experience ™  adventure
Well, it was worth a shot  🤷🏿

You could try to sorround the call in try/catch and see if you manage to get a stack trace:
try {
  GraphicsEnvironment.getLocalGraphicsEnvironment()
} catch (t: Throwable) {
  // print t's stacktrace
}

Another test you could do is to remove this dependency: https://github.com/yairm210/Unciv/blob/efb21182dba44da4351ba2d93c2341f6e4fb1ff1/desktop/build.gradle.kts#L30, I had problems in the past with things that would try to fix macos not running java on the first thread

The try/catch yielded nothing but removing the dependency did change things
The AWT no longer fails, but we just get a blank screen with default background color.,
When running regularly (java -jar) we now (expectedly) get the GLFW may only be used on the main thread and that thread must be the first thread in the process. Please run the JVM with -XstartOnFirstThread. This check may be disabled with Configuration.GLFW_CHECK_THREAD0. error
I think I'll stop here though - I'm nearing the end of my hopefulness with this 😓
So to summarize - it seems to have to do with AWT and the MacOS "run on first thread"
It's not you, I personally don't even blame the JVM ecosystem which I feel is not converging towards helpfulness rather than away.
Instead, I blame Apple for design decisions which are geared towards them delivering a holistic Apple experience at the cost of making things more difficult for developers 😓
I'm not sure I would make different decisions if I were them, doesn't mean I like the results -_-

Unrelatedly (probably) I encountered a different issue with Native.load which I use to notify the local Discord that 'game X is playing':
WARNING: JNI local refs: 33, exceeds capacity: 32
	at<EMAIL_ADDRESS>Method)
	at jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(java.base@17.0.11/NativeLibraries.java:388)
	at jdk.internal.loader.NativeLibraries.loadLibrary(java.base@17.0.11/NativeLibraries.java:232)
	- locked <0x00002000000a9858> (a java.util.HashSet)
	at jdk.internal.loader.NativeLibraries.loadLibrary(java.base@17.0.11/NativeLibraries.java:174)
	at java.lang.ClassLoader.loadLibrary(java.base@17.0.11/ClassLoader.java:2394)
	at java.lang.Runtime.load0(java.base@17.0.11/Runtime.java:755)
	at java.lang.System.load(java.base@17.0.11/System.java:1957)
	at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:1045)
	at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:1015)
	at com.sun.jna.Native.<clinit>(Native.java:221)
	at com.unciv.app.desktop.DiscordUpdater.startUpdates(DiscordUpdater.kt:33)
	at com.unciv.app.desktop.DesktopGame.<init>(DesktopGame.kt:33)
	at com.unciv.app.desktop.DesktopLauncher.main(DesktopLauncher.kt:104)
WARNING in native method: JNI call made without checking exceptions when required to from CallStaticObjectMethod
	at<EMAIL_ADDRESS>Method)
	at jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(java.base@17.0.11/NativeLibraries.java:388)
	at jdk.internal.loader.NativeLibraries.loadLibrary(java.base@17.0.11/NativeLibraries.java:232)
	- locked <0x00002000000a9858> (a java.util.HashSet)
	at jdk.internal.loader.NativeLibraries.loadLibrary(java.base@17.0.11/NativeLibraries.java:174)
	at java.lang.ClassLoader.loadLibrary(java.base@17.0.11/ClassLoader.java:2394)
	at java.lang.Runtime.load0(java.base@17.0.11/Runtime.java:755)
	at java.lang.System.load(java.base@17.0.11/System.java:1957)
	at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:1045)
	at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:1015)
	at com.sun.jna.Native.<clinit>(Native.java:221)
	at com.unciv.app.desktop.DiscordUpdater.startUpdates(DiscordUpdater.kt:33)
	at com.unciv.app.desktop.DesktopGame.<init>(DesktopGame.kt:33)
	at com.unciv.app.desktop.DesktopLauncher.main(DesktopLauncher.kt:104)

This is probably not a JDK-specific issue since it replicates with Corretto as well
And this is despite it being in a try-catch for throwable :/

The warning you get is nothing to worry about, it's because roast adds this flag to log JNI warnings

Thanks for testing so much with this! I'll see if I ever get around this issue


Add support for multi module/project built applications

When a project is comprised of multiple Maven modules or Gradle subprojects, then I want a way to tell sc-pipelines which artifact of these is the deployable. I've already configured github-analytics as a multi subproject Gradle build here. I plan to do the same for github-webhook. Currently, when ./gradlew artifactId -q | tail -1 is called from the root of the project it returns the artifactId of the last subproject in the list. However, if I explicitly call ./gradlew :api:artifactId or ./gradlew -p api artifactId then I get the result I expect. So this may just be as simple as passing in another parameter to retrieveAppName function with an optional subproject/module name.

Let's take an example of 3 repos.

multi-projects that has 2 separate fat jars (yes, the 12th factor app is broken with such an approach)
multi-module that has 1 deployable but multiple modules
a-very-stupid-name that has 1 deployable with a single project

In Jenkins we would have the following seed job
// a single seed job (generates other jobs)
REPOS = 'http://github.com/foo/multi-projects.git$foo,http://github.com/foo/multi-projects.git$bar,http://github.com/foo/multi-module.git$baz,http://github.com/foo/a-very-stupid-name.git$greeting'

The value after $ is the name of the project. We will also treat it as a potential folder to which we should cd to produce the binary. In this case, it will be foo and bar folders under multi-projects repo.
We will then assert if the folder called e.g. foo exists in the repo and if that's the case we will set the ROOT_PROJECT_DIR to that value. In Concourse we would just set the env var ROOT_PROJECT_DIR directly.
If there's no such folder then we assume that the root folder is ., the root folder.
SINGLE REPO
A single pipeline for a repo
E.g. a-very-stupid-name.git$greeting If $... is passed for Jenkins then it won't matter cause there will be no matching folder and the ROOT_PROJECT_DIR will be . The name of the pipeline will be greeting.
The location of the pipeline descriptor: /sc-pipelines.yml
The location of the deployable: /target
Pseudo code
# build everything
PROJECT_ROOT="."
cd ${PROJECT_ROOT}
./mvnw clean install
# upload only the artifact from my specific module
 ./mvnw clean deploy
# deploy
useScPipelinesFromRootFolder

MULTI-MODULE
A single pipeline for a repo
E.g. multi-module.git$baz, the $... passed for Jenkins must not match any modules. If it does then it will be treated as a folder that contains an application, not the module itself. The name of the pipeline will be baz.
TODO: consider being less strict and check if sc-pipelines.yml is there in root. If it's there then it means that it's a multi-module project
In the sc-pipelines.yml you can provide the coordinates of the module that will produce the JAR.
build:
	coordinates: impl:core:foo:bar
	# force that the coordinates are the same as folders
	# impl/core/foo/bar

The location of the pipeline descriptor: /sc-pipelines.yml
The location of the deployable: impl/core/foo/bar/target
Pseudo code
# build everything
# retrieve group id from the root module `/pom.xml`
# retrieve artifact id from the child module `impl/core/foo/bar/pom.xml`
PROJECT_ROOT="."
cd ${PROJECT_ROOT}
./mvnw clean install
# upload only the artifact from my specific module
moduleCoordinate="impl:core:foo:bar" #parsed from sc-pipelines
./mvnw clean deploy -pl ${moduleCoordinate}
# deploy
useScPipelinesFromRootFolder

MULTI-PROJECT
One pipeline for each sub project (in case we can reuse credentials we will have 1 seed job)
otherwise - separate seed jobs
E.g. multi-projects.git$foo and multi-projects.git$bar. sc-pipelines will check if there's a folder foo for foo pipeline and bar for bar pipeline. Each subproject must have its own maven / gradle wrappers and pipeline descriptor. ROOT_PROJECT_DIR will be set to foo and bar respectively. That means that the project will cd to ROOT_PROJECT_DIR before executing any code.
Pseudo code
foo pipeline
# build everything
PROJECT_ROOT="foo"
cd ${PROJECT_ROOT}
./mvnw clean install
# upload only the artifact from my specific module
./mvnw clean deploy
# deploy
useScPipelinesFromRootFolder

bar pipeline
# build everything
PROJECT_ROOT="bar"
cd ${PROJECT_ROOT}
./mvnw clean install
# upload only the artifact from my specific module
./mvnw clean deploy
# deploy
useScPipelinesFromRootFolder

Looks like you've put a lot of thought into this... I don't see any issues with this approach. 👍


Automate CSV generation

see title :)

Resolved by #63 and two evil --force commits (one because I forgot to add the seaborn dependency, one because I forgot that I also have to increase the plot size when using the full dataset names)


Install apply-refact in ci.yml

Fixes #1299
It seems what happened is that actions/cache cached the refactor binary, so CI was using a binary built a while ago. The fix is to install apply-refact in ci.yml before actions/cache.

Thanks!


feat: Add documentation URL alongwith the error response to offer more info about the exception

Description

When server throws the error, in some cases like git exception it is possible to offer a step-by-step guide on how to resolve the error. This PR introduces the referenceDoc field in the error response which client can consume to offer read more section for errors.

Fixes #10004
Type of change

New feature (non-breaking change which adds functionality)

How Has This Been Tested?

JUnit TC
Manual test

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

/ok-to-test sha=61a4f28

/ok-to-test sha=b46f315

/ok-to-test sha=7cea826

/ok-to-test sha=461018f

/ok-to-test sha=a0f24c3

/ok-to-test sha=9347e8f

/ok-to-test sha=f5cc99c


link-update-roadmap

@MoFoGo the content of the PR (changed files) are different from the description given at the title. please review and fix

@MoFoGo the content of the PR (changed files) are different from the description given at the title. please review and fix

Weird. This is the wrong file.  I'll close the PR and redo with the intended correction.


array.every not working consistently

Bug Report
array.every on union string[][] | string[][][]; throws a This expression is not callable..
🔎 Search Terms

array.every not callable
.every not callable
every not callable

🕗 Version & Regression Information
TS 4.9
⏯ Playground Link
Repro here on TS Playground
💻 Code
type Polygon = string[][] | string[][][];

const p1: Polygon = [['1','1'], ['2','2'], ['3','1'], ['1','1']];
const p2: Polygon = [[['1','1'], ['2','2'], ['3','1'], ['1','1']], [['2','2'],['2.4','2.4'],['3.1']]];

p1.every(console.log); // it works. No complains.
p2.every(console.log); // it works. No complains.

const fn = (polygon: Polygon): void => {
  // .every complains with "this expression is not callable"
  if (polygon.every((p) => p.length === 2)) {
    //
  }
};

🙁 Actual behavior
TS throws an error.
🙂 Expected behavior
TS should not throw an error.
CC: @emiliosp

It's working consistently. Your two variables are not actually typed Polygon because the assignment narrows the type. When you add an as Polygon behind your assignment it won't narrow and the behavior is the same.

Yes, I see, but why .every is not callable on union type?

See #36390 and referenced issues. Or search for this expression is not callable union.


Great project!

Good-day Mikadily & everybody participating, I love this project, thank you so much!
Just to mentioned is there anyone here who maybe know how I might should do to offer hosting for my premium users? Yet I want to mention that this is some sort of gift for my premium users of the other values I have already given.
If you want to pass me to another board of discussion, feel free to do so!
The out-of-scope area of were I am thinking is architecture wise of how it might be the best way, right now I use Firebase and ionic framework for mobile users. Yet I'm not a hardcore developer and some advises were my focus shall be at or anyone that knows how to or knows anyone that knows how to are highly appreciated to wrap text down below!
Thank you so much for what you guys have already been giving to us and I wish you all a good Christmas!
/OH

This is outside the scope of a Github issue.
If you are looking for casual discussion about the bot I may suggest you visit our Gitter chat: https://gitter.im/Mikadily/poloniexlendingbot


C# Generator creating snake_case properties

Given you generate a client from a swagger doc that uses snake_case properties, such as https://raw.githubusercontent.com/openfga/api/main/docs/openapiv2/apidocs.swagger.json, you end up with snake_case properties on your model.

Is this intended behavior? I would expect the properties to be output as pascal case to fit with C# idioms.

Hi @Hawxy
Thanks for using Kiota and for reporting that issue.
CSharp was the first language we implemented and at the time we did little property names normalization.
Newer languages like Python and Ruby normalize to snake case, but this is language specific today.
The better solution would be to have a refiner that goes through all the properties to normalize them (and assign the serialization name if the name has changed) following a convention, this way we could remove all calls to normalization methods in code writers.
This is a rather big refactoring that requires good knowledge of the inner works of Kiota. @andrueastman are you interested in taking this on? Otherwise, I'll take this one.

No worries @baywet.
I'd like to take a look at this one if that's okay.

fixed by #2202 thanks to @andreaTP 's work!

Hello,
I used Kiota to generate a C# api client out of a Django openapi specification. It unfortunately still generates quite some PascalCase/snake_case mixtures in naming.
Example specification:
{     "openapi": "3.0.0",     "info": {         "title": "Sample Users API",         "description": "This API manages user information with more explicitly snake_case paths",         "version": "1.0.0"     },     "servers": [         {             "url": "https://api.sample.com/v1",             "description": "Primary production server"         }     ],     "paths": {         "/users/user_details/{user_id}": {             "get": {                 "summary": "Retrieve specific user details",                 "description": "Fetches details of a specific user by user ID",                 "operation_id": "get_specific_user_details",                 "parameters": [                     {                         "name": "user_id",                         "in": "path",                         "required": true,                         "description": "The unique identifier for the user",                         "schema": {                             "type": "integer"                         }                     }                 ],                 "responses": {                     "200": {                         "description": "Successful response with user details",                         "content": {                             "application/json": {                                 "schema": {                                     "type": "object",                                     "properties": {                                         "user_id": {                                             "type": "integer",                                             "description": "Unique identifier for the user"                                         },                                         "user_name": {                                             "type": "string",                                             "description": "The user's name"                                         }                                     }                                 }                             }                         }                     }                 }             }         },         "/users/{user_id}/update_role": {             "post": {                 "summary": "Update a user's role",                 "description": "Updates the role of a specific user by user ID",                 "operation_id": "update_user_role",                 "parameters": [                     {                         "name": "user_id",                         "in": "path",                         "required": true,                         "description": "The unique identifier for the user",                         "schema": {                             "type": "integer"                         }                     }                 ],                 "requestBody": {                     "required": true,                     "content": {                         "application/json": {                             "schema": {                                 "type": "object",                                 "properties": {                                     "new_role": {                                         "type": "string",                                         "enum": [                                             "admin",                                             "user",                                             "guest"                                         ],                                         "description": "The new role of the user"                                     }                                 },                                 "required": [                                     "new_role"                                 ]                             }                         }                     }                 },                 "responses": {                     "200": {                         "description": "Role updated successfully"                     },                     "400": {                         "description": "Invalid input provided"                     }                 }             }         }     } }
Folders & Classes in snake_case:

Namespaces, properties, inner classes:

I think that we haven't paid much attention to those classes as they mostly used "internally", and the end user rarely needs to spell them out. That said, I think your comment is relevant @decevy , do you mind opening a new Issue for this? Commenting on a closed issue, there are risks the comment simply gets lost.

Hey, thanks for your response. Yess, I figured this would get lost. So I created a new feature request.


feat: gas tracking tests for core contract operations

Added gas tracking tests for key operations to establish baselines for:

Identifying potential gas optimizations
Preventing gas cost regressions in future updates
Making sure operations remain within acceptable gas limits

Testing the added repo feature:
From root directory run
make gas-report

Current repo result
https://github.com/user-attachments/assets/4b999060-2924-46ce-9c2d-8a5f12a1ad3b

🟡 Heimdall Review Status

Requirement
Status
More Info

Reviews

🟡
0/1

Denominator calculation

Show calculation

1 if user is bot
0

1 if user is external
0

From .codeflow.yml

1

Additional review requirements

Show calculation

Max
0

0

From CODEOWNERS

0

Global minimum
0

Max

1

1

1 if commit is unverified
0

Sum
1

@cb-heimdall
let me know if you have any question or if you want me to reduce the PR scope.


[MM-51092] Automate release post for RCs and finals, include changelog

Summary
This PR adds an automation to assist in posting to the "Release: Desktop Apps" channel when new RCs or releases are available. It will scrape the cherry-pick log and determine which PRs were added in the most recent version, and adds links wrt. JIRA tickets and GitHub PRs.
Ticket Link
https://mattermost.atlassian.net/browse/MM-51092
NONE

The files scripts/generate_release_post.sh, scripts/generate_release_post.sh are in the blocklist for external contributors. Hence, these changes are not tested by the CI pipeline active until the build is re-triggered by a core committer or the PR is merged. Please be careful when reviewing it.
/cc @mattermost/core-security @mattermost/core-build-engineers


Need fs-plus module

(Having to add this too, just FYI)

Hmm, why is this needed though? I am not referencing it anywhere :/

Guys, the plugin should be working now, please give it another go and let me know your thoughts. Sorry about the errors.

Weird. Can't remember the exact error msg. No issues here now at least.


Bump SPDX Licence ids to 0.2.0

Fixes #362

Great catches! I also renamed the reentrnacy guard file to match its licence


Issue/2496 compile report result filter bug

Description
For the parsing and serialising of filter values:
I fixed this inline with how the special cases currently work.
But this needs a better way of handling these special values.
I created a ticket for this: https://github.com/inmanta/web-console/issues/2632
closes #2496
Self Check:
Strike through any lines that are not applicable (~~line~~) then check the box

[x] Attached issue to pull request
[x] Changelog entry
[x] Code is clear and sufficiently documented
[x] Sufficient test cases (reproduces the bug/tests the requested feature)
[x] Correct, in line with design
[ ] End user documentation is included or an issue is created for end-user documentation (add ref to issue here: )

Reviewer Checklist:

[ ] Sufficient test cases (reproduces the bug/tests the requested feature)
[ ] Code is clear and sufficiently documented
[ ] Correct, in line with design

Processing this pull request

An unexpected error occurred while processing this pull request. The request might have been partially processed. Caused by: 'CommitAuthor' object has no attribute 'name'

Processing this pull request

Merged into branches iso5, master in 183f8270df1b67f092241a17135d336a0408108e


Enable console.log in PhantomJS

Code from http://stackoverflow.com/a/16709386/150841, thanks PP.

Thank you, merged.


[vue] valid template root

I have linter error on fresh generated project
[vue/valid-template-root]
The template root requires exactly one element.eslint-plugin-vue

Does vue-3 changed the rule of one root element in template ?
<template>

{{ msg }}

  <button @click="count++">count is: {{ count }}</button>

Edit components/HelloWorld.vue to test hot module replacement.

</template>

Should it be wrapped with div ?
<template>

{{ msg }}

      <button @click="count++">count is: {{ count }}</button>

Edit components/HelloWorld.vue to test hot module replacement.

</template>

Vite is using Vue 3 which supports multiple root elements. Vetur isn't updated to allow that yet.

btw, I'm using just scaffolding app
npm init vite-app <project-name>

The app itself doesn't care about linters and there's nothing wrong with it. It's the IDE configuration.


programmatic selection via pick doesn't update display

Hi, the following doesn't do what I expect:
<dom-module id="my-elmt">
  <template>
    <mat-dropdown id="myDropdown">
      <mat-option value="0" label="foo"></mat-option>
      <mat-option value="1" label="bar"></mat-option>
      <mat-option value="2" label="baz"></mat-option>
    </mat-dropdown>
  </template>
  <script>
    Polymer({
      is: 'my-elmt',
      ready: function() {
        this.$.myDropdown.pick("1")
      }
    })
  </script>
</dom-module>

It seems to update internal state, but no UI feedback.

Did some more digging and it looks like some kind of life-cycle race condition in initializing the items array in Polymer.XPSelectedBehavior. Yielding a time-slice in ready before calling pick seems to work (obviously a hack, though):
    Polymer({
      is: 'my-elmt',
      ready: function() {
        this.async(function() { this.$.myDropdown.pick("1") }, 50)
      }
    })

Polymer docs say that ready is called when the child subtree is initialised, so the DOM should all be there, so not sure why the items array is empty, but it seems to be the case (DOM mutation event probably runs too early to hook into for populating the items array).

This happens because of he way the mutation observer works.
The polymer docs say that the "local-dom shadowchild subtree" has been initialized before ready, not the light-dom.
To avoid further confusion, we've removed the pick method and you can do all the selecting by changing the value of the dropdown and it will do everything by itself, rightly timed.


Updates to eva API

Description
Recent changes to the eva API means changes to where swell accesses eva.
Dependencies

[ ] waiting on https://github.com/danholdaway/eva/pull/14

Looks like create_and_run() is now part of object instantiation? The only comment that I have is that "Run the diagnostic application" is obfuscated by the instantiation versus the invocation of a method of the object that has an explicit name (e.g. eva.run_diag()). I may be misinterpreting the code however.

@jardizzo I'm not sure I understand your comment. Could you elaborate? In this case the thing provided by eva is just a method rather than an object. The method will create an object but it's not accessible to swell.

OK, I understand now. The eva() method instantiates an object generated by a factory that is a function of the dictionary passed in. So my comment is simply that eva() does not denote an action. Perhaps eva_run()? Feel free to ignore.

That was already decided in an eva code sprint development last week and merged into develop so we have to take it at face value.


Google Cloud Storage upload error

OS: Ubuntu 16.04.2 (4.8.0-58)
Python: 3.5.2 (does not seem to happen with Python 3.6.1)
google-cloud-core (0.25.0)
google-cloud-monitoring (0.25.0)
google-cloud-storage (1.2.0)
google-resumable-media (0.1.1)
Code:
from google.cloud import storage

bucket = storage.Client().get_bucket('MY_BUCKET')
blob = storage.Blob('test', bucket, chunk_size=262144)
blob.upload_from_string('yo')

Traceback:
TypeError                                 Traceback (most recent call last)
<ipython-input-1-558a696d564c> in <module>()
----> 5 blob.upload_from_string('yo')

/home/app/env/lib/python3.5/site-packages/google/cloud/storage/blob.py in upload_from_string(self, data, content_type, client)
    965         self.upload_from_file(
    966             file_obj=string_buffer, size=len(data),
--> 967             content_type=content_type, client=client)
    968
    969     def create_resumable_upload_session(

/home/app/env/lib/python3.5/site-packages/google/cloud/storage/blob.py in upload_from_file(self, file_obj, rewind, size, content_type, num_retries, client)
    889         try:
    890             created_json = self._do_upload(
--> 891                 client, file_obj, content_type, size, num_retries)
    892             self._set_properties(created_json)
    893         except resumable_media.InvalidResponse as exc:

/home/app/env/lib/python3.5/site-packages/google/cloud/storage/blob.py in _do_upload(self, client, stream, content_type, size, num_retries)
    816         else:
    817             response = self._do_resumable_upload(
--> 818                 client, stream, content_type, size, num_retries)
    819
    820         return response.json()

/home/app/env/lib/python3.5/site-packages/google/cloud/storage/blob.py in _do_resumable_upload(self, client, stream, content_type, size, num_retries)
    769
    770         while not upload.finished:
--> 771             response = upload.transmit_next_chunk(transport)
    772
    773         return response

/home/app/env/lib/python3.5/site-packages/google/resumable_media/requests/upload.py in transmit_next_chunk(self, transport)
    394             transport, method, url, data=payload, headers=headers,
    395             retry_strategy=self._retry_strategy)
--> 396         self._process_response(result)
    397         return result
    398

/home/app/env/lib/python3.5/site-packages/google/resumable_media/_upload.py in _process_response(self, response)
    573             self._get_status_code, callback=self._make_invalid)
    574         if status_code == http_client.OK:
--> 575             json_response = json.loads(self._get_body(response))
    576             self._bytes_uploaded = int(json_response[u'size'])
    577             # Tombstone the current upload so it cannot be used again.

/usr/lib/python3.5/json/__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    310     if not isinstance(s, str):
    311         raise TypeError('the JSON object must be str, not {!r}'.format(
--> 312                             s.__class__.__name__))
    313     if s.startswith(u'\ufeff'):
    314         raise JSONDecodeError("Unexpected UTF-8 BOM (decode using utf-8-sig)",

TypeError: the JSON object must be str, not 'bytes'

@dhermes This looks like a quick bug in google-resumable-media. (Check for a bytes and .decode('utf8').)

@lukesneeringer google-resumable-media-python is very "opinionated" about it's input types, so str instead of bytes (in Python 3) is the "wrong" input. However, we should do a better job passing the right type from within google-cloud-storage.

UPDATE: We already "do the right thing"

OK I just ran the same snippet in Python 3.6 with
google-cloud-storage==1.2.0
google-resumable-media==0.1.1

and it successfully uploaded yo

And now something is weird. I tried the same in 3.5 and it failed!

OK, total DERP, the issue is definitely in google-resumable-media. self._get_body(response) is what is bytes, but json.loads wants str:
ipdb> J = json.loads(self._get_body(response))
*** TypeError: the JSON object must be str, not 'bytes'
ipdb> J = json.loads(self._get_body(response).decode('utf-8'))
ipdb> len(J)
17
ipdb> J['name']
'test'

Python 3.6 added support for binary input to the json APIs

I hope to be able to fix this today or tomorrow

@dhermes any news with this issue? I am having the same problem and python 3.6 is not available yet in Centos

I opened https://github.com/GoogleCloudPlatform/google-resumable-media-python/issues/12 to track the issue in the right place.

Not sure if we should close this? At the very least we need to update deps in google-cloud-storage to "resolve". Maybe also cut micro a release?

I don't think we need to track this as a bug in google-cloud-storage:

We currently pin google-resumable-media >= 0.1.1.
That pin means that in order deploy a fix, the user can just upgrade to a new release of google-resumable-media, without any changes to google-cloud-storage.

Once the fixed version is available, we can (at our leisure) update our pin to require the fixed version.


Data layers provided by Mapbox no longer working

Description
The following data layers are not working on Rapid for me:

U.S. Forest Roads Overlay
TIGER Roads 2020
TIGER Roads 2021
TIGER Roads 2022

From looking at network tab they are all returning HTTP 401. Looks like the layers are provided by Mapbox and the keys need to be rotated. See: https://github.com/osmlab/editor-layer-index/pull/2060
Version
2.1.1
What browser are you seeing the problem on? What version are you running?
Firefox 117.0.1
The OS you're using
Fedora 38 Linux
Steps to reproduce

Enable any of the listed data layers
Observe that none of the layers load

The browser URL at the time you encountered the bug
https://rapideditor.org/rapid#background=Mapbox&datasets=fbRoads,msBuildings&disable_features=boundaries&map=18.24/31.10634/-97.69862&overlays=US_Forest_Service_roads_overlay,US-TIGER-Roads-2020,US-TIGER-Roads-2021,US-TIGER-Roads-2022
The auto-detected useragent string for your browser (leave blank if you're manually filling this form out)
No response

Yes, this is expected - we'll bundle a fresh copy of editor-layer-index the next time we make a release.

Would it be possible to make a new release for this? Thanks!

Yes! We are going do do a release mid December that includes this.
I think in the mean time you can also test the new version at http://rapideditor.org/canary and the imagery list there is pretty up to date.

Can close this - we've made several recent releases that include updated imagery ...


Address memory leak in JSON parse and stringify

Description of the change
Put default function implementations of JSON.parse and JSON.stringify into global object instead of moving a clone of them into function implementations.
Why am I making this change?
Enabling the dump-leaks feature on rquickjs and dropping the QuickJS runtime and context had the following output:
Object leaks:
       ADDRESS REFS SHRF          PROTO      CLASS PROPS
      0x130230    2 [js_context]
      0x134400    1   0*       0x130640   Function { length: 2, name: 3'parse' }
      0x134460    1   0*       0x130640   Function { length: 3, name: 2'stringify' }
Assertion failed: list_empty(&rt->gc_obj_list) (/Users/jeffcharles/src/github.com/Shopify/javy/target/wasm32-wasip1/release/build/rquickjs-sys-9b428111e744954d/out/quickjs.c: JS_FreeRuntime: 2002)
Error: the `initialize_runtime` function trapped

Fuzzing is failing at the moment with out of memory errors. Even if this isn't directly contributing to the out-of-memory errors during fuzzing, it would be very helpful for dump-leaks to not crash to aid in investigating if there are other memory leaks.
Checklist

[x] I've updated the relevant CHANGELOG files if necessary. Changes to javy-cli and javy-plugin do not require updating CHANGELOG files.
[x] I've updated the relevant crate versions if necessary. Versioning policy for library crates
[x] I've updated documentation including crate documentation if necessary.

Current performance difference for the README test is 253,787 on main and 254,592 on this branch (~0.31% increase). I'm not sure why there's an increase. If anything, I expected there should've been a decrease from avoiding cloning the default parse and stringify functions.


Pallet JSON is Incorrect

The song Pallet has the chart from Dadbattle on Hard, Normal, and Easy

Should be fixed now


[QUESTION] What is the difference between pk and id?

Like take a post for example. It has two unique values, pk and id, whats the difference?

media_id - String ID "{media_id}_{user_id}", e.g. "2277033926878261772_1903424587"
media_pk - Integer ID (real media id), e.g.<PHONE_NUMBER>878261772

Ohhh okay, and what's the matter with a user's pk and id?

there is no different i guess. User has no id, just a pk. ik some arguments of functions has user_id, but it is the same.
check this out, it helps a lot. https://adw0rd.github.io/instagrapi/

Thank you!


CHTML does not respect adaptiveCSS: false for some symbols

Issue Summary
In MathJax 3 when using adaptiveCSS: false, the CHTML stylesheet omits some symbols, e.g. \in, and as a result those symbols will not show up.
Steps to Reproduce:
Script in Node.js:
const mathjax = require('mathjax-full/js/mathjax.js').mathjax;
const TeX = require('mathjax-full/js/input/tex.js').TeX;
const CHTML = require('mathjax-full/js/output/chtml.js').CHTML;
const liteAdaptor = require('mathjax-full/js/adaptors/liteAdaptor.js').liteAdaptor;
const RegisterHTMLHandler = require('mathjax-full/js/handlers/html.js').RegisterHTMLHandler;

const AllPackages = require('mathjax-full/js/input/tex/AllPackages.js').AllPackages;

const adaptor = liteAdaptor();
RegisterHTMLHandler(adaptor);

const tex = new TeX({packages: AllPackages});
const chtml = new CHTML({
  fontURL: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.0.0/es5/output/chtml/fonts/woff-v2',
  adaptiveCSS: false,
});
const html = mathjax.document('', {InputJax: tex, OutputJax: chtml});

function printCSS() {
  const css = chtml.styleSheet(html).children[0].value;
  console.log('CSS length', css.length, 'Contains 2208', css.indexOf('2208') !== -1);
}

printCSS(); // prints CSS length 596245 Contains 2208 false
// \in renders to U+2208 (Element Of)
html.convert('x\\in X');
printCSS(); // prints CSS length 596351 Contains 2208 true

Before the convert, the HTML + CSS generated would not display the \in symbol in a browser.
After converting a tex expression containing \in, the stylesheet will contain the necessary rule and the HTML + CSS would properly in a browser.
I expect that disabling adaptiveCSS should result in all rules being included, but it is not the case, so this seems to be a bug.
Technical details:

MathJax Version: 3.0.1 (mathjax-full on npm)
Client OS: Mac OS X 10.8.4
NodeJS: 12.12.0

Supporting information:
I think the cause is CHTMLFontData#addVariantChars in which variant.chars[N].length === 4 did not consider the adaptiveCSS option:
https://github.com/mathjax/MathJax-src/blob/master/ts/output/chtml/FontData.ts#L207
Thanks!

Thanks for your bug report.  You are correct about the cause of the issue.  It is resolved in a pull request, and was originally reported in the Mathjax User's Forum.
For now, you could do
for (const name of Object.keys(chtml.font.variant)) {
  const chars = chtml.font.variant[name].chars;
  for (const n of Object.keys(chars)) {
    if (chars[n].length === 3) {
      chars[n][3] = {};
    }
  }
}

right after creating the chtml object.  That will make sure all the css rules are output.

Good to know it's already being resolved, thanks!


Update AD FS SSL Certificate process has changed.

To get to it now you must go to Manage Federation first, and then you will see the Update option, so those screenshots are out of date.

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

ID: d87b17f9-38de-1acf-e18f-96bba2ae77ea
Version Independent ID: 20c9770c-2c11-e172-e66c-76c9632fafce
Content: Azure AD Connect - Update the SSL certificate for an AD FS farm
Content Source: articles/active-directory/hybrid/how-to-connect-fed-ssl-update.md
Service: **active-directory  **
Sub-service: hybrid
GitHub Login: @billmath
Microsoft Alias: billmath

@serafing
Thanks for your feedback! We will investigate and update as appropriate.

@billmath
Could this be updated Bill ?

@serafing  Thank you for the feedback. I have created a work item to address this and get the screenshots update. Thanks!
#please-close


Added android app and Sleeky theme

Updated Readme file with new android app and frontend and backend theme called Sleeky

Thanks!


Add build scans to gradle config

Current dependencies on/for this PR:

main

PR #96   👈

This stack of pull requests is managed by Graphite.


bug: Discover .git (and .cody) root

Version
1.86
Describe the bug
Right now any feature that relies on the .git project path (such as .cody ignore, https://github.com/sourcegraph/cody/pull/2306#issuecomment-1938672543 ) assumes that the project root is the VSCode workspace root. However it frequently happens that the project .git folder can be up a few levels in the directory structure from the Workspace root which then breaks the feature.
For instance, the .cody ignore file isn't found if the folder is above the current workspaceUri.
This can easily be reproduced by simply adding a sub-folder to the workspace.
Expected behavior
Just like the default VSCode Git extension there should be a method to get the "real" project root that walks up the path tree until it encounters a .git/.cody directory. This way.cody-ignore and features like below can construct paths relative to this root instead of the workspaceUri
Additional context
Example workspaceUri path that should be project root relative:
https://github.com/sourcegraph/cody/blob/4756dc7fc8a08998421fe7c3aa6d4d461327a31a/vscode/src/scm/CommitMessageProvider.ts#L220

@taylorsperry, some users want Cody to walk the directory tree to discover repository roots; other users don't want Cody to walk the directory tree so they can control the scope of Cody's filesystem access. How will we resolve this apparent contradiction?

What is it about the file system access that users want to control?
Because my totally unresearched, uniformed, self centered assumption would be that it's primarily from the concern that no confidential information should ever be leaked to a hosted LLM by "context expansion" outside of the walled garden of the workspace.
In this particular case that's exactly what i wanted to use the real project root for is to ensure that files that VSCode has exposed as changed in git don't accidentally get included in a prompt (in this case the commit message generator). To do this I need to resolve the path relative to the .git folder. Similarly if a user has a .cody folder in the directory chain with configuration it feels sort of rude and counterintuitive to ignore it just because I happened to open a sub folder as a workspace. Especially if that means that the rules in codyignore are now ignored and it potentially does expose information I thought was sealed off.
So if that's the feedback I don't think those two goals are necessarily disjoint.


fix(simple_planning_simulator): change orger of IDX in SimModelDelayS…

Description
During work with vehicle models from simple_planning_simulator,
I noticed that practically all models use a standardized form of the IDX vector -  see the table below.
Such approach (promise) certainly makes sense if we want to make sure, for example, that YAW is always at index 2 of the IDX vector.
This is especially useful for the case where in one common part of the code (method) we use different vehicle models and want to use IDX vector indexes (without using enums classes).
However, this approach (promise) is broken in the case of the recently added vehicle model SimModelDelaySteerAccGearedWoFallGuard - see table below.
In SimModelDelaySteerAccGearedWoFallGuard ACCX is not on index 5 as in any other model but on index 6.
On index 5 is the newly added PEDAL_ACCX.
This break in the IDX vector form standardization, makes the code prone to bugs, for this reason I propose to provide such standardization also for the SimModelDelaySteerAccGearedWoFallGuard  vehicle model.
In this PR, I simply change the order of the IDX vector in the SimModelDelaySteerAccGearedWoFallGuard model.

SimModelActuationCmd
SimModelDelaySteerAcc
SimModelDelaySteerAccGeared
SimModelDelaySteerAccGearedWoFallGuard
SimModelDelaySteerMapAccGeared
SimModelDelaySteerVel
SimModelIdealSteerAcc
SimModelIdealSteerAccGeared
SimModelIdealSteerVel

Related links
None.

How was this PR tested?
The Autoware operation with modified vehicle model SimModelDelaySteerAccGearedWoFallGuard has been tested using scenario_simulator_v2, more precisely this scenario and this branch - video below. (tier4 access rights may be required).
https://github.com/user-attachments/assets/40ea8d78-9d11-4515-85b3-7147bbea8a01
Notes for reviewers
None.
Interface changes
None.

Effects on system behavior
The  SimModelDelaySteerAccGearedWoFallGuard model vehicle has the order of the IDX vector changed - in order to try to maintain the promise.

@xmfcx
Thank you so much for taking care of this PR. :bow:
By mistake I've removed the assignment of me in this PR - and I can not bring it back. :disappointed:
I would like to confirm that I've been performing tests and reviewing the code to make sure that a numeric value (int) is not being used directly instead of an enum. I did not find the use of the numeric value - the enum is used everywhere in autoware.universe.

Thank you very much @dmoszynski for the contribution :bow:
@tkimura4 @zulfaqar-azmi-t4 @soblin I will merge it since it is passing the CI and it's a clear mis-ordering of the enums.
Please check within internal TIER IV projects if it is used in any other way and feel free to revert if so.


Hide search bar when not used

Describe the solution you'd like
To be really minimalistic, is there an option to hide the upper search bar when it's not being used (typed in). Would be cool to have that!
Here is how it looks for me now with the tab center ext.

tried https://github.com/andreasgrafen/cascade#url-bar-customisation, but it seems to not work for me

Found a solution to autohide the whole bar.
/* "Auto-hide" address bar unless focused (e.g. Ctrl-L) or tab bar is hovered. */
:root {
    --address-bar-height: 40px;
    --browser-offset: calc(-1 * (var(--address-bar-height) + 1px));
}
#navigator-toolbox-background {
    position: absolute !important;;
}
/*#navigator-toolbox-background ~ #browser {
    margin-top: var(--browser-offset) !important;
}*/
#navigator-toolbox-background:hover, #navigator-toolbox-background:focus-within {
    z-index: 9001 !important;
}

Here is how it looks like

This is a really neat tweak. Functionality on my end seems to differ a little tho. I have to uncomment the line from your snippet in order to actually hide the URL bar, and hovering/focussing the tab bar does not shot the URL bar again.
I have to actively focus it via CTRL + L – or is that how it's supposed to be?

This is a really neat tweak. Functionality on my end seems to differ a little tho. I have to uncomment the line from your snippet in order to actually hide the URL bar, and hovering/focussing the tab bar does not shot the URL bar again. I have to actively focus it via CTRL + L – or is that how it's supposed to be?

Idk, I am using up to date Firefox Developer Edition and it works fine for me without uncommenting anything. However, address bar appears only on Ctrl + L, hovering doesn't work as well

Here is the link to the original post on Reddit: https://www.reddit.com/r/FirefoxCSS/comments/t73l90/need_help_making_address_bar_autohide/

I found that this works. (Ctrl + L and hover)
/* Some variables for quick configuration - play with numbers to find a perfect match for your setup */
:root {
    --sidebar-width: 40px;
    --panel-width: 91.5vw;
    --panel-hide-offset: -30px;
    --opacity-when-hidden: 0.05;
}

/* Auto-hide address bar */
#navigator-toolbox{
  position: fixed !important;
  /* Comment out following line to get 'slide-page-down' reveal, like in F11 fullscreen mode */
  display: block;
  transition: margin-top 82ms 33ms linear, opacity 82ms 33ms linear !important;
  z-index: 1;
  opacity: 1;
  /* Spacing on the left for sidebar */
  margin-left: var(--sidebar-width);
  /* Disabled the borders, as the bottom one seemed to have unwanted top padding sometimes */
  border: none !important;
}

#navigator-toolbox,
#navigator-toolbox > *{
  /* Reduced width for panel in order to not overflow the screen on the right side */
   width:  var(--panel-width);
}

#navigator-toolbox:not(:focus-within):not(:hover){
  margin-top: var(--panel-hide-offset);
  opacity: var(--opacity-when-hidden);
}

/* Disable auto-hiding when in 'customize' mode */
:root[customizing] #navigator-toolbox{
  position: relative !important;
  opacity: 1 !important;
  margin-top: 0px;
}

Original post: https://www.reddit.com/r/FirefoxCSS/comments/lwf22i/autohide_address_bar_reveal_on_hover/

It would be quite nice to add this as a simple toggle flag for those who only want to have the url bar appear on Ctrl+L.

After applying the one-line layout fix there seems to be an issue where focused tab / currently open tabs and animations such as reload are visible even though all else is hidden.


wnameless oracle11g xe authorization exception

Expected behavior
pull oracle 11g xe from wnameless
Actual behavior
(HTTP code 401) unexpected - {"message":"Get https://registry-1.docker.io/v2/wnameless/oracle-xe-11g/manifests/latest: unauthorized: incorrect username or password"}
Information about the Issue
can not pull the image
Steps to reproduce the behavior

... find wnameless oracle 11g xe
... create

Pardon,
I was not using my docker id instead email. When i changed it to dockerid pulled the image.


error installing on OSX Yosemite

Hi,
when i try to install it on OSX 10.10.5(Yosemite), it always give me this error:
<EMAIL_ADDRESS>install /Users/Tobi/Documents/Code/node_modules/bcrypt
> node-gyp rebuild

  CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o
  CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt.o
  CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt_node.o
  SOLINK_MODULE(target) Release/bcrypt_lib.node
ld: library not found for -lgcc_s.10.5
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Release/bcrypt_lib.node] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Darwin 14.5.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/Tobi/Documents/Verlagshaus_Gruber/CRM-Erweiterung/Code/node_modules/bcrypt
gyp ERR! node -v v4.1.0
gyp ERR! node-gyp -v v3.0.1
gyp ERR! not ok
npm ERR! Darwin 14.5.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "bcrypt"
npm ERR! node v4.1.0
npm ERR! npm  v3.3.3
npm ERR! code ELIFECYCLE

npm ERR<EMAIL_ADDRESS>install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the bcrypt package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls bcrypt
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!  /Users/Tobi/Documents/Code/npm-debug.log

I'm running node version node v4.1.0 and npm  v3.3.3
Help :(
edit:
I think the line "ld: library not found for -lgcc_s.10.5" is the problem.

temporary switched to bcryptjs

@Gargamil creating symlinks for the libs as described here solved the ld: library not found for -lgcc_s.10.5 error for me:
$ cd /usr/local/lib
$ sudo ln -s ../../lib/libSystem.B.dylib libgcc_s.10.5.dylib
$ sudo ln -s ../../lib/libSystem.B.dylib libgcc_s.10.4.dylib

make sure latest xcode and xcode command line tools are installed per the node-gyp requirements. I know this module works fine on yosemite so this is an issue with your system/environment setup.

@defunctzombie FYI I'm on Yosemite 10.10.5 and have latest Xcode 6.3 and latest command line tools installed. But maybe indeed it's a problem with my environment.

@voz Life saver!
Had the same problem, I'm also on Yosemite 10.10.5 and have latest Xcode 6.3 and latest command line tools installed. Weird thing is, about 5 months ago I was able to install without any problems. Something changes somewhere apparently in my env. Even completely reinstalled node with no effect.
Anyways creating symlinks solved the issue!


fix: adding screen reader hints for generic read more texts

Please always provide the GitHub issue(s) your PR is for, as well as test URLs where your change can be observed (before and after):
Fix

Test URLs:

Before: https://main--accenture-newsroom--hlxsites.hlx.live/
After: https://seo--accenture-newsroom--hlxsites.hlx.live/

With this fix, SEO score improved from 79 to 86


Data on main chart doesn't update (for ages) when changing currencies

Open main view in USD: (top of screen) Market cap ~$2b; (first row in table) BTC ~$42.7
Hit C 0 (AUD)
Market cap immediately changes to $2.7b, BTC takes a minute or two to change
Exit and restart, table updated immediately

Video of this issue (actually changing AUD->USD)
https://user-images.githubusercontent.com/122371/134755716-bb308d52-819c-4b07-b595-92ad2876cffe.mov
Make more apparent because no visual indicator that a change is pending - see #174

Fixed in #232


Add animated plots for ScatterGeodesicsPlotter.

Fixes parts of #36
This PR adds an animated plotting system for simulation of orbits. Currently, I've only implemented it for ScatterGeodesicsPlotter. I'll add the tests and a similar method for Static plotter and maybe Kerr and Kerr-Newman (when they are added), once this gets a green light.
Here is what I have been able to get-

@shreyasbapat @spino17 FYI.

Yess! Well, this is how the plotting ecosystem should grow! :)
Now I would like to see some controllable animation!

And BTW All lights green! I will review thoroughly in a moment

Updated the tests and added a new feature to control the speed of plotting. @shreyasbapat

Really great work @Varunvaruns9 .

Thanks @ritzvik 😀

My god! What happened to codecov?

I see : https://status.codecov.io/
We can't merge this before we get coverage report :/

Please merge #180 before this. I would have to resolve some conflicts before this is mergeable.

Resolved conflicts.

@shreyasbapat Done the changes. Thanks for the review :)

@shreyasbapat Fixed.

One rebase and it's in

Thanks @Varunvaruns9 :)


[feature & security] Display Junk messages as text only

Hi,
I inadvertently opened a message stored in my Junk folder, and its content was displayed. This is armful since junk messages can embed malicious code and/or fetch malicious extern resources.
Display these messages as full text would be a first barrier against that.
You may add a banner to let the user show it's original content.
This is related to #514

:+1:

I agree, that would be useful. Too bad this has not been integrated yet.


Fixing little typo in "Update windows-10-version-latest.md"

Minor typo fix: "pacakge" to "package"

@QuinnRadich Typo fix approved and merged via PR review process.


Add "Find all png files recursively"

Use the glob crate with the '**' pattern.
cc https://github.com/brson/rust-cookbook/issues/211
See CONTRIBUTING.md for details.

done


New version: BleuBleu.FamiStudio version 4.1.2

- [X] Have you signed the Contributor License Agreement?

[X] Have you checked that there aren't other open pull requests for the same manifest update/change?

[X] Does your manifest conform to the 1.5 schema?

Microsoft Reviewers: Open in CodeFlow

/AzurePipelines run

@wingetbot run


targetPosition reversed

Hi.
I think the open-close position are wrong.
Velux says, 100% are complet open and 0% are complete closed.
I use Alexa to move the Roller Shutters. When I say A..., Roller Shutter open the setpoint changes to 100% but the Shutters shut down.
Can you fix this please?
thanks.

The implementation follows the API documentation:

Though I see your point a change of the behaviour would break many existing installations. As an alternative you could create an alias. See https://www.iobroker.net/#en/documentation/dev/aliases.md.


Building error: neo_localization/Convert.h:14:10: fatal error: tf2_geometry_msgs/tf2_geometry_msgs.hpp: No such file

Hello,
Details:

Ubuntu 20.04, ROS Galactic

I wanted to build locally your package and I got this error:

ljaniec@ljaniec-PC:~/ros2_ws$ colcon build --symlink-install --packages-select neo_localization2
Starting >>> neo_localization2
--- stderr: neo_localization2
In file included from /home/ljaniec/ros2_ws/src/neo_localization2/src/neo_localization_node.cpp:10:
/home/ljaniec/ros2_ws/src/neo_localization2/include/neo_localization/Convert.h:14:10: fatal error: tf2_geometry_msgs/tf2_geometry_msgs.hpp: No such file or directory
   14 | #include <tf2_geometry_msgs/tf2_geometry_msgs.hpp>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/neo_localization_node.dir/build.make:63: CMakeFiles/neo_localization_node.dir/src/neo_localization_node.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/neo_localization_node.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
---
Failed   <<< neo_localization2 [1.05s, exited with code 2]

I have tf2 packages installed through apt, I tried to build the whole geometry2 metapackage in the same workspace too, but it didn't help.

Please checkout to the correct branch and retry! Thanks!

The package was built correctly after checkout to Galactic branch, but the end result which I wanted to achieve (starting multi-robot simulation with Nav2) wasn't possible - the simulation hanged there.
Where should I issue logs and a description of these new problems?
Is there any README for setting up your ROS2 multi-AMR Nav2 simulation?

Is there any README for setting up your ROS2 multi-AMR Nav2 simulation?

Unfortunately, the navigation stack for the multi-AMR Nav2 simulation is not available at the moment. It is still in a developmental phase. You need to follow this branch for further updates.
In case if there is any feature, that you would like to see in neo_simulation2, apart from the multi-robot navigation, please feel to open an issue in that repository.
May I know is there any specific use-case you are targeting?

Thank you, I will observe any details on mentioned branch.
I am developing a hybrid controllers for multiple mobile robot systems, based on two layers of control, discrete and continuous-time. Until now my simulations were really simplified, but the end goal is to have real industrial robots instead of simulated agent under control. Similar research/software development is conducted there: https://github.com/open-rmf/rmf_ros2
My specific use-case is a group of AMRs on the known map, receiving orders from centralized controller with optimized, simultaneous motion without collision and deadlocks (correct-by-build type of formal logic control). I hoped to use your project at the base for a simulated environment and a pair of AMRs to initial tests of implemented solution.

#1
Hi @ljaniec
If you're still facing issue of building neo_localization2 onto ROS2 foxy, you may reference to the solution i found.
Best,
Samuel

Thanks! Feel free to reopen, if you guys have any issues!


July final updated

@levinec

@JohanFreelancer9 - kindly do the copy editor review for this PR. Thanks


fragment extension doc inadequately describes profile UUID generation

In https://docs.microsoft.com/en-us/windows/terminal/json-fragment-extensions#how-to-determine-the-guid-of-an-existing-profile, it says:

To determine the GUID of the profile to be updated, use a Version 5 UUID generator with the following namespace GUID and name:

The namespace GUID: {2BDE4A90-D05F-401C-9492-E40884EAD1D8}
The name of the profile to be updated

As a sanity check, a profile called 'Ubuntu' will get the generated GUID: {2C4DE342-38B7-51CF-B940-2309A097F518}

If you go online and search for "version 5 UUID generator", you will find several webpages.  None of these result in the {2C4DE342... UUID for "Ubuntu".
More research revealed #870 which says:

Canonical Form: Name of profile encoded in BOM-less UTF-8 BOM-less UTF-16LE

That's an apparently important piece of information that was missing from the fragment doc.  OK, so we'll probably need some custom code after all
import uuid
uuid.uuid5(uuid.UUID("{2BDE4A90-D05F-401C-9492-E40884EAD1D8}"), "Ubuntu".encode("UTF-16LE"))

This works for python2 (but who uses that anymore?), but on python3 this gives
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python38\lib\uuid.py", line 787, in uuid5
    hash = sha1(namespace.bytes + bytes(name, "utf-8")).digest()
TypeError: encoding without a string argument

It seems that even Python hard-codes the fact that the name should be utf-8 encoded!  Let's try a hack
import uuid
uuid.uuid5(uuid.UUID("{2BDE4A90-D05F-401C-9492-E40884EAD1D8}"), "Ubuntu".encode("UTF-16LE").decode("ASCII"))

That gives the expected answer.
So, to summarize, it seems like that doc should make it more clear that something unusual is going on in the UUID generation, rather than saying "just grab your nearest v5 UUID generator and plug these strings in".

CC @PankajBhojwani.

UGH. Our documentation here is not correct¹.
The namespace Guid is actually based on the name of the folder/fragment name you're using, and it will be used to automatically generate a GUID if you haven't specified on.
Okay -- we can't change this because now we'll break compatibility with all user customizations on top of Fragments (grrr).
Here is the code that will generate the same GUID as Git Bash is already getting. You'll want to use this guid specifically, because doing anything else will separate the user's settings from your upstream document.
import uuid

# CALCULATE NAMESPACE BASED ON NAME
u = uuid.uuid5(uuid.UUID("{f65ddb7e-706b-4499-8a50-40313caf510a}"), "Git".encode("UTF-16LE").decode("ASCII"))

# CALCULATE FINAL BASED ON NAMESPACE
uuid.uuid5(u, "Git Bash".encode("UTF-16LE").decode("ASCII"))

¹ The namespace GUID it provides is actually for the internal "Windows.Terminal.Wsl" namespace... which due to legacy reasons doesn't follow the same rules. It was authored in v0.5, and we didn't want to break user customizations back then either. 😬

One note:

something unusual

I'm surprised by this characterization, but not offended. When I implemented the generator, I read this part of RFC4122 (excerpted below) to suggest that as the namespace owner we could define the layout of bytes inside it.
...

Yes, I chose that wording carefully.  It's not "wrong" per the spec, but basically every generator I found seemed to not allow specifying the encoding, so it's apparently "unusual" to use something other than UTF-8.

I'm surprised Python specifies that the name is a string, actually. It precludes RFC4122 compliance! ☹

Me too.

This looks very much like the issue I was having with the documentation a while ago.

@DHowett @jeremyd2019 changes to the documentation are now live 🎉 – I think this issue can be closed now.
Btw. @jeremyd2019 thanks for figuring in this out and getting the ball rolling – I took the liberty of adapting your initial approach and contribute it with some adaptions to the documentation repository.


[Bug]: TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts"

What happened?
run main.ts using ts-node;
Reproduction
ts-node main.ts
tsconfig.json: `{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"outDir": "build",
"rootDir": "src",
"strict": true,
"moduleResolution": "Node",
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,

"skipLibCheck": true,
"forceConsistentCasingInFileNames": true

},
"exclude": ["build", "node_modules"],
"type": "module",
}`
Package
discordx
Version
Stable
Relevant log output
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for D:\projs\ts\fetchbot\fetchbot\src\main.ts
    at new NodeError (node:internal/errors:387:5)
    at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:76:11)
    at defaultGetFormat (node:internal/modules/esm/get_format:118:38)
    at defaultLoad (node:internal/modules/esm/load:81:20)
    at nextLoad (node:internal/modules/esm/loader:165:28)
    at ESMLoader.load (node:internal/modules/esm/loader:608:26)
    at ESMLoader.moduleProvider (node:internal/modules/esm/loader:464:22)
    at new ModuleJob (node:internal/modules/esm/module_job:63:26)
    at ESMLoader.#createModuleJob (node:internal/modules/esm/loader:483:17)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:441:34) {
  code: 'ERR_UNKNOWN_FILE_EXTENSION'
}

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Did you tried ts-node --esm src/main.ts?

Thanks! Solved it.

This is still an issue for me, with a fresh install with the npx command

@CodeStarrk Just to note, If you're running the latest node version (v20), ts-node has still not been updated to run on it. You may have to either go back to using node v18, Have a script clean, compile and then build using typescript or find a different runtime engine similar to ts-node.

yeah thanks, I am aware about this. will update in templates as well.


Create a new release, supporting php-ast AST version 40?

https://github.com/nikic/php-ast#40-current has been out since January 2017.

I'm requesting support for only version 40. Backwards compatibility with 35 and 30 is not part of this request.

Things to ensure don't break (Representative snippets of php code which changed are included):
Version 40:

$a ?? $b;

AST_COALESCE is now represented as an AST_BINARY_OP with flag BINARY_COALESCE.

('\bar')() (Valid to convert to \bar())

the leading backslash is now dropped if syntax like ('\bar')() is used.

if ($x); and while ($x);

null elements are now stripped from AST_STMT_LIST. Previously these could be caused by nop statements (;).
...
Many stmts children could previously hold one of null, a single node or an AST_STMT_LIST. These will now be normalized to always use an AST_STMT_LIST. A null is only allowed if it is semantically meaningful

function foo(?iterable $x, ?callable $y, int $z, iterable $i) : callable {}

Representation of certain types was normalized to always use an AST_TYPE node

Version 35:

[$x, 'y' => $var] = $expr and list($x, 'y' => $var) = $expr

list() destructuring is now always represented as an AST_ARRAY with ARRAY_SYNTAX_LIST flag.

try/catch with single/multiple class types

I believe we are now compatible with PHP 7.0, 7.1, and 7.2, along with php-ast versions 30, 35, and 40. I intend on doing a little further testing to ensure that I haven't missed anything obvious, and then I'll make a release.

I've now released v2.0.


double fixed double occurance of home and benefits in nav bar and email is allowed only in uppercase  and email box is not of same size as password in login/signup page

Fixes:  #1828
Description
remove extra occurance of home and benefits from nav bar of login/signupo page .
email is allowed to write in lowercase.
email box and password box is aligned properly .

Type of PR

[X] Bug fix

Checklist:

[X] I have made this change from my own.

[X] My code follows the style guidelines of this project.

[X] I have performed a self-review of my own code.

[X] I have commented my code, particularly in hard-to-understand areas.

[X] I have made corresponding changes to the documentation.

[X] My changes generate no new warnings.

[X] I have tested the changes thoroughly before submitting this pull request.

[X] I have provided relevant issue numbers and screenshots after making the changes.

Conflicting files
assets/css/style.css
Please see the conflicts highlighted in the image above. Resolve the conflicts in the mentioned files. Ensure you pull all the latest changes before pushing your feature/bug fixes to the main branch. After resolving the conflicts, please open a new PR for review.
Thank you!


Added lore and nule

Stumbled upon these missing entries while porting @asssaf's wiki.hoon to master.

Just stumbled upon this porting the Mail example app to Hoon 143. Also added ++role. Thanks @mattlevan!


XML file error in MechanicTranslationalLosslessConnector.xml

Failure loading the standard library due to an error in the
MechanicTranslationalLosslessConnector.xml
Resolve:
add </help> in (new) line 11 in the componentLibraries\defaultLibrary\Mechanic\Linear\MechanicTranslationalLosslessConnector.xml file

I believe this has been in fixed in #53e9c48cb8753caa0018d5c3857925ca1b6b31bd
But no release has been made since

Yes, sorry I was in the progress of making a release, but then we tried to introduce FMI3 support and its not entirely finished.
Then I got sidetracked, I will try to build the release I initially intended today.

The new release has now been uploaded to github

@IngoSt what was the error? Was it possible to continue using Hopsan even tough you got that error ?