ReportScreen performance improvements

We are trying to optimize the ReportScreen. There are some re-renders on parent components that cause a cascade of re-renders on the screen and the list of actions. This PR takes care of certain issues:

Turns out the items in the list are connected to the Report object, but this object has been augmented with loading states while the actions are being fetched from the backend, which causes a lot of items to unncessarily re-render themselves. I have extracted the loading state into a separate Onyx collection, which allows to keep the logic intact but gets rid of unnecessary renders on every component that is connected to a Report.

Explanation of the graph is: The first rows are the flushing of React queue, the following bars are the rendering of the bigger components ReportScreen, ReportActionsView, etc. The last row is the rendering of individual actions in the list.
You can see the entire screen is not flushed while a lot of actions are being re-render over and over again:

After the changes, we have regained some of the actions render cycles, but more importantly the flushing happens a bit faster (navigation mounting), so the screen actually feels smoother when navigating in/out.

A shared context ReportScreenContext was used to manipulate certain lists, and would cause parent components to re-render causing a cascade of cyclic renders. By separating the context we limit the re-renders to the part of the tree that consume the specific contexts and win back some render cycles.

here is the react devtools trace, you can see before the change there are at least 7 renders, this is also a parent component, so it triggers a cascade of re-renders on the children. Afer the change this has gone down to 3.

The functionality of marking messages as unread was using an object to get around a useCallback on the renderItem function of the action list not updating properly. Also causing a full list re-render. The new implementation uses a simple integer to avoid triggering re-renders when nothing has changed.

Here is the trace before and after

You can see a reduction of 2 renders, but again this being a parent component it triggers a re-render of the entire list elements

SidebarLinks was using the withReportIDContext, but it was not necessary since it only needs the reportID and that can be passed from a parent. Passing it by prop also saves some render cycles and again this is a parent component

Before:

After:

date-fns locale was being set whenever the list of report actions was being rendered, this caused the first rendered to be delayed by at least 250 ms. I'm now eagerly trying to load it after the sidebar links have been loaded and the JS context is iddle. This results in the first report window that opens to be a lot faster.

You can see the spike created by setting this locale in the DevTools:

Fixed Issues
$ https://github.com/Expensify/App/issues/26087
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.

Results
All in all, after all these optimizations here is the navigating in/out of the screen:
https://github.com/Expensify/App/assets/1634213/31ae6848-bd43-4552-a371-2f37c2565241

@situchan could you run the checklist on this one please?
@deetergp feel free to review if youa re interested cc @tgolen since this is a new Pr form this which Oscar closed https://github.com/Expensify/App/pull/25948 probbly to make it cleaner with the functional component

@mountiny we're holding this until merge freeze is over, right?

@mountiny we're holding this until merge freeze is over, right?

Yes while this would be great to have, I think it has higher risk of regression slipping through the testing so I agree

Running the test build here https://github.com/Expensify/App/actions/runs/6071479549

Use the links below to test this build in android and iOS. Happy testing!

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/26173/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/26173/index.html

desktop :computer:
web :spider_web:

https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/26173/NewExpensify.dmg
https://26173.pr-testing.expensify.com

@mountiny QA team is started the special build Regression, but experienced a crash when logged in.
Would you like us to continue with Android app Only until the issue is resolved?
https://github.com/Expensify/App/assets/93399543/6cd0cdce-6dc2-4858-8c73-5fd6f471e876

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Web crashes during login
Action Performed:

Go to https://26173.pr-testing.expensify.com/
Log in to any account

Expected Result:
Able to login to any account
Actual Result:
Unable to login to any account
Web crashes during login
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Version Number: 1.3.60-1
Reproducible in staging?: No
Reproducible in production?: No
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/35b86c6d-d82d-4a0d-936e-7a1a18076a74
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

New Group - When creating a group, the application is crashed
Action Performed:

Open New Expensify app
Log in with any login
Press FAB
Select New group
Add any members
Complete the creation of the group

Expected Result:
Creating a new group does not cause the application to crash
Actual Result:
When creating a group, the application is crashed
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Version Number: 1.3.60-1 PR:26173
Reproducible in staging?: No
Reproducible in production?: No
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/5c0c848a-5931-42c6-98ef-42078cf5f053
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Task - App crashes when opening unassigned task as other group member
Action Performed:

Launch New Expensify app
User A creates a new group
User A creates an unassigned task in group chat with User B and User C
Log in as User B
User B opens the task in Step 3

Expected Result:
App does not crash
Actual Result:
App crashes
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Version Number: 1.3.60-1 PR:26173
Reproducible in staging?: No
Reproducible in production?: No
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/1bb69a40-e2e0-4df1-b111-ee2dd6926707
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

@ospfranco I think this is one of the reasons behind the crashes

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Reply in thread unresponsive or crashes the app on threads
Action Performed:

Go to https://26173.pr-testing.expensify.com/
and login
Open any conversation
Hover over a message and click on Reply on Thread
Repeat on a message already on a thread
Right click on any message click reply on thread

Expected Result:
A new thread is started on all flows
Actual Result:
The thread is not opened when using the hover over icon and the app/webpage crashes when using the option from right click
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Version Number: 1.3.60-1 PR:26173
Reproducible in staging?: No
Reproducible in production?: No
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/6d480bc5-bf27-4bda-9261-ce7ae56aeb5b
https://github.com/Expensify/App/assets/78819774/47ba9a41-3690-49f5-9372-4b900171e763
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Request money modal closes when the currency is changed
Action Performed:

Go to https://26173.pr-testing.expensify.com/
Go to + > Request money
Click on the currency
Select another currency

Expected Result:
The request money modal does not close
Actual Result:
The request money modal closes
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Version Number: 1.3.60-1 PR:26173
Reproducible in staging?: No
Reproducible in production?: No
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/5d6b2b55-b7ba-484d-bd24-bc5e6015986d
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Request Money - Route data is saved when switch to Manual tab
Action Performed:

Open https://26173.pr-testing.expensify.com/
Click on FAB button
Select Request Money
Click on Distance tab
Enter Start & Finish point addresses
Navigate to Manual tab
Navigate back to Distance tab

Expected Result:
When User add routs and than switch to Manual tab - data from Distance tab should be reset
Actual Result:
Route data is saved when switch to Manual tab
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Version Number: 1.3.60-1 PR:26173
Reproducible in staging?: No
Reproducible in production?: No
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/e1c9b9a4-e15a-4de2-8bca-feda6a075e06
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Request Money - Missing Map & Next button in Distance modal
Action Performed:

Navigate to https://26173.pr-testing.expensify.com/
Click on a FAB button
Select Request Money
Navigate to Distance tab

Expected Result:
Distance modal should contain Start & Finish points, map & Next button
Actual Result:
Missing Map & Next button are missing in Distance modal
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Version Number: 1.3.60-1 PR:26173
Reproducible in staging?: No
Reproducible in production?: No
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/58a7f593-2100-4485-902e-b740707f6146
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Report - No loading animation is displayed when loading a conversation
Action Performed:

Open New Expensify app
Log in with a HIGH traffic account.
Disable the internet connection in the device
Navigate to a chat that has a very long history
Scroll up the conversation history

Expected Result:
When a conversation is loaded, a loading animation is displayed and then the conversation history data is loaded online and also offline
Actual Result:
No loading animation is displayed when loading a conversation
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Version Number: 1.3.60-1 PR:26173
Reproducible in staging?: No
Reproducible in production?: No
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/bed0e1f6-fc94-46b0-b250-390a4ca39c4f
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/26173/index.html
❌ FAILED ❌

The QR code can't be generated, because the iOS build failed

desktop :computer:
web :spider_web:

❌ FAILED ❌
https://26173.pr-testing.expensify.com

The QR code can't be generated, because the Desktop build failed

@ospfranco would you be able to go through the reports and verify they are fixed/ non-repro?  thanks!

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/26173/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/26173/index.html

desktop :computer:
web :spider_web:

https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/26173/NewExpensify.dmg
https://26173.pr-testing.expensify.com

@fedirjh hero volunteer to tackle this one today!

I don't think 2. has to do with my PR. I'm not able to reproduce it, but looking at the code it looks like @hannojg touched it last time. It's trying to access a component via ref, so it could be an issue of the component not being mounted/rendered on time.

The currency selector issue is probably a react navigation patch not being applied correctly

I'm very sure the last two reported bugs have nothing to do with my changes, but it's up to you @mountiny, I can take a look tomorrow if you feel like this should be fixed as part of this PR.

@ospfranco @fedirjh tahnk you very much for a quick work, lets get this ready to get merged

Redudant code removed :)

@fedirjh The build should be running for final tests, we are close 🤌

:test_tube::test_tube: Use the links below to test this build in android and iOS. Happy testing! :test_tube::test_tube:

android :robot:
iOS :apple:

https://ad-hoc-expensify-cash.s3.amazonaws.com/android/26173/index.html
https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/26173/index.html

desktop :computer:
web :spider_web:

https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/26173/NewExpensify.dmg
https://26173.pr-testing.expensify.com

Merged main to resolve conflicts

It's unclear whether this bug is related to the current PR. I was unable to reproduce it locally. It seems more like an issue with the ad-hoc build.

I also reproduced this on the adhoc build but I am not sure if this is problem with the pr or with the build

This issue is also present on the web, but it's less noticeable due to a quick transition . This behavior seems to stem from the report data being split into two collections, and any updates to each collection trigger a re-render. It's unclear whether we can completely eliminate this issue, but I'd like to hear your thoughts on possible solutions.

This is not looking that great I agree, the updates should be right after each other right, since its successData which is applied and removes the skeleton and then the report data should be shown immediately

It's unclear whether this bug is related to the current PR. I was unable to reproduce it locally. It seems more like an issue with the ad-hoc build.

I also reproduced this on the adhoc build but I am not sure if this is problem with the pr or with the build

I'm not able to reproduce the issue, however nothing of my changes should affect the behavior after log in

This issue is also present on the web, but it's less noticeable due to a quick transition . This behavior seems to stem from the report data being split into two collections, and any updates to each collection trigger a re-render. It's unclear whether we can completely eliminate this issue, but I'd like to hear your thoughts on possible solutions.

This is not looking that great I agree, the updates should be right after each other right, since its successData which is applied and removes the skeleton and then the report data should be shown immediately

This is rather a problem with the component tree being too slow to render due to all the stuff we already discussed and should be far less noticeable or even not there at all when all the performance improvements have been merged. However, you seem to be running in simulator, performance on a release build should make this less noticeable.

Let me check if there is anything I can do about it with the current changes

Added one more conditional to keep the skeleton view mounted while the actions are being layouted. @fedirjh give it a try.

Ah, yeah, then it doesn't work. The real issue is the mounting speed of the component, everything else is a workaround. If it is really a blocker, then I suggest it is better to close this PR and wait until the onyx one is merged (should be soon), and work on https://github.com/Expensify/App/pull/26772 as it will massively improve performance on the mounting of the list component.

Alright, I think this would be a step back if we would merge this and on web we would get the skeleton flicker for cached pages too (now it loads instantly).
If there is no way around that and we need to wait for the initialValues improvement, then I think lets close this PR and focus on that, I can assign you to that PR as well @fedirjh and double the price to cover for this too

Alright, closing this


Sonar: 8 issues

https://sonarcloud.io/project/issues?impactSoftwareQualities=MAINTAINABILITY&issueStatuses=OPEN%2CCONFIRMED&id=jhipster_jhipster-lite
cc @pascalgrimaud

Thanks a lot for fixing this and your last work too

Fixed

@pascalgrimaud thanks https://opencollective.com/generator-jhipster/expenses/221909

@qmonmert : approved


General Issue: Increase Test Coverage for duplicates.R

Background Information
We need to increase test coverage for our functions. The below screenshot has the function and gap in test coverage that we need to write additional unit tests for  duplicates.R

Definition of Done
New tests written that covers the red gap area for duplicates.R.
Use devtools::test_coverage() to reproduce the report

@thomas-neitmann is print.duplicate() intended to be part of the signal_duplicate_records() or its own function?

@sadchla-codes do you think you can still get this done for the release?

@bms63 This print function actually isn't used anywhere/looks redundant to the warning message from signal_duplicate_records() in the codebase, should we actually just deprecate (thought in this case removal might be justified) the function instead? Looks like it won't be missed

Closing as we decided next step is to remove redundancy instead of hosting old unused code

@bms63 This print function actually isn't used anywhere/looks redundant to the warning message from signal_duplicate_records() in the codebase, should we actually just deprecate (thought in this case removal might be justified) the function instead? Looks like it won't be missed

We should not remove the print function. It is not called in admiral but it is called by the users. If duplicates are found, an S3 object of class duplicates is stored in the package environment and the user can retrieve it by calling get_duplicates(). The print function ensures that the duplicates object is printed nicely.


Subscription requirements

We should document that at minimum Azure AD Premium P1 or higher is required to use the Azure AD Reporting API.
Otherwise MS Graph will throw a 401 Unauthorized: Neither tenant is B2C or tenant doesn't have premium license;

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

ID: 3002a469-b615-6231-9e96-6ce1917d1bbd
Version Independent ID: fc8af44d-7880-3541-9962-da43e2707960
Content: Prerequisites for Azure Active Directory reporting API
Content Source: articles/active-directory/reports-monitoring/howto-configure-prerequisites-for-reporting-api.md
Service: active-directory
Sub-service: report-monitor
GitHub Login: @MarkusVi
Microsoft Alias: markvi

@ms-willfid Thanks for the feedback. We  will update you shortly.

@ms-willfid Thank you for catching this. We have initiated a pull request and its under review with the content team . Once verified , it will be merged.

@ms-willfid This is under review with the content team and will be updated as soon as the review is complete. At this point we will close this issue and monitor the pull request internally . We will update this thread once the update is complete.


Update New-AdfsAzureMfaTenantCertificate.md

Updated the example as the output usually is not readable and is much bigger than the original file.
This way it makes it easy

Issue#https://github.com/MicrosoftDocs/windows-powershell-docs/issues/2736

@JohanFreelancer9 Please copy review

Docs Build status updates of commit b0a023d:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docset/winserver2019-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 05c1e62:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docset/winserver2016-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2016-ps)

docset/winserver2019-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2022-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit cc82f5f:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docset/winserver2016-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2016-ps)

docset/winserver2019-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2019-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2022-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

docset/winserver2022-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 3d7d7e6:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docset/winserver2016-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2016-ps)

docset/winserver2019-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2022-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

docset/winserver2022-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 21c8eca:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docset/winserver2016-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2016-ps)

docset/winserver2016-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2016-ps)

docset/winserver2019-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2019-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2022-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

docset/winserver2022-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit cc82f5f:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docset/winserver2016-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2016-ps)

docset/winserver2019-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2019-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2022-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

docset/winserver2022-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

I think the output is better read if you save the conversion to $cert and then pipe to a Format-List, what do you think? $cert | Format-List *

Hello Andres,
LIke the below one?
$CertInBase64 = New-AdfsAzureMfaTenantCertificate -TenantID
$cert = Security.Cryptography.X509Certificates.X509Certificate2
$cert | Format-List *
Thanks
Sri

@msbemba Yes

@get-itips Thank you. I have made those suggested changes.

Docs Build status updates of commit d73aa57:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docset/winserver2016-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2016-ps)

docset/winserver2016-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2016-ps)

docset/winserver2019-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2019-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2022-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

docset/winserver2022-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 7efb21a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docset/winserver2016-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2016-ps)

docset/winserver2016-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2016-ps)

docset/winserver2019-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2019-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2022-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

docset/winserver2022-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 92acfd0:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docset/winserver2016-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2016-ps)

docset/winserver2016-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2016-ps)

docset/winserver2019-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2019-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2019-ps)

docset/winserver2022-ps/adfs/New-AdfsAzureMfaTenantCertificate.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

docset/winserver2022-ps/adfs/Set-AdfsAzureMfaTenant.md
:white_check_mark:Succeeded
View (WindowsServer2022-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Middleware exception in AuthShopify

For bug reporting only! If you're posting a feature request or discussion, please ignore.
Expected Behavior
Do not get this in the log
Current Behavior
In laravel log I get: Array to string conversion {"exception":"[object] (ErrorException(code: 0): Array to string conversion at xxxxxxxx/vendor/osiset/laravel-shopify/src/ShopifyApp/Http/Middleware/AuthShopify.php:246)
Failure Information
This error exist when login into shopify embedded app

Can you give some step by steps?
Line it's complaining about:
$verify[$key] = is_array($value) ? '["'.implode('", "', $value).'"]' : $value;

Would you be able to log the incoming request URLs as well? I'd like to see if a query param is causing this.

Hi @osiset and @rusrocket
I was facing the same issue while using the datatables,
Cause:   getData function was receiving multi dimensional array so implode function was throwing an error
Solution:
if(is_array($value)&&$this->is_multi_array($value)){
$verify[$key]=implode(', ', array_map(function ($entry) {
return is_array($entry) ? '["'.implode('", "', $entry).'"]' : $entry;
}, $value));
}else{
$verify[$key] = is_array($value) ? '["'.implode('", "', $value).'"]' : $value;
}
hope that helps @rusrocket
The condition can be finetuned FYI @osiset  Thanks

@prashantbw Whats is_multi_array ?

I am getting these errors as well and at least in my case, they are caused by hacking attempts that contain the multi-dimensional arrays. Here's what I got in the log last night when I logged the contents of $request->all():
[2020-11-07 04:23:28] local.INFO: array (
  's' => '/Index/\\think\\app/invokefunction',
  'function' => 'call_user_func_array',
  'vars' =>
  array (
    0 => 'md5',
    1 =>
    array (
      0 => 'HelloThinkPHP21',
    ),
  ),
)

I got some other junk as well but it's basically the same stuff

So this issue is to do with multi dimensional arrays in the params? Does anything do this in Shopify right now, I thought it was all flat arrays?

So this issue is to do with multi dimensional arrays in the params? Does anything do this in Shopify right now, I thought it was all flat arrays?

Hi there, I need your help with your package.
Could you please help me?

So this issue is to do with multi dimensional arrays in the params? Does anything do this in Shopify right now, I thought it was all flat arrays?

Hi there, I need your help with your package.
Could you please help me?

@prashantbw Whats is_multi_array ?

@osiset a custom function written by me just to check if it is a multidimensional array

@prashantbw Whats is_multi_array ?

@osiset a custom function written by me just to check if it is a multidimensional array

Internally utilized a similar function for a fix on #724
    /**
     * Parse the data source value.
     * Handle simple key/values, arrays, and nested arrays.
     *
     * @param mixed $value
     *
     * @return string
     */
    private function parseDataSourceValue($value): string
    {
        /**
         * Format the value.
         *
         * @param mixed $val
         *
         * @return string
         */
        $formatValue = function ($val): string {
            return is_array($val) ? '["'.implode('", "', $val).'"]' : $val;
        };

        // Nested array
        if (is_array($value) && is_array(current($value))) {
            return implode(', ', array_map($formatValue, $value));
        }

        // Array or basic value
        return $formatValue($value);
    }

Awaiting physical tests, units pass right now.

Cleanup... Closing for now, cookies are removed in v17.0.0 and this middleware no longer exists in the same manner.
Re-open if still and issue.
Thanks!


Different timestamp issues

Hi,
There is inconsistency between different timestamps:

"Elapsed time" (in my case 01:32:05) is provided as a timestamp
"ElapsedTime": "2019-01-05T01:32:05.000+0200", that is not usable!
It should be provided in seconds (like response time, etc) - in my case it should be 5525
In this case it will be possible to configure it in Grafana correctly

"TestStartTime" is provided in UNIX Epoch format with milliseconds
"TestStartTime":<PHONE_NUMBER>311
This is good :-), it can be used in Grafana URL "&from" parameter.
See example:
http://localhost:3000/d/Q0KrFWcWz/02-1-jmeter-tests?orgId=1&from=1567672621311&to=1567678146900

"Timestamp" is provided in strict_date_hour_minute_second_millis format
(yyyy-MM-dd'T'HH:mm:ss.SSS)
"Timestamp": ["2019-09-05T10:09:06.900Z"]
Please change it to the same UNIX Epoch format with milliseconds too, or add another field with such format.
This will allow to use this field in grafana URL "&to" parameter (like in see example above).

Thank you in advance
Leon

Currently I use the following header-based workarounds:

They provided me required functionality, but I think it will be better to have it in more convenient way :-)

@leonsery If you want to use custom fields (without sending ALL headers to ElasticSearch). You need to use the following notation:
es.[...] not es-[...]

Anthony, I'm a little confused. I need to have some custom variable that will update each request (to have elapsed time in grafana in format 'HH:mm:ss'). As I understand the only way to achieve this is to use headers in format es-[...], because es.[...] will use only first value (that listener gets during initialization). Where I wrong?

Oh sorry, I thought the screenshot was showing your ES listener's configuration. As for the time, I just pushed a fix for it. It will come out with version 2.6.8 - most likely out in a few hours.

Thanks a lot!

PR to jmeter-plugins done here https://github.com/undera/jmeter-plugins/pull/352
Otherwise, you can manually update your plugin by deleting v.2.6.8 from lib/ext and replacing it with https://github.com/delirius325/jmeter-elasticsearch-backend-listener/releases/tag/2.6.9
Thanks,

Hi,
I installed new version. Now ElapsedTime is provided in UNIX EPOCH format, but it seems that value is not correct. After several seconds I have this value: "ElapsedTime":1546985180000
According to Epoch Converter (https://www.epochconverter.com/) this can be converted as:
GMT: Tuesday, January 8, 2019 10:06:20 PM
Your time zone: Wednesday, January 9, 2019 12:06:20 AM GMT+02:00
Relative: 8 months ago

I want to emphasize again - ElapsedTime should be provided in very simple format - seconds (or milliseconds) since starting of test.

 If so, then that's probably why you're getting a weird timestamp:
public Date getElapsedTime(boolean forBuildComparison) {
        String sElapsed;
        //Calculate the elapsed time (Starting from midnight on a random day - enables us to compare of two loads over their duration)
        long start = JMeterContextService.getTestStartTime();
        long end = System.currentTimeMillis();
        long elapsed = (end - start);
        long minutes = (elapsed / 1000) / 60;
        long seconds = (elapsed / 1000) % 60;

        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, 0); //If there is more than an hour of data, the number of minutes/seconds will increment this
        cal.set(Calendar.MINUTE, (int) minutes);
        cal.set(Calendar.SECOND, (int) seconds);

        if (forBuildComparison) {
            sElapsed = String.format("2017-01-01 %02d:%02d:%02d", cal.get(Calendar.HOUR_OF_DAY),
                    cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
        } else {
            sElapsed = String.format("%s %02d:%02d:%02d",
                    DateTimeFormatter.ofPattern("yyyy-mm-dd").format(LocalDateTime.now()),
                    cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
        }

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
        try {
            return formatter.parse(sElapsed);
        } catch (ParseException e) {
            logger.error("Unexpected error occured computing elapsed date", e);
            return null;
        }
    }

Comparing two builds on Kibana required me to have a random date from midnight, otherwise the time series would get messed up for some reason. However, that was in 2017, it might have changed.

So, I understand this ElapsedTime parameter is for specific case to
compare it in Kibana, only when BuildNumber is set to integer...
Can you just add another numeric ElapsedTimeSec parameter to more
common use?  If so, then that's probably why you're getting a
weird timestamp:
public Date getElapsedTime(boolean forBuildComparison) {
        String sElapsed;
        //Calculate the elapsed time (Starting from midnight on a random day
- enables us to compare of two loads over their duration)
        long start = JMeterContextService.getTestStartTime();
        long end = System.currentTimeMillis();
        long elapsed = (end - start);
        long minutes = (elapsed / 1000) / 60;
        long seconds = (elapsed / 1000) % 60;

        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, 0); //If there is more than an hour of
data, the number of minutes/seconds will increment this
        cal.set(Calendar.MINUTE, (int) minutes);
        cal.set(Calendar.SECOND, (int) seconds);

        if (forBuildComparison) {
            sElapsed = String.format("2017-01-01 %02d:%02d:%02d",
cal.get(Calendar.HOUR_OF_DAY),
                    cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND));
        } else {
            sElapsed = String.format("%s %02d:%02d:%02d",

DateTimeFormatter.ofPattern("yyyy-mm-dd").format(LocalDateTime.now()),
                    cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE),
cal.get(Calendar.SECOND));
        }

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd
HH:mm:ss");
        try {
            return formatter.parse(sElapsed);
        } catch (ParseException e) {
            logger.error("Unexpected error occured computing elapsed date",
e);
            return null;
        }
    }

Comparing two builds on Kibana required me to have a random date from
midnight, otherwise the time series would get messed up for some reason.
However, that was in 2017, it might have changed.
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/delirius325/jmeter-elasticsearch-backend-listener/issues/67#issuecomment-529486147

--
Regards,
Leon Sery.


Upgrade K8s to v1.22.0

@font Do you want to resolve conflicts on this? I see too that v1.22.1 is available as well.

@font Do you want to resolve conflicts on this? I see too that v1.22.1 is available as well.

I was actually wanting to wait until we have more widespread adoption of k8s v1.22 that requires v1 CRDs before merging this. Otherwise I was thinking we could keep our existing k8s v1.21 tests and repeat for k8s v1.22. But I'm also good with just moving to v1.22 now, or at least waiting until the official v0.2.0 release of this operator. WDYT?


Error: Wrong number of arguments

When i upgrade from masonry-rails 0.2.1 to 0.2.3 or 0.2.4, i get the following error on rails 4.0.13
ActionView::Template::Error (wrong number of arguments (2 for 1)
  (in /Users/pkhadloya/Personal/topmunch/app/assets/stylesheets/foundation_and_overrides.scss)):
    4:     %meta(name="viewport" content="width=device-width, initial-scale=1.0")
    5:     %title= yield :title
    6:     %meta(name="description" content="#{ yield :meta_description }") <!-- Should be around 150-160 chars -->
    7:     = stylesheet_link_tag "application", media: "all"
    8:     = javascript_include_tag "modernizr-assets"
    9:     = csrf_meta_tags

It gives me the same error until i remove many css files. Seems like masony-rails 0.2.4 has some things which conflict with existing css files?

I'm no longer maintaining it. I have no idea how the asset pipeline works in Rails 4 and beyond. Feel free to make a pull request for a fix or even take over this project as you see fit...

@kristianmandrup, how would I go about taking over this project?

Just added you as collaborator ;)

Thanks, @kristianmandrup. I'll send you an email to your Gmail account within a couple hours to make sure we're on the same page.

Okay

Would anyone be able to tell me why when the page first loads or I refresh it works fine. But when when I go from lets say the "show.html.erb" page back to the "index.html.erb" (set to root) via clicking the logo the images stack up on top of each other and the masonry effect is lost. If I refresh the page all is well again... Thanks

@SakoMe What browser are you using? According to Google, firefox (and likely Safari as well) do not trigger document.ready when using the back button: http://stackoverflow.com/questions/15791148/startup-javascript-code-is-not-executed-when-using-the-firefox-back-button
@kristianmandrup I sent you an email (Granted, it was a few hours later than I had intended.). Please let me know if you have not received it.

@Judahmeek Thanks for getting back to me! I figured out a solution. The easies solution was simply adding the jquery-turbolinks gem...
Kindest regards!


Handle static files in component folders

The relative path ../raw/{handle}/{filename} does seem to work for the dev server and the static build. E.g. a component figure and a file dummy.jpeg in the root of it's component folder would result in a path: ../raw/figure/dummy.jpeg


Update to support recent Maven and Dynamo On-Demand throughput

This will get people able to use this again.
It updates pom.xml to get things to compile, and adds a workaround for those of us using On Demand throughput.

AWS - it would be great if you could get this merged. Your official documentation tells us to use this repo and it won't run on your latest Corretto builds without this PR.


can you provide the transform methods example.

for ex.
func transform(action: Observable) -> Observable
func transform(state: Observable) -> Observable
i don't known how to use, thanks

Drrrible is a very good example :)
https://github.com/devxoul/Drrrible/blob/a8f6118571f66ac231dd4fda16d0995aade57a56/Drrrible/Sources/Views/ShotViewReactionButtonViewReactor.swift


Which License belongs this work to?

Hi
I like to use parts of your code to draw the knobs in my application, which is under the GPL v3. I looked for a license file in your repository but only found
Copyright: Marcel Huibers (c) 2022 All Rights Reserved
So I like to know if you are fine with, when I grab out some code of your work and use it?
regards
hermann

Ah, yes. No worries. Thought I had already included that.
It's all MIT, so absolutely fine to grab it and adapt it.

Many thanks. They look really great!


Update gem with Known Critical Vulnerability

Overview
TL;DR
Update known critical vulnerability (kramdown)
Known Vulnerable Component
There is a known vulnerability for the ruby gem kramdown See this for more info, also reported at https://github.com/github/pages/issues/2824.  Given it's critical nature and that it has not been picked up automatically yet by Dependabot, we are creating issues in repos that are higher visibility to be on the safe side.
Remediation Path
The recommended remediation is to update to >= 2.3.0 to remove the known vulnerability.

@misfir3 please take the following action(s):

[ ] Assign a severity .vuln severity <issue-link> <severity informational|low|medium|high|critical>
[ ] Set the service catalog entry or reply with unknown to prompt the team to setup a service. Suggested  .vuln catalog <issue-link> <service-name>
[ ] Assign a team .vuln assign-team <issue-link> <assignee-team @github/...>

Vulnerability Lifecycle Progress
... :exclamation: Triaging (0/3) -> WaitingOnFix -> ...
What is this? Feedback :bowing_man:


Image ratio

In a case where the design needs a specific image ratio, the option to have a minimum height/width, a maximum height/width plus the ratio would be awesome.
It would give more flexibility for the images to have a range of size instead of blocking the min and max width/height so that the ratio is respected.

Good idea.


Short-circuiting is broken in intentRecognizerSet

intentRecognizerSet doesn't seem to be short-circuiting the recognizers when recognizeOrder is series and  stopOnExactMatch is true. I believe this is due to a bug in hasExactMatch:
private hasExactMatch(intents: Intent[]): boolean {
        intents.forEach((intent) => {
            if (intent.score >= 1.0) {
                return true;
            }
        });
        return false;
    }

where the return true is returning in the forEach callback rather than the outer function.

Good catch... This bites me I don't know how many times :(
I was planning to push out new bits tomorrow so will fix this before hand.

See PR #75

This class was removed for //build


Add my Proverb

Added my favo Proverb to your list.
Please please help me with my project : https://github.com/Queen-Vermouth/Motto-in-your-life.git

thank you.. already make the pull request


why Not Found ?when I get the  BuildWithDetails details = jobDetails.getLastBuild().details();

when I get the details, throw a exception.
org.apache.http.client.HttpResponseException: Not Found
at com.offbytwo.jenkins.client.validator.HttpResponseValidator.validateResponse(HttpResponseValidator.java:11)
at com.offbytwo.jenkins.client.JenkinsHttpClient.get(JenkinsHttpClient.java:149)
please tell me why ?

I use  0.3.6 version

my  jenkins version is  1.651.3

Fixed in 0.3.7


Serial port (COM) redirection working very strange

Hi all,
I'm trying to redirect /dev/ttyUSB0 device as COM3 to my Remote Desktop session. And it's working very strange.
First of all, I made a test serial hard device that can receive data and send back confirmation about it. I've typed 4 symbols: "q", "a", "z" and "w" and here is what I've got in logs (download to view difference):
FreeRDP log
mstsc log
And see also at picture where difference is shown by Putty (first screen is for mstsc and the second one is for FreeRDP, note also that there are 12x spaces after each phrase):

It seems that with FreeRDP wasn't sended CR symbol but LF was sended twice.
Next strange thing is that this redirected port can't be contacted with .NET or Delphi classes it can speak only native WinAPI functions (because Putty and serialterm are able to contact this port). This happens only with FreeRDP. When COM ports redirection enabled in mstsc.exe all works fine both of with .NET and with WinAPI.
If it will be helpfull here is exception from .NET SerialPort class when trying to open it:
System.ArgumentException: The given port name is invalid.  It may be a valid port, but not a serial port.
This means that my program was able to find COM3 port at the system but think that it is not a serial port.
P.S. I'm running FreeRDP client in this way:

xfreerdp /a:serial,COM3,/dev/ttyUSB0 /v:server

Realizing this is a really old post but I just found it and it revealed something to me which has been helpful and so maybe I can help someone else with what I found.
Change Port reveals different redirection when run from an administrative command prompt than it does when run under a non-administrative command prompt.  When run from the admin prompt, it does not see/have access to the same ports that the RDP session has access to.  When I run VS.NET, I do so with elevated (administrative) rights, and therefore presumably when I'm debugging my program by running it from VS.NET, I'm also using those elevated rights.  And so my program cannot see the port mappings that my RDP user has, it can only see those which the admin user has.
I've run into this before, I think with Visual Source Safe, and there was some registry modification that I did to get past it.  So I think this is a similar thing.  For me, for now, I'm going to do my best with running the debug manually rather via running from VS.NET.  I've done that a few times now and I do in fact have access to my local comm ports.


Make the 'var_local_n2n' code faster and more readable

When the trans matrix is already computed, directly use trans(:,:,var_local_n2n(n)) for the analysis update computation, instead of first copying trans(:,:,var_local_n2n(n)) to trans(:,:,n).

ac64d0e


Region: Join and Onboading (2/3)

Screen 1 (Pop-up Request):
Location Request (Android & iOS):

Screen 2:
The map is interactive in three ways:

If the user has enabled location services, the starting location of the map will be the user's current location
The user types in an address and selects enter, the pin will go to the desired location on the map.
Upon selecting the crosshairs in the bottom right corner of the map, it will automatically snap to the users current position. If the user has opted not to allow location services, it will prompt to use location services once again.

^Along the bottom, there is a prompt that if the user does not see a region they want to join, they can initiate the Create Region flow.

❌ Test Case 1 (search for a city and go back to current location)

Go to Explore > Regions.
Observe Allow “SEEDS Wallet” to use your location?
Tap Allow Once.
Observe the search bar show the correct address for the current location.
Observe the map show the correct current location.
Tap the search bar and type Merida.
Observe and tap Mérida, Yuc., México in the search results.
Observe the map move and show the city of Mérida.
Tap the crosshair button.
Observe the map move and show the correct current location.
Tap the search bar and type Denpasar.
❌ Observe no search results.

@RaulUrtecho Test Case 1 is failing ☝ It looks like the search finds certain cities and does not find most other ones.
I also noticed that it can be pretty noisy and confusing when the search results show a mix of address types (e.g. try searching for Bali). I propose we limit the search to type (cities). What thinks you @JGDoh?

✅ Test Case 1 (search for cities and go back to current location)

Go to Explore > Regions.
Observe Allow “SEEDS Wallet” to use your location?.
Tap Allow Once.
Observe the search bar show the correct address for the current location.
Observe the map show the correct current location.
Tap the search bar and type Merida.
Observe and tap Mérida, Yuc., México in the search results.
Observe the map move and show the city of Mérida.
Tap the crosshair button.
Observe the map move and show the correct current location.
Tap the search bar and type Denpasar.
Observe and tap Denpasar, Denpasar City in the search results.
Observe the map move and show the city of Denpasar.

✅ Test Case 2 (prompt to use location location again)

Terminate and tun the app again.
Go to Explore > Regions.
Observe Allow “SEEDS Wallet” to use your location? again.

❌ Test Case 3 (disallow use of location)

Terminate and tun the app again.
Go to Explore > Regions.
Observe Allow “SEEDS Wallet” to use your location?.
Tap Don't Allow.

Current behavior
No map is displayed.
Expected behavior

User is expected to be able to see the map and interact with it (search for locations)
Crosshairs (current location) icon is expected to be disabled

@JGDoh @RaulUrtecho A quick note on this:

If the user has opted not to allow location services, it will prompt to use location services once again.

At least on iOS (likely on Android as well), if user previously selected Don't Allow, it would not be possible to ask again. If desired, we can ask the user to go to Settings and enable the location there. However, seeing how the current location functionality is not critical here (user can just search for locations), it is probably best not to persist 🤓

@JGDoh @RaulUrtecho A quick note on this:

If the user has opted not to allow location services, it will prompt to use location services once again.

At least on iOS (likely on Android as well), if user previously selected Don't Allow, it would not be possible to ask again. If desired, we can ask the user to go to Settings and enable the location there. However, seeing how the current location functionality is not critical here (user can just search for locations), it is probably best not to persist 🤓

How about a small label on the map "You can enable location permissions for a better precision and experience".

How about a small label on top of the map "You can enable location permissions for a better precision and experience".

Definitely a possibility! I am not sure it is important enough, though. If user chooses Don't Allow, they probably have a good reason for it 🤓

@RaulUrtecho You probably already noticed – Test Case 3 (disallow use of location) is failing ☝🤓

@RaulUrtecho You probably already noticed – Test Case 3 (disallow use of location) is failing ☝🤓

Yup.
At least on Android it seems to be a requirement for the map to work, the user must give permission if not the map is not drawn at all. If the user returns to the screen he will be asked again for permission.
I don't know what the behavior is in iOS since I have run out of iPhone for at least 2 weeks.

At least on Android it seems to be a requirement for the map to work

Hmm, I wonder if there is an option that disables that? I think it's a pretty reasonable use case to just show a map without asking for the current location.

✅ Test Case 1 (search for cities and go back to current location)

Set const bool testnetMode = true;.
Login as testingseeds.
Go to Explore > Regions.
Observe Allow “SEEDS Wallet” to use your location?.
Tap Allow Once.
Observe the search bar show the correct address for the current location.
Observe the map show the correct current location.
Tap the search bar and type Merida.
Observe and tap Mérida, Yuc., México in the search results.
Observe the map move and show the city of Mérida.
Tap the crosshair button.
Observe the map move and show the correct current location.
Tap the search bar and type Denpasar.
Observe and tap Denpasar, Denpasar City in the search results.
Observe the map move and show the city of Denpasar.

✅ Test Case 2 (prompt to use location location again)

Terminate and run the app again.
Go to Explore > Regions.
Observe Allow “SEEDS Wallet” to use your location? again.

✅ Test Case 3 (disallow use of location)

Terminate and run the app again.
Go to Explore > Regions.
Observe Allow “SEEDS Wallet” to use your location?.
Tap Don't Allow.
Observe Mexico City as the location on the map.

✅ Test Case 4 (join an existing region)

Terminate and run the app again.
Go to Explore > Regions.
Observe the Allow “SEEDS Wallet” to use your location? prompt.
Tap Allow Once.
Observe the map showing the current location (e.g. Playa del Carmen).
Observe progreso as the nearest region.
Tap progreso.
Tap Join button.
Tap Yes I'm sure..
Observe becoming a member of the region.

✅ Test Case 5 (leave a region)

Go to Explore > Regions.
Observe the currently joined region of Yucatan.
Tap the … button.
Tap Leave Region.
Tap Yes I’m sure.

@JGDoh @RaulUrtecho I stared at this screen for a long time trying to figure out how to join the region 😅 I propose we change the Join button background to a solid color:

✅ Join button with a solid background


⚡ ln.connect() is rather slow and affects lamin load for a notebook or script

Particularly for calls across continents.
It's roughly ~4sec, and we've seen this for a while.
It also affects lamin load for a notebook.
Here are a few profiling PRs:

https://github.com/laminlabs/lamin-cli/pull/84
https://github.com/laminlabs/lamindb-setup/pull/871

The profiling PRs resolved the performance issue to a good degree. We can look into this again further down the road.


Upgrade Guice to 5.0.1 and Kotlin to 1.4.32

This upgrades:

Guice to 5.0.1
Kotlin to 1.4.32

Guice 5.0.1 replaces cglib which removes a ton of 'illegal reflective access' warnings that previously came from Guice when running it on newer versions of JVM.

@johnlcox Would this update be something you're interested in for the repo?

Thanks. This look great.
Are there any other changes in Guice 5.x that might be incompatible with 4.x? I'm wondering if this should bump kotlin-guice to a 2.x release.

Reading through the release notes I don't see anything breaking. There's the change from cglib to a custom built library instead but there shouldn't be any need to do any sort of migration for a user from my understanding of reading the notes
https://github.com/google/guice/wiki/Guice501

@johnlcox Let me know if there's anything else I should do here :)


Vague error

https://github.com/StackStorm/orquesta/blob/08c41ed480cbe34738f662f974a8fa1e5ce402c8/orquesta/specs/base.py#L633
This error should include where in the spec it was raised.

That sounds reasonable, are you able provide a patch for this?


Ben PPP

Description

Let me sleep. 🏂 ⛰ 🏔 🗻 ❄
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update
[ ] Code quality improvements

How to test

Checklist

[ ] I have tested this code
[ ] I have updated the documentation

Codecov Report

Merging #234 (237b896) into master (5891501) will increase coverage by 3.33%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master     #234      +/-   ##
============================================
+ Coverage     68.16%   71.50%   +3.33%
- Complexity      825      881      +56
============================================
  Files           117      117
  Lines          2755     2783      +28
  Branches        312      328      +16
============================================
+ Hits           1878     1990     +112
+ Misses          744      670      -74
+ Partials        133      123      -10

Impacted Files
Coverage Δ

...c/main/java/seedu/address/model/client/Client.java
90.00% <0.00%> (-7.57%)
:arrow_down:

...u/address/storage/JsonSerializableAddressBook.java
93.10% <0.00%> (-6.90%)
:arrow_down:

...va/seedu/address/model/client/SortByAttribute.java
86.48% <0.00%> (-6.85%)
:arrow_down:

...in/java/seedu/address/logic/parser/ParserUtil.java
72.41% <0.00%> (-5.01%)
:arrow_down:

.../java/seedu/address/storage/JsonAdaptedClient.java
81.72% <0.00%> (-2.81%)
:arrow_down:

src/main/java/seedu/address/model/AddressBook.java
91.89% <0.00%> (-2.56%)
:arrow_down:

.../java/seedu/address/logic/commands/AddCommand.java
91.66% <0.00%> (-2.09%)
:arrow_down:

...in/java/seedu/address/commons/util/StringUtil.java
96.10% <0.00%> (-0.20%)
:arrow_down:

...a/seedu/address/logic/parser/AddCommandParser.java
100.00% <0.00%> (ø)

...ava/seedu/address/commons/mapper/PrefixMapper.java
99.00% <0.00%> (+0.23%)
:arrow_up:

... and 25 more

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 5891501...237b896. Read the comment docs.


"Daneți"  is listed in the drop-down menu

Description:
"Daneți" is listed in the drop-down menu alongside its corresponding county and commune, according to the law.
Precondition:
The website is up an running.

Step 1
Type "Daneți" in the search bar.

Expected results
The location is listed in the drop-down menu as "Comuna Daneți, DOLJ".


user12986714: Blacklist trekking\W*+in\W*+nepal

user12986714 requests the blacklist of the keyword trekking\W*+in\W*+nepal. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

trekking\W*+in\W*+nepal has been seen in 12 true positives, 0 false positives, and 0 NAAs.

Rejected by Daniil in Charcoal HQ. Reason: 'This has too many fp's on Stack Exchange (8), considering the high weight of the blacklist, I think we should leave it/put it on the watchlist as there are legitimate uses of 'trekking in nepal'. Additionally, most of the tp's share attributes with each other that can be detected. e.g. most of them use the same set of domains and usernames which means other patterns can be watched/blacklisted to detect this spam.'

Rejected by Daniil in Charcoal HQ. Reason: 'This has too many fp's on Stack Exchange (8), considering the high weight of the blacklist, I think we should leave it/put it on the watchlist as there are legitimate uses of 'trekking in nepal'. Additionally, most of the tp's share attributes with each other that can be detected. e.g. most of them use the same set of domains and usernames which means other patterns can be watched/blacklisted to detect this spam.'


Hystrix Circuit Never Closes After Opening

I am seeing that circuit breakers that open do to a failure in a downstream service remain open and never close again when the downstream service is once again functioning.  I am able to reproduce this in Brixton.RELEASE but not in the latest Angel release.
To reproduce the problem clone these three git projects and run them locally by running mvn spring-boot:run.
https://github.com/ryanjbaxter/ocr-eureka
https://github.com/ryanjbaxter/ocr-races
https://github.com/ryanjbaxter/ocr-participants
If you hit http://localhost:8282/participants that will call the /participants route in the ocr-races service.  Notice this will end up calling a method protected by a circuit breaker.  If you then shut down the ocr-participants service and continue hitting /participants the circuit will open as expected.  If you now restore the ocr-participants service and continue hitting /participants the circuit will never close again, no matter how long you wait.
Further experimentation has revealed that this only occurs when using a Feign client.  If you use a RestTemplate (load balanced or just a vanilla RestTemplate) to call the downstream service than the circuit opens and closes as expected.

The sample here doesn't use Feign: https://github.com/spring-cloud-samples/tests/tree/master/hystrix and it has the same problem

After looking at the sample from @dsyer we determined that is was not actually ever going to close the circuit because there was no wail that the fail endpoint would every produce a successful response.  We added the ability to pass a header causing the endpoint to produce a successful response.  After doing that we determined that the sample does not reproduce the problem.

After deeper investigation the problem with the sample appears to be due to new functionality added in Brixton.  In Brixton methods in Feign Clients are now automatically wrapped in Hystrix Commands when Hystrix is present on the classpath.  See http://cloud.spring.io/spring-cloud-static/spring-cloud.html#spring-cloud-feign-hystrix.
The reason why the circuit never closes in the samples above is because the @FeignClient annotation does not contain a fallback parameter.  When the participants service is no longer available Hystrix would try to call the fallback method, but since no fallback was defined it would throw an Exception.  This Exception is thrown in HystrixCommand.getFallback.  In order for the circuit to close Hystrix needs a certain number of requests to succeed as well as a certain amount of time to elapse.  However we never get to the point of even trying to let any request through the circuit because the Exception was being thrown due to the missing fallback, therefore the circuit will never close.  Once a fallback is defined in the FeignClient the circuit will open and close as expected.
The code in the sample really should have further changes though.  In Brixton we should completely remove the defaultFallback parameter from the HystrixCommand, in fact the entire ParticipantsBean can be eliminated and the /participants endpoint can use the FeignClient directly since it is now protected by Hystrix Commands.
The problem here of course is more of a migration issue from Angel -> Brixton.  Applications following this pattern (using FeignClients wrapped in Hystrix Commands) will experience the same behavior.  You can disable Hystrix support in FeignClients by setting feign.hystrix.enabled to false in Brixton and that will keep the same behavior/functionality present in Angel.

Here's an example exception complements of @ryanjbaxter!
java.lang.UnsupportedOperationException: No fallback available.
    at com.netflix.hystrix.HystrixCommand.getFallback(HystrixCommand.java:284) ~[hystrix-core-1.5.3.jar:1.5.3]
    at feign.hystrix.HystrixInvocationHandler$1.getFallback(HystrixInvocationHandler.java:108) ~[feign-hystrix-8.16.2.jar:8.16.2]
    at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:307) ~[hystrix-core-1.5.3.jar:1.5.3]
    at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:303) ~[hystrix-core-1.5.3.jar:1.5.3]
    at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46) [rxjava-1.1.5.jar:1.1.5]
    at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35) [rxjava-1.1.5.jar:1.1.5]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) [rxjava-1.1.5.jar:1.1.5]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) [rxjava-1.1.5.jar:1.1.5]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) [rxjava-1.1.5.jar:1.1.5]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) [rxjava-1.1.5.jar:1.1.5]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) [rxjava-1.1.5.jar:1.1.5]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) [rxjava-1.1.5.jar:1.1.5]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) [rxjava-1.1.5.jar:1.1.5]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) [rxjava-1.1.5.jar:1.1.5]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) [rxjava-1.1.5.jar:1.1.5]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) [rxjava-1.1.5.jar:1.1.5]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) [rxjava-1.1.5.jar:1.1.5]
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) [rxjava-1.1.5.jar:1.1.5]

so we need something (probably feign) to set fallbackEnabled=false when we know there's no fallback type. Otherwise, HystrixCommand.toObservable() assumes a fallback is present. Since it isn't there's a very late UnsupportedOperationException which is the thing that's mucking things up.

So thinking about this.. HystrixCommand.getFallback() is meant to be implemented, not called directly, right? the UnsupportedOperationException is part of the fallback contract.. ex there's specific logic in HystrixCommand (named handleFallbackError) that throws HystrixRuntimeException on unsupported.
If ...

no-one is calling HystrixCommand.getFallback() except Hystrix
Hystrix expects HystrixCommand.getFallback() to throw UnsupportedOperationException
Why are we seeing a stacktrace and suspecting this as the cause of an open circuit.

I wonder if the stack trace were longer, if we could identify what's up.. ex by adding --logging.exception-conversion-word=%wEx{full} to dump full stack traces instead of truncated ones.

I think the UnsupportedOperationException from HystrixCommand.getFallback is distracting, as it is the default behavior. Perhaps there's another explanation from this or some way to make a straight-forward test case that shows the circuit left-open problem without starting several processes.

It occurred to me over the weekend that in my example I was seeing something very strange when looking at the Hystrix Dashboard.  Even though there was 2 circuit breakers in my races service, there was only 1 circuit breaker showing up in the dashboard, it was called getParticipants.

I then came to the realization that my @HystrixCommand and my FeignClient both had the same method name and signature.  This made me think that maybe Hystrix was therefore confusing the fact that there were two commands because both commands would be using the same key, in this case getParticipants.
I dug deeper into Hystrix and found this to be the case.  By default the command key is the method name.

By default the name of command key is command method name: getUserById, default group key name is class name of annotated method: UserService. You can change it using necessary @HystrixCommand properties:

Hystrix will cache commands as we can see here
https://github.com/Netflix/Hystrix/blob/master/hystrix-core/src/main/java/com/netflix/hystrix/HystrixCircuitBreaker.java#L77
So in the case where you have to commands with the same method name, the cache will return the  same circuit breaker for both commands.
In my example this was always the circuit for the @HystrixCommand and not the one for the FeignClient.  When the circuit would open up due to an error in the downstream service, both circuit breakers for both commands would be open.  However when the downstream service was restored and we should see the circuit did not close.  Now however the reason it was staying open, in my example anyways, was because my FeignClient does not have a fallback which was also throwing an exception again marking the circuit as being open.
Now if I change the name of the methods either in the @HystrixCommand or in the interface for the FeignClient than I end up with two distinct circuits.  This allows for the correct circuit breaker to be marked as open for each hystrix command and you no longer see the problem of the circuit never closing because the circuit for the FeignClient never is marked as open so the fallback logic is never attempted to be executed, hence the exception due to the missing fallback is never thrown.

I created an issue in Hystrix around the circuit breaker keys not being unique enough https://github.com/Netflix/Hystrix/issues/1293

This should be fixed by #1273.
This contains the fix from Feign https://github.com/OpenFeign/feign/issues/434

Fixed via #1278


updated docs about network

Added and updated network docs.
Add indentation to level-2 bullets

/ approve


Fix Font Bakery version check

Fixes is_up_to_date() method
Adds more test examples

Fixes #3813

hey! I've only seen this now. It seems we both decided to work on the same thing simultaneously. Sorry.
I see now that you said this is a better fix, but I have not reviewed it yet.

Would you like to rebase this?

Would you like to rebase this?

Working on it. Please don't merge anything else.

@felipesanches done!

thanks, @miguelsousa


add readme pt-br and cn-sf

add support to other langs:

brazilian portuguese
simplified chinese

add rainbow separate

add separate rainbow w/ codinasion link

u can see how it like here: https://github.com/isyuricunha/DogApparel
The added readmes are not yet in the main repository, so you can view them at the following links:

Portuguese (Brazil): README-pt-br.md
Chinese (Simplified): README-cn.md

After the pull request is accepted, you will be able to view them in the official repository.

removed "Animal Equipment" requirement
I've also removed the mention of the "Animal Equipment" requirement from the all readmes


Display only the last point ?

Hi everyone,
I'm new to chartist and i want to create a chart with the last point who look's like an arrow.
I don't want the others point to be displayed.
Here is an image of my actual chart : https://ibb.co/mhahTS
And my JS Code for it :
var data = {
    labels: [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],
    series: [
        [1,5,7,5,6,2,4,7,8,5,2,1,4]
    ]
};

var param = {
    showArea: true,
    showLine: true,
    lineSmooth: false,
    showPoint: false,
    fullWidth: true,
    axisY: {
        showLabel:true,
        showGrid:false,
        referenceValue: 4,
        scaleMinSpace: 35
    },
    low:1,

    axisX: {
        showLabel: false,
        showGrid: false
    }
}

new Chartist.Line('.ct-chart', data, param);

I was thinking about drawing an SVG at the position of the last point.. but i don't understand how work svg-path. Do you have a solution for this ?
Thanks 👍

Hello @LeVeloute 👋
Chartist has recently been updated to version 1.0 with some new exciting changes like ESM and TypeScript support. The migration guide can be found right here.
Please let me know if the question is still relevant to you so we can further look into it!


Missing field name does not show an error marker when using proto3 syntax.

Describe the bug
While using proto3 syntax, there is no error marker if the field name is missing.
To Reproduce
Write a message type like so:
syntax = "proto3";
message Foo {
  string = 1;
}

Expected behavior
An error marker (e.g. red squiggly underline) should be shown at the incomplete field declaration, just like it does with proto2 syntax.
Screenshots
https://i.imgur.com/Bounohi.png
Plugin:

OS: Windows 10
Plugin version: 0.12.0
IDE: IntelliJ iDEA 2018.3.4

This issue is closed as plugin is not supported anymore.
Please switch to https://github.com/jvolkman/intellij-protobuf-editor.


Shrink bounding boxes for smaller species & increase NMS threshold

This reflects the current version of the model, which performs better at very high abundances.

@bw4sz - this reflects the current state of the analysis in the paper


APEXMALHAR-2325 1) Set the file system default block size to the reader. 2) Set the block size to the reader context

can you add some tests using mocks ?


[Bug]: select count(*) result isn't correct.

Is there an existing issue for the same bug?

[X] I have checked the existing issues.

Branch name
main
Commit ID
c40429766c0cf7981434c8fe85da4f92eb034916
Other environment information
No response
Actual behavior
count(*) will be assigned constant value in query binding phase.
Expected behavior
No response
Steps to reproduce
create table t7 (a int primary key, z varchar unique null);
insert into t7 (a, z) values (1, 'k');
insert into t7 (a, z) values (1, 'k');
insert into t7 (a, z) values (1, 'k');
insert into t7 (a, z) values (2, 'f');

select count(*) from t7 where a = 2;
 COUNT_STAR(4)
---------------
             4
(1 row)

delete from t7 where a = 1;
select * from t7;
 a | z
---+---
 2 | f

select count(*) from t7 where a = 2;
 COUNT_STAR(3)
---------------
             3
(1 row)

### Additional information

_No response_

Once this bug is fixed, table_count in table_entry can be removed.

Fixed by #907


The package.json and install.js contains inconsistent versions of jxcore-cordova

The package.json and install.js contains different definitions of jxcore-cordova plugin versions.
package.json:
  "thaliInstall": {
    "thali": {
      "projectName": "thaliproject",
      "depotName": "Thali_CordovaPlugin",
      "branchName": "npmv2.1.0"
    },
    "btconnectorlib2": "0.3.0",
    "jxcore-cordova": "0.1.1"
  }

install.js:
var jxCoreVersionNumber = '0.1.2';
The jxcore-cordova should be defined in one place e.g, in the package.json

This issue has been solved with #711


EFI-Chuwi[2022]-220426intel

Good afternoon, could you put this config on github?

You have a config just with HTIX5288, which I need.

Some guys in my group have ctreated a few repos on github for Chuwi 2022.


forced cookie renewal

I read how to use cookies for sessions handling from the documentation here:
https://justpy.io/tutorial/sessions/#introduction
I would appreciate to request a renew of the cookie every time a user does a logoff.
Now I see it is recycling IDs, so user B logged after user A will have the same IDs in logs.
Is it possible to have a new ID for every login, even if at the same browser window?
Thank you.

I agree it is a good idea to have an option to expire the cookie and I will add that in a future version.
But just to help me think this through, when a user logs out, why not delete the session from the session dict? That way you could use the same session_id for another user that logs in.

Yes indeed, I tried to delete the session, but having an explicit expire would help a lot. Thank's.

see also #529

see #685


It seems the macOS build is missing

See https://dev.azure.com/lfortran/lfortran/_build/results?buildId=278.

And Linux also: https://anaconda.org/conda-forge/re2c/files


RFC: Bump the minimum numpy version, drop older python versions

For scipy 0.18:

require numpy >= 1.7.1, test on 1.7.2
drop pythons 2.6, 3.2 and 3.3 from CI

See email thread starting at https://mail.scipy.org/pipermail/scipy-dev/2015-December/021124.html for discussion.

@@            master   #5756   diff @@
======================================
  Files          235     235
  Stmts        43211   43211
  Branches      8163    8163
  Methods          0       0
======================================
  Hit          33537   33537
  Partial       2602    2602
  Missed        7072    7072

Review entire Coverage Diff as of da14163

Powered by Codecov. Updated on successful CI builds.

+1 for the dropped numpy and Python versions.

The build failure looks real.

+1 for dropped versions. Copying a comment I accidentally added to a different scipy fork:
Should this be
+#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
instead?
The build failure log is
https://s3.amazonaws.com/archive.travis-ci.org/jobs/104462828/log.txt

I don't know if this change would be correct.

@argriffing are you commenting on this line:https://github.com/scipy/scipy/blob/master/scipy/_build_utils/init.py#L13 or on something else?

are you commenting on this

@rgommers I've added an inline comment in this PR. Maybe it is related to this issue https://github.com/numpy/numpy/issues/3008?

Reverted the change in query.cxx, and CI is all green.

LGTM now, merged. Thanks Evgeni.


fix: generalize and animate AnimatedMasonryListFooterComponent

This PR resolves PHIRE-1124
Description
During the mobile QA we noticed that when doing infinite scroll in any Tabs.Masonry surface the spinner was never displayed for the first refetch.
This PR fixes that. Note that in order to do it we had to introduce a boolean state variable on the artworkGrids that use the legacy relay containers.
In surfaces where we use the hooks (i.e. Fairs), it is not needed since the isLoadingNext is working as expected.
Unified also the page size for all surfaces and the spinner and bonus fix was that with the new AnimatedMasonryListFooterComponent the content is no longer jumpy after the next page is rendered ⭐ .
Tested on all surfaces on both Android and iOS - Attaching before and after videos for CollectionArtworks and ArtistArtworks

Before
After

PR Checklist

[x] I have tested my changes on iOS and Android.
[x] I hid my changes behind a feature flag, or they don't need one.
[x] I have included screenshots or videos, or I have not changed the UI.
[x] I have added tests, or my changes don't require any.
[x] I added an app state migration, or my changes do not require one.
[x] I have documented any follow-up work that this PR will require, or it does not require any.
[x] I have added a changelog entry below, or my changes do not require one.

To the reviewers 👀

[ ] I would like at least one of the reviewers to run this PR on the simulator or device.

Changelog updates
Changelog updates

Cross-platform user-facing changes

fix spinner not being displayed for first refetch on Tabbed Masonry - gkartalis

iOS user-facing changes

Android user-facing changes

Dev changes

Need help with something? Have a look at our docs, or get in touch with us.

This PR contains the following changes:

Cross-platform user-facing changes (fix spinner not being displayed for first refetch on Tabbed Masonry - gkartalis)

  Generated by :no_entry_sign: dangerJS against 11e06edb2c007e75234d3c8166a3d851dfb94e9a

If it's for a hotfix happy to approve and move on, but wonder if we could spend a bit more time on it if we don't need to ship in this release 😅

It is not a hotfix. We can def spend more time on it but what do you have in mind exactly?

My main concern is that we need this extra isLoading state when other apps where we use pagination hooks/containers we don't

This behavior has to do with how different relay legacy isLoading() and hasMore() versus the new from hooks isLoadingNext and hasNext.
I am happy to add comments but what else do you suggest as an improvement or change?

@gkartalis I see I see, checked the FairArtworks which has really hooks and we don't need it, so it's Relay's old remains causing the issue rather than our component setup asking for extra state control.
Fair enough from my side, just in the comment there add the reference to try to remove it as soon as these components are migrated to relay hooks, what do you think?

@araujobarret Sounds good, will add the comment on all cases 🌟

Done! Added comments and moved the component to its own file under masonryHelpers - I did remove the Component part from the name as well since it felt too much

It looks solid, thanks for the changes!


on lodr restart, make sure lovr.headset is nil'd if none is available

In boot.lua, it assumes that lovr.headset.init will assert if no driver
is available. This was previously only true on the first call to it,
since after it's initialized, it'll just return early and won't assert.
This will later crash since your lua code will now see a lovr.headset
being available, but calling anything in it will crash since
lovrHeadsetDisplayDriver is NULL

This error message seems weird to me.
If my Lua code does
lovr.headset.init()
lovr.headset.init()

Then won't this print an error saying that "no driver is available" even if I have a driver?
One other thing to keep in mind is that other threads will see whatever behavior is here when they require lovr.headset.

@bjornbytes No, it's an assert, not a print, so the error will only print if initialized is true AND lovrHeadsetDisplayDriver is NULL (i e there really is no headset driver available).
Is the headset module supposed to be thread safe?? it's sharing global state :S though I can't see how this patch affects thread safetiess;this is no more or less threadsafe than it was before, is it?

Ok I think I understand what is going on now.
My test project had t.headset.drivers set to an empty table and called lovr.event.restart, which causes a crash like you describe.
I think the root of the issue is that lovrHeadsetDestroy is not getting called if lovrHeadsetInit throws an error.
This is because the Lua bindings for lovr.headset.init do something like this:
  if (lovrHeadsetInit()) {
    luax_atexit(L, lovrHeadsetDestroy);
  }

So luax_atexit doesn't get a chance to register its destructor.
A possible (tested) fix is to change it to something like this:
luax_atexit(L, lovrHeadsetDestroy); // Always make sure the headset module gets cleaned up
lovrHeadsetInit();

This will ensure that after a restart, the headset module is in a clean state and the regular assert will always get thrown.  Note that this is the same kind of approach that the graphics module takes in l_lovrGraphicsCreateWindow.
Thoughts on this?  To me it looks like changing the atexit will fix this issue as well as any other issues that could arise from not destroying the headset module properly, but it's possible that your change here is better for other reasons.
re: thread safety, I honestly don't know how thread safe the headset module is right now, so maybe my earlier comment about threads was off the mark.  I do think that "lovr.headset.init can only be called from one thread" is true right now.

Ahh alright. Yep, I didn't know whether headset module was supposed to be initialized once globally or once per restart. If the latter was intended, your solution seems much better. I can try it in my env and see if it helps, and if so, push that as a fix instead!

@bjornbytes I've confirmed your proposal works for me too, and I've thus amended this PR to match. I like this approach a lot better, thank you for taking the time!

Sweet!


use go replace

@kevindiu related?
https://github.com/yahoojapan/garm/pull/39/commits/0c11dae341665659c36a45abb9b0496b55a5c0a1
https://github.com/yahoojapan/garm/pull/39

yes seems they are related. we need to use go replace to replace k8s packages version because they manage k8s library version badly :( .....

yes seems they are related. we need to use go replace to replace k8s packages version because they manage k8s library version badly :( .....

Thx, will handle this issue in #39.


Add a missing errorr handler

for supporting failureRedirect, as mentioned here:
https://github.com/feathersjs/authentication-oauth1/issues/34

Thank you!

Published as<EMAIL_ADDRESS>(it is backwards compatible with previous versions of feathers-authentication-oauth1 but only supports Node 6+).


[WIP] New $print cell for representing print statements

This PR introduces a new cell, $print, which can losslessly represent the behavior of Verilog formatting tasks like $display in always blocks, both clocked and continuous. It adds support for parsing Verilog tasks $display (as well as b, o, h suffix variants) and $write (as well as b, o, h suffix variants) such that they are translated to $print cells, and emitting $print cells as appropriate always blocks containing a $write task.
As a side effect, this PR greatly improves conformance with the Verilog LRM for the $display and $write family tasks used in initial blocks, as well as the $sformatf function. Unfortunately, the latter improvement is likely a breaking change.
Internally, this PR adds an abstract representation of format strings with substitutions that supports RTLIL and Veriog (de)serialization. It specifically does not use Verilog format strings anywhere but on the boundary. This is necessary because IEEE 1800-2017 does not precisely define the semantics of almost every aspect of its formatting facility, and real-world implementations wildly disagree with each other on even the grammar they accept.
The format string representation added by this PR is a new one I designed specifically for this task. It heavily borrows from Python f-strings (in particular, the method of escaping the substitutions is exactly identical) and is designed for simplicity of programmatic use and human readability, in that order.

Remaining work:

[x] Add tests (diff against iverilog) for the Fmt::render facility used by Yosys to print messages when it encounters initial $display statements and for $sformatf.
[x] Add tests (roundtrip identity check) for the Verilog/RTLIL translation facilities used to support the $print cell.
[ ] Document the $print cell and its format string mini-language.
[ ] Implement $print cell handling in CXXRTL.
[ ] Add back %m support that existed in the old $display implementation (as an alias of %l) but was removed because it is unclear whether this implementation is correct.
[ ] Add $time and %t support to format strings.

Likely superseded by https://github.com/YosysHQ/yosys/pull/3721. (I'll keep this open for now.)

Obsoleted by https://github.com/YosysHQ/yosys/pull/3721.


Apply infinite scroll on auction lot pages

Page load is increasing significantly for artwork pages included in auctions with large lot sizes.

[ ] Load 50 works on initial page load
[ ] Infinite scroll the remaining

cc @katarinabatina @devangt

One thought -- we should consider that with long pages and infinite pages is that it can make it difficult, or at least annoying, to reach the footer. With long pages, this is a problem, but you can at least drag your scroll bar to the bottom. With infinite pages, this triggers a load, and the footer "runs away from you".
Maybe we could just drop the footer links from infinite pages?

@briansw I tend to think we should cap the works and provide an entrypoint back to the main sale page. Soon we'll provide a better browsing expereince there anyways and with sales topping out at 200lots I agree with @acjay that the expereince could start to feel clunky after a few scrolls down the page.