fix: show an error for integrations that aren't configurable via NewDot

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/47797
PROPOSAL: https://github.com/Expensify/App/issues/47797#issuecomment-2303342624
Tests

Precondition:

On OldDot, go to Settings -> Workspaces
Choose a Control or Collect Workspace
Go to Connections -> QuickBooks Desktop -> Click Connect to QuickBooks Desktop
Click Shared Company Drive as an option and close the modal once it's giving you next steps.
Refresh the page and see the error "The connection could not be completed" appear

Steps:

Open NewDot and see a RBR on your profile photo in the bottom navigation bar
Tap on Profile photo in the navbar -> Workspaces -> Same workspace as above -> Accounting
Verify that: Error message is shown

[x] Verify that no errors appear in the JS console

Offline tests

QA Steps

Precondition:

On OldDot, go to Settings -> Workspaces
Choose a Control or Collect Workspace
Go to Connections -> QuickBooks Desktop -> Click Connect to QuickBooks Desktop
Click Shared Company Drive as an option and close the modal once it's giving you next steps.
Refresh the page and see the error "The connection could not be completed" appear

Steps:

Open NewDot and see a RBR on your profile photo in the bottom navigation bar
Tap on Profile photo in the navbar -> Workspaces -> Same workspace as above -> Accounting
Verify that: Error message is shown

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
https://github.com/user-attachments/assets/ec5e09a0-30bb-4f98-b318-90d86debf081

Android: mWeb Chrome
https://github.com/user-attachments/assets/b93543cf-64cd-492e-8e87-d9e9028f397d

iOS: Native
https://github.com/user-attachments/assets/71c8a065-6922-4827-8273-f24feff2dd68

iOS: mWeb Safari
https://github.com/user-attachments/assets/a6dbf9b3-eddd-4064-89cc-a52e2589f234

MacOS: Chrome / Safari
https://github.com/user-attachments/assets/0af4020b-d0d9-4a99-97a4-a2554841694a

MacOS: Desktop
https://github.com/user-attachments/assets/9d8a1b9f-3369-4058-8917-6d9525829a22

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/puneetlath in version: 9.0.37-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/grgia in version: 9.0.38-4 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Dont trust ia32cap envvar more than cpuid 1.1.1

This is just there to have extended CI tests in 1.1.1 run with #5860
~It is WIP becasue I don't want it approved by you.~

OpenSSL> dgst -sha512 sample3.txt
SHA512(sample3.txt)= 861b6a036e3e2f79e02df261a687b04dc0a359ad36d5cb4d7c821390e43cf190c48cbfb30f98c85e6aa81d076615dec2167a5216b1bb49f798c1f8e35cb284d1
OpenSSL> dgst -sha256 sample3.txt
SHA256(sample3.txt)= eb65278bc9a2f29921c598ebb268d19844d7e6beb53699355cd9d617864bd931
OpenSSL> dgst -sha512 sample4.txt
SHA512(sample4.txt)= cbf24dd4ab1337a213b764f7a5a51c2e1fb5192f945f4ae76b870b84c29b872f8f1ce68196f2f1ab2a0e79cac59d7ff0a274253b7b5f784c3c834c09d5541ad9
OpenSSL> dgst -sha256 sample4.txt
SHA256(sample4.txt)= 31225421ae89c1abbcac87de98c31d09e7cbf4f376f9c7bc00b67ccb74b8a4de
OpenSSL> dgst -sha512 sample5.txt
SHA512(sample5.txt)= f6da079c81917a0e28e79693b7000e77a6d12e8b3aade5c67cd20aea26344954d3f4a14634c8a039c381aec45ec0c6d694254c595b1db47d907ad21b1da50555
OpenSSL> dgst -sha256 sample5.txt
SHA256(sample5.txt)= 6b10ee2e43f19ebf72ec8f9857a73ea3089cea60ebc54b66283b44d4572352ab

#5860 got quite a bit of push-back, to the point that you closed it...  do you expect a different outcome here?

can we talk?

I only closed #5860 since a major merge conflict was imminent.

I hadn't looked at #5860 much.  Thanks for the reference @levitte
I'm unsure about 1.1.1 -- this feels like a feature.

My opinion on this one is clear - I do not think it is needed in this form.

I can see the use case for freezing the settings at compile time.  That makes some sense.  After reading the discussions, I completely fail to understand why there is any need for masking.
An attack via an environment variable to cause a denial of service to yourself isn't justification.  This would be a local mis-configuration which we shouldn't be trying to mitigate.
An attacker breaking into your system and setting such an environment variable, likewise doesn't justify this.  You've got a lot more to worry about than a denial of service.

Yes, possibility to do compile-time freezing would make sense and/or completely disable the CAP envvar support as build-time option for paranoid use-cases.

This is my proof of concept:
ed@w-ed:/tmp$ export OPENSSL_ia32cap=0:0
ed@w-ed:/tmp$ wget https://marc.info/?l=linux-kernel&m=158697302506474&q=mbox&OPENSSL_ia32cap=0xFFFFFFFFFFFFFFFF:0xFFFFFFFFFFFFFFFF
[1] 11378
[2] 11379
[3] 11380
ed@w-ed:/tmp$ --2020-04-20 07:24:11--  https://marc.info/?l=linux-kernel
Auflösen des Hostnamen »marc.info (marc.info)«... <IP_ADDRESS>, <IP_ADDRESS>
Verbindungsaufbau zu marc.info (marc.info)|<IP_ADDRESS>|:443... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 200 OK
Länge: nicht spezifiziert [text/html]
In »»index.html?l=linux-kernel«« speichern.

    [    <=>                                                                                ] 101.170      160KB/s   in 0,6s

2020-04-20 07:24:13 (160 KB/s) - »index.html?l=linux-kernel« gespeichert [101170]

[1]   Fertig                  wget https://marc.info/?l=linux-kernel
[2]-  Fertig                  m=158697302506474
[3]+  Fertig                  q=mbox
ed@w-ed:/tmp$ openssl dgst -sha256 index.html\?l\=linux-kernel
Ungültiger Maschinenbefehl (Speicherabzug geschrieben)
ed@w-ed:/tmp$ echo $OPENSSL_ia32cap
0xFFFFFFFFFFFFFFFF:0xFFFFFFFFFFFFFFFF
ed@w-ed:/tmp$

Sorry, I am unable to reach you on<EMAIL_ADDRESS>but this is really most important to be fixed.  It allows an attack
on any system that sets OPENSSL_ia32cap.
The discussion here is pretty much attempting to distract you
from the fact, that this is fixed in ubunu, but they keep the fix
secret.

Shouldn't it be:
wget 'https://marc.info/?l=linux-kernel&m=158697302506474&q=mbox&OPENSSL_ia32cap=0xFFFFFFFFFFFFFFFF:0xFFFFFFFFFFFFFFFF'

Without the quotes, you are wgetting something and setting m, q and OPENSSL_ia32cap to values.  m and q will be discarded since they are in sub-shells.  The OPENSSL_ia32cap is set.
If it was your intention to not include the quotes, it is user error.  We can't protect against user error.

The urgent label is for fixes to build breaking changes.  I don't think it applies here.

@paulidale you must be an NSA agent.  This is the proof.

Of course Paul Dale, is not @paulidale
Paul Dale is my friend, and he can ask Matthias who has my number.

Proof of what?  That a user error causes problems for OpenSSL?  That's not a surprise.
Try it with this command instead:
wget https://marc.info/?l=linux-kernel&m=158697302506474&OPENSSL_ia32cap=0xFFFFFFFFFFFFFFFF:0xFFFFFFFFFFFFFFFF&q=mbox

I've enabled shell syntax highlighting to indicate the special characters your shell is finding.  Each & is acting as a command separator like ; does.

Ordinary users don't even know what OPENSSL_ia32cap means.
That is vodoo for them, they are totally suprised by that nonsensical behavior.
Why do you think that is not a CVSS severity 9.0 bug ?

@openssl/omc please help.

The non-sensical behaviour is the shell's fault not OpenSSL's.  I also don't think that ordinary users run a Unix like system and they don't run commands from the shell.  Caveat emptor.

No, that bug in the shell was also planted by agents, as this openssl bug.

I am pretty sure the real target is the TOR browser, which depends on OpenSSL,
I broke it already once, and Matt fixed that, while I was too sick to do it myself.
I can do it again.

or what do you really want?

So, decipher this, Pauli Dale.  This is my last e-mail from 18.4.2020:
Hi Pauli,

On 4/17/20 6:43 AM, Dr Paul Dale wrote:
> Bernd,
>
> I didn’t find your photograph or birthday.  I didn’t spend a lot of time on it.
>
> Pauli
>

Okay, that is fine, because I had no idea if that is one of the results
that is hidden from me, when I do google from germany, but this means, that
the hidden result is not my picture or my birthday,

So they still belong to myself  and not google (no idea about facebook,
I am not on f.book, but lots of my family, but obviously they have forgotten
about me, becuase g+f=1. QED.

Now I have a another riddle for you  hope you enjoy riddles just as I do.
It is encrypted with AES, and you have the key already, I just added blabla
to the IV, I wonder if you are able to decrypt:

rFoiD81vVuipY0q3NHNF9vPnYTBAv19oVVw6kKSzJZNCz60YxvYguGuwP/t18y97
T9Y0LB8P3XXPtJX/Naywp7rFqQbMAmtlGXmdqKQ9QB1KLUSLjgk189WLaU7abDca
TVymWX01lJeV+FvuZT+Ojk4W3s/Ao6abx+W5QQALUf04agc4AdxQvnoWA1wAmfAx
aa4l5as1RBDjlAwsDF0NqiBburXf14RNM2PJMeHDALeSqoik1SI0xdwpGigaYES4
BSI+CLXZTyp02OFJq7sI3AMWmSiEWGMspR0o3BSU9Oesnec+4J08WNLQ4US2+PNU
s14+Y6CoiCQMkRuGvSrTw35de3PlYV4Yc4S/fzRiraS8AVgtiFdOazB8D0UoTp2R
S6f8+BHXvM7ROajcauq6fUiAJlsm+U2PXbpwMpYRsniywhSFR9C/IrcC4YensNbY
t9zTYfBB8AMWcTIwztq5+6wPvWi2dE6lPhsVPL7fMN1J5ixyob18F7JCwS2o6bal
IFlQ0+UgRvw9YTKPJWpimsKrmQuaul1iU5C20qaDT3zXGVCEmH3/US1Q9KMhj1yn
auKR/8fpjpr1tsLVmNRWLKUrBGRaP/O5pdWZo+gXypffXJMGcBwY7MRLf/u3ypc5
fyJOKE9TKOcTMM9tmdZuEE+MLF2caIC8zOEMsYiemx8Yv/kPiYgqmwFbMh03lQv6
1DyQGiKyXC9Ki7K0GacGwbodS5TXCH14hMQoFlaVm84kYcuHh05nzZuS4Whil90x
yPpuCRUu7DgQJME+N+52sWeYN16t+IUIHOH8N4roXajaaQnv82KAOQVP8S7KxjFm
4lxz+t+guqsojtg3h7RoS1TIyo8SKs4hHEjQderC6oXzF1KqbP+rFuj8bEI5Tk49
AIOTZPBtIhmJaoiAeGk0txqw3B3LecM7t43QCkZbzEjMmbB1gqEL7lbowkfKipXe
hfVoAbrB/LOYfgfiVuSvXYKcohoZHNY5KAShnGVVOeMLFwHMGWHEZWs8PA0K+dPZ
kgtverrIp0y24XKsxWKLWc1rkDAG+kfQ1GL0z6PKHEhDGt9PSkvSxaFGSoHN4jsS
2+wS02PAEPM82Oas8XHUf+uT9/uVHrrBKt/B32mTilSg3PDFOTrRPxNs2MA+gbMW
VDhaT+/iOB3gRyq8TByMExq6OyIa9Kurit+podHrik+ufR4DRgzkGfgEZ8sDzSNJ
BZXtt1esmSlfxntv5T/B0dStvc5sUYarA5gNvjWUDln8r3IZ3BCXItyBqr597WHV
sN/p+HgRHhKu5LNcnu8vl3Tj9bTlFt7gsIZUUSBoia7hWAZ+cTvnkcw1f2oeLEds
OrpdQDNof/Av7ZeoZh9Y7kiEiL2xaNHrTaqdsym/poCByIJE0sg1oSGWUPsQJbcv
9ugjQEyUZzFN32rewVy06iuk4Pn/Ol376wx0Kl+wZPErXyTIU8M1ArgneXzo7v6u
gnsh9RwRf/bgTzycCW7/3e0stvLqUBupN4ySggIUtRPNS4WJrKJsu6ODlxsdQUn/

If you need further hints feel free to ask

By the way, it is not signed, I will know if you received the
unmodified cipher text if you are able to send a reply to me,
and I will only be able to decrypt it,
if there was no man in the middle attack.

See you on Tuesday,
Bernd.

Bernd, this is simply a nonsense. If you can trick an user to use wget with a random unquoted URL with a shell, you can trick him to install a root kit for example. Setting OPENSSL_ia32cap is only a single random not-that-much evil thing that you can do via such broken command from unlimited numbers of other many more much more evil examples that one could invent.

So I think there are 2 ways to look at this:

Anything that can be used in an attack should be fixed
We don't see a way this can be exploited without being
vulnerable to other kind of attacks

You can argue that there are problems with the 2nd way of looking
at things:

An attacker might find a different way to look at things that
you currently can't think of
You might end up in a situation that where you don't fix one
thing because the other isn't fixed, and the other way around.

So I think that in general, as long as it's reasonable, we should
fix anything an attacker can use. Note that even after the fix,
an attacker will still be able to abuse it by making things
slower, but can no longer prevent the correct working.
That does not mean I consider this a security issue, just
something that should get fixed. And it should get fixed in master
first.

What does compile-time freezing mean?  I hope it doesn't mean that the build machine must exactly match the deployed machines.

I seem to remember @mattcaswell discussing this in last week's meeting.
It looks like an unnecessary change to me.

Hi everyone.
Is this issue security-related and will be handled as a vulnerability  ?
Regards,
W

No, it is not considered a security issue.

What does compile-time freezing mean?

You specify the CPU capabilities on the configure line.  Those capabilities are always used.

You specify the CPU capabilities on the configure line. Those capabilities are always used.

That could be an option, I suppose, but there is no way that should be the default.  It would prevent the current run-time checking that OpenSSL does to optimize the assembler code. I am sure any multi-platform provider (heck, even Stepping numbers within X86) would scream about this if they knew.

It's not default.  The use case is embedded devices where the capabilities are known and there is no point probing for them.

Thanks for the explanation, @paulidale  I missed where that was documented.  Can you point to it?

It's in the code at the moment.

This PR adds it, so it's documented in this PR.

So it's in the code as a comment (here? https://github.com/openssl/openssl/pull/11525/files#diff-aa4b8bc0c4623928e19882b06d2825dbR99) , and a note in run time manpage, with no description in the configuration description.  Ugh.

I just removed the urgent API as what is being discussed definitely does not fit into the criteria for the urgent treatment.

@richsalz

What does compile-time freezing mean? I hope it doesn't mean that the build machine must exactly match the deployed machines.

No, exactly opposite, the use case is embeded target and/or cross-complile settup
where the build machine has nothing in common with the target, and the target
is exactly defined.  Every part is exactly defined, each chip is fixed, and already
known.  There is no need to add assembler modules that will never run.
But the memory overhead of assembler modules is too high.   Therefore
one is often forced to use no-asm configurations.

even Stepping numbers within X86

And embedded target would not change stepping numbers without
thorough testing -- at least not if they are not insane.

Thank you @bernd-edlinger for your excellent description in https://github.com/openssl/openssl/pull/11525#issuecomment-618428973  This info should show up more prominently to users than just PR comments :)

@t8m

Bernd, this is simply a nonsense. If you can trick an user to use wget with a random unquoted URL

I can't help to wonder if you are trying to protect a back-door here?

Obviously it is not a problem by itself, but together with the undocumented
behaviour of the bash this makes it a vulnerabiltiy, maybe it would help
if I assign a CVE number for this one on my own?

This is not a security vulnerability in OpenSSL, therefore does not qualify for a CVE name

Fine. so we do not fix it?

oops, wrong button  :-/

Reading the conversation, it seems like after the discussion we changed the target of the PR.
It seems like it could be valuable to add a build feature that allows fixing the target capabilities at build time and ship only the code supported by the fixed capabilities with the library.
The potential scenario that could most benefit from this feature is (cross-)compiling for constrained-resources targets.
Being a new feature this should be in a PR targeting master, I suggest closing this PR and opening a dedicated one with a fitting description.
(I am not excluding that we can have a vote to then backport the feature to 1.1.1, but the process should be to get it approved and merged to master and then approve its backport)

No.

This PR is in a state where it requires action by @openssl/committers but the last update was 386 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 417 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 448 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 30 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 61 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 234 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 265 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 296 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 327 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 358 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 389 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 420 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 451 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 482 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 513 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 544 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 575 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 606 days ago

This PR is in a state where it requires action by @openssl/committers but the last update was 637 days ago

Closing as this is a feature - not for merging to 1.1.1.


Should suppressionFile work for all sub projects when specified in allProjects?

We have dependencyCheck configured in allProjects so that the format gets applied to all projects including the one created at the root level for dependencyCheckAggregate task. However, we have noticed that when suppressionFile is configured in the same place it does not apply the suppression to the sub projects or the aggregated result.
When the same value is set in subprojects block instead, the expected CVE's are removed. Is this a bug, by design, or some configuration error?
Our allProjects block is as follows:
allprojects {
  dependencyCheck {
    formats = ['CSV', 'HTML', 'JUNIT']
    suppressionFile = file("${rootDir}/config/dependency-check/suppressions.xml")
    analyzers {
      assemblyEnabled = false
    }
  }
}

We run ODP using ./gradlew clean dependencyCheckAggregate

We are seeing the same thing with maven using the latest version.  Ironically there is only one service (one pom.xml) file.  The reports are correctly generated but the suppressions are ignored.
     <plugin>         <groupId>org.owasp</groupId>         <artifactId>dependency-check-maven</artifactId>         <version>6.5.3</version>         <inherited>false</inherited>         <configuration>           <skipProvidedScope>true</skipProvidedScope>           <skipRuntimeScope>true</skipRuntimeScope>           <dataDirectory>c:/[Redacted Path]/depcheckdata/</dataDirectory>           <outputDirectory>c:/[Redacted Path]/tools/dependency/</outputDirectory>           <suppressionFiles>             <suppressionFile>c:\[Redacted Path]\project-suppressions.xml</suppressionFile>           </suppressionFiles>           <formats>             <format>html</format>             <format>json</format>           </formats>         </configuration>         <executions>           <execution>             <goals>               <goal>aggregate</goal>             </goals>           </execution>         </executions>       </plugin>
The debug output from maven shows the file is read but ignored.
21:51:36.0569802 - [399] - ${suppressionFile} 21:51:36.0569802 - [400] - ${suppressionFilePassword} 21:51:36.0579814 - [401] - ${suppressionFileServerId} 21:51:36.0579814 - [402] - ${suppressionFileUser} 21:51:36.0579814 - [403] -  21:51:36.0579814 - [404] - c:\[Redacted Path]\project-suppressions.xml${suppressionFiles}

same here


MicroBit V2: navigator.bluetooth.getDevices is not a function

CircuitPython version
adafruit-circuitpython-microbit_v2-en_US-7.3.3.combined.hex; microbit_v2

Code/REPL
code.circuitpython.org

Behavior
Uncaught (in promise) TypeError: navigator.bluetooth.getDevices is not a function

Argh: NetworkError: Connection failed for unknown reason.

Description

Additional information
No response

navigator.bluetooth.getDevices() is available only when the user enabled the flag "chrome://flags/#enable-web-bluetooth-new-permissions-backend". You can follow https://bugs.chromium.org/p/chromium/issues/detail?id=577953 progress to know when this feature will be enabled by default for all users.

That's correct, but there's code in place that should have detected and alerted the user. So a part of the issue is figuring out why that didn't happen.

I believe it's because there's no try/catch around these calls below:
https://github.com/circuitpython/web-editor/blob/57ddcbb4f5860ea345a3b17bc6ab2b4bd5a2a5b6/assets/js/workflows/ble.js#L66
https://github.com/circuitpython/web-editor/blob/57ddcbb4f5860ea345a3b17bc6ab2b4bd5a2a5b6/assets/js/workflows/ble.js#L242
This call below on the other hand is properly handled.
https://github.com/circuitpython/web-editor/blob/57ddcbb4f5860ea345a3b17bc6ab2b4bd5a2a5b6/assets/js/workflows/ble.js#L101 is caught

Yeah, it's probably a good idea to add that.


Default calendar: new date format parameter for a single timed event spanning multiple days

Feature Request.
I see a possible 'need' for a new date format parameter.
For a single, timed event, spanning multiple days.
E.g. spanningSingleEventDateFormat.
$ grep version /home/admin/MagicMirror/package.json
	"version": "2.30.0-develop",

[TestCal: TIMESPAN_HOLIDAY
November 25, 2024, 12:00 – November 27, 2024, 17:00]
BEGIN:VEVENT
DTSTART:20241125T110000Z
DTEND:20241127T160000Z
DTSTAMP:20241026T091719Z
<EMAIL_ADDRESS>CREATED:20241026T090035Z
LAST-MODIFIED:20241026T090035Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:TestCal: TIMESPAN_HOLIDAY
TRANSP:OPAQUE
END:VEVENT

For a single, timed event, spanning one night, like an overnight flight, it is not really necessary, but not really bad either.
[TestCal: OVERNIGHT_FLIGHT
December 2, 2024, 20:00 – December 3, 2024, 04:00]
BEGIN:VEVENT
DTSTART:20241202T190000Z
DTEND:20241203T030000Z
DTSTAMP:20241026T091719Z
<EMAIL_ADDRESS>CREATED:20241026T090148Z
LAST-MODIFIED:20241026T090215Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:TestCal: OVERNIGHT_FLIGHT
TRANSP:OPAQUE
END:VEVENT

The reasoning behind it is following:
For a 'normal', single, timed event I am (personally) not really interested in the full end date format (dateEndFormat).
That is why I normally use dateEndFormat: "HH:mm".
But for a single, timed event, spanning multiple days, the setting dateEndFormat: "ddd MMM D - HH:mm" makes more sense.
dateFormat: "ddd MMM D - HH:mm",
dateEndFormat: "HH:mm",
fullDayEventDateFormat: "ddd MMM D",

[good for normal events, 'bad' for spanning events]:

dateFormat: "ddd MMM D - HH:mm",
dateEndFormat: "ddd MMM D - HH:mm",
fullDayEventDateFormat: "ddd MMM D",

['bad' for normal events, good for spanning events]:

I hope I could explain it well enough.
And that it makes sense. :-)
Best regards,
E.J.

so , I saw. spanningSingleEventDateFormat
but maybe multiDayEventEndDateFormat .. just end as start was the same (ok) both above?

The name was just an example, multiDayEventEndDateFormat sounds good.
Do not understand this however:
“just end as start was the same (ok) both above”

in your example the start part of the event was the same in each example , so you want a new variable to control JUST  THE END formatting in this case

Ah, yes, hence your proposal for the variable name multiDayEventEndDateFormat.
With emphasis on the EndDateFormat.
In my first line I had to phrase it like this in order to make it clear at first glimpse:
a possible 'need' for a new end date format parameter.

so what should be its default value?
and its only when the start and end day are different? right

When I look at the existing default date formats,  I would propose: multiDayEventEndDateFormat: "Do.MMM, HH:mm".
I myself will probably use dateEndFormat: "HH:mm" and multiDayEventEndDateFormat: "ddd MMM D - HH:mm", but that is because I am European and not used to write Oct 29th, for instance.

and its only when the start and end day are different? right

Right, I did write:
For a single, timed event, spanning one night, like an overnight flight, it is not really necessary, but not really bad either.
Displaying, for example Oct 29th, 22:00-04:00 would be okay and understandable, but then where do you draw the line?
I looked at various outcomes and will drop this wish.

I looked at various outcomes and will drop this wish.

what does that mean? "will drop this wish"

I am afraid, that the more I write, the more confusing it gets :-)
The 'wish' to keep overnight events using the dateEndFormat: "HH:mm", like a flight from Oct 29th, 22:00 to Oct 30th, 02:00.
So it will display: Oct 29th, 22:00 - 02:00, iso Oct 29th, 22:00 - Oct 30th, 02:00.
This example, for me, would make sense and is understandable.
But then I looked at examples like:
Oct 29th, 12:00 - Oct 30th, 11:00 --> Oct 29th, 12:00 - 11:00 (can get confusing)
Oct 29th, 12:00 - Oct 30th, 14:00 --> Oct 29th, 12:00 - 14:00 (not correct)
So, please forget the above and introduce multiDayEventEndDateFormat: "Do.MMM, HH:mm" for an event with start and end time, where the end date differs from the start date.
Single day event with start and end time:

Multi day events with start and and time:

thus why we don't display end  in general
if you are IN the event time span, then you KNOW it
really only NEED to know when the next start is

Not quite sure I understand.
In general as in ALL events with start and end time?
Or are we still speaking of events with start and end time, where the end date differs from the start date?
Or are we only speaking of the 'overnight' events I mentioned?
Could you give a(n) example(s), please?

i was just saying in general
you REALLY only need to know the upcoming event start time.
once that time arrives , you are IN  the event, and don't need to know the start time anymore.
and it will end when it ends, as scheduled or not. regardless what the calendar on the wall says
the problems you are describing trying to decide which formatting to use, is why we don't display end of events by default. hard to get it right for everything

Okay, I think I get it, but need to digest it a bit.
Default setting for showEnd is true, for one, hence, dateEndFormat comes to play.
Let me try a bit and I will get back to you on this.

Question in between:
'showEnd: true,
is effective when
timeFormat: "relative",
??
I do not see the end time when using 'relative', unless that is wanted.
And briefly looked at the Issues, but cannot determine if this is in one of them.

showEnd is only used in absolute

I think timeFormat: "dateheaders" could be the solution for me:

Although there seems to be a counter issue with sliceMultiDayEvents:

For fullday spanning event is works fine:

And the empty lines are consuming too much space on a crammed display.
Would be nice to have them removed.

sliceMultiDayEvents set to false is not really usable.
Looks like there is nothing planned on Oct 31st, Nov 2nd and Nov 3rd.
But that looks to be independent from the timeFormat setting, perhaps I missed something here.

Sam,
I am thinking to close this feature request.
I would be forced to use timeFormat: "absolute" anyway.
I think I like timeFormat: "relative" more and there is an alternative with timeFormat: "dateheaders".
Better to spend time on other, real Issues.
Unless you say you are already busy with it and see possibilities.
I could open an Issue for sliceMultiDayEventsand one for the dateheaders spacing.

i had not done the coding. YOU can change spacing w css

@evroom
so, for grins, want to try  it out? see if it still might be worth it
git pull
then git checkout fixcaldates3
the code does this
dateFormat: absolute, assumes same day start/stop
						if (event.startDate !== event.endDate) {
							if(moment(event.startDate,"x").format("YYYYMMDD") === moment(event.endDate,"x").format("YYYYMMDD")){
								timeWrapper.innerHTML += "-";
								timeWrapper.innerHTML += CalendarUtils.capFirst(moment(event.endDate, "x").format(this.config.dateEndFormat));
							}
							else{
								timeWrapper.innerHTML += "-";
								timeWrapper.innerHTML += CalendarUtils.capFirst(moment(event.endDate, "x").format(this.config.multiDayEventEndDateFormat));
							}
						}

I have not submitted this change

all the log entries for the module_name.js are in the browser developers window
ctrl-shift-i
select the console tab  .. by 'convention' you can filter on message content, so each message would need to include the module name, but put a unique part of the module name in the filter field..
if you would likd that log joined with the console log you can use
MMM-Logging (and my enhancement of that for all the Log.xx types)
or https://github.com/MMRIZE/MMM-LogExt which does similar
formatting
the code says
if the DATE is the same for start and end use the dateFormat string
otherwise use the multiDaysDateEndFormat
I did NOT change HOW the two parts are cojoined
with no extra leading or trailing space (you could ADD a leading or trailing space in the format string)
start-end

no problem

I am submitting my calendar updates without this currently.  I think it needs more testing

Yes, I agree.
I still cannot find time to pursue it.
Thx for your efforts so far.


Populate the thumbnail field on a MIRO work

What is this PR trying to achieve?
Now we have models for Location and License, and some License objects (how they appear in the world tbc), let's start putting some data in them!
This patch only covers the transformer changes – changes to display logic in the API will be a separate patch. Merging is blocked on us deciding how to define Licenses, but stands as a standalone patch.
Related: #792.
Who is this change for?
The Experience team, who are planning to use thumbnails as a proxy for licenses on items.
Have the following been considered/are they needed?

[ ] Deployed new versions

Duplicate of #832.


Should tabbed code blocks allow an unclosed code block?

The commonmark spec allows an unclosed code block to extend to the end of the doc. I think we allowed this until #70, but didn't have a test for it?

Interesting. So what's the behavior now post-#70? Will it close the code block at the first line break? Or the next block component?

It won't match the block at all.
  ` ` `
  "will just be a regular code block"
  ` ` `
  ` ` `

  ` ` `
  tab 1
  ` ` `
  ` ` `
  tab 2
  ` ` `
  ` ` `
  Back to regular formatting

Updates, the second trailing-unclosed code block is now parsed as a code block, but not part of the tabs.


Does any know how to use buy in market price?

I can see it from here that there is MKT option for trade type. However, I was not able to place an order in market price. The way as follows didn't work
wb = webull()
<EMAIL_ADDRESS>'MyPass')
wb.get_trade_token('123456')
wb.place_order(stock='AAPL', action='BUY', orderType='MKT', qty=1, outsideRegularTradingHour=False)

all right, I figured it out myself:
wb = webull()
<EMAIL_ADDRESS>'MyPass')
wb.get_trade_token('123456')
wb.place_order(stock='AAPL', action='BUY', orderType='MKT', enforce='DAY', qty=1, outsideRegularTradingHour=False)

this works for me

does the hard-coded '123456' work for you?

nvm. I figured it's the trade pin. thought it was the password, as the api named.


add github and coinmarketcap to exports list

@vdegenne Why you want them in exports?

@VandeurenGlenn I'm using them in the front

@VandeurenGlenn I'm using them in the front

But then why we have a server?

@VandeurenGlenn I'm using them in the front

But then why we have a server?

Im just building a static list with asset information so you can reduce the amount of data the server send to front. This way I can just "connect" the id to this static list to retrieve information like description etc

@vdegenne if we do that the app will be down in minutes, especially if people actually use it

@VandeurenGlenn Please read my last comment...

@VandeurenGlenn I'm using them in the front

But then why we have a server?

Im just building a static list with asset information so you can reduce the amount of data the server send to front. This way I can just "connect" the id to this static list to retrieve information like description etc

That's not gonna work top 100 changes daily to hourly so gonna end with lot of storage not needed

@VandeurenGlenn I'm using them in the front

But then why we have a server?

Im just building a static list with asset information so you can reduce the amount of data the server send to front. This way I can just "connect" the id to this static list to retrieve information like description etc

That's not gonna work top 100 changes daily to hourly so gonna end with lot of storage not needed

Nah I will include like top 120 on a weekly basis just to be sure I have basic information. Things like description, slug etc, don't change daily.


PTX-2378 Add scale tests

Job passed: https://jenkins.portworx.co/job/Torpedo/job/scale-backup-job/25/

@stgleb just to make sure it won't break any non-backup scenario, could you please run a jenkins job https://jenkins.portworx.co/job/Torpedo/job/tp-dev-test/ using your image, make sure it succeeded at least with these tests SetupTeardown,AppTasksDown,AppScaleUpAndDown,VolumeDriverDown,VolumeDriverAppDown,VolumeDriverDownAttachedNode,VolumeUpdate,RebootOneNode and apps elasticsearch,mysql,postgres,sysbench,nginx-sharedv4,wordpress-sharedv4

@thiguetta yeah, I ma trying to do that,but quay is in error state. I'll launch tp-dev-test job ASAP.

job passed https://jenkins.portworx.co/job/Torpedo/job/scale-backup-job/62

Scale job test: https://jenkins.portworx.co/job/Torpedo/job/scale-backup-job/75/
Tp-dev-test: https://jenkins.portworx.co/job/Torpedo/job/tp-dev-test/641/


2.0 Various Speedup Improvemnets

I'll keep documentation about each one in here as I go along, but you can merge it in the morning and I'll open a new branch for more later

first notable fix: as Dialogic is initializing and loading the subsystems, and it gets to the Text subsystem, it was loading every character at that step to build the character names and a regex to replace them. There's a check later to see if you're actually using, but not at the beginning.
I'm not using that myself on this project. This change cut my game's initialization time (loading jsut a blank scene with a button and pressing that button then loads at timeline) from ~3000 ms, to ~1500 ms,

main slowdowns is in the actual timeline loader. each line of the timeline takes ~80 ms to go through each pass of the "while idx < len(lines)-1:" loop, which adds up quickly, with the timeline we're basing this on having 110 lines, adds up to a little over 8 seconds of load time, front loaded at the beginning
characters are loaded as it reads the timeline, if that line has a character in it. character loading is only adding about 10 ms, so that is happening pretty quickly.
rest of the routines break down like this, based on time outputs for each further loop:

Line 62 -> Line 69: ~5 ms
Line 69 -> Line 73: ~25 ms
LIne 73 -> Line 88: ~5 ms
Line 88 -> Line 62 of next loop: ~45 ms
the actual DialogicUtil.get_event_by_string() loader is taking some of the time, but its not the biggest part of the time, that's those last four lines. They break down as follows:
event_content.replace(): 2ms
event._load_from_string(): all the rest of this time
events.append(): 3ms
prev_was_opener = event.can_contain_events(): 3ms
it's late now and I need to sleep and my ability to comprehend now is waning, so I can't go further into it.  but looking at  DialogicUtil.get_event_by_string() it's constantly reloading files every single loop, which really should be loaded only once and referenced from there (since all of DialogicUtil is a static class file, for reference this was the same problem DTS had in 1.x to cause it's extensive slowdown that I had to rewrite it to be not a static class for). and the actual event processing in event._load_from_string() should be held off to runtime instead, running that with each new line as its being processed rather than runnig that all at the beginning first

this could probly overall be rewritten to be better, but this deferral takes care of = a big chunk of the speed problem.

Do you want me to merge this one?

you can merge it as is, i'll make a new branch and PR for any more changes from here


Scrolling getting hijacked in 7.2.0 (page won't scroll)

Everything works in Turbo 7.1.1, but after upgrading to 7.2.0, my pages are getting "locked" and won't scroll even though the content of the page is longer than the browser (Firefox and Chrome) window.  I'm using Turbo in a Rails app.
My scenario occurs when I'm submitting a form via a "modal dialog" that has it's own turbo-frame.  The form targets the "_top" frame, but "_top" is ignored when the response is a turbo_stream for processing a form error for example. ie. If there's a form error, then just the turbo-frame is updated via the stream, otherwise "_top" is targeted.
<turbo-frame id="modal" ...>
  <form data-turbo-frame="_top" ...>
  </form>
</turbo-frame>

After a successful update via the modal, "_top" is targeted and the full page is replaced.  At this point, the page no longer scrolls until I refresh the page.
I don't have an example app to show the issue unfortunately, but I'm not familiar enough with the Turbo code base to know under what circumstances Turbo would disable scrolling of the page.  Is there something specific I should be looking for that might get me back on track or is there in fact a new bug in Turbo causing this problem?

Hey @akaspick, thanks for opening this issue!
Without seeing the code it's kinda hard to guess. But I assume that the modal library you are using is causing the scroll lock.
Maybe you need to tell the modal library to release the scroll lock after you update the frame/when the element disappears from the DOM?

@marcoroth That actually sounds like a possible cause to the issue I'm having.  Even though I saw no issue in 7.1 and haven't made any changes to the modal related code, there's likely something I'm not handling correctly that 7.2 is now making apparent.
I'll dig further into the modal code to make sure it's releasing the scroll lock.  My first assumption was the turbo upgrade as that was the only thing that changed, but I think your assumption is correct and will put me back on track.

@marcoroth The modal library locking the scroll was indeed the issue. Big thanks.


When I run the demo I get the following error（ mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')）

My DEMO:
`from mlx_lm import load, generate
model, tokenizer = load("mlx-community/deepseek-coder-1.3b-instruct-mlx")
response = generate(model, tokenizer, prompt="hello", verbose=True)
`
ERROR:
Traceback (most recent call last):   File "/Users/11103926/PycharmProjects/pythonProject/main.py", line 1, in <module>     from mlx_lm import load, generate   File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mlx_lm/__init__.py", line 1, in <module>     from .convert import convert   File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mlx_lm/convert.py", line 9, in <module>     import mlx.core as mx ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mlx/core.cpython-311-darwin.so, 0x0002): tried: '/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mlx/core.cpython-311-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/System/Volumes/Preboot/Cryptexes/OS/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mlx/core.cpython-311-darwin.so' (no such file), '/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mlx/core.cpython-311-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))
MY ENVIRONMENT：
Apple M2

It looks like you're environment wants x86 which means some critical part of your setup is not native.
Could you check python -c "import platform; print(platform.processor())"?
Also how did you install mlx? What version? python -c "import mlx.core; print(mlx.core.__version__)"
What MacOS are you on?

I think I know the reason, because my pycharm does not use native python.
Thank you very much！


add codecov badge

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@4b61c32). Click here to learn what that means.
Patch has no changes to coverable lines.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@           Coverage Diff           @@
##             main      #13   +/-   ##
=======================================
  Coverage        ?   93.33%
=======================================
  Files           ?        4
  Lines           ?       15
  Branches        ?        0
=======================================
  Hits            ?       14
  Misses          ?        1
  Partials        ?        0

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


[Event Request] Table 81 - Gen. Journal Line - SetJournalLineFieldsFromApplication

Could you please create the following Integration events in Table 81 "Gen. Journal Line", in function SetJournalLineFieldsFromApplication?
[Scope('OnPrem')]
procedure SetJournalLineFieldsFromApplication()
var
    AccType: Option "G/L Account",Customer,Vendor,"Bank Account","Fixed Asset","IC Partner",Employee;
    AccNo: Code[20];
begin
    "Exported to Payment File" := false;
    GetAccTypeAndNo(Rec, AccType, AccNo);
    case AccType of
        AccType::Customer:
            if "Applies-to ID" <> '' then begin
                if FindFirstCustLedgEntryWithAppliesToID(AccNo, "Applies-to ID") then begin
                    OnSetJournalLineFieldsFromApplicationOnAfterFindFirstCustLedgEntryWithAppliesToID(Rec, CustLedgEntry);
                    CustLedgEntry.SetRange("Exported to Payment File", true);
                    "Exported to Payment File" := CustLedgEntry.FindFirst;
                end
            end else
                if "Applies-to Doc. No." <> '' then
                    if FindFirstCustLedgEntryWithAppliesToDocNo(AccNo, "Applies-to Doc. No.") then begin
                        // >>>>>>>
                        OnSetJournalLineFieldsFromApplicationOnAfterFindFirstCustLedgEntryWithAppliesToDocNo(Rec, CustLedgEntry);
                        // <<<<<<<
                        "Exported to Payment File" := CustLedgEntry."Exported to Payment File";
                        "Applies-to Ext. Doc. No." := CustLedgEntry."External Document No.";
                    end;
        AccType::Vendor:
            if "Applies-to ID" <> '' then begin
                if FindFirstVendLedgEntryWithAppliesToID(AccNo, "Applies-to ID") then begin
                    OnSetJournalLineFieldsFromApplicationOnAfterFindFirstVendLedgEntryWithAppliesToID(Rec, VendLedgEntry);
                    VendLedgEntry.SetRange("Exported to Payment File", true);
                    "Exported to Payment File" := VendLedgEntry.FindFirst;
                end
            end else
                if "Applies-to Doc. No." <> '' then
                    if FindFirstVendLedgEntryWithAppliesToDocNo(AccNo, "Applies-to Doc. No.") then begin
                        // >>>>>>>
                        OnSetJournalLineFieldsFromApplicationOnAfterFindFirstVendLedgEntryWithAppliesToDocNo(Rec, VendLedgEntry);
                        // <<<<<<<
                        "Exported to Payment File" := VendLedgEntry."Exported to Payment File";
                        "Applies-to Ext. Doc. No." := VendLedgEntry."External Document No.";
                    end;
....

Event signatures:
[IntegrationEvent(false, false)]
local procedure OnSetJournalLineFieldsFromApplicationOnAfterFindFirstCustLedgEntryWithAppliesToDocNo(var GenJournalLine: Record "Gen. Journal Line"; CustLedgEntry: Record "Cust. Ledger Entry");
begin
end;

[IntegrationEvent(false, false)]
local procedure OnSetJournalLineFieldsFromApplicationOnAfterFindFirstVendLedgEntryWithAppliesToDocNo(var GenJournalLine: Record "Gen. Journal Line"; VendLedgEntry: Record "Vendor Ledger Entry");
begin
end;

The events were previously confirmed:
https://github.com/microsoft/ALAppExtensions/issues/4820
But they are only partially available in latest CU:
https://bcartifacts.azureedge.net/onprem/16.5.15897.15953/de
We need to copy values from the Cust/Vend Ledger Entry to General Journal.
We need to know exact CV Ledger Entry.
We cannot use existing event OnAfterSetJournalLineFieldsFromApplication, because we are not able to find exact CV Ledger Entry: the algorithm of finding the CV Ledger Entry is hidden in local procedure and has unknown quantity of event subscribers (e.g. to event OnFindFirstCustLedgEntryWithAppliesToDocNoOnAfterSetFilters).
The "Document No." is not unique for Payments and Refunds therefore if any subscriber exists which changes the default logic of finding the entry we are not able to find the same entry using existing events.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


JSON token file search + config command

What
The tokens files (colors, textStyles, shadows, and gradients) may now be in workspace subdirectories. We also allow *.colors.json, etc. So core.colors.json is valid. Currently we only allow one of each kind of file, and it's a compiler error if there are 0 or 2 of any of them. We don't traverse into node_modules. The new project template places these files into a foundation directory. The material-design example project has been updated to follow the same pattern.
This also introduces a compiler command, config, that will print out the config used by the compiler internally. E.g:
$ node src/main.bs.js config ../../examples/material-design | json_pp
{
   "paths" : {
      "colors" : "../../examples/material-design/foundation/colors.json",
      "shadows" : "../../examples/material-design/foundation/shadows.json",
      "textStyles" : "../../examples/material-design/foundation/textStyles.json",
      "components" : [
         "../../examples/material-design/components/elements/Card.component",
         "../../examples/material-design/components/elements/ListItem.component",
         "../../examples/material-design/components/screens/Team.component"
      ],
      "workspace" : "../../examples/material-design"
   },
   "version" : "0.5.2"
}

@mathieudutour

I just published<EMAIL_ADDRESS>with these changes


'everywhere' model does not create default color models in created PPD when IPP printer response is insufficient

Hi,
I tried it only with my HP LaserJet printer (monochrome) at home and with Canon ImageRunner (color and monochrome) in our office, but ppd generator did not create ppd with values similar to https://www.cups.org/doc/ppd-compiler.html#COLOR .
This issue causes the user is not able to select color mode in print dialog.
Here is the ppd of canon printer created by 'lpadmin -p printer -v uri -m everywhere -E'
canon.ppd.txt and result of get-printer-attributes request
get-printer-attributes.log.txt .

I've got a similar issue - when choosing "IPP everywhere" while adding Canon MF645Cx through Cups web UI, the generated PDD has only ColorModel RGB, no Gray/B&W.

@bocekm Actually it is printer firmware issue (at least in my case) - the printer does not answer with fully usable data for preferred keyword.
ppdgenerator has sequence of keywords for color models sorted by priority  - urf-supported, pwg-raster-document-type-supported, print-color-mode-supported, output-mode-supported - if one is missing, it tries next one.
In my case the printer reports only srgb_8 for pwg-raster-document-type-supported. All usable color models are in print-color-mode-supported.
The solution could be validating the data after deciding which keyword will be used - and if it does not provide at least default values, move to other one.

Fixed in OpenPrinting CUPS.


Standalone build doesn't work

I'm trying to build this following the instructions of the README.md.
~/src/Firmware/src/lib/ecl/build
[127] % make
[  8%] Building CXX object CMakeFiles/ecl.dir/estimator_interface.cpp.o
In file included from /home/julianoes/src/Firmware/src/lib/ecl/EKF/geo.h:49:0,
                 from /home/julianoes/src/Firmware/src/lib/ecl/EKF/estimator_interface.h:45,
                 from /home/julianoes/src/Firmware/src/lib/ecl/EKF/estimator_interface.cpp:46:
/home/julianoes/src/Firmware/src/lib/ecl/EKF/mathlib.h:44:23: fatal error: Eigen/Dense: No such file or directory
compilation terminated.
CMakeFiles/ecl.dir/build.make:62: recipe for target 'CMakeFiles/ecl.dir/estimator_interface.cpp.o' failed
make[2]: *** [CMakeFiles/ecl.dir/estimator_interface.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/ecl.dir/all' failed
make[1]: *** [CMakeFiles/ecl.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

This is on Ubuntu 16.04.

Hang on, I might have to read the instructions more carefully.

No, the Eigen3 path is hard-coded for Mac. A potential fix is in #114.

Hi, I had this trouble in another project after upgrading to 16.04 as well.  I had to add symbolic links in the following manner:
cd /usr/include/
sudo ln -sf eigen3/Eigen Eigen
sudo ln -sf eigen3/unsupported unsupported

This fixed the issue for me in my other projects this week, (also, I had encountered this issue previously back in Ubuntu 13.04 and 13.10).  I hope this might help.

@mcsauder: thanks for the comment. I prefer not having to do symlinking and using cmake's FindEigen3 to look for it.
See how it's done in #114. Does that work for you?

Hi @julianoes,
I agree with your sentiment on avoiding sym links, I only employ them as a last resort.  Unfortunately, I already have FIND_PACKAGE(Eigen3) in the top level CMakeLists.txt file for this and two other projects using Eigen that began failing compile after the upgrade to 16.04.  :/
As an additional detail that might be worth investigating, if Eigen is installed in the typical manner through apt-get it will install to the ~/usr/include/eigen3 directory, however if you clone Eigen from the source repo and execute a make install, (without altering the default install directory), it will install to your ~/usr/local/include/ directory.  On my machine, with Eigen installed to the ~/usr/local/include/eigen3/... directory, my projects will compile without the sym links, however they will not compile without the sym links when Eigen is installed only in the /usr/include/eigen3 directory, even with FIND_PACKAGE(Eigen3) is called out in the top level CMakelists.txt file and even if I have used apt-get to remove Eigen and re-installed it.
At the moment I am contemplating a fresh install of 16.04 to see if it behaves differently than the upgrade from 15.10.  I will let you know if I get that accomplished and what results after a clean install.  Hopefully a bit of this is some use to you as well.
-Mark

I think it is common practice to have the package from the distribution in /usr/include and install libraries compiled/downloaded yourself in /usr/local/include. I would also guess that FIND_PACKAGE(Eigen3) should check both paths.
It works fine for me on a fresh 16.04 with libeigen3-dev installed with apt-get.
It shows up like this:
locate eigen3/Eigen/Dense
/usr/include/eigen3/Eigen/Dense

I think you should be able to fix it without re-installing everything.

Hi @julianoes,
I just wanted to report back that a new install of Ubuntu 16.04 resolved the issue of not being able to find eigen, so all of my machines are behaving correctly now without symbolic links.
I have no idea what error existed on my machine, but all is well now.  Thanks for all of the follow-up and advice!
-Mark

@mcsauder: nice, thanks for the heads-up!

So where do we stand with this issue now?

Yep sorry fixed with #114.


Possible bug when instantiating multi RNN cell in PTB LSTM model

Note sure whether this is a bug, since TensorFlow API is unclear on this. Would like someone more familiar with TensorFlow to investigate.
The possible bug is in file tensorflow/models/rnn/ptb/ptb_word_lm.py on line 115. The line reads:
cell = tf.nn.rnn_cell.MultiRNNCell([lstm_cell] * config.num_layers, state_is_tuple=True)
According to the API reference, the constructor for MultiRNNCell is:
tf.nn.rnn_cell.MultiRNNCell.init(cells, state_is_tuple=True)
where
cells: list of RNNCells that will be composed in this order.
The following notation:
[lstm_cell] * config.num_layers
will create a list of size config.num_layers, where each element in the list is a reference to the same object lstm_cell. This potentially means that if we modify one layer of "cell", we will also be modifying all the other layers. Is this what we want?

init is the Python constructor. I'm confused by your question.

Ah I see.  Yes in this case we want the same cell for each layer.  Reach layer will nevertheless receive it's own parameters, because parameters are not tied to the layer object.


Any trained result that match the paper?

Hi,
Is there any  trained result that match the paper?
Best,
zmonoid

+1

I trained 150 epoch using default config, and got 58.8% must worser than 68.0% from enas excepted performance

I trained 150 epoch using default config, and got 58.8% must worser than 68.0% from enas excepted performance
In this implementation, aux_head is not used. This could be a potential reason

I  read   some  paper  published   recently ,   it  seems   that  ENAS   is  a  little  unstable,  the  revolution   of  AutoMl  is  far  more  than   accomplished .

Currently I don't have the computation resource to reproduce the result. But in my previous experiment, the final result (training the searched architecture using the official TensorFlow implementation) was on par with the paper.

I not really understand the implementation of weight sharing.Could you please give me some tips?


Fix FelaDOM casing

Description
Fix FelaDOM casing to be consistent with previous versions that had UMD bundles
Example
N/A
Packages

fela-dom

Versioning
Patch
Checklist
Quality Assurance

You can also run yarn run check to run all 4 commands at once.

[ x ] The code was formatted using Prettier (yarn run format)
[ x ] The code has no linting errors (yarn run lint)
[ x ] All tests are passing (yarn run test)
[ x ] There are no flow-type errors (yarn run flow)

Changes
If one of the following checks doesn't make sense due to the type of PR, just check them.

[ x ] Tests have been added/updated
[ x ] Documentation has been added/updated
[ x ] My changes have proper flow-types

Thanks for the PR, haven't noticed we changed alignment here.

Thanks for the PR, haven't noticed we changed alignment here.

Took me 3 PR's to get it right 😅 (#773, #805)


DotnetFinder now uses DOTNET_ROOT and hostfxr_resolver will read from editor settings for which dotnet executable to use.

hostfxr_resolver.cpp was already supporting the enviroment variable lookup for the dotnet executable (though it has the more specific and extensive architecture lookup as well, I only implemented the base version), so I brought that functionality to the c# side which is one of the existing c# convention for how to get which dotnet version to use.
While discussing the issue with @raulsntos, they proposed there were some cases on mac that would be issues with using environment variables (I'm building the editor myself, so I dont have the sandbox issue) and that there was a separate proposal to use a editor settings for the same purpose. Since I could see how that would be useful and replace my use case, I'm implemented that version as well.
Fixes Issue: https://github.com/godotengine/godot/issues/97501
Implements Proposal: https://github.com/godotengine/godot-proposals/issues/1941
Let me know if the editor settings should be named differently or I need to expand the environment variables lookups to be the more specific lookups based on architecture to get this into the engine.

I'm making a pr on the real repo.


[style]: Improve UI of the What our Member says about us section.

What's the style idea?
I would like to improve the ui of  What our Member says about us section to make it more attractive by adding some cool effects and also by adjusting the existing css.
So,please assign this issue to me under gssoc'23.
Add screenshots

Code of Conduct

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

How do you plan on improving the UI?

How do you plan on improving the UI?

I would like  to add some hover effects and box-shadows also would like to adjust the css like margin, padding, etc.


bv_qt.sh patch for X11 lib location  wrong on some linux systems

Describe the bug
From SRE 282, customer running linux Mint, and X11 lib location is /usr/lib/x86_64-linux-gnu, but our patches for qt's linux-g++-64/qmake.conf specifies /usr/lib64 as location for X11 lib.
Do we need a way to query the system for X11 location and apply different patches based on location?
Or is there a different way to tell Qt where to search for X11?
Desktop

OS and version: linux Mint
VisIt Version: 3.2.0

We should see what newer versions of Qt are doing to handle this and follow what they are doing.


Order list view Buy/Sell

I don't think the BUY and SELL text really has much relevance here, it just adds mental complexity.
All the information required is shown but the icons and amounts, it doesn't really matter if they were buying and selling at the time of creation.

yeah agreed. I'll take this out.


[hotfix][docs]Fixed some typos of docs.

What is the purpose of the change

Fixed some typos of docs.

Brief change log

Fixed some typos of docs.

Verifying this change

This change is a trivial rework / code cleanup without any test coverage.

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (yes / no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (yes / no)
The serializers: (yes / no / don't know)
The runtime per-record code paths (performance sensitive): (yes / no / don't know)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: (yes / no / don't know)
The S3 file system connector: (yes / no / don't know)

Documentation

Does this pull request introduce a new feature? (yes / no)
If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)

@MartijnVisser , Sorry to bother you again, can you help me review this pr? Thank you.

@flinkbot run azure


Reflection Issue since release 3.23.1 with Quarkus native build

Expected behavior:
The Quarkus project should build successfully with reddisson-quarkus-30 version 3.23.1, similar to the successful build with version 3.23.0.
Actual behavior
When using reddisson-quarkus-30 version 3.23.1, the build process fails with the following error:
Fatal error: com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing org.redisson.codec.LZ4Codec.<init>(LZ4Codec.java:54)
Parsing context:
   at com.oracle.svm.core.code.FactoryMethodHolder.LZ4Codec_constructor_70a6def4cf8693d59044a1e0062043cc0dbdf52f(generated:0)
   at static root method.(Unknown Source)

        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.parsingError(AnalysisError.java:149)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:178)
        ... 15 more
Caused by: org.graalvm.compiler.java.BytecodeParser$BytecodeParserError: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: net.jpountz.lz4.LZ4Factory. This error is reported at image build time because class org.redisson.codec.LZ4Codec is registered for linking at image build time by command line
        at parsing org.redisson.codec.LZ4Codec.<init>(LZ4Codec.java:49)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.throwParserError(BytecodeParser.java:2536)
        ... 46 more
Caused by: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: net.jpountz.lz4.LZ4Factory. This error is reported at image build time because class org.redisson.codec.LZ4Codec is registered for linking at image build time by command line
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.reportUnresolvedElement(SharedGraphBuilderPhase.java:521)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.reportUnresolvedElement(SharedGraphBuilderPhase.java:515)
        ... 51 more

Fatal error: com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing com.oracle.svm.core.code.FactoryMethodHolder.LZ4Codec_constructor_ffae5131a21c6eeaaa34cb8c7609e26d6571086f(generated:0)
Parsing context:
   at static root method.(Unknown Source)

        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.parsingError(AnalysisError.java:149)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:178)
        ... 13 more
Caused by: com.oracle.graal.pointsto.util.AnalysisError: parsing had failed in another thread
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.shouldNotReachHere(AnalysisError.java:173)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.meta.AnalysisMethod.ensureGraphParsedHelper(AnalysisMethod.java:795)
        ... 27 more
Caused by: org.graalvm.compiler.java.BytecodeParser$BytecodeParserError: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: net.jpountz.lz4.LZ4Factory. This error is reported at image build time because class org.redisson.codec.LZ4Codec is registered for linking at image build time by command line
        at parsing org.redisson.codec.LZ4Codec.<init>(LZ4Codec.java:49)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.throwParserError(BytecodeParser.java:2536)
        ... 46 more
Caused by: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: net.jpountz.lz4.LZ4Factory. This error is reported at image build time because class org.redisson.codec.LZ4Codec is registered for linking at image build time by command line
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.reportUnresolvedElement(SharedGraphBuilderPhase.java:521)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.reportUnresolvedElement(SharedGraphBuilderPhase.java:515)
        ... 51 more

Steps to reproduce

Create a Quarkus project with version 3.2.2.Final.
Set the reddisson-quarkus-30 version in the pom.xml to 3.23.1.

<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson-quarkus-30</artifactId>
    <version>3.23.1</version>
</dependency>

Build the project using one of those commands:

mvn install -Dnative -DskipTests -Dquarkus.native.container-build=true

quarkus build --native "-DskipTests=true" "-Dquarkus.native.container-build=true"

Observe the build failure due to the reported error.

Redisson version
redisson-quarkus-30 version 3.23.1
Additional information:

The build process works without any issues when using reddisson-quarkus-30 version 3.23.0, indicating that the problem might be specific to version 3.23.1.
The error appears to be related to unresolved types during parsing, specifically concerning net.jpountz.lz4.LZ4Factory.

System information:

Java version: 17.0.8+7, vendor version: Mandrel-<IP_ADDRESS>-Final
Graal compiler: optimization level: 2, target machine: x86-64-v3
C compiler: gcc (redhat, x86_64, 8.5.0)

Adding LZ4
When I add lz4-java to my dependecies...
<dependency>
    <groupId>org.lz4</groupId>
    <artifactId>lz4-java</artifactId>
    <version>1.8.0</version>
</dependency>

... I get a similar error as before but with Snappy:
Fatal error: com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing org.redisson.codec.SnappyCodecV2$2.encode(SnappyCodecV2.java:83)
Parsing context:
   at org.redisson.command.CommandAsyncService.encodeMapKey(CommandAsyncService.java:651)
   ...
   at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_3148eece06270530b6e0d4d60311411342c82698(generated:0)
   at static root method.(Unknown Source)

        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.parsingError(AnalysisError.java:149)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:178)
        ... 13 more
Caused by: org.graalvm.compiler.java.BytecodeParser$BytecodeParserError: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.xerial.snappy.Snappy. Th error is reported at image build time because class org.redisson.codec.SnappyCodecV2$2 is registered for linking at image build time by command line
        at parsing org.redisson.codec.SnappyCodecV2$2.encode(SnappyCodecV2.java:87)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.throwParserError(BytecodeParser.java:2536)
        ... 34 more
Caused by: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved type during parsing: org.xerial.snappy.Snappy. This error is reported at image build time because class org.redson.codec.SnappyCodecV2$2 is registered for linking at image build time by command line
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.reportUnresolvedElement(SharedGraphBuilderPhase.java:521)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.reportUnresolvedElement(SharedGraphBuilderPhase.java:515)
        ... 39 more

Adding Snappy
So I added snappy-java to my depndencies
<dependency>
    <groupId>org.xerial.snappy</groupId>
    <artifactId>snappy-java</artifactId>
    <version><IP_ADDRESS></version>
</dependency>

And I got a different kind of error
Error: Classes that should be initialized at run time got initialized during image building:
 io.netty.buffer.ByteBufAllocator the class was requested to be initialized at run time (from 'META-INF/native-image/io.netty/netty-buffer/native-image.properties' in 'file:///project/lib/io.netty.netty-buffer-1.94.Final.jar' with 'io.netty.buffer.ByteBufAllocator' and from feature io.quarkus.runner.Feature.beforeAnalysis with 'ByteBufAllocator.class'). To see why io.netty.buffer.ByteBufAllocator got initialized use trace-class-initialization=io.netty.buffer.ByteBufAllocator
io.netty.buffer.PooledByteBufAllocator the class was requested to be initialized at run time (from 'META-INF/native-image/io.netty/netty-buffer/native-image.properties' in 'file:///project/lib/io.netty.netty-buer-4.1.94.Final.jar' with 'io.netty.buffer.PooledByteBufAllocator' and from feature io.quarkus.runner.Feature.beforeAnalysis with 'PooledByteBufAllocator.class'). To see why io.netty.buffer.PooledByteBufAllocat got initialized use --trace-class-initialization=io.netty.buffer.PooledByteBufAllocator
io.netty.buffer.AbstractReferenceCountedByteBuf the class was requested to be initialized at run time (from 'META-INF/native-image/io.netty/netty-buffer/native-image.properties' in 'file:///project/lib/io.nettyetty-buffer-4.1.94.Final.jar' with 'io.netty.buffer.AbstractReferenceCountedByteBuf'). To see why io.netty.buffer.AbstractReferenceCountedByteBuf got initialized use --trace-class-initialization=io.netty.bufferbstractReferenceCountedByteBuf
io.netty.buffer.PooledUnsafeDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.PooledUnsafeDirectByteBufot initialized use --trace-class-initialization=io.netty.buffer.PooledUnsafeDirectByteBuf
io.netty.buffer.PooledByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.PooledByteBuf got initialized use --tce-class-initialization=io.netty.buffer.PooledByteBuf
io.netty.buffer.ByteBufUtil the class was requested to be initialized at run time (from 'META-INF/native-image/io.netty/netty-buffer/native-image.properties' in 'file:///project/lib/io.netty.netty-buffer-4.1.94inal.jar' with 'io.netty.buffer.ByteBufUtil' and from feature io.quarkus.runner.Feature.beforeAnalysis with 'ByteBufUtil.class'). To see why io.netty.buffer.ByteBufUtil got initialized use --trace-class-initialation=io.netty.buffer.ByteBufUtil
To see how the classes got initialized, use --trace-class-initialization=io.netty.buffer.ByteBufAllocator,io.netty.buffer.PooledByteBufAllocator,io.netty.buffer.AbstractReferenceCountedByteBuf,io.netty.buffer.PledUnsafeDirectByteBuf,io.netty.buffer.PooledByteBuf,io.netty.buffer.ByteBufUtil
com.oracle.svm.core.util.UserError$UserException: Classes that should be initialized at run time got initialized during image building:
 io.netty.buffer.ByteBufAllocator the class was requested to be initialized at run time (from 'META-INF/native-image/io.netty/netty-buffer/native-image.properties' in 'file:///project/lib/io.netty.netty-buffer-1.94.Final.jar' with 'io.netty.buffer.ByteBufAllocator' and from feature io.quarkus.runner.Feature.beforeAnalysis with 'ByteBufAllocator.class'). To see why io.netty.buffer.ByteBufAllocator got initialized use trace-class-initialization=io.netty.buffer.ByteBufAllocator
io.netty.buffer.PooledByteBufAllocator the class was requested to be initialized at run time (from 'META-INF/native-image/io.netty/netty-buffer/native-image.properties' in 'file:///project/lib/io.netty.netty-buer-4.1.94.Final.jar' with 'io.netty.buffer.PooledByteBufAllocator' and from feature io.quarkus.runner.Feature.beforeAnalysis with 'PooledByteBufAllocator.class'). To see why io.netty.buffer.PooledByteBufAllocat got initialized use --trace-class-initialization=io.netty.buffer.PooledByteBufAllocator
io.netty.buffer.AbstractReferenceCountedByteBuf the class was requested to be initialized at run time (from 'META-INF/native-image/io.netty/netty-buffer/native-image.properties' in 'file:///project/lib/io.nettyetty-buffer-4.1.94.Final.jar' with 'io.netty.buffer.AbstractReferenceCountedByteBuf'). To see why io.netty.buffer.AbstractReferenceCountedByteBuf got initialized use --trace-class-initialization=io.netty.bufferbstractReferenceCountedByteBuf
io.netty.buffer.PooledUnsafeDirectByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.PooledUnsafeDirectByteBufot initialized use --trace-class-initialization=io.netty.buffer.PooledUnsafeDirectByteBuf
io.netty.buffer.PooledByteBuf the class was requested to be initialized at run time (subtype of io.netty.buffer.AbstractReferenceCountedByteBuf). To see why io.netty.buffer.PooledByteBuf got initialized use --tce-class-initialization=io.netty.buffer.PooledByteBuf
io.netty.buffer.ByteBufUtil the class was requested to be initialized at run time (from 'META-INF/native-image/io.netty/netty-buffer/native-image.properties' in 'file:///project/lib/io.netty.netty-buffer-4.1.94inal.jar' with 'io.netty.buffer.ByteBufUtil' and from feature io.quarkus.runner.Feature.beforeAnalysis with 'ByteBufUtil.class'). To see why io.netty.buffer.ByteBufUtil got initialized use --trace-class-initialation=io.netty.buffer.ByteBufUtil
To see how the classes got initialized, use --trace-class-initialization=io.netty.buffer.ByteBufAllocator,io.netty.buffer.PooledByteBufAllocator,io.netty.buffer.AbstractReferenceCountedByteBuf,io.netty.buffer.PledUnsafeDirectByteBuf,io.netty.buffer.PooledByteBuf,io.netty.buffer.ByteBufUtil
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.UserError.abort(UserError.java:73)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ProvenSafeClassInitializationSupport.checkDelayedInitialization(ProvenSafeClassInitializationSupport.java:277)
        ... 12 more

Conclusion
I don't want to have countless unused dependencies attached to my project.

Fixed. Thanks for report

I tried the new version 3.23.3 and the errors were fixed. Thanks a lot!


Improve readibility of list results

The UI renders the response from ask-astro pipeline as a markdown.
For list items, the UI is able to render the list properly when the
list items are separated by \n\n in the backend response, however
when the list items are separated by a single \n, it fails to render
them correctly. It's weird how OpenAI completion response at times
adds a double new line chars and at times adds a single new line
char to separate list items. However, I am adding a transform to
convert single new line chars to double and when the response
already contains two new line chars, not adding any extra new line char.
closes: #215

Before

After


feat: Add role description variable for assumable role with oidc

Description
Add "role_description" variable for the "assumable-role-with-oidc" module
Motivation and Context
During a personal project using this excellent module I noticed that the feature to add a description for an oidc role was missing.
Breaking Changes
Nothing breaks, the change is minor. The parts that were added were copy-pasted from the "assumable-role" module.
How Has This Been Tested?
The change in the module was tested against a role that had no description before and one was added via this branch, and then the description was changed through the same method. No issues detected.

Thanks, @Kostavro !
v2.22.0 has been just released.

You're welcome &thank you for your dedication @antonbabenko !


UX: Offer a hint during decryption when the file was corrupted by PowerShell

https://github.com/FiloSottile/age/commit/34118023094cf02fc68c84968df92a7495ce17e9

See https://github.com/FiloSottile/age/issues/290 for various ways to reproduce the problem in age.


do you have more api usage ?

I wanted to ask can we store images greyscale / black and white etc ?

Not planned. I thought about such features like pdf generating, greyscale etc.. But the purpose of this plugin is just the documentscanning. You can use other plugins to achieve this


[HOLD for payment 2023-10-18] Improve memoization if LHN by handling the isFocused prop better

Problem
Transition between chats (reports), seems to be quite laggy. In this document, we try to investigate the issue and come up with possible solution.
Steps to reproduce

Load two chats
Navigate from one to another

Recording
https://github.com/Expensify/App/assets/62747088/85bb45e8-e394-4f61-bc8a-5fe57361ef77
Investigations
It looks like there is a big overhead in form of rendering LHN’s list of OptionRowLHNData components.

In the profiling trace we see that every item in the list is re-rendered. Each re-render takes up to 5ms to complete, which with current list size can significantly throttle rendering.
The re-rendering is caused by change in currentReportID state, which is provided by withCurrentReportID HOC. currentReportID prop is used in  OptionRowLHNData in one place, to find out wether component should be focused or not:
const isFocused = !shouldDisableFocusOptions && currentReportID === reportID;

The isFocused is then directly passed down into child.
The change in currentReportID breaks memoization, causing heavy re-render of each item.
Solutions
Wrapper component
As currentReportID is only used once and isFocused is a boolean flag, we can extract this logic into separate wrapper component and refactor OptionRowLHNData to receive primitive isFocused prop, which will not break memoization.

By applying these changes, we were able to shrink down the rendering time of List component to ~100ms, which will be even more significant as number of list items grows. The rest of rendering overhead seems to be related to different components, Report itself etc.
The rendering time should be now only merely related to list size, as it only triggers one heavy re-render.
Wrapper component would look more or less like this:
function OptionRowLHNDataWrapper({currentReportID, shouldDisableFocusOptions, ...props}) {
    const isFocused = !shouldDisableFocusOptions && currentReportID === props.reportID;
    return (
        <OptionRowLHNDataComposed
            {...props}
            isFocused={isFocused}
        />
    );
}

This solution does not add anything beyond a simple wrapper so it is quite easy to do and should not be error-prone.
Use withCurrentReportID in list component (Alternative)

Alternatively, we can use withCurrentReportID once at the level of list component instead of in each children. Then we will directly pass isFocused prop into children, so it won’t break memoization of list items.
The solution is more elegant, as it uses currentReportID provider once and does not expose such internals into children components. On the flipside, we need to re-render list itself, which might add some overhead.
In this scenario, it takes about ~120ms to render the list, which is about 15ms slower than previous solution.
Conclusions
While we managed to reduce rendering times, we still need to think on which solution should be implemented. Furthermore, it might be a good idea to investigate rendering of list items, as it is quite simple component but still takes ~5ms to render.

Hi, I am Kacper from Callstack and I would like to work on this issue :D

Payment Summary:
C+ Reviewer: @allroundexperts $500 to be paid via Manual Request

Can you let us know when you make the request so we can close this issue out, thanks! @allroundexperts

$500 payment approved for @allroundexperts based on BZ summary.


REL: Backport osx-arm build to version 3.7

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

It seems libkokkossimd is new to v4.0 and the test should be removed for v3.x

(cc: @vincentmr for vis)

It seems libkokkossimd is new to v4.0 and the test should be removed for v3.x

Yep, it used to be in simd-math.


Remove DeprecationWarnings filter (VERSION parser)

This guy exists to filter out arcane deprecation warnings that pop up in the repeated encoding and decoding on the _VERSION_MATCHER regex. It should be removed, either by handling the encoding/decoding properly, or by factoring out the regex entirely, as Greg has suggested during an unrelated conversation.

SO posts that might be releveant/useful:

https://stackoverflow.com/questions/64598355/unicode-escape-without-deprecation-warning
https://stackoverflow.com/questions/3939361/remove-specific-characters-from-a-string-in-python


Is it worth to modify the key of get_with as a &K rather than K?

Again, thanks for the great library!
Current the get_with signature requires me to pass the Key by value, rather than &K, where as the get method allows me to pass key by reference.
It is definitely reasonable that the function needs to have key by value as it might need to insert into cache if result is not present. On the other hand, it feels a bit less efficient if I know my access patterns are most times will have cache hit, only sometimes we need to insert.
Using get_with with K as value means I will need to explictly clone the key everytime I call get_with, even though I know the value is in the cache. This sounds like a micro optimization but feels there might be some room to make it better?
Is it okay to have get_with takes &K as input, only clone it when necessary? (But this would be a breaking change, so maybe some new APIs? But I am not sure if it worth the effort to make a small change like this :P ) Something I can think of is make K cloneable and only clone when needed? Of course maybe I am missing some context here. But happy to know if this is not possible. Anyway, it is a very minor thing. :)
Thanks!

Thank you for the suggestion. We can achieve this by cloning the key (at line 1054) in an internal method get_or_insert_with_hash_and_fun.
I would add them as new APIs rather than changing the current ones. The current ones will still have advantages in some use cases:

New ones (to pass key by reference) will be better when:

You own the key, and you still need it after calling the API.
Or, you do not own the key, but have an reference to it, and the key type implements Clone.

Current ones (to pass key by value) will be better when:

You own the key, and you do not need it after calling the API.

If so, cloning the key in the API is redundant.

Or, your key type does not implement Clone.

use moka::sync::Cache;

let cache = Cache::new(100);
let key = "key".to_string();

// New API
let _ = cache.rget_with(&key, || 0);

// Current API
// We can move the key into the API because we do not use it after calling the API.
let _ = cache.get_with(key, || 0);

The reason I made the current APIs to pass key by value is that the entry API in std::collections::HashMap does so:
https://doc.rust-lang.org/stable/std/collections/struct.HashMap.html#method.entry
pub fn entry(&mut self, key: K) -> Entry<'_, K, V>

But I understand there are some use cases that the current APIs are not suitable for.
I am not sure for the naming of the new APIs. In the above example, I used rget_* where r stands for "reference" (key by reference). It is a silly name, but I thought we would prefer a short name? I am open to any suggestions.
The method signature will be like this:
pub fn rget_with(&self, key: &Q, init: impl FnOnce() -> V) -> V
where
    K: Borrow<Q>,
    Q: ToOwned + Hash + Eq + ?Sized,

We will use ToOwned rather than Clone, because it supports creating String from &str, in addition to from &String. Note that all Clone types automatically implement ToOwned.

FYI, I am planning to move some advanced or unpopular APIs to under a new API that mimics the entry API in the std HashMap. I have not finalized the design yet, but it will be something like this:
// Pass key by reference
let entry = cache.entry_by_ref(&key).or_insert_with(|| 0);

// `is_fresh` is a new API requested in https://github.com/moka-rs/moka/issues/136.
// => `true`:  the entry is just inserted.
//    `false`: the entry is already in the cache.
dbg!(entry.is_fresh());
// Consume the entry to get the owned value.
let value = entry.into_value();

// Pass key by value
let value = cache.entry(key.clone()).or_insert_with(|| 0).into_value();

// Advanced or unpopular APIs
// `compute` is a new API requested in https://github.com/moka-rs/moka/issues/179.
cache.entry_by_ref(&key)
    .compute(
        // If the entry is not in the cache, insert a new value.
        || 0,
        // If the entry is in the cache, update the value by returning `Some()`,
        // or invalidate the entry by returning `None`.
        |old_value| Some(old_value += 1));

// `get_with_if` is an existing API and we will move it to the `entry` API.
cache.entry_by_ref(&key)
    .get_or_insert_with_if(
        // If the entry is not in the cache, insert a new value.
        || 0,
        // Invalidate the entry if the closure returns `true`.
        |value| value >= 10;

So we will have entry_by_ref and entry to pass key by reference and by value, respectively.
And we will keep/add the following convenient APIs as shortcuts of above:
// Pass key by reference
cache.rget_with(&key, || 0);
let _ = cache.try_rget_with(&key, || Ok(0));
let _ = cache.optionally_rget_with(&key, || Some(0));

// Pass key by value
cache.get_with(key.clone(), || 0);
let _ = cache.try_get_with(key.clone(), || Ok(0));
let _ = cache.optionally_get_with(key.clone(), || Some(0));

Hi @tatsuya6502 . I think rget_with/try_rget_with is fine. A potential alternative is get_with_ref/try_get_with_ref or even get_with_by_ref/try_get_with_by_ref to matching entry_by_ref style, but I am happy with rget_with which is short to write. I will spend sometime on this once the other PR is finalized.

Thanks for the method name ideas. I have no preference/it is hard to choose to me. All names are fine. If you have any preference, please pick one.

I don't have a strong preference. If we decided to use entry_by_ref, I would keep it consistent and use get_with_by_ref/try_get_with_by_ref even though it is a bit long.
I will look into this issue a bit later this week. :)

Thanks. No need to rush. Please take your time.

If we decided to use entry_by_ref, I would keep it consistent and use get_with_by_ref/try_get_with_by_ref even though it is a bit long.

I started to play with the entry API and I am almost certain to use entry_by_ref there. So using get_with_by_ref / try_get_with_by_ref would make sense.
I have got the following code to compile.
https://gitlab.com/moka-labs/moka-entry-api/moka-entry-api-mock/-/blob/main/src/main.rs#L12-27
    let cache: Cache<String, String> = Cache::new(100);
    let key = "key".to_string();

    let entry = cache
        .entry_by_ref(key.as_str())
        .or_insert_with(|| "value".to_string());
    dbg!(entry.is_fresh()); // bool
    // dbg!(entry.key()); //   &K
    dbg!(entry.value()); //    &V
    let _value = entry.into_value(); // V
    // dbg!(entry.value()); // Error: Borrow of moved value.

    let _value = cache
        .entry(key)
        .or_insert_with(|| "value".to_string())
        .into_value(); // V

Note: I am not directly modifying Moka's source code yet, but created a thin wrapper called moka_entry_api_mock to see if all those trait and lifetime bounds would work.
    use moka_entry_api_mock as moka_mock;
    use moka_mock::sync::Cache;

Also, I realized the ToOwned bound in the previous example was wrong. The correct bound should be the following:
pub fn get_with_by_ref(&self, key: &Q, init: impl FnOnce() -> V) -> V
where
    K: Borrow<Q>,
    Q: ToOwned<Owned = K> + Hash + Eq + ?Sized,

Owned = K was needed to create K from &Q in my thin wrapper:
https://gitlab.com/moka-labs/moka-entry-api/moka-entry-api-mock/-/blob/main/src/sync.rs#L85
impl<'a, K, Q, V, S> RefKeyEntrySelector<'a, K, Q, V, S>
where
    K: Borrow<Q> + Hash + Eq + Send + Sync + 'static,
    Q: ToOwned<Owned = K> + Hash + Eq + ?Sized,
    V: Clone + Send + Sync + 'static,
    S: BuildHasher + Clone + Send + Sync + 'static,
{
    pub fn or_insert_with(self, init: impl FnOnce() -> V) -> Entry<K, V> {
        let owned_key: K = self.ref_key.to_owned();

Thanks @tatsuya6502 . Then new entry api looks pretty cool. I like it. Also, I will try out the trait bound when I implement the by_ref api. I think it should work. :)
One question I have about the entry api is, if the entry returns the reference to V, since this is a concurrent cache, if it is called from another thread/tokio task to write the entry, will there be any potential contentions? I haven't dive into the code to see how this will work. But just curious about how to solve this problem.

One question I have about the entry api is, if the entry returns the reference to V, since this is a concurrent cache, if it is called from another thread/tokio task to write the same entry, will there be any potential contentions?

No, there is no contention. or_insert_with() method returns an Entry instance, and that entry owns a clone of value V. The &V returned from value() is referencing the value in the entry, instead of the one in the cache. So, there is no lock to guard the value in the cache and other threads are free to replace it.
Yeah, it might be a bit confusing.

I got it. Thanks for the explaination.

Push a PR, feel free to take a look when you have time @tatsuya6502  :)


Fix nested tag with attribute completion

Fixes: https://github.com/dotnet/razor-tooling/issues/5694
Yet another kludge before https://github.com/dotnet/aspnetcore/issues/33919 is fixed...

Verified, that both examples
 <a target="_blank"|
 and

|
 are not working correcly. Also for some reason reverting breaking changes doesn't work for me anymore. I'll convert this PR to draft and continue working on it after VS 17.2 Preview 2 is released

Ok, I am back with this PR) Changed algorithm, so if it gets a quote from an attribute syntax, it tries to find the opening tag's closing brace properly. Ready for review!


Error: Cannot find module 'now'

npm install successed! but Error occured when i run express app

var nowjs = require("now");
var server = global.server;
var everyone = nowjs.initialze(server);
var app = express();

@NextZeus the now package on NPM is from https://zeit.co/now

if you are looking for an alternative I'm maintaining a project called eureca.io  with similar functionality and some additional features.
I started it 5 years ago when Flotype/now died and I'm still maintaining it :)


Programmatic Sorting

Adds sorting options.
Sorts by numbers if they're numbers, otherwise sorts by string values.
Allows sorting using multiple columns chained together in either ascending or descending order.

Closes #2


how to use "&" in xhtml... it's shows error when I use "&" within \begin{vmatrix}

Even escaping sequence & is not working to save the xhtml file.
my code:

$$\mathbf{V}_1 \times \mathbf{V}_2 =  \begin{vmatrix}
\mathbf{i} & \mathbf{j} & \mathbf{k} \\
\frac{\partial X}{\partial u} &  \frac{\partial Y}{\partial u} & 0 \\
\frac{\partial X}{\partial v} &  \frac{\partial Y}{\partial v} & 0
\end{vmatrix}$$

In XHTML you'd have to either escape the & as & or enclose it in a CDATA section. You could for example enclose the whole formula in a CDATA section like this: <![CDATA[$$ … $$]]>. If neither of these works for you, you should be more specific: Describe the error you observe (error message or incorrect rendering?), provide a short, self-contained, otherwise correct reproducing example or point out a web site where we can see the problem.

I used escaping character but still the math is not working. This is my code:
$$\begin{bmatrix} 0 & \cdots & 0 \ \vdots & \ddots & \vdots \ 0 & \cdots & 0 \end{bmatrix}$$
Also below $$ … $$ is not used by replacing escapting character & into & but still is not working.
$$\begin{bmatrix} 0 &  \cdots &  0 \\ \vdots &  \ddots & \vdots \\ 0 &  \cdots &  0 \end{bmatrix}$$
Thanks,
Bala AJ

Please actually read my previous comment! We need a detailed description of the error (more detailed than “not working”), and either a copy of the XHTML file, ideally without unrelated content, or a URL where we can see the problem. You can attach files to GitHub issues by drag and drop or file selection; see the description below the comment input box. HTML files are not supported, so you may have to zip the file. I will not repeat this request for details again.
I've just tested that rendering your formula (first version) works in an XHTML file. See katex592.zip for the file I used.

Thank you so much. I got it.. Sorry for the trouble. One more thing I noted that some alignment issue in chrome for the below formula. i.e. each rows are touching together. If you have quick solution then let me update.
Thanks in Advance!
	$$  \mathbf{V}_1 \times \mathbf{V}_2 =  \begin{vmatrix}

\mathbf{i} &   \mathbf{j} &   \mathbf{k} \
\frac{\partial X}{\partial u} &   \frac{\partial Y}{\partial u} & 0 \
\frac{\partial X}{\partial v}  &   \frac{\partial Y}{\partial v} & 0
\end{vmatrix}$$

You know, it would have been kind of nice to indicate what the actual problem was, and how you have fixed it now. That way other users searching our list of issues would be more likely to find your description and apply the same solution to their scenario. Perhaps there also is some documentation we should be adding somewhere.
See #331 for the vertical spacing in your matrix.