Add benchmark project and action to alert performance issues

Hi, this is the initial version of the PR. @aSemy could you please take a look?
I faced some issues when adding the benchmark:

For JS target I got an error during benchmark generation:KLIB resolver: Could not find "net.thauvin.erik.urlencoder:urlencoder-lib" in [.../snakeyaml-engine-kmp]

I have not figured out the exact reason, but I added this library explicitly into jsMain dependencies and it started working. Maybe anyone has seen something like that before...
The GitHub action works only with a single result file. Because of that, it is a bit tricky to upload results for other platforms (especially because benchmarks for windows and macos must be executed on corresponding runners).
I think that we could create a reusable workflow that executes all benchmarks available for a particular runner (ubuntu, windows, macos), collects the results (using artifacts or github cache) and uploads all the results in a separate job using matrix build (which contains all the supported targets for that runner). But I don't know how this action will work if those workflows try to commit changes in parallel. I think nothing good will happen... Maybe anyone has other ideas (create a PR to the action repo with multi-file support?).

Here is what the generated page with benchmark results looks like:
https://optimumcode.github.io/snakeyaml-engine-kmp/dev/bench/
To make it work you need to do some preparations first (to allow action publish the result to GitHub pages).
Branch with benchmark results:
https://github.com/OptimumCode/snakeyaml-engine-kmp/tree/gh-pages/dev/bench
Here is an example of PR that introduces a performance issue:
https://github.com/OptimumCode/snakeyaml-engine-kmp/pull/1
Also, every workflow run generates a summary where you can see how the benchmark results have changed:
https://github.com/OptimumCode/snakeyaml-engine-kmp/actions/runs/9725885272?pr=1
Resolves #208

And I think this PR should be merged after #207 (I will rebase branch once it is merged)

There is a suggestion on how multiple benchmark results can be combined and processed together.

I have managed to join results from multiple runs in a single file and uploaded them using benchmark-action. This is workflow step to do that (and the result). Could the same approach be used here? What do you think?

Thanks for this! I will take a look.

Hi, @aSemy. I want to rebase the branch on the latest main state. Please, let me know if you are doing some changes - I will do a merge instead of rebase in this case (but I would prefer a liner history)

I'm not working on this branc, go ahead and rebase if you'd like. We'll squash merge the branch into main, so I wouldn't worry too much about rebasing vs merging.

Hi, @aSemy
I merged the results for all platforms and they are all available on one page (https://optimumcode.github.io/snakeyaml-engine-kmp/dev/bench/). Does it look okay? Could you please check when you have time?

Hi, @krzema12. Could you please also take a look at the PR?
The example can be found in the forked repo: https://github.com/OptimumCode/snakeyaml-engine-kmp/pull/1
https://optimumcode.github.io/snakeyaml-engine-kmp/dev/bench/

@OptimumCode thanks for this, it looks good in general, but we need to sort out one problem. From what I see, the new workflow publishes the report via GitHub Pages, but we already use it to publish API reference: https://github.com/krzema12/snakeyaml-engine-kmp/blob/main/.github/workflows/publish-site.yml.
One idea is to deploy both the docs and the performance report using GH Pages, but under different paths. Then we'd also need to ensure that both workflows don't override each other's results.
I'm gonna sleep on this problem, maybe a better solution will appear, but I'm also open to your ideas!

Hi, @krzema12. Thank you for pointing out that you already use the github pages in another workflow. I looked into documentation for actions/upload-pages-artifact, actions/deploy-pages and benchmark-action/github-action-benchmark actions - seems like they won't work together without some manual actions...
actions/deploy-pages expects a single artifact with all content for github-pages that fully overrides the previously deployed data. This would mean that results from benchmark-action/github-action-benchmark will override the previously deployed documentation.
I have one thought here: benchmark-action/github-action-benchmark action supports publishing results into another repository. What do you think about creating a snakeyaml-engine-kmp-benchmarks (or any other name you prefer) repository and publishing results into this repo?

I'm fine with the separate repo! I'll let you know once created. Do I need to set up any extra perms anywhere?

You will need to create a personal access token with deployment and contents write permissions for this new repo and add it to the secrets here

@OptimumCode done! The secret is called PUBLISH_BENCHMARK_RESULTS and will expire in a year (it's impossible to set no expiration date). The dedicated repo is here: https://github.com/krzema12/snakeyaml-engine-kmp-benchmarks.

Thank you, @krzema12. I will make necessary changes and let you know once it is done

Hi, @krzema12. Could you please advise which branch have you configured for GitHub pages in this new repo? If you haven't could you please create a branch (gh-pages is a default value expected by the action) and configure GitHub pages to serve from this branch?
I completely forgot about this when you asked for what is needed.

@OptimumCode I've just configured gh-pages branch.

Hi, @krzema12. Could you please check if the name of the secret is correct? Either the name is not correct or the secret is not visible in pr workflow...
One more thing, could you please add pull_request write permission to this token for main repo (not for repo with benchmark results)? This is needed to generate an alert comment

Hi @OptimumCode!

Could you please check if the name of the secret is correct? Either the name is not correct or the secret is not visible in pr workflow...

Yeah, the name is correct, checked by copy-pasting between GitHub's UI and workflow's definition:

What I can do is regenerate the token and update the secret, to make sure I correctly pasted it. I've just done it - let's try now!

One more thing, could you please add pull_request write permission to this token for main repo (not for repo with benchmark results)? This is needed to generate an alert comment

I think you mean ticking the "Allow GitHub Actions to create and approve pull requests" checkbox, is it correct? If yes, I've just done it!

I think you mean ticking the "Allow GitHub Actions to create and approve pull requests" checkbox, is it correct? If yes, I've just done it!

I am not sure this will do the trick. I was talking about token permissions:

@OptimumCode what you show on the screenshot looks like configuring a personal access token's perms - I see this when configuring the PAT for publishing the report to the other repo.
For the GitHub token, I'm only aware of the setting I mentioned, and setting fine-grained perms via YAML, see https://github.blog/changelog/2021-04-20-github-actions-control-permissions-for-github_token/
I'll try digging deeper into why things don't work as expected here.

Yes, it is PAT token configuration. We use it instead of GitHub token in benchmark action and in order to generate alert comments this token should have permissions for that (I will remove permissions confirmation from workflow itself as we use the PAT token)

I'll try digging deeper into why things don't work as expected here.

Please let me know if I can help here anyhow (right now I have a limited access to the internet but in few hours I will be fully available)

@OptimumCode ok, got it now! I somehow thought that the GH token is also used, but now I see that we switched to PAT to be able to write to another repo. I've adjusted the PAT's perms, let's see now.

Superseded by #215


Cobweb is not always torn

Every Submove that crosses the Cobweb (in red points) must trigger a Cobweb tear. Currently it is not so.
Current:

Correct:

I don't know why this fixes the bug:
https://github.com/Glusk2/sprouts/commit/3de92d4f9613b2c58297799072701ad3ea404d8a

I have 2 code snippets which seem fairly similar yet yield different results.
Snippet 1:
    public LocalRotations without(final DirectedEdge... surplusEdges) {
        SortedSet<DirectedEdge> copy =
            new TreeSet<DirectedEdge>(edges.comparator());
        for (DirectedEdge edge : edges) {
            boolean canAdd = true;
            for (DirectedEdge surplusEdge : surplusEdges) {
                if (edges.comparator().compare(edge, surplusEdge) == 0) {
                    canAdd = false;
                    break;
                }
            }
            if (canAdd) {
                copy.add(edge);
            }
        }
        return new PresetRotations(center, copy);
    }

Snippet 2:
    public LocalRotations without(final DirectedEdge... surplusEdges) {
        SortedSet<DirectedEdge> copy = new TreeSet<DirectedEdge>(edges);
        for (DirectedEdge surplusEdge : surplusEdges) {
            copy.remove(surplusEdge);
        }
        return new PresetRotations(center, copy);
    }

What could be the reasons as to why the snippets return different results? I thought TreeSet's implementation of remove() was based on Comparator/Comparable.
Answer

The first uses a Comparator to compare DirectedEdge objects, the other uses the compareTo() method of the DirectedEdge to compare the objects. Since you're not comparing the same, you get different results.

But shouldn't remove() take the comparator passed through the TreeSet constructor into account?

What Comparator through what TreeSet constructor? You mean the new TreeSet<DirectedEdge>(edges) constructor that you're using, whose javadoc states: Constructs a new tree set containing the elements in the specified collection, sorted according to the natural ordering of its elements. All elements inserted into the set must implement the Comparable interface. That TreeSet doesn't use a Comparator.

Thanks to Andreas for pointing that out!


fix: Dependencies Issues

Only merge after careful testing

Does this work properly without any issues?

Only merge after careful testing

Will have to test it then first.

I think we'll have to figure out a way to test others' changes locally before merging them.


Don't include default value in url grid state (WIP)

Parent issue

https://github.com/silverstripe/silverstripe-framework/issues/9186

To do (from reviews)

[x] Remove isDirty
[x] Restore original toArray behaviour and create getChangesArray
~[ ] Set this->defaults for getState's 2nd argument~
~[ ] Restore default application in GridFieldPaginator line 145~

Added some unit test, but I don't quite have them working.

Oh I had no idea that you PRed my bug from last year lol. This would be great for my project; I might see if I have commit rights to open-sausages to rebase this and see if I can fix.

One final thing for this: it still suffixes ?gridState-risk-0=%5B%5D on URLs.

OK there is one major issue still remaining on this. In short, 'better buttons' are broken now.
That is because in GridFieldDetailForm_ItemRequest, this is called:
        $data = $state->getData();
        $paginator = $data->getData('GridFieldPaginator');
        if (!$paginator) {
            return false;
        }

This call doesn't trigger the generation of default values for GridFieldPaginator.

Probably the best bet here is yet another GridField component interface, GridField_StateProvider, with an initDefaultState method. It can be called before GridState::getData() returns a value.
Keen to get feedback on that, as adding another interface is non-trivial, but it's an opt-in feature for component providers.

@silverstripe/core-team any feedback on adding GridField_StateProvider as another GridField component interface, to let components define default state?

Sounds like a decent idea to me. I'd be keen to hear @unclecheese's thoughts, as someone who probably has a good idea of where GridField is likely to go in React land

Can I challenge the idea that GridField will go anywhere in React land? I imagine that starting from scratch with a grid-like control would be 100 times easier and you'd break everyone's plug-one regardless.
Perhaps Aaron has thoughts on that, though.

Sounds good as long as it's GridField\StateProvider 😉

Sounds good as long as it's GridField\StateProvider 😉

Is it worth being inconsistent with the rest of them to do that, though? Happy to go with consensus but consistency is what prompted my use of underscore.

Been a while since I've thought about this issue, but to my recollection, all the research on react gridfield was based on the assumption that it would be a parallel api to the traditional gridfield that devs could opt into (or more likely, out of).
It does mean a rewrite of components, but not as much as you'd think, and some may not even be affected. A lot of those plugins never touch the UI and only do backend work which affords more room for backward compatibility.

I agree with @sminnee, consistency is more important.
We could create new namespaced interfaces and extend them from the old ones to prevent semver violations, but that could be done separately to this PR.

OK I'll take "implement GridField_StateProvider" as an action and we can review in more detail when I have some code.

@maxime-rainville with the new initDefaultState() method, the changes you made introducing getXXXState() methods isn't really necessary any more. I'm inclined to revert these changes and re-test, for two reasons:

Reduce the scope of the change to only the necessary stuff
Confirm that these changes aren't inadvertently papering over some required changes due to an API accidentally being changed.

Happy to get your feedback on that idea, though...

Last commit should fix it. json_encode([]) outputs [] by default. We want it to output {} otherwise the front end gets confused and treats the empty state has an array instead of as an object.
I'll do some more manual testing tomorrow, to make sure everything works.

Nice find, Max! My initial testing confirms that this is working.
I've noticed a related bug that is pre-existing but might be worth looking into as part of this PR.

Open a modeladmin
Go to page 2
Open a detail record
Go back to the list by clicking the top menu

Result: The get param says page 2, but page 1 is shown

OK I've had a look at this bug. It's a bit odd — there are 4 components that each take responsibility for fetching grid state from the URL, rather than GridField doing this for us...

It looks like this was introduced by a couple of key commits:

cc712892a95b74c8bcdea5f2c1469286e298203e Betterbuttons was imported into the framework, which first required that gridstate was passed in a get var
b3093b7a1a77dcddf88ad01fe6620fb1798e1c21 GridFieldStateManager was created to allow nested gridfields and provide some abstraction for this

@unclecheese was the leader of both of these so would be good to get his view on whether the GridFieldStateAware should be hoisted up to the new GridField::initState() method that this PR creates.
A few things that need to be considered:

Use the history API to populate state in the URL when it changes
Check that going from page 4 to page 1 clears the grid state

I've flagged 3 tickets above that might also be fixed by this.

Yeah ... there's a few things that are weird in the better-button/gridifield interaction.
Did some testing on this PR this afternoon. It doesn't introduce any new weirdness and makes the URLs definitively better. So my instinct would be to merge it as is and look at the other issues independently.

I've developed a fix for a related issue while working on this one https://github.com/silverstripe/silverstripe-admin/pull/1103


New variable $component-active-bg-light

Adds separate variable $component-active-bg-light to avoid multiple use of lighten($component-active-bg, 35%) or rgba($component-active-bg, .25). Also ensures that using native css custom properties as a value for $component-active-bg don't lead to an error when transpilling.

Hi @createdwithlove,
Nice to see you again.
Caching some functioncalls in a variable is a good idea, but you can't just change the alpha version of the $input-focus-border-color, this will cause the border to disappear when the inputfield is focused.
This PR

Bootstrap:

It's a bit hard to see in the screenshots, but you can compare your version with the bootstrap docs:

https://getbootstrap.com/docs/4.1/components/forms/#overview
https://deploy-preview-27553--twbs-bootstrap4.netlify.com/docs/4.1/components/forms/#form-controls

Hi @MartijnCuppens.
You're right, that's a little detail that should not be lost. The calculation of the alpha value then could be done in the form-control-focus() mixin? But I don't know if that's worth it.

I don't think so, at the moment you can control the border-color and the box-shadow of the focus state and these colors can be changed independently. Calculating this in the mixin would make this impossible.
I'm going to close this because it's not worth adding another variable for this case. But thanks for the PR, if you spot something else that can be improved, let us know!


[Fabric 1.21] Client crashes after lootr spam log file up to 50 MB!

sample of the log spam
[15:35:23] [Render thread/ERROR]:
 DataStorage is null at this stage; Lootr cannot fetch data for ResourceKey[minecraft:dimension / minecraft:overworld] at class_2338{x=200038, y=4, z=200155} with ID b3f57854-aa73-408b-ab89-faf0e2d33d9f and cannot continue.
[15:35:23] [Render thread/ERROR]:
 MinecraftServer is null at this stage; Lootr cannot fetch data storage.
[15:35:23] [Render thread/ERROR]:
 DataStorage is null at this stage; Lootr cannot fetch data for ResourceKey[minecraft:dimension / minecraft:overworld] at class_2338{x=200128, y=5, z=200159} with ID 26eed8de-3f23-4b0e-acf0-9d98545f91f6 and cannot continue.
[15:35:23] [Render thread/ERROR]:
 MinecraftServer is null at this stage; Lootr cannot fetch data storage.
[15:35:23] [Render thread/ERROR]:
 DataStorage is null at this stage; Lootr cannot fetch data for ResourceKey[minecraft:dimension / minecraft:overworld] at class_2338{x=200008, y=-38, z=200154} with ID 2ee66fa6-5747-4dcc-bd7c-a6c8888e7601 and cannot continue.
[15:35:23] [Render thread/ERROR]:
 MinecraftServer is null at this stage; Lootr cannot fetch data storage.
[15:35:23] [Render thread/ERROR]:
 DataStorage is null at this stage; Lootr cannot fetch data for ResourceKey[minecraft:dimension / minecraft:overworld] at class_2338{x=200008, y=-38, z=200156} with ID fc699906-8052-4fa9-9be9-507c15eb36b0 and cannot continue.
[15:35:23] [Render thread/ERROR]:
 MinecraftServer is null at this stage; Lootr cannot fetch data storage.
[15:35:23] [Render thread/ERROR]:
 DataStorage is null at this stage; Lootr cannot fetch data for ResourceKey[minecraft:dimension / minecraft:overworld] at class_2338{x=200008, y=-38, z=200155} with ID a471679d-6c67-457a-9ab1-bb63ccdb76e4 and cannot continue.
[15:35:23] [Render thread/ERROR]:
 MinecraftServer is null at this stage; Lootr cannot fetch data storage.
[15:35:23] [Render thread/ERROR]:
 DataStorage is null at this stage; Lootr cannot fetch data for ResourceKey[minecraft:dimension / minecraft:overworld] at class_2338{x=200205, y=15, z=200109} with ID 2cd56093-e10e-4c7f-94cd-66e89a98af2b and cannot continue.
[15:35:23] [Render thread/ERROR]:
 MinecraftServer is null at this stage; Lootr cannot fetch data storage.
[15:35:23] [Render thread/ERROR]:
 DataStorage is null at this stage; Lootr cannot fetch data for ResourceKey[minecraft:dimension / minecraft:overworld] at class_2338{x=200128, y=5, z=200159} with ID 26eed8de-3f23-4b0e-acf0-9d98545f91f6 and cannot continue.
[15:35:23] [Render thread/ERROR]:
 MinecraftServer is null at this stage; Lootr cannot fetch data storage.
[15:35:23] [Render thread/ERROR]:
 DataStorage is null at this stage; Lootr cannot fetch data for ResourceKey[minecraft:dimension / minecraft:overworld] at class_2338{x=200164, y=-10, z=199941} with ID f7fe33f3-7309-417d-ab99-fdd7b516514a and cannot continue.
[15:35:23] [Render thread/ERROR]:
 MinecraftServer is null at this stage; Lootr cannot fetch data storage.
[15:35:23] [Render thread/ERROR]:
 DataStorage is null at this stage; Lootr cannot fetch data for ResourceKey[minecraft:dimension / minecraft:overworld] at class_2338{x=200164, y=-10, z=199943} with ID 76b4634f-e782-448d-9927-7c5ce0fb7734 and cannot continue.
[15:35:23] [Render thread/ERROR]:
 MinecraftServer is null at this stage; Lootr cannot fetch data storage.
[15:35:23] [Render thread/ERROR]:
 DataStorage is null at this stage; Lootr cannot fetch data for ResourceKey[minecraft:dimension / minecraft:overworld] at class_2338{x=200164, y=-9, z=199941} with ID ab9bbafb-dc23-4a90-a058-99e0a6c5a412 and cannot continue.
[15:35:23] [Render thread/ERROR]:
 MinecraftServer is null at this stage; Lootr cannot fetch data storage.
[15:35:23] [Render thread/ERROR]:
 DataStorage is null at this stage; Lootr cannot fetch data for ResourceKey[minecraft:dimension / minecraft:overworld] at class_2338{x=200164, y=-10, z=199942} with ID 46a17b7a-900f-45b4-8329-2c3b76d83fcf and cannot continue.
[15:35:23] [Render thread/ERROR]:
 MinecraftServer is null at this stage; Lootr cannot fetch data storage.
[15:35:23] [Render thread/ERROR]:
 DataStorage is null at this stage; Lootr cannot fetch data for ResourceKey[minecraft:dimension / minecraft:overworld] at class_2338{x=200175, y=19, z=200116} with ID 20b6bd88-5af7-4178-8f85-701b45cece8b and cannot continue.
[15:35:23] [Render thread/ERROR]:
 MinecraftServer is null at this stage; Lootr cannot fetch data storage.

That's a bit odd; I need the start of the log to work out what's happening, as well as a list of mods you're running along side to get a better idea of what's going on.

This is log for 5 minutes gameplay on server
client log:
latest.log
if you need server log I will upload it if requested, because I need to shutdown the server first to download the log ^^

Okay, got it, I should be able to fix this pretty quickly. My bad!

This should be fixed in the next version of Lootr for Fabric that I'm currently uploading to CurseForge! Hopefully it's approved quickly.


Possibility to add predefined components

As far I as could see there is no possibility to integrate custom predefined components. Maybe there is a generic solution that covers Native, DOM and custom tags support? One possible way would be to add a new option parameter that defines the possible components and an additional check would be needed in  convertTagNameToConstructor. Via reactImportPath it is anyway possible to extend the custom react or react-nativelibraries.
What do you think?

we should uniform to JSX where a lowercase name is a native/HTML tag and uppercase is a React Component. (See this).
The only problem is that would be a breaking change, all exiting templates should be checked versus lowercase names. But I don't see as a big problem because I guess most are using uppercase names as per React convention.
Anyway please note that custom tags (e.g. WebComponents) can be already used in react-templates by having a local string variable containing the actual tag name, e.g.:
<div scope="'mytag' as mytag>
   <mytag></mytag>
</div>

this will create a <myatg></mytag> in the DOM.
Apart from using custom tags from other libraries (WebComponents, Polymer ect), I see a possible advantage of using CSS selectors:
mytag {
   color: red;
}

as a possible remedy for the breaking change described above, I would suggest having a command line option like this:
$ rt template.rt --jsx-naming

By inspecting the code, there is an undocumented feature (at least I wasn't able to find it referenced anywhere), by which kebab-cased tag names are rendered as HTML / DOM:
<my-app></my-app>

var templateRT = function () {
    return React.createElement('my-app', {});
};

So this covers the case for WebComponents.


fix remain addr err msg tabchange

I have read the CLA Document and I hereby sign the CLA
Details

Fixed Issues
$https://github.com/Expensify/App/issues/35437
PROPOSAL:https://github.com/Expensify/App/issues/35437#issuecomment-1920447910
Tests

Navigate to FAB> Request money> Distance
Add location to Start
Add the same location to Finish
Error message should display
Navigate to other tab (Manual, Scan)
Verify focused the "Please enter at least two different addresses" error message remains when changing the tab

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

Offline tests
QA Steps

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

PR Author Checklist

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

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

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

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

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

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

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

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

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

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

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

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

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

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

Screenshots/Videos

Android: Native

https://www.loom.com/share/73f9e3030c174830a643acffecd691af?sid=2473798e-a578-41ce-905e-39907ec6d355

Android: mWeb Chrome

https://www.loom.com/share/b50a302bee404014b8fc1901828f475a?sid=89eee100-d782-425d-bcc6-1a105247badd

iOS: Native

https://www.loom.com/share/ab31314df97e4ec18578ecdbe6d52e7b?sid=4babf106-c512-4fe4-b0e2-3051967c9fc4

iOS: mWeb Safari

https://www.loom.com/share/55601c650b444707970ca2a2ad9ffdcc?sid=02154065-7399-44c4-b961-739e11136033

MacOS: Chrome / Safari

https://www.loom.com/share/e665f9ee1d89480ba00327002c579ff0?sid=a17cd950-111e-411c-89ed-8a2daffa58cf

MacOS: Desktop

https://www.loom.com/share/15413595876246358abb105957988352?sid=0b222c6f-39b6-4a4e-9a37-755467318303

@hayata-suenaga , I tried to make a PR. Waiting for your reply

@DylanDylann Did you review my PR?

@funny2code Please check https://github.com/Expensify/App/pull/36212#issuecomment-1935607792

@funny2code Apply these changes to App/src/components/DistanceRequest/index.js too

@funny2code Please make videos for all plarforms

@funny2code Apply these changes to App/src/components/DistanceRequest/index.js too

Okay, I will update soon.

@DylanDylann Regarding to make videos for all platforms, I have some problems. I am renting a Mac for Expensify project now. But the Mac doesn't have Apple ID, so it is impossible to test the app in all platforms.
6:06
I am researching online service for that, but not yet, if you know any way to test on all platforms, I hope you let me know.

@funny2code https://github.com/Expensify/App/blob/main/contributingGuides/TESTING_MACOS_AND_IOS.md Maybe It will help you

@DylanDylann thank you so much. I am configuring for iOS platform. Just now, I installed Xcode on Mac

@funny2code Any update here?

@DylanDylann I've configured all platform emulators yesterday. I can upload videos on all platforms. I will let you know soon.

@DylanDylann I updated the code. Please check it out.

@DylanDylann I updated the recorded video links on all platforms (ios, desktop, web, android) here.

@funny2code Also please merge main

@funny2code Also please merge main

@DylanDylann I've changed the err check order you mentioned. I will try to merge now.

@funny2code Which commit did you merge main in?

@funny2code Which commit did you merge main in?

01c6659a0b28c1332204df6dd8aeb22e7f7fe87f

https://github.com/Expensify/App/assets/141406735/506f670f-a1f4-43d3-bfea-d2870454481b
@funny2code I think we should keep the old behavior, and shouldn't disable the Next Button when user only enter 0 or 1 waypoint

I think we still need a state to handle this case:
    const [shouldShowAtLeastTwoDifferentWaypointsError, setShouldShowAtLeastTwoDifferentWaypointsError] = useState(false);

And add a useEffect to re-set this state
useEffect(() => {
        if (nonEmptyWaypointsCount >= 2 && (duplicateWaypointsError || atLeastTwoDifferentWaypointsError || hasRouteError || isLoadingRoute || isLoading)) {
            return;
        }
        setShouldShowAtLeastTwoDifferentWaypointsError(false);
    }, [atLeastTwoDifferentWaypointsError, duplicateWaypointsError, hasRouteError, isLoading, isLoadingRoute, nonEmptyWaypointsCount, transaction]);

Then when user click Next button, we will set this state to true
const submitWaypoints = useCallback(() => {
        if (duplicateWaypointsError || atLeastTwoDifferentWaypointsError || hasRouteError || isLoadingRoute || isLoading) {
            setShouldShowAtLeastTwoDifferentWaypointsError(true);
            return;
        }
        navigateToNextStep();
    }, [atLeastTwoDifferentWaypointsError, duplicateWaypointsError, hasRouteError, isLoading, isLoadingRoute, navigateToNextStep]);

The condition to display error also should be updated
 {((shouldShowAtLeastTwoDifferentWaypointsError && atLeastTwoDifferentWaypointsError) || duplicateWaypointsError || hasRouteError) && (
                        <DotIndicatorMessage
                            style={[styles.mh4, styles.mv3]}
                            messages={getError()}
                            type="error"
                        />
                    )}

And remove the disabled props

Also please make sure your change passes all lint checks by updating
const nonEmptyWaypointsCount = useMemo(() => _.filter(_.keys(waypoints), (key) => !_.isEmpty(waypoints[key])).length, [waypoints]);
const duplicateWaypointsError = useMemo(() => nonEmptyWaypointsCount >= 2 && _.size(validatedWaypoints) !== nonEmptyWaypointsCount, [nonEmptyWaypointsCount, validatedWaypoints]);
const atLeastTwoDifferentWaypointsError = useMemo(() => _.size(validatedWaypoints) < 2, [validatedWaypoints]);

@DylanDylann I've updated and merged the main branch into dejan-fix-remain-addr-msg-tabchange.
Please check it out.

@DylanDylann I should record the video on all platforms again?

I have read the CLA Document and I hereby sign the CLA

@DylanDylann I updated them based on your comments. Please check it out.

@DylanDylann I've run "npm run prettier" right now. I will commit again. Sorry for that. I missed your last comment.

@DylanDylann I've merged the main branch into my branch again.

@DylanDylann Just a question. I am not sure how I can fix this CLA Assistant Error.

I hope you please guide me. Thank you in advance.

@funny2code Do you subcribe email and upwork link in any issue?

@DylanDylann No, I don't.

@funny2code Check this comment: https://github.com/Expensify/App/issues/37168#issuecomment-1962347579

@DylanDylann Could you please tell me what is the next step if the current work is okay?

I will test and review again before requesting a review from internal engineer

I've commented with my details.

Comment this one: https://github.com/Expensify/App/pull/36212#issuecomment-1963981212

I've commented like this in issue

I have read the CLA Document and I hereby sign the CLA

I have read the CLA Document and I hereby sign the CLA

Like this?

@funny2code could you comment on this PR with the following message again?
I have read the CLA Document and I hereby sign the CLA

I have read the CLA Document and I hereby sign the CLA

@hayata-suenaga I've done.

@hayata-suenaga For the CLA, still the same error. Could you please check it out again? I am waiting for your reply. Thanks.

@funny2code thank you for pushing your PR forward and I apologize for the issue with CLA.
As a kind reminder, please don't DM an internal engineer on Slack. I check GitHub issues and PRs. If you post a question in either GH issues or PRs, I'll respond there.

Let me figure out what's going on with CLA 🙇

@funny2code did you use another account (@dev) when you pushed commits?
also, pleas make sure that all commits are verified. Please squash commits and push that commit from your GH account

@hayata-suenaga This account (@dev) is not mine. When I made a PR, I've tried to commit without configuring git in terminal.
I am not sure how to remove the commit by @dev.

recheck

@hayata-suenaga @DylanDylann Can I create another PR again?

recheck

I have read the CLA Document and I hereby sign the CLA

@hayata-suenaga , @DylanDylann I've tried to make a new PR. In the new PR, CLA work correctly. I hope you check it on the new PR again.


Compression Headers

Summary
Compression HTTP headers can be used to improve transfer speed and to reduce bandwidth consumption by sending/receiving compressed, smaller payload.
Send and receive compressed payload, using the Accept-Encoding and Content-Encoding HTTP headers.
Meilisearch supports gzip, deflate and brotli compression methods.
Related to https://github.com/meilisearch/meilisearch/issues/2802

Changes

Adds 0178-compression-headers.md specification file

Out Of Scope
This specification does not describe the HTTP Content-Encoding and Accept-Encoding headers. For more information, refer to the related RFCs.

Attention To Reviewers
Describing compression headers in the open API specification does not seem supported yet.

Misc

[] Update OpenAPI specification file (TODO)

The specification details the basics I didn't want to spend time defining Content-Encoding and Accept-Encoding RFCs 😬 . I hope it's enough for now.
Feel free to add details that seems important to you @Kerollmops, it will be really appreciated.

Sorry for interfering, but the specification for Accept-Encoding header is more complex. It allows specifying multiple encoding algorithms with the weights corresponding to the order of preference. I believe it is worth leaving at least a link to it.

Thanks @mou, I will precise that!


Removed: default export from the services and unwanted import for services(#1v1ddpn)

Closing the PR, as the changes already handled in #12


Thebrain9

Changes to a cask
Editing an existing cask

[x] Commit message includes cask’s name (and new version, if applicable).
[x] brew cask audit --download thebrain9 is error-free.
[x] brew cask style --fix thebrain9 left no offenses.

This needs a rebase.

...alright, what does it mean? is there any instruction which I can follow?

Thank you for the contribution. It needed some fixes, so they were made in a8619c28e1c952bb11ffaf63cf3cdd6d1c5d930b. Your contribution is still included (and still credited to you), with the appropriate modifications. Please feel free to ask about any of the changes.

For next time: git rebase


Innocuous image and favicon links are not rendered

Both the innocuous image and favicon links are not rendered:
url: https://www2.cs.uky.edu/dri/
title: "EduceLab: A Digital Restoratoin Initiative"
description: "Dr. Seales and the Digital Restoration Initiative are working to create and use hi-tech, non-invasive tools to virtually unwrap, read & preserve ancient carbonized scroll and other documents."
host: www2.cs.uky.edu
favicon: https://www2.cs.uky.edu/dri/wp-content/uploads/2019/05/cropped-DRI-favicon-32x32.png
image: https://www2.cs.uky.edu/dri/wp-content/uploads/2020/11/EduceLab.png

Status?

The request for the image is not done on https://www2.cs.uky.edu/dri/wp-content/uploads/2020/11/EduceLab.png but on tps://www2.cs.uky.edu/dri/wp-content/uploads/2020/11/EduceLab.p. Similarly for the favicon: instead of downloading https://www2.cs.uky.edu/dri/wp-content/uploads/2019/05/cropped-DRI-favicon-32x32.png, it tries to download tps://www2.cs.uky.edu/dri/wp-content/uploads/2019/05/cropped-DRI-favicon-32x32.p.
The status for both is (failed) net::ERR_UNKNOWN_URL_SCHEME.
So here and here there is a failure to detect that these are well-formed links, which causes this slice to mangle each link, which then gets inserted in the rendered cardlink.
I'll try to work on a fix, then I'll push it to #65.


Adding Day 1 Solution in Rust

Refers to https://github.com/sagarchoudhary96/30-Days-Of-Code/issues/68

@Caps-Looking , this problem is also not available to be solved with rust language on hackerrank.

just confirm it once will close PR then

@Caps-Looking any updates.


prepare to shift into staging and production git flow

during development and testing there has been only a master/main branch.
Deployments to staging must from from the main branch. As soon as the first one is done (or before), development work must move into a 'develop' branch. Then the develop branch must be auto-deployed to testing.
Developers can and should be working in feature branches, hotfix branches etc as necessary (look up 'git flow')
Thereafter, new features and fixes must be merged selectively from develop into main and deployments from main to staging must be carefully managed.
Once production is available, releases must be tagged off the main branch and only releases must be deployed to production, with carefully managed scheduling.
all of the above is (or should be) standard Kartoza procedure

update please @Mohab25

The above is partly implemented and all planned for.
commits to develop trigger automatic docker builds and deployment to testing.
commits to main trigger automatic docker builds. Deployment needs manual intervention in the absence of ArgoCD on the client infrastructure.
release tags trigger automatic docker builds. Deployment will need (initial production instance not deployed yet) manual intervention in the absence of ArgoCD on the client infrastructure.


MAINT: adjust travis settings

remove lightning
install pytest via conda rather than pip

Tests are passing, and almost two minutes faster. I'm going to merge

Great!
On Tue, May 31, 2016 at 7:20 AM, Jake Vanderplas<EMAIL_ADDRESS>wrote:

Merged #117 https://github.com/ellisonbg/altair/pull/117.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ellisonbg/altair/pull/117#event-677073170, or mute
the thread
https://github.com/notifications/unsubscribe/AABr0MYx35d0A-x-dLqTMc9yn93OEHe4ks5qHEOogaJpZM4IqJCP
.

--
Brian E. Granger
Associate Professor of Physics and Data Science
Cal Poly State University, San Luis Obispo
@ellisonbg on Twitter and GitHub
<EMAIL_ADDRESS>and<EMAIL_ADDRESS>


[Ansible] Starting of the docker service is not working

Hi, when I execute the ansible playbooks on Fedora as described in http://kubernetes.io/docs/getting-started-guides/fedora/fedora_ansible_config/ the follwing error occurs:
RUNNING HANDLER [flannel : docker start service] *******************************
fatal: [kube-node-1.xxx.com]: FAILED! => {"changed": false, "failed": true, "invocation": {"module_args": {"arguments": "", "enabled": null, "name": "docker", "pattern": null, "runlevel": "default", "sleep": null, "state": "started"}, "module_name": "service"}, "msg": "Job for docker.service failed. See \"systemctl status docker.service\" and \"journalctl -xe\" for details.\n"}

This error occurs for all nodes.
When I ssh into the server and execute I get the following error:
Apr 11 21:18:41 xxx docker[6942]: time="2016-04-11T21:18:41.866226699+02:00" level=info msg="Listening for HTTP on unix (/var/run/docker.sock)"
Apr 11 21:18:41 xxx docker[6942]: time="2016-04-11T21:18:41.872257876+02:00" level=error msg="WARNING: No --storage-opt dm.thinpooldev specified, using loopback; this configuration is strongly discouraged for production use"
Apr 11 21:18:41 xxx docker[6942]: time="2016-04-11T21:18:41.953991417+02:00" level=info msg="[graphdriver] using prior storage driver \"devicemapper\""
Apr 11 21:18:41 xxx docker[6942]: time="2016-04-11T21:18:41.956876689+02:00" level=info msg="Option DefaultDriver: bridge"
Apr 11 21:18:41 xxx docker[6942]: time="2016-04-11T21:18:41.957503648+02:00" level=info msg="Option DefaultNetwork: bridge"
Apr 11 21:20:11 xxx systemd[1]: docker.service start operation timed out. Terminating.
Apr 11 21:20:11 xxx systemd[1]: docker.service: main process exited, code=exited, status=2/INVALIDARGUMENT
Apr 11 21:20:11 xxx systemd[1]: Failed to start Docker Application Container Engine.
Apr 11 21:20:11 xxx systemd[1]: Unit docker.service entered failed state.
Apr 11 21:20:11 xxx systemd[1]: docker.service failed.

@BraunreutherA is it still an issue? Running the ansible on F23, the docker service starts.


SPX-GC

Hi. I would like a module for SPX-GC. It's an open source graphics controller that runs graphics using HTML and Javascript templates. In addition to the web renderer it also interfaces with Casper CG.
https://www.spxgc.com/
https://github.com/TuomoKu/SPX-GC
It already has a web API that works okay with the Generic HTTP module or the Streamdeck software directly (they even supply an icon-pack for this) but a dedicated module with presets for the different API calls would be awesome.
Here's the API-documentation from the software. Available from http://<IP_ADDRESS>:5000/api/v1 after downloading and running the software.
API v1
http/get commands available for external systems to trigger SPX-GC events.
SPX-GC will need to be open in a browser (in the same network as the server) for most of these to work.
Remember, SPX-GC is primarily targeted to live, manually operated workflows and API does not currently allow for modification of template data or other advanced procedures.
Direct commands
Commands which does not require any specific rundown
http://<IP_ADDRESS>:5000/api/v1/invokeTemplateFunction?playserver=OVERLAY&playchannel=1&playlayer=19&webplayout=19&function=myCustomTemplateFunction&params=Hello World
GET (v1.0.12) Uses an invoke handler to call a function in a template. See required parameters in the example call above.
http://<IP_ADDRESS>:5000/api/v1/directplayout
POST (v1.0.12) Execute a direct play/continue/stop -command to a template without current rundown. Post request body example here as stringified JSON: {"casparServer": "OVERLAY", "casparChannel": "1", "casparLayer": "20", "webplayoutLayer": "20", "relativeTemplatePath": "vendor/pack/templatefile.html", "command": "play"} The casparServer refers to a named CasparCG connection in SPX-GC application configurations.
Rundown commands and navigation
Commands to load playlists, move focus on the opened rundown etc.
http://<IP_ADDRESS>:5000/api/v1/rundown/load?file=MyFirstProject/MyFirstRundown
GET Open rundown from project / file.
http://<IP_ADDRESS>:5000/api/v1/rundown/focusFirst
GET Move focus to the first item on the rundown.
http://<IP_ADDRESS>:5000/api/v1/rundown/focusNext
GET Move focus down to next item, will not circle back to top when end is reached.
http://<IP_ADDRESS>:5000/api/v1/rundown/focusPrevious
GET Move focus up to previous item, will not circle back to bottom when top is reached.
http://<IP_ADDRESS>:5000/api/v1/rundown/focusLast
GET Move focus to the last item on the rundown.
http://<IP_ADDRESS>:5000/api/v1/rundown/stopAllLayers
GET Animate all layers (used by the current rundown) out, but does not clear layers.
Playback controls
Commands for rundown items. API response is rundown reference, id of rundown item and it's current playout status and server info.
http://<IP_ADDRESS>:5000/api/v1/item/play
GET Start focused item.
http://<IP_ADDRESS>:5000/api/v1/item/play/1234567890
GET Start item by ID on the active rundown.
http://<IP_ADDRESS>:5000/api/v1/item/continue
GET Issue continue command to selected item. Notice this needs support from the template itself and does not work as play or stop.
http://<IP_ADDRESS>:5000/api/v1/item/continue/1234567890
GET Continue to item by ID on the active rundown. Notice this needs support from the template itself and does not work as play or stop.
http://<IP_ADDRESS>:5000/api/v1/item/stop
GET Stop focused item.
http://<IP_ADDRESS>:5000/api/v1/item/stop/1234567890
GET Stop item by ID on the active rundown.

Module added to core, please check and create new issue for any questions

Is it listed under available instances? I cannot see any entry for SPX-CG in Companion UI. Running latest 2.1.3.

Is there any plan to update the SPX module so it works with 3.xx. I used 2.4.2 before and wonder what is the last version SPX worked with. I just installed OBS 30.0.2 (from 27.2.4)


Add Awesome F#

Add Awesome F#.
https://github.com/VPashkov/awesome-fsharp
It's list of repos related to F# programming language
By submitting this pull request I confirm I've read and complied with the below requirements.
Please read it multiple times. I spent a lot of time on these guidelines and most people miss a lot.

I have read and understood the contribution guidelines and the instructions for creating a list.
This pull request has a descriptive title.For example, Add Name of List, not Update readme.md or Add awesome list.
The entry in the Awesome list should:

Include a short description about the list project/theme. It should not describe the list itself.Example: - [Fish](…) - User-friendly shell.
Be added at the bottom of the appropriate category.

The list I'm submitting complies with these requirements:

Has been around for at least 30 days.That means 30 days from either the first real commit or when it was open-sourced. Whatever is most recent.
It's the result of hard work and the best I could possibly produce.
Non-generated Markdown file in a GitHub repo.
The repo should have the following GitHub topics set: awesome-list, awesome, list. I encourage you to add more relevant topics.
Not a duplicate.
Includes a succinct description of the project/theme at the top of the readme. (Example)
Only has awesome items. Awesome lists are curations of the best, not everything.
Includes a project logo/illustration whenever possible.

Placed at the top-right of the readme. (Example)
The image should link to the project website or any relevant website.
The image should be high-DPI. Set it to maximum half the width of the original image.

Entries have a description, unless the title is descriptive enough by itself. It rarely is though.
Has the Awesome badge on the right side of the list heading,
Has a Table of Contents section.

Should be named Contents, not Table of Contents.
Should be the first section in the list.

Has an appropriate license.

That means something like CC0, not a code licence like MIT, BSD, Apache, etc.
If you use a license badge, it should be SVG, not PNG.

Has contribution guidelines.

The file should be named contributing.md. Casing is up to you.

Has consistent formatting and proper spelling/grammar.

Each link description starts with an uppercase character and ends with a period.Example: - [AVA](…) - JavaScript test runner.
Drop all the A / An prefixes in the descriptions.
Consistent naming. For example, Node.js, not NodeJS or node.js.

Doesn't include a Travis badge.You can still use Travis for list linting, but the badge has no value in the readme.

Go to the top and read it again.

Not followed:

The repo should have the following GitHub topics set: awesome-list, awesome, list.
Includes a succinct description of the project/theme at the top of the readme.
Includes a project logo/illustration whenever possible.
Has a Table of Contents section. (The Contents part should be a heading)
Each link description starts with an uppercase character and ends with a period.
Drop all the A / An prefixes in the descriptions.
Has the Awesome badge on the right side of the list heading.


The compiled output includes process.env

Summary
The compiled output includes process.env.
eg: background.js and content_script.js.
As far as I know, it's build in vite's Library Mode.
process.env variable not work in browser
Environment
  System:
    OS: Windows 10 10.0.22621
    CPU: (16) x64 AMD Ryzen 7 4800H with Radeon Graphics
    Memory: 3.66 GB / 15.42 GB
  Binaries:
    Node: 18.15.0 - D:\Development\Scoop\apps\nodejs-lts\current\node.EXE
    npm: 9.5.0 - D:\Development\Scoop\apps\nodejs-lts\current\npm.CMD
  Browsers:
    Edge: Spartan (44.22621.1413.0), Chromium (111.0.1661.54)
    Internet Explorer: 11.0.22621.1
  npmPackages:
    vite: ^4.2.1 => 4.2.1
    vite-plugin-web-extension: ^3.0.2 => 3.0.2

I have seen this as well. It seems the build output changed since Vite 2, not surprising. I wasn't able to figure out why this happened, but library mode makes sense...
The workaround I'm currently using:
export default defineConfig({
  ...
  defines: {
    process.env: JSON.stringify({}),
  }
})

this works because, at least for me, process.env was the only value accessed on process.
I'll work on fixing the default config... Setting build.target seems like a likely fix.

Released in v3.0.4


GUACAMOLE-1658: Add client-side options for enabling SSH agent.

This looks reasonable, but I don't see a corresponding guacamole-server PR?

It will eventually correspond to apache/guacamole-server#467, once I figure out how to fix that one.

Converted to draft to match current status of apache/guacamole-server#467.


[BUG] InteractiveBrowserCredential does not cache persistently with TokenCachePersistenceOptions

Library name and version
Azure.Identity 1.13.1
Describe the bug
The docs at https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/samples/TokenCache.md describe how token caching works in Azure.Identity: in-memory caching is offered out-of-the-box, while persistent caching to disk can be activated by passing TokenCachePersistenceOptions = new TokenCachePersistenceOptions() to credentials. However, in my case this option appears to have no effect.
Full code:
using Azure.Core;
using Azure.Identity;

namespace MyApp
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            var credential = new InteractiveBrowserCredential(
                new InteractiveBrowserCredentialOptions()
                {
                    ClientId = "my_clientid",
                    TenantId = "my_tenantid",
                    TokenCachePersistenceOptions = new TokenCachePersistenceOptions(),
                });

            var context = new TokenRequestContext(["user.read"]);
            Console.WriteLine((await credential.GetTokenAsync(context)).Token);
        }
    }
}

According to the section "Credentials supporting token caching", InteractiveBrowserCredential supports persistent disk caching.
Note that the second described approach - manually caching the AuthenticationRecord - does indeed work, but according to the docs, so should the code I provided above.
Here's another user running into this behavior a few months ago.
Expected behavior
upon first program run the user authenticates in a browser; subsequent program runs require no interaction and just print the cached token
Actual behavior
every program run starts the browser to authenticate
Reproduction Steps

register an app on Entra
add "http://localhost" to its redirect URIs
replace the client and tenant ID, then build and run the program provided in the description

Environment
No response

Hi @user-45-20 ,
Setting TokenCachePersistenceOptions alone only makes the cache serialize to disk rather than staying in memory. If you're intent is to get silent authentication in subsequent logins, you must persist and supply an AuthenticationRecord as described in this sample

Hi @user-45-20 , Setting TokenCachePersistenceOptions alone only makes the cache serialize to disk rather than staying in memory. If you're intent is to get silent authentication in subsequent logins, you must persist and supply an AuthenticationRecord as described in this sample

OK, thanks for the information. I'm wondering: what is the cache on disk used for if it's not used to recover the token after the process restarts?

OK, thanks for the information. I'm wondering: what is the cache on disk used for if it's not used to recover the token after the process restarts?

The cache alone is not enough information. The AccountRecord indicates which account to lookup in the cache.

So is there a scenario where using TokenCachePersistenceOptions without AuthenticationRecord makes sense or provides some functionality over just standard in-memory token caching?

So is there a scenario where using TokenCachePersistenceOptions without AuthenticationRecord makes sense or provides some functionality over just standard in-memory token caching?

Not really, unless you just want your cache serialized to disk for some reason.


Added navbar to contact file

I added a navbar in the contact section and added a margin on the contact container for the navbar.

Can you provide the live link which is hosted in github pages

All done, please check it out @MohamedMafaz


Adding Continuous Integration to Project using Travis CI

I've added the default config for a java project into the travis.yml file. By default, this will run an mvn test.
The first build passed.

Thanks!


Can't read ATP to DB stone from ATP

I can't read this Nomai text as I can't pull up my translator to it. The other stones in this area and the mod (that I've found so far) work fine.
No other mods enabled. Version 1.0.2.

This text is very annoying, as it seems completely random on if it works or not, sorry. (It's just the non-broken version of a stone you should already have read, so it's not a huge problem, but still annoying.)

Solved!


Demo script look and feel different than real demo

I am not sure if is only me or something, the codes under the folder demo, when run in local, is different than the online demo or npm install from react-resize-panel. Is there some tiny difference that wasn't right at the source?
Thanks
Bernad

I got the answer for this.
It is due to the --webkit-box and related css.
To have similar output as shown in demo, the --webkit-box and related css has to be coded into the css resources as well.


Submission for proposal B

Please adhere to the format of the template.
Primary contact: @dlorenc

Thanks! I'll work on it this week.


All the log entries sent to Splunk have the severity of info

All the log messages that are exported to Splunk seems to be having the severity as info even if the log type belongs to an error related log type. i.e. "fsa"
See the screenshot:

I think I was able to figure out what might be causing this issue.
In the server/lib/senders/splunk.js file, I can see that we are sending the log entry like this.
logs.forEach(function(entry) {
      Logger.send({ message: entry });
    });

Since we are not sending the severity with it, the splunk-logging library will default to the info severity. We can send the severity with the Log entry like this.
var severity = // transform log type into the appropriate severity
Logger.send({
    message: entry,
    severity: severity
});

See example usage here: https://github.com/splunk/splunk-javascript-logging/blob/master/examples/basic.js on line 41 to 56.

This issue is open since 18 April. Can we expect this issue to be solved any time soon?


net/haproxy: SSL fixes & more – version 1.4

This contains fixes for issues #25, #26, #27, #28, #29 and #30.
Please do not commit until issue https://github.com/opnsense/core/issues/1095 is resolved.

@fichtner: Please commit. I hope it's not too late for 16.7.1 :)

Merged, thanks!


Custom checks not running from docker container in ADO pipeline

Describe the bug
Attempting to run custom checks in Azure DevOps pipeline results in successful scan, but none of the custom checks are caught.
To Reproduce
Steps to reproduce the behavior (see screenshots):

Create custom rule directory and file(s)

Specify custom rule directory in ADO pipeline

 - ${{ if eq(parameters.exclude_rules, false) }}:          - bash: |              docker pull liamg/tfsec:latest              docker run --rm -t -v $(System.DefaultWorkingDirectory)/modules:/src liamg/tfsec --custom-check-dir "$(System.DefaultWorkingDirectory)/${{ parameters.custom_rules_directory }}" ./src --verbose            displayName: Run TFSec with Custom Rules

Run the pipeline to see results

Expected behavior
I'm expecting my CUS001 check to appear somewhere in the list of violated rules, per my custom rule specification. It should catch that the name of this resource does not end with '-tjx-kc'.

Screenshots
See above.
Desktop (please complete the following information):

OS: Windows 10
Browser: Microsoft Edge

Additional context
I know that command line args are working as intended since exclusions with -e have been verified using similar formatting. Let me know if supplying more information regarding the pipeline would be useful. This is essentially a follow-up to issue#535.

Confirmed that similarly structured yaml check file works when tfsec is installed, issue still arises when run through Docker container.


feat: added application/wasm to compression file list

application/wasm added as a plain text type for compression
Motivation and Context
application/wasm are plain text files and can be effectively compressed by gzip or brotli to speedup their download.
How Has This Been Tested?
No need to test.

No bad idea.
Just curious. Can be application/wasm used only for text format or also covers the assembly one?

@joseluisq Do you mean that application/wasm mime type can be used for compiled binary files?

Here https://rustwasm.github.io/book/game-of-life/code-size.html we can see that .wasm files are typically compressed by gzip.

@joseluisq Do you mean that application/wasm mime type can be used for compiled binary files?

Yes, I meant If application/wasm can be used either with text files as well as the binary format. I just wanted to know.

Here https://rustwasm.github.io/book/game-of-life/code-size.html we can see that .wasm files are typically compressed by gzip.

I just asked because this says that .wasm are the binaries and .wat are the text ones.
Anyway it looks like both can be mime-typed as application/wasm.

https://rustwasm.github.io/book/reference/code-size.html
Citing:

WebAssembly is typically served to users gzip'd so you'll want to be sure to compare differences in gzip'd size for transfer times over the wire. Also keep in mind that the WebAssembly binary format is quite amenable to gzip compression, often getting over 50% reductions in size.

I just asked because this says that .wasm are the binaries and .wat are the text ones.
Yeah, .wasm is a compiled binary files. And .wasm files is the only way to delivery WebAssembly to the client via browser.

https://rustwasm.github.io/book/reference/code-size.html
Citing:

WebAssembly is typically served to users gzip'd so you'll want to be sure to compare differences in gzip'd size for transfer times over the wire. Also keep in mind that the WebAssembly binary format is quite amenable to gzip compression, often getting over 50% reductions in size.

Great! Then no doubts.

Thanks!


.bp file cannot be viewed in paraview

i used google colab to run FEM using dolfinx tutorial by Jørgen S. Dokken with updated version on v0.6.0.
https://github.com/jorgensd/dolfinx-tutorial/blob/v0.4.0/chapter2/ns_code2.ipynb.
However, the .bp file generated could not be viewed in paraview.
the issue was reported to fenics project discourse group
Link
They suggest it is because for google colab PR
try:
    import dolfinx
except ImportError:
    !wget "https://fem-on-colab.github.io/releases/fenicsx-install-real.sh" -O "/tmp/fenicsx-install.sh" && bash "/tmp/fenicsx-install.sh"
    import dolfinx

PR mentioned above did not add the optional argument to the python layer.
Please see if it is the case and help resolve, many thanks.

The issue is in dolfinx, not in FEM on Colab.


linux_xanmod: remove duplicate android kernel options, and enable WineSync

Motivation for this change
Fix #152100, and enable the WineSync driver for fast kernel-backed Wine
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

it would be better to remove the dupe android options from the xanmod config
it would be nice if someone investigated if the options added in https://github.com/NixOS/nixpkgs/pull/145768/files can be made modules instead of builtins, its not good to have many unneeded to most builtins.

i will merge this as is to unbreak rebuilding for xanmod users.

since this is touching the kernel shouldn't this go into staging bc of rebuilds?

since this is touching the kernel shouldn't this go into staging bc of rebuilds?

its not touching the common config so this only rebuilds the xanmod packages so there's less than 500 rebuilds


The projected_lidar_labels may have redundant 3d object labels who is occluded by other objects

285   // Lidar labels (laser_labels) projected to camera images. A projected
286   // label is the smallest image axis aligned rectangle that can cover all
287   // projected points from the 3d lidar label. The projected label is ignored if
288   // the projection is fully outside a camera image. The projected label is
289   // clamped to the camera image if it is partially outside.
290   repeated CameraLabels projected_lidar_labels = 9;

I think the projected lidar labels generation described above is not enough.
Image such situation: The 3d lidar object label constrained and cut in the camera frustum view may be occluded by other objects because of the existence of the translation between lidar and camera.

@peisun1115
What I mean is that in the camera view the original lidar 3d objects may stack together(fewer situation).
It is best to have an image to illustrate that, but I have not found out a dense object image.
We could use the image 2d label to help filter out the stacked behind objects by ourselves.
Or, the waymo official could use this filter step to update projected_lidar_labels.

I don't understand the question. The projection does not take care of image occlusion. If you want to use tightly fitting image boxes, try the image label.

@peisun1115 Hi, The  projected_lidar_labels  is always bigger than image label. With my understanding,the  projected_lidar_labels should be tightly fitting image boxes in an ideal state. If not,what caused this ?

@yeyewen
projected_lidar_labels is generated by projecting the 8 corners of 3d labels. That is why it is not tight in 2d. A tighter box can be generated by projecting all 'surface points' of the given object to 2d image. But we don't have those surface points as part of are occluded

@peisun1115
That it is!
There is something lidar could see but the camera cannot, and vice versa.
The annotation of 2d is necessary.
But if we ignore the too close objects as Disentangling Monocular 3D Object Detection
 does, this problem would be alleviated a lot.
Lots of occlusions are caused by too nearby objects.


python311Packages.orbax-checkpoint: init at 0.4.2

Description of changes
Add orbax-checkpoint.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 266467 run on x86_64-linux 1

4 packages built:

python310Packages.orbax-checkpoint
python310Packages.orbax-checkpoint.dist
python311Packages.orbax-checkpoint
python311Packages.orbax-checkpoint.dist

@GaetanLepage sorry for the noise, but this PR seems to be superseded by

https://github.com/NixOS/nixpkgs/pull/291171
https://github.com/NixOS/nixpkgs/pull/291764

i'll close for now since it looks like these changes have been superseded by other PRs, and we can always reopen or open follow up PRs to resurrect anything from this one


Code Quality: Fixed an issue where checking if running as admin called a wrong API

Summary
Now that the application checks if it is running as Administrator correctly.
Why drag and drop doesn’t work?
This is because of UIPI (User Interface Privilege Isolation) using MIC (Mandatory Integrity Control), which blocks a process that has lower IL (integrity level) from interacting with a process that has higher IL. This was introduced in Vista with UAC introduction.
It is not caused by UIPI, btw, that UWP cannot access system resource and user data without user’s consent (it’s by AppContainer itself).
IL get higher from top to bottom

AppContainer/LowBox (UWP)
Untrusted (Chrome, IE)
Low
Medium (default)
Medium Plus
High/Elevated (elevated)
System (system services)
Protected Process
Installer (Windows)

UAC settings
Behavior

Level
Modificationby a process
Modificationby user
On what session
Remarks

Highest
Yes
Yes
Secure Desktop (dimmed)
Default in Vista

2nd
Yes
No
Secure Desktop (dimmed)
Default in 7 onwards

3rd
Yes
No
Normal Desktop (not dimmed)
Not recommended

Lowest
No
No
N/A
Not recommended

By process means: Installation of a software manifest of which calls for elevation, and invocation via RunAs verb
By user means: modification via Windows Settings app and certain Control Panel applets

Registry values to be modified

Level
ConsentPromptBehaviorAdmin
ConsentPromptBehaviorUser
EnableLUA
PromptOnSecureDesktop

Highest
2 (AAC UAC)
3 (OTS UAC)
1
1

2nd
5
3
1
1

3rd
5
3
1
0

Lowest
0
3
0
0

AAC (Admin Approval Consent) UAC displays only Yes or No since logon user is in Administrators group.
OTS (Over The Shoulder) UAC displays text boxes to enter credential of an admin identity.

Disabling UAC
When you disabled UAC through UAC Settings dialog (UIPI will be disabled as well), the UAC prompt won’t be shown.
However, it seems that DataExchangeHost.exe doesn’t accept dropping onto a window of a process that has higher IL (Windows OS Bug?) even though UAC is disabled. A contributor of Windows Terminal made a workaround for it.
Also, I should denote that we might be able to use DragQueryFile to workaround UIPI, while I’m still not sure.
How UAC works (if it helps)?
On startup, the kernel executes explorer.exe with a token below:
Standard User (not in Administrators group)

Only restricted token will be generated after logon.
ShellExecute calls appinfo.exe (AIS) and then it calls consent.exe (UAC prompt) via its hosted inner service. When a valid credential of an administrator entered, AIS calls CreateProcessAsUser with that administrative identity; otherwise, it returns ERROR_ACCESS_DENIED.
The token generated by this routine is called filtered token (not privileged token)

Administrator User (in Administrators group)

Both privileged and restricted token will be generated.
When Yes clicked, AIS calls CreateProcessAsUser with the logon user ‘s privileged token; otherwise, it returns ERROR_ACCESS_DENIED.

BUILTIN/Administrator (the real administrator)

Only privileged token will be generated
AIS doesn’t call consent.exe. But this behavior can be altered from group policy.

I've been described so far, for when user hasn't changed anything through Windows Registry or Group Policy. Some behavior can be changed otherwise.

Can you cache the result?

For #13394

Yeah do you think would it be better in WindowContext?

I would keep the code in the service, but we can cache it in the context.

@yaira2 I found that there's a function ChangeWindowMessageFilterEx to change the filtering level. In theory this workarounds UIPI behavior, but may expose some security concerns such as a process that has lower IL can run arbitrary code by injection code to DLL. This is maybe why Windows Terminal didn't do this (or maybe they didn't know this).

I would prefer to do the same as Terminal.

FYI @ahmed605

IL get higher from top to bottom

this order is kinda wrong, AC has higher IL than Untrusted, and it's actually Low IL but with lower TrustLevel than usual Low IL apps, and there's also LPAC (Less Privileged AppContainer) which is almost on the same level as Untrusted but a little bit higher, it's used by Chromium, Firefox, and Microsoft Edge Legacy

I was really uncertain in that point. I'm even not sure this is IL. But a docs i referred (not official) wrote as AppContainer < Untrusted. Thank you for the correction.
What about that function above to workaround this blocking?

What about that function above to workaround this blocking?
I'm a bit worried about the security concerns, you can still inject through only the HWNDs btw

I see, thank you for letting me know it.
I'll just check token type and disable drag and drop accordingly.

Looks like SettingsButton is inaccessible.

Is this ready for review?

I'll cache this in the context class.

FULLY TESTED.
100% WORKING.

Do we need to adjust the text in the "running as admin" prompt?

Would we like to remove the commented out code lines?

Ready again.

All good.

@0x5bfa I rebased the branch from main, can you confirm that everything is in order?

Yes, except that test failing


Flux not working on debian 9

Hi!
After upgrading my machine to debian 9 from debian 8 flux stopped working. I reinstalled the package using the same instructions as when I installed it the first time but It's still not working.
Thank you very much.

Hey, how is it not working? E.g., does the fluxgui app fail to start? Does it start, but the options menus don't work? Does it it start and the GUI works, but the screen color doesn't change? Please describe your problem.
Are you perhaps experiencing one of these issues: #61 or #27?

Thanks for taking the time to answer me. Yes, I'm having the same problem as #61. The program starts and the icon appears in the panel, I even changed the main options but the screen doesn't change its color.

OK, so you're also getting an error about "signal 'child-added' is invalid"? If "yes", please close this issue and add a comment on #61 saying which OS you're using, and anything else you think might help (the other two people were using Debian 8 I think).


Suggestion

Can you add Growtopia save.dat stealer

Sure, it does look like a good addition.

Yes


BulkInsertOrUpdateAsync throwing error

I get the following error when using BulkInsertOrUpdateAsync
Unhandled exception. Microsoft.Data.SqlClient.SqlException (0x80131904): Violation of PRIMARY KEY constraint 'PK_CoinData'. Cannot insert duplicate key in object 'dbo.CoinData'. The duplicate key value is (64d19119-3ab3-4f9a-b184-007d85ecbdad-2021-03-09T12:00:00)
There are about 300,000 pieces of data in my source data collection. Some data exist in the database, and some data do not exist.
If pk already exists in the database, I want to update his content, if it does not exist, insert them.
  using BinanceDbContext db = new();
  await db.BulkInsertOrUpdateAsync(data);

    public class CoinModel
    {
        public CoinModel()
            => (Id, CoinData) = (Guid.NewGuid(), new List<CoinDataModel>());

        [Key]
        [Required]
        public Guid Id {  get; set; }
        [Required]
        public string Name {  get; set; }

        public ICollection<CoinDataModel> CoinData {  get; set; }
    }

    public class CoinDataModel
    {
        [Key]
        [Required]
        public string Key {  get; set; }
        [Required]
        public DateTime Date { get; set; }
        [Required]
        public decimal Open { get; set; }
        [Required]
        public decimal High { get; set; }
        [Required]
        public decimal Low { get; set; }
        [Required]
        public decimal Close { get; set; }
        [Required]
        public decimal Volume { get; set; }
        [Required]
        public decimal Money { get; set; }
        [Required]
        public int TradeCount { get; set; }
        [Required]
        public decimal TakerBuyBaseVolume { get; set; }
        [Required]
        public decimal TakerBuyQuoteVolume { get; set; }

        [Required]
        public Guid CoinId {  get; set; }
        [Required]
        public virtual CoinModel Coin {  get; set; }
    }

When using BulkInsertOrUpdate decision what to Insert and what to update is made based of matcing PK or other custom defined Unique column.
From the example above it seems PK (type Guid) is used, so those for update should be set with appropriate values and ones for Insert should have newly generated values if Guid is created in memory, or left Empty if they are created in Db.

Thanks for your reply.
Do you mean that my source collection cannot contain the data I want to update and insert at the same time?

It can, probably something isn't set of configured properly.
Go through ReadMe and take a look at Example:
https://github.com/borisdj/EFCore.BulkExtensions/blob/e6cea2398b64a3d81fd38860e79857f75a16913d/EFCore.BulkExtensions.Tests/EFCoreBulkTest.cs#L210
Also there are several usages of same method in EFCoreBulkTestAtypical.

I still get an error, is it because my pk is too long?
My pk is Guid+DateTime.
64d19119-3ab3-4f9a-b184-007d85ecbdad-2021-03-09T12:00:00

Alright!! If the database only has a small amount of data and there are few data waiting to be inserted or updated, everything is normal
However, there is a large amount of data in the database, and there are many data waiting to be inserted or updated, and errors will occur

If you can write a Test where the issue would be reproducible.

Thank you for your help
I wrote a simple test program and packaged the test database
Use docker-compose to quickly start the test database. The sa password is P@ssw0rd.
Test database: https://ntutselab-my.sharepoint.com/:u:/g/personal/kenneth_kttw_xyz/EXZmj6vmybxCuTTyo6veFroBjfxe1nVl_EmgNJjOSSZsmQ?e=W4iEOG
Test code: https://github.com/ChengYen-Tang/SQL-Test/tree/master/SQL-Test

There is duple Id in csv list, since PK is same guid prefix + Date and in exception it is stated:
The duplicate key value is (64d19119-3ab3-4f9a-b184-007d85ecbdad-2021-03-09T12:00:00)
So in cvs file you can find them (rows 721, 722):

Date
Open
High
Low
Close
Volume
Money

1/1/2021 12:00
29313.49
29317.38
29299.59
29305.6
30.777838
902110.0613

1/1/2021   12:00
29313.49
29317.38
29299.59
29305.6
30.777838
902110.0613

Thank you, I also found this problem when writing other projects today. It seems that the binance api returns duplicate data.
I was about to reply that this problem has been resolved, but I did not expect you to find the problem for me.
Really thank you and sorry.

BulkInsertOrUpdateAsync tiene error al insertar estándo la tabla vacia, aclaro que la tabla tiene una llave compuesta,un campo es te tipo int y el otro string


<EMAIL_ADDRESS>hash check failed

Installing 'treesize-free' (4.5.1) [64bit]
TreeSizeFree-Portable.zip (7.5 MB) [==================================] 100%
Checking hash of TreeSizeFree-Portable.zip ... ERROR Hash check failed!
App:         extras/treesize-free
URL:         https://downloads.jam-software.de/treesize_free/TreeSizeFree-Portable.zip
First bytes: 50 4B 03 04 14 00 02 00
Expected:    2b8f585ed2b3eb7425fd190ec4f8515dcb709e534b5b81313e4dabed75257d2e
Actual:      26c8252cb041e3d0422b96ed346c8487f7471f1e537c5592479d9c4ffac69d2e
Please try again or create a new issue by using the following link and paste your console output:
https://github.com/lukesampson/scoop-extras/issues/new?title=treesize-free%404.5.1%3A+hash+check+failed

Duplicate


Question about data

Hello, I'm a master student. I study for my research project about deepfake detection. I test your code with your images data. I want to know how can you get this data. I want to know what kind of data they belong to? because there are several dataset different. UADFV,DFDC,Celeb-Df or Faceforensic ? If you can answer my question, I will  appreciate it. Thank you


defaultFocusChild triggers wasteful rerenders when passed as a callback

Similar to #71
Unlike other external callbacks ( ex.onKey), the dual reactive nature on defaultFocusChild (as a part of the dynamicNodeProps listed here) may trigger a rerender when passed as a non memoized callback, when the parent component gets rerendered
If the parent component have a subscription using  to the component where defaultFocusChild is passed, it starts a rerender loop (parent watching child change, then a new callback is passed, then change triggered in the node and so on...)
Technically the node it's changing and its update should trigger the hook to trigger, but defaultFocusChild maybe is intended to be a "passive" prop, and should maybe be treated as a ref more than a pure reactive prop
CodeSandbox Here - (To trigger this, uncomment the line 36)

Thanks for opening this issue!
Honestly, I’m not sure when I’ll have time to look into this but if you’re able to PR a fix I can try to get it released.

Believe me, I could if I were able to
As you said in previous issues, This library is a bit tough on the computational aspect and I'll keep on opening issues as long as I found it (if that's still ok for you, ofc)
About this particular issue, it seems a lot more on the architectural/conceptual side, more than about the implementation itself, and if you can express a preference I can try to figure out a fix for you
In my opinion, keeping defaultFocusChild inside the category of "props i need to react to as soon an they do" is not completely right
Sure, you must keep its reference as fresh as possible across the nodes inside the focusStore, but triggering a full update on a node property that cannot change the current focus state seems off track
What is your opinion about this?

Will prioritize fixing this one next...hopefully next week! The CodeSandboxes you are posting are incredible...thank you so much!


[GDScript] local variable being reported as never used incorrectly

Quite possibly related to #23207.
Godot version:
3.1 beta 3.
OS/device including version:
N/A
Issue description:
In this function:
func roll_dice (DiceNumber: int = 1, DiceSides: int = 6, AddTo: int = 0, SubFrom: int = 0) -> int:
	var Total: int = 0	# The total of the dice rolled.
	var Count: int = 0	# Used to count the number of dice rolled.
	var DiceRolled: int = 0	# Total of the dice rolled so far.
	for Count in range (0, DiceNumber):	# Roll the dice.
		DiceRolled = randi_range (1, DiceSides)
		Total = Total + DiceRolled
		printerr ("ROLLED: ", DiceRolled, " TOTAL IS NOW: ", Total)
	Total = (Total + AddTo) - SubFrom	# Total calculated, so do any addition or subtraction needed here.
	return (Total)	# And return it.

Godot reports "The local variable 'Count' is declared but never used in the block" twice as a false positive. The first time with the initial declaration of the variable, the second time at the definition of the loop.

I'm not sure why the for loop one would be intended behaviour seeing as it'd be used for running through the loop...

You can silence the yellow warnings through the project settings. That is what I did with that type since it can't determine if a variable to be used later is going to be unused.

Range returns an array, meaning that you are iterating in a "foreach" fashion. So you are actively discarding the elements of that array.

It is not being used though. The variable Count will not be increased because of the for loop. It will remain as 0.
I assume this is what you want:
func roll_dice (DiceNumber: int = 1, DiceSides: int = 6, AddTo: int = 0, SubFrom: int = 0) -> int:
		var Total: int = 0	# The total of the dice rolled.
		var Count: int = 0	# Used to count the number of dice rolled.
		var DiceRolled: int = 0	# Total of the dice rolled so far.
		for i in DiceNumber:	# Roll the dice.
			DiceRolled = randi_range (1, DiceSides)
			Total = Total + DiceRolled
			Count += 1
			printerr ("ROLLED: ", DiceRolled, " TOTAL IS NOW: ", Total)
		Total = (Total + AddTo) - SubFrom	# Total calculated, so do any addition or subtraction needed here.
		return (Total)	# And return it.

That's indeed expected behaviour, your local defined Count is indeed never used, and the iterator declared in the for loop (which shadows but is not the previously defined Count) is also unused.


[ARM-5] ✨ Add security scan

Hello gaspardmoindrot,
My role is to assist you with the merge of this
pull request. Please type @bert-e help to get information
on this process, or consult the user documentation.
Status report is not available.

Waiting for approval
The following approvals are needed before I can proceed with the merge:

the author

one peer

Waiting for approval
The following approvals are needed before I can proceed with the merge:

the author

one peer

The following reviewers are expecting changes from the author, or must review again:

@tcarmet

Integration data created
I have created the integration data for the additional destination branches.

this pull request will merge improvement/ARM-5-add-ghas into
development/1.0
w/1.1/improvement/ARM-5-add-ghas will be merged into development/1.1
w/2.0/improvement/ARM-5-add-ghas will be merged into development/2.0

You can set option create_pull_requests if you need me to create
integration pull requests in addition to integration branches, with:
@bert-e create_pull_requests

Waiting for approval
The following approvals are needed before I can proceed with the merge:

the author

one peer

The following reviewers are expecting changes from the author, or must review again:

@tcarmet

History mismatch
Merge commit #3cf79a43dc8498bd8cc40fa3f29d437ef6f01507 on the integration branch
w/1.1/improvement/ARM-5-add-ghas is merging a branch which is neither the current
branch improvement/ARM-5-add-ghas nor the development branch
development/1.1.
It is likely due to a rebase of the branch improvement/ARM-5-add-ghas and the
merge is not possible until all related w/* branches are deleted or updated.
Please use the reset command to have me reinitialize these branches.

/force_reset

Reset complete
I have successfully deleted this pull request's integration branches.

Integration data created
I have created the integration data for the additional destination branches.

this pull request will merge improvement/ARM-5-add-ghas into
development/1.0
w/1.1/improvement/ARM-5-add-ghas will be merged into development/1.1
w/2.0/improvement/ARM-5-add-ghas will be merged into development/2.0

You can set option create_pull_requests if you need me to create
integration pull requests in addition to integration branches, with:
@bert-e create_pull_requests

Waiting for approval
The following approvals are needed before I can proceed with the merge:

the author

one peer

The following reviewers are expecting changes from the author, or must review again:

@tcarmet

/approve

Waiting for approval
The following approvals are needed before I can proceed with the merge:

the author

one peer

The following reviewers are expecting changes from the author, or must review again:

@tcarmet

The following options are set: approve

History mismatch
Merge commit #2011cb60871dc306f56854cdb573a1109acb255b on the integration branch
w/1.1/improvement/ARM-5-add-ghas is merging a branch which is neither the current
branch improvement/ARM-5-add-ghas nor the development branch
development/1.1.
It is likely due to a rebase of the branch improvement/ARM-5-add-ghas and the
merge is not possible until all related w/* branches are deleted or updated.
Please use the reset command to have me reinitialize these branches.
The following options are set: approve

/force_reset

Reset complete
I have successfully deleted this pull request's integration branches.
The following options are set: approve

Integration data created
I have created the integration data for the additional destination branches.

this pull request will merge improvement/ARM-5-add-ghas into
development/1.0
w/1.1/improvement/ARM-5-add-ghas will be merged into development/1.1
w/2.0/improvement/ARM-5-add-ghas will be merged into development/2.0

You can set option create_pull_requests if you need me to create
integration pull requests in addition to integration branches, with:
@bert-e create_pull_requests

The following options are set: approve

Waiting for approval
The following approvals are needed before I can proceed with the merge:

the author

one peer

The following reviewers are expecting changes from the author, or must review again:

@tcarmet

The following options are set: approve

In the queue
The changeset has received all authorizations and has been added to the
relevant queue(s). The queue(s) will be merged in the target development
branch(es) as soon as builds have passed.
The changeset will be merged in:

:heavy_check_mark: development/1.0

:heavy_check_mark: development/1.1

:heavy_check_mark: development/2.0

There is no action required on your side. You will be notified here once
the changeset has been merged. In the unlikely event that the changeset
fails permanently on the queue, a member of the admin team will
contact you to help resolve the matter.
IMPORTANT
Please do not attempt to modify this pull request.

Any commit you add on the source branch will trigger a new cycle after the
current queue is merged.
Any commit you add on one of the integration branches will be lost.

If you need this pull request to be removed from the queue, please contact a
member of the admin team now.
The following options are set: approve

I have successfully merged the changeset of this pull request
into targetted development branches:

:heavy_check_mark: development/1.0

:heavy_check_mark: development/1.1

:heavy_check_mark: development/2.0

Please check the status of the associated issue ARM-5.
Goodbye gaspardmoindrot.


Issue in Readme file in Sorting Algorithms for Python

Have you read the Contributing Guidelines on Pull Requests?
Yes
Description
I have updated the readme file present in the Sorting Algorithms in Python. It just contained a letter 'a'.
I have re-written the file so that it would tell more about the subfolder (sorting in python).
Checklist

[x] I've read the contribution guidelines.
[x] I've checked the issue list before deciding what to submit.
[ ] I've edited the README.md and link to my code.

Related Issues or Pull Requests
Issue-2575

Kindly add GSSOC21 tag and level tag otherwise the PR will not be considered in GSSOC'21.
@bhav09
@ankitaggarwal23
@HarshCasper


Fixes issue with any object created with prototype set to null

Tests are failing with this PR, and also can you add a unit test for this case?

I bet it's faster to check n.hasOwnProperty === undefined
instead - if it's undefined then you can do a k in n , if it's not then use as normal (if we want to be sure we can a typeof check for function instead of check for undefined value)

The issue is more along the lines of getting an object that was created with a prototype of null, so hasOwnProperty was failing.  With that in mind, I thought it would be best to borrow the hasOwnProperty from an Object prototype and let it run its course.

Yeah for sure, understood.
But the reason it fails is because a null prototype leads to a missing function (hasOwnProperty). Your solution is conventional and fully normative, no problems there. However, is there a faster way (pino philosophy: keep logging overhead to an absolute minimum).
Is it in fact faster to achieve the same using the approach as described in my prior comment? We can find out by trying both ways and running benchmarks

Ran the benchmarks and it barely made a difference.  But, just to be clear, does this illustrate your example?
n[k] = ((n.hasOwnProperty === undefined ? k in n : n.hasOwnProperty(k)) && nv === ov) || nv === undefined ? n[k] : nv

yep that's what I meant - if there's no discernible difference then keeping to convention is best
thank you for the PR!

v2.2.1 released


support arrow keys in Configure window

Hello,
Please add support for arrow keys (mainly up & down) in the Configure window.
Currently, those keys close the Configure window and insert an alphabet into my buffer.
Thanks for your consideration (and for a fantastic Vim plugin!) :v:

Hey @epeli Any chance of merging this? :sweat_smile: It removes ESC shortcut for :hide so that arrow keys work. :rocket:

This works, I'll also work on having this enabled with an option and adding it to #45 if it's ok with you guys.

@slashfoo I'm wary of giant patches and pull requests in general, but proceed if you must. :cold_sweat:

@sunaku I'll merge my branch and if it fails, I'll work it out, it shouldn't break anything, except that the mapping is dd vs d in the pane selection; which I'll address this on my next commit.
would you be able to help me go through and test?

and of course, I found a logic error just after merging, I'll open a new PR with the prev changes.

Ok, re-issued in #47.

I'll close this pull request now, if there's anything I missed feel free to issue a new one.

:books: For posterity, support for arrow keys can be enabled by setting this flag:
let g:slimux_enable_close_with_esc = 0


Coach Carl's Code Critique

Coach Carl to review the code for potential issues and add comments and #TODO's.

I also stubbed out a relative drive method.


Remove possible debug print

I believe this is a debug print from a previous commit? Regardless, it doesn't seem to be helpful output. For example:
± pylic list
console_writer <pylic.cli.console_writer.ConsoleWriter object at 0x10b2c04f0>
ach (0.2): MIT License
add-trailing-comma (2.1.0): MIT License
aiodns (3.0.0): MIT License
aiofiles (0.7.0): Other/Proprietary License
[...]

Codecov Report

Merging #91 (54747df) into main (dd7a33b) will decrease coverage by 0.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main      #91      +/-   ##
==========================================
- Coverage   92.13%   92.12%   -0.02%
==========================================
  Files          19       19
  Lines         623      622       -1
==========================================
- Hits          574      573       -1
  Misses         49       49

Impacted Files
Coverage Δ

pylic/cli/commands/list.py
65.21% <ø> (-1.45%)
:arrow_down:

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 dd7a33b...54747df. Read the comment docs.

ah yes indeed😅 thanks @lexicalunit 🙏

I should be able to release an update today

This was release with 3.0.2 - thanks again for your contribution!


Duplicate function implementation error message while writing simple function

VSCode Version: 1.3.1
OS Version: Windows 7
Steps to reproduce:

Write one simple function
Notice the red underline
Error message : Duplicate function implementation.

Same happens for all the variables I declare using let keyword.
What am I doing wrong. I have tried examples from http://www.typescriptlang.org/docs/handbook/variable-declarations.html but they also show same error.

@codingonHP I can't reproduce your problem with a simple ts file. Can your pls provide a sample workspace that exhibits the problem? Thanks!

@kieferrm Today when I re-opened my solution everything looks fine and there are no more errors like this. I have no idea about what must have happened yesterday. Now everything seems to be working as expected.

@codingonHP thanks!


node.js

Various articles about Effektif mention it running the JavaScript in node.js. I think that makes sense both in terms of performance and available libraries. However, in both the sources and available documentation I can only find references to Rhino. Could anybody tell me if / how Effektif should be configured to use node.js?

It's not yet in the engine codebase.  That s a matter of prioritization.  We opted to start with the JVM JavaScript to minimize the setup hassle.  First we have to ensure that our product gets migrated to the new open source engine.  Once that's done we can start migrating other pieces like the node.js scripting engine.
Good that you let us know you want it.  So we keep it on the radar.