fix: 15963 - Border line appears, then disappears, above the 1st search result

Details

This PR added this.props.shouldHaveOptionSeparator !== nextProps.shouldHaveOptionSeparator; to the shouldComponentUpdate of OptionRow. This will remove the redundant border line above the first item in the pronoun search.
In addition, the PR also added some other props condition in shouldComponentUpdate that should make the item in OptionRow re-render, as suggested by the reviewer. The addition props being considered are this.props.option.shouldShowSubscript, this.props.option.ownerEmail, this.props.option.subtitle, this.props.option.pendingAction.
Fixed Issues

$ https://github.com/Expensify/App/issues/15963
PROPOSAL: https://github.com/Expensify/App/issues/15963#issuecomment-1469410712
Tests

Navigate to Settings > Profile > Pronouns
Type Hi
Observe that the border doesn't show above the first result
Type Hir
Verify that the border still doesn't show above the first result

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

Offline tests

n/a
QA Steps

Navigate to Settings > Profile > Pronouns
Type Hi
Observe that the border doesn't show above the first result
Type Hir
Verify that the border still doesn't show above the first result

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

PR Author Checklist

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

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

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

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

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

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that 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 correct English and 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] 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 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 a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://user-images.githubusercontent.com/113963320/226094178-18db0b8d-a574-427a-9ab7-7c86f9afc6da.mov
https://user-images.githubusercontent.com/113963320/226094181-79b6ad33-89b5-4872-aec7-024aa38af7ad.mov

Mobile Web - Chrome
android-chrome.webm

Mobile Web - Safari
https://user-images.githubusercontent.com/113963320/226094171-2f8109e5-439b-487c-93c1-f25f4b001fe2.mov

Desktop
https://user-images.githubusercontent.com/113963320/226094148-b2e15884-b481-47f3-b816-15b9251eca08.mov

iOS
https://user-images.githubusercontent.com/113963320/226094647-0040ef39-5b86-478e-bf87-7b263eb0372e.mov

Android
android-native.webm

@Beamanator @s77rt One of you needs to copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

@s77rt

shouldDisableRowInnerPadding, option.isPinned, option.pendingAction

shouldDisableRowInnerPadding is not necessarily to be change, since it’s used as a fixed boolean props with the OptionList component here and here. Similar thing goes for props.showTitleTooltip
option.isPinned is not used in OptionRow, so I think it wouldn’t be necessary to check it in shouldComponentUpdate.
Some attributes of props.option are added, namely shouldShowSubscript, icons, ownerEmail, subtitle, pendingAction. I agree that they should be presented since they're used in OptionRow. Their changes could affect the behavior of the render function.
Thoughts?

@s77rt Thanks for pointing that out, I've removed icons checking and moved props.shouldHaveOptionSeparator check to be after props.isSelected. Please take a look

Also please remove the offline tests; write "n/a". I don't think offline tests have any different behavior then being online.

@s77rt Updated as suggested 🎉 Thanks!

Reviewer Checklist

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

[X] I verified the steps for local testing are in the Tests section
[X] I verified the steps for Staging and/or Production testing are in the QA steps section
[X] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[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 checked that screenshots or videos are included for tests on all platforms
[X] I included screenshots or videos for tests on all platforms
[X] I verified tests pass on all platforms & I tested again on:

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

[X] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[X] I verified proper code patterns were followed (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 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] 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 correct English and 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 verified that this PR follows the guidelines as stated in the Review Guidelines
[X] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[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] 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] 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 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 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 reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://user-images.githubusercontent.com/16493223/226663287-d4222e27-f564-4542-92a1-a6dbd322eaf4.mp4

Mobile Web - Chrome
https://user-images.githubusercontent.com/16493223/226663144-7dc0bdd0-95a4-438e-9ecc-4c7593e3ad5c.mp4

Mobile Web - Safari
https://user-images.githubusercontent.com/16493223/226663094-d84e818b-1635-49af-91ac-dbbafd7613fb.mp4

Desktop
https://user-images.githubusercontent.com/16493223/226662786-ef461340-2f9a-42fc-ada0-07762513aad1.mp4

iOS
https://user-images.githubusercontent.com/16493223/226662699-b87b6c4f-5115-41b9-9f3e-398b6f9cf6ff.mp4

Android
https://user-images.githubusercontent.com/16493223/226662628-b201574a-32a2-4add-a2c8-03a49765848e.mp4

@Beamanator Could you help to check this PR?

@Beamanator Can you assist me in reviewing this PR?

@tienifr No need for double-tag. I'm sure Alex will check this once he get the time.

Ya sorry for the delay, have been quite busy and I'm mainly on vacation this week but I'll be happy to merge soon, but I do have one question:
@s77rt @tienifr did y'all test this change on all pages that have the OptionRow? We don't want to have any regressions, and right now in the QA steps I only see tests for the Pronouns page

@Beamanator I confirm OptionRow is working fine on:

PronounsPage
PriorityModePage
LanguagePage
ReportParticipantsPage
IOUConfirmationList
NewChatPage
SearchPage
YearPickerPage
IOUCurrencySelection
IOUParticipantsRequest
IOUParticipantsSplit
TimezoneSelectPage
WorkspaceInvitePage
WorkspaceMembersPage

@tienifr Can you please confirm the same

@s77rt @Beamanator It works for me in all places

[x] PronounsPage
[x] PriorityModePage
[x] LanguagePage
[x] ReportParticipantsPage
[x] IOUConfirmationList
[x] NewChatPage
[x] SearchPage
[x] YearPickerPage
[x] IOUCurrencySelection
[x] IOUParticipantsRequest
[x] IOUParticipantsSplit
[x] TimezoneSelectPage
[x] WorkspaceInvitePage
[x] WorkspaceMembersPage

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

🚀 Deployed to staging by https://github.com/Beamanator in version: 1.2.89-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@Beamanator Tests updated in the QA section! Everything seems good.  I removed the YearPickerPage, since I think that's not relevant to the current issue.
@s77rt Just for confirmation, are you referring to the date picker page in the birthday section? If not, can you provide the location where it is used, because I cannot find a YearPickerPage component in the code.

@tienifr On birthday page, open date picker, click on year. It will take you to the year picker page which uses OptionsSelector which uses OptionRow.

@s77rt Thanks 🎉 I forgot to sync to the newest change
All tests for the related components are added in the QA section. All yours @Beamanator

@tienifr This has been merged already.

🚀 Deployed to production by https://github.com/luacmartins in version: 1.2.89-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Rename arcsi.py to arcsi-script.py and change bat file to run it

This means arcsi.py.bat will always get run when the user enters arcsi.py on Windows. Previously arcsi.py was getting run directly and which version of Python gets used in this case can be random.
arcsi.py.bat ensures conda Python is used.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender


Wait logic kubernetes version support

The wait logic will break on (at a minimum) Kubernetes version 1.24.
Review the current wait workflow and determine version support OR remove logic that requires certain kubernetes versions.

Moving to blocked - tracking https://github.com/defenseunicorns/zarf/pull/2497 as a potential contender for replacing this logic with some common logic shared with other projects.


Deal with tooltip going out of bounds

Similarly to the #3116 dropdown issue, tooltip also may be placed out of space bounds.

The tooltip is properly placed:

And we can see that the preferred extent is of a correct size:

This fix targets only BrGlamorousWithLabelTooltipAptitude tooltips.

We added a tool description:


Update README.md

Provide the more updated list of known versions, as previously the readme was listing older versions.
Before:
The readme's known versions list only went up to 7.0
After:
Latest of 2023 versions are shown in readme.

Merged. Thanks.


How to get child PID

Hi,
Can you please guild me how can I get the child PID when on process create?
-Mak

Hi,
You mean how to get the new process id when process create?
Use CEventView::GetProcessId()

Hi,
Main process (p1) creates another child process (p2) , I want get the p2 PID.

CEventView::GetProcessId() in NOTIFY_PROCESS_CREATE event is child process id. You can get parent id use CEventView::GetParentProcessId()

@mkurkute

yes, Thanks @progmboy !
I could able to the child PID...


gigasecond: Deprecate exercise.

Closes #230.

Hi I could rubber-stamp :+1:  this. Note! I'm taking your word for it that everyone's gigasecond submission is the same since I haven't done it and can't see the submissions. Thus, take anything I say with a grain of salt. And in case anyone sees this comment and asks, no, I don't really have time to look at gigasecond submissions so don't magically give me access to that.
Anyway, this is valid JSON so if nobody else has anything to say, what you say goes =D


vmware, mgmt, tsp, bug fix for leaseTime to int64

bug fix for incorrect typespec source
https://github.com/Azure/autorest.java/issues/2803#issuecomment-2150686790
2023-03-01 https://github.com/Azure/azure-rest-api-specs/blob/3f47536facebaad1b039b3711965debc9c53ded9/specification/vmware/resource-manager/Microsoft.AVS/stable/2023-03-01/vmware.json#L6923-L6927
I will add the "BreakingChange-Approved-BugFix" label, if service approves. No change in service/backend.
ARM (Control Plane) API Specification Update Pull Request

[!TIP]
Overwhelmed by all this guidance? See the Getting help section at the bottom of this PR description.

PR review workflow diagram
Please understand this diagram before proceeding. It explains how to get your PR approved & merged.

Purpose of this PR
What's the purpose of this PR? Check the specific option that applies. This is mandatory!

[ ] New resource provider.
[ ] New API version for an existing resource provider. (If API spec is not defined in TypeSpec, the PR should have been created in adherence to OpenAPI specs PR creation guidance).
[ ] Update existing version for a new feature. (This is applicable only when you are revising a private preview API version.)
[ ] Update existing version to fix OpenAPI spec quality issues in S360.
[ ] Other, please clarify:

edit this with your clarification

Due diligence checklist
To merge this PR, you must go through the following checklist and confirm you understood
and followed the instructions by checking all the boxes:

[ ] I confirm this PR is modifying Azure Resource Manager (ARM) related specifications, and not data plane related specifications.
[ ] I have reviewed following Resource Provider guidelines, including
ARM resource provider contract and
REST guidelines (estimated time: 4 hours).
I understand this is required before I can proceed to the diagram Step 2, "ARM API changes review", for this PR.

Additional information

 Viewing API changes
For convenient view of the API changes made by this PR, refer to the URLs provided in the table
in the Generated ApiView comment added to this PR. You can use ApiView to show API versions diff.

Suppressing failures
If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the
suppressions guide to get approval.

Getting help

First, please carefully read through this PR description, from top to bottom. Please fill out the Purpose of this PR and Due diligence checklist.
If you don't have permissions to remove or add labels to the PR, request write access per aka.ms/azsdk/access#request-access-to-rest-api-or-sdk-repositories
To understand what you must do next to merge this PR, see the Next Steps to Merge comment. It will appear within few minutes of submitting this PR and will continue to be up-to-date with current PR state.
For guidance on fixing this PR CI check failures, see the hyperlinks provided in given failure
and https://aka.ms/ci-fix.
For help with ARM review (PR workflow diagram Step 2), see https://aka.ms/azsdk/pr-arm-review.
If the PR CI checks appear to be stuck in queued state, please add a comment with contents /azp run.
This should result in a new comment denoting a PR validation pipeline has started and the checks should be updated after few minutes.
If the help provided by the previous points is not enough, post to https://aka.ms/azsdk/support/specreview-channel and link to this PR.

/pr RequestMerge


SST console stuck with old metadata

http://console.set.dev is getting stuck with old metadata. While tracking down what was happening, I noticed in the browser devtools that requests¹ to get stack metadata were using the disk cache. Disabling the browser cache fixed the problem.
Not sure if this is intended behavior, or if I got something wrong, but it would be nice to prevent metadata caching, or at least warn about this behavior in the docs.
¹ E.g. http://localhost:13557/proxy/https://sstbootstrap-....s3.sa-east-1.amazonaws.com/stackMetadata/app..../stage..../stack.....json?x-id=GetObject

Related (dupe of?): #2248

You are right! :facepalm:


Migrate to central acknowledgements

Also include Mat as creator
Contributor Checklist:

[x] I have added or updated my entry in the creators.json file
[ ] I have added a changelog entry for my contribution
[x] I have added/updated documentation for all user-facing changes
[ ] I have added/updated test cases

Reviewer Checklist:

[ ] /azp run libertem.libertem-live-data passed

/azp run libertem.libertem-live-data

/azp run libertem.libertem-live-data


attention mechanism

can you please explain which attention mechanism you have used global or local ??

I assume you are referring to this paper. If so, is the global attention.


[6.3.x] BZ-1324141 - ServerImpl cannot be cast to KieServerInstance after mig…

…ration from 6.1 to 6.2 - fixed identifier handling, return migrated path to load migrated kie server content
@sutaakar could you please take a look?

this is for one off patch of 6.2.z so if someone could take a look that would be great

+1
Tried it locally and it seems to work.
There just have to be specific migration order followed:

After migration there has to be started Workbench first while Kie server are turned off and opened Server management screen.
If Kie server is started before internal migration is done then this server is registered in Workbench, causing errors in migration which is run afterwards.
Also Kie server and Workbench has to have proper configuration of system properties - according to docs.

+1


Remove Beg Theme

This theme's demo is broken due to https://github.com/gohugoio/hugoThemes/issues/669#issuecomment-518648215
However the Beg theme is currently unmaintained as stated in https://github.com/dim0627/hugo_theme_beg/blame/master/README.md#L2
cc: @digitalcraftsman

Closing since this ERROR will be turned into a WARN in the next version of Hugo (ref: https://github.com/gohugoio/hugo/issues/6162#issuecomment-518751094)
However note that this is an unmaintained theme that even though its demo will be restored in 0.57 it might break again at some point.

It seems that this commit was undone in later commits @digitalcraftsman
So I re-opened this pull request.

Closing again due to conflicts.
I will send another PR at a later time.


Update power-options.component.html

From:

To:

how do these changes look in a browser the same width as your 'from' screenshot?

They look good.

please could you show a screenshot?

I don't have a computer with me. And I would have to reinsulate this to the inspector.  And that's it. It is a small change.

no problem, i have rebased onto alpha, this could be a change we make in a future version 👍

thanks @mkz212


Multiline ToolTip scroll

In the above picture you can see that some lines are being cut because of no scroll . I had a look around but cant find any way out. Is there any way to add scroll or CHART.js does not offer this feature ?

@WaheedAsghar32 scroll is not possible using the on canvas tooltip. I would use the HTML tooltip http://www.chartjs.org/samples/latest/tooltips/custom-line.html to do what you need

HTML tooltip is the recommended solution here. Canvas scrolling would be way too complex

Can you provide an example on how to use HTML tooltip instead of canvas scrolling ?


takeErrors(1) does not end stream immediately?!

I have the following code for SSR:
sinks.state$
    .skip(1)                                     // skip initial state
    .merge(K.later(500, sinks.state$).flatMap()) // timeout 500ms
    .take(1)                                     // a state to render
    .takeErrors(1)
    .observe(state => {
      console.log("???")
      let appHTML = ReactDOMServer.renderToString(<sinks.Component/>)
      res.send(layout({appHTML, state}))
    }, error => {
      console.log("!!!", error.message)
      res.status(500).send("500")
    })

What I have noticed is that takeErrors(1) does not end stream after the first error immediately.
At least one value event passes through after that:
Listening on port 8080
!!! Request failed with status code 500
??? -- why this event coming @_@

Is this an intended behavior or a bug? RxJS ends on error automatically and I think in Kefir it would be good to end streams on takeErrors(1) immediately as well. Otherwise, for the above case, it will be necessary to mess with global variables.

It should end immediately. There is a test covering this case, which appears correct, not sure why that's not working as expected for you. I did make some changes to take and takeErrors somewhat recently. Do you have a public reproducible example we can take a look at?

I'll try to prepare one tomorrow.

Works as expected. Sorry for misinformation – something else was in effect here – not a Kefir problem.


Prepare v0.11.0

FYI the readme still mentions the previous version.

FYI the readme still mentions the previous version.


add arguments to main functions

Pylint warns about too many arguments in functions. I propose to close this PR (if it is OK) and then to fix the problem with many arguments


Add Assignees, Labels, and Milestones dropdowns

We currently don't let users to set assignees, labels, and milestones on an issue. If the viewing user has the permission, we should let them set those fields with a similar UI to github.com

Scoping of this issue (rough draft):
*roughly 1 hour timebox each
Labels:

[ ] Permission check for write access to the repo that the issue is being submitted to and as it's being rendered (so that labels don't appear for someone that doesn't have permission to view them)

[ ] Research on how to complete this permission check - are there existing permission checks I can refer to?
[ ] Implementation

[ ] Render message if user doesn't have permission to set one of existing labels
[ ] Formatting render message to match rest of Project Forms UI
[ ] Render checkbox list (or dropdown) of available labels (ugly first draft/standard HTML ok for first step), be able to correctly assign single/multiple labels on your submitted issue
[ ] Make format for adding labels similar to GitHub UI, Primer

Assignees
TBD
Milestones
TBD


match on music brainz id when name match fails ?

What version of Music Assistant has the issue?
2022.8.1
The problem
I found two duplicate artist entries in my library :
= Salt-N-Pepa
= "Weird" Al Yankovic
How to reproduce
Both names looked identical, but looking more closely I noticed that "Weird" Al Yankovic had two variants :
= One with 'standard' double quotation marks showing the spotify tracks/albums : "Weird Al" Yankovic
= One with fancy double quotation marks showing the local file system tracks : “Weird Al” Yankovic
The local filesystem files had been updated with info from Music Brainz Picard with UTF-16 encoding.
The Salt-N-Pepa situation was fixed by

adding the plug-in named "Unicode Hyphen" to Music Branz Picard
re-scanning the affected albums/tracks
the updates showed a change in artist name
saving the updated tracks

I did try a force resync in MA to fix the situation, but that didn't appear to solve it.
As such I had to go nuclear (disable MA integration, remove the musicassistant.db file from system, enable MA integration).
This did
Relevant log output
No response
Additional information
Music Brainz Picard was set to use ID3 v2.3 UTF-16

Spotify may be using UTF-8 character set, which can explain multiple versions tracks from various sources that appear identical to the user in the MA library.
Possibly related :
Track names on spotify don't appear to match the ones in music brainz either.
Salt-N-Pepa debut album "A Salt with a deadly Pepa" has track in music brainz listed as "Shake Your Thang" while Spotify lists it as "Shake Your Thang (It's Your Thing)" which don't match based on track name for obvious reasons.
I suspect that this mismatch in track/album/artist names between spotify (streaming service) and music brainz data may also cause several other tracks, albums and artists not to be matched in MA library.
Suggestion :
If spotify (or any other service) has the music brainz Id's available this should make matching artists, albums and tracks easier.
What version of Home Assistant Core are your running
2022.8.1
What type of installation are you running?
Home Assistant OS
On what type of hardware are you running?
Generic x86-64 (e.g. Intel NUC)

Similar, but different issue :
The album "Beautiful Garbage" on spotify is listed as "beautifulgarbage" on Music Brainz Picard.
I ran into that issue when I couldn't find the album when updating tags with Picard.
Apparently the 'official' title for that album is indeed without the space  ...

Spotify doesn't supply MB ID so the exact name match is required. Please confirm that the mismatches are only occurring between local media and Spotify?
Clearly it is going to be difficult if not impossible to match when Spotify doesn't send the proper artist, track or album name. I have previously spoke to Marcel about matching on a percentage of characters but he has tried that in the past and it resulted in too many false positives.
If Marcel is happy to adjust the sort order to ignore case (as per another issue) then that will help a little in that similarly named, but different case, situation.
Any other ideas from others welcome!

I consider a mismatch when a file on my system is not matched to an equivalent artist/album/track on spotify
yep  ... all mismatches I've seen so far were local vs spotify.
I'd suggest these options :

recommending tags in UTF-8 character encoding when tagging local files (this needs no fix in MA, but it may make life easier), because that is likely to be the standard encoding available in streaming services which would reduce workload for MA. At the very least recommend avoiding the ISO 8859-1 format, unless specific streaming services do have this as output.

convert text to UTF-8 encoding if they are in either UTF-16 or ISO 8859-1 format before making a match within the MA database. I am assuming that most streaming services only provide UTF-8 format output, although some may have options for alternate character encodings.

case insensitive matching preferred, maybe make it culture invariant too (this may be new). This allows MA to ignore diacritical(sp?) variants of characters and would further improve automatich matching

allow manual matching by user (this would require additional dialogs).
The last option would help users solve situations when multiple streaming services are in use, when Plex (and similar alternatives to filesystem) are added  or when there are reasons why fixing the tags in the local filesystem output isn't possible.

Some good ideas there. Let's see what @marcelveldt thinks. Note that the tags added by Picard are considered a source of truth so I am pretty sure the least preferred option is "fixing the tags" (unless fixing them is tagging with Picard :-) )

Yes and no.
I'd argue that the user is the only one who gets to decide what his version of the truth actually is.
Especially for files that are on his system.
If he wants to match his tags with those of his favourite provider then that should be an option.
Everything else requires MA to maintain a database of sorts that matches all of the content available in Spotify(*) to MusicBrainz data ...
(*) or any other music service ... Plex does something similar by providing users with several sources of meta-data to enrich their media.

I understand your point.  However, due to limitations with the metadata supplied from the various music providers it is difficult to achieve a 100% success rate without introducing false positives. Your idea to be able to manually link is a good one but will be a feature enhancement. On the UTF encoding Marcel accepted that as a bug on Discord so I will add that label as well.

manually matching is definitely a 'nice to have' feature for a future that will make life easier, especially for users who don't have a (local) filesystem source that can be updated by re-tagging a few files.

implemented a fix in version 2022.8.2, can you confirm that works ?

Hi @DutchJaFO . The case insensitive sorting has been implemented. Marcel also believes he has implemented your suggestion #3 above and utf encoding shouldn't matter because MA only compares ascii characters now. Manual matching is something that will be looked at once the auto logic is perfected.
On that basis we will close this issue soon unless you have further problems. Thanks!


Block curated card

Please always provide the GitHub issue(s) your PR is for, as well as test URLs where your change can be observed (before and after):
Fix #1 https://adobe-acs-group.atlassian.net/browse/WRLDBAEMS-46
Test URLs:

Before: https://main--world-bank--aemsites.hlx.live/
After: https://block-curated-card--world-bank--aemsites.hlx.live/

@skumawat1 Can you please check the lint errors?


Add support to retrieve ruleset ids to successfully import custom cloudflare_ruleset

Current Terraform and Cloudflare provider version
Terraform v1.4.6
Cloudflare v4.15.0
Description
The following curl request only returns kind: managed/zone rulesets and never returns custom rulesets so it's impossible to get the ruleset id in order to import custom cloudflare_ruleset
curl --request GET
--url https://api.cloudflare.com/client/v4/accounts/zone_id/rulesets
--header 'Authorization: Bearer api_token'
--header 'Content-Type: application/json'
Use cases
Unless we are able to obtain ruleset ids for kind: custom cloudflare_ruleset we are unable to import existing custom rulesets into terraform.
Potential Terraform configuration
resource "cloudflare_ruleset" "videos" {
  account_id = local.account_id
  name       = "Videos"
  kind       = "custom"
  phase      = "http_request_firewall_custom"
  rules {
    action     = "log"
    expression = "(http.request.uri.path eq \"*.mov\" or http.request.uri.path eq \"*.mp4\")"
    enabled    = true
  }
}

References
https://github.com/cloudflare/terraform-provider-cloudflare/pull/2054/files this solves import for cloudflare_ruleset however it's currently not possible to retrieve ruleset ids for custom rulesets

have you tried using the cloudflare_Ruleset data source? https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/data-sources/rulesets#filter
that has worked for me in the past to get any rule type.

@jacobbednarz I created a few different data sources for various custom rules we have. They all return the same ruleset id and when I try to run a zone import for our cloudflare_ruleset.videos resource for example I get the following error:
│ Error: Cannot import non-existent remote object │ │ While attempting to import an existing object to "cloudflare_ruleset.videos", the provider detected that no object exists with the given id. Only pre-existing objects │ can be imported; check that the id is correct and that it is associated with the provider's configured region or endpoint, or use "terraform apply" to create a new │ remote object for this resource.

you don't import rules; you import the entire ruleset and the rules are a part of that.

closing this off as a misunderstanding of how the cloudflare_ruleset resource currently works. if you manage to find a bug or something missing, please open a new issue following the issue template.


Suggestions for adding more utility methods for Either

First thanks for a good library.
Needed a few functions on Either that I'm used to have. Here below is a list of them.
More then happy submit a PR if these are features that can be useful for others.
Not sure about the policy on instance vs (for lack of a better word) static functions
Swap the values in an Either (2-complement)
Either#swap :: Either a b ~> Either b a
Return true if this either is a right and satisifies a predicate
Either#exists :: Either a b ~> b -> Boolean -> Boolean
Return true if this either is a left value or the right value satisfies the given predicate.
Either#forall :: Either a b ~> b -> Boolean -> Boolean
Map on the left side
Either#leftMap :: Either a b ~> (a -> c) -> Either c b
Catamorphism. "fold" on the data constructors (can also exist for Maybe, Future etc...)
Either#cata :: Either a b ~> (a -> c) -> (b -> c) -> c
Run side effect on the right
Either#foreach :: Either a b ~> (b -> ()) -> ()
Or
Either#foreach :: Either a b ~> (b -> ()) -> Either a b

First thanks for a good library.

Thanks! It's a useful stepping stone between Ramda and PureScript. :)

More then happy submit a PR if these are features that can be useful for others.

Excellent!

Not sure about the policy on instance vs (for lack of a better word) static functions

The methods are purely for Fantasy Land compatibility. The idea is that one can use R.map, R.chain, etc.—and soon their Sanctuary equivalents—rather than invoke methods directly.

Swap the values in an Either (2-complement)
Either#swap :: Either a b ~> Either b a

:thumbsup:

Return true if this either is a right and satisifies a predicate
Either#exists :: Either a b ~> b -> Boolean -> Boolean
Return true if this either is a left value or the right value satisfies the given predicate.
Either#forall :: Either a b ~> b -> Boolean -> Boolean

b -> Boolean needs to be parenthesized, I think.
exists(pred, e) is sugar for either(K(false), pred, e).
forall(pred, e) is sugar for either(K(true), pred, e).
Were we to define these as functions attached to S, what might we name them? exists and forall seem too general. Perhaps these really are more general ideas, though. Could we define something along the lines of all :: Foldable f => (a -> Boolean) -> f a -> Boolean?

Map on the left side
Either#leftMap :: Either a b ~> (a -> c) -> Either c b

:thumbsup: We have an issue for this one: #98.

Catamorphism. "fold" on the data constructors (can also exist for Maybe, Future etc...)
Either#cata :: Either a b ~> (a -> c) -> (b -> c) -> c

This looks like S.either.

Run side effect on the right
Either#foreach :: Either a b ~> (b -> ()) -> ()
Or
Either#foreach :: Either a b ~> (b -> ()) -> Either a b

Sanctuary currently has no impure functions (or functions intended for impure use). I'd like to keep it that way. We do have Either#map as an escape hatch:
either.map(console.log)

b -> Boolean needs to be parenthesized, I think.

Sure, fat fingered :)

exists(pred, e) is sugar for either(K(false), pred, e).
forall(pred, e) is sugar for either(K(true), pred, e).
Were we to define these as functions attached to S, what might we name them? exists and forall seem too general. Perhaps these really are more general ideas, though. Could we define something along the lines of all :: Foldable f => (a -> Boolean) -> f a -> Boolean?

I picked the exists / forall keyword because they are usually used to for existential and universal quantification.
For a foldable, I like the your idea of all. Maybe we can add:
all :: Foldable f => (a -> Boolean) -> f a -> Boolean
any :: Foldable f => (a -> Boolean) -> f a -> Boolean
Where:

all would be folding on the Conjunction monoid (true, and)
any would be folding on the Disjunction monoid (false, or)

I picked the exists / forall keyword because they are usually used for existential and universal quantification.

This sounds like something I should read about. :)
I really like the idea of all and any. They're generalized forms of their Ramda namesakes. We could consider defining none as well (as sugar for not(any(pred, foldable)) or all(complement(pred), foldable)).

Sounds good. I will hopefully get some time to do a PR later tonight or tomorrow.
My plan was to implement any/all using foldMap + Conjunction/Disjunction monoid. I was however surprised to find out that Fantasy land does not consider foldMap as a basic building block for a foldable. (Something that I'm used to from Haskell or Scalaz).
Ref: https://hackage.haskell.org/package/base-<IP_ADDRESS>/docs/Data-Foldable.html
Ref: https://github.com/scalaz/scalaz/blob/series/7.1.x/core/src/main/scala/scalaz/Foldable.scala#L15
Should we add it?. Another option would be to simply use Foldable.reduce

Should we add [foldMap]?. Another option would be to simply use Foldable.reduce

Is the distinction that foldMap would allow us to "map" and "reduce" as a single operation?
Going from (Foldable f, Functor f) => f a to (Foldable f, Functor f) => f Boolean (via map) to Boolean (via reduce) sounds good – all and any would be compatible with existing data types.
foldMap seems useful, though. You could open a Fantasy Land issue for discussion.

Should we add it?

I'd prefer foldMap to reduce as the method to implement, to be honest. But there's overhead involved in the change.

You could open a Fantasy Land issue for discussion.

That's probably the best thing to do.

Run side effect on the right

That's what Traversable is for. Though it's not limited to side-effects. It works with any Applicative effects. And since we can encapsulate side-effects as an Applicative, we can use Traversable stuff to do what you want.

Would also like to see something of the following:
(Please forgive my complete understanding of the existing signature syntax:
// Returns the first left or a right of all values.
Either.all = collection => find(isLeft, collection) || Either.of(map(get("value"), collection)));

// Return the first right or the first left.
Either.any = collection => find(isRight, collection) || find(isLeft, collection);

// Return an Either from Either or value
Either.from = value => Either.isEither(value) ? value : Either.of(value);

// Tap into Either (or as tapRight/tapLeft)
Either#ifRight = function (f) {
  if (this.isRight() && isFunction(f)) {
    f(this.value);
  }
  return this;
}
Either#ifLeft = function (f) {
  if (this.isLeft() && isFunction(f)) {
    f(this.value);
  }
  return this;
}

Same could be applied to Maybe et al.

Let's see what the types of these functions might be, @jlmorgan.
Either.all :: Foldable f => f (Either a b) -> Either a (f b)

This type seems sound, but I think we could use sequence instead:
> Z.sequence(S.Right, [S.Right(1), S.Right(2), S.Right(3)])
Right([1, 2, 3])

> Z.sequence(S.Right, [S.Right(1), S.Right(2), S.Right(3), S.Left('A')])
Left('A')

> Z.sequence(S.Right, [S.Right(1), S.Right(2), S.Right(3), S.Left('A'), S.Left('B')])
Left('A')

Either.any :: Foldable f => f Any -> Maybe (Either a b)

I have several problems with this type. The first is Any. According to the Sanctuary philosophy Array Number is a useful type but Array Any is not. My second concern is the overly specific nature of this function (S.find(S.is(S.Either)) almost has the desired behaviour). My final concern is that a and b are unconstrained, limiting our ability to reason about the type of the return value.
Either.from :: Any -> Either a b

Here is Any again. My view is that we should know whether or not a value is an either. I also have a strong aversion to special cases (and a less strong aversion to conditional logic in general), so I can't imagine adding this function. The existence of is already makes me slightly queasy.
As for Either#ifLeft and Either#isRight, Either#fantasy-land/bimap (#240) should handle these use cases. As a side note, I see no reason for the isFunction checks. ;)

For Either.any the collection should be all Eithers that grabs the first left or the first right in that order. As for the Either.from, I see it as a conditional way of ensuring a collection of value are all boxed. I agree that we should know what we have on hand, but it's not enforced until runtime. = \

For Either.any the collection should be all Eithers that grabs the first left or the first right in that order.

Ah, I see. So more like this?
Either.any :: Foldable f => f (Either a b) -> Maybe (Either a b)

What's your use case for this function, out of interest? Also, have you considered this approach?
> Z.map(S.head, Z.sequence(S.Right, [S.Right(1), S.Right(2), S.Right(3)]))
Right(Just(1))

> Z.map(S.head, Z.sequence(S.Right, [S.Right(1), S.Right(2), S.Right(3), S.Left('A')]))
Left('A')

> Z.map(S.head, Z.sequence(S.Right, [S.Right(1), S.Right(2), S.Right(3), S.Left('A'), S.Left('B')]))
Left('A')

It seems we might already have all the building blocks we need. :)

In my mindlessness of home distractions, I miswrote. Either.any should be first Right or first Left not the other way around.
In the case were we have used it is where we read/write from/to multiple channels, but only care if one succeeded.

I'm closing this issue as it's not actionable. If you're interested in one of the specific functions discussed in this thread, please open a new issue for it.


Public database of general project metadata

Similarly to how the Linehaul project streams PyPI download data into a Google BigQuery public dataset (into tables called `the-psf:pypi.downloadsYYYYMMDD`), I wish to be able to query a public dataset that contains the project metadata from PyPI, for example how it is presented by Warehouse JSON API calls.
I would like to analyse project licenses. In fact, I would not be the only one interested in this data to do a study. This data is technically simpler to collect than the downloads data and would be similarly informative about the totality of Python packages. I'd be thankful if such a database were created.

Relevant here: https://dustingram.com/articles/2018/03/05/why-pypi-doesnt-know-dependencies/


Show and Focus actions should maintain the cursor location

@cseickel wanted to double check with you, but right now there isn't a way to "get the previous state from a tree", right?
Specifically consider the case where I reveal a file and close the tree. The tree itself has a state, but so does the cursor. If I then action=focus the tree again, the current action only makes an attempt to open and then focus the tree window. The cursor is left alone at the top of the buffer, rather than placed in the same place as it was when the window was previously closed.
I have a relatively simple way to handle this that I use in my own current configuration (basically tracking Win{Leave,Enter} for all neo-tree buffers and keep track of the cursor state), but wanted to make sure there isn't something that already exists first. The aforementioned method could break in the case that the tree state changes without one of those events firing (not a common thing as far as I'm aware).
Wanted to get your feedback before going any further with this.
Originally posted by @levouh in https://github.com/nvim-neo-tree/neo-tree.nvim/issues/31#issuecomment-1019544171

Are you working on this @cseickel? Wanted to get this done before #31 as it makes some testing there easier/more exhaustive.

If you do want to deal with it now, I think the thing to do is to actually record the path that is currently focused as opposed to the line, and then restore that value here as the previously_focused node: https://github.com/nvim-neo-tree/neo-tree.nvim/blob/2aee0b3c8391a79d2582059dfefcf0599c69660f/lua/neo-tree/sources/filesystem/init.lua#L139

OK, I will take a stab at it using the actual node in the tree versus a cursor position.


ARROW-8291: [Packaging] Conda nightly builds can't locate Numpy

@github-actions crossbow submit -g conda

So this means cmake 3.17 doesn't work inside conda-build?

Reported upstream at https://gitlab.kitware.com/cmake/cmake/-/issues/20525

I managed to locally reproduce the issue and pinning cmake has resolved it. Also tried to build arrow-cpp-feedstock on my fork and that was working without the pin - perhaps it fails with pyarrow (have not checked the log yet).

@xhochy Thoughts?

Should we merge this?


Rollout blocks

The system should be able to support per–namespace and global rollout blocks. This interface should be easy to engage and disengage. A block should include a human message describing why the block is in place.
While the block is in place we should not create any new Release objects.
The blocks should be 'soft' so that you can override the block by confirming intent.

For context, here's the design doc for rollout blocks ported from the internal repo:
Rollout Blocks
During an outage, changes to the system should be reduced as much as possible.
This reduces cognitive burden for the incident responders. Rollouts are
expected to be the riskiest and most frequent source of change;[^1] therefore, the
deployment system should support administrative rollout blocks.
Considerations
Easy to globally apply
Rollout blocks are primarily a tool to reduce entropy during incidents. As
such, applying a global rollout block should be treated as a critical
operational task: it must be easy to do very quickly in a reliable way without
special access levels.
This requirement means that editing each Application object using kubectl in
a for loop is probably not what we want: that's prone to partial failure, and
requires elevated access rights to poke into all of the namespaces.
Easy to globally un-apply
Once the incident is contained, we want to enable teams to get moving again as
fast as we can: any delay in unblocking directly hurts innovation. This
means we need to be able to remove a global rollout block quickly and reliably.
Overridable
Rollout blocks should be overridable so that the incident responders can roll
out changes in order to fix or mitigate the problem. However, this override
should have a limited lifetime: we do not want objects to accidentally remain
in "override" mode long after the bypassed block has been lifted.
Possible to apply per-namespace
In addition to global blocks, there are a number of use-cases for
per-namespace blocks: for example, there's a known-bad commit on master, but
there has not been time to debug it. As such, it should be possible to block Applications in a single namespace from rolling out.
Local blocks should not be cleared when a global block is removed.
Leave the system in a safe state
The block should bring the system to a pause at the nearest available safe
state. For example, if we're in the middle of adjusting load balancer
membership, we should finish that action before halting.
This property helps to ensure that the system is in a 'normal' state in the
state machine, not mid-transition: we believe this simplifies reasoning about
problems and ensures that recovery actions can use the standard tooling.
This likely means the block should: prevent new rollouts, and pause existing
rollouts once the current target waypoint is achieved.
Isolated RBAC scope from normal rollouts
The block mechanisms -- global and local -- should be accessible to most/all
developers: escalations are cheap. However, we do not want all developers to be
able to roll out all applications. Therefore we need to design blocks such that
the RBAC scope for adding or removing rollout blocks is distinct from the scope
for normal rollouts.
We would also prefer the blocks to be automatable without a high-power service
account: for example, it is not good if the block automation requires a service
account capable of rolling out any application.
This restriction does not apply to block overrides: you need to be able to edit
Applications or Releases in a given namespace in order to take advantage of
a block override. As a consequence, it is ok if overriding a rollout block
requires editing an Application or Release.
Global blocks can be made available to everyone via a fine–grained RBAC
permission.
Implementation
Introduce a new, namespaced object called RolloutBlock. The RolloutBlock
object represents a rollout block in a specific namespace. When the object is
deleted, the block is lifted.
The semantics of the block are the following:

When a block is in place, edits to the .spec.template for any Application in
the namespace will be rejected, and no new release object created.

When a block is in place, edits to the .spec for any Release in the
namespace will be rejected: all Release objects will freeze on their current
.spec.targetStep. This means that the system will converge on the current
.spec.targetStep and then halt, which grants the 'stop in a safe state'
property.

For global blocks, the RolloutBlock object is created in a configured special
namespace, such as shipper-system or global-rollout-block. This
special namespace will be configuration for Shipper on startup.
RolloutBlock Object
The RolloutBlock object is a namespaced object with the following spec:
apiVersion: shipper.booking.com/v1
kind: RolloutBlock
metadata:
  name: dns-outage
  namespace: shipper-system
  creationTimestamp: 2018-05-11T14:23:13Z
spec:
  message: DNS issues, troubleshooting in progress
  author:
    type: user
    name: jdoe

This indicates that a rollout block was put in place by user 'jdoe' on May
5th, 14:23.
Overrides
Rollout blocks may be overridden with an annotation applied to the
Application or Release object which needs to bypass the block. This annotation
should list each rollout block that it overrides with a fully-qualified name
(namespace + name). For example:
apiVersion: shipper.booking.com/v1
kind: Application
metadata:
  name: reviewsapi
  annotations:
    shipper.booking.com/block.override: shipper-system/dns-outage
spec:
  revisionHistoryLimit: 10
  template:
  # ... rest of template omitted here

The annotation may reference multiple blocks:
annotations:
  shipper.booking.com/block.override: shipper-system/dns-outage,frontend/demo-to-investors-in-progress

The block override annotation format is CSV.
The override annotation MUST reference specific, fully-qualified RolloutBlock
objects by name. This ensures that overrides expire when that specific block
expires. Non-existing blocks enlisted in this annotation should not be allowed.
Additionally, it enables a controller to add a .status.overrides field to the
RolloutBlock object so that operators can understand which changes may still
be going out during the block.
This might look like this:
apiVersion: shipper.booking.com/v1
kind: RolloutBlock
metadata:
  name: dns-outage
  namespace: shipper-system
# ... spec omitted
status:
  # associated because 'shipper-system/dns-outage' is referenced in override annotation
  overrides:
    application:
    - frontend/ui
    release:
    - frontend/ui-24eaeeb-0

RolloutBlock Controller
The RolloutBlock controller should watch for the deletion of RolloutBlock
objects and remove any override annotations which reference the deleted block
object from Application or Release objects.
Additionally it should populate the .status.overrides by inspecting
Application and Release objects for an override annotation which references
that particular RolloutBlock.
Application and Release conditions
Application and Release objects should have a .status.conditions entry
which lists all of the blocks which are currently in effect.
For example:
apiVersion: shipper.booking.com/v1
kind: Application
metadata:
  name: ui
  namespace: frontend
spec:
  # ... spec omitted
status:
  conditions:
  - type: Blocked
    status: True
    reason: RolloutsBlocked
    message: "rollouts blocked by: shipper-system/dns-outage,frontend/demo-to-investors-in-progress"

Admission controller
The Shipper admission controller is in charge of enforcing rollout blocks. It does the
following:

For global blocks, it checks for the existence of 1 or more RolloutBlock
objects present in the designated 'global block' namespace. If present,
rollouts are blocked. It should examine the currently admitting Application
or Release for an annotation which overrides a global RolloutBlock.

For local blocks, it checks for the presence of one or more RolloutBlock
objects present in the namespace of the object being admitted.

If the Admission controller understands that the admitting Application or
Release object is blocked, it should reject any update to the .spec of either
object.
[^1]: "These two data points seem to suggest that when Facebook employees are not actively making changes to infrastructure because they are busy with other things (weekends, holidays, or even performance reviews), the site experiences higher levels of reliability." -- https://queue.acm.org/detail.cfm?id=2839461


Refresh UI to match mocks

Update UI to reflect recent changes and user testing mocks.

[ ] #342
[ ] #343
[x] #344
[ ] #345
[ ] #346
[ ] #347
[ ] #348
[ ] #349
[ ] #350
[ ] #329
[ ] #330
[ ] #328
[ ] #307

Do you think we can get all of this UI work done this sprint? I think we should push some of it to make sure we're getting all the previously committed M9 stuff done.

Especially ones where we may be blocked on getting certain assets.

I think each of the tickets is a size 1 or 2, so feasible for us to get most of them done (and I'm a little under-committed this sprint). The only reason to prioritize them would be to unblock using our deployed site (instead of mocks) when Gabe/Safiya/etc. talk to property managers. But otherwise agreed that it's probably not great to explode the scope of M9 :)

@anders-schneider @pfeeny5 - which one of these was a duplicate to #328?

Closing now that we have these tickets to track the remaining differences.


Analytic Rule under security events folder missing query data frequency parameters

Trigger operators missing from rules "NRT_base64_encoded_pefile.yaml" and "NRT_execute_base64_decodedpayload.yaml"
These analytics rules will be found under Detections/securityevent folder.
To reproduce:
run below command to deploy above 2 rules
Import-AzSentinelAlertRule -SubscriptionId "subID" -WorkspaceName "workspacename" -SettingsFile "filepathtoabove2files"
Screenshots

Desktop (please complete the following information):

OS:Windows 11
Powershell- 7

HI @sandeep5234,
Sorry for the delay in response. Not sure how this rule is defined earlier but currently it's having a Kind as NRT. Query data frequency parameter is Required for Scheduled Detections only as it is of kind NRT we no need to specify.
Hope this helps.
Closing this incident as rules are working as expected. Please feel free to reopen if you need any further clarification.
Thanks


[PDI-16932] Specifying the Select Fieldname in the Metadata Injectionstep does not give correct results.

[PDI-16932] Specifying the Select Fieldname in the Metadata Injectionstep does not give correct results.
added default value for default values for length and precision

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

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

Changed files
  engine/src/main/java/org/pentaho/di/trans/steps/selectvalues/SelectValuesMeta.java
  engine/src/test/java/org/pentaho/di/trans/steps/selectvalues/SelectValuesMetaInjectionTest.java

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

:warning: Coverage Changes: <0.1% (click to expand)
org.pentaho.di.core.injection.bean.BeanInjector

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

org.pentaho.di.trans.step.StepMeta

Branch Change: -0.7% :small_red_triangle_down:
Complexity Change: -0.6% :small_red_triangle_down:
Instruction Change: -0.2% :small_red_triangle_down:
Line Change: -0.3% :small_red_triangle_down:

org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta

Method Change: -1% :small_red_triangle_down:

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

Branch Change: -3.1% :small_red_triangle_down:
Complexity Change: -3.1% :small_red_triangle_down:
Instruction Change: -0.1% :small_red_triangle_down:
Line Change: -0.3% :small_red_triangle_down:

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

Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.trans.steps.selectvalues.SelectValuesMeta

Instruction Change: -0.8% :small_red_triangle_down:
Line Change: -0.9% :small_red_triangle_down:

org.pentaho.di.trans.steps.setvalueconstant.SetValueConstantMeta

Instruction Change: -0.2% :small_red_triangle_down:

org.pentaho.di.trans.steps.webservices.WebServiceMeta

Branch Change: -1.7% :small_red_triangle_down:
Complexity Change: -1.2% :small_red_triangle_down:
Instruction Change: -0.1% :small_red_triangle_down:

org.pentaho.di.www.TransformationMap

Branch Change: -9.1% :small_red_triangle_down:
Complexity Change: -6.2% :small_red_triangle_down:
Instruction Change: -10% :small_red_triangle_down:
Line Change: -10% :small_red_triangle_down:

org.pentaho.di.trans.steps.salesforceupsert.SalesforceUpsertMeta

Instruction Change: -0.1% :small_red_triangle_down:

@bmorrise Could you please review and merge it?


ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

Hello,
Sometime, this function "Get Element Count xpath=..." or this one "Go To "
On multiple URL fail with this error
"ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))"
When trying to do the screenshot capture.
In parallel, we are testing the same URLs with Selenium 2.53 (on more than 100 scenarios) and this function are running perfectly.
Tests (selenium 4 and 2.53) are running through the same network access.
It mean that this is not an "access to the website issue or disconnection".
Sometime, we have this error while testing URL : 'file:///etc/hostname'
We cannot reproduce it but, we have 4 tests running 24/7 every 10 minutes.
We have the issue 10/15 time by day.
RobotFramework debug trace :
20220117 12:28:28.614 - INFO - +--- START KEYWORD: SeleniumLibrary.Get Element Count [ xpath=//*[@id='consent_prompt_submit'] ]
20220117 12:28:28.615 - INFO - +---- START KEYWORD: SeleniumLibrary.Capture Page Screenshot [ ]
20220117 12:28:29.011 - INFO -

20220117 12:28:29.011 - INFO - +---- END KEYWORD: SeleniumLibrary.Capture Page Screenshot (396)
20220117 12:28:29.015 - FAIL - ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
20220117 12:28:29.015 - DEBUG - Traceback (most recent call last):
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/SeleniumLibrary/__init__.py", line 467, in run_keyword
    return DynamicCore.run_keyword(self, name, args, kwargs)
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/SeleniumLibrary/base/robotlibcore.py", line 102, in run_keyword
    return self.keywords[name](*args, **kwargs)
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/SeleniumLibrary/keywords/element.py", line 1020, in get_element_count
    return len(self.find_elements(locator))
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/SeleniumLibrary/base/context.py", line 90, in find_elements
    return self.element_finder.find(locator, tag, False, False, parent)
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/SeleniumLibrary/locators/elementfinder.py", line 72, in find
    elements = strategy(criteria, tag, constraints,
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/SeleniumLibrary/locators/elementfinder.py", line 125, in _find_by_xpath
    return self._filter_elements(parent.find_elements_by_xpath(criteria),
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 537, in find_elements_by_xpath
    return self.find_elements(by=By.XPATH, value=xpath)
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 1273, in find_elements
    return self.execute(Command.FIND_ELEMENTS, {
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 416, in execute
    response = self.command_executor.execute(driver_command, params)
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/remote_connection.py", line 398, in execute
    return self._request(command_info[0], url, body=data)
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/selenium/webdriver/remote/remote_connection.py", line 420, in _request
    resp = self._conn.request(method, url, body=body, headers=headers)
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/urllib3/request.py", line 78, in request
    return self.request_encode_body(
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/urllib3/request.py", line 170, in request_encode_body
    return self.urlopen(method, url, **extra_kw)
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/urllib3/poolmanager.py", line 375, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/urllib3/util/retry.py", line 532, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/urllib3/packages/six.py", line 769, in reraise
    raise value.with_traceback(tb)
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 445, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/opt/rh/rh-python38/root/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 440, in _make_request
    httplib_response = conn.getresponse()
  File "/opt/rh/rh-python38/root/usr/lib64/python3.8/http/client.py", line 1322, in getresponse
    response.begin()
  File "/opt/rh/rh-python38/root/usr/lib64/python3.8/http/client.py", line 303, in begin
    version, status, reason = self._read_status()
  File "/opt/rh/rh-python38/root/usr/lib64/python3.8/http/client.py", line 272, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
20220117 12:28:29.015 - INFO - +--- END KEYWORD: SeleniumLibrary.Get Element Count (401)

Environnement :
Selenium version 4.1.1 running on docker (Grid architecture)
1 hub, multiple nodes.
All with docker selenium 4.1.1
Issue is not on one specific node.
Library installed :
/opt/rh/rh-python38/root/usr/bin/python3 -m pip list
Package                        Version
Appium-Python-Client           1.3.0
async-generator                1.10
attrs                          21.2.0
certifi                        2021.10.8
cffi                           1.15.0
charset-normalizer             2.0.7
cryptography                   35.0.0
decorator                      5.1.0
docutils                       0.17.1
h11                            0.12.0
idna                           3.3
kitchen                        1.2.6
outcome                        1.1.0
pip                            19.3.1
pycparser                      2.20
pyOpenSSL                      21.0.0
pytest-runner                  5.3.1
requests                       2.26.0
robotframework                 4.1.2
robotframework-appiumlibrary   1.6.3
robotframework-pythonlibcore   3.0.0
robotframework-seleniumlibrary 5.1.3
selenium                       4.1.0
setuptools                     41.6.0
six                            1.16.0
sniffio                        1.2.0
sortedcontainers               2.4.0
trio                           0.19.0
trio-websocket                 0.9.2
urllib3                        1.26.7
wsproto                        1.0.0
First I open an issue on selenium :
https://github.com/SeleniumHQ/selenium/issues/10258
It looks the issue may also be linked to Robotframework ?
Thanks for your help.

Based on the traceback the error is in SeleniumLibrary or Selenium. Could also be that the used browser driver crashes and thus the connection is closed, but the other end should in that case handle the situation better as well. Anyway, this doesn't seem to caused by Robot Framework.

@eravion eravion : I am also seeing the same error although i am using selenium=3.141 version. Did you find any resolution on this error?

Hello @swatisarraf : Still this issue from my side.
We are now in selenium 4.4, using the last version of docker on 40 nodes (20 Chrome and 20 Firefox).
We had this issue on all selenium 4.x version.
We have an average of 0.6% of this error by day.
No idea where the problem come from.


python script encoding suggestion

the python script  examples/asr/aishell/local/prepare_data.py ，
when I run in a chinese code envirionment, cannot run.
So I suggest add the following code to avoid the above problem:
 #!/usr/bin/python
 # -*- coding: utf-8 -*-

Thanks for pointing this out. We will make a pr to fix it.

@leixiaoning examples/asr/aishell/local/prepare_data.py haven't update the script utf-8 coding


refactor: make blockService and option parameter

BREAKING CHANGE:
The IPLD constructor is no longer taking a BlockService as its
only parameter, but an objects object with blockService as a
key.
You need to upgrade your code if you initialize IPLD.
Prior to this change:
const ipld = new Ipld(blockService)

Now:
const ipld = new Ipld({blockService: blockService})

@hugomrdias Please have a look (I couldn't add you as a reviewer). This is part of the options work we were talking about last week.

@alanshaw your comments are also welcome.


[Bug]: GetNickName code is not correct

Language
Javascript/Typescript
Version
latest
Description
This is an issue of the code sample in the default template, In both JS and Python template.

Reproduction Steps
Create a new teams app by using the default template (Custom Copilot => AI Agent) and check the code in `src\app\app.ts`.

export async function getNickname(
  context: TurnContext,
  state: TurnState,
  parameters: NicknameParameters
): Promise<string> {
  const nicknames = {
    "San Francisco": "The Golden City",
    "Los Angeles": "LA",
  };

  return nicknames[parameters.location] ?? `No nickname for ${parameters.location} found`;
}

Hi @chenxizhang, it looks like you are using a template from https://github.com/OfficeDev/Teams-Toolkit-Samples. We don't manage those samples. Please file your bug there :)


vue SSR webfontloader = font cache

What problem does this feature solve?
Hello, i don't can started webfontloader   vue ssr, any body know how it work? I need CACHE for fonts.
What does the proposed API look like?
error

Hi, thanks for your interest but Github issues are for bug reports and feature requests only. You can ask questions on the forum, the Discord server or StackOverflow.


Abort Head Using Reference Scripts

Marked as ready to have CI build and report benchmarks on it.

In principle, only remains to adjust and fix the demo.

Aaaaaand... the various dozen of TODOs that we've added along the way...


NavigationView Selection not cleared while setting SelectedItem property as null

Describe the bug
NavigationView Selection not cleared while setting SelectedItem property as null. In NavigationView, we have maintained a listview and its menu items. If we select listview items then we have set the NavigationView SelectedItem as null. The selected item property updated properly but selection UI not cleared.
Steps to reproduce the bug

Run the sample.
Now select datagrid item
then select home item, while selecting home item we have set NavigationView selecteditem as null.
Note, datagrid selection not cleared while setting home list view item.

WinUISBNavigation (4).zip
Expected behavior
Selection should be cleared while setting NavigationView selecteditem as null.
Screenshots
NA
NuGet package version
WinUI 3 - Windows App SDK 1.1.5
Windows version
Windows 11 (22H2): Build 22621
Additional context
No response

I cannot reproduce the bug. Clicking the button cleans up the NavigationView selection.
    <NavigationView>
        <NavigationView.MenuItems>
            <NavigationViewItem Icon="Play" />
        </NavigationView.MenuItems>
        <Button x:Name="myButton" Click="myButton_Click">Selection Clear</Button>
    </NavigationView>

    void MainWindow::myButton_Click(IInspectable const&, RoutedEventArgs const&)
    {
		Content().as<Controls::NavigationView>().SelectedItem(nullptr);
    }

@sotanakamura, have you checked the sample attached in the description? Also, please find the video for reference further.
https://user-images.githubusercontent.com/92976485/224474875-746f9fbf-05f3-4f30-bf5f-8b0a4d18de2e.mp4

Can you share a minimal code to reproduce the bug? Listing up items in XAML is preferred.

If you want to nested navigation items, please use this code.
<NavigationView>
    <NavigationView.MenuItems>
        <NavigationViewItem Content="Home"/>
        <NavigationViewItem Content="Account">
            <NavigationViewItem.MenuItems>
                <NavigationViewItem Content="Mail"/>
                <NavigationViewItem Content="Calendar"/>
            </NavigationViewItem.MenuItems>
        </NavigationViewItem>
    </NavigationView.MenuItems>
</NavigationView>


Sema: Don't complain about internal type aliases referenced from @inlinable functions in Swift < 4.2

@swift-ci Please smoke test


chore: bootstrap releases for path: .

Configuring release-please for path: .

Codecov Report

Merging #23 (1ff004c) into main (6aad0d8) will increase coverage by 0.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main      #23      +/-   ##
==========================================
+ Coverage   63.24%   63.26%   +0.01%
==========================================
  Files         124      124
  Lines       16740    16740
==========================================
+ Hits        10588    10590       +2
- Misses       5617     5620       +3
+ Partials      535      530       -5

Impacted Files
Coverage Δ

internal/storagenode/logstream/sequencer.go
89.65% <0.00%> (-2.88%)
:arrow_down:

internal/storagenode/logstream/committer.go
82.91% <0.00%> (-1.43%)
:arrow_down:

internal/metarepos/report_collector.go
77.67% <0.00%> (-0.28%)
:arrow_down:

internal/metarepos/raft.go
79.64% <0.00%> (+0.41%)
:arrow_up:

internal/metarepos/storage.go
81.37% <0.00%> (+0.78%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Could not handle trade request: Failed to open new position: Coordinator cannot trade with more than their total collateral in the DLC channel

{"error":"Could not handle trade request: Failed to open new position: Coordinator cannot trade with more than their total collateral in the DLC channel: margin (1167041) > collateral (489594) + order_matching_fee (7002)"}
Traded a couple of times, and then went for the max trading amount. Lesser amount are then not working either anymore.

How to reproduce:

open channel with $1000
close position
open new position with max amount (for me it was $970) with leverage 3
See error:

{    "error":"Could not handle trade request: Failed to open new position: Coordinator cannot trade with more than their total collateral in the DLC channel: margin (1165571) > collateral (1144725) + order_matching_fee (6993)" }


[STYLE CHANGE] Improving Timer in Pomodoro break

Description:
Changing styling of timer on Pomodoro Break page
Reason for Change:
The timer in Pomodoro break is pretty simple. It styling can be improved.
Current Styling:
The styling of timer is basic right now.
Proposed Styling:
I want to change the timer to following style :

Priority Level (optional):

[ ] Low
[x] Medium
[ ] High

Timeline (optional):
Within 4 days of opening this issue
Possible Implementation Approach (optional):
I will implement the above style using CSS and JavaScript

yes go for it!


update readme to something more appropriate

https://stackoverflow.com/a/56577320/314211
On the other repositories you have to add this template repository as a remote.
git remote add template [URL of the template repo]

Then run git fetch to update the changes
git fetch --all

Then is possible to merge another branch from the new remote to your current one.
git merge template/[branch to merge] --allow-unrelated-histories


Cookiecutter default list selection

Fix #1799
Also updates git clone implementation to fix tests that were passing a mock redirector, ending up with null StandardErrorLines.
By the way, cookiecutter always uses the first entry in a list as the default.
I considered having an extra combo box item (first in list) for selecting default value (basically treat it as 'unset'), but since that would always be the same as the second item (the true first item in the list), there didn't seem to be much benefit.

👍


Initial message from progressStart isn't shown

Refs: https://github.com/microsoft/vscode/issues/92914
If I sent a progressUpdate with a message, that displays properly, but if I send a message initially and never update it then it doesn't appear to get shown.

Good catch! Yeah I missed that case. Assigning to March to try to fix it.


Feature request: reboot server button

I've run into some issues in the last few months that I think might (at a guess) be remedied by restarting the server.  If my guess is right, a reboot button in the Advanced tab would be handy.

I think this shouldn't be needed anymore: I've set it to automatically restart the service daily at 3am.


Add fitness icons -> running, rowing, hike and optimise walk

In preparation for @dodoradio steroid fitness app.

These look awesome! Thank you


Add workflow to label pull requests

Issue #, if available:
Offline discussion from #1238. Risk for malicious actors contributing code to run on AWS's GitHub Action compute is mitigated by requiring maintainer approval to run workflows; however, this requires changes to GitHub Actions to be monitored by maintainers for malicious changes to workflows with write permissions. It would be helpful to auto label pull requests with github_actions for maintainers to more quickly easily the changes need to be thoroughly examined for malicious contributions.
Description of changes:
This change adds a GitHub Actions workflow to label new pull requests with the following labels:

documentation - updates to **/*.md
go - updates to **/*.go
testing - updates to **/*_test.go
github_actions - updates to .github/
benchmarking - updates to benchmark/
dependencies - updates to go.(mod|sum)

Testing performed:
Limitations:

Because the new pull requests workflow depends on mainline configuration for labels to avoid checking out code from the pull request branch, a risk mitigation for pwn pull requests, the workflow will not run on the contributing pull request which adds the workflow.

Alternatives considered:

Variations to the label logic:
a. Requiring all files in a glob to match a label instead of any file.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

github_actions - updates to .github/

I think the label for this should be a bit more explicit in ensuring that we are more careful with these PRs. Perhaps an extra label like needs-additional-review for external contributors? (Is that even possible?)
I guess my only concern is that we might forget what the label means down the line, so we should just be a little more explicit on which parts need some scrutiny.


Anaconda theme as a conda package

Following the same pattern than nb_config_manager and nb_conda_kernel (regarding the activation), but putting the custom files on the prefix/etc/jupyter.

ping @mmarchetti @malev

Merging this now...


improvement(re-ordering of components)

The components can now be reordered using drag and drop.

The dragged component will be re-ordered only when it crosses half of the next component present to it. As the next component can be present on the right or left and also top or bottom. We have to check both the x-axis and y-axis of the next component while dragging. thus while dragging from top to bottom, Not only y-axis middle is checked but also x-axis is checked. Same if we drag component from left to right, Not only x-axis is checked but also y-axis is checked.This leads to contradiction

You might want to rethink the implementation.
can we get inspiration from
https://react-dnd.github.io/react-dnd/examples/sortable/simple

This is implemented same way as that only bro.


Some suggestions of code

Here should be written as a virtual functions instead of function pointers:
https://github.com/MCUmbrella/ProjectNuma/blob/19410e132a90f4abb481c7bd0b0197e476113461/src/Main.cpp#L50-L56

eg.
virtual void beforeTick() = default;

than Player inherits Entity and overrides beforeTick like:
void beforeTick() override { // do something }

Implementation should be moved to the other .h/.cpp files.

suggestion1 is nice but

this is wrong usage
virtual functions in cpp are like interface in java

i know this is wrong usage and im now asking how to change these lines to make them fit your changes

in this case, you should override afterTick in Bullet
eg.
class Bullet {
public:
    void afterTick() override { --this->hp; }
}

我是想只让某个特定的Bullet对象覆盖父类的afterTick函数，有没有办法实现？
还有上边的这句virtual void beforeTick() = default;
编译器会报错：Only special member functions may be defaulted
所以我现在只能写成virtual void beforeTick(){}

噢，第一个应该是 = 0;
如果实现不一样的话就没办法这样用
不过可以把函数指针改成std::function对象

issue里描述的问题基本上全解决了


Is possible to sign a message using the wallet-core SDK?

I am creating an app that is a wallet too and I need to be able to sign a message like on this website:
https://app.mycrypto.com/sign-message
I tried using the sign message provided in the SDK but was not successful, can you give me some sample code of how do it from an HDWallet?
let wallet = HDWallet(mnemonic: "ripple scissors kick mammal hire column oak again sun offer wealth tomorrow wagon turn fatal", passphrase: "")!
let etherAdress = wallet.getAddressForCoin(coin: .ethereum)
let privateKey = wallet.getKeyForCoin(coin: .ethereum)
let message = "AAABfSVYpi0Ou1szwloATw".data(using: .utf8)!

let sig3 = privateKey.sign(digest: message, curve: .secp256k1)!
print("### ether: \(etherAdress)")
print("### sig3: \(sig3.hexString)")

Using this code and comparing it to the website the output is diferent.

Take a look at this example: https://github.com/trustwallet/trust-web3-provider/blob/master/ios/TrustWeb3Provider/DAppWebViewController.swift#L240

I am using wallet-core to create a wallet-like app, I am not using DApp, there is some way of doing it directly without using Dapp?

That's not dapp code, but swift code using wallet core to sign ethereum message

It worked, thank you, I was struggling a lot to implement it.

It worked, thank you, I was struggling a lot to implement it.

请问你最后是怎么完成的?我现在也遇到了同样的问题

It worked, thank you, I was struggling a lot to implement it.

May I ask how did you end up doing it? i am having the same problem now


Implement wordcloud extractor for csv files

Input - a csv fie with 2 columns nominal and quantitative
term, count
apple, 2
banana, 5
strawberry, 8
Output - Generate vega spec and submit it as visualization data.
Steps to reproduce:

Upload an appropriate csv file
Run the extractor.

closing this since it's migrated to https://github.com/clowder-framework/clowder2-demos/pull/3


Show line number of failing expectation

it 'should not do anything' do
  expect(did.length).to eq(1)
  do_something
  expect(did.length).to eq(1)
end

When this fails, I get
Failure/Error: expect(did.length).to eq(1)

       expected: 1
            got: 0

       (compared using ==)

Is there a way to know which expect failed? Maybe do_something did something it wasn't supposed to or my initial assumption is wrong.
I'm curious if there's some expect failure line number option to save me the headache of trying to comment out expects and figuring out which failed.
rspec-core 3.8.2
ruby 2.3.8p459

--backtrace will list the stack of the failure, but not prettily, as an aside I'd probably write your particular case as:
expect { do_something }.to_not change { did.length }

Which would tell you what went wrong

Thanks for the tip, I still think navigation would be easier if we provided the expect line number in the output somewhere (without backtrace). What do you think?

I'd take a look at any PR adding this for sure, don't have the time to look at it myself :)

is this done ?

Apparently not.

can I work on this one?

Go for it, @jesrodri

I was looking at this issue and it already show in the output the line where the expect failed, did I miss something? :monocle_face:
Failures:

  1) Example when something does something
     Failure/Error: expect(my_number).to eq(1)

       expected: 1
            got: 2

       (compared using ==)
     # ./spec/lib/example_spec.rb:34:in `block (3 levels) in <top (required)>'

Fair enough. Thanks for bringing this up.


Executable doesn't accept arguments in Windows

I don't know if I am doing something wrong (probably), but I can't get the executable to accept arguments, not even --version or --help, it just doesn't do anything if I include an argument.
Here is an example:

And, as you can see here, if I don't use any argument it runs properly.

Should in theory be fixed by #680 in the current opengl branch. Should be worth another try from someone running windows.

Seems to work with 0.6.0.
Thanks!

This has been fixed in main. Please reopen if you continue to see this issue.


Weather temperature preference

This project only allows for the use of °C (celcius) unit of temperature. A feature to allow users select their preferred unit either °C or °F would be way better.

[ ] Implement feature to toggle between °C and °F

@mayokunthefirst  I would like to work on this, if this open for contribution, please assign it to me

Helllo @ch8n thank you so much for checking out this project and offering to work on this issue! I would assign this to you right away! 😃

Hi @ch8n , thank you for offering to get this done, however, this has been fixed :)


chore: use biome for code formatting

This takes ~50ms on my machine :exploding_head:

closes #2366
Replacing spaces with tabs won't be done right here, right now.
eslint and biome are reconciled
~biome check fails because of typescript errors - we can either fix those or find a way to ignore it~

@B4nan I rebased this to current master. Shall we?


New State Manager draft

Dumping my thoughts here for discussion.
Note: This is a Phaser 2.2 level change, not part of 2.1.x.
At the moment Phaser states work but are too limited in their nature. There is also one core game loop that is responsible for updating all of the key systems, such as the Tween manager, Sound manager, etc.
The proposal being drafted involves two changes:

The State now owns the systems, not the core Game. So a State has its own Tween Manager, Sound Manager, etc that belong exclusively to it. Each Manager is modified to allow multiple instances of it to exist.

States will be able to spawn Child States. A Child State is defined in two ways:

2a) It runs in parallel with the parent State and any other Child States.
2b) It optionally shares the same system managers as its parent, or it has its own.
Child States will be defined in a similar way that States are currently. The difference being that you can stipulate which managers are created for them. Equally a Child State will be able to be timesliced: that is you can define its rate of update. They can also be paused, resumed and destroyed.
To put this into a game context:
A Game State could have several Child States that handle different, but specific tasks, that you may require to happen during your game without closing the Game State itself.
For example an in-game shop, a settings panel, an inventory selection screen, a cut-scene, a level selection screen, a game world map. These are game-level events that need to occur without the Game being destroyed. In some cases the game will need to pause when they are active. In others the game can carry on running in the background.
Potential Issues
Some managers aren't good at sharing resources/events, for example the Input Manager.
It's a big rewrite.

I'm closing this off in order to tidy up the issues list. This will form part of Phaser 3 now.

Are there docs/proposals somewhere for the new Phaser 3 state manager?

Not yet, we're still discussing internally - will open up soon, likely on the phaser3 repo.


Add integration test for signup

Add integration test for signup.
For #63

build fails

@appleboy Fixed now.

LGTM

I will give this LGTM even there are some improvements. but this is a good beginning.

LGTM


Fixed NPE issue

Fixed apache/shenyu-dashboard#438
Before:

After:

Make sure that:

[x] You have read the contribution guidelines.
[ ] You submit test cases (unit or integration tests) that back your changes.
[x] Your local test passed ./mvnw clean install -Dmaven.javadoc.skip=true.

Codecov Report
Attention: Patch coverage is 0% with 15 lines in your changes are missing coverage. Please review.

Project coverage is 61.57%. Comparing base (c1abc7b) to head (779a10f).
Report is 2 commits behind head on master.

Files
Patch %
Lines

...pache/shenyu/admin/transfer/DiscoveryTransfer.java
0.00%
9 Missing and 6 partials :warning:

Additional details and impacted files
@@             Coverage Diff              @@
##             master    #5530      +/-   ##
============================================
+ Coverage     61.54%   61.57%   +0.02%
- Complexity     8832     8838       +6
============================================
  Files          1261     1261
  Lines         39230    39245      +15
  Branches       3723     3723
============================================
+ Hits          24145    24165      +20
+ Misses        12911    12902       -9
- Partials       2174     2178       +4

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


[cosmetic]superset and dark mode? chrome bug? and truncation..

Search dropdown background color black - (which used to be white or none) is added and width is cut.

This seems to be your computer's dark mode setting correctly applying itself to chrome, which in turn applies this styling to native input elements.

is it the only thing that turns black in the product when dark mode is on? lol

It's possible, at least for some browsers. Styling these things gets a little weird. I would say it's a high-risk, low ROI change, until we have visual regression testing in place to make sure we don't break something someplace else in the UI by accident.

p9 makes sense lol


v2021.11.9

Sorry I'm kinda late. Been waiting for @przebor review
Looks like we don't need this anymore, but thank you for your contribution!


Use crosslink_seed to update CrystallizedState.current_shuffling

Issue
The spec uses a crosslink_seed and reference to when the cross_link_seed_last_reset to implement an exponential backoff on how often the shuffling gets updated. The exponential backoff ensures that, if there has not been a crosslink for N epochs, the next committee will have ~N/2 epochs to process through and verify the ~N epochs worth of history for that shard, so the amount of work per second that the committee nodes need to perform is bounded.
Proposed Implementation
These are the general details pulled from the spec. Ensure that all details around shuffling and crosslink_seed are met.

add the following two fields to CrystallizedState

    # Used to select the committees for each shard
    'crosslink_seed': 'hash32',
    # Last epoch the crosslink seed was reset
    'crosslink_seed_last_reset': 'int64'

At the epoch transition, If current_epoch - crosslink_seed_last_reset is an exact power of two, then update the current_shuffling with the following:

temp_seed = blake(crosslink_seed + bytes([log2(current_epoch - crosslink_seed_last_reset)]))
crystallized_state.current_shuffling = get_shuffling(temp_seed, len(new_active_validators))

Only do a dynasty transition if the height of the most recent recorded crosslink for every shard is greater than or equal to crosslink_seed_last_reset
Set crosslink_seed = active_state.randao
set crosslink_seed_last_reset = current_epoch

Question
Should we prevent finalization "if the height of the most recent recorded crosslink for every shard is greater than or equal to crosslink_seed_last_reset" or just prevent a dynasty transition?

This exponential backoff is not currently in spec.


Add CoverageHelper for coveralls

Not all files are required, require them to get accurate coverage.

Can't we just turn on eager loading?

@matthewd Will eager loading load everything, even if it's not in a standard module-path mirror thingy.
Also what about gems directory? (we want that too from a coverage perspective)

Also also spa_ui, tools?

Fair point... I'm not sure whether we have lib set up to autoload, and it certainly won't pull the gems.
(However, I don't think we should pull the gems, at least until we're reporting their tests to coveralls. And even then, they should take care of themselves.)
spa_ui doesn't contain any ruby code anyway.
And I doubt indiscriminately requireing the scripts in tools will end very well.

And I doubt indiscriminately requireing the scripts in tools will end very well.

Oh that

Based on https://github.com/ManageIQ/manageiq/pull/3959#issuecomment-134374257

"Coverage increased 0.03%"...  that can't be right.

@miq-bot add_label wip

@miq-bot rm_label wip

@matthewd @Fryguy Please review.  This brings us up to 138451 total lines of code on Coveralls.

@brandondunne Are you missing the actual coverage helper?

@brandondunne Are you missing the actual coverage helper?

Nevermind, I see what you did there.

Nice work @brandondunne @matthewd @Fryguy