Need a way to inject a User request so that story can bypass some steps on certain steps in a story

Description of Problem:
Currently there is no way to skip a User utterance using business logic other than using a code like below:
@staticmethod
def start_story_events(story_intent):
    # type: (Text) -> List[Dict]
    return [ActionExecuted("action_listen")] + [UserUttered("/" + story_intent, {
        "intent": {"name": story_intent, "confidence": 1.0},
        "entities": {}
    })]

Overview of the Solution:
Have an inbuilt way of doing this rather than custom injection of user intent to the history
Examples (if relevant):
If i have a story like below:
## story 1
*intent_1
   action_step1
*intent_2
   action_step2
*intent_3
  action_step3

If while executing step_2, during certain conditions, want to avoid a answer from User with intent_3 but want to proceed with action_step3
Blockers (if relevant):
Have a temporary work around
Definition of Done:
Have an inbuilt way of doing this within Rasa

Thanks for submitting this feature request 🚀 @degiz will get back to you about it soon! ✨

Couldn't you use a boolean slot for it?
story 1
*intent_1
- action_step1
*intent_2
- action_step2
- slot{"my_slot": false}
*intent_3
- action_step3

story 2
*intent_1
- action_step1
*intent_2
- action_step2
- slot{"my_slot": true}
- action_step3

Hey @sibbsnb
I'd second @nbeuchat solution here 🤔

This is one of the examples where I want to jump to another story. Within same story you may be able to work around with slot, what if I want to jump to a completely different stories.
I think Rasa needs a way to jump from one story to another in an easy way.

You have a few other ways:

Use a follow up actions within an action
Use the new Rules policy in 2.0 to code your business logic in the rules (might actually work well with the above)
(never tried) Use a reminder with the intent you need with an immediate execution time (not sure if you can set the execution time right away)

@nbeuchat can you give an example of follow up actions?

Thanks @nbeuchat for helping out here 🙌🏻

Thanks @nbeuchat for helping out here 🙌🏻


Parallel NetCDF: file mode creation/opening needs the parallel library choice bit.

In core/src/ParallelNetcdfFile.cpp the open_par function calls NetCDF nc_open_par: if parallelism is enabled in NetCDF, the mode has to specify if the NC_MPIIO or NC_PNETCDF mode is chosen, otherwise an Invalid argument exception is raised.
Adding |  MPIIO in the calls inside the switch (fMode) section fixed the problems, but it can be tailored as a choice.
Cf, from XIOS, src/io/onetcdf4.cpp.
I also noticed that the MPI_Info info argument is passed uninitialized to NetCDF. It should be set to MPI_INFO_NULL if no hint is passed to NetCDF. This is done in XIOS (same file), but could be let open to optimization (probably a bit too much geeky, though).
There a choice from removing the info argument from the API of open_par and set it to MPI_INFO_NULL inside or to propagate the initialization to the callers.

This behavior appears to be related to the version of NetCDF-C. Updating to 4.9.2 on my PC solved the issue. Notice that 4.6.1, 4.6.2 and 4.7.1 are still widely used (more recent version have proven hard to tune on lustre filesystems)


Prevent conflicts with other layering plugins

This resolves conflicts with other plugins such as google-maps-sdks that use similar view layer approaches to show native content below the webview.
The basic approach is to on camera start locate the parent of the webview and use it as the target for operations. There is also a provision for generating a view id on android since some plugins (like google-maps) also hardcode a view ID of 1.
There are also a few miscellaneous fixes to javascript thrown in.

Thanks for this. Merged.


reduce code duplication in lithium plating notebook

Description
This PR demonstrates how code duplication can be reduced in an example notebook. This makes the notebook significantly easier to maintain.
Type of change
Please add a line in the relevant section of CHANGELOG.md to document the change (include PR #) - note reverse order of PR #s. If necessary, also add to the list of breaking changes.

[ ] New feature (non-breaking change which adds functionality)
[x] Optimization (back-end change that speeds up the code)
[ ] Bug fix (non-breaking change which fixes an issue)

Key checklist:

[ ] No style issues: $ flake8
[ ] All tests pass: $ python run-tests.py --unit
[ ] The documentation builds: $ cd docs and then $ make clean; make html

You can run all three at once, using $ python run-tests.py --quick.
Further checks:

[ ] Code is commented, particularly in hard-to-understand areas
[ ] Tests added that prove fix is effective or that feature works

@DrSOKane @RuiheLi

This looks really good, please go ahead and merge if the results of the notebook don't change

The new ReviewNB plugin allows you to check (by eye) whether the plots have changed, in this case it looks good to me https://app.reviewnb.com/pybamm-team/PyBaMM/pull/2247/

Looks good to me also. The markdown still refers to model 1, moel 2 and model 3 even though they're no longer called that, but the models are still defined and run in that order so it should be OK. Great job on reducing the amount of code!


added traffic mirroring task

Please remove the .DS_Store file from mac. :). Once done, its good to go.


Command Line Execution

Hi Can we have binary lib installation ,
so we can directly use command line execution Like ffmpeg?
can we convert sequence of IMAGEs in to GIF?
Thanks.

Hey there!
I realize that this project seems to be focused on using the ImageMagick library bundled into Android apps which then use this library.
What I would be very much interested in would be to use the ImageMagick "convert" tool that is available for Desktop PCs on my Android device in a terminal (in a bash script and/or via ssh).
Do you think the effort you put into porting the library to Android can be somehow used to come close to this goal? If yes, could you point out what steps are necessary to reach that goal?
Thank you, Kind Regards, Thomas

Thomas, +1


Error on installition

I would like to handle this situation by myself and not to bother others but i couldn't. I have reinstalled visual studio and have python2.7 correctly put on a path.
gyp ERR! build error
gyp ERR! stack Error: msbuild failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:258:23)
gyp ERR! stack     at ChildProcess.emit (events.js:182:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:237:12)
gyp ERR! System Windows_NT 10.0.17134
gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" "rebuild"
gyp ERR! cwd C:\WINDOWS\system32\node_modules\node-opus
gyp ERR! node -v v10.3.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
npm WARN enoent ENOENT: no such file or directory, open 'C:\WINDOWS\system32\package.json'
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none is installed. You must install peer dependencies yourself.
npm WARN system32 No description
npm WARN system32 No repository field.
npm WARN system32 No README data
npm WARN system32 No license field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules\speaker):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>install: node-gyp rebuild
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>install: node-gyp rebuild
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR!      C:\Users\Orkun\AppData\Roaming\npm-cache_logs\2018-05-31T00_58_01_742Z-debug.log
I also got an error saying: C:\WINDOWS\system32\node_modules\node-opus\build\deps\libopus.vcxproj(20,3): error MSB4019: Imported "C:\Microsoft.Cpp.Default.props" project can not be found, correct . Before that it wanted me to correct something else and when i corrected that (at least i guess so) it popped this. And before that it has also wanted me to correct something about Visual Studio which led me to reinstall it.

Have you installed the windows build tools metapackage?
https://www.npmjs.com/package/windows-build-tools

Used to have it installed but then i remove it to recycle bin because it was not working then tried to reinstall but it fails to. I also opened an issue for that and will see if they can help. So basically you mean that problem might occur because i don't have that package?

That package is a meta package that installs the Windows build chain. C++ copiler, Python, etc. It should be all you need on a fresh PC - however in some cases a pre-existing Visual Studio will complicate things as it will take priority over the C++ compiler that windows build tools installs (or windows-build-tools doesn't install one if it detects VS; Not sure).
The one peculiarity I see in the logs is that you are trying to install this under C:\WINDOWS\system32\. There is a chance some file system permissions become problematic; Even if I can't see anything related to that in the log. Have you tried installing this in a separate folder that does not require special admin permissions to write to?

Would i sound too silly if i say that i don't know how to change the installation location? All i do is copying and pasting those '' npm'' install words to cmd or powershell (With the power of admin). The thing i wanted to do was to have a discord bot that play an audio file from my pc and that desire of mine created a huge problem for me in order to achieve my goal which is so sad and annoying.

The npm install will install the package under the current folder - so you can change the installation location by running the npm install command in some other folder than the Windows\System32 that the admin command prompt defaults to.
Recommend you create a folder for your project and do try it there.

<EMAIL_ADDRESS>postinstall C:\Users\Orkun\AppData\Roaming\npm\node_modules\windows-build-tools
node ./dist/index.js

npm ERR! code ELIFECYCLE
npm ERR! errno<PHONE_NUMBER>
npm ERR<EMAIL_ADDRESS>postinstall: node ./dist/index.js
npm ERR! Exit status<PHONE_NUMBER>
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR!      C:\Users\Orkun\AppData\Roaming\npm-cache_logs\2018-06-03T02_58_53_336Z-debug.log
Seems like none changed. Aren't there any other way to get this opus engine running by any chance?

im having the same problem

I'm archiving the repository for lack of interest in maintaining it. Sorry I never got to deal with this issue. Please see @discordjs/opus for an alternative implementation that is based this project but uses more stable Node.js module technology that should break less between Node.js versions.


Added number guesser game under webDev projects

Sorry to inform but this repository has been excluded from hacktoberfest. So inorder to make your PR count towards hacktoberfest, request you to make your contribution in this repository -> https://github.com/SR-Sunny-Raj/Hacktoberfest2022-for-all


Fit pdf to the width of the device screen

Details

Currently, the pdf view in native tries to fit the pdf with the height of the screen which makes the pdf view very small.
Fixed Issues

$ https://github.com/Expensify/App/issues/26317
PROPOSAL: https://github.com/Expensify/App/issues/26317#issuecomment-1700406996
Tests

Same as QA Steps

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

Offline tests

Same as QA Steps
QA Steps

Send a long PDF to a chat
Open the PDF
Verify the PDF fits the width of the screen

[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 / Chrome
[x] iOS / native
[x] iOS / 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 a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[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(themeColors.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 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.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

https://github.com/Expensify/App/assets/50919443/1f1d002d-3117-4891-8277-9728fe8338a1

Mobile Web - Chrome

https://github.com/Expensify/App/assets/50919443/b19821da-7e35-4a1c-83e2-c7c11be64096

Mobile Web - Safari

https://github.com/Expensify/App/assets/50919443/4e077f8f-56d0-44b6-b426-e29e06b190cf

Desktop

https://github.com/Expensify/App/assets/50919443/e71aa813-3be8-43ed-9914-06703d2c89a3

iOS

https://github.com/Expensify/App/assets/50919443/06bdeee3-6e80-4f89-a218-e946d2c0e401

Android

https://github.com/Expensify/App/assets/50919443/97c5748a-d5ff-4a63-bef9-d1ff000b8b4f

@bernhardoj from the issue title, it said the zoom does not work in the PDF, can you please attach in the android video and in the mweb chrome the zoom is working?

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] 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)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] 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).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] 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.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] 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.
[ ] 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.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] 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
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] 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

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

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

[ ] 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.
[ ] 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)
[ ] 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.
[ ] 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.
[ ] 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.
[ ] 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.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

@bernhardoj Can you please merge main into the branch and retest? Thanks!

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

🚀 Deployed to staging by https://github.com/mountiny in version: 1.3.71-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/thienlnam in version: 1.3.71-12 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


Marker.unbindPopup appears to remove DOM node associated with it

How to reproduce

Leaflet version I'm using: 1.3.4
Browser (with version) I'm using: Chrome
OS/Platform (with version) I'm using: Windows 10
Starting with bindPopup(element), not string
After unbinding #popup element is removed from DOM, which is not desired action if I'd like to reuse it.

What behaviour I'm expecting and which behaviour I'm seeing
Shouldn't it remain in DOM?
Minimal example reproducing the issue
https://codepen.io/laacz/pen/pQBgjZ

OK, I've made a simpler example: https://codepen.io/laacz/pen/ZmZOjo

Click on the button (it binds popup and opens it) any number of times, popup shows up well.
Close last popup with "x".
Click on the button (no content, since #popup is non-existent).

It looks like a design solution (poor, yet understandable) to remove popup content's element from DOM. If that's so, feel free to close this issue.

It works as expected.
Instead of adding popup to DOM and querying it, create it in JS and keep reference to it.
Working example: https://codepen.io/anon/pen/rQEEPz


Add endpoint to retrieve user organizations on github

Working on https://github.com/dockstore/dockstore/issues/2671
Edit: can split out ticket to make SourceControlResourceInterface.getAndRefreshTokens not check on all source control tokens, but just check on the token for the source control you actually wanted ... probably not a priority though

I suggest that it should return an error if the user doesn't have a GitHub token or if the getMyOrganizations call fails, e.g., due to a bad token. Now it will just return an empty array in both cases, and the user won't know that it failed behind the scenes.

Actually, think we get this for free already since
https://github.com/dockstore/dockstore/blob/1.11.0-alpha.1/dockstore-webservice/src/main/java/io/dockstore/webservice/helpers/SourceCodeRepoFactory.java#L50 should run into https://github.com/dockstore/dockstore/blob/1.11.0-alpha.1/dockstore-webservice/src/main/java/io/dockstore/webservice/helpers/GitHubSourceCodeRepo.java#L319


[MS19] Google OSS-Fuzz integration 1/2

Fuzzing is an automated software testing technique that involves providing invalid, unexpected, or random data as inputs to a computer program. OSS-Fuzz is Google's automated platform to fuzz noteworthy F/OSS projects and it has been shown to be capable of detecting Log4Shell in ~5 minutes with a one-line fuzz target. In this milestone, we delivered a fully-fledged OSS-Fuzz integration not just for Log4j, but also Log4cxx:

Fuzzing integration for Log4j
Log4j integration to OSS-Fuzz (google/oss-fuzz#12304)
Fuzzing integration for Log4cxx
Log4cxx integration to OSS-Fuzz (google/oss-fuzz#12352)

We are in the process of troubleshooting issues related with the OSS-Fuzz infrastructure – see google/oss-fuzz#12349 and google/oss-fuzz#12417 for details. We will tackle these in the 2nd part of the OSS-Fuzz integration project, i.e., the 20th milestone (#2892).

thanks, completed


09-perform-data-analysis-in-power-bi-desktop.md

English:
Image and diagrams components should be localized
Current Translation:
Screenshots, image and diagrams components should be localized
Suggested Translation:
Image and diagrams components should be localized
Description:
Screenshots are not localized

Hello contributor,
Thank you for your contribution! We are processing your suggestions and we will update you shortly.
Kind regards,
Microsoft Worldwide Learning Team

The locfile status shown InLocalization, waiting for checkedIn status. ICMS QUERY

File has been removed from
https://github.com/MicrosoftLearning/PL-300-Microsoft-Power-BI-Data-Analyst and subsequently
https://github.com/MicrosoftLearning/PL-300-Microsoft-Power-BI-Data-Analyst.fr-fr/tree/OLPRODLOC/Instructions
Can be closed


Android子系统

Description of the new feature / enhancement
键盘映射点击(指定坐标)
Scenario when this would be used?
win11子系统Android
Supporting information
win11 子系统Android没法打游戏

Translation:
Description of the new feature / enhancement
Keymap click (specify coordinates)
Scenario when this would be used?
win11 subsystem Android
Supporting information
Win11 subsystem Android can't play games

I'm sorry @ZhangJangYun but I still don't understand. Can you explain more?

/needinfo
I think he want to remap key press to mouse click :D


TutorialDB.bak

THe database TurorialDB.bak is not available from the link. Instead an error is given "Public access is not permitted on this storage account."

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

ID: 1b02d11f-8002-4de2-22bd-8b9fae018dc2
Version Independent ID: 9156a821-0f92-1c48-6892-59a6f59a781b
Content: Python tutorial: Ski rentals - SQL machine learning
Content Source: docs/machine-learning/tutorials/python-ski-rental-linear-regression.md
Product: sql
Technology: machine-learning
GitHub Login: @WilliamDAssafMSFT
Microsoft Alias: wiassaf

Thanks @pgh000, acknowledged the problem is on our side. These links are in the process of being moved and re-housed, the docs should be updated with new links shortly.


I asked in StackOverflow, in Gitter Webpack and in Discord Electron but got no answer

I asked an helping request
in StackOverflow: https://stackoverflow.com/questions/66075114/get-is-not-a-function-at-getpubsubrouter-how-to-fix-my-webpack-configuration
in webpack Gitter :

And also in Discord Electron Forum:
https://discord.com/channels/745037351163527189/745040553384870009/807540189886152724

but got no answer, no hints, no help at all.
So, being conscious that this is not the right place, I ask here if there is someone who can give me an hand.
I'm having this error:
TypeError: get is not a function
    at getPubsubRouter (/home/marco/webMatters/electronMatters/IPFS-
Forge/.webpack/main/index.js:103184:20)
    at getLibp2pOptions (/home/marco/webMatters/electronMatters/IPFS-
Forge/.webpack/main/index.js:103201:15)
    at module.exports../node_modules/ipfs-core/src/components
/libp2p.js.module.exports (/home/marco/webMatters/electronMatters
/IPFS-Forge/.webpack/main/index.js:103152:25)
    at configureRepo (/home/marco/webMatters/electronMatters/IPFS-
Forge/.webpack/main/index.js:107078:18)
    at async loadRepo (/home/marco/webMatters/electronMatters/IPFS-
Forge/.webpack/main/index.js:106927:17)
    at async Function.start (/home/marco/webMatters/electronMatters
/IPFS-Forge/.webpack/main/index.js:106908:41)
    at async Object.create (/home/marco/webMatters/electronMatters
/IPFS-Forge/.webpack/main/index.js:102376:21)

Running the node debugging tool I get this error:
(base) marco@pc01:~/webMatters/electronMatters/IPFS-Forge$ node-
nightly --inspect ./node_modules/webpack/bin/webpack.js
 New nightly available. To upgrade: `node-nightly --upgrade`
Debugger listening on ws://<IP_ADDRESS>:9229/fdab8bb4-cd2c-415d-8154-
ac4b554a0c0f
For help, see: https://nodejs.org/en/docs/inspector
Hash: a1c0ce406046af77594b
Version: webpack 4.46.0
Time: 24ms
Built at: 02/06/2021 1:41:03 PM

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to
'production' for this value. Set 'mode' option to 'development' or
'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn
more: https://webpack.js.org/configuration/mode/

ERROR in Entry module not found: Error: Can't resolve './src' in
'/home/marco/webMatters/electronMatters/IPFS-Forge'

Error, which I do not understand, because this is the path to main.ts :
(base) marco@pc01:~/webMatters/electronMatters/IPFS-Forge/src$ ls -lah
 | grep main.ts
-rwxr-xr-x 1 marco marco 1,6K feb  6 09:22 main.ts

that I defined in /tools/webpack/webpack.main.js :
 entry: ['./src/main.ts'],

And according to IPFS people the problems I'm having are due to the webpack configuration: https://github.com/ipfs/js-ipfs/issues/3531#issuecomment-773989083
But I do not understand where the problem is.
Would you be so kind in helping me to solve the problem?

Bug in code, nothing to fix on webpack side, please read the stack, something try to use get method, but get is not a function in .webpack/main/index.js file

Open .webpack/main/index.js file and fix the problem

And never ignore the issue template, respect the time of other developers

https://github.com/jprichardson/node-jsonfile/issues/140

Sorry @alexander-akait .
What code are you talking about?
The only ipfs-related code I wrote is the following in /src/main.ts :
const IPFS = require('ipfs');
app.on('ready', async () => {
createWindow()
try {
const node = await IPFS.create()
const id = await node.id()
console.log(id)
} catch (err) {
console.error(err)
}
})
IPFS people tell me that it's my webpack configuration which is broken.
And you say that in my code, something is trying to use get method.
As I wrote above, I know that this is not the right place to ask for help.
But as I explained, I already asked for help in Gitter Webpack in StackOverflow and in Discord Electron Forum. No hints, no responses, no help

Because developers can't answer immediately, you need wait answer, also you ignore the issue template and I can't help you because I can't reproduce, screenshots is not help here, if you need help ASAP - create reproducible test repo and be patient

@alexander-akait I've beein trying to solve this problem, asking for help and getting no response, for the last three days.
That's why I'm here now
This is the reproducible test repo: https://github.com/raphael10-collab/IPFS-Forge
git clone it -> yarn -> yarn start

@raphael10-collab Firstly you use webpack v4 and webpack v5 in the one project, it is bad, you shouldn't do this (try to use npm v7 and you will see the problem)
Also npm run build command doesn't exist.

Using npm run package throw an error TypeError: Cannot read property 'tapAsync' of undefined due usage webpack v4 and v5

I didn't realized that I was using webpack v5.
In package.json I have "webpack": "4"

because https://github.com/electron-userland/electron-forge/blob/master/packages/plugin/webpack/package.json#L31, you need to use v4 or open an issue in electron-forge repo to support webpack@5

I already opened an issue more than one month ago in electron-forge to support webpack@5 and I've been told that since upgrading is a complex task, it will take a lot of time.
Sorry for my ignorance.. how to detect the package using webpack@5?
(base) marco@pc01:~/webMatters/electronMatters/IPFS-Forge$ npm ls | grep "webpack"
├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>└──<EMAIL_ADDRESS>

Just run npm ls webpack and you will see all webpack versions

(base) marco@pc01:~/webMatters/electronMatters/IPFS-Forge$ npm ls webpack

<EMAIL_ADDRESS>/home/marco/webMatters/electronMatters/IPFS-Forge
├─┬<EMAIL_ADDRESS>│ ├─┬<EMAIL_ADDRESS>│ │ └──<EMAIL_ADDRESS>deduped // <---------------------
│ ├─┬<EMAIL_ADDRESS>│ │ └──<EMAIL_ADDRESS>deduped // <--------------------
│ └──<EMAIL_ADDRESS>deduped // <--------------------
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>deduped invalid // <-------------------
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>deduped // <----------------
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>deduped invalid // <------------------
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>deduped
└─┬<EMAIL_ADDRESS>// <-------------------
  └─┬<EMAIL_ADDRESS>    └──<EMAIL_ADDRESS>deduped   // <-------------------

npm ERR! code ELSPROBLEMS
npm ERR! invalid<EMAIL_ADDRESS>/home/marco/webMatters/electronMatters/IPFS-Forge/node_modules/webpack
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/marco/.npm/_logs/2021-02-06T16_03_25_817Z-debug.log
They are all<EMAIL_ADDRESS>some of which are invalid

Yep, because @electron-forge/plugin-webpack requires v4

Based on this upgraded template: https://github.com/codesbiome/electron-react-webpack-typescript-2021
I created a brand new repo : https://github.com/raphael10-collab/Ipfs-Webpack with webpack v5, except for electron-forge which keeps its version v4 :
(base) marco@pc01:~/webMatters/electronMatters/Ipfs-Webpack$ npm ls webpack
<EMAIL_ADDRESS>/home/marco/webMatters/electronMatters/Ipfs-Webpack
├─┬<EMAIL_ADDRESS>│ ├─┬<EMAIL_ADDRESS>│ │ └──<EMAIL_ADDRESS>deduped
│ ├─┬<EMAIL_ADDRESS>│ │ └──<EMAIL_ADDRESS>deduped
│ └─┬<EMAIL_ADDRESS>│   └─┬<EMAIL_ADDRESS>│     └──<EMAIL_ADDRESS>deduped
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>deduped
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>deduped
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>deduped
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>deduped
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>deduped
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>deduped
└─┬<EMAIL_ADDRESS>  └─┬<EMAIL_ADDRESS>    └──<EMAIL_ADDRESS>deduped

I installed the latest version of ipfs package and  in main.ts I added only this single line:
 const IPFS = require('ipfs');

And I get this error:
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Cannot find module 'ipfs'
    at webpackMissingModule (/home/marco/webMatters/electronMatters/Ipfs-Webpack/.webpack/main/index.js:102:78)
    at Module../src/main.ts (/home/marco/webMatters/electronMatters/Ipfs-Webpack/.webpack/main/index.js:102:157)
    at __webpack_require__ (/home/marco/webMatters/electronMatters/Ipfs-Webpack/.webpack/main/index.js:21:30)
    at Object.0 (/home/marco/webMatters/electronMatters/Ipfs-Webpack/.webpack/main/index.js:161:18)
    at __webpack_require__ (/home/marco/webMatters/electronMatters/Ipfs-Webpack/.webpack/main/index.js:21:30)
    at /home/marco/webMatters/electronMatters/Ipfs-Webpack/.webpack/main/index.js:85:18
    at Object.<anonymous> (/home/marco/webMatters/electronMatters/Ipfs-Webpack/.webpack/main/index.js:88:10)
    at Module._compile (internal/modules/cjs/loader.js:1152:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1173:10)
    at Module.load (internal/modules/cjs/loader.js:992:32)

I also added in webpack.main.js :
resolve: {
  extensions: ['.js', '.ts', '.jsx', '.tsx', '.css', '.json'],
  //alias: require('./webpack.aliases'),
  modules: ['node_modules', 'src']
},
resolveLoader: {
  modules: ['node_modules'],
  mainFields: ['loader', 'main'],
},

but still :  Cannot find module 'ipfs'

Because you don't have ipfs module, run npm i ipfs

(base) marco@pc01:~/webMatters/electronMatters/Ipfs-Webpack$ npm i ipfs

changed 11 packages, and audited 1804 packages in 4s

138 packages are looking for funding
  run `npm fund` for details

3 low severity vulnerabilities

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

(base) marco@pc01:~/webMatters/electronMatters/Ipfs-Webpack$ npm ls ipfs
<EMAIL_ADDRESS>/home/marco/webMatters/electronMatters/Ipfs-Webpack
└──<EMAIL_ADDRESS>

And try to build again

Sorry for the question.... which command you suggest me to add to the scripts in package.json to build?

I don't know, run command which run webpack to bundle

Following the indications found here: https://webpack.js.org/guides/getting-started/#creating-a-bundle
I first added in package.json the script: "build": "webpack"
when executing yarn build I got this error: Module not found: Error: Can't resolve './src' in '/home/marco/webMatters/electronMatters/Ipfs-Webpack'
(base) marco@pc01:~/webMatters/electronMatters/Ipfs-Webpack$ yarn build
yarn run v1.22.5
$ webpack
CLI for webpack must be installed.
  webpack-cli (https://github.com/webpack/webpack-cli)

We will use "yarn" to install the CLI via "yarn add -D webpack-cli".
Do you want to install 'webpack-cli' (yes/no): yes
Installing 'webpack-cli' (running 'yarn add -D webpack-cli')...
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix
package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning,
remove package-lock.json.
[1/4] Resolving packages...
warning @electron-forge/plugin-webpack > webpack > watchpack > watchpack-chokidar2 > chokidar ><EMAIL_ADDRESS>
fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
[2/4] Fetching packages...
info<EMAIL_ADDRESS>The platform "linux" is incompatible with this module.
info<EMAIL_ADDRESS>is an optional dependency and failed compatibility check. Excluding it from installation.
info<EMAIL_ADDRESS>The platform "linux" is incompatible with this module.
info<EMAIL_ADDRESS>is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning "ipfs > ipfs-cli ><EMAIL_ADDRESS>has unmet peer dependency<EMAIL_ADDRESS>warning "ipfs > ipfs-cli ><EMAIL_ADDRESS>has unmet peer dependency<EMAIL_ADDRESS>warning "ipfs > ipfs-core ><EMAIL_ADDRESS>has unmet peer dependency "abort-controller@*".
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 11 new dependencies.
info Direct dependencies
└─<EMAIL_ADDRESS>info All dependencies
├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>└─<EMAIL_ADDRESS>assets by status 0 bytes [cached] 1 asset

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or
'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/

ERROR in main
Module not found: Error: Can't resolve './src' in '/home/marco/webMatters/electronMatters/Ipfs-Webpack'

webpack 5.13.0 compiled with 1 error and 1 warning in 108 ms
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

@alexander-akait A IPFS Developer made a thoughrough analysis which I report here:
https://github.com/ipfs/js-ipfs/issues/3531#issuecomment-774649075
"
Starting a new project with npx create-electron-app my-new-app --template=typescript-webpack and added IPFS to it. In main.ts I start an IPFS node, I'm greeted with:
Error: Module build failed (from ./node_modules/@marshallofsound/webpack-asset-relocator-loader/dist/index.js):
SyntaxError: Unexpected token (85:14)
at Object.module.exports.pp$4.raise (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/node_modules/@marshallofsound/webpack-asset-relocator-loader/dist/index.js:20834:13)
// some lines omitted
at Object.parseExprAtom (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/node_modules/@marshallofsound/webpack-asset-relocator-loader/dist/index.js:4551:117)
at Object../node_modules/fs-extra/lib/mkdirs/make-dir.js (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/.webpack/main/index.js:76966:7)
at webpack_require (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/.webpack/main/index.js:21:30)
at Object../node_modules/fs-extra/lib/mkdirs/index.js (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/.webpack/main/index.js:76943:44)
at webpack_require (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/.webpack/main/index.js:21:30)
at Object../node_modules/fs-extra/lib/copy-sync/copy-sync.js (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/.webpack/main/index.js:75881:20)
at webpack_require (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/.webpack/main/index.js:21:30)
at Object../node_modules/fs-extra/lib/copy-sync/index.js (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/.webpack/main/index.js:76058:13)
at webpack_require (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/.webpack/main/index.js:21:30)
at Object../node_modules/fs-extra/lib/index.js (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/.webpack/main/index.js:76809:6)
at webpack_require (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/.webpack/main/index.js:21:30)
If I click through the stack trace, eventually in /Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/.webpack/main/index.js on line 76966 I find:
// "./node_modules/fs-extra/lib/mkdirs/make-dir.js":
/!!
! ./node_modules/fs-extra/lib/mkdirs/make-dir.js !
**/
/! no static exports found /
// (function(module, exports) {
throw new Error("Module build failed (from ./node_modules/@marshallofsound/webpack-asset-relocator-loader/dist/index.js):\nSyntaxError: Unexpected token (85:14)\n    at Object.module.exports.pp$4.raise (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/node_modules/@marshallofsound/webpack-asset-relocator-loader/dist/index.js:20834:13)\n    at Object.module.exports.pp.unexpected (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/node_modules/@marshallofsound/webpack-asset-relocator-loader/dist/index.js:18680:8)\n    at Object.module.exports.pp$1.parseTryStatement (/Users/alex/Documents/Workspaces/achingbrain/ipfs-electron-forge/node_modules/@marshallofsound/webpack-asset-relocator-loader/dist/index.js:19069:49)\n    at Object.module.exports.pp$1.parseStatement snip");
The error being thrown contains the stack trace that's printed out when I npm start the project.
So ./node_modules/fs-extra/lib/mkdirs/make-dir.js has a syntax error on line 85. Looking at line 85 of make-dir.js at v9.10, it's using Optional Catch Binding, which appears in ECMAScript2019. ECMAScript2019 is otherwise known as ES10
@marshallofsound/webpack-asset-relocator-loader contains an JavaScript AST parser and is a fork of @vercel/webpack-asset-relocator-loader - the fork is now very out of date. It looks like the fork should be able to support ES10 but it defaults to ES9 and doesn't seem to expose an option to change that. If I change the default in the generated source it crashes somewhere else so it's ES10 support may not be fully implemented, I don't know.
The upstream version supports ES2020 so likely would understand the Optional Catch Binding syntax.
So your options are:
Stop using webpack
Convince the maintainer of @marshallofsound/webpack-asset-relocator-loader to update their fork and re-apply their patch if it's still necessary

"

Passing through... Much love for @alexander-akait 😀


Resolve #12

Make Method::operator= and VM::operator= resilient to self-assignments

Sweet, thanks for catching this! 🙂


Dag factory

Task
n/a
Description of changes

Adding a dag_factory to simplify our dags and DRY/centralize/standardize a bunch of airflow configs.
Update example dags to use dag_factory

Explored a bunch of different options including building out a class based dag factory.  These were all pretty restrictive and required us knowing that we would only be using a subset of dag operators.  Following the dag factory pattern in this Dry Code Airflow Presentation
Other Research for dag factories

Flywheel Dag Article <-- really good but perhaps overly complex for our case right now.  Also pretty locked down to just the python operator in their example
Atronomer Article on Dynamic Dags

TODO:

Still fighting an issue where if I don't include a commented out dag import the example_bash won't show up in the airflow UI?
The S3 functions probably need to be moved to a utils file... or at least centralized into a lib folder under the examples folder.

Test Plan
Running Locally using aws-mwaa-local-runner.

./mwaa-local-env build-image
./mwaa-local-env start
Goto http://localhost:8080/home
Try running the example dags. (NOTE you will need to set up a local s3_conn for s3 based examples ... reach out to Cyrus if you need help here)

mistake apologies


Codegen watch skip first run

Is your feature request related to a problem? Please describe.
Currently, we run codegen, then codegen watch to ensure that the first run is successful before compiling the project. However, when the codegen watch is started, it runs an extra codegen before starting the watch.

Describe the solution you'd like

It would be nice if we could run the codegen watch and send a flag for it to not run its initial codegen until file changes.
Describe alternatives you've considered

No alternatives thought of
Additional context

If we agree on the solution, I offer my time to implement it.

I don't think we can use the current watch flag as it's a boolean or string blob of files. I think we would need a new flag like --watchSkipFirstCodegen (idk I'm bad at naming 😄) and we would skip that initial codegen.
https://github.com/dotansimha/graphql-code-generator/blob/bed5bdf04dd18b87490b135467c8a6b96a87d1fe/packages/graphql-codegen-cli/src/utils/watcher.ts#L148

@dotansimha @charlypoly  any update on this ?


touchmoves will now have the 'target' property set

Ever since the 'moveWhenInside' property was added - https://github.com/pixijs/pixi.js/commit/24b1580124496c547280026ad65a77ec671188f9 -  for whatever reason, it's asked to not do the processInteractive without doing a hitTest.
I have no idea why. Without it, all moves due to a touchevent give a 'target' property of null, even if the move IS over an object - showing bugs like https://github.com/pixijs/pixi.js/issues/4887
This doesn't change the way 'moveWhenInside' works at all.... it's just enabling the this 'target' property to be filled via allowing a hitTest.
@GoodBoyDigital You first added this over 3 years ago now.. I wonder if you can remember any good reason you didn't want a hitTest to occur for touch events only on touchmove?

Hey ya! Honestly, i can't even remember what it was for :/
Im sure there was a reason, but you are much closer to this part of the codebase than I am for sure. If it makes sense to remove, please do! 👍

@themoonrat You know I finally remembered what it was for! It was a performance thing. I found that most of the time mouse / touch move hit testing was not important so I decided to not perform the test. (The idea was that the user could build the functionality by combining this with mouse over / mouse out)

@themoonrat what do you want to do about this PR?

Considering desktop does that test anyway without any performance complaints, and devices are far more powerful now than they were when the optimisation was added.... I think we're ok for this PR to go through? Don't think there's another way of solving the issue reported, otherwise

Codecov Report

Merging #5695 into dev will decrease coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##              dev    #5695      +/-   ##
==========================================
- Coverage   70.56%   70.56%   -0.01%
==========================================
  Files         206      206
  Lines       10410    10409       -1
==========================================
- Hits         7346     7345       -1
  Misses       3064     3064

Impacted Files
Coverage Δ

packages/interaction/src/InteractionManager.js
93.27% <100%> (-0.02%)
: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 b2a1548...9765ab0. Read the comment docs.


A validator of type Future

Hello,
I'm trying to use Formz to validate a phonenumber using the https://pub.dev/packages/libphonenumber library.
But libphonenumber's validation function returns a Future, so I was unable to use it in the validator() function of Formz
import 'package:formz/formz.dart';
import 'package:libphonenumber/libphonenumber.dart';

enum PhoneNumberValidationError { invalid }

class PhoneNumber extends FormzInput<String, PhoneNumberValidationError> {
  const PhoneNumber.pure() : super.pure('');

  const PhoneNumber.dirty([String value = '']) : super.dirty(value);

  static final _phoneNumberRegex = RegExp(r'^[+]{1}[0-9]{1,4}[-\s\./0-9]*$');

  @override
  PhoneNumberValidationError validator(String value) {
    return PhoneNumberUtil.isValidPhoneNumber(phoneNumber: "", isoCode: 'US').then((value){
      return null;
    });
  }
}

error: A value of type 'Future<Null>' can't be returned from method 'validator' because it has a return type of 'PhoneNumberValidationError'. (return_of_invalid_type at [datoraid] lib/models/phone_number.dart:16)

Not entirely sure if this falls into the same use case, but I think this would be great too for scenarios involving asynchronous validation of fields.

+1

+1

+1

@felangel any update on this? It seems to me the simplest solution would necessitate rewriting Formz with async validator.

1

+1 !

Looking at the PR discussion, it seems like there will be no async validation in the future. This is a deal breaker. In a real production application, there must be a use case for async valdiation.

@Firman95 we are open to work on async validation for Formz. I'm aware that this is a valuable feature for production applications. We want to make sure that when doing so users that will only rely on synchronous validation are not hindered.
If you want this to happen drop a 👍 on the issue, stay tuned!

@alestiago Hello, any update on this?
Thanks

Hi @MiniSuperDev not so far. We haven't prioritised this work yet, but since it has a decent number of 👍 , I'm moving it to triage so we can re-prioritise this.


[Bug]: Incorrect error notification when admin create group with already taken name

Admin receives error notification Key (name)=(name) already exists. when trying to create a group with identical names. We need to prevent this action because it can be confusing and send an error notification.
URL: https://youtu.be/oVNXs_9dZPo

It's the correct behavior for the admin to throw this error, as we should notify the users that something in their input is being rejected by the backend. I do agree that the error should be more "human friendly", something along the lines of "A customer group with that name already exists", but this should be handled by the backend, as we would not want to fetch every customer group (potentially +100) to check if the name is already taken before submitting the form. Closing this as there are already issues for better error messaging in the core repo :)


go/stats/influxdbbackend/influxdb_backend.go:40: undefined: client.ClientConfig

I follow the instructions in GetStarted:
when I make build, there are wrongs:
# github.com/youtube/vitess/go/stats/influxdbbackend
go/stats/influxdbbackend/influxdb_backend.go:40: undefined: client.ClientConfig
go/stats/influxdbbackend/influxdb_backend.go:60: undefined: client.Series
go/stats/influxdbbackend/influxdb_backend.go:62: undefined: client.Series
go/stats/influxdbbackend/influxdb_backend.go:73: backend.client.WriteSeries undefined (type *client.Client has no field or method WriteSeries)

it seems like the Influxdb has been making lots of changes lately.

We are using godep for the influx db client, so this should actually use the version that is submitted under Godeps/_workspace/src/github.com/influxdb/influxdb/client/
Which command were you running that fails? We probably forgot to prefix one command with 'godep'...


sux is heavy on dependencies

(I'll just continue making issues with observations. Feel free to dismiss them but I figured you may appreciate some user perspective :)
Adding sux just for the BitFieldVec adds 131 packages to my lockfile and significantly increases compile times.
Eventually, I suppose it may be nice to pull parts into their own creates that are then hosted under the sux crate behind (default on) feature flags.
On a particular note, you depend on the bitvec crate, but it seems you never actually use it.
Also the rand dependency could probably be dev only?
Maybe rayon, flate2, zstd could be behind a flag? You also depend on both xxhash-rust in epserde and xxh3 here.
Oh looking at deps: I'm not a fan of the common_traits crate name; sounds far too generic for my taste. (I suppose it works as a workspace crate, but after pushing to crates.io it doesn't work anymore.)

It's totally possible we didn't do proper minimization of the dependencies and we forgot something along the way.
BTW, do you know of any tool that will do that automatically? Removing crates one at a time and compiling seems really stone age, but I have no other idea.
rayon is already optional, just disable default features.

And, yes, common_traits is terrible.

I removed a lot of unused dependencies. It was our mistake not to check before this release. May I ask you before release with this fix to check with a local github clone how much this improves the situation for you?

Thanks! On git master it went down by 17 crates, that's good :)
Disabling rayon doesn't do much though -- it's also a dependency of both rdst and dsi-progress-logger -> sysinfo.
cargo build -r in my otherwise tiny project goes from 52s to 38s, so that's a nice win :)
By far the slowest step in cargo build -r --timings is running the zstd-sys build script (I assume that compiles some C code), followed by the aho-corasick, regex-syntax, regex-automate.
There's also two versions of syn that are a bit slow. There are more crates that are included with multiple versions, but deduplicating them may or may not be hard.


Change device LAN IP from DHCP to STATIC and assign an IP, mask ..

Hi,
I started using your script and is very useful. I have a question ... just wondering ....
Is it possible to use a function call via REST API to change the below?
Device attributes:

Change DHCP to STATIC
Assign an IP address, mask and gateway

Thanks. There isn't an API call today that accomplishes either of what you're asking, so in the meantime, please make a wish at the bottom-right of Dashboard!


resetStore method disappeared

There used to be a resetStore method inside the ApolloClient but that seems to have disappeared altogether due to some merge.
Should be an easy fix: the resetStore method inside ApolloClient should just call the resetStore method inside this.queryManager. Probably a test to go along with it.

Whoever does this should also figure out when it disappeared because that will help us prevent similar "accidents" in the future. Also curious to know why this wasn't caught by a test.

I would guess we have a test for the QueryManager version but not the ApolloClient version.

Was it definitely called resetStore? I just did a search back through every commit, and the only resetStore I could find is on QueryManager:
git grep resetStore $(git rev-list --all)

grepping for reset returned a lot more results, but I didn't see anything interesting.
Maybe a rebase/force push somewhere is to blame?

@johnthepink agreed, even the PR which added it is just on the manager https://github.com/apollostack/apollo-client/pull/314/files#diff-748b449db1e130c8d777fa1ffa1e0725R462

Did same thing a few days ago @johnthepink and looks like this never existed at the client level.

I must have blotted it out with one of the rebases on that PR or forgotten to expose it at the client level. Thanks for fixing this though!

@Poincare can you look at the PR?


Move by clauses on aggregators to all be in front.

With by clauses on binary operators imminent,
mixing the two forms would be confusing. It's
also easier to understand when expressions are deep.
@jrv @fabx

So in my opinion, that is less readable for the simple cases and will look really weird to newbies ("sum X by Y" vs. "sum by X the Y" just doesn't read like English anymore).
I think it's good that we support both orders, but not sure about changing the docs. Would like to have another opinion, like @beorn7's.
If we do go this route, do we really want no space between the )( closing brace of the by-clause and the opening brace of the aggregated expression?

Now we have swapped roles, it seems... :)
I believe things should be accessible for newbies where possible. I also believe, the current by clause syntax in the docs is more accessible for newbies.
I might be convinced otherwise when I see by clauses on binary operators.

I actually wonder if by clauses for binary operators should be named on instead, because they are more for matching between both left/right sides, than output grouping, like in:
node_cpu / group_left(cpu,mode) by(instance) node_boot_time

instead:
node_cpu / group_left(cpu,mode) on(instance) node_boot_time

So in my opinion, that is less readable for the simple cases and will look really weird to newbies ("sum X by Y" vs. "sum by X the Y" just doesn't read like English anymore).

They both read fine to me.

If we do go this route, do we really want no space between the )( closing brace of the by-clause and the opening brace of the aggregated expression?

I'm unsure what the best spacing is.

I might be convinced otherwise when I see by clauses on binary operators.

The real issue is when you start nesting expressions, it's not at all obvious which by clause goes with which operator.

So I started to get used to @brian-brazil's way to write expressions and putting the by clause in the front. Though, I used a different spacing to make the relation between the by keyword and its labels more obvious and, subjectively, more readable.
avg by(job, service) (rate(rpc_durations_microseconds_count[5m]))

And now I wonder whether we could make the parentheses around the metric clause optional and allow the following:
avg by(job, service) rate(rpc_durations_microseconds_count[5m])

/me eagerly waits for a blessed formatting style and promtool fmt.

@grobie Regarding fmt tool - I'd be happy to have that. There are implementation concerns but it's not worth investing time in those as long as we don't have a clear specification of "the one and only" valid formatting. If you look into go fmt you'll see that it can get fairly complex.
So for the most part it needs someone leading the efforts of agreeing on formatting rules.


Try fixing the tabs by using the id prop

Fixes

Fixes #1425 by @panchovm
Description

This PR uses the required tab prop to link VTab to VPanel and to make sure that the selected tabpanel is set correctly. Now, it is required to use the same id for the VTab and VPanel that are linked.
Testing Instructions

Merge and see...
Checklist

[x] My pull request has a descriptive title (not a vague title like Update index.md).
[x] My pull request targets the default branch of the repository (main) or a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[x] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no visible errors.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@obulat I'll merge this while you're 😴 so if it doesn't fix the problem, you'll know as early as possible 😆


WebGL issues with WDI5 on Jenkins

Hi,
We are trying to run some WDI5 tests on Jenkins in a docker container that contain test cases on a 3D Viewer (this component: https://ui5.sap.com/#/entity/sap.ui.vk.tutorial.VIT/sample/sap.ui.vk.tutorial.VIT.06)
These do not seem to run on jenkins, and it seems like the root cause is that WebGL is not enabled with the chromedriver. Is there any specific wdio configuration that we can use to force the browser to run with WebGL enabled?
These are the current flags we are using in the wdio.conf.js file under goog:chromeOptions for browserName: "chrome"
args:
"--headless",
"--incognito",
"--disable-dev-shm-usage",
"--window-size=1366,768",
"--no-sandbox",
"--disable-extensions",
"--ignore-certificate-errors",
"--disable-gpu",
"--ignore-urlfetcher-cert-requests"

These are the dev dependency versions:
"devDependencies": {
		"@wdio/cli": "^8.16.0",
		"@wdio/junit-reporter": "^8.24.2",
		"@wdio/local-runner": "^8.16.0",
		"@wdio/mocha-framework": "^8.16.0",
		"@wdio/spec-reporter": "^8.16.0",
		"@wdio/utils": "^8.16.0",
		"chromedriver": "^123.0.0",
		"prettier": "^3.1.1",
		"wdio-chromedriver-service": "^8.1.0",
		"wdio-docker-service": "^3.2.1",
		"wdio-timeline-reporter": "^5.1.0",
		"wdio-ui5-service": "^2.0.0",
		"xmlhttprequest-ssl": "^2.1.1"
}

never encountered this before, but did you try to not
--disable-gpu
?

@vobu we did, but didn't seem to work. Even with the current configuration, it seems like WebGL was enabled at random. Are there any specific wdio configurations recommended for use with threejs/3D apis?

i never had to run tests headless on a d3/threejs app - sorry, can't help here. i'd suggest you hop over to the wdio discord channel - chances are you'll get some advice there...

@vobu could you help me out with the channel link please?

https://discord.webdriver.io/

@apoorvavishwanatha : Can you please share the solution.


Nice!

Nice immersion enhancement. :)
I especially like that they are "audible voices" instead of "inaudible voices." That wouldn't be as great.

Also, closing this because it's just a kudos anyway.


Add an example

Add an example that updates an OTA enabled app using another app encoded in the flash memory.

Thank you for wanting to contribute! I have not read the entire PR yet. I left some comments on some things I think might have been commited by mistake as a first iteration. Will read more of it soon!

Additionally, I have built an extension that performs a checksum of the update using ShA256. I have called this HashedOtaUpdate. Would you be open to a contribution for this?

Having both signature verification (chip will only trust firmware signed by trusted parties) and integrity verification is something I really want in general. I have not yet coded this up for myself. And I have not decided if it belongs in this crate or outside. If it's put inside the crate then it becomes very opinionated as to what checksum algorithm and/or signature method it uses. But yeah, sha256 is universally a pretty solid choice, so it might be good! As long as we keep it behind an opt-in feature flag and the dependency it pulls in is sane and fairly small.

Additionally, I have built an extension that performs a checksum of the update using ShA256. I have called this HashedOtaUpdate. Would you be open to a contribution for this?

Hmm.. I thought about this again. How is it implemented? I don't want this crate to be locked to a specific format in how the images are transferred to the chip, neither be biased on the transport method.

Having both signature verification (chip will only trust firmware signed by trusted parties) and integrity verification is something I really want in general. I have not yet coded this up for myself. And I have not decided if it belongs in this crate or outside. If it's put inside the crate then it becomes very opinionated as to what checksum algorithm and/or signature method it uses. But yeah, sha256 is universally a pretty solid choice, so it might be good! As long as we keep it behind an opt-in feature flag and the dependency it pulls in is sane and fairly small.

I agree that it is tough to be opionated regarding checksum algorithm. The ESP32 has CRC hardware support built in, for example. I think it would be a good idea to create a trait as the public interface, that we implement for SHA256 as a start, and allow future contributors to extend as desired.

Hmm.. I thought about this again. How is it implemented? I don't want this crate to be locked to a specific format in how the images are transferred to the chip, neither be biased on the transport method.

My implementation is an extension of ota.write, where the incremental checksum is calculated per chunk. This checksum could be any algorithm. Then, I extended ota.finalize(expected_checksum) to confirm the checksum against the expected one.
This is not locked into the specific format or transport method, but does require the user to also transfer the expected checksum over a side channel.


Update tutorial-custom-container.md

There was  where should be

@piradata : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off


Proposal: Integration of Chef External Secrets Provider into External Secrets Repository

Hello External Secrets maintainers,
We, the IBM team, have developed a Chef External Secrets provider that seamlessly integrates Chef data bags with Kubernetes secrets through the External Secrets framework. The implementation is complete and tested.
Contribution Details:
Provider: Chef External Secrets
Integration: Chef data bags to Kubernetes secrets
Documentation: Comprehensive documentation will be provided
Testing: Thoroughly tested in local and production Kubernetes environments
Is your feature request related to a problem? Please describe.
This integration aims to enhance the management of secrets by bridging the gap between Chef-managed configurations, stored in Chef data bags, and Kubernetes secrets. The goal is to facilitate a cohesive and unified experience for users working with secrets in both Chef and Kubernetes environments. This enhances the integration between Chef and Kubernetes for managing secrets.
Describe the solution you'd like
We would like to propose the inclusion of the Chef External Secrets provider into the External Secrets repository. This will enable users to seamlessly integrate their Chef-based secret management with Kubernetes through the existing External Secrets framework.
In many enterprises, legacy applications and infrastructure are still tightly integrated with Chef for configuration management. Teams often rely on Chef data bags to securely store sensitive information such as application secrets and infrastructure configurations. These data bags serve as a centralized repository for managing and distributing sensitive data across the Chef ecosystem.
To illustrate, consider a legacy application that requires API keys for interacting with external services. In a Chef-managed environment, these API keys might be stored within a Chef data bag, providing a secure and centralized method for managing these sensitive credentials. The infra teams also leverage Chef data bags to store configuration details, ensuring consistent deployment and management of infrastructure components.
With the increasing adoption of Kubernetes, there is a growing need to bridge the gap between Chef-managed configurations and Kubernetes secrets. This is where the Chef External Secrets provider comes into play. The provider acts as a connector, seamlessly retrieving secrets from Chef data bags and transforming them into Kubernetes secrets. This integration allows legacy applications and infrastructure teams to continue leveraging their existing Chef-based workflows while smoothly extending their capabilities to Kubernetes.
For example, let's consider a Chef data bag named "my_app_secrets" that stores the API key for the legacy application:
{
  "id": "my_app_secrets",
  "api_key": "super_secret_key"
}

The Chef External Secrets provider, when integrated with External Secrets for Kubernetes, would automatically fetch this Chef data bag and create a corresponding Kubernetes secret, ensuring that the API key is available to the legacy application running within Kubernetes pods.
This seamless integration simplifies the transition for organizations with established Chef practices, enabling them to embrace Kubernetes without compromising their existing security and configuration management practices. We propose the inclusion of the Chef External Secrets provider in the External Secrets repository to provide a comprehensive solution for managing secrets across both Chef and Kubernetes environments.
Describe alternatives you've considered
Integrating it directly into the existing External Secrets repository offers a more streamlined and consolidated solution for users managing secrets across diverse platforms. This approach aims to enhance user experience by providing a unified interface within the established External Secrets framework.
Additional context
Chef External Secrets provider utilizes the go-chef/chef Golang library to connect to the Chef server. The Chef server documentation can be found here. We have thoroughly tested and documented the provider, and we believe it aligns with the goals and functionality of the External Secrets project.
We are open to collaboration and welcome feedback from the community to ensure the successful integration of the Chef External Secrets provider into the External Secrets repository.

Hey @sourav977 i took a quick look at the API etc and it looks like a good fit :+1:. Even though you can achieve some of features with the existing webhook provider i think there is a big benefit of having a separate provider and documentation for it :+1:
Regarding ownership: we can not take full ownership of the provider, would you like to step in and maintain it for the  foreseeable future? :pray:

@Skarlso
Since the PR got merged yesterday, should we close it

Yep. Sounds good.


(PUP-4465) Update description of --logdesc option

This commit updates the descripton of the --logdesc option for
the applications agent, apply, device, and master with information
about JSON structured logging output when the path ends with '.json'.

It is logdest (not logdesc), but the typo is only in the commit message. Merged anyway.


ESC byte escape

Rendered

:+1: I don't think we should add too many of these but this one is actually useful.

I would have obviously made use of this a lot in the terminal emulator I am writing.

Reference implementation: https://github.com/rust-lang/rust/pull/30647

Since anyone who is working with the terminal really should be using a library to handle colors for them instead of doing it themselves (that way it might actually work on Windows if the terminal library supports the console API there), that means most Rust code won't have to deal with inserting escape codes directly.  The few number of libraries that would benefit from this combined with the fact that this merely saves a couple characters going from \x1b to \e means I feel that this addition is not worth the complexity. Therefore I am opposed to this RFC.

This seems like it would cause silent (non-compile) breakage? Anyone who had a literal \e in any string would suddenly have an ESC byte instead. It seems unlikely that that would be common, but it also seems plausible that it would happen, and crater couldn't catch it.

@quodlibetor Use of \e is currently a compilation error: http://is.gd/TiW8bS

-1. All our extant single-character escapes map to printable characters (and ones that are far more commonly used). It seems inconsistent to give some control characters a shorthand but not others.

@Ericson2314 We already got carriage return (\r), which is not printable, so adding \e is no exception.

The current escapes are a minimal set of universally useful characters, everything else is either ancient or niche (\e is in this category), so I'm mildly against any extensions to this set.

@Ticki \r goes hand in hand with \n and they are very much printable in that they create a new line. It's not just Windows that uses \r\n, many protocols use it including HTTP and IRC.

either ancient or niche

I disagree. \e is neither ancient or niche. It's a very useful escape, since any modern terminal support ANSI escape codes. They're the universal standard for interacting non-trivially with the terminal.

@retep998 That's right, but what I'm trying to say is that it's not printable at its own. It's there for convinience, just like this proposal.

Its bad practice to print ANSI code directly instead of using a library that properly evaluates terminfo sheets to identify the correct code. Obviously there are exceptions to this rule, but maybe Rust shouldn't be promoting this practice.

Its bad practice, even in UNIX, to print ANSI code directly instead of using a library that properly evaluates terminfo sheets to identify the correct code.

ANSI codes are independent of the terminal.

:thumbsdown:

They're the universal standard for interacting non-trivially with the terminal.

They do nothing on Windows.  I've actually had problems with crates that blindly spew out ANSI escape codes, generating garbage on Windows.  I don't see any reason to encourage this further.
If Rust had a standard ANSI emulator in std, I'd probably feel differently.  Given that they should really only be used in unusual cases, or in a terminal library, it seems a little niche.
Then again, it's not like we're hurting for escapes, and it's not an unprecedented addition.  Mostly, I don't like these "they're universally useful" arguments.

They do nothing on Windows. I've actually had problems with crates that blindly spew out ANSI escape codes, generating garbage on Windows. I don't see any reason to encourage this further.

Then maybe it is the other way around. Since the windows terminal is breaking the universal standards, the use of windows shouldn't be encouraged further. It probably depends on whether you consider terminals or windows more important. We're probably lucky that windows treats "\n" correctly. Otherwise people would be arguing that the "\n" escape shouldn't be allowed either.

Since the windows terminal is breaking the universal standards, the use of windows shouldn't be encouraged further.

Yeah, good luck with that.
Even on POSIXy platforms, you don't want to dump escape sequences down pipes; a library will identify the terminal type, but println itself won't.

Yeah, good luck with that.

Luck has nothing to do with this. Only the conscious not to have your freedoms infringed by low quality proprietary software (e.g. the windows "terminal".)

Even on POSIXy platforms, you don't want to dump escape sequences down pipes; a library will identify the terminal type

A program that wants to print escape codes can do the same thing by calling isatty or similar.
~/c/coreutils-8.24/src$ ack isatty | wc -l
32

This is well known.

They do nothing on Windows. I've actually had problems with crates that blindly spew out ANSI escape codes, generating garbage on Windows. I don't see any reason to encourage this further.

That's true, but they're still the universal standard. That Windows breaks it doesn't change that.

Then maybe it is the other way around. Since the windows terminal is breaking the universal standards, the use of windows shouldn't be encouraged further. It depends on whether you consider terminals or windows more important

That's a very bad idea. I agree that it's a terrible design choice by Windows, but it wouldn't make sense to give less support for Windows terminals, since they widely used, and Rust already has pretty good support of Windows.

Luck has nothing to do with this. Only the conscious decision not to have your freedoms infringed by low quality proprietary software (e.g. the windows "terminal".) If the windows terminal respected your freedoms, the free software community would have improved it and added support for the ANSI standard a long time ago.

This is non sense. Windows is very widely used, and that's a fact, whether you like it or not. Ultimately, we should support Windows just as much as Unix.

Windows is a tier 1 platform, and if that changes it will be because of a lack of demand, not because it's a proprietary platform or because it doesn't adhere to POSIX.
Rust is not a GNU project. It's goal is to allow people to write safe, low-level code. It's goal is not to spread the use of free software. Notice that it's licensed under a non-copyleft license.

I agree with @notriddle. This is completely out of the scope of this RFC. Support for Windows is a choice made for Rust, changing this is very unlikely.

On the matter of terminals: Only a very few (at least that I know of) Windows users use terminals. Often these types of people are using Unix. So I believe the demand for terminal support of Windows is very low (correct me if I'm wrong).

Ultimately, we should support Windows just as much as Unix.

Who is this "we"? Is every user of the rustc compiler forced to only write software that runs on windows? What is nonsense is saying "the windows terminal is broken and everyone has to write windows compatible software and for that reason '\e' will not be added". By the same reasoning '\n' should be removed as the windows editor is also broken.

It's goal is to allow people to write safe, low-level code.

Exactly. Cross platform and windows compatible are not among the requirements to be forced upon the users.

Notice that it's licensed under a non-copyleft license.

The licenses are not optimal but rustc is certainly free software.

This is completely out of the scope of this RFC. Support for Windows is a choice made for Rust, changing this is very unlikely.

Rust does not support windows because rust is a programming language. Rustc, which is a compiler, supports windows. And the libraries distributed with this compiler support windows. "C" does not support linux or openbsd or hurt. gcc does that.
The decision to add a feature to a programming language is in most cases completely independent of particular implementations of the language as long as said feature doesn't restrict implementations. And the feature discussed in this RFC certainly does not.

PowerShell?

Who is this "we"? Is every user of the rustc compiler forced to only write software that runs on windows?

No, that's not what I'm saying, I'm just stating that Rust is supporting Windows, and that's an explicit goal of language.

Rust does not support windows because rust is a programming language. Rustc, which is a compiler, supports windows. And the libraries distributed with this compiler support windows. C does not support linux or openbsd or hurd. gcc does that.

"Rust" as rustc + rust + libstd does support Windows.

Moderator note: This discussion is straying pretty far from the specific benefits or costs of this RFC.  I think the point has been made that this feature may not be useful (or even detrimental) for some cross-platform software, and on the other hand that it may be useful for software targeting certain platforms.  Let's not let this get too abstract or grow into a flame war.

@mbrubeck Agree. This Windows/Unix discussion is off-topic of this RFC.

@mbrubeck Agreed.

@mbrubeck Feel free to delete my comments if you find them inappropriate or off-topic.

ANSI codes are independent of the terminal.

Though essentially all modern virtual terminals implement a subset of ECMA-48 ("ANSI" escape codes), as well as their own custom subcommands, which commands they support remains inconsistent between terminals, and it is bad practice to emit a hard-coded escape code instead of using a library like ncurses or Rust's term library.

I must say that I didn't find it hard to just use \x1b for the escape character.

@tbu-: The same could be said for \n and other escapes. That it is easy to remember doesn't change the usefulness of the proposal.

I'm with @retep998 on this one. :-1:

it is bad practice within UNIX-likes to emit a hard-coded escape code instead of using a library

The very purpose of having a standard is that you can use its contents without having to use a library that detects the terminal type and emits terminal specific codes. But maybe you're trying to say that, since standards cannot be relied upon, it cannot be relied upon that \e is the same as \x1b?

But maybe you're trying to say that, since standards cannot be relied upon, it cannot be relied upon that \e is the same as \x1b?

If the terminal isn't configured to use UTF-8, then that's a much bigger problem . Yet, everyone seems to be fine with println! printing UTF-8 to the terminal. Should println also be removed in favor of a library that detects the terminal encoding and transforms the output accordingly? This is not a joke. A larger terminal program I've worked on does actually do exactly this itself.
Unlike ANSI not being followed this is a problem that exists in real life. Isn't it hypocritical that you don't want to allow "\e" because "a library should be used" but nobody has a problem with println! (without escape code) being used directly?

I believe people are okay with println! because printing to the console is such a necessary and important thing for so many programs, but at the same time implementing encoding support for all the various encodings out there would take up a huge amount of binary size (except on Windows which only has one wide encoding).

but at the same time implementing encoding support for all the various encodings out there would take up a huge amount of binary size

On POSIX platforms, libc contains these conversion methods.

No that's not actually correct. I meant the iconv library.

According to @DanielKeep, ANSI not being followed is a problem in real life.

Giving particular weight to a single "terminal" is also hypocritical because nobody is giving particular weight to a single "editor" which cannot display "\n" correctly.

In fact, more weight should be given to the problems with Notepad than to the problems with the Windows console since most windows users probably use the notepad more often than the console.

Interesting question, do we automatically output \r\n line endings on Windows?

@Ticki Mh.. of course it's a tradeoff, how many control characters do we include with their own letter and which we shouldn't. I guess the current ones are a common denominator of what other languages support. If you say that GCC C supports \e, then I guess ANSI C doesn't? Quickly checking other languages: Python does not support it, Ruby does, Go doesn't.

ANSI C does not. It's a GCC extension.

Nope. That would require a switchable "binary mode" vs "text mode" (like
Perl has, for example).
On Tue, Jan 5, 2016, 09:19 tbu-<EMAIL_ADDRESS>wrote:

Interesting question, do we automatically output \r\n line endings on
Windows?
—
Reply to this email directly or view it on GitHub
https://github.com/rust-lang/rfcs/pull/1437#issuecomment-169048630.

The very purpose of having a standard is that you can use its contents without having to use a library that detects the terminal type and emits terminal specific codes. But maybe you're trying to say that, since standards cannot be relied upon, it cannot be relied upon that \e is the same as \x1b?

You are misreading me. The ECMA-48 escape protocol standard is not consistently implemented across the virtual terminals used in UNIX systems, and so it is bad practice not to use a library. You cannot be confident that a standardized escape code is actually supported across all the "ANSI" terminals your program may run on. This "standard" is just not much of a standard (fwiw ANSI withdrew their standard in 1997).

This discussion is going completely off the track. If this trend continues, I'll take the freedom to close this issue. It's not very important anyways.

This discussion is going completely off the track. If this trend continues, I'll take the freedom to close this issue. It's not very important anyways.

Looks on-topic enough to me.

I personally haven’t used these codes much and when I needed \x1b I just used \x1b.
The problem I see with this proposal is mostly not the escape sequence itself, but the fact that introducing it wouldn’t really make everybody just use \e. Most of people would still use \x1b and some would use \e resulting in some segmentation. I see it as a pretty low-gain addition with significant trade-offs.

Moderator note: Deleted a handful of comments that were either meta-discussion or veering off to discuss features unrelated to the '\e' character escape. At this point I'd like to ask people to refrain from commenting unless they have new information or arguments specifically about this RFC. Also keep in mind that use cases that are unimportant to you may be important to other Rust users, and vice-versa. Thanks!

I will close this, since I don't really think it is worth it anymore.


add enscons build

Here's an enscons SConstruct for you to enjoy. :) Install enscons from pypi, and just run scons to build the sdist and wheel. I've given the wheel an invalid tag so it doesn't clobber the flit generated one.
I did notice something that might be useful to you: flit didn't deflate all the files in its own wheel.

Thanks! I'm not going to merge this, as Flit builds itself. You probably saw that coming. But it's interesting to see what it looks like.
And thanks for the tip about deflating files; I'll have a look to see if that's still the case now.

Ha, turns out I've been overlooking compression on most of the files in every wheel, probably for several years. The wheel for flit is less than half the size once you turn on compression.
Maybe people shouldn't use software I write. :wink:

Commit 7f1efcdc8ff1d1298846b5552999e9bdebfe9061 enables compression - thanks for spotting that oversight.
I'll do another release soon, but maybe I'll leave it until tomorrow in case more problems come to light.


Using Lerna for package management

As we are converting this repository to typescript (and our other repos) and as we continue to build out the tooling necessary to implement our client, we will see an increase in the usage of packages in this repository. Currently, the repo is small and we have few (if any) outside packages in use and is not much of a concern. However, I think starting a discussion and thinking about what tools we can use to improve managing libraries early is important so that we have less surprises down the road.
I discovered this tool called Lerna that is being used for js-libp2p for managing JS projects with multiple packages.
Any thoughts?
CC'ing @GregTheGreek, @priom, @ansermino

Also makes sense for solidity vs beaconChain!


Circle around "to be locked" astro object getting hidden depending on camera rotation

Should depend only on laser rotation

Dunno, this seems alright


Fix docs version selector.

skip versions ending with 0 as our CI/CD don't grok them yet.

This is a hack but does the trick. I can have bug to remind us to remove it once CI/CD fixed.

Would be better to just skip v0.10.
I think we know how to fix future version properly.

I though prev = 9 if prev == 10 else prev would look uglier. But ok, can do this.

Well either way is ugly but at least this way it is limited to 0.10 only.


Paste from Primary does not work

Hi!
I really like the ecosystem you have built!
I noticed that the primary paste (e.g. Middle mouse) does not work in the terminal plugin.
I am running KDE Neon stable in the Wayland session of Plasma.
Thanks for your work.

Middle click copy/paste isn't really supported by Lite XL at the moment, so this might need to wait until lite-xl/lite-xl#1729 is merged.
There is a plugin that hacks that in (primary_selection), but that too would need to be adapted to allow other plugins to use the functionality.

Thank you for the explanation. I will wait for the proper support.

So, I just merged this into main, so in theory, with 0e5922a, this should now work.

To clarify: it'll work if you have a build master lite-xl, not 2.1.5.


Inference using Pretrained models

I want to detect Scene graph of some images. How to use this repository to do inference with the help of provided pretrained model (Baseline-SGDet) on an image?
I meant to ask What am i supposed to run here?

@Tejash-Edo25 . Hi tejash. could you run the code? if so code you share how you did it?


FR: Responder for re-granting admin rights to package authors

After approval the package author (either author1 or one of the other authors) would write a comment "@ropensci-review-bot finalize transfer of " which would give author1 admin rights to the repository again. If the repository hasn't been transferred yet it would give an informative error "Can't find repository ropensci/, have you forgotten to transfer it first"?
The command could also be run by the editor, but by no one else.
The approval comment template would be updated by me to mention this command.

PR documenting it https://github.com/ropensci/software-review/pull/487


I encountered such a situation, I will write a 4K file data when I power on, and then in the first 10 power-on, I will write the file in different blocks, but later power-on will be in A, B two Write files in blocks cyclically, which will cause the life of these two blocks to drop dramatically.
I am guessing that the CRC check value is duplicated.

If I understand the concern correctly, this is expected. littlefs doesn't aggressively move metadata-pairs as this creates a wear-amplification problem for CoW filesystems (all the writes gets pushed to the root, which gets exhausted quickly).
Instead, littlefs cycles two blocks for metadata-pairs until lfs->cfg->block_cycles as passed, and then the blocks are moved. You can set lfs->cfg->block_cycles to a small number if you want more aggressive wear-leveling at a performance cost.

hi @geky , sorry to reply so late.I don't mean blocks of metadata pairs, but to blocks of data that store files.


"Visual Studio Code" is a horrible name

Issue Type: Feature Request
I realize it's already far too late and the damage is irreversibly done, but I must vent: I hate the name.  I am a dev who primarily works in visual studio. Can you guess what happens when I try to google or bing or any other search engine for anything at all related to visual studio? If you guessed "you get an absolute ton of results about the entirely different product visual studio code", you are correct! I'm sure this works both ways, but it seems that vscode is now far more popular than VS, this has been really destroying my ability to augment VS to make it do what I want, because everyone on earth wants to do what I want in vscode instead and drowns out the results I want.
I know deep in my heart that this isn't really possible but please change the name of the product so that maybe in 10 years I can find search results about VS again.
/rant
VS Code version: Code 1.67.1 (da15b6fd3ef856477bf6f4fb29ba1b7af717770d, 2022-05-06T12:37:03.389Z)
OS version: Windows_NT x64 10.0.22000
Restricted Mode: Yes

Glad you got the rant out :) but yes this is not something we plan on changing


Map The Lifecycle Stage of Operations Engineering Products/Services

User Need
As a member of the Operations Engineering team
I want to understand where a product/service, that Operations Engineering owns, is within its lifecycle
so that I can better understand the wider goals of the system and more effectively suggest ideas and priorities to reach those goals
Value
Increase the team's awareness of the roadmap of our products/services so everyone is able to make effective decisions on what to work on and when.
Functional Requirements:

A simple framework is used to map out the different stages of all our products/services

Non-Functional Requirements:

Easy to understand at a high level
Helps us prioritise our work/what we do next

Acceptance Criteria:

A simple framework is used to map out the different stages of all our products/services

Notes:

First iteration completed with feedback from the team. Next steps problem definition and linking lifecycle to products to problem spaces. New ticket to be raised.


add explicit error message on permission denied

In conjunction with https://github.com/sajari/sajari-sdk-js/issues/31.
Show an explicit error message when a search is made that results in permission denied. This will help developers and integrators while they are setting up.

Done in #79


Feature request: Group header column total

It would be really great if there is a possibility to display a 'total' of column for a group in RadzenDataGrid. So that column 'totals' would be visible even when the group is collapsed.

You can use GroupFootersAlwaysVisible DataGrid property to show group footers no matter if group is expanded or not. Check our demo for reference: https://blazor.radzen.com/datagrid-group-footer-template