Fix/30042 fix lhn previews and report actions v2

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/30042
PROPOSAL: https://github.com/Expensify/App/issues/30042#issuecomment-1792625104
Tests

Create an iouReport

Global Create > Request Money > $50 > choose a person > Confirm
Land in the DM
Look at the LHN row to observe the preview

request action preview (requestor view)

Tom Rhys Jones owes $50.00
requested 10.00

request action preview (payer view)

Tom Rhys Jones owes $50.00
Agata: requested 10.00

DMs:
owed iouReport being previewed (Agata view - DM)

Tom Rhys Jones
Tom Rhys Jones owes $50.00

owed iouReport being previewed (Tom view - DM)

Agata Kosior
Tom Rhys Jones owes $50.00

Create an expenseReport

Create a workspace if you need to
Global Create > Request Money > $50 > choose the workspace > confirm
Land in the workspace chat
Look at the LHN row to observe the preview

Request action preview (admin viewer)

Duraflame owes $100.00
Tom: requested $50.00

Request action preview (requestor viewer)

Duraflame owes $100.00
requested $50.00

owed expenseReport being previewed (member view - workspace chat)

Duraflame
Duraflame owes $50.00

owed expenseReport being previewed (admin view - workspace chat)

Tom Rhys Jones
Duraflame owes $50.00

Pay an iouReport

Navigate to the iouReport view
Click Pay elsewhere green button at the top right of the report

paid action preview (requestor view)

Tom Rhys Jones paid $50.00
Tom: paid $50.00 elsewhere

paid action preview (payer view)

Tom Rhys Jones paid $50.00
paid $50.00 elsewhere

paid iouReport being previewed (Agata view - DM)

Tom Rhys Jones
Tom Rhys Jones paid $50.00

paid iouReport being previewed (Tom view - DM)

Agata Kosior
Tom Rhys Jones paid $50.00

Pay an expenseReport

Navigate to the expenseReport view
Click Pay elsewhere green button at the top right of the report
Observe the system message added to the expenseReport
Observe the LHN preview

Paid action preview (admin viewer)

Duraflame paid $100.00
paid $100.00 elsewhere

paid action preview (requestor viewer)

Duraflame paid $100.00
Agata: paid $100.00 elsewhere

paid expenseReport being previewed (member view - workspace chat)

Duraflame
Duraflame paid $50.00

paid expenseReport being previewed (admin view - workspace chat)

Tom Rhys Jones
Duraflame paid $50.00

Add a comment
comment preview (sender view)

Tom Rhys Jones owes $50.00 <--- note: this is obviously variable dependent on if the report title is owed or paid
blah, blah, I love apples!

comment preview (receiver view)

Tom Rhys Jones owes $50.00 <--- note: this is obviously variable dependent on if the report title is owed or paid
Tom: blah, blah, I love apples!

comment preview (comment sender viewer)

Duraflame owes $100.00 <--- note: this is obviously variable dependent on if the report title is owed or paid
blah blah, I love bananas!

comment preview (comment receiver viewer)

Duraflame owes $100.00 <--- note: this is obviously variable dependent on if the report title is owed or paid
Tom: blah blah, I love bananas!

Verify that other previews are not affected
Verify that the amount changes properly (i.e. when requesting in other currency)

Go to 1:1 DM.
Click + > Request money.
Create a manual request using a different currency.
Click on the IOU preview to open IOU report.
Note that the amount for the IOU report in LHN shows the local currency instead of the requested currency.

or when changing the amount

Go to 1:1 DM.
Click + > Request money.
Create a manual request.
Click on the IOU preview twice to open IOU details page.
Click Amount and change the amount.
Save the new amount.

Verify that app doesn't crash on requesting money, going offline/online
Verify that the preview is displaying correctly for the workspace member

Create a workspace in admin and invite a member
In member account , Global Create > Request Money > $50 > choose the workspace > confirm
As a admin navigate to the expenseReport view
Click Pay elsewhere green button at the top right of the report
Observe the system message added to the expenseReport
Login to member account and observe the LHN preview

Verify that the app doesn't crash when requesting from workspace second time

Request 1:1 money as employee from the admin
Do second request 1:1 money as employee from the admin

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

Offline tests

Create a request offline and verify the it's displayed correctly
Pay for a request offline and verify the it's displayed correctly

QA Steps

Same as in Test Steps

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

PR Author Checklist

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

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

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

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

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

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

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

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

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

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes

[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)

[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

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

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

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

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

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

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

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

I don't know why but I'm having problem with opening the app on iOS Safari
EXPENSE REPORT
Request action preview (admin viewer)

Duraflame owes $100.00
Tom: requested $50.00

Request action preview (requestor viewer)

Duraflame owes $100.00
requested $50.00

Paid action preview (admin viewer)

Duraflame paid $100.00
paid $100.00 elsewhere

paid action preview (requestor viewer)

Duraflame paid $100.00
Agata: paid $100.00 elsewhere

comment preview (comment sender viewer)

Duraflame owes $100.00   <--- note: this is obviously variable dependent on if the report title is owed or paid
blah blah, I love bananas!

comment preview (comment receiver viewer)

Duraflame owes $100.00   <--- note: this is obviously variable dependent on if the report title is owed or paid
Tom: blah blah, I love bananas!

IOU REPORT So that same logic will apply to iouReports as well. For brevity, the below examples are just Agata looking at a variety of actions Tom took only to highlight the : in use.
request action preview

Tom Rhys Jones owes $50.00
Tom: requested 10.00

paid action preview

Tom Rhys Jones paid $50.00
Tom: paid $50.00 elsewhere

comment preview

Tom Rhys Jones owes $50.00  <--- note: this is obviously variable dependent on if the report title is owed or paid
Tom: blah, blah, I love apples!

receiver

sender

DM / WORKSPACE CHAT
As for the DM/Workspace Chat LHN preview message when the expense/iouReport is the lastMessage being previewed, those don't use a colon separator because none of the chat participants are the "author" of the report preview component being previewed. So those just use the report title of the expense/iouReport being previewed.
owed iouReport being previewed (Agata view - DM)

Tom Rhys Jones
Tom Rhys Jones owes $50.00

owed iouReport being previewed (Tom view - DM)

Agata Kosior
Tom Rhys Jones owes $50.00

paid iouReport being previewed (Agata view - DM)

Tom Rhys Jones
Tom Rhys Jones paid $50.00

paid iouReport being previewed (Tom view - DM)

Agata Kosior
Tom Rhys Jones paid $50.00

owed expenseReport being previewed (member view - workspace chat)

Duraflame
Duraflame owes $50.00

owed expenseReport being previewed (admin view - workspace chat)

Tom Rhys Jones
Duraflame owes $50.00

paid expenseReport being previewed (member view - workspace chat)

Duraflame
Duraflame paid $50.00

paid expenseReport being previewed (admin view - workspace chat)

Tom Rhys Jones
Duraflame paid $50.00

MacOS: Desktop

Starting review now

@koko57 One change requested, there is an extra space in the IOU/ expense report in front of the paid message because there used to be name

You can see it in the video above too

@mountiny as even in this snippet the payer's name could be an empty string and we're using it for this 3 translation keys I will add condition to display them with or without additional space

Reviewer Checklist

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

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

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

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

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

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

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

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

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

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

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

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

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

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

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

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

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/mountiny in version: 1.4.19-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


Add nox builds for our docs

This adds a quick way to auto-generate the documentation via one command:
nox -s docs

or
nox -s docs_live

after a request from @damianavila :-)
the implementation is a little bit hacky because nox doesn't handle native conda environments, so I split our docs/environment.yml file into a dedicated docs/requirements.txt file that we now use on its own.

Just updated from master to fix a version conflict, will merge now, thanks!


Converts an if-else to switch

These stack of if-elses are really a switch.
Its also a TODO..

I think code changes don't have the same logic.

This could indeed work as a switch statement, but not like how it's done in this PR. We would need to reverse the order and make all cases fallthrough.

omg i thought its an if-else...god

@aaronfranke I thought the same thing as you but didn't do it because I wasn't sure what to put in default case. Nothing?


addMockModule not overriding with manually bootstrapped applications.

When calling a addMockModule with a manually bootstrapped application, I am unable to override existing modules.
The mocked modules code does execute, but only after the real modules code has executed.
In issue #66 I see that there are issues with manually bootstrapped applications; however,
I am not getting any errors. I do get different behavior when working with apps which are bootstrapped with ng-app, in which the real modules code is not executed at all. Could this be an issue with using a manually bootstrapped application?

Did you get resolved?

I am also having the same issue where requireJs is used and need to manually bootstrap.
ApacheTyler, do you a solution, if yes, could you please share the code?
juliemr, is there a plan for the Protractor to support manual bootstrap in the future?

I was not able to find a solution.

Thanks for letting me know, I did not find anything either so I decided to give up using requireJs.

@ApacheTyler Did you test with ignoreSynchonization disabled before call browser.get? I tested here and works well!

@americoneto1 I havn't revisited this issue in over a year; but I believe so. Thanks for the update!


Fixes variable name error

Code was using pos + loc, leading to errors. All changed to pos now.

Sorry for creating multiple pull requests, but I'm fixing these errors in the examples as I find them.

Creating a single pull request for multiple changes. Closing this one.

Creating a single pull request for multiple changes. Closing this one.


Air Purifier is added as a switch and not a fan type entity in HA

Describe the bug
An air purifier should ideally be shown as a fan just like the Tuya cloud integration but it is exposed as a switch instead. This makes it pretty hard to meaningfully expose the purifier with any additional options using homekit bridge. One also loses the ability to have fancier cards for this entity in HA dashboards.
To Reproduce
Add the purifier, notice that it's exposed as a switch instead of a fan.
Expected behavior
Ideally, it should be exposed as a fan device type

There are insufficient details here to understand what your bug is.

Unlike the 22 other purifiers supported by this integration, the Essentials purifier does not appear to offer any control beyond the power switch. Since there is no speed control, or presets, using a fan just to control the power switch does not make sense.

Thanks a lot for taking care of this @make-all


login error via github Oauth to the subdomain branch

gatsby width netlify cms.
I wanted to run a/b test two different branch on subdomains, and change content via netlify cms - changed branch on  backend setting in config.yaml, add branch subdomains and tried to login cms on subdomains (test.mysite.com), but unfortunately it only write 'authorized' but didn't login
is it even possible?

please help!!)
ps: sorry for my English )

just used git gateway, according to answer


feat(fal): automatically lower max/min_concurrency for everyone other than falbot

@chamini2 This is a convenience thing that was requested before. No way to show warnings from the backend to the SDK user, so the only other option than this pr would be to do that in the backend. I'm alright with that approach, happy to switch to that if you are in favor of that too.

can we not run checks for these when people are doing fal run?

I don't expect anyone to deploy anything from non-fal bot accounts. fal run covers %99 of the use cases

@isidentical Adjusted.

If only fal run is of concern then we could do that all on the backend indeed. And can even emit a log message with a warning from there. If everyone is ok with that, I'll send a PR instead of this one.


[Dialog] Add onClosed hook prop

Description
Add onClosed hook prop to the Dialog component: a function that gets called once the dialog has finished its closing animation.
Problem description
The need for an onClosed hook of sorts arises (for me at least) when trying to integrate material-ui with redux. Since showing/hiding the dialog is dictated by the redux store state, and in turn by the dispatching of actions, one would need to:

show Dialog component when an action is dispatched that changes a slice of the state into something like: state.dialogShown = true
once Dialog finishes its hide animation, dispatch a new action that reverts the store back to its initial state, i.e. state.dialogShown = false

If the action in step 2 is dispatched before the animation finishes, the Dialog component will be detached from the DOM abruptly, hence no close animation will be visible to the user. So one would need to know when the animation is done, in order to dispatch the action. In other words, onRequestClose alone is not enough for this purpose.
A dumb workaround would be to simply wait for 450ms inside onRequestClose which is unreliable.
A more reliable solution maybe would be to change the componentWillLeave lifecycle method of the TransitionItem component used internally by Dialog into something like:
  componentWillLeave(callback) {
    this.setState({
      style: {
        opacity: 0,
        transform: 'translate(0, 0)',
      },
    });
    const { onClosed } = this.props;
    this.leaveTimeout = setTimeout(() => {
        callback();
        onClosed();
    }, 450); // matches transition duration
  }

For the above to work the onClosed prop would need to be passed down by Dialog & DialogInline into TransitionItem.
Versions

Material-UI: 0.17.0
React: 15.4.2
Browser: Chrome

This topic has already been discussed in #3618.

Great, thanks for pointing me to the right discussion @oliviertassinari !


Fixing typo on cloudflare_zones data resource documentation

Changing example resource from cloudflare_zone to cloudflare_record as all the attributes of the resource match a record. I believe this is a typo.

thanks @Asteao! 👏


Memory leak in runner.cc file

please check this file:
https://github.com/flutter-tizen/flutter-tizen/blob/master/templates/ui-app/cpp/src/runner.cc
int main(int argc, char *argv[]) {
auto app = new App();
return app->Run(argc, argv);
}
there is new a memory, but no delete.  memory leak.
so can change it like this:
int main(int argc, char *argv[]) {
App app;
return app.Run(argc, argv);
}

Good point! Could anybody prepare a fix?

Good point! Could anybody prepare a fix?

Ok, I will fix it.

#209


Creation of an About page

The Smell Explorer should have an About page, link from https://explorer.odeuropa.eu/ and probably permanently from the top menu. The writing of this About page should be a topic for the upcoming plenary meeting hosted in EURECOM in September 2023. Presumably, we should explain some key concepts of the data model in this about page such as (not exhaustive list):

The triangle between the 'smell' (the main description that is being searched), the 'emission/source' part responsible for the smell and the 'perceiver' responsible for this olfactory experience.
The difference in the tool between a Full Text search and a Concept search (and how one can used the filters to narrow down the collection of smells)

cc @Ileemans

Closing this issue as we have now #103


Improve process to pass box shadow color.

The fact that box_shadow color a float * instead of just a float [4] is problematic.
Wrapping that in FFI is clunky because essentially in zig I need to wrap it as: *f32[4] which might as well just be f32[4].
Not to mention other languages where that kind of pointer arithmetic is usually not suggested. Eg: Python
Why can't we approach it as just float [4]?

We could use the wlr_render_color struct instead :)

Lol, apparently I fixed this back in January xD


After selecting apps with "select-apps", prompt the user to run the prefill immediately

Released in https://github.com/tpill90/steam-lancache-prefill/releases/tag/v1.3.0


Workflow level Failures and Properties

Description
The current workflow activity does not provide enough detail of the workflow level, we may need an additional tab or modal that can pop up to show this level of detail such as

Why a workflow failed
What input and output properties are at the workflow level.

Impacts
Impacts the Workflow activity screen
Timeline
What's the timeline for this Epic, what resources are needed, and what might potentially block this from hitting the projected end date.
Open Questions
What technical or functional questions are needing to be answered to achieve this Epic
Acceptance criteria and scope
Define what is a must-have for launch and in-scope.

Feature
Given
When
Then

@BenjaminRuby @marcusdroy lets have a replay session to review and validate


A Question About Localization

I recently made a localization for the mod, but I found that the manual inside used hard code.
Can you put it to the language file?

I suggest you look at the branch "technomancy-1.11". I am actually already implementing that feature in 1.11. It is not released yet.

Sorry for my carelessness.


Implement Endpoint: /core/checksums

An artisan command to build the table of versions to checksums would be quite handy.

From docs:

Returns a JSON encoded array of file MD5 checksums for a given WordPress release / locale. Although english is the default, it's suggested to pass it for 100% compatibility with core.

Note that MD5 hashes are not cryptographically secure and should not be relied on to detect malicious changes to WordPress files.
Source: https://codex.wordpress.org/WordPress.org_API#Update_Check

I can only find plugin checksums code in the .org repo.  This is another /core API that's a black box.


feat: Add support for toggling torch

I should look into PR https://github.com/capacitor-community/barcode-scanner/pull/32. Then add support for iOS. And finally release it.

I'm very interested in this :)
Found out I can npm install git://github.com/capacitor-community/barcode-scanner.git#feat/torch
and then check out the repo elsewhere and build the library + copy in the resulting dist/ folder
Works on Android! (can only turn ON though, for some reason, turning off is a no-go :thinking: )

Works on Android! (can only turn ON though, for some reason, turning off is a no-go thinking )

Just found out how to fix the torch on/off and created PR https://github.com/capacitor-community/barcode-scanner/pull/73

Retired the previous PR and created the branch-clean https://github.com/capacitor-community/barcode-scanner/pull/75
feat/torch now would support both android and iOS.

Are there any plans of adding flashlight support to the plugin in the near future? It'd be a big help in the case of our application and although there are some PRs including these changes, they all concern version 1.2.1 of the plugin, which is incompatible with Capacitor 3.

Now I'm using @ionic-native/barcode-scanner.

Does this do the trick? https://github.com/capacitor-community/barcode-scanner/pull/78

I vote for closing my #75 and accepting #78, as it is more complete and looks like it's written by someone who actually knows swift :)

PR #78 is merged an 2.1.0 will be released next week


Collect and Organize Data for Remittances

Goal: Following the completion of reviewing existing papers and datasets related to remittances, collect the relevant/related information and organize it into a sorted list
Relevant resources: #6

Would also be helpful to determine which companies would have data for remittances throughout the country. We could try and speak with them to access the data.

http://www.inform-index.org/Subnational/Guatemala

has municipality specific data including a subsection on communications


⚠ Bofrost.com has degraded performance

In 76deb40, Bofrost.com (https://www.bofrost.com) experienced degraded performance:

HTTP code: 200
Response time: 1939 ms

Resolved: Bofrost.com performance has improved in 67e3804 after 8 minutes.


Survey Dashboard: Remove site nav on mobile

If we have all nav elements in the hamburger stack, we don't need to devote 20% of screen space to showing the covidcast tools.  I suppose we can keep the breadcrumbs on mobile, but we could think about reclaiming that as well.

closed via #700


Enterprise runners

What are permissions that are required to create personal access token for enterprise level runners
currently I have these permissions set
I'm getting this error
ERROR	actions-runner-controller.runner	Failed to get new registration token	{"runner": "enterprise-runner-ljwc6-tvj58", "error": "failed to create registration token: POST https://api.github.com/enterprises/****/actions/runners/registration-token: 403 API rate limit of 60 still exceeded until 2022-08-22 06:15:20 +0000 UTC, not making remote request. [rate reset in 23m51s]"}
github.com/actions-runner-controller/actions-runner-controller/controllers.(*RunnerReconciler).processRunnerCreation
	/workspace/controllers/runner_controller.go:247
github.com/actions-runner-controller/actions-runner-controller/controllers.(*RunnerReconciler).Reconcile
	/workspace/controllers/runner_controller.go:128
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.12.2/pkg/internal/controller/controller.go:121
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.12.2/pkg/internal/controller/controller.go:320
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.12.2/pkg/internal/controller/controller.go:273
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.12.2/pkg/internal/controller/controller.go:234

We are using github.infra.***.com should make any changes regarding API things??

@swathida-byte Hey. 403 API rate limit of 60 still exceeded seems to say that your request has been successfully authenticated but your quota is somehow super low(only 60 per 24h?! crazy!!).
What's github.infra.***.com? Is is any isolated or regulated variant of GitHub?

Github.infra..com is the enterprise server ,url looks something like this https://github.infra.*.com/ instead https://github.com/

@swathida-byte Ah, gotcha. It's your internal GHES instance, right?
I think you need to consult one of the admins of your GHES instant within your company, or your GitHub Enterprise support, to see what's happening and how to increase the API rate limit.
In other words, this doesn't look like an issue in ARC.

If API limit rate is increased then it works right?Nothing to do with permissions?

@swathida-byte Yeah- seems so to me. The error message doesn't mention any permission error.

It does not seem like an ARC issue.

@swathida-byte Sorry to say, but can we move this to Discussions? We explicitly say in https://github.com/actions-runner-controller/actions-runner-controller/issues/new/choose that we'd use Discussions for questions and user support. Making an exception makes Issues overloaded by a ton of questions and hide possible real bug reports which we need to handle in high priority 🙏

sure


Add Rake task for rubocop

With this we can manage manageiq-style and rubocop versions with bundler. To run rubocop use the rake task: bundle exec rake rubocop.

Hi @bdunne Would you mind doing a quick sanity check on how I've applied manageiq-style here? This SDK is being consumed by https://github.com/ManageIQ/manageiq-providers-ibm_power_hmc


General error fixes

Correction pass for error fixes in a lot of files.

Casing
Wrong path
Typos

lgtm


Update dts-functions.sh

Fixes (partially) #77 (there may be other platforms in the same situation)

@deeplow Thanks, @TomaszAIR @miczyg1. I guess one approval would be enough for this PR.

Change looks good, but other platform need it as well, yes. We will take care of the rest. Merging this one.

Rest fixed in https://github.com/Dasharo/meta-dts/pull/79, we will provide today new, fixed version of DTS.


Terminal doesn't print output from scripts\test anymore

VSCode Version: Master
OS Version: Windows
Terminal: PowerShell

Steps to Reproduce:

vscode workspace
execute scripts\test.bat

Observe: no dots are printed.

I can repro in a regular cmd.exe window. It looks like an issue with the test script itself.

It does print for me in PowerShell and PowerShell in Hyper.js but not in powershell in the terminal. So it does look like a terminal problem to me at least for PowerShell.

@dbaeumer it happens in a normal cmd.exe window though, fixing that would probably fix the problem in VS Code.

@Tyriar agree but there seems to be something fishy with the terminal in VS Code since it works in PowerShell native and in Hyper.js but not in our integrated terminal.


Java code of finding Day on given date.

💥 Proposal
(A clear and concise description of what the proposal is. You are given a date. You just need to returns the day on that date.)
For example, if you are given the date August 14 2017 , it should return Monday as the day on that date.
Have you read the Contributing Guidelines on Pull Requests?
Yes

💥 Proposal
(A clear and concise description of what the proposal is. You are given a date. You just need to returns the day on that date.)
For example, if you are given the date August 14 2017 , it should return Monday as the day on that date.
Have you read the Contributing Guidelines on Pull Requests?
Yes

/assign

/assign


We can simply the Worker SDK example for .NET 8 GA!

Type of issue
Outdated article
Description
For .NET 8, Web and Worker projects don't need the package mentioned here at all - we can condense this entire section down to just a note for Console projects if we want.
In addition, we can unify the output mentioned in this section to de-emphasize the /t:PublishContainer path in favor of leaning on -p PublishProfile=DefaultContainer instead!
This is all because last week we merged Worker SDK support for publish profiles (and thus the built-in containerization) to the .NET 8 GA SDK.
Page URL
https://learn.microsoft.com/en-us/dotnet/core/docker/publish-as-container?pivots=dotnet-8-0
Content source URL
https://github.com/dotnet/docs/blob/main/docs/core/docker/publish-as-container.md
Document Version Independent Id
401bc84b-9410-3583-91f6-88968654b588
Article author
IEvangelist

This work was already done.


Web: Composer shifts text cursor after tab loses focus

Describe the bug
When the window with the text composer loses focus (either different window or new tab), the cursor is moved from wherever it's position was to the end of entire written text, albeit n characters back where n is the number of lines (always minimum n=1). It gets a little finnicky when it lands on a line break (looks like line breaks count as two characters by my testing), and additionally this behavior is NOT exhibited when there is an @ towards a user written anywhere in the post. It is still affected by links in the post.
To Reproduce
Steps to reproduce the behavior:

Write "asdasdasd" in the text composer.
Change windows and then come back.
Notice how the text cursor is set 1 character from the end.
Repeat steps 1-3 for an additional new line with each new line corresponding to an additional character set back.
Observe how an @ fixes the behavior.

Expected behavior
The cursor should remain where it was left off.
Details
I've tested this in Chrome, Opera, and Firefox.

I can't repro. I believe I fixed this in https://github.com/bluesky-social/social-app/pull/1374 since the responsible code was likely the onFocus handler which I removed. If you can still repro please let me know!

@gaearon Looks to be fixed in #1374, yeah. Related issue with the emoji picker where clicking inside the picker to search immediately closes the picker on account of not having focus on the composer, but I'm not sure if that's already been reported.

@Juicysteak117 That is a completely different issue that was fixed in #1440

@ansh Great to hear, that one's been obnoxious. Thanks.


Full UTF-8 support

#46

Any updates?

The ball to merge this is not on my end :).
The failing test doesn't seem to be related to this PR (and it's present on both currently open PRs).


slice constructor inconsistent with python

While working on #4707, I noticed the slice constructor behaves differently in python code vs numba code. This occurs on bdd8e312a24c5b76e and v0.46.0. Here's a couple examples:
from numba import njit

def slice_no_args(): slice()
def slice_one_arg(): slice(10)

cslice_no_args = njit(slice_no_args)
cslice_one_arg = njit(slice_one_arg)

slice_no_args()
# TypeError: slice expected at least 1 arguments, got 0
cslice_no_args()  # Runs fine

slice_one_arg()  # Runs fine
cslice_one_arg()
# TypingError: Failed in nopython mode pipeline (step: nopython frontend)
# Invalid use of Function(<class 'slice'>) with argument(s) of type(s): (Literal[int](10))

I think I've figured out how to make the behavior more consistent and would be happy to open a PR. I wanted to get dev opinion on this first, since I'm not sure if changing slice() to an error would be breaking (update: it actually gets tested here).
I think the total changes would be:

Add a case for 1 argument here
Remove 0-arity signature and add a 1-arity signatures for None and int here

Thanks for the report. Looking at the known signatures:
Known signatures:
 * () -> slice<a:b>
 * (none, none) -> slice<a:b>
 * (none, int64) -> slice<a:b>
 * (int64, none) -> slice<a:b>
 * (int64, int64) -> slice<a:b>
 * (int64, int64, int64) -> slice<a:b:c>
 * (none, int64, int64) -> slice<a:b:c>
 * (int64, none, int64) -> slice<a:b:c>
 * (none, none, int64) -> slice<a:b:c>

explains the issues reported above. I just went and checked Python 2 to see if it was some inherited difference and it is not. I think fixing this to be correct is probably a good idea else people's code won't work if they turn off the JIT.

Great! I think I've got this fixed in a branch on my machine. The branch uses some of the testing code from #4707 so I'm thinking I'll wait on that first.


new query for feature-to-phenotype

similar to the gene-to-phenotype query, we really want any kind of sequence feature to phenotype query.  really, a "gene" is a specific kind of sequence feature here.
"feature" here are subclasses or instances of SO:0000110.
feature-to-phenotype relationships may happen directly, or the feature may be part of a genotype.
using the MGI data as an example
MGI:2172552 has_phenotype MP:0003727
and
MGI:2172552 has_alternate_part* MGI:1857543  #this is the feature
(in this gene: MGI:97451)

and we'd want the reciprocal ones too.

Implemented on rosie


Add message to Overview rewards section when all rewards are redeemed

The Issue
When all the rewards are redeemed, the Rewards box of the Overview page looks empty. We should add a message that there are no rewards available at this time (message on Rewards page is: "There are no rewards available at this time, please check back later.")

Steps to reproduce

Claim all rewards
Check Overview page

System Configuration

LBRY Daemon version:
LBRY App version:
LBRY Installation ID:
Operating system:

Anything Else

Screenshots

Fixed in #847


Make sure messages sent over push notifications are not marked as read

Because we do not sent the content of a message anymore over the push notifications, we should not mark them as read anymore.

Should have been resolved in f7474ff, if not please reopen.


[REQUEST][QUESTION]  Get only retweets

Is there a way to get only retweets of a user?

There are two ways, but both will give you just a few results and not as much as expected.
Way 1
twint -u username --retweets
(you'll have to clean your output, there's a flag to recognize if a tweet is a retweet or not)
Way 2
twint -u username --native-retweets


nrf51 series

Is there an alternative package for the nrf51 series, or how difficult would it be to support?

There's no crate for it out there AFAIK.
It shouldn't be too hard, mostly:

Add headers for nrf51 softdevices in /softdevice (S110, S120, S130)
Generate nrf-softdevice-sXX crates for them
Add relevant cfg's to nrf-softdevice crate
Fix whatever compilation errors pop up (I believe the nrf52 softdevice's API is mostly a superset of nrf51's, so this should be mostly cfg-ing out things?)

PRs welcome :)

PRs are still welcome, but at this point I don't think there's any intent to support the nrf51 so I'm closing the issue.


⚠ ClamAV has degraded performance

In 0b69ded, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 87 ms

Resolved: ClamAV performance has improved in 09d5fc6.


Remove fileStatus field from FileInfo

Background
The status of a file is always implied by the context it's found in. Files get saved to the state store either as new files, or explicitly as files that are garbage collectable as a result of a compaction. Files are always queried from the state store as active files or ready for GC files.
Description
We can remove the file status field from FileInfo. This will prevent it from being accidentally set to an incorrect value.
Analysis
The FileInfo.fileStatus field is currently only referenced in the state store code. That will need to either imply the file status from context, or just not save it.

This isn't important and it causes a problem with the S3 state store implementation where it stores all the files together regardless of status. Closing.


Support for @JsonDeserialize

I've got a rest service defined in Jersey + Jackson, and tested via Jersey Proxy Client.
The main currency/object-hierarchy is all defined via interfaces (with implementation classes sitting behind it).
The only annotation required on these interfaces is "@JsonDeserialize(as =TheParticularClassName.class)"
Is there any hope of having resty-gwt support/interpret this, vs having to clutter the hierarchy with abstract classes and additional annotations?
I might just fork and add this support myself, but wanted to see if it was already in the cards.

+1

please give a trial on https://resty-gwt.github.io/documentation/restygwt-user-guide.html#using-gwt-jackson-for-json-serialization-and-deserialization
and report back, whether or not it fixes this issue. so we can see where to fix it on restygwt or gwt-jackson.

Sorry for delay, will hopefully have a chance to look at this in the next week.


Add a "Closed" state to application projects

Allow staff to close a project by adding a "Closed" status.
This makes it easier for staff to see what are active projects and archived/done/closed ones.

This already exist.


feat: Use SPA navigation from datasets list to Explore

SUMMARY
This PR implements SPA navigation in Datasets list. By default, clicking on dataset's name opens Explore, but user can override it with some external URL. Default react-router Link component can't handle external URLs, so I implemented a GenericLink component, which check if URL is external - if it does, use HTML anchor element, else use react-router Link.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
https://user-images.githubusercontent.com/15073128/181757636-957f38fb-9640-4c9f-a21e-19dc2763cd8a.mov
TESTING INSTRUCTIONS

Open datasets list
Click dataset's name, verify that Explore opens
Go back to datasets list, click "Edit" -> tab "Settings" -> set some external URL in "Default URL" field (like "https://google.com" or whatever) -> Save
Click dataset's name, verify that external URL opens

ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Required feature flags:
[ ] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

Hi @kgabryje. Dataset links don't work in SPA in Dataset column on Charts page

Also in Dashboard

@michael-s-molina @kgabryje I will create a new PR for this fix


Hydra outputs moved to checkpoints/experiment_name dir

Change behaviour of Hydra to output logs to user's checkpoints/experiment_name directory
Current behaviour spams output directories with unique timestamps for every run
This solves the bug where datasets such as cifar10, mnist, etc. were downloaded and extracted from scratch in each run.
In addition, this allows for easy loading of trained model, since now checkpoints are stored together with the YAML config that created them. A simple script can rebuild the model and load the weighs to it.

flake8 cleanup
environment_config.py: line 6 added package checkpoints dir as environment variable
env_helpers.py: line 60 added argument for Hydra output dir init
checkpoint_utils: line 51 used global PKG_CHECKPOINTS_DIR since it already exists

I recommend removing support for "external_checkpoint_path"; users can create symbolic links instead for now

Closing this down as another PR with the same purpose has been opened.

https://github.com/Deci-AI/super-gradients/pull/323


Version Negotiation Packet is broken

The packet format is not updated to draft-08.

The reporter got VN packet like this:
Receiving 108 bytes from <IP_ADDRESS>:4433
at T=0.211366 (560a6db8d739f)
   Type: 1 (version negotiation), CnxID: c402dd82bae2c34d, Seq: 0 (0), Version 0
   versions: 567c0b54, 5da85ee7, e31fabe, b9ff75a7, a77e7cef, 4384ea01, 573baa44, 50d5dc15, 58ff5ced, b2904df, 4e40d066, 5ac97605, ed39138a, 1954f8c, ceebd81, 22915ab4, 95e9b454, 7b68b408, 3a96cda6, 33be3ab3, b4526c8a, cdca3102, 8b850fff,

However, the packets ATS sends seem correct to me, and it's only 17 bytes.


On FreeBSD tests print "MSVC_COMPILER_FLAGS:"

-- Thrust version 1.9.5
MSVC_COMPILER_FLAGS:
 | WARN_ALL : '/Wall'
 | WARNINGS_AS_ERRORS : '/Wx'
 | RELEASE : '/Ox'
 | DEBUG : '/Zi;-D_DEBUG;/MTd'
 | EXCEPTION_HANDLING : '/EHsc'
 | CPP : ''
 | OMP : '/openmp'
 | TBB : ''
 | CUDA : ''
 | CUDA_BULK : ''
 | WORKAROUNDS : '/DNOMINMAX;/wd4503'
 | C++03 : ''
 | C++11 : '-std=c++11'

Yeah, we know; this iteration of CMake in Thrust is going away (hopefully by the next full CUDA release). Hope you don't mind me closing this one? (What is currently on master will, barring time, land in the next full CUDA release, with improvements in the form of an install target and proper CMake package support.)

I am closing this as fixed


Github Secret cannot store androidKeystoreBase64, the keystore file is too large. How do I pass keystore to the builder?

In the documentation https://game.ci/docs/github/builder#androidkeystorebase64, it's wrote:

It is recommended to use GitHub Secrets.

However, my keystore file is really big (50KB), so when it's encoded to base64, it's >40000 characters, which Github secret refuse to accept.
So my developer wrote the yml file so that it will download the keystore file from a link, and then encode that file and pass it to the game-ci's build step.
But doing this leads to error:

UnityException: Can not sign the application
Unable to sign the application; please provide passwords!

How do I pass the keystore correctly? What am I doing wrong?
My env:
env:
  AWS_ENDPOINT_CDN: ${{ secrets.AWS_ENDPOINT_CDN }}
  UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
  UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
  UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
  PROJECT_PATH: .
  ANDROID_APP_BUNDLE: true
  DISCORD_WEBHOOK : ${{ secrets.DISCORD_WEBHOOK }}
  REPO_NAME: ${{ github.event.repository.name }}
  REPO_URL: ${{ github.event.repository.url }}
  BRANCH_NAME: ${{ github.ref_name }}
  USER_URL: ${{ github.event.sender.html_url }}
  COMMIT_MESSAGE: ${{ github.event.commits[0].message }}
  COMMIT_HASH: ${{ github.event.head_commit.id }}
  COMMIT_URL: ${{ github.event.head_commit.url }}
  COMMIT_USER: ${{ github.event.sender.login }}
  COMMIT_TIME: ${{ github.event.head_commit.timestamp }}
  COMMIT_COMPARE: ${{ github.event.compare }}
  USER_AVATAR: ${{ github.event.sender.avatar_url }}
  ORG_AVATAR: ${{ github.event.organization.avatar_url }}
  ORG_URL: ${{ github.event.organization.url }}
  ORG_NAME: ${{ github.event.organization.login }}
  ANDROID_KEYSTORE_LINK: ${{ secrets.ANDROID_KEYSTORE_LINK }}

game builder step:
      - name: Code repo check out 📁
        uses: actions/checkout@v3
        with:
          lfs: true
          submodules: true

      - name: Cache ✨
        uses: actions/cache@v3
        with:
          path: ./Library
          key: Library-${{ env.REPO_NAME }}-iOS
          restore-keys: |
            Library-${{ env.REPO_NAME }}-
            Library-

      - name: Get keystore 🔐
        id: keystore
        run: |
          echo "::set-output name=keystore_data64::$(wget ${{ env.ANDROID_KEYSTORE_LINK }} -q -O - | base64)"

      - name: Game builder 🌀
        uses: game-ci/unity-builder@v2
        with:
          allowDirtyBuild: true
          projectPath: ${{ env.PROJECT_PATH }}
          targetPlatform: Android
          androidAppBundle: true
          androidKeystoreName: ${{ secrets.ANDROID_KEYSTORE_NAME }}
          androidKeystoreBase64: ${{ steps.keystore.outputs.keystore_data64 }}
          androidKeystorePass: ${{ secrets.ANDROID_KEYSTORE_PASS }}
          androidKeyaliasName: ${{ secrets.ANDROID_KEYALIAS_NAME }}
          androidKeyaliasPass: ${{ secrets.ANDROID_KEYALIAS_PASS }}

In my secrets, I don't know what value to set ANDROID_KEYSTORE_NAME to, so I leave it blank. Is that why it does not work?

My advice would be to start following best practices. It would make the process a lot smoother.

Android keystore being too largs:

Let's imagine that 50KB is roughly 45.000 characters. A lot of these will be used for encoding and making the structure of the android key store. However, if you use 20 APIs, each with a key of 64 characters that would still roughly only be 1KB.

The Android Keystore system lets you store cryptographic keys in a container to make it more difficult to extract from the device. Once keys are in the keystore, they can be used for cryptographic operations with the key material remaining non-exportable.

Make sure you only store cryptographic keys, not all your settings or whatnot. Same goes for GitHub Secrets; only put secrets in there, not configuration options.

Security first:

It is not encouraged to create a global env in your workflow and put secrets in there, because any job could then access all that data.

Follow our documentation (more closely):

Our documentation clearly states a name for your android keystore is required. Trying without it will only waste time and effort.

Make sure you only store cryptographic keys, not all your settings or whatnot. Same goes for GitHub Secrets; only put secrets in there, not configuration options.

Could you elaborate? I don't know how to do that, I use Unity's Keystore manager to generate keystore and alias. And this keystore is being used to sign released apps on our Google Play Store.


feat: add token counting for chat completions and runs

Signed-off-by: Nick Hale<EMAIL_ADDRESS>

Superseded by #102


Track armed events in muxnotes closely

This fixes issues around resuming or re-registering file-descriptors with
a previously triggered EPOLLONESHOT event.
Signed-off-by: Pierre Habouzit<EMAIL_ADDRESS>Fixes: SR-5759

@swift-ci please test

I'd appreciate a review from someone, @weissi (who is on vacation atm) has indepdently checked that it fixes SR-5759 for him.
the problem with epoll is that what is two different filters in the kevent world (EVFILT_READ/EVFILT_WRITE) is really a single one in epoll.
the multiplexing code which is a simplified version of the kevent one assumes that the first source that is resumed, resumes the multiplexing note, and that delivery disables it fully. However this is not quite how it works, we need to be able to do partial resumes/disarm of EPOLLIN and EPOLLOUT independently as all write sources of a given fd could be suspended while read sources are active and vice versa.

Note: this is slated for swift4 too

was out on vacation last week; will take a look at this tomorrow (unburying from other stuff today).  Sorry for the delay.

@dgrove-oss no worries, this isn't even a day old ;) I'll wait for you to have a look then.


reject claim_list_by_channel when no uri is passed

@tzarebczan was seeing claim_list_by_channel calls on the network with no uri param. This PR prevents that behavior.

@daovist this is likely a less than ideal solution since it encourages/tolerates sloppy coding.
If it makes sense to add this for pragmatic reasons, I would encourage the addition of an environment check that excepts/warns when these calls happen, rather than silent failure. This way they can at least be tracked down and eliminated.


Use the panel-extensions template setup?

I have not yet contributed to the panel-extensions org, but I see that there are some guidelines already: https://github.com/panel-extensions/copier-template-panel-extension?tab=readme-ov-file
Just noting the difference with this repo and raising the question of how important it is to follow that template and use pixi etc.
@philippjfr ?

i'm happy to follow the template!

Philipp says following setting things up via template is not high priority at the moment so it shouldn't be a blocker for initial release

Yeah I don't think it's a an issue. I'm adding the CI config now. The panel extension template also makes some assumptions about build infrastructure which isn't needed here.


SSO: Classes card updates

Add building icon for class room
Remove pin selector
Layout cleanup
Move type on the left (i.e. Lecture) to its own line
Add the following icon colors

Time - Primary
Building - Charcoal
Letter Grade - Green

Done on v6.0-rc, closing


Design/control utils/deadcode removal

Jesse and I discussed that my PR should be much shorter. In this PR I removed the dead functions in the ControlUtils class (are not called by other functions). This PR can only be merged once the PR Redesign/Simplify/Document FieldComputation class #835 is merged.

I want to point out that a lot of code in our system is "dead" because we have only scratched the surface of the strategy layer of the system. Therefore I'd like this PR to be judged based on whether the code is still relevant for our system, not whether it is currently in use

I want to point out that a lot of code in our system is "dead" because we have only scratched the surface of the strategy layer of the system. Therefore I'd like this PR to be judged based on whether the code is still relevant for our system, not whether it is currently in use

Dead code needs to be removed, because in most of the cases (95%) dead code is not used anymore by anyone. Only if you have very strong beliefs that it will be used in the future you can keep it on the master or development branch. If you are afraid that it will be used or do not want to discard valuable functions then you should store it on a separate branch.

I can agree with that, however 2 other PR's will then be on hold as well which includes: Design/control utils/codeclone removal #1060 and a PR that is still coming. Moreover if a PR is open for a very long time then the risk of merge conflicts gets larger.

I agree with Paul that we should keep these functions since they will be useful for us. I think it must not be a problem for other PRs, at least it shouldn't be, because this PR is only removing "dead code" and other PRs should have nothing to do with this.

I can agree with that, however 2 other PR's will then be on hold as well which includes: Design/control utils/codeclone removal #1060 and a PR that is still coming. Moreover if a PR is open for a very long time then the risk of merge conflicts gets larger.

I don't think it is a good reason to merge this PR because other PRs depend on this one. Besides, if you keep your PR up to date with development you will rarely get merge conflicts/trivially solvable conflicts.

I can agree with that, however 2 other PR's will then be on hold as well which includes: Design/control utils/codeclone removal #1060 and a PR that is still coming. Moreover if a PR is open for a very long time then the risk of merge conflicts gets larger.

I don't think it is a good reason to merge this PR because other PRs depend on this one. Besides, if you keep your PR up to date with development you will rarely get merge conflicts/trivially solvable conflicts. As Jordi said, according to you this is dead code, so if there are merge conflicts it would actually prove that the code was not dead.
Besides that, I also agree with Paul and Jordi.

A merge conflict does not mean that the code was dead. Only if the code does not compile then the code was not dead. Merge conflicts for example could also happen if other developers add more functions to the ControlUtils class. Furthermore you should keep in mind that it takes a lot of time to keep this branch repeatedly up to date with the master for about a month (which is not limited to solving merge conflicts, but also to checking if the code is still compiling and running). Besides even if the code was not dead at all, you should keep in mind that there are still design issues related to these functions, e.g. some of these functions should belong to another class instead, should be better documented and should be better tested.


Updated Broken Links in Documentation.

What this PR does / why we need it:
Fixes broken Documentation Links.
Which issue(s) this PR fixes (optional, using fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when the PR gets merged):
Fixes #958
Special notes for your reviewer:

@AbhishekSharma55 thank you!

@AbhishekSharma55 thank you!


Add support to specify maxDelay parameter

So at work, we were experimenting with this plugin to connect Grafana to SignalFX. This worked really well (Thanks!) except that we found that some graphs(with multiple queries) were ~5-10 minutes behind current time. We compared this to our existing dashboards and figured out that maxDelay was set explicitly and couldn't on Grafana.
This PR adds support to specify maxDelay per query.
However, I'm not sure if this is the best way to do it. Because AFAIK, this plugin merges all queries in the chart before executing it - which makes this setting is more of a chart level parameter rather than a per query parameter. Is there a way to add a parameter at a chart level rather than at a query level? Or is the current approach good enough?
NOTE:

I had to bump the version of signalfx-go to get the backend code to build.

The functionality has been introduced via https://github.com/signalfx/grafana-signalfx-datasource/pull/19

@code-haven Thanks for your contribution


Doesn’t Work??

Hi!
I tríed this ad, but i can not run it.
On logs usually have this error:
2022-12-26 23:12:01.822254 WARNING spotify_mood_lights_sync: ------------------------------------------------------------
WARNING spotify_mood_lights_sync: Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/spotipy/oauth2.py", line 265, in _request_access_token
response.raise_for_status()
File "/usr/lib/python3.10/site-packages/requests/models.py", line 953, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://accounts.spotify.com/api/token
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/appdaemon/threading.py", line 917, in worker
funcref(
File "/config/appdaemon/apps/ad-spotify-mood-lights-sync/spotify_mood_lights_sync.py", line 134, in sync_lights_from_spotify
self.sync_light(new_uri)
File "/config/appdaemon/apps/ad-spotify-mood-lights-sync/spotify_mood_lights_sync.py", line 170, in sync_light
color = self.color_from_uri(track_uri)
File "/config/appdaemon/apps/ad-spotify-mood-lights-sync/spotify_mood_lights_sync.py", line 189, in color_from_uri
track_features = self.call_api(partial(self.sp.audio_features, track_uri))[0]
File "/config/appdaemon/apps/ad-spotify-mood-lights-sync/spotify_mood_lights_sync.py", line 272, in call_api
return func()
File "/usr/lib/python3.10/site-packages/spotipy/client.py", line 1689, in audio_features
results = self._get("audio-features/?ids=" + trackid)
File "/usr/lib/python3.10/site-packages/spotipy/client.py", line 297, in _get
return self._internal_call("GET", url, payload, kwargs)
File "/usr/lib/python3.10/site-packages/spotipy/client.py", line 221, in _internal_call
headers = self._auth_headers()
File "/usr/lib/python3.10/site-packages/spotipy/client.py", line 212, in _auth_headers
token = self.auth_manager.get_access_token(as_dict=False)
File "/usr/lib/python3.10/site-packages/spotipy/oauth2.py", line 238, in get_access_token
token_info = self._request_access_token()
File "/usr/lib/python3.10/site-packages/spotipy/oauth2.py", line 269, in _request_access_token
self._handle_oauth_error(http_error)
File "/usr/lib/python3.10/site-packages/spotipy/oauth2.py", line 146, in _handle_oauth_error
raise SpotifyOauthError(
spotipy.oauth2.SpotifyOauthError: error: invalid_client, error_description: Invalid client
Any ideas?

Hey @mclemente1987, did you try checking whether you supply the app with the correct Spotify credentials?

it works!
I just replaced !secret an used directly and it works ok.
thanks for your help.
El mar, 14 feb 2023 a las 19:37, Niklas Reiche @.***>)
escribió:

Hey @mclemente1987 https://github.com/mclemente1987, did you try
checking whether you supply the app with the correct Spotify credentials?
—
Reply to this email directly, view it on GitHub
https://github.com/NiklasReiche/ad-spotify-mood-lights-sync/issues/8#issuecomment-1430202226,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AP6S5CPSK3II24E46ORONOTWXPGGFANCNFSM6AAAAAATJ5S4ZI
.
You are receiving this because you were mentioned.Message ID:
@.***>

Glad to hear that! I'll update the documentation to make that point a bit clearer.


Labelling tool

Could you suggest labelling tools, I am using this one: https://github.com/drainingsun/ybat/tree/master. I run a demo video for plate detection, people and tank, I didn't work at all. I took the video and strip in to frames, took the first frame annotate the coordinates for each case above. and then use the custom script. The output does contain any object tracking.

You can try to use this to find the bounding box coordinate for the first frame. Remember to convert to xywh format.
https://pixspy.com/

Hi @mirosaide; I'd like to suggest that you consider trying out this tool, which appears to be a promising alternative for your needs.


Determine entity type after failed schema validation

from

to

@Ghesselink can you share a sample file I can test with (Slack)?

I guess this can be closed with the status code changes?


initializeClearButton() in PlaquetteClass.js mishandles child graphics

In the initalizeClearButton() this.destroy() is called which is dangerous.
If the subchild plaquette does not have graphic associated with itself, there is a possibility that the clearing functionality will crash the app.
TypeError: this._geometry is null

Closing and mvoing conversation to #24


Unable to use custom ChallengeGenerator

ChallengeGenerator::generate is internal...Then creation of custom ChallengeGenerator is not permitted...and WebAuthnManager::challengeGenerator is private.

@dscreve what are you looking to do with a custom challenge generator? It's an internal implementation detail at the moment

I’m running a stateless environment : I cannot store challenge in session but I need to check if challenge is trusted and can be used in current context. So I need to put custom info in it (even if it contains random data).David ScrèveLe 12 juil. 2024 à 19:19, Tim Condon @.***> a écrit :
@dscreve what are you looking to do with a custom challenge generator? It's an internal implementation detail at the moment
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

Nothing is preventing you from repackaging PublicKeyCredentialCreationOptions with your own challenge, though the challenge must be independently verifiable, otherwise you open yourself up to replay attacks.

Actually, implicit init function is internal, making creation of PublicKeyCredentialCreationOptions  impossible.David ScrèveLe 12 juil. 2024 à 21:35, Dimitri Bouniol @.***> a écrit :
Nothing is preventing you from repackaging PublicKeyCredentialCreationOptions with your own challenge, though the challenge must be independently verifiable, otherwise you open yourself up to replay attacks.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>


Using "console.info" does not work with logdown on old browsers

Older browsers (like Chrome 49) have support for console.info. Unfortunately logdown blocks them from using it and throws an error instead.
Screenshot:

How to reproduce:

Use Chrome 49
Open Logdown demo page: https://caiogondim.github.io/logdown.js
Execute the following code within the JS console

var a = new logdown('test')
a.info('')

We should just delegate to console.
That's a bug.

Pushed a potential fix.


Problem with adding devices

Hi,
sorry to bother you again. I freshly reinstalled my rpi und the miflora-mqtt-daemon. I see my devices with hcitool lescan but I can't add them. I get the following error:
python3 /opt/miflora-mqtt-daemon/miflora-mqtt-daemon.py

Xiaomi Mi Flora Plant Sensor MQTT Client/Daemon
Source: https://github.com/ThomDietrich/miflora-mqtt-daemon

[2017-10-16 13:25:13] Connecting to MQTT broker ...
[2017-10-16 13:25:13] MQTT connection established

Adding sensor to device list and testing connection ...
Name:          "tomato"
Traceback (most recent call last):
  File "/opt/miflora-mqtt-daemon/miflora-mqtt-daemon.py", line 188, in <module>
    flora_poller = MiFloraPoller(mac=mac, cache_timeout=miflora_cache_timeout, retries=3, adapter=used_adapter)
TypeError: __init__() missing 1 required positional argument: 'backend'

Checked my config.ini but can't find a mistake. Any idea? Thanks

Hey, that's kind of my fault for being to eager during development. The daemon still depends on the latest development version of another component and that one changed recently, hence there is now this warning.
See:
https://github.com/ThomDietrich/miflora-mqtt-daemon/blob/c275a279f4e56e98161de1fc56d0242ceda95390/requirements.txt#L1-L2
Workaround: Please remove the first line and uncomment the second. After that execute the pip installation again. You might need to uninstall the development version of the library first.
sudo pip3 uninstall miflora
sudo pip3 install -r requirements.txt

I'll fix the issue in the next couple of days and will keep you updated.

Thank you very much, works!


Demo project errors upon opening

Are you using the provided fork of Godot?
yes
Godot-steam-audio version
0.2.1
Steam-Audio version
don't know.
Operating System
Windows 10
Describe the bug
Upon opening the Demo in the provided Godot build I get errors and SteamAudioPlayer fails to load.

Apologies in advance if this is somehow user error.

Hi, not a user error. I had an issue in the Github action that creates the release zips. Please redownload the v0.2.1 release. Sorry for the inconvenience!


chore: replace isort and flak8 by ruff

Codecov Report

Merging #27 (eee4650) into main (669925b) will decrease coverage by 0.28%.
The diff coverage is n/a.

:exclamation: Current head eee4650 differs from pull request most recent head 50455db. Consider uploading reports for the commit 50455db to get more accurate results

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main      #27      +/-   ##
==========================================
- Coverage   23.39%   23.11%   -0.28%
==========================================
  Files           7        7
  Lines         359      359
==========================================
- Hits           84       83       -1
- Misses        275      276       +1

Impacted Files
Coverage Δ

src/wakemebot/aptly.py
62.59% <0.00%> (-0.77%)
:arrow_down:

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


Use page object pattern

https://selenium-python.readthedocs.org/en/latest/page-objects.html
https://code.google.com/p/selenium/wiki/PageObjects
http://engineeringquality.blogspot.se/2012/12/python-quick-and-dirty-pageobject.html

Done


router: add option to use path in downstream header as child span's name

Signed-off-by: Shikugawa<EMAIL_ADDRESS>
Commit Message: router: add option to use path in downstream header as child span's name
Additional Description: In Apache SkyWalking, we have a usecase to use pathname in downstream header as child span's name. This feature adds a option to achieve this requirement.
Risk Level: Low
Testing: Unit
Docs Changes: N/A
Release Notes: Required
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]
cc @wu-sheng

Would you consider add new API to TracingSpan(cpp2sky) to override operation name and then, when we call the injectContext in the Envoy, override the operation name with the path by the new API.
Then all the skywalking users needn't to set use_path_as_child_span_name in the Router.

/assign

Would you consider add new API to TracingSpan(cpp2sky) to override operation name and then, when we call the injectContext in the Envoy, we can override the operation name with the path by the new API.
Then all the skywalking users needn't to set use_path_as_child_span_name in the Router. thinking

@wbpcode Do we think that all of skywalking users want to use path name as operation name? This is why I added this option here. cc @wu-sheng

Would you consider add new API to TracingSpan(cpp2sky) to override operation name and then, when we call the injectContext in the Envoy, we can override the operation name with the path by the new API.
Then all the skywalking users needn't to set use_path_as_child_span_name in the Router. thinking

@wbpcode Do we think that all of skywalking users want to use path name as operation name? This is why I added this option here. cc @wu-sheng

Entry span, uses the path of downstream as operation name.
Exit span, uses the path of upstream request path.
This is my idea.

Would you consider add new API to TracingSpan(cpp2sky) to override operation name and then, when we call the injectContext in the Envoy, we can override the operation name with the path by the new API.
Then all the skywalking users needn't to set use_path_as_child_span_name in the Router. thinking

@wbpcode Do we think that all of skywalking users want to use path name as operation name? This is why I added this option here. cc @wu-sheng

Considering the implementation of APM agent, I think it ok to use path as operation name for all the skywalking users. If some users have special needs, we should also consider extending skywalking tracer's configuration to provides additional options.

Thank you for the discussions. I found that it makes sense that envoy ALWAYS use path name in skywalking tracer. As I described, we may not use arbitrary operation name here. But it is out of scope. Let me fix.

I think that we should work after #20454 has been merged. It rewrites operation name to path in setStreamInfo.

@wbpcode I noticed there SkyWalking relative PRs have no update from maintainers, how should we process these?

@wbpcode I noticed there SkyWalking relative PRs have no update from maintainers, how should we process these?

Sorry. Now we have three pending skywalking related PR's, #20367, #20454 and this one.
It's LGTM overall for the #20367, only need to fix the CI. (cc @Shikugawa )
I have different idea about the implementation of #20454. But I will not stand the way.
This PR should be completed after #20454 as cc @Shikugawa said.


Consider alternative approach for field storage

Is your feature request related to a problem? Please describe.
In profiling our workload, tile38 appears to spend a hefty amount of time doing map lookups in Collection.getFieldValues. It seems like when doing any of the NEARBY/INTERSECTS/WITHIN calls, this gets called for each matching point in the inner loop. If there are a relatively large number of points that pass the spatial filter, but then fail field based tests, this can lead to the map lookups becoming a significant source of overhead.
Describe the solution you'd like
It seems like there is no real need to use a map to store the field values. All the calls to get fields already happen when an itemT exists, so instead of storing a map of id -> fields, it's more efficient to store an index into a fields slice in the itemT struct. This obviously costs one more int per item in memory, but I imagine not having another copy of the string key stored in the map probably makes up for it.
Describe alternatives you've considered
The most obvious alternative is just to keep things as-is :)
Additional context
When investigating this I noticed that the benchmarks in the collection package don't capture two cases that at least for us are common in the real world: items with fields, and scanning a number of records in the collection. I added these, and prototyped a solution replacing the map with a slice of fields instead. Here are the benchmarks comparing my prototype with the existing code:
name                 old time/op    new time/op    delta
Insert_Fields-12       2.55µs ± 8%    2.08µs ±29%     ~     (p=0.095 n=5+5)
Insert_NoFields-12     1.88µs ±25%    1.72µs ± 5%     ~     (p=0.548 n=5+5)
Replace_Fields-12      4.66µs ± 9%    4.32µs ± 4%     ~     (p=0.222 n=5+5)
Replace_NoFields-12    4.19µs ± 4%    4.19µs ± 1%     ~     (p=0.841 n=5+5)
Get_Fields-12          1.24µs ±10%    1.14µs ±16%     ~     (p=0.095 n=5+5)
Get_NoFields-12        1.12µs ± 9%    1.05µs ±10%     ~     (p=0.095 n=5+5)
Remove_Fields-12       3.48µs ± 9%    3.21µs ± 9%     ~     (p=0.056 n=5+5)
Remove_NoFields-12     3.13µs ± 6%    3.07µs ± 5%     ~     (p=0.421 n=5+5)
Scan_Fields-12         15.9µs ±25%     5.0µs ± 1%  -68.77%  (p=0.008 n=5+5)
Scan_NoFields-12       5.98µs ± 9%    4.79µs ± 3%  -19.87%  (p=0.008 n=5+5)

name                 old alloc/op   new alloc/op   delta
Insert_Fields-12         377B ±13%      347B ± 3%     ~     (p=0.635 n=5+5)
Insert_NoFields-12       198B ± 0%      213B ± 0%   +7.78%  (p=0.008 n=5+5)
Replace_Fields-12       58.5B ± 3%     84.0B ±14%  +43.59%  (p=0.016 n=4+5)
Replace_NoFields-12     58.0B ± 7%     81.0B ±10%  +39.66%  (p=0.008 n=5+5)
Get_Fields-12           8.00B ± 0%     8.00B ± 0%     ~     (all equal)
Get_NoFields-12         8.00B ± 0%     8.00B ± 0%     ~     (all equal)
Remove_Fields-12        94.6B ± 8%    139.4B ± 3%  +47.36%  (p=0.008 n=5+5)
Remove_NoFields-12      91.0B ± 9%     92.4B ± 5%     ~     (p=0.468 n=5+5)
Scan_Fields-12          0.00B          0.00B          ~     (all equal)
Scan_NoFields-12        0.00B          0.00B          ~     (all equal)

name                 old allocs/op  new allocs/op  delta
Insert_Fields-12         1.00 ± 0%      1.00 ± 0%     ~     (all equal)
Insert_NoFields-12       1.00 ± 0%      1.00 ± 0%     ~     (all equal)
Replace_Fields-12        1.00 ± 0%      1.00 ± 0%     ~     (all equal)
Replace_NoFields-12      1.00 ± 0%      1.00 ± 0%     ~     (all equal)
Get_Fields-12            0.00           0.00          ~     (all equal)
Get_NoFields-12          0.00           0.00          ~     (all equal)
Remove_Fields-12         0.00           0.00          ~     (all equal)
Remove_NoFields-12       0.00           0.00          ~     (all equal)
Scan_Fields-12           0.00           0.00          ~     (all equal)
Scan_NoFields-12         0.00           0.00          ~     (all equal)

My code can be found at https://github.com/mpoindexter/tile38/tree/optimize-field-value-access, happy to open a PR if this seems like a good direction to go.

The performance boost looks good. Please submit a PR.


[REQUEST]

Please you could add, structured messages and carousel messages.

Carousel messages are not supported in smooch-bot-example?


[Enhancement] AsyncCommand

Summary
Add ICommand implementation that support async execution and allow the prevention of simultaneous/reentrant execution.
Maybe take MVVM Helpers implementation of AsyncCommand.
API Changes
Based on IAsyncCommand defined on MVVM Helpers:
/// <summary>
/// Interface for Async Command
/// </summary>
public interface IAsyncCommand : ICommand
{
    /// <summary>
    /// Allow simultaneous/reentrant execution.
    /// Default value is True.
    /// </summary>
    bool AllowMultipleExecution { get; set; }

    /// <summary>
    /// Execute the command async.
    /// </summary>
    /// <returns>Task to be awaited on.</returns>
    Task ExecuteAsync();

    /// <summary>
    /// Raise a CanExecute change event.
    /// </summary>
    void RaiseCanExecuteChanged();
}

/// <summary>
/// Interface for Async Command with parameter
/// </summary>
public interface IAsyncCommand<T> : ICommand
{
    /// <summary>
    /// Allow simultaneous/reentrant execution.
    /// Default value is True.
    /// </summary>
    bool AllowMultipleExecution { get; set; }

    /// <summary>
    /// Execute the command async.
    /// </summary>
    /// <param name="parameter">Parameter to pass to command</param>
    /// <returns>Task to be awaited on.</returns>
    Task ExecuteAsync(T parameter);

    /// <summary>
    /// Raise a CanExecute change event.
    /// </summary>
    void RaiseCanExecuteChanged();
}

Nice idea!)

Nice idea!)

Lovely! Since we already have the blessing of James, do you want to port that over yourself @YZahringer or you want us to do it?

@jfversluis I can port this. I have some doubts:

Do we take the implementation as is or we adapt it?
The current implementation use WeakEventManager which is a copy of XF private class. We copy that too?
Which namespace? Xamarin.CommunityToolkit.ObjectModel?
We make adaptations for AllowMultipleExecution?

What would you like to adapt? In the issue I see linked there is also the implementation from @brminnick which seems already improved? I'm almost certain he would allow us to take that if it has changes you'd like to see. We could also try to force an answer for that Forms issue by just opening a PR to make that class public and see what they say. I can do that if needed

Good question. At this point I would like to try and not expand to any more namespaces. ObjectModel I guess?

Again; what would you like to change?

Hi friends!
Feel free to assign this to me.
I’d be happy to port my implementation of AsyncCommand from AsyncAwaitBestPractices

@brminnick Sounds good. What's the actual difference between these implementations? And if there are differences, could we come to a best of both worlds covering e.g. concerns as mentioned above by @YZahringer?

Yup - it's no problem to merge everything!
MVVMHelpers' implementation was actually inspired by AsyncAwaitBestPractices

To answer your question, AsyncAwaitBestPractices has some performance improvements, includes support for ValueTask and has a robust suite of unit tests.

Looking at the spec, above, I'll be making two small changes:

Add support for ValueTask
Remove IAsyncCommand.AllowMultipleExecutions

ValueTask was introduced in .NET Standard 2.1 and offers performance gains over Task.
AllowMultipleExecutions isn't necessary for ICommand, because it breaks the ICommand paradigm. ICommand includes CanExecute which is what should be used to prevent multiple executions. ICommand should be stateless and AllowMultipleExecutions implements a state-pattern by tracking whether or not the Task is currently running.

@brminnick I agree, AllowMultipleExecutions is not stateless in ICommand. But it is very useful and simple solution for a recurrent problem to maintain every time you use IAsyncCommand.
Without this, you have to manage in every VM an IsBusy, set on try...finally in each execute, canExecute => !IsBusy and raise can execute changed when IsBusy changed.

Interesting - I didn't realize there was a paradigm shift in adding this to other AsyncCommand commands!
I'll pause and delve into these implementations to understand the ecosystem a bit better 👍


Bump version to 0.33.0

Change Overview

Pull request type
Please check the type of change your PR introduces:

[ ] :construction: Work in Progress
[ ] :rainbow: Refactoring (no functional changes, no api changes)
[ ] :hamster: Trivial/Minor
[ ] :bug: Bugfix
[ ] :sunflower: Feature
[ ] :world_map: Documentation
[ ] :robot: Test

Issues

#XXX

Test Plan

[ ] :muscle: Manual
[ ] :zap: Unit test
[ ] :green_heart: E2E

Stale now. Closing.


Remove 'Cell' as superclass of 'germ line' Sep 30 2019

The anatomy term 'germ line' should not be a subclass of 'Cell', so removing 'Cell' as a superclass of 'germ line'

The germ line isn't a type of cell, it is a set of cells that are, or give rise to, the gametes. From WormAtlas, germline is defined as:
"The lineage that gives rise to all germ cells in an animal, that is the spermatozoa, oocytes and their precursors, through repeated cell divisions stemming from a single founder cell, the P4 blastomere."
so, according to WormAtlas it is a lineage of cells, not a cell itself, which is much more in line with my understanding. Also, from Wikipedia, germline is defined as:
"the germline in a multicellular organism is the population of its bodily cells that are so differentiated or segregated that in the usual processes of reproduction they may pass on their genetic material to the progeny."
so a population or set of cells, but again, not a cell itself.
Do you have a source of definition that defines "germline" as a cell?

Actually, I should have referenced the WBbt definition first:
"cell line which early in development becomes differentiated from the remaining somatic cell line, and alone has the potential to undergo meiosis and form gametes."
Also, defined not as a cell but a cell line

I think "a line of cells" is a cell type, just as AB lineage cell is a cell type.

No, a "cell line" ≠ "cell"
A cell line may have members that are cells that are of one or more cell types, but the cell line itself is not a cell. The cell line, I think, should be considered a tissue or a lineage or both, but not a cell. We would have to ask the question: "What is an example of an individual of this class?" An individual germ line in C. elegans would be the set of all individual cells (across the life span) that are germ cells or germ cell precursors. An individual C. elegans germ line would never be an individual cell, only ever a set of cells, and a set of cells is not the same as an individual cell.

Would it make sense to you if we rename germline to "germline cell" and have it as a subtype of "cell"? When we refer to a cell type, we mean any of its members, which could be all. In anatomy ontology, we don't have terms that are necessarily "all" but not any of its subsets.

No, we shouldn't rename "germline" to "germline cell" because

We already have "germ cell" which would be, as far as I can tell, exactly equivalent to "germline cell". WormAtlas defines "germ cell" as:

"Any member cell of the male or female germline, including sperm, oocytes, and their precursors. In the nematode gonad, the germ line proliferates from one primordial germ cell (PGC). Immature germ cells are not completely cellularized; instead they each maintain a syncytial linkage via the rachis, yet also retain their individual plasma membrane borders. Individual “cells” seem to act independently within this syncytium, therefore each connecting element, containing one nucleus, a few cytoplasmic organelles and a bounding plasma membrane is considered a separate germ cell."

A "germline" is still an anatomical entity that people refer to and therefore we should keep it as a term in the ontology, but it shouldn't be defined as a cell, or even a cell type; the C. elegans germline is the set of all germ cells in an individual worm, it is not a cell or a cell type itself.

"In anatomy ontology, we don't have terms that are necessarily "all" but not any of its subsets."
By "subsets" I think you are referring to part-of descendants here, as germ cells are part of the germline, but not subsets as in subclasses because germ cells are not a subclass of (a subtype of) germline. Again, a set of entities is not the same thing as an individual entity, nor is it a superclass of said entity. For example, a human being is not a subclass/subtype of population of human beings, a human being is only part-of a population of human beings. Part-of descendants are distinct from is-a/subclass descendants.

I guess there are two usage of germline. One general, that refers to germ cells <e.g. https://www.genome.gov/genetics-glossary/germ-line>, and one specific, that refers to the tissue in the worm where germ cells are collectively found (WormAtlas). In the second usage, germ cells are not always part of a germline, though, e.g. sperm transferred during sex .
So there is the 'sex' (in contrast to somatic) cells (which I think is a cell type that includes both immature and mature germ cells) and then there is something in which the germ cells are physically bound together (part of a gonad). I think our current treatment is a mixture of both meanings which is, I agree, a problem.

I actually don't think there are two uses of the term. The genome.gov link says:
"The germ line is the sex cells [sic]"
which I interpret to mean the set of all sex (germ) cells in the organism. I'm pretty sure that is the intended meaning which is consistent with what I've been saying, and is still consistent with the WormAtlas definition.
OK, I agree that technically speaking, sperm that has been transferred to a mate is no longer part of the germline as a contiguous physical entity, but it could still be considered part of the germline even if it has been physically separated. If we really want to get pedantic, we can create terms/classes and definitions that would accommodate sperm that has already left the male's body, but I don't think it's worth it at this point.
So, I don't think we have a mixture of meanings problem. As I proposed, I think we just need to:

Remove "germ line" as a subclass of "Cell" (but leave it as a subclass of "Tissue")
Replace "germ line" as a superclass of "germ cell" with "Cell" as the new superclass

@raymond91125
OK, I've made the last change that we discussed on the call. I've removed "germline precursor cell" as a subclass of "germ line" and made it a direct subclass of "Cell" instead.


[3.4 preview] Test parameter type check is very strict

Describe the bug
After updating MSTest from 3.3.1 to 3.4.0-preview.24257.1 I noticed that one of my data driven tests now fails because of a method parameter type mismatch. But the test ran fine in all versions before 3.4.
Steps To Reproduce
Example test:
      [TestMethod]
      [DataRow("Field", "Customer", 1, null)]
      public void TestMethod(string field, string entityType, long entityId, string richTextValue)
      {
      }

Expected behavior
Test passes.
Actual behavior
Test fails with this message:
Test data doesn't match method parameters. Either the count or types are different.
Test expected 4 parameter(s), with types 'String, String, Int64, String',
but received 4 argument(s), with types 'String, String, Int32, null'.

Additional context
I assume the problem is only Int32 vs. Int64.
Is this type check so strict on purpose? Isn't the implicit conversion (which worked in older MSTest versions) enough?
I think this is caused by #2691

That is a good point.
The new code seems to be too clever for its own good. We should probably give up on validating the types beforehand, and just use the logic to figure out if we are handing params parameters or not and then wait if the test fails with "Parameter count mismatch" exception, and throw our better exception.


Create LICENSE

This helps github detect the license and show it in the header bar

Thank you, I was not aware of this github "feature" :)


Redefine location in Azure CLI

Is your feature request related to a problem? Please describe.

In Azure CLI, location is a global parameter. Some commands has it's own customization. It inherit location from resource group if it is not specified. It's a common practice based on my observation.
It registers location in the command,
c.argument('location', validator=get_default_location_from_resource_group)

or
Manipulate location in custom function.
However, the behavior is not documented in help.
I recommend adding this common behavior to global location definition and update global help message.
It has no effect on commands that succeed before, while it has effect on commands that failed before. It is an acceptable result.
A related PR:
https://github.com/Azure/azure-cli/pull/12828
Describe the solution you'd like

Describe alternatives you've considered

Additional context

OK!

S168

I find some example with special behavior. This is a validator of vm create.
def _validate_location(cmd, namespace, zone_info, size_info):
    from ._vm_utils import list_sku_info
    if not namespace.location:
        get_default_location_from_resource_group(cmd, namespace)
        if zone_info:
            sku_infos = list_sku_info(cmd.cli_ctx, namespace.location)
            temp = next((x for x in sku_infos if x.name.lower() == size_info.lower()), None)
            # For Stack (compute - 2017-03-30), Resource_sku doesn't implement location_info property
            if not hasattr(temp, 'location_info'):
                return
            if not temp or not [x for x in (temp.location_info or []) if x.zones]:
                raise CLIError("{}'s location can't be used to create the VM/VMSS because availability zone is not yet "
                               "supported. Please use '--location' to specify a capable one. 'az vm list-skus' can be "
                               "used to find such locations".format(namespace.resource_group_name))

Due to some existing special customized behavior of location in some commands. This issue is abandoned.


cargo add takes package.rust-version into account when no version-req is specified

Implementation: #12078
Unstable feature: -Zmsrv-policy

Problem
When running cargo add foo, we create a version-req out of the latest version in the index.  If this has a higher rust-version, then that can break for people.
Proposed Solution
Constrain the candidate versions in the index by their rust-version being lesser or equal to the current crate's rust-version.
The main question is what to do when there are no matches due to rust-version.

Add anyways
Error with newest version's rust-version

Notes
No response

When rust-version gets added to the registry, we should inform Dependabot people on https://github.com/dependabot/dependabot-core/issues/5423

@rustbot claim

Implemented in #12078. Maybe close?

Implemented but not stable so this works as a place to track stabilization. I should update the issue to reflect that though.


Fix all-in-one deployment bug

Description
When i run "All in one deployment with 'Option B'", nginx cant find one file
To Reproduce
Steps to reproduce the behavior:

Go to OpenMu/deploy/all-in-one
Run "docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d"
Run "docker ps"
Copy nginx 80 container hash
Run "docker logs (hash here)"
Logs will show "2024/08/10 20:37:36 [emerg] 1#1: open() "/etc/nginx/conf.d/nginx.server_name.conf" failed (2: No such file or directory) in /etc/nginx/nginx.conf:9"

Expected behavior
Nginx should work but it isn't
Additional data:

OS: Ubuntu 22.04 LTS local deployment on real PC

Thank you for your fix. Before nginx version 1.19, you couldn't use environment variables in nginx config files. Nginx was scanning the config files for *.template, replaced env variables and stored it without the .template suffix in the same folder. So at first, I was surprised that your fix works 😅
Since nginx improved at this point, I think this can be further improved: We can remove this template files and directly add their contents to the places where they were included.

I did the changes, can you confirm that it's working?

Oh nevermind, I was wrong... they didn't change a thing.
https://www.baeldung.com/linux/nginx-config-environment-variables

Hi! Don’t worry :D, I’ll be working on better parameterizing the environment variables within the container with Nginx so that everything works without needing any modifications (except hard coding non-params env vars). The previous issue was resolved by mounting a file inside the container as read-only. Once I have everything set up with best practices, I’ll be making another request. Thank you for your feedback !

This was handled with #447