Programming exercises: Fix updating scores when a manual result exists

Checklist
General

[ ] I tested all changes and their related features with all corresponding user types on a test server.
[ ] This is a small issue that I tested locally and was confirmed by another developer on a test server.
[x] Language: I followed the guidelines for inclusive, diversity-sensitive, and appreciative language.
[x] I chose a title conforming to the naming conventions for pull requests.

Server

[x] I followed the coding and design guidelines.
[ ] I added multiple integration tests (Spring) related to the features (with a high test coverage).
[x] I implemented the changes with a good performance and prevented too many database calls.
[x] I documented the Java code using JavaDoc style.

Changes affecting Programming Exercises

[ ] I tested all changes and their related features with all corresponding user types on Test Server 1 (Atlassian Suite).
[ ] I tested all changes and their related features with all corresponding user types on Test Server 2 (Jenkins and Gitlab).

Motivation and Context
In ITP we encountered an issue when changing test cases after the due date. When the student complained before the updated test cases were run, the new test run was not correctly reflected in the score. Whilst the feedback showed the new test results, the result itself was still using the old score:

Description
Submitting a complaint or additional feedback request already counts as a manual result.
In these cases, the new programming feedback gets merged with the potential existing manual feedback. This method was not updating the result, only the related feedback objects. This PR changes this behavior.
Steps for Testing
Prerequisites:

1 Instructor
1 Student
1 Programming Exercise with Complaints enabled

Student: Submit something to the PE
Student: Submit a complaint after the due date
Instructor: Change the test cases and trigger all builds
Verify that the Student's result got updated (correct score, correct test case count)

Review Progress
Code Review

[ ] Review 1
[ ] Review 2

Manual Tests

[ ] Test 1
[ ] Test 2

Test Coverage

Codecov Report

Merging #6204 (03e4bdb) into develop (02deebd) will increase coverage by 0.00%.
The diff coverage is 100.00%.

:exclamation: Current head 03e4bdb differs from pull request most recent head 23e6893. Consider uploading reports for the commit 23e6893 to get more accurate results

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff             @@
##             develop    #6204   +/-   ##
==========================================
  Coverage      80.28%   80.28%
  Complexity     12839    12839
==========================================
  Files           2273     2273
  Lines          88065    88069    +4
  Branches       13048    13048
==========================================
+ Hits           70699    70704    +5
  Misses          9657     9657
+ Partials        7709     7708    -1

Impacted Files
Coverage Δ

...programming/ProgrammingExerciseGradingService.java
91.64% <100.00%> (+0.09%)
:arrow_up:

...idebar/conversation-selection-sidebar.component.ts
89.33% <0.00%> (+0.66%)
:arrow_up:

Flag
Coverage Δ

client
76.41% <ø> (+<0.01%)
:arrow_up:

server
84.59% <100.00%> (+<0.01%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 02deebd...23e6893. Read the comment docs.


logging migration for ws281x and LedUdpDeviceLeddevice logger

logging migration for ws281x and LedUdpDevice

one small thing: as you see, your branch leddevice_logger is based on master which you pushed already your other PR. So both PRs contain now the the cmake compile warning fix. You should consider to push changes to your master just if you don´t plan to open more than one PR at the same time :)


Show a badge for certified apps

Just like on Twitter, show a badge for an app being maintained on the store by the official developer.

We discussed recently on flatpak irc about adding something like this in the appdata so the webapp will be able to show "Published by the upstream developer" or "Endorsed by the upstream developer" message
I'll ask @alexlarsson about this

Will need some trust-worthy way to set that information.

I think rel="me" links (similar to mastodon) on webpages should work. When the flatpak page is linked somewhere and this link is stored in the appmeta data would make it easy for app vendors to mark things as official. and allow mutual authentication. Main problem I see is client privacy (as to validate the claim it would be required to reach out to the claim site). Raises the big question: Do we want this to be cryptographicly secure or are we fine with trusting the upstream repository?
As the build-bot could validate the claim and just pass the official badge downwards and clients could re-validate if they want. vs. Clients have to validate it themselves and therefore we pass an cryptographic proof using app metadata to the client.

@SISheogorath At a glance I don't think that approach is helpful at all, package maintainers can do anything including control the metadata. There has to be something set by the repo admins externally.

Copied over from #214:
One way to differentiate between developer-published packages and “community-published” packages could be to have the storefront check for a specific <meta> tag in the <url type="homepage"/> URL. For comparison, Safari on iOS has long had the ability to check for the following <meta> tag:
<meta name="apple-itunes-app" content="app-id=myAppStoreID, app-argument=myURL">

Flathub could provide a similar template, along the lines of:
<meta name="flathub-flatpak-app" content="app-id=FlathubID">

This <meta> tag would allow several things:

If page at the <url type="homepage"/> URL of a Flathub app had a <meta> tag with the corresponding Flathun App ID, the Flathub storefront could feature a “blue checkmark” or something similar in one or more places on the page.
Flathub (or, honestly, any third party) could build one or more browser extensions checking for the <meta name="flathub-flatpak-app" content="…"> tag on each page and showing a small banner (as on iOS) telling the user that the page has a corresponding app available on Flathub or suggesting that the user open the app if they already have it installed. (There are a number of further security considerations here that are beyond the scope of this thread.)
Eventually, the tag and extension could support an app-argument (as on iOS) for the purpose of allowing websites to deep-link into corresponding apps. (Again, with additional security considerations.)
Since one of the concerns on this thread is properly directing bug reports and support requests, the Flathub storefront could set the <url type="bugtracker"/> to github.com/flathub/<app_id>/issues unless the <url type="homepage"/> has been verified.

Obviously, anybody could unilaterally add this <meta> tag to their website; the more important question would be whether Flathub would run a bot making any use of it. Essentially, the <meta> tag could facilitate a “handshake” that would enable a given app page on Flathub to display “flair” emphasizing its verified/official status. App pages without verified <url type="homepage"/> URLs would continue to appear exactly as is aside from the <url type="bugtracker"/> defaulting the corresponding Flathub GitHub Issues page.
Note: there’s an existing npm package specifically for grabbing URL metadata, so the Flathub web storefront wouldn’t have to rebuild the wheel from scratch.

(This is just what I posted on the other issue, so it may not be framed in the most relevant way here.)

I’m not terribly familiar with how Mastodon does things, but it looks like the big difference with my suggestion is that:

The attribute name="flathub-flatpak-app" would be specific to the Flathub storefront and need not provide any information other than the fact that the page is claiming that particular App ID (and possibly facilitating deep-linking),
The verification would be carried out by flathubbot or something similar, and the boolean “verified” property on each URL would completely static by the time it reached the client, rather than being carried out client-side.

(There would need to be additional safeguards in place to remove verification in the case of suspicious domain transfers, e.g. DNS hacking redirecting a domain to a phishing site, though something like DNSSEC support might be useful to submit to the Freedesktop AppStream specification, as well.)
FWIW the Apple precedent I’m comparing this to does allow for affiliate tracking, but Flathub doesn’t need to implement any similar functionality. That is, if a page were to include tracking data, flathubbot or a browser extension could simply ignore/discard it.
The biggest limitation, of course, is that verifying that the entity publishing the Flatpak on Flathub also controls the page at <url type="homepage"/> doesn’t necessarily imply that the page at <url type="homepage"/> is, in fact, the homepage of the upstream developer. So it would be necessary to temper how the storefront chooses to display the verification accordingly. But even if the checkmark was only shown next to the link at the bottom of the page (and the title of the link, i.e. the developer name, were verified to match the linked page in some way or another), it would still provide useful information that the storefront does not provide now.
This is to say that providing verified links could be in and of itself a useful feature, even if Flathub doesn’t verify applications themselves, per se. This feature would probably work best if it were paired with a clearer contextualization of what each URL means on the Flathub app page template.

Well, I just submitted an issue on the AppStream specification, if you want to weigh in there.

As @TingPing has pointed out, we can not use anything that is maintainer-controlled (on the flatpak side) to validate that the maintainer is the actual maintainer.
So I guess the only way to mark an app published by the developers is either by maintaining a list of these apps somewhere externally and/or by marking only apps that are actually uploaded by maintainers (such as it currently is the case with Firefox) to flathub and have no flatpak repository representation.
However, AFAIK the Firefox app is currently and might be permanently the exception. So I don't see this going anywhere near future unless one wants to do manual verifications.

My idea was that if the source in the manifest of the app is set to the developer repository, then the developer controls that repository and could place a piece of information to identify the account used to maintain the app on Flathub.

The problem is that having control of some website or some repository absolutely doesn't mean you are the actual upstream. For repositories nowadays, with everyone "forking" every repo, it is harder to determine valid upstream, especially for smaller projects. When we add new dependency source, I always spend 10 minutes to make sure we get the right upstream. I'm sure many people who make flatpak manifests here can relate to this.
As for websites, it's the same. Even for bigger projects, there are many cases of impersonation. Here for instance is a recent message by the Inkscape team warning everyone not to trust anything but inkscape.org because there are actual cases of fakes in the wild: https://twitter.com/inkscape/status/1446169748656431134
At GIMP, we also have had valid cases of impersonations. I remember one app on some store publishing GIMP and pretending to be a fake "Gimp foundation".
While it might seem obvious for seasoned developers what is the real GIMP or Inkscape website, many users don't even know we have a website (they just download from various third-party sources, like repositories or sometimes more shaddy software-download websites, so they don't need to know!) so even less which URL it is.
So yeah the .well-known/ process is good to tell you "the person using flathub also controls this URL (which can be anything like a fake GIMP or Inkscape website, or a source repository fork)" but it is not telling you that this person is the upstream developer. It looks like manual verification (trusted community of "moderators") is the only way to do it right.
Note though that it can be coupled with the proposed process, i.e. that we could have .well-known/ file on some website or repository, but then a human being would have to double-check that the URL is actually the upstream dev by crossing sources (so for instance, it's a file in gimp.org/well-known/ not some other official-looking-yet-not-official URL; verifying that gimp.org is indeed the upstream). And of course, there would need to be automatic invalidation if ever the verification URL is changed so that it needs to be manually validated again, from the start.

I agree manual verification would be the way to go to have any added security associated with showing a verified badge. Otherwise has you said it is easy to impersonate an app just by forking and using a similar looking name and URL.
Adding the information that the owner of a repo is also the maintainer could be a signal that there is a good probability the app on Flathub will get new releases at the same time as the upstream. But that would need not to give any sense of added  security to the user and I don't know if it's worth it as a feature by itself.

But that would need not to give any sense of added security to the user and I don't know if it's worth it as a feature by itself.

Don't get me wrong, I personally believe having a "Upstream-maintained" notice (or "badge" or whatever you want to call it) is a nice idea. That's why I'm subscribed to this discussion (hence answering).
Just it has to be well done. And I think human-verification (based on trusted community members for instance, not necessary the developers of Flathub or maintainers who may not want to do this day-to-day additional work) is one of the few sane ways to go.
Actually just now I thought about a secondary way, which would be to base ourselves on a trustful database of projects. For instance, we were recently introduced to this Anitya database mostly used to automatically check for new versions of dependencies in flatpak manifests. Well if the info there is well-maintained and is considered trustworthy, then a project could use the well-known file protocol on a URL listed on such database.
For instance, I see GIMP page is properly set so it would work in our case.

I'm not sure to follow how the information from Anitya would be used. Would it serve as a source of information for a team of moderators? Right now it seems like anyone with an account can modify the information on https://release-monitoring.org, so that is a problem. But it does make sense to share the workload of verifying app with other distribution projects.

VS Code just implemented a system for publisher URL verification that might be a useful precedent. The linked help section doesn’t go into a lot of detail, but it sounds like they do it using DNS.

They just require adding a TXT DNS entry; it’s a commonly used approach (e.g. Google Search Console uses this to verify you own the domain).

Well, that’s an option here, I guess?

Well, that’s an option here, I guess?

That's a technical implementation but it doesn't solve the main issue which is: how do you validate that a website is the one from the upstream developers? Let me give you an example:

Say a malevolent third-party uploads GIMP on Flathub and in the manifest I say the website is gimp.scam (instead of gimp.org) which is really a domain controlled by this person.
An automatic system could validate that the person control the domain, it could do it with a DNS entry (which is a common technique), or with a well-known file through https (another common technique proposed earlier). Which method doesn't matter because the third-party really has access to gimp.scam, so they could add the DNS entry without a problem.
As a result: Flathub would now display a "Published by the upstream developer" flag for this package and people would download it completely full of trust (which is very bad as a false sense of security is worse than having a doubt).

So the problem is not how Flathub would validate a domain (there are many good solution for this), but it is how you validate that the said domain is really the upstream one. As far as I can see, the only way to do this with little doubt is through human validation (not perfect, one can still make mistakes, but it more trustworthy than without), which means a community of trusted people who would manually verify a claim of being an upstream domain (the human verification can then be backed by the automatic verifications as secondary step). For instance with any of the proposed techniques above, the only verification to do is whether or not the given domain is the upstream domain. Only then the automatic check has any value.
For the record, the risk stated above is not theoretical. I posted a link above where the Inkscape developer warned people of a fake website (for which a real domain inskcape.<use-whatever-tld> was registered, cf. the screenshot in the link) with people behind who even sent scam messages pretending to be the Inkscape team. This was barely a few weeks ago. In the case of GIMP, we also had similar experiences too. Even just now, it took me less than 2 minutes to find a random (non-upstream) website with GIMP name and logo and proposing downloads (I just tried various TLDs). So yes, a DNS entry or https automatic verifications are not enough. These may be a part of a validation process but are not safe alone by themselves.
Now would this community of reviewers be Flathub-only or use a shared resource (such as the Anitya project I linked previously)? Both are possible.
To answer an earlier comment too:

Right now it seems like anyone with an account can modify the information on https://release-monitoring.org, so that is a problem.

I don't know enough this project to give an opinion. It would definitely need to be verified. Nevertheless a process based on community-trust is not so bad, even if it does indeed result in some small risky windows. It all depends on whether there are counter-measures to detect and fix quickly the malevolent edits. Anyway not saying this is necessarily the database to use. I don't know. I simply discovered this project recently and thought it was of interest for this discussion.

One take on this is that as long as gimp.scam isn’t malicious, it would be okay for them to distribute an application with the ID scam.gimp.Gimp. Basically the verification would be that the person submitting the application controls the domain associated with the application ID.
Now, the broader problem this doesn’t solve is when you have multiple versions of the same application with different distributors. In that case, the best practice would probably be to do some degree of investigation to see which version has the best claim to the trademark for the application name.
Obviously some preemptive check would be ideal for trademark purposes, which could potentially allow for someone submitting an application they don’t control but that still uses the official upstream repository. In this case, the application would be “unofficial” but still potentially allowed.
And in general each submission should be manually checked to make sure the repository it points to is indeed the upstream repository, and, if it isn’t, the submitter would be required to use a sufficiently distinguishable name for their fork.
So, yes, there are kind of two separate issues at play, but I don’t think forks should necessarily be rejected outright so long as they don’t use confusingly similar branding to the originating project. What do you think of that?

One take on this is that as long as gimp.scam isn’t malicious, it would be okay for them to distribute an application with the ID scam.gimp.Gimp.

Of course. But this report is about certifying an application as "being maintained on the store by the official developer." Please check the initial report description. It is not about whether third-party are allowed to publish the software too. We know they are, we know the definition of Free Software too, don't worry. 😛
So the rest of the post is simply off-topic for this report.

but I don’t think forks should necessarily be rejected outright so long as they don’t use confusingly similar branding to the originating project.

I don't think anyone said anything like this. This is not the topic we are discussing here. Nobody has said anything about rejecting apps, or forks, or anything of the sort. 🤷

This is not the topic we are discussing here.

It had been a while since I last interacted with this thread, so maybe https://github.com/flathub/linux-store-frontend/issues/214 would have been a better place for me to comment about the VS Code DNS thing.

Verification badges are now tracked in https://github.com/flathub/website/issues/44


PE: unable to parse imports with a null directory size

Some valid PE files may declare that their import directory has a null size (but a valid location).
Such files are valid, and can run fine in Windows, which actually links to the required imports (declared at the valid location).
Such an example is the PE101 simple.exe (that is described here and that can be downloaded here via pe101.zip)
The declared size of the imports directory is ignored by the windows loader, since it is actually useless. The import data in the PE file (pointed to by the valid location) is a null-terminated list, that can be parsed without the knowledge of its size.
Expected behaviour
PeFile::imports() would return a valid vector of Imports.
For instance, that's what the Python pefile does.
Actual behaviour
PeFile::imports() returns Ok([]). This is due to self.data_directory(pe::IMAGE_DIRECTORY_ENTRY_IMPORT) being None (data_directory checks that the declared length of the directory is not 0).
How to solve it?
I'm not sure. We probably should forcibly parse the imports structure and ignore the declared size. On the other hand, this is a borderline case (the PE file is almost-but-not-totally valid), and I'm not sure what the philosophy of object is regarding these cases

I've made an MR because that was not a big change, but I'd like your opinion regarding how acceptable this is.

Handling malware and hand crafted files is a can of worms, and until now this crate has only cared about binaries from common toolchains. For some cases it may be better to return an error, rather than trying to duplicate the undocumented internals of the Windows loader. For this case, the change may be simple enough, but let me think about it. I assume for your use case you'd rather be able to parse the file fully, rather than getting an error?

Currently, we get Ok([]). I think it would make more sense to:

at least get an Err
get an Err, but provide a way to forcibly parse the import table anyway
be able to choose between the two previous behaviours (e.g. have a imports(&self) that would return Err and a imports_forced(&self) that would return Ok([...]) (not sure this API would be very straightforward though)
parse the list regardless of the declared size,

For my very use case, I'd prefer the latter (be able to parse the list of imports, without being even warned about an invalid size) because that would make my life easier :D
All the more as the logic in object already works (it walks the list of imports until it finds a null item).

Or, should we create a cargo feature --features=lenient or --feature=force, that would tweak many behaviours to be more, well, lenient, and that could be enabled when trying to parse potential malware?
This (ignoring invalid directory sizes when they have a valid pointer location) would be the first behaviour that would be tweaked, but this would maybe change other things in the future.

at least get an Err

I think that can be fixed with just this change from your PR?
-            .filter(|d| d.size.get(LE) != 0)
+            .filter(|d| d.virtual_address.get(LE) != 0)

get an Err, provide a way to forcibly parse the import table anyway

This can always be done using the lower level API. If it's missing functions to do this then we should add them. And this may be desirable for your use anyway (e.g. it was for another user in #324). The unified API makes it harder to support features that are unique to only one file format.

be able to choose between the two previous behaviours

This seems the same as the second option to me? i.e. the second option already includes the behaviour of the first option

parse the list regardless of the declared size

This is still an option, but I need to investigate further.


Automated cherry pick of #5021: fix: 避免因大小写导致linux未注入默认用户

Cherry pick of #5021 on release/2.13.
#5021: fix: 避免因大小写导致linux未注入默认用户

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/2.13@b422d70). Click here to learn what that means.
The diff coverage is 0%.

@@              Coverage Diff               @@
##             release/2.13   #5024   +/-   ##
==============================================
  Coverage                ?   6.83%
==============================================
  Files                   ?     527
  Lines                   ?   89479
  Branches                ?       0
==============================================
  Hits                    ?    6117
  Misses                  ?   82853
  Partials                ?     509

Flag
Coverage Δ

#aFlag
6.83% <0%> (?)

Impacted Files
Coverage Δ

pkg/cloudprovider/instance.go
0% <0%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b422d70...8aa6aa3. Read the comment docs.

/lgtm

/approve


Improve Chunking of Text

Migrate from Fixed Chunking of Texts to a more NLP based approach to chunking as referenced in https://vectara.com/blog/grounded-generation-done-right-chunking/

Consider more intuitive text chunk boundaries. Right now chunking for slides is at slide boundaries. Consider doing that for web pages and PDFs, e.g. splitting at logical document breaks like section headers, etc.


Web UI Issue

How to create a web UI which will not send the data in server but only obfuscate the code in browser using the following code:
<script src="https://cdn.jsdelivr.net/npm/javascript-obfuscator/dist/index.browser.js"/>

Please kindly help.

See https://github.com/javascript-obfuscator/javascript-obfuscator-ui/issues/1

Closing as duplicate.


Chore/migrate to redis

Checklist
General

[ ] I tested all changes and their related features with all corresponding user types on a test server.
[ ] This is a small issue that I tested locally and was confirmed by another developer on a test server.
[ ] Language: I followed the guidelines for inclusive, diversity-sensitive, and appreciative language.
[ ] I chose a title conforming to the naming conventions for pull requests.

Server

[ ] Important: I implemented the changes with a very good performance and prevented too many (unnecessary) and too complex database calls.
[ ] I strictly followed the principle of data economy for all database calls.
[ ] I strictly followed the server coding and design guidelines.
[ ] I added multiple integration tests (Spring) related to the features (with a high test coverage).
[ ] I added pre-authorization annotations according to the guidelines and checked the course groups for all new REST Calls (security).
[ ] I documented the Java code using JavaDoc style.

Client

[ ] Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data (e.g. using paging).
[ ] I strictly followed the principle of data economy for all client-server REST calls.
[ ] I strictly followed the client coding and design guidelines.
[ ] Following the theming guidelines, I specified colors only in the theming variable files and checked that the changes look consistent in both the light and the dark theme.
[ ] I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
[ ] I added authorities to all new routes and checked the course groups for displaying navigation elements (links, buttons).
[ ] I documented the TypeScript code using JSDoc style.
[ ] I added multiple screenshots/screencasts of my UI changes.
[ ] I translated all newly inserted strings into English and German.

Changes affecting Programming Exercises

[ ] High priority: I tested all changes and their related features with all corresponding user types on a test server configured with the integrated lifecycle setup (LocalVC and LocalCI).
[ ] I tested all changes and their related features with all corresponding user types on a test server configured with Gitlab and Jenkins.

Motivation and Context

Description

Steps for Testing

Prerequisites:

1 Instructor
2 Students
1 Programming Exercise with Complaints enabled

Log in to Artemis
Navigate to Course Administration
...

Exam Mode Testing

Prerequisites:

1 Instructor
2 Students
1 Exam with a Programming Exercise

Log in to Artemis
Participate in the exam as a student
Make sure that the UI of the programming exercise in the exam mode stays unchanged. You can use the exam mode documentation as reference.
...

Testserver States

[!NOTE]
These badges show the state of the test servers.
Green = Currently available, Red = Currently locked
Click on the badges to get to the test servers.

Review Progress

Performance Review

[ ] I (as a reviewer) confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance even for very large courses with more than 2000 students.
[ ] I (as a reviewer) confirm that the server changes (in particular related to database calls) are implemented with a very good performance even for very large courses with more than 2000 students.

Code Review

[ ] Code Review 1
[ ] Code Review 2

Manual Tests

[ ] Test 1
[ ] Test 2

Exam Mode Test

[ ] Test 1
[ ] Test 2

Performance Tests

[ ] Test 1
[ ] Test 2

Test Coverage

Screenshots

Summary by CodeRabbit

New Features

Introduced Redis-based caching and dependency management using Redisson.
Added support for PassKey authentication.
Implemented Redis health monitoring and client list retrieval functionalities.

Bug Fixes

Improved application performance and reliability by transitioning from Hazelcast to Redisson.

Documentation

Updated health check files to include Redis service information.

Tests

Refactored tests to align with the new Redis integration, ensuring stability and performance.

Closing for now, because this is not yet in active development and was just a prove of concept. We will re-open this PR, when we work more closely on this topic!


HTML

HTML
User Story
As a boot camp student,
I want a Prework Study Guide website,
so that I can review all the information I learned throughout Prework.
Acceptance Criteria
GIVEN a Prework Study Guide website
WHEN I visit the website in my browser
THEN I see four boxes titled HTML, CSS, Git, and JavaScript with associated notes listed
WHEN I view the study guide
THEN I see a dark blue header and footer, and four boxes with a shadow
WHEN I open the console in my browser
THEN I can see the four topics I learned listed along with a suggestion on what I should study first
WHEN I visit the website using the URL
THEN I can access my website from any browser

Not complete. Only to the third point of seeing the four titles of HTML, CSS, Git and Javascript.


[BACKLOG-20030] Create ValueMetaConverter in Kettle and use it for Or…

…c Read/Write[BACKLOG-20030] Create ValueMetaConverter in Kettle and use it for Orc Read/Write

Build Completed
:x: This pull request has errors. They will need to be addressed before it can be accepted. See below for more details. Some links are also available below for further assistance in addressing those issues.
Build Commands
mvn -Dsurefire.runOrder=alphabetical -B -fn -f 'pom.xml' -pl 'core' -P '!assemblies' -amd clean install && mvn -B -f 'pom.xml' -pl 'core' -P '!assemblies' -amd site

Cleanup Commands
mvn -B -f 'pom.xml' -pl 'core' -P '!assemblies' -amd build-helper:remove-project-artifact

Changed files
  core/src/main/java/org/pentaho/di/core/plugins/IValueMetaConverter.java
  core/src/main/java/org/pentaho/di/core/row/ValueMetaInterface.java
  core/src/main/java/org/pentaho/di/core/row/value/ValueMetaConversionException.java
  core/src/main/java/org/pentaho/di/core/row/value/ValueMetaConverter.java
  core/src/test/java/org/pentaho/di/core/row/value/ValueMetaConverterTest.java

Newly Broken Tests:
org.pentaho.di.trans.ael.websocket.TransWebSocketEngineAdapterTest.testOpsIncludeSubTrans:
:red_circle: java.lang.RuntimeException
java.lang.RuntimeException:
org.pentaho.di.core.exception.KettleXMLException:
Error reading object from XML file

Error reading object from XML file

Unable to load step info from XML step nodejava.lang.NullPointerException
 at org.apache.maven.surefire.booter.ForkedBooter.main (ForkedBooter.java:121)
 at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess (ForkedBooter.java:240)
 at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader (ForkedBooter.java:2

Newly Fixed Tests:
org.pentaho.di.trans.steps.accessinput.AccessInputMetaTest.testRoundTrip:
:large_blue_circle: org.pentaho.di.core.exception.KettleXMLException
org.pentaho.di.core.exception.KettleXMLException:

Unable to load step info from XML
 at org.apache.maven.surefire.booter.ForkedBooter.main (ForkedBooter.java:121)
 at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess (ForkedBooter.java:240)
 at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader (ForkedBooter.java:286)
 at org.apache.maven.surefire.junit4.JUnit4Provider.invoke (JUnit4Provider.java:184)
 at org.apache.maven.surefire.junit4.JUnit4Provider

Unit Test Coverage
These statistics help you identify how your changes have affected the coverage of the following files. If a file is not in this list, then its coverage was not affected by your changes. To get some help interpreting these metrics, please refer to Jacoco's documentation.

:warning: Coverage Changes: <0.1% (click to expand)
:new: org.pentaho.di.core.row.value.ValueMetaConverter

Instruction Coverage: 74.3% :exclamation:
Line Coverage: 66.7% :exclamation:

org.pentaho.di.core.row.ValueMetaInterface

Instruction Change: -3.5% :small_red_triangle_down:
Line Change: -33.3% :small_red_triangle_down:

org.pentaho.di.trans.ael.websocket.MessageEventService.MessageComparator

Branch Change: -17.9% :small_red_triangle_down:
Complexity Change: -26.3% :small_red_triangle_down:
Instruction Change: -2.1% :small_red_triangle_down:

org.pentaho.di.trans.ael.websocket.StepInterfaceWebSocketEngineAdapter

Complexity Change: -22.2% :small_red_triangle_down:
Instruction Change: -17.6% :small_red_triangle_down:
Line Change: -4.7% :small_red_triangle_down:
Method Change: -22.2% :small_red_triangle_down:

org.pentaho.di.trans.ael.websocket.TransWebSocketEngineAdapter

Branch Change: -2.6% :small_red_triangle_down:
Complexity Change: -28.1% :small_red_triangle_down:
Instruction Change: -37.1% :small_red_triangle_down:
Line Change: -29.9% :small_red_triangle_down:
Method Change: -45.7% :small_red_triangle_down:

org.pentaho.di.trans.ael.websocket.Util

Complexity Change: -20% :small_red_triangle_down:
Instruction Change: -4.7% :small_red_triangle_down:
Line Change: -15.4% :small_red_triangle_down:
Method Change: -20% :small_red_triangle_down:

org.pentaho.di.trans.step.BaseStep

Branch Change: -0.5% :small_red_triangle_down:
Complexity Change: -0.5% :small_red_triangle_down:
Line Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.step.StepMeta

Branch Change: -0.7% :small_red_triangle_down:
Complexity Change: -0.6% :small_red_triangle_down:

org.pentaho.di.trans.step.StepStatus

Branch Change: -6.7% :small_red_triangle_down:
Complexity Change: -3.3% :small_red_triangle_down:
Instruction Change: -0.2% :small_red_triangle_down:

org.pentaho.di.trans.steps.accessinput.AccessInputMeta

Instruction Change: -0.2% :small_red_triangle_down:
Line Change: -0.3% :small_red_triangle_down:

org.pentaho.di.trans.steps.dbproc.DBProcMeta

Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.groupby.GroupByMeta

Branch Change: -1.1% :small_red_triangle_down:
Complexity Change: -1.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.insertupdate.InsertUpdateMeta

Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.replacestring.ReplaceStringMeta

Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.rowgenerator.RowGeneratorMeta

Instruction Change: -0.1% :small_red_triangle_down:

Note: The list of offending coverage changes extends beyond the presented results and was truncated to prevent reaching the comment size limit.

Checkstyle violations
The code submitted is not complying with one or more of our guidelines. To perform these checks locally, please use this tool.
/home/buildguy/project/core/src/main/java/org/pentaho/di/core/plugins/IValueMetaConverter.java

:heavy_exclamation_mark: Unused import - org.pentaho.di.core.row.ValueMetaInterface. at Line: 24 Column: 8

:heavy_exclamation_mark: Unused import - java.util.Set. at Line: 27 Column: 8

Build Completed
:fire: This pull request has some issues. It would be preferable to fix them in order for it to be just perfect. See below for more details. Some links are also available below for further assistance in addressing those issues.
Build Commands
mvn -Dsurefire.runOrder=alphabetical -B -fn -f 'pom.xml' -pl 'core' -P '!assemblies' -amd clean install && mvn -B -f 'pom.xml' -pl 'core' -P '!assemblies' -amd site

Cleanup Commands
mvn -B -f 'pom.xml' -pl 'core' -P '!assemblies' -amd build-helper:remove-project-artifact

Changed files
  core/src/main/java/org/pentaho/di/core/plugins/IValueMetaConverter.java
  core/src/main/java/org/pentaho/di/core/row/ValueMetaInterface.java
  core/src/main/java/org/pentaho/di/core/row/value/ValueMetaConversionException.java
  core/src/main/java/org/pentaho/di/core/row/value/ValueMetaConverter.java
  core/src/test/java/org/pentaho/di/core/row/value/ValueMetaConverterTest.java

Unit Test Coverage
These statistics help you identify how your changes have affected the coverage of the following files. If a file is not in this list, then its coverage was not affected by your changes. To get some help interpreting these metrics, please refer to Jacoco's documentation.

:warning: Coverage Changes: +0.1% (click to expand)
:new: org.pentaho.di.core.row.value.ValueMetaConverter

Instruction Coverage: 74.3% :exclamation:
Line Coverage: 66.7% :exclamation:

org.pentaho.di.core.row.ValueMetaInterface

Instruction Change: -3.5% :small_red_triangle_down:
Line Change: -33.3% :small_red_triangle_down:

org.pentaho.di.job.entries.evalfilesmetrics.JobEntryEvalFilesMetrics

Branch Change: -0.4% :small_red_triangle_down:
Complexity Change: -0.5% :small_red_triangle_down:

org.pentaho.di.trans.steps.datagrid.DataGridMeta

Branch Change: -2% :small_red_triangle_down:
Complexity Change: -1.7% :small_red_triangle_down:
Instruction Change: -0.2% :small_red_triangle_down:

org.pentaho.di.trans.steps.replacestring.ReplaceStringMeta

Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.singlethreader.SingleThreaderMeta

Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.sort.SortRowsMeta

Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.sortedmerge.SortedMergeMeta

Instruction Change: -0.2% :small_red_triangle_down:

org.pentaho.di.trans.steps.symmetriccrypto.symmetriccryptotrans.SymmetricCryptoTransMeta

Branch Change: -3.3% :small_red_triangle_down:
Complexity Change: -1.8% :small_red_triangle_down:
Instruction Change: -0.3% :small_red_triangle_down:

org.pentaho.di.www.TransformationMap

Branch Change: -3.4% :small_red_triangle_down:
Complexity Change: -3.1% :small_red_triangle_down:
Instruction Change: -1% :small_red_triangle_down:
Line Change: -1.5% :small_red_triangle_down:

org.pentaho.di.trans.steps.salesforceupdate.SalesforceUpdateMeta

Instruction Change: -0.2% :small_red_triangle_down:


Allow using theme tokens in css and styled

Currently, using theme tokens to style third-party components is impossible.
It would be nice to have possibility to write
className={css`
                      color: theme("colors.primary");
                    `}

And have theme("colors.primary") replaced with real value at the build
Alternatively, it kuma may export all theme tokens as CSS variables so you can write var(--kuma-colors-primary).

@seagullua
Absolutely, but I am pondering the API design. I would think it is easier to just write colors.primary. What do you say?

@poteboy, thanks for a quick reply.
I think the good idea will be to stick with something like theme(...) or token(...)

It will be easier to parse and harder to make the wrong replacement. For example, right now if I define breakpoint: sm. It replaces @media (... small) with @media (... 450pxall). Some keywords will solve lots of such issues.
Right now, Webstorm will show an error for colors.xxxx  but not for keywords.

Webstorm will show an error for colors.xxxx  but not for keywords

Thank you for your suggestion. I hadn't considered the potential issues with editors indicating errors for colors.xxxx, but it's certainly something worth keeping in mind.

@poteboy Do you think the implementation can take long?
I was checking the source code, and it looks like it can be straightforward. You need a regular expression to catch all theme(...) in the code and match the known keys.
I would have implemented it, but I did not figure out how to debug babel preprocessors.

@seagullua
I suspect that the theme(...) function might currently be recognized as a CSS function in your editor. Considering this, I have a concern that using a generic name like theme for this function might clash with future web standards. So, how about we opt for a more distinctive syntax such as t(...) to avoid potential naming conflicts?
Regarding debugging, it seems like the viable approach for now is to make modifications in the packages, build it, and then verify the behavior within a project in the playground directory. You might find it easier to check the AST transformations in the browser using the vite-plugin-inspect within the playground/vite project.

@poteboy Sure t() will be great as well.

@seagullua
Okay, I've assigned this issue to you. Please let me know if you encounter any difficulties implementing this.

@poteboy A few more proposals relating to this ticket

Allow shortcuts t("c.primary") as a synonym to t("colors.primary")
Lots of CSS to js libraries allow using integers instead of pixels to make a consistent UI more simple, so it may be a good idea to have. So you can basically write margin-bottom: t(1);

t(1) -> 8px
t(2) -> 16px

What do you think?

@poteboy I have submitted pull request


shaping still not working quite right with type names

The test in expr/ztests/shape-cast-alias.yaml is incorrectly designed.
The type statements should create type names in the cast type.
It looks like its behaving as if the type statements were const statements.
We should review the other shaper tests to see if they are similarly flawed.

I took yet another look and realized the problem in shape-cast-alias.yaml is that the record field "a" in the output should be of type "prec" not type 2 and the elements of the array in field "b" should be type "prec".

I took yet another look and realized the problem in shape-cast-alias.yaml is that the record field "a" in the output should be of type "prec" not type 2 and the elements of the array in field "b" should be type "prec".

Note that this test has since been renamed (#3504) and moved, so as of Zed commit f967c99 it's now in runtime/expr/ztests/shape-cast-named.yaml.

The behavior of runtime/expr/ztests/shape-cast-named.yaml at f967c99d5b82c5efba310b5c8b81bb194ff24d18 looks correct to me.


Move to bcryptjs by default and allow to pass bcrypt

This pull request uses bcryptjs by default but allows to pass the native bcrypt as an option.
Closes https://github.com/feathersjs/feathers-authentication/issues/112 and closes https://github.com/feathersjs/feathers-chat/issues/1 and should also simplify the Travis CI setup for this repository and https://github.com/feathersjs/feathers-client

I'll merge #109 later today and then merge this one as that PR has a lot more tests.

I'm going to close this and do a new PR to the 0.7 branch.


plot_nodal_solution doesn't create the animation when parameter off_screen=True

I try:
result.animate_nodal_solution(6, movie_filename='movie6.gif', cpos=cpos, loop=False,  off_screen=True, background='w')
and I got a static image of the first frame.

Could you please run the following?
>>> from ansys.mapdl.core import Report
>>> print(Report())

And let me know what the output of the report is?

Found the bug.  Expect this fixed in the next release 0.51.1.  Sorry it took so long to get around to.

Thanks!


Upstream updates

Coverage decreased (-0.01%) to 99.01% when pulling 41f0edff992c346bc546eff2c46466853edea269 on upstream-updates into 2eed81054b3089c704650b0d0ecfb4d906ed3f0f on master.


Enforce strict docs compilation and add Documentation best practices guidelines

Add missing docstrings from InfrastructureSystems.Simulation and InfrastructureSystems.Optimization submodules
Now enforces and passes Documenter.jl >1.0 quality control checks
Documentation best practices added

Closes #403

Moved to branch on main repo


Migrate this to "@prb/contracts"

I now own the @prb username on npm.

Done.
https://github.com/paulrberg/prb-contracts/commit/e0a620b8571546e375ab496f179f4e0012940398


cookbook not cookstyle compliant

I don't mean to be indoctrinating, but as this is a cookbook made by chef we should stick to common best practises? ;)
I'm willing to volunteer (first PR is already on the way) if we all agree on cookstyle rules.
Cookbook version
0.6.x
chefdk version
2.0.26
Platform Details
Mac OS Sierra
Steps to Reproduce:
$ cookstyle
Expected Result:
cookstyle should not show violations

no, its meant to go into core chef as soon as i can get around to it.  it should be chefstyle compliant, not cookstyle.


Update schema

Update schema

Pull Request Test Coverage Report for Build 3223

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

Totals

Change from base Build 3221:
0.0%

Covered Lines:
1482

Relevant Lines:
1523

💛  - Coveralls


CVE-2023-34454, CVE-2023-34453, CVE-2023-34455 fix compatibility check

Hello,
I wanted to check if there are breaking changes when updating
org.xerial.snappy:snappy-java:<IP_ADDRESS> to <IP_ADDRESS> to fix the above mentioned CVEs
Let me know.
Thanks
Sourabh

After updating from <IP_ADDRESS> to <IP_ADDRESS> native library fails to load on RHEL 7 on S390x
libsnappyjava.so: /lib64/libc.so.6: version GLIBC_2.32' not found (required by libsnappyjava.so)`.
It works on RHEL 7 x84_64 and RHEL 8 S390x though.

There should be no breaking change in terms of the usage and the API. So let me close this ticket.
The above mentioned issue belong to a different topic for an older version of Linux on s390x CPU


Prepare quickstart and reference documentation

We should have the following additional documentation:

Quickstart with a video or GIF showing (from zero to robot moving)
Cheat sheet / Quick reference card

Duplicate of #52


ClientAuthError: endpoints_resolution_error: Error: could not resolve endpoints. Please check network and try again.

Please follow the issue template below. Failure to do so will result in a delay in answering your question.

Library

[ ]<EMAIL_ADDRESS>or<EMAIL_ADDRESS>[x]<EMAIL_ADDRESS>[ ]<EMAIL_ADDRESS>[ ]<EMAIL_ADDRESS>[ ]<EMAIL_ADDRESS>
Important: Please fill in your exact version number above, e.g<EMAIL_ADDRESS>Framework
Description
This has started happening today. It used to work until now. I haven't changed anything on my code or Azure AD tenant.
Trying to get to the login page of an Azure ADB2C tenant, I get the errors below.
Also, trying to access the custom policy directly from azure adb2c site (i.e. Run now endpoint -> run now), leads to the following errors:

Error Message
Access to fetch at 'https://.b2clogin.com/.onmicrosoft.com/b2c_1a_tou_susi/v2.0/.well-known/openid-configuration' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
as well as:
Sorry, but we're having trouble signing you in.
We track these errors automatically, but if the problem persists feel free to contact us. In the meantime, please try again.
Correlation ID: 401e86e6-26d8-4f9d-9210-37588b2063e2
Timestamp: 2020-10-27 10:11:58Z
AADB2C99059: The supplied request must present a code_challenge
Security

[ ] Is this issue security related?

Regression

[x] Did this behavior work before?
Yes, it worked

Version:
MSAL Configuration
// Provide configuration values here.
// For Azure B2C issues, please include your policies.

Just regular configuration for custom policies.
Reproduction steps
// Provide relevant code snippets here.
// For Azure B2C issues, please include your policies.

I have some custom policies
Expected behavior
It should display the login page.
Browsers/Environment

[x] Chrome
[ ] Firefox
[ ] Edge
[ ] Safari
[ ] IE
[ ] Other (Please add browser name here)

It seems it has been fixed in the mean-time.
Would be nice to get feedback from Microsoft on this issue.


Documentation: wrong link to new embedding in Add Flutter to extisting apps wiki

Actual Add Flutter to extisting apps wiki documentation has wrong link in Flutter's new Android embedding chapter.
The link "the pages dedicated to the new embedding" points to not existing page: https://github.com/flutter/flutter/wiki/Experimental:-Adding-Flutter-to-Android

@xster Looks like you deleted that wiki page on November 6 with commit 7bf62f4a8f78afcc909a8dd111b4b6bccea4c6f7.  Can you update the link?

Doh, editing the title changes the permalink. Edited the reference (and left a new link in the previous permalink for when we move everything to flutter.dev).


Output of JSON and SRT are located at both audio file path and --report-path

Hi!
When transcribing with e.g.
./whisperkit-cli transcribe --skip-special-tokens --report --report-path '/Users/maxlund/whisper-reports' --chunking-strategy 'vad' --model 'large-v3_turbo_954MB' --audio-path '/Users/maxlund/audio/arthur-fx2.wav' --language 'en'

We get a JSON and SRT file as output in both the specified --model-path /Users/maxlund/whisper-reports, as well as next to the source audio file, i.e. at --audio-path '/Users/maxlund/audio/arthur-fx2.wav'.
We would expect it to only output files at the specified --report-path right?

Ummm...


ICS-721 spec updates

this implements the addition of token and class level on-chain metadata in ICS-721.
i have had to step up the abstraction level of the code to do so safely. where possible i have strived to do so without increasing complexity.
todo:
update integration tests
store and forward token and class on-chain metadata in the same way that we currently store and forward class_uri.

integration tests are actually passing on these changes, which is a nice vote of confidence for the backwards compatibility of this. there is a hardcoded gas limit in the wasmd testing framework which is much larger in the current version that is stopping these from passing in CI. i will update that shortly

closing as I am graduating this to a non-WIP PR.


CVE-2007-4559 Patch

Patching CVE-2007-4559
Hi, we are security researchers from the Advanced Research Center at Trellix. We have began a campaign to patch a widespread bug named CVE-2007-4559. CVE-2007-4559 is a 15 year old bug in the Python tarfile package. By using extract() or extractall() on a tarfile object without sanitizing input, a maliciously crafted .tar file could perform a directory path traversal attack. We found at least one unsantized extractall() in your codebase and are providing a patch for you via pull request. The patch essentially checks to see if all tarfile members will be extracted safely and throws an exception otherwise. We encourage you to use this patch or your own solution to secure against CVE-2007-4559. Further technical information about the vulnerability can be found in this blog.
If you have further questions you may contact us through this projects lead researcher Kasimir Schulz.

@TrellixVulnTeam Thanks for the warning. We will rework the code a bit before merging.

Added changes in https://github.com/QuTech-Delft/qne-adk/pull/53

A solution is merged (https://github.com/QuTech-Delft/qne-adk/pull/53). This pull request can be closed


[Feature] Get the first entity from an album

It would be much better if we can get first image of album, as we already listing album title and also count of images/videos in that album
Currently I am using await albums[0].getAssetListPaged(currentPage, 0); but it would be much better if it will be built in thing

Totally agree

This is actually a method that would makes side effects.
Considering we have a method like AssetPathEntity.getTheFirstEntity that return the first AssetEntity in this album. Now if a user is implementing a picker that both show entities list and the first entity's thumbnail, may found this method and use it directly with the list method without hesitation since it's very useful.
But the user might never noticed that instead of a separate request, the user can directly use the first entity that returned from the list, which improves the performance in the loading queue.
AFAIK the request of this implementation has less popularity then other regular requests, so I suggest to use APIs as provided currently.

Closing since we don't have the intention to implement this.


Add Jacoco Coverage Provider

Fixes #99

Will reopen after fixing test

@ChaitanyaPramod what happened to this PR?

Coverage decreased (-6.2%) to 84.595% when pulling 81b84aaad95235aadcfc2a45dfc82f29ff9f6e81 on ChaitanyaPramod:add_jacoco_support into 5f39fa8660dd9c69d727f1233576be6a6d51160c on uber:master.

Thanks for reviving this PR!

@ChaitanyaPramod plans to finish the test in the PR? Planning to cut a release soon and would be good to get this merged before that

Finally in working state.

I'd like the test finished before merging, would give me lot more peace of mind. Will not be able to spend more time on this until the next weekend. Contributions to tests are welcome. (I'd use uncovered lines as guide)
Would encourage community to try this out and report bugs, if any before merging.

The Java 7 test fails on CI, but works locally. The CI uses older version of Java (1.7.0_121) which doesn't have TLS 1.2 enabled by default, and hence is not able to connect to now TLS 1.2 only maven repositories.
The trusty images have newer Java but that seems to be a problem for us (#237) as well.

@kageiit's earlier concerns have been addressed and the PR is ready for review.
PS: I think we should close #266 before merging the other PRs

@ChaitanyaPramod ci issues should be fixed. Can you please rebase?

@kageiit Rebased, and the CI build has succeeded.


SchemaUpdate: Kube spec only supports cassandra for schema update job

As the title says, the schema update job rendering is broken, as-is if a user is not using cassandra, then the update job will attempt to start the temporal server since the container receives no args.
https://github.com/temporalio/helm-charts/blob/ca48bfe7e9c1619ac2f2a3a72ca8c991c8922054/templates/server-job.yaml#L168-L171
versus:
https://github.com/temporalio/helm-charts/blob/ca48bfe7e9c1619ac2f2a3a72ca8c991c8922054/templates/server-job.yaml#L86

other users have documented non-cassandra modifications for now, see https://github.com/temporalio/helm-charts/issues?q=sort%3Aupdated-desc+label%3AAlternative+is%3Aclosed


MRG: Fix raw cov

Found a bug in our raw covariance code. In previous versions (i.e., before my big changes a couple of months ago):

Docstring was wrong, it only used data channels (and included bads).

It didn't actually do e.g. EOG rejection before even if you supplied the keys. Now it does.

Now in master we get an error message if picks is None and we reject based on EOG. This makes it still do that rejection, but only compute the covariance for data channels, which I think is the default behavior we want actually.

Coverage decreased (-8.8%) to 82.01% when pulling 66cd5ff71cea8de1332a9605c7506f56ec378f39 on Eric89GXL:fix-raw-cov into 5346d694acc187c5407cd2356db31eba9721f1f7 on mne-tools:master.

Maybe document whatsnew? Apart from this LGTM.

thx @Eric89GXL for the fix.

Coverage decreased (-8.8%) to 82.009% when pulling 239ce5c1b346061dbf07c7565a8d65da8cdee95f on Eric89GXL:fix-raw-cov into 5346d694acc187c5407cd2356db31eba9721f1f7 on mne-tools:master.

Thanks for the quick reviews


add youtube and mastodon to social links

What happened

Add youtube to social links
Add mastodon to social links (I didn't use it much this year, but I imagine by next year, tooling will have improved to be easily able to hook it up to Buffer, etc)
Simplified URLs
Added tooltips

Insight
N/A
Proof Of Work

Since I do not want to update the archived version of the site again, I will merge this along with the transformation for the 2023 website.


[dart2js] Unused fields are not tree-shaken off, sensitive to type annotations

INPUT:
main() {
  print(new Foo().hello);
}
class Bar {
  String txt = " World";
}
class Foo {
  String _hello;
  Bar _world;  // never initialized
  String get hello {
    if (_hello == null) {
      _hello = "Hello";
    }
    return _hello;
  }
  String get world {
    if (_world == null) {
      _world = new Bar();
    }
    return _world.txt;
  }
}
OUTPUT (reformatted):
main(){
  print(new Foo().hello);
}
class Bar{}  // Expected Bar to be gone.
             // However, it will be gone if I change type of _world to "var".
             // Nice to see txt tree-shaken off.
class Foo{
  String _hello;  // Used, so it stays.
  Bar _world;  // Not used, expected to be gone
  String get hello{
    if(_hello==null) {
      _hello="Hello";
    }
    return _hello;
  }
}

This issue was misclassified. Reopening and moving to dart2js.

I just ran into the issue, only I was seeing it where unused fields from the superclass overridden by getters/setters in a subclass are not tree-shaken, and are still present in the JS constructor initializer list.
For example,
class A {
  int a;
}
class B extends A {
  int get a => ...;
  set a(int value) => ...;
}

For more context on my use-case, see the "Leaving behind fields" section here: https://github.com/dart-lang/build/issues/897#issuecomment-365807794
I was thinking https://github.com/dart-lang/sdk/issues/21450 may mitigate this issue, but it would be nice to solve the issue and eliminate these fields completely.

Looks like the above example still reproduces on Dart 1.24.3, with some tweaks to prevent the Foo class from being fully optimized out:
main() {
  var foo = new Foo();
  print('$foo ${foo.hello}');
}

class Bar {
  String txt = " World";
}

class Foo {
  String _hello;
  Bar _world; // never initialized
  String get hello {
    if (_hello == null) {
      _hello = "Hello";
    }
    return _hello;
  }
  String get world {
    if (_world == null) {
      _world = new Bar();
    }
    return _world.txt;
  }
}

dart2js output
["", "reduced.dart",, T, {
  "^": "",
    main: function() {
    H.printString(H.Primitives_objectToHumanReadableString(new T.Foo(null, null)) + " hello");
  },
  Foo: {
    "^": "Object;_hello,_world"
   }
}, 1]

dart2js constructor retrieved by stepping into it at runtime
function Foo(p__hello, p__world) {
this._hello = p__hello;
this._world = p__world;
}
Foo.builtin$cls="Foo";
$desc=$collectedClasses.Foo[1];
Foo.prototype = $desc;

/cc @matanlurey who has been looking into tree-shaking issues not long ago

These examples no longe reproduce in Dart2JS. Closing


[openapi importer] Use request body shorthand when applicable

Instead of
request:
  body: MyType

We should generate
request: MyType

fixed by openapi-importer-v2


Scheduling GPUs task not marked as containing 3rd party content.

This is a Bug Report

Problem:
https://kubernetes.io/docs/tasks/manage-gpus/scheduling-gpus/ doesn't have our disclaimer for 3rd party content.
Proposed Solution:
Add a third party content disclaimer.  See https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/ for an example.
Page to Update:
https://kubernetes.io/docs/tasks/manage-gpus/scheduling-gpus/

Additional Information:
/language en
/help
/triage accepted

Separately, it would be good if https://kubernetes.io/docs/tasks/manage-gpus/scheduling-gpus/ didn't include advice about installing the plugins. Instead, we can hyperlink to the vendors' own docs (where those exist).


add --busco error with examples dataset

Hello,
I'm actually testing your tool with the data included in the examples/ folder. But the cmd
blobtools add --busco examples/busco.tsv AssemblyName

return the following message:
Traceback (most recent call last):
  File "/home/trottier-c/Documents/blobtools2/lib/add.py", line 131, in <module>
    main()
  File "/home/trottier-c/Documents/blobtools2/lib/add.py", line 98, in main
    meta=meta)
  File "/home/trottier-c/Documents/blobtools2/lib/busco.py", line 49, in parse
    parsed.append(parse_busco(file, identifiers=kwargs['dependencies']['identifiers']))
  File "/home/trottier-c/Documents/blobtools2/lib/busco.py", line 22, in parse_busco
    meta['set'] = re.search(r'-l.+\/(\w+_odb\d+)\/', meta['command'])[1]
TypeError: 'NoneType' object is not subscriptable

Thanks

Thanks for pointing this out - it seems that I was expecting a leading slash in the path to the BUSCO lineage even though my example file has no such slash.  I think the updated regex should be more robust.

Hello,
I am having problem with adding BUSCO results to my BlobDir. This is my cmd:
../../tools/blobtools2/blobtools add --busco chinease_busco/run_metazoa_odb10/full_table.tsv CHINEASE/
and the error message:
Traceback (most recent call last):
File "/Data/jadzia/tools/blobtools2/lib/add.py", line 147, in
main()
File "/Data/jadzia/tools/blobtools2/lib/add.py", line 114, in main
meta=meta)
File "/Data/jadzia/tools/blobtools2/lib/busco.py", line 49, in parse
parsed.append(parse_busco(file, identifiers=kwargs['dependencies']['identifiers']))
File "/Data/jadzia/tools/blobtools2/lib/busco.py", line 19, in parse_busco
'command': lines[2].split(':')[1].strip(),
IndexError: list index out of range
I would be grateful for any informations.

Hi
From the odb10 lineage name, I'm assuming that you have run BUSCO v4. I've not actually tested this yet as there were a few reports of problems with the initial release so I was waiting for things to settle down. The import parses some values from the file header that have presumably moved around in the latest version.
I'll do a test run in the next few days and take a look at what needs to change to get the import working. If you could share the first few lines of your output tsv, I could take a look sooner and hopefully find a way to get this working again.

Thanks for your quick respond. Indeed, the output file produced by BUSCO v4. is little bit different than the one in example:
BUSCO version is: 4.0.2
The lineage dataset is: metazoa_odb10 (Creation date: 2019-11-20, number of species: 65, number of BUSCOs: 954)
Busco id	Status	Sequence	Gene Start	Gene End	Score	Length
5951at33208a	Complete	NW_017545502.1:996991-1011040	996991	1011040	4366.1	2082
9639at33208a	Complete	NC_031728.1:16590681-16599049	16590681	16599049	1247.3	707
9639at33208a	Complete	NC_031728.1:16544518-16560864	16544518	16560864	1191.3	786
9639at33208a	Complete	NW_017545308.1:369178-377546	369178	377546	1247.3	707
9639at33208a	Complete	NW_017545308.1:323015-339361	323015	339361	1191.3	786
13816at33208a	Complete	NW_017538059.1:42873-85704	42873	85704	1055.9	1044
14776at33208a	Complete	NW_017539969.1:207686-236481	207686	236481	1912.9	1075

Thanks, looks like this should be straightforward to fix.
The v3 files used to include the command that was run and I parsed the lineage from there as nematoda_odb9 used to be misreported as metazoa_odb9 in some versions. I'll test for the version and parse the summary instead for v4.

Importing BUSCO v4 files should now be working.

Thanks a lot! It works like a dream :)

Hello,
I first wanted to thank you for the software and for help us with all our questions.
I'm also having problems to add my busco results (full_table.tsv) to the BlobDir. I'm using busco/5.0.0 and different lineages (odb10).
 However, when I try to add the  bacteria_odb10, I have this error:
Traceback (most recent call last):
  File "//prg/blobtools/2/blobtools2/lib/add.py", line 165, in <module>
    main()
  File "//prg/blobtools/2/blobtools2/lib/add.py", line 132, in main
    meta=meta)
  File "/prg/blobtools/2/blobtools2/lib/busco.py", line 63, in parse
    parsed.append(parse_busco(file, identifiers=kwargs['dependencies']['identifiers']))
  File "/prg/blobtools/2/blobtools2/lib/busco.py", line 47, in parse_busco
    raise UserWarning('Contig names in the Busco file did not match dataset identifiers.')
UserWarning: Contig names in the Busco file did not match dataset identifiers.

Do you think it is due to my data? I have maybe done something wrong using Busco for bacteria_odb10. In fact, I have the same error for archae and alphaproteobacteria, but it works well for fungi, chlorophyta. I would really appreciate if you could let me know how to solve it :)
Thank you very much!
Marta

I've not run this with Busco v5 yet, or with the bacteria busco set so I don't know exactly what is causing the problem here - could you share the first few lines of each file so I can look to see if there is anything obvious?

Thank you for your quick answer.
Here you have the first lines of the file (full_table.tsv) generated by busco v5 for bacteria (-l bacteria_odb10 ). I can not add it to BlobDir
# BUSCO version is: 5.0.0
# The lineage dataset is: bacteria_odb10 (Creation date: 2020-03-06, number of species: 4085, number of BUSCOs: 124)
# Busco id	Status	Sequence	Gene Start	Gene End	Strand	Score	Length	OrthoDB url	Description
4421at2	Fragmented	NODE_69_length_176844_cov_138.180232_54	79150	84813	-	504.4	455	https://www.orthodb.org/v10?query=4421at2	DNA-directed RNA polymerase subunit beta'
9601at2	Complete	NODE_69_length_176844_cov_138.180232_56	85450	90522	-	800.4	766	https://www.orthodb.org/v10?query=9601at2	DNA-directed RNA polymerase subunit beta
26038at2	Fragmented	NODE_56_length_226981_cov_26.278532_274	163671	165086	-	133.2	184	https://www.orthodb.org/v10?query=26038at2	phosphoribosylformylglycinamidine synthase
91428at2	Fragmented	NODE_15_length_499517_cov_26.539204_155	104390	106831	+	327.5	453	https://www.orthodb.org/v10?query=91428at2	alanine--tRNA ligase
95696at2	Missing
143460at2	Missing
182107at2	Missing
219876at2	Missing
223233at2	Fragmented	NODE_26594_length_745_cov_0.860841_1	3	743	-	132.2	151	https://www.orthodb.org/v10?query=223233at2	DNA topoisomerase I
226836at2	Missing
232152at2	Fragmented	NODE_32517_length_636_cov_0.905697_1	2	634	+	128.6	122	https://www.orthodb.org/v10?query=232152at2	adenylosuccinate synthase
267682at2	Fragmented	NODE_13_length_524813_cov_24.112791_58	63486	63806	+	74.4	64	https://www.orthodb.org/v10?query=267682at2	amidophosphoribosyltransferase
353391at2	Complete	NODE_81_length_139772_cov_18.442601_72	106034	108076	+	194.3	292	https://www.orthodb.org/v10?query=353391at2	serine--tRNA ligase
384865at2	Fragmented	NODE_34851_length_603_cov_1.142857_1	1	603	-	100.4	78	https://www.orthodb.org/v10?query=384865at2	Transcription termination/antitermination protein NusA
402899at2	Fragmented	NODE_56903_length_428_cov_1.551495_1	1	426	-	76.0	88	https://www.orthodb.org/v10?query=402899at2	tyrosine--tRNA ligase
430176at2	Complete	NODE_69_length_176844_cov_138.180232_49	63139	64602	-	562.5	359	https://www.orthodb.org/v10?query=430176at2	ATP synthase subunit beta
462069at2	Complete	NODE_52_length_232158_cov_26.536062_270	171211	172362	-	116.4	198	https://www.orthodb.org/v10?query=462069at2	phosphoglycerate kinase

And this is the file generated by busco v5 for Eukariotas. I can add it to the BlobDir.
# BUSCO version is: 5.0.0
# The lineage dataset is: eukaryota_odb10 (Creation date: 2020-09-10, number of species: 70, number of BUSCOs: 255)
# Busco id	Status	Sequence	Gene Start	Gene End	Strand	Score	Length
39650at2759	Complete	NODE_61_length_215307_cov_26.637452	119693	126669	+	2105.0	1421
83779at2759	Complete	NODE_25_length_385454_cov_25.561783	248119	251791	-	233.7	224
87842at2759	Complete	NODE_67_length_178363_cov_27.274131	41366	47001	+	543.2	583
97116at2759	Complete	NODE_32_length_353141_cov_24.859484	127175	131541	+	1194.6	954
100698at2759	Complete	NODE_85_length_132933_cov_24.389320	45486	48617	+	801.4	499
142542at2759	Complete	NODE_12_length_546856_cov_25.532480	299506	307873	-	512.4	560
156083at2759	Complete	NODE_1_length_1010648_cov_26.219626	187543	195091	-	3615.6	1944
160593at2759	Complete	NODE_139_length_39920_cov_17.621441	17625	27419	+	1456.2	1318
166920at2759	Complete	NODE_6_length_630289_cov_26.683412	339059	349005	-	640.4	746
176625at2759	Complete	NODE_46_length_247800_cov_25.144820	49632	53250	-	306.4	461
179362at2759	Complete	NODE_1_length_1010648_cov_26.219626	971663	976975	-	673.6	1090

Thanks again, and pleases, let me know if you need something else.
Regards!

Looks like the problem is that all the sequence names in the eukaryota file have names like NODE_61_length_215307_cov_26.637452, but the ones in the bacteria file have an extra number appended at the end (e.g. NODE_69_length_176844_cov_138.180232_54) so they don't match you input sequence names exactly.
Not sure why this is, but I expect that the bacteria results should import if you were to remove this trailing number.

Thank you rjchallis,
As you said, it works if I remove them.  Anyway, I'll let you know if I find a way to avoid that change on contig names. It would be easier.
Regards!

Here we have the reason of the change on contig names:
https://gitlab.com/ezlab/busco/-/issues/411#note_521116000
Thanks again!


Creating heroku app fails

This morning I started with the new Insta API and I found this token agent. It looks very helpful, however, I stumbled upon some problems. I followed the steps given to create a Heroku app but every time I see these errors:

Create app: App creation failed. Please ensure you have valid values in the above form fields.

Configure environment: Please verify your account to install this add-on plan (please enter a credit card) For more information, see https://devcenter.heroku.com/categories/billing Verify now at https://heroku.com/verify

I do not want to add my payment details to verify my account as I am just trying to figure out how to implement the new Insta API. And besides that, I cannot find any pricing information on the Heroku website. Is there any way to skip this "verify your account" thing?
I am sure I filled in all the fields as explained in the steps given. The "Starting token" is the very long token that can be generated at the "User Token Generator" section? Right?

@RobinOTYS There are no Heroku costs associated with deploying the Instagam Token Agent as it makes use of a free dyno. And I don't think there will be another way of verifying your account other than adding your credit card information.

OK, as I understand there is no way around the verification with CC, I've added CC credentials :)

Great, thanks for your help @ferremek .
I'm currently waiting on a review of the app by Heroku - please see #13 for status there.


Request Mempool Only Once From Peer

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#1325  👈
#1324
#1321
feature/proof-of-stake

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

Join @tholonious and the rest of your teammates on  Graphite

Merge activity

May 15, 7:17 PM EDT: @tholonious started a stack merge that includes this pull request via Graphite.


Information for IgnoreLogBackups parameter in Get-DBABackupInformation does not make sense

General Troubleshooting steps

[ x] Verified running the latest release of dbatools? 0.9.188

https://github.com/sqlcollaborative/dbatools/blob/master/functions/Get-DbaBackupInformation.ps1#L60
Sat with a client and can't make sense of @Stuart-Moore Help statement
This switch only works with MaintenanceSoltion, as we can then now that all file in LOG are to be ignored.

Fixed in #3032


crypto/x509 How to convert x509.Certificate to tls.Certificate and make a request with it.

I decode a .p12 file into an x509.Certificate with pkcs12 package, and then make a request like this:
func PostAsBytesWithCert(url, data, mime string, cert *x509.Certificate) ([]byte, error) {
	tlsConfig := &tls.Config{
		Certificates: []tls.Certificate{tls.Certificate{
			Certificate: [][]byte{cert.Raw},
		}},
	}

	tr := &http.Transport{TLSClientConfig: tlsConfig}
	client := &http.Client{Transport: tr}

	resp, err := client.Post(url, mime, strings.NewReader(data))
	if err != nil {
		return nil, err
	}

	defer resp.Body.Close()

	bytes, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}

	return bytes, nil
}

However, it run into an error: tls: client certificate private key of type  does not implement crypto.Signer

These looks more like a question than a bug or proposal. You will have more luck getting answers in one of the sources listed here: https://golang.org/wiki/Questions
Unless I'm wrong, please consider closing this and posting your question there.

As noted above, the Go project does not use its bug tracker for general discussion or asking questions about the language. The Github bug tracker is only used for tracking bugs and proposals going through the Proposal Process.
Closing, since this is not a bug report.


Mouse not rendering over adobe photoshop / exel

Hi, i tried to work in photoshop truth myrtille, but mouse cursor not rendering properly.
Photoshop:

Also in Excel same problem:

Over classical RDP all working fine

Yes, there are mouse cursor issues on some applications (see https://github.com/cedrozor/myrtille/issues/161). Unfortunately, I never found what is the problem exactly :/ you can try to disable the mouse cursor shadow server side (https://www.thewindowsclub.com/enable-disable-mouse-pointer-shadow-windows), it proved to work sometimes

I'm experiencing this same issue in Ubuntu clients as well.It's pretty bad within Affinity Designer and makes it pretty hard to use. Of interesting note, however, is that I also have Fusion 360 up and running, and it seems to work just fine with cursors. Almost seems like it's only certain cursors that do this. I saw you mentioned this seems to be a Linux specific problem, could it have to do with certain themes missing certain cursors? Not sure how this works, just trying to think of a possible solution as I'd really like to keep using Myrtille but this is definitely a big deal and makes apps pretty hard to use.

Also, mouse cursor shadow did not seem to help in my instance :/

It may indeed be due to some cursors unavailable on the RDP client side (the Myrtille machine). What you can do is check for .cur files with your application(s) and copy them into C:\Windows\Cursors (assuming C: is the system drive) on the Myrtille machine.
See https://www.howtogeek.com/664962/how-to-change-your-mouse-cursor-theme-on-windows-10/ for more details with custom cursors and cursors themes.

Trying to look into this more, and I have some confusion. Where would I go about locating .cur files for my application? Is there a normal place they're stored in? Also, I just have to make a copy of them in Windows\Cursors, and myrtille will pass them client side? My client is Ubuntu, and at first I thought you were saying I would have to download the cursors to my Ubuntu machine, but it sounds like I just need to copy them to the correct directory on the server in this case. Can you please give me more insight?

Indeed, by client I meant the machine running Myrtille, not the end user machine (running the browser). The mouse cursor .cur data is streamed into the browser, then updated accordingly. Your application either use custom cursors, only present into the application path, or copied into the C:\Windows\Cursors path.
First search for .cur files into your application path on the remote server. If there are none, copy the whole C:\Windows\Cursors folder from the remote server to the Myrtille machine, same location (make a backup first).

@cedrozor In my case I have Myrtille service and Excel both installed on the same machine/server. Could you please advise what needs to copied where?

@cedrozor - Hello. We too are experiencing this issue of a blurry cursor when we run Myrtille on Windows Server 2022. The issue does not occur on when we run Myrtille on Windows Server 2012 or Windows Server 2019 servers -  it only happens on our Windows Server 2022 boxes. Any suggestions will be greatly appreciated.
https://github.com/cedrozor/myrtille/assets/170148408/7e1351f7-90d6-4f19-988a-7eead0bbf0bc


Isn't there any Changelog?

So, I am working on a project that makes use of this carousel and we're using version 0.1.36, and my idea was to update to last version. But I don't see any kind of changelog, so I dunno which bugs were solved neither if there is any breaking change.
Would be great to include a Changelog on the project. And if you can resume me if there is anything I should now before update, I would appreciate.

Changelog file has been added


Investigate API support for kernel startup prehook

This would allow extensions to run extra workloads before the kernel is started

the Proposed API has been added and Synpase team have managed to adopt this API and verified that it works as expected.


Reduce precommit test timeouts for Java and Go.

Java tests were taking the whole 4 hours and timing out.
Successful run times:
Java Gradle: 70m
Java Maven: 130m
Go Gradle: 10m

Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Make sure there is a JIRA issue filed for the change (usually before you start working on it).  Trivial changes like typos do not require a JIRA issue.  Your pull request should address just this issue, without pulling in other changes.
[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue.
[ ] Write a pull request description that is detailed enough to understand:

[ ] What the pull request does
[ ] Why it does it
[ ] How it does it
[ ] Why this approach

[ ] Run mvn clean verify to make sure basic checks pass. A more thorough check will be performed on your pull request automatically.
[x] Each commit in the pull request should have a meaningful subject line and body.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

R: @lukecwik


EB-314: Make pagination possible for species search

Hey!
I seem to have pagination setup now with pure vanilla JS (nope, not http://vanilla-js.com/ ;) ), it was a great learning experience :).
The dev site also currently displays what it looks like:

Overview:

Whether to paginate is controlled by the number of species and the maxSpeciesPerPage param in the hugo/config.yaml. If pagination is not applied (e.g. maxSpeciesPerPage > 6, then the search etc.. still works and so do the playwright tests).
A JSON file containing info needed to build each species card is created at build using the hugo/layouts/index.json.json template file. This is loaded upon loading the page. The hugo/config.yaml has some params for this file.
The hugo/layouts/index.html decides whether to add the HTML for the pagination buttons based on the maxSpeciesPerPage param.
The script hugo/assets/js/species_cards.js handles the filtering/sorting/display etc..

With hugo/assets/js/species_cards.js:
On load:

JSON data with all species attributes fetched ('index.json.json' defines the structure of the data)
Species cards populated with this data

Once loaded:

Event listeners created for search box, dropdown and pagination (if pagination exists).

Playwright:

Tests work with and without pagination, when no pagination present, some tests return early.

Before merging:

Currently maxSpeciesPerPage is set to 2, so you can see what it looks like with pagination. I think we should set this to at least 8 before merging, otherwise it looks a little weird.

@RMCrean the pagination looks great! The screenshot shared shows two cards. Would it be possible to set that 4 cards are shown by default, when card filtering is not triggered by the search bar?

@RMCrean the pagination looks great! I suggest to set that 4 cards (or multiples of 4) are shown by default, when card filtering is not triggered by the search bar, so the webpage looks balanced.

Thanks @apfuentes! :) Yes the current setting of 2 per page is temporary (just to help illustrate the pagination works). I definitely agree with the multiple of 4 idea and personally think before 9 species we should still not have any pagination (open for alternatives). I suggested in my PR comment above that once we're happy to merge we set the maxSpeciesPerPage inside hugo/config.yaml to 8, which would effectively do that. Does that sound like a good point to paginate to you?

I unfortunately won't have the time to do a detailed code review this morning, so I will postpone it to after our discussion on Friday at in the meantime share another idea (elaborating on the above).
One way to think about the problem is to model the interface state as a data structure:
state = {
  species,
  currentPage,
  pageSize,
  sortKey,
  sortOrder,
  searchString
}

Given this information, a root node and a species template, we have all we need to render the view (Iet's set aside the nav controls for now). In other words:
function render(state, root, template) {
  // Clear the content of root
  // Render species templates under
  // Append to root
}

Then a perhaps slightly inefficient but very simple way to reason "functionally" about the problem: UI events update the state, and every time the state changes we call render() Then a lot of the logic is represented by state -> state functions that are easy to test and reason about.
A more sophisticated introduction to these ideas: the Redux three principles
And a final suggestion: perhaps you have already implemented it, but you could consider implementing "debouncing" of the search : do not trigger the search on every keystroke, only when the user has finished typing...

Thanks for the ideas here and the chat on slack, I see what you mean and am up for having a go implementing a version of this. I'll mark this PR as a draft for now (and make some changes), and then when I think I've made some progress I can request another review.
I think I'll focus first on the HTML

And a final suggestion: perhaps you have already implemented it, but you could consider implementing "debouncing" of the search : do not trigger the search on every keystroke, only when the user has finished typing...

I hadn't considered this no, I will look into it.

Hey Quentin, I think I'm ready for round 2 now. I've now adapted the code quite a bit.
I really like the <template> element, so I decided to use it for both the species cards and for the dropdown button active text (to help further reduce DOM manipulation with JS) :) .
Now on page load:

The info needed to search and order the species cards is taken from each
The render function is run to display cards.

Event listeners:

Function in a similar way as before with the exception that I have now added debouncing to the species search. Googling says a 200 ms delay is lagom and that seemed okay to me.

Other Notes:

In your example code you passed arguments into your render function whereas I have just written the functions to directly interact with the state.[object_name]. I suppose there are pros and cons to both (the code I have written is more tightly coupled because of it I suppose). I'm happy to change it to the other way round if you prefer.
I decided against using a <script> tag in the HTML so that we can slowly but surely work towards the content security policy JIRA task, but the need for the JSON species file is gone now at least :).

P.S. I have a minor question for you about variable naming (it doesn't feel as obvious to me when to use ALL_CAPS and not as compared with Python) - it's a code comment on this PR.

Thanks @kwentine, this has been a really fun exercise and no doubt beneficial for my coding too.
I especially enjoyed trying to isolate the code to be more testable and learning about things like <template>. If times allows for it later I'll probably try and apply some of these principles to the other bits of JS code we have in the Hugo site.
Again, I really appreciate all the pointers and tips!
Feel free to take a look if you want (commit 037f546fdec9233c211850501e05e264e72693e1 has the bulk of the changes) but otherwise I'm happy to merge at this point :)

Let's merge this, thanks and congrats for great work! Really appreciate that you went the extra mile in 037f546, all this refactoring took a lot of perseverance :)  🚀 🚀 ⏮ 📄 ⏭


Ability to define default values (from SSH config)

Describe the feature

Ability to define default values
These default values will be used for all newly created connections (and for connections without overrides?)
Reuse connection form?

Or why not creating a "default" connection for each group?

The connection could be named "DEFAULT" and all parameters will be applied if child connection doesn't have parameters set.
A "DEFAULT" connection without any group is also applied to all connections even inside groups
Parameters set order : ALL -> GROUP -> CONNECTION

In order to reduce complexity of the implementation, default values will be picked from #327 ssh config

Swift Library to parse SSH config

https://github.com/xxlabaza/SshConfig
https://github.com/yury/SSHConfig

WebSSH Supported SSH Config Parameters : https://webssh.net/documentation/help/SSH/ssh-config-file/#supported-features

I'm reopening this issue because a lot of parameters are not yet available under the SSH Config


feature required: dubbo should consider empty protection.

when register center lost all provider instance , it's doesn't mean that the consumers are all disconnected from the providers,so the method  refreshInvoker(List invokerUrls) ; in registrydirectory is not so fault tolerance.the method code is :
` private void refreshInvoker(List invokerUrls) {
    if (invokerUrls != null && invokerUrls.size() == 1 && invokerUrls.get(0) != null

            && Constants.EMPTY_PROTOCOL.equals(invokerUrls.get(0).getProtocol())) {

        this.forbidden = true; // Forbid to access

        this.methodInvokerMap = null; // Set the method invoker map to null

        destroyAllInvokers(); // Close all invokers

    } else {
     ......

`
here when invokerUrls  is empty ,all the invokers are destryed, but in fact,ignore it  will be more fault tolerance.

dubbo already considered this scenario:
            if (invokerUrls.isEmpty() && this.cachedInvokerUrls != null) {
                invokerUrls.addAll(this.cachedInvokerUrls);
            } else {
                this.cachedInvokerUrls = new HashSet<URL>();
                this.cachedInvokerUrls.addAll(invokerUrls);//Cached invoker urls, convenient for comparison
            }
            if (invokerUrls.isEmpty()) {
                return;
            }

if the addresses from the register center is empty, then the cached address list cachedInvokerUrls will be used.
feel free to reopen this issue if you do not agree.

but when register center lost all provider instance , invokerUrls will not be empty,it has one element and the protocol is Constants.EMPTY_PROTOCOL,so the code may not be right.

with which registry center did you experience the problem? we may need to discuss this further.

` ChildListener zkListener = listeners.get(listener);
                if (zkListener == null) {

                    listeners.putIfAbsent(listener, new ChildListener() {

                        public void childChanged(String parentPath, List<String> currentChilds) {

                            ZookeeperRegistry.this.notify(url, listener, toUrlsWithEmpty(url, parentPath, currentChilds));

                        }

                    });

                    zkListener = listeners.get(listener);

                }

                zkClient.create(path, false);

                List<String> children = zkClient.addChildListener(path, zkListener);

                if (children != null) {

                    urls.addAll(toUrlsWithEmpty(url, path, children));

                }`

zookeeper ,sorry to did not say clearly at the beginning

here when invokerUrls is empty ,all the invokers are destryed, but in fact,ignore it will be more fault tolerance.

What if we want to clear all invokers when receive a empty list from the registry center? Do you think we should introduce a new mechanism:

When we want to clear invokers, send a signal explicitly.
Without an explicit signal, keep using the invokers from the last notification.

If this mechanism is what you want, do you have any suggestions on how to achieve this?

registry  just provide infomation about providers ,but don't control the real action that the consumer should take,so just let the consumer to control the lifecycle of the invokers,for examples, use timeout or fuse strategy  when it's only has 'bad data' .

I re-examine the code, and I apologize for my mis-interpretation for
            if (invokerUrls.isEmpty() && this.cachedInvokerUrls != null) {
                invokerUrls.addAll(this.cachedInvokerUrls);
            } else {
                this.cachedInvokerUrls = new HashSet<URL>();
                this.cachedInvokerUrls.addAll(invokerUrls);//Cached invoker urls, convenient for comparison
            }
            if (invokerUrls.isEmpty()) {
                return;
            }

Dubbo doesn't have protection mechanism when empty set of addresses is pushed. We should consider it.

Agree with your "bad data better than to lose all data" theory.
My question is, if we always keep the "bad data", for example, if we don't destroy all invokers when receive an empty url list, when should we clear all invokers, shouldn't there be another signal? In some scenarios, e.g., Graceful Shutdown, Offline, we need to destroy all invokers.

I think we can keep bad data, call it in the original way, destroy the caller, in the Provider there is a readonly mechanism to end the caller, or gracefully go offline to end the caller, and the life cycle of the caller should not be over Controlled by the data in the registry

@chickenlj
If there is no objection to this, I will change this mechanism in the next version.

There are some potential problem if we add empty protection. If there is really no address available, a lot of meanless connections will be created due to empty protection. This will take up a lot of threads to wait for connection timeout, which will affect other normal invocations or even cause the whole application hang up.

@AlbumenJ
I agree with your concerns. Indefinite space protection will cause some connections to be unreleased. We can try to assume a scenario where no connection is available:
1、The provider goes offline normally: In this scenario, readonly will be sent to the consumer in theory, and the connection can be released at this time
2、The provider went offline abnormally and did not send readonly: This scenario theoretically requires some keep-alive mechanism on the consumer side to release the connection
3、The exception of the registry leads to the push of empty connections: In this scenario, we should ensure that the existing links can communicate normally, rather than destroying them.

side effect of empty protection:  consumer always reconnect destroyed provider (include those providers which URL were already changed)
https://github.com/apache/dubbo/issues/9623
https://github.com/apache/dubbo/issues/8752


Initializing with no mobiledoc dies after entering 2 characters

I've initialized the editor without an initial mobiledoc as follows:
let editor = new ContentKit.Editor(element, {});

All looks fine on the first keypress, but as soon as the second one is entered I get:

The element here appears to be the document itself, so it looks like it's walking up out of the editor and not stopping until it hits the root.
It seems to be that collectMarkups is being called with the textNode and rootNode being the same and then immediately calls currentNode = textNode.parentNode and so has now escaped the editor.
Should this check if textNode === rootNode first, or is the problem higher up?

@rlivsey Thanks for the report — the element in the Editor constructor should be something that you choose deliberately. Can you explain what you mean when you say it appears to be the document?
The element passed to the constructor should be a dom node directly, as well — the result of a document.getElementById call.

Here's the exact code I've got here, it's a shiny new Ember app using 1.13.5 using content-kit-editor which is npm linked into the project from a local build of master. Running on Safari & Chrome both have the same error.
// app/components/content-editor/component.js
import Ember from 'ember';

export default Ember.Component.extend({
  didInsertElement() {
    const element = this.$(".editor")[0];
    this.editor = new ContentKit.Editor(element, {});
  },

  willDestroyElement() {
    this.editor.destroy();
  }
});

{{content-editor}}

Running that and then entering two characters causes the error.
normalizeTagName is called with undefined, because document doesn't have a tag name.
It appears to get document because collectMarkups in reparseSection ends up being called with the same textNode as rootNode and immediately grabs the parentNode from textNode.
    // here textNode === rootNode
    const  collectMarkups = (textNode, rootNode) =>{
      let markups = [];
      let currentNode = textNode.parentNode;
      while (currentNode && currentNode !== rootNode) {  // this will never be true
        let markup = markupFromNode(currentNode);
        if (markup) {
          markups.push(markup);
        }

        currentNode = currentNode.parentNode;
      }
      return markups;
    };

As for why textNode === rootNode here, I'm not entirely sure yet - haven't had time to dig more & fully grok what's going on - so I'm not sure if that's the bug, or if it should be fine with them being the same thing.
Hope that helps!

Here seems to be what is happening. When you initialize content-kit without a mobiledoc and start typing a default p node isn't created and you enter directly into the main editor node like this:

Thus when you attempt to delete, press enter, or enter additional input it incorrectly identifies the editor as the parentNode and fails.

Hey guys I have a branch with a fix for this. I fixed it while spiking out a fix for placeholders and our API for programmatic changes to the post. Will PR.

Fixed in https://github.com/bustlelabs/content-kit-editor/pull/66, released in 0.3.2

Awesome, cheers


Plausible deniability switch

Description

This PR adds the possibility to switch off the plausible deniability fake requests by using the app configuration. (See JIRA 2165)
Checklist

[x] This PR does not change text that hasn't been signed off with the RKI. Have a look at the pinned issue 440
[ ] Test your changes as thoroughly as possible before you commit them. Preferably, automate your test by unit/integration tests.
[x] Set a speaking title. Format: {task_name} (closes #{issue_number}). For example: Use logger (closes # 41)
[x] Link your Pull Request to an issue - Pull Requests that are not linked to an issue with you as an assignee will be closed.
[x] Create Work In Progress [WIP] pull requests only if you need clarification or an explicit review before you can continue your work item.
[x] Make sure that your PR is not introducing unnecessary reformatting (e.g., introduced by on-save hooks in your IDE)

The implementation was tested and is fully functional. Today, it was decided that the switch is not needed anymore. I will therefore close the PR.


Submissions new schema

Description
This PR changes the schema of the Submissions table
Fixes #

What work was done?
removed unnecessary table columns, added new columns
Why was this work done?
to capture timestamps for user events
What feature / user story is it for?
Any relevant links or images / screenshots

Type of change
Please delete options that are not relevant.

[X] New feature (non-breaking change which adds functionality)
[X] This change requires a documentation update

Change Status

[X] Complete, tested, ready to review and merge
[ ] Complete, but not tested (may need new tests)
[ ] Incomplete/work-in-progress, PR is for discussion/feedback

Has This Been Tested

[ ] Yes
[X] No
[ ] Not necessary

Checklist

[X] My code follows the style guidelines of this project
[X] I have performed a self-review of my own code
[X] My code has been reviewed by at least one peer
[X] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[X] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[X] There are no merge conflicts

git checkout main; git pull; git checkout my-branch; git rebase main; git push --force commands run to resolve merge conflict due to package-lock.json commits
Here and Here

The only thing I would clarify would be the comment on the document<PHONE_NUMBER>2812_child_submissions.js, It is not clear nor conveys much information. Other than that it looks good, Great job!