perf: fix (comment) input performance

Details

I was investigating a performance (and crash) issue when typing a comment for a report.
I was able to reproduce the issue on iOS, where I noticed that the JS thread completely dies when you are typing (typing super slow seems fine, but typing a bit faster caused a massive slowdown):
https://user-images.githubusercontent.com/16821682/194716465-f4d36dfb-3973-43d0-8bc3-2f1658b89224.mp4

Note: When typing super fast, the UI thread gets impacted as well, however, this is expected behaviour and has nothing to do with this app's setup/code.

In addition to that I also get some warnings:

After:
After fixing the issue the JS thread is almost not impacted at all. It's only impacted when starting typing. I also want to improve performance for that as well, however, that's for another PR:
https://user-images.githubusercontent.com/16821682/194716560-ed80e279-4124-495a-a976-5ad9b3ec892c.mp4

Notice how even when typing super fast the JS thread doesn't die (the UI thread does but that's expected).

The main fix was to remove the text input from the state of the ReportActionCompose. On each keystroke, it re-rendered ~3 times. Now it doesn't re-render at all when just typing (it does when starting and stopping typing, but that's for other PRs to improve).
Removal of the space after emojis:
When I started working on this I realized an inconsistency in behaviour when adding emojis between the composer on the report screen and the composer when editing a sent message/action.
I made the behaviour equal, and when adding emojis there is no additional space added. This was discussed and decided on slack: https://expensify.slack.com/archives/C035J5C9FAP/p1665560521827199
Fixed Issues

$ https://github.com/Expensify/App/issues/8349
PROPOSAL: GH_LINK_ISSUE(COMMENT)
Tests

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

Testing adding emojis:

Open a report
Type some text
Add emojis using the emoji picker to the text
Try to add emojis in between the words as well
Try to add an emoji with a part of the sentence selected
Make sure everything behaves as expected
Try the same when editing a sent message

When adding emojis make sure that no additional whitespace gets added. This behavior has changes as discussed  (see link above)
Testing android selection menu
(Only needed on android)

Open a report
Type some text
Select some text
Make sure that the selection menu with copy / paste / cut is showing up
Make sure that you can change the selection (extend / shorten)

The following is a list of regression tests to run against this PR to make sure everything is working as expected.

Regression tests:
Test plan
Helper list to confirm you ran every test

[ ] Selection is not reset after selecting an emoji

[ ] Android
[ ] iOS
[ ] mWeb
[ ] Safari
[ ] Chrome
[ ] Firefox
[ ] Desktop

[ ] Broken emojis are rendered when picked from the picker in a series

[ ] Android
[ ] iOS
[ ] mWeb
[ ] Safari
[ ] Chrome
[ ] Firefox
[ ] Desktop

[ ] Cursor position is broken

[ ] Android
[ ] iOS
[ ] mWeb
[ ] Safari
[ ] Chrome
[ ] Firefox
[ ] Desktop

[ ] Adding emoji via EmojiPicker in replacement for multiple lines creates a delay before the composer height is calculated.

[ ] Android
[ ] iOS
[ ] mWeb
[ ] Safari
[ ] Chrome
[ ] Firefox
[ ] Desktop

[ ] Selected Emoji is placed in the wrong position.

[ ] Android
[ ] iOS
[ ] mWeb
[ ] Safari
[ ] Chrome
[ ] Firefox
[ ] Desktop

[ ] Pasting image does not send the attached text message.

[ ] mWeb
[ ] Safari
[ ] Chrome
[ ] Firefox
[ ] Desktop

[ ] There is a delay before Composer expands the height on the web.

[ ] mWeb
[ ] Safari
[ ] Chrome
[ ] Firefox
[ ] Desktop

[ ] Cursor position is not focused after picking a emoji in Composer.

[ ] mWeb
[ ] Safari
[ ] Chrome
[ ] Firefox
[ ] Desktop

[ ] Content flashing while pasting.

[ ] mWeb
[ ] Safari
[ ] Chrome
[ ] Firefox
[ ] Desktop

[ ] Edit Message: Copy-pasting is slow.

[ ] mWeb
[ ] Safari
[ ] Chrome
[ ] Firefox
[ ] Desktop

[ ] Cursor jumping or moving positions after picking emoji.

[ ] mWeb
[ ] Safari
[ ] Chrome
[ ] Firefox
[ ] Desktop

[ ] Compose text is not cleared after sending the message

[ ] mWeb
[ ] Safari
[ ] Chrome
[ ] Firefox
[ ] Desktop

All platforms, make sure for web to run on every browser (Safari, Chrome, Firefox, Edge):
Selection is not reset after selecting an emoji

Add multiple message on the composer.
selected multiple lines.
Open the emoji picker and choose an emoji.
selection remained.

https://user-images.githubusercontent.com/24370807/195184513-5d525c74-5db4-4fba-9b79-529ab49abe04.mp4
Broken emojis are rendered when picked from the picker in a series

Add a bunch of text lines in the composer.
Move the cursor to some middle position in the para.
Now pick an emoji from the emoji picker.
Try to pick the same emoji a few more times from the picker.

https://user-images.githubusercontent.com/24370807/195188451-c5566cad-bb70-4fd5-b4a4-4a52ca669358.mp4
Cursor position is broken

Steps

Add a bunch of lines to the composer on web.
Place your cursor somewhere in the middle.
Go to any other page and copy some strings. (e.g. Copy step 2 in clipboard)
Paste in the composer.
Cursor is not at the end of pasted string.

https://user-images.githubusercontent.com/24370807/195190228-f67f08b0-0971-4a49-ab05-07cd077afa53.mp4

Steps

Steps.

Open the app on the web.
Copy long text from some where (only text no markup).
Paste it on the composer.
Cursor is at the start of the pasted text.

Expected: it should be at the end of the pasted text.
Adding emoji via EmojiPicker in replacement for multiple lines creates a delay before the composer height is calculated.

Add multi-line message in composer.
Selects the multi-line text.
Add an emoji from the picker.
Observe that there is a delay before the composer height is adjusted correctly.

https://user-images.githubusercontent.com/24370807/196530115-2f2dede4-99d9-4074-89e9-19894113fce9.mp4
Selected Emoji is placed in the wrong position.

open the app.
Add three lines of message in composer.
Select some text from the middle line.
Open Emoji Picker and select an emoji.
Notice emoji is placed correctly and the selected text is gone.
Now reopen the EmojiPicker.
Select another emoji.
Notice that new emojis are added to the end of the line (not the previous cursor position).
Repeat from 4 to 6 to observe the same pattern.

[Web]
Pasting image does not send the attached text message.

Type some message in the composer.
Go to  image  and copy the image.
Back to the app and focus after the typed text in the composer.
Press  CTRL+V  to paste the image.
Click send on the opened attachment modal.
Observe the image is sent but the text remained in the composer and Send button is disabled.

Expected: Pressing send on the attachment modal should first send the text and then the image. (See staging for correct behaviour).
There is a delay before Composer expands the height on the web.

Open the app on the web.
type text quickly.
Use Shift+Enter to enter a couple of lines.

https://user-images.githubusercontent.com/24370807/202203404-5c0ad148-2cfe-4ae6-9073-3bfff1333a86.mp4
Cursor position is not focused after picking a emoji in Composer.

Paste the following content in composer.

ASDSADSA
DA😆 🤫 😙
SD
ASDSA
D
ASDAS
DSA
DSA
DAS
D
AS
D

😋 🤫 😋 😋 😋
SADSA
D
ASD
SA
D
SADS
AD
ASDAS
DAS

Now place the cursor after the first three emojies.
Scroll the composer content below so that cursor is no more visible but composer remains focused.
open emoji Picker.
select an emoji.
Notice that cursor position is not revealed.

https://user-images.githubusercontent.com/24370807/210625230-096ab82a-2882-4143-b441-cbc6a02b9a1a.mp4
Content flashing while pasting

Paste the following content in composer.

ASDSADSA
DA😆 🤫 😙
SD
ASDSA
D
ASDAS
DSA
DSA
DAS
D
AS
D

😋 🤫 😋 😋 😋
SADSA
D
ASD
SA
D
SADS
AD
ASDAS
DAS

Now use  Cmd + A  to select the whole content in the composer.
Paste the same copied content to replace.
Notice that there is a flashing of content. (Not present on staging).

https://user-images.githubusercontent.com/24370807/210626606-0dc1ab40-031c-4226-bfbd-7df7ddc3a692.mp4
Edit Message: Copy-pasting is slow.

Edit an old send message.
Copy following to clipboard.

ASDSADSA
DA😆 🤫 😙
SD
ASDSA
D
ASDAS
DSA
DSA
DAS
D
AS
D

😋 🤫 😋 😋 😋
SADSA
D
ASD
SA
D
SADS
AD
ASDAS
DASASDSADSA
DA😆 🤫 😙
SD
ASDSA
D
ASDAS
DSA
DSA
DAS
D
AS
D

😋 🤫 😋 😋 😋
SADSA
D
ASD
SA
D
SADS
AD
ASDAS
DAS

Replace the content on the edit message input with the copied content.
Select everything on the edit composer.
Paste via shortcuts.
Notice that it takes a few secs to replace.

https://user-images.githubusercontent.com/24370807/211291302-a3910abf-893a-4fbb-ae71-f4dcb8b92172.mp4
Cursor jumping or moving positions after picking emoji.

Edit a message or draft a long message on the composer. (Use the content from the previous report).
Place the cursor either before the center or after the center line.
Now pick an emoji.
Notice that the cursor does not remain in the same position even though the previous cursor position was in the view.

https://user-images.githubusercontent.com/24370807/211293351-868f78f0-7b2c-489e-a2b7-db20c2f708ce.mp4
Compose text is not cleared after sending the message
https://user-images.githubusercontent.com/22219519/214962291-e6cfc11f-c451-4c6e-84cc-ba556c92cc25.mov

QA Steps

Same as in testing section above.
Testing adding emojis:

Open a report
Type some text
Add emojis using the emoji picker to the text
Try to add emojis in between the words as well
Try to add an emoji with a part of the sentence selected
Make sure everything behaves as expected
Try the same when editing a sent message

Testing android selection menu
(Only needed on android)

Open a report
Type some text
Select some text
Make sure that the selection menu with copy/paste/cut is showing up
Make sure that you can change the selection (extend/shorten)

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 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 included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

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

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

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product was added in all src/languages/* files
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

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

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

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

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

PR Reviewer Checklist
The reviewer will copy/paste it into a new comment and complete it after the author checklist is completed

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

[ ] iOS / native
[ ] Android / native
[ ] iOS / Safari
[ ] Android / Chrome
[ ] MacOS / Chrome
[ ] 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 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 was added in all src/languages/* files
[ ] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[ ] 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 a new CSS style is added I verified that:

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

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

Screenshots

Web

https://user-images.githubusercontent.com/16821682/195856099-e49abdb0-484a-4d74-bd6a-5c98479a9358.mov
Mobile Web - Chrome

https://user-images.githubusercontent.com/16821682/195856197-40468d71-c44c-464b-8005-6aca0666c983.mp4
Mobile Web - Safari

https://user-images.githubusercontent.com/16821682/195856276-1b14fe60-5130-43da-8009-2f776f1db6f2.mp4
Desktop

https://user-images.githubusercontent.com/16821682/195856883-9143c0fc-4202-4ba3-a3fc-80da61d78c6a.mov
iOS

https://user-images.githubusercontent.com/16821682/195856513-08ff89cc-bcae-4590-bbcc-2fa31853b3c7.mp4
Android

https://user-images.githubusercontent.com/16821682/195856654-4b6bf904-8235-44d1-8704-8a410a5eab7f.mp4

This isn't something that was introduced by this PR, but I find it sort of alarming how great the difference between Composer/index.js and Composer/index.native.js is. At minimum, they should have all the same PropTypes.

Thanks for the review, will address those shortly!
As for the reproduction you might be able to reproduce the performance issue on an iOS device (that's how I was able to reproduce it).

Hey @Julesssss. David still has the issue on his Nexus 5, so the PR doesn't seem to fix that.
However the PR:

Greatly improves the performance while typing a comment
Fixes the android menu missing bug

So i'd say its still worth to merge it?
(I have the ANR reports from david's device, and I will investigate the issue for his issue in a different PR!)

So i'd say its still worth to merge it?
(I have the ANR reports from david's device, and I will investigate the issue for his issue in a different PR!)

That makes sense to me, but I've assigned Pullerbeak to get another reviewer.

I will review in 2 hours or so.

Please add videos or screenshots for all platforms.

Hey, thank you so much for the extensive review, will address those issues now!

Hey guys, hitting a bit of an unexpected blocker due to a native iOS TextInput bug.
Should have a fix for that by tomorrow 🤞

Hey @kidroca thanks for the review. I actually just stashed some work and wasn't done yet, but thanks for having a look anyways already (marked it again as draft while working on it)! I am not settling yet with this whole imperative approach with setTextAndSelection, but still investigating. I think i am actually gonna revert back to using value and selection but just in the "most child" composer component (for performance).
However, i still wanted to compare performance between these two approaches, once with fabric and once without 😊 Will let you know once ready and re-tag you for review (all your other suggestions seem super reasonable, thx!)

Hey guys, thx again for all the feedback!
In case you reviewed in between, I removed the viewCommands stuff, instead, I moved the value state to the Composer component, instead of having it in ReportActionCompose.
I also got rid of the selection prop, and update the selection with textInputRef.setSelection, which is working well across all platforms.

About https://github.com/Expensify/App/issues/8349
the issue is fixed due to the removal of the selection prop. I understand that the solution you were looking for was more to fix it in the react-native native code. This PR wasn't intentionally about fixing this issue, so I'd say it's a nice to have 😊
(however, I do wonder of course what happens to the bounty on the issue, as the fabric update would have solved that issue anyway, no?)

I will review it shortly.

BUG: android: Long Pressing on the text input hides the keyboard and as soon as the long press is released, the keyboard pops back.

BUG: android: Long Pressing on the text input hides the keyboard and as soon as the long press is released, the keyboard pops back.

Hey, I think this is not introduced by this PR, but is actually:
https://github.com/Expensify/App/issues/11915
or maybe looking at the reported issue here makes it more clear:
https://github.com/react-navigation/react-navigation/issues/10927

Thank y'all for the feedback, will apply today!

Hey guys, this is good to get reviewed again. Thank you so much for your patience with me learning to adapt your code style and fixing the bugs you find. Really appreciate y'all effort here 🙌

@luacmartins Oh yeah, sorry, its fixed!

@hannojg can you add test steps to the Tests and QA sections?

Although it is already approved, I am running my tests to make sure of a few things.

https://github.com/Expensify/App/pull/11684#issuecomment-1283044195

This is a serious bug. However, it's on the main as well. I am not able to test anything on android due to this.

@parasharrajat yes, that bug is on main/staging/prod and hopefully this PR should fix that. I got around that on the emulator by using the arrow keys.

@hannojg Could you please merge the main into this PR?

Seems to be working fine but, Android and iOS both have this bug which is preventing me to test the selection menu, etc.

No need to tackle this bug https://github.com/Expensify/App/pull/11684#pullrequestreview-1149860368. It's on the main too.

Should we wait for this https://github.com/Expensify/App/pull/11684#issuecomment-1283044195 to be solved before merging? Selection-based tests are still pending on the latest code. Rest looking good.

Hey, just merged main again into this branch. When merging I realized a new feature has been added that wasn't there when I started this PR. It's replacing a text-code for an emoji as you type (for example typing :cat: gets replaced). I made this code compatible with the feature. We might wanna double test if everything still works (it should 🤞).
For the input bug, yeah, we can wait until that one gets merged. I hope its today, or early next week, and then we can get this PR merged as well 💪

I am on that branch rn, I can apply your suggestions!
(Also in regard to the emoji updating I've updated the code to be fail safe)

Also I am measuring performance right now to see if these changes are really worth it

OK, so https://github.com/Expensify/App/pull/11944 is merged, Please merge main and I will retest.

@parasharrajat done

Thanks.

BUG: Android: No space is applied after the emoji is picked from the picker.

Oh, that's a change we agreed upon on slack https://expensify.slack.com/archives/C035J5C9FAP/p1665560521827199.
Do you know if there was any specific reason for that behavior to be there?

I didn't know about that. I don't have access to that channel. I'll take your word on this. Other than that it seems ready. I will do the final testing tomorrow and we can merge this asap.

Please merge the main as there are conflicts.

Yes will work on it tmr

@parasharrajat good catch, thx, it's fixed.
(Maybe also cc @luacmartins not sure if you wanted to review as well)

BUG: WEB: app crashing on editing a message.

Thx, fixed!

Fixed another issue where the ExceededCommentLength wasn't showing correct values

A few platforms are left to be tested.

done

Testing in progress.

@hannojg I forgot to mention, Could you please add tests and detailed QA steps?

These needs to be done before we can merge

Alright, i fixed the test and hopefully edited the PR description correctly 😄 🤞

@hannojg
QA steps are a must. They are used by the QA team. Please add those. They should be non-technical.
Also, include test steps for these features in the QA steps.

Copy, paste, selection menu on Android and iOS for https://github.com/Expensify/App/issues/8349.
Add a note about why space after emoji is removed in this PR. Add link to the discussion.

Also, Can you please update the PR author checklist from the latest PR template? I think that is the reason it is failing.

Alright, thx for clarification, I added and updated accordingly 👍

Just for the note:

we recently added spaces after emojis in the Edit message as well. Do we need to rethink the decision above? @Julesssss

we recently added spaces after emojis in the Edit message as well. Do we need to rethink the decision above?

Ah nice spot. The problem was that this was discussed n two separate channels. I'd say lets remove the change from this PR and bring any discussion to this issue which is in progress

lets remove the change from this PR

Do you mean to put back the space after the emoji when picked from the emojiPicker?

Yeah, I think no changes to the space should be made in this PR.

cc: @hannojg

alright, i added the whitespace when adding an emoji back!

Quickly testing the whitespace after emoji and we are ready to roll here.

Are we waiting on some changes?

Went through all the requested changes!

Thanks, I think I will have to retest. @hannojg Could you please merge?

Updated @parasharrajat

good catch, fixed!

That is unfortunately a react native bug as reported here: https://github.com/facebook/react-native/issues/35005
However I think it still would be a regression to main branch, right?

Let me test against the main.

This issue exists with the main but that is a little different. On the main, the cursor jumps to the end of the text after the first emoji is selected. But on this branch, the cursor remains in the correct position and still, the emoji is placed at the end.
@Julesssss  Should we fix that issue as well in this PR?

Anyone from the internal team can answer the above question https://github.com/Expensify/App/pull/11684#issuecomment-1322220409?

Ah, nice find. I think we should fix if it's not on main, though I wonder if that is somehow related to the issue we're trying to solve where input jumps to the end.

Alright, will try to fix upstream and then come back to this PR!

@hannojg Please keep us posted on the status. Thanks.

Haven't continued working on it yet, will look into it today. Expect an update within the next hours 😊 👋

Okay, so the bug is circumventable if I fix the order of events.
On iOS it seems that when focussing a TextInput the selection will just get reset to the end. Right now, I update the selection with textInputRef.setSelection when inserting an emoji, and then as the emoji-picker-modal gets closed the text input gets focused which resets the selection to the end.
I have to focus the input first and then update the selection.
Will provide a fix in a moment

Alright, the base is there, however there are still some things that need to be handled different on android. Will provide final fix on monday

Implementation is diverting from what we decided. Let me know when ready so that we can reevaluate.

Okay, code is good to get reviewed again @parasharrajat
Screenshots/Videos

Web
https://user-images.githubusercontent.com/16821682/204363275-ce0b2b28-bb60-4128-82b3-9e628ffe727e.mov

Mobile Web - Chrome
androichrome - mobile.webm

Mobile Web - Safari
https://user-images.githubusercontent.com/16821682/204363381-c37f28b7-976f-435f-85ba-4094f270fc55.mp4

Desktop
https://user-images.githubusercontent.com/16821682/204363456-513231ec-77f0-4669-be03-c72ce8a1c260.mov

iOS
https://user-images.githubusercontent.com/16821682/204363528-be5d0125-9360-4be0-bcb0-03d3d6f9b8d8.mp4

Android
android.webm

Performance comparisons
I ran this branch against the main branch to see if the performance improvements are still relevant, I feel that they are.
The testing procedure:

Sign in with a existing high traffic account user
Open a chat
Let the app open for 20 seconds for it to load all data and finish rendering
Start the flipper performance profiler measuring tool
With the help of ads input text rapidly adb shell input text "hello\ this\ is\ some\ repeatable\ sample\ text\ that\ we\ use\ for\ performance\ profiling\ to\ check\ if\ the\ performance\ has\ improved\ in\ this\ PR\ hello\ this\ is\ some\ repeatable\ sample\ text\ that\ we\ use\ for\ performance\ profiling\ to\ check\ if\ the\ performance\ has\ improved\ in\ this\ PR"
End once the input has finished

The results:

main
This branch

The tests were conducted on a fairly powerful android device. The FPS was kept at 60 FPS, however we can see that on the main branch implementation there is a severe UI hit. Here is the graph in detail:

On a lower-end device that would have meant a significant UI FPS degradation (my lower-end device is broken currently, so couldn't tested with it).

Thanks for the review, updated it again!

Wit be testing it again now.

yeah, checking this one now.

Oh a 100% I forgot that component. @parasharrajat you are always reviewing so accurate and attentive, thank you so much for it 🍀 !

Thanks for the changes. Looking now.

Alright @parasharrajat , the edit composer component is now fixed as well!

@parasharrajat which browser were you using? I can't reproduce the issue (however, there're also seems to be an issue right now, where I can't edit messages I have just sent 🤷 )
https://user-images.githubusercontent.com/16821682/206681135-6a56842b-8395-4aa6-a6f8-aa60b6110ded.mov
Maybe that issue also resolved due to me merging with main 🤔

@parasharrajat did you get a chance to test this again?

@parasharrajat are you still facing issues logging into the app?

Any updates @parasharrajat?
FYI - Conflicts @hannojg

How did testing go?

Good to get reviewed again 😊 @AndrewGable @parasharrajat

@parasharrajat - Can you please prioritize testing this one? Thank you 😃

Great to see all the moment in this PR. Let's keep it going to get it merged soon!

Agree - @parasharrajat we are excited to see your results soon 🤞

@hannojg just making sure you've seen this so Rajat can continue the testing?

Bump! @hannojg can you please merge main so @parasharrajat can continue testing?

I have this on my plate for Monday morning!

Merged main, the lint failing job is also happening on main right now

@parasharrajat This is good to get tested again. I took an extra careful look on web this time to make sure everything is bug free 😄 👍

@hannojg tests are fixed on main. Could you please merge main?

@parasharrajat did you get a chance to test this yesterday?

Agree, will create this list and will use it for testing after making changes before passing it again to you for testing

@luacmartins first issue is addressed, second one is by design:

https://github.com/Expensify/App/pull/11684#issuecomment-1301959329
https://github.com/Expensify/App/issues/12314

Didn't completed testing yet, will finish tomorrow morning 😅👍 (there are still a few boxes unchecked)

@hannojg I went through all tests above and found that the following issues are still reproducible:
Cursor position is not focused after picking a emoji in Composer.

[x]  Chrome
[x] mWeb Safari
[x] mWeb Chrome
[x]  Desktop
[ ]  Android (fail - cursor always updates to be visible when scrolled)
[ ]  iOS (fail)

https://user-images.githubusercontent.com/22219519/215610647-73306d71-cf3d-4acf-9d98-769a54acc772.mov
Cursor jumping or moving positions after picking emoji.

[ ]  Chrome (fail)
[ ] mWeb Safari (fail)
[x] mWeb Chrome
[ ]  Desktop (fail)
[x]  Android
[x]  iOS

Compose text is not cleared after sending the message

@luacmartins thank you so much for testing! I now finished testing as well (after merging the main again).
Unfortunately, I can't reproduce the issues you are describing. For the android video, you attached: that's the default behavior of the TextInput and it's the same on the production app.
Would you mind testing again? 😅 😊
Also @parasharrajat I am confident now to pass that to you for testing, as I wasn't able to catch any bugs right now 😄

@hannojg here's a video for Cursor jumping or moving positions after picking emoji on web
Main
https://user-images.githubusercontent.com/22219519/216176648-99891819-0708-48d6-bb24-22a2708cc61e.mov
Staging
https://user-images.githubusercontent.com/22219519/216176635-401ba38d-4727-475e-9026-5b8fe35676fa.mov

For the android video, you attached: that's the default behavior of the TextInput and it's the same on the production app.

Yes, this seems to be the case and we are good on android. However, iOS still seems to have the issue:
https://user-images.githubusercontent.com/22219519/216176968-69a66aa0-8b73-44c7-b822-204c62529a10.mov

@hannojg can you please merge main, so we can test again?

Bump @hannojg

@hannojg I'm seeing the following console error when trying to save an edit. We created getCommentLength in this PR and it seems to work well on main, but it's not playing nicely with our changes here:

Hi, yes, I should have set the PR to draft, while working on it. Still working on those changes! Will lyk once fixed and ready for review 😊 (appreciating you guys are pushing this forward!!)

Ah cool, thanks for the update! Yea, let's get this merged!

@hannojg I see that the save edit bug is fixed. Are you still working on some other fix or can we continue with testing?

Hey, please don't continue testing as long as the PR is in draft. The bug on iOS wasn't easily fixable so I need to have a second look at this. I anticipate this to take 4-6 more hours of work.
Will let you know once that happened (approx. by Wednesday), thx again for trying to get this out <3

@hannojg I know that you are prioritizing other projects at the moment, but I just wanted to check in and see when you are expecting to focus on this one again?

@hannojg bump this comment

Hey @luacmartins I currently went back to the drawing board to find a good working solution for the set of specifications we have. As the emoji reactions are worked now this issue is back on my plate and being worked on 😊

Nice! Thanks for the update ❤

Any update here, @hannojg?

Yeah, this PR aims do to two things:

Fix this bug on Android (https://github.com/Expensify/App/issues/8349)
improve the performance of the report screen when entering a chat message

For the first point I went with a different approach an created a fix for within react native itself.
The PR can be found here:

https://github.com/Expensify/react-native/pull/50

Once this PR is merged I will revisit this PR and make it only about the performance improvement :)

Okay, cool. Shall we update the holds then to reference the PR we're waiting on: https://github.com/Expensify/react-native/pull/50?

Shall we update the holds then to reference the PR we're waiting on

Definitely!

@hannojg I know that this PR has been open for a while, but I think it makes sense to put it on HOLD for https://github.com/Expensify/App/issues/16263

Oh yeah, agree @roryabraham

Also as an update, I am not sure if the problem is really fixable within react native's code base.
After evaluating this carefully it seems to me that:

If you want to keep the selection menu working on android while manually controlling the selection of a TextInput you have to use an imperative approach (e.g. calling textInputRef.setSelection instead of using the selection prop)

Which this PR is about.
Will still wait for meta's final response if they agree on this.

I'm a bit behind on this PR. What are the next steps?

Will still wait for meta's final response if they agree on this.

Did we get anywhere here?

We found a native fix. I am double-checking today If this PR is still needed 😊

We found a native fix. I am double-checking today If this PR is still needed 😊

Dope! What's the verdict?

@trjExpensify So I did another performance check, on my weakest device it shows that there is room for improvement.

However, I'd like to redo the PR. As the original PR also aimed to fix the selection bug on android, i used for example the imperative API to update the selection of the input, which introduced a lot of regressions.
As this bug is handled in another PR, i don't think this approach is needed anymore.
I just want to try to improve the performance by moving the state away from the screen into a dedicated sub component.
If I understand you correctly, you like to keep this original PR right?

If I understand you correctly, you like to keep this original PR right?

Not necessarily man, it has just been open for a long time in this limbo draft and I see from time-to-time other issues on hold for it / referenced as potentially fixing a related problem. So I don't have a strong opinion on proceeding with this PR (just that we do something with it haha), Closing it and starting over elsewhere for the performance considerations is probably better.

Closing it and starting over elsewhere for the performance considerations is probably better.

@trjExpensify Alright awesome, let's do that please. Also we should create a performance issue first and start from there.


Converted all Readmes to markdown

Converted all readmes to markdowns
Also created links to navigate the mark down files

Doesn't work, OpenSSL fails silently

Problems with the instructions (issues created)


Improved Logging of Warnings in Certain Situations

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
A couple of instances that I have noticed that standard logging/print to screen does not show an error/warning that I would expect and would be helpful for troubleshooting.

Error updating Git repository (in my instance it was an auth error) leading the user to believe Recyclarr is deploying from the latest commit on the repo but may be deploying from the last commit checked out by the local cache. I would expect to be warned that the update failed.
- Including a Quality in a Quality Profile that does not have qualtity definitions on the guide. I noticed this with Bluray-576p not being added to my Profile until https://github.com/TRaSH-Guides/Guides/commit/1eb8245fc3024a092e86d042592084b280ea113e. I would expect Recyclarr to notify me there is a listed Quality it cannot handle as the user would expect.

For the first point, I need an example of what kind of auth error you're talking about. Since the clone URLs use https, access is allowed without authenticating.
For the second point, could you please provide a YAML config I can copy and paste for testing purposes?

Second issue relating to Quality Profiles appears to be invalid. I cannot reproduce it again.

Thanks for the update owine. I'll go ahead and close this as resolved. If that second issue ever pops up again in the future, please open another bug report and I'm happy to jump on it!


Discrepancy in UI between search and top search, the trait page does not include child traits

For cardiovascular disease, with 'child traits' ticked, the number of associations is 331. When unticked and re-ticked, the number is 5027.
https://www.ebi.ac.uk/gwas/efotraits/EFO_0000319

From gwas-info -<EMAIL_ADDRESS>

The user detected the discrepancy between the number of associations and studies for Cardiovascular disease in the search and the number of associations and studies when selecting the top search results.
The same is happening for cancer, maybe a problem when the EFO has lots of child traits?

The same bug was reported by user Thomas Kollmeyer on 10 May for glioma and other traits. Glioma only has 125 associations so this is not limited to large traits.

I have a fix for this in branch issGOCI48_trait_page_child_term_loading.
When we have time to test and make any needed updates we can review.

@twhetzel let me know when/where this is ready for testing

@ljwh2 this is deployed to Snoopy 9580 (I've taken over both dev servers to test items for the next release)

I have tested and all looks good, ready for release.
I note that loading of large traits is very slow. A fix for this is out of scope for this ticket, but would be good to document if you have any thoughts on how this can be improved in future @twhetzel

Merged into dev to prepare for the release


Migrate doesn't create table based on dir

Table doesnt appear to be creating on sls offline start, I have also tried serverless dynamodb migrate but no table created. Is this a problem with serverless-dynamodb not supporting the migration object? During testing I do have my amazon/dynamodb-local image running
custom:
    serverless-dynamodb:
        start:
            docker: true
            port: 8000
            inMemory: true
            migrate: true
            seed: true
            convertEmptyValues: true
            noStart: true
        migration:
            dir: offline/migrations

Could you clarify the behaviour you expect to get with migration.dir?
As far as I can tell, this doesn't seem to be documented or implemented in either serverless-dynamodb or serverless-dynamodb-local, but I might have missed something :)

Ah it looks like it might be based on this example, which is using an 8 year old version of serverless-dynamodb-local. The API has changed a lot since then - I'll raise a PR to fix this example so you can see how to achieve the same with the seed key.
In the mean time, you can check out the README for examples on how to seed data: https://github.com/raisenational/serverless-dynamodb?tab=readme-ov-file#seeding-serverless-dynamodb-seed
If this isn't correct, let me know and I can reopen this issue. Thanks for bringing this to my attention :)

Ah it looks like it might be based on this example, which is using an 8 year old version of serverless-dynamodb-local. The API has changed a lot since then - I'll raise a PR to fix this example so you can see how to achieve the same with the seed key.
In the mean time, you can check out the README for examples on how to seed data: https://github.com/raisenational/serverless-dynamodb?tab=readme-ov-file#seeding-serverless-dynamodb-seed
If this isn't correct, let me know and I can reopen this issue. Thanks for bringing this to my attention :)

Thank you for getting back to me. Yes, I am referring to the same functionality from the serverless-dynamodb-local example that you linked. The primary goal I am trying to achieve is to perform the database migration locally using just the JSON file, instead of the required resources within the serverless.yml file. This is because I intend to use Serverless only as a local testing tool for my Lambda functions and to use Terraform for deployment.

Ah that makes sense. I think you might be able to implement that by:

Using serverless.js or serverless.ts, and then conditionally rendering the resources block based on stage. Examples:

https://www.serverless.com/framework/docs/providers/aws/guide/intro#alternative-configuration-format
https://youtu.be/A6l-wiwA4io?si=-2ztmsxJTKruByez&t=579

Using a plugin like serverless-plugin-ifelse


Update dependencies

go-github was bumped up from v26 to v27.
This PR follow it.
refs: #220 #222 #223

@haya14busa I got message reviewdog: status=400: POST https://api.github.com/repos/reviewdog/reviewdog/check-runs: 401 Bad credentials [].
How should i proceed?

Rerunning CI fixed the problem.


Formatting Information

[Enter feedback here]Formatting Information:   I'm a bit of a stickler folks, but as I grew up, info was presented in a very different way.  A program presented for download was presented with the most up-to-date version available, and not referencing people to some location farther down the page.
Additionally, basic documentation on what the program is, what is does, how it does it, etc. should be near the front or at least be at an easily referenced subsection for first time users.

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

ID: 5ad81361-15d8-0e95-9d5f-090dbf270f10
Version Independent ID: c0c32397-d5d6-cce1-79fd-c310bec05240
Content: SetupDiag
Content Source: windows/deployment/upgrade/setupdiag.md
Product: w10
GitHub Login: @greg-lindsay
Microsoft Alias: greglin

@officedocsbot assign @jvsam


Semantic API doesn't contains annotations of the modules pulled by central

Description:
$Subject.
However semantic api works just fine, when the module is in the same package(as a module)

When the module is pushed to the central (or local repo), semantic api does not return the annotations.
Steps to reproduce:
Working code - https://github.com/ballerina-platform/module-ballerina-c2c/tree/master/c2c-extension-test/src/test/resources/service/expose-int-or-http
Module Code - https://github.com/ballerina-platform/module-ballerina-c2c/blob/master/c2c-extension-test/src/test/resources/service/expose-int-or-http/modules/mod/mod.bal#L21
Affected Versions:
slbeta3
OS, DB, other environment details and versions:
Related Issues (optional):

Suggested Labels (optional):

Suggested Assignees (optional):

Could potentially be due to #30222

This requires changes to current BIR model. Hence, we need to prioritize this for GA.

The main issue of annotation attachments not being available in the BIR is being tracked with https://github.com/ballerina-platform/ballerina-lang/issues/16379.
This particular case seems to be a requirement for parameter annotations. These are not added to the BIR yet.

Closing this since as per the above comment, the particular issue raised here is addressed.


stdbuf: move from getopts to clap

I'm unsure about how closely the behavior of the GNU original should be mimicked when checking options:

is it okay to just use claps default message in case no MODE option is set?
when attempting line buffering stdin, stdbuf prints Try 'stdbuf --help' for more information. but not when an invalid mode is set. The current uutils implementations prints it in any case. Should this behavior be kept or should it behave like the GNU implementation?

And lastly, should I add integration tests or should this be done in a seperate issue?
closes #1930

And lastly, should I add integration tests or should this be done in a separate issue?

Yeah, please add them here :)

great work
thanks

great work
thanks

happy to help :)

One of the test is failing:
https://github.com/uutils/coreutils/pull/2065/checks?check_run_id=2316259656
---- test_stdbuf::test_stdbuf_invalid_mode_fails stdout ----
current_directory_resolved:
run: /target/x86_64-unknown-linux-gnu/debug/coreutils stdbuf -i 1024R head
thread 'test_stdbuf::test_stdbuf_invalid_mode_fails' panicked at 'Broken pipe (os error 32)', tests/common/util.rs:806:37

could you please have a look?

This doesn't seem to occur regularly. In other CI runs, the test passed fine: here and here, for example. Could this be similar to the issue described in #2054?
If that's the case, removing the pipe_in instructions for all fail test cases should fix the problem. I'll open a PR for this (unless you want me to create an issue first?)


RxHttpRequest.request is not a function

documentation looks like there is a request function on RxHttpRequest but I don't see it in the src. Is there a way that we can change the mode of a request made?
Essentially I am trying to get around an issue where third party api does not have an Access-Control-Allow-Origin header in the response headers therefore I am getting
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Any thoughts?

Yes isn’t because it’s RxHR.request
And for security reason I don’t understand why you want to access API in your browser without CORS.
If API doesn’t provide CORS headers it’s maybe they don’t want you access to it by a browser

Was using old api docs - sorry.


ORecordSerializerBinary

I'm using Orientdb 2.1.8 and found this error in my logs:
com.orientechnologies.orient.core.serialization.serializer.record.binary.ORecordSerializerBinary - Error deserializing record with id #22:1 send this data for debugging: ABZvY19jaGFubmVsc20AAAFfaQAAAWCPAQAAAWaRAQAAAXaTAQAAAXmVAQAAAX+XAQAAAYKZAQAAAYabAQAAAYmfAQAAAY+dAQAAAZMwb3V0X2NoYW5uZWxfc3Vic2NyaXB0aW9uAAABlhYqb3V0X2NoYW5uZWxfYV9zZXJ2aWNlAAABpRYqb3V0X2NoYW5uZWxfY19zZXJ2aWNlAAABtBYiaW5fY29uZmlnX2NoYW5uZWwAAAHDFihvdXRfY2hhbm5lbF9hX2NvbmZpZwAAAkAWKG91dF9jaGFubmVsX2NfY29uZmlnAAACbRYqaW5fdG91Y2hwb2ludF9jaGFubmVsAAACwhZrAAAC7xRhX2N1cnJlbmN5AAAC9QcUY19jdXJyZW5jeQAAAvkHKmluX3Byb2R1Y3RfY2hhbm5lbF9pZAAAAv0WImluX2dzbG9nc19jaGFubmVsAAADDBYAAvjZ+u22VB5NYWdlbnRvLUFtYXpvbjIEcm8KZW5fdXMEbWEGc3QxBGRlCmRlX2RlBnN0MgRhbQEAAAABACIAAAAAAAAAAQEAAAABACMAAAAAAAAAAQEAAAABACQAAAAAAAAAAQEAAAAMACYAAAAAAAAADAAmAAAAAAAAAA0AJgAAAAAAAAAOACYAAAAAAAAADwAmAAAAAAAAABAAJgAAAAAAAAARACYAAAAAAAAAEgAmAAAAAAAAABMAJgAAAAAAAAAUACYAAAAAAAAAFQAmAAAAAAAAABYAJgAAAAAAAAAXAQAAAAQAJwAAAAAAAAAEACcAAAAAAAAABQAnAAAAAAAAAAYAJwAAAAAAAAAHAQAAAAgAKAAAAAAAAAAIACgAAAAAAAAACQAoAAAAAAAAAAoAKAAAAAAAAAALACgAAAAAAAAADAAoAAAAAAAAAA0AKAAAAAAAAAAOACgAAAAAAAAADwEAAAAEACkAAAAAAAAABAApAAAAAAAAAAUAKQAAAAAAAAAGACkAAAAAAAAAB4L7++22VAZyb24GZXVyAQAAAAEAKwAAAAAAAAAAAQAAAAIALQAAAAAAAAAAAC0AAAAAAAAAAg==

Hi @tzsolti
Do you have some stack trace or additional error log? i checked that debug information and everything was fine.
Regars

Hi. No this is all I had in the logs.

Ok, if there are no other stack trace, should be all right, this log in 2.1.x is printed also in case of some managed exception like OConcurrentModificationException, the wrong printing is already solved in the last develop version.
I think we can close this issue.

Thanks for checking. I'm closing it.


not going to voicemail

Describe the bug
phoneline isnt going to voicemail, i currently don't have a custom voicemail mp3.
What version are you running
2.0.1
my php_error log has this in it
[24-Jul-2018 12:59:56 America/New_York] Dialing voicemail
[24-Jul-2018 12:59:57 America/New_York] PHP Fatal error:  Uncaught Twilio\Exceptions\RestException: [HTTP 400] Unable to update record: Url is not a valid URL: /voicemail.php?service_body_id=1&caller_id=843-852-3001&caller_number=+15089391663 in /home/charl767/bmlt/yap/vendor/twilio/sdk/Twilio/Version.php:85
Stack trace:
#0 /home/charl767/bmlt/yap/vendor/twilio/sdk/Twilio/Version.php(133): Twilio\Version->exception(Object(Twilio\Http\Response), 'Unable to updat...')
#1 /home/charl767/bmlt/yap/vendor/twilio/sdk/Twilio/Rest/Api/V2010/Account/CallContext.php(108): Twilio\Version->update('POST', '/Accounts/ACbd6...', Array, Array)
#2 /home/charl767/bmlt/yap/helpline-dialer.php(78): Twilio\Rest\Api\V2010\Account\CallContext->update(Object(Twilio\Values))
#3 {main}
thrown in /home/charl767/bmlt/yap/vendor/twilio/sdk/Twilio/Version.php on line 85

url of your yap instance?

https://bmlt.charlestonna.org/yap/

web hook in twilio https://bmlt.charlestonna.org/yap/index.php?override_service_body_id=1

I believe this issue might be related to a bug with using forced caller id.  Will have to validate this later.

yes as I turned that off and its working now, ill just leave it off for now and turn on sms notification.

I'll work on a patch this evening.

thanks!

this works as expected now, thank you very much. this was on a working helpline so I really appreciate it.


Maya: don't add reference members as connections to the container set 📦

Fix
This is modifying reference loader behavior so it doesn't add all reference content as a connection to the container set. Those connections make scene much bigger and slower to load (and with heavy rig to the point of unusability). For more details see #1854
⚠ this is affecting every point in workflow where references are used
|---|
Testing
When loading references, you should see only reference node (*_RN) under AVALON_CONTAINERS/your_subset. To see AVALON_CONTAINERS in Maya, check Ignore 'hidden in Outliner' in Outliner options:

Close #1854

I've tried checking as much as I could think of including some nested referencing and it seems to work quite well apart from one thing, and I'm not sure if it's related. With this PR, I can only get assets into look manager from selection, but get all assets doesn't work.

hmm, that happens to me too. It is probably related to the way how content of _CON sets is used to determine assets loaded in the scene and because now it is only that reference node, it is broken.


ERR_OPENING_MEDIA

When trying to install the addon (After configuring it) I get the following error:

https://github.com/Gabisonfire/torrentio-scraper-sh/issues/4


Fixed using IME at the beginning of a soft newline.

Summary
In Webkit browsers, composition at the beginning of a soft newline will create new text nodes.
Which makes the block leafs & selection into a strange state and lead to bugs.
I guess it's just like the issue of composition at the beginning of a leaf.
Here is one of the bugs:
Step:

Open Facebook notes editor (because it can insert soft newline).
Type any words like abcd.
Press shift+return to insert a soft newline.
Enable IME (Chinese pinyin for example), type caogao, and press space.
Type ., you'll see the first line been removed.
Press cmd+z will recover the first line. (It was the editOnInput handle for ., that replace the whole block with the text after the \n)

This GIF shows it.

And the new text nodes it created after the composition:

To make it easy to test,    26dfa8e enabled soft new line in rich example. I can remove this commit after you tested it. If you'd like to keep it, I can sync it with the homepage.
Test Plan
Same as the step above.
Thanks for review!
EDIT:
Latest Chrome has fixed this bug, but it still exist in Chrome 54 & Safari 10.0.3

Thank you for your pull request.  As you may know, we require contributors to sign our Contributor License Agreement, and we don't seem to have you on file and listed as active anymore.  In order for us to review and merge your code, please email<EMAIL_ADDRESS>with your details so we can update your status.

Thank you for signing our Contributor License Agreement. We can now accept your code for this (and any) Facebook open source project. Thanks!

Hi @houkanshan - thanks for submitting for this! I really appreciate the detailed instructions for reproducing one of the bugs.
We have released a couple of versions of Draft with bug-fixes for IME, and I'm no longer able to reproduce the bug you described. We may have fixed this behavior when making other improvements - but I know there are still open problems with IME, and so please reopen this or ping me if there are other problems with soft newlines which this could fix. :)

@flarnie Thank you for your reply!
I've tested on Chrome 54 & Safari 10.0.3 (with macOS Sierra). The first line won't be removed, but the caret will jump back to the head, as the gif shows:


apt-get install

What was wrong?
Missing Keyword Install
How was it fixed?
Added Keyword Install

Thanks!


Does not render in reading view

In reading view once a timer is started it no longer renders, it shows up as a block of code.
Everything works as it should in live preview.
This is what I am seeing in reading view:

And this is what I see in Live Preview:

Hmm, I don't seem to be able to reproduce this on Windows Desktop? What device are you running this on, and do you have any special plugins installed that may break reading view?

I found the issue. It's not compatible with the Tables Extended plugin.

Hi! Please reach out to the author of the Tables Extended plugin with a reference to this issue so that we can get it sorted together! I don't really see a reason why this would be happening on my end, so I'd love some insight from them :)

The Tables Extended plugin hasn't been updated in two years and a similar issue with other plugins has been reported.

Okay! I'll close this for now, then.


Set scope=provided

Setting the scope of the target libraries of instrumentation to "provided". It is a guarantee that the integrating codebase will provide these libraries, otherwise the instrumentation plugin would be moot if the codebase does not already have these libraries.

Pull Request Test Coverage Report for Build 206

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+4.2%) to 4.194%

Totals

Change from base Build 205:
4.2%

Covered Lines:
1086

Relevant Lines:
25897

💛  - Coveralls


(Extremely) minor changes in readme text

Hi @mehmandarov , thank you for these suggestions. This PR didn't pass Eclipse validations. Have you signed the Eclipse Contributor Agreement already - https://www.eclipse.org/legal/ECA.php?
Since the changes are very minor, if you don't want to bother with the ECA I can do the changes myself. But signing the ECA would help if you contribute to any Eclipse project in the future anyway, so I encourage you to do that :-)

Yes, I have done that. Not sure though how to check if it is ok now?

@Emily-Jiang: I am trying to do that. I have managed to signe off the last commit and have signed up for ECA, but it still seems to fail. Any proper way of checking that without pushing a new commit?

The other suggestion is to squash the commits or ditch this one and create a new one PR.

Ok, I will send another request. Closing this one. Sorry about that. Just want to get this IP-validation thing sorted.


[stable/magento] Add option to enable initialization extra logs

Signed-off-by: tompizmor<EMAIL_ADDRESS>
What this PR does / why we need it:
Adds a new option to enable debug logs while initializing the pod. It is very useful to debug initialization errors.
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[X] DCO signed
[X] Chart Version bumped
[X] Variables are documented in the README.md

/ok-to-test
/lgtm


[Apple Reminders] Create reminder crashes with TypeError

Extension
https://www.raycast.com/raycast/apple-reminders
Description
Error:
TypeError: t?.find is not a function

Nd:create-reminder.tsx:59:37

---
56:   mutate?: MutatePromise<{ reminders: Reminder[]

### Steps To Reproduce

1. Configure 'Create reminder' as crl+Q
2. Input shortcut to create a new reminder
3. Error "Something went wrong' occur

### Current Behaviour

_No response_

### Expected Behaviour

_No response_

Also reported in this comment.

I've shipped a fix, so the extension should work within a couple of hours. Please note that you can manually get updates by running Check for Extension Updates.


output

hello everyone, how much I try to do :
qs.reports.html(returns=stock,benchmark=bench,output="report.html")
I get the following error:
UnicodeEncodeError                        Traceback (most recent call last)
 in
----> 1 qs.reports.html(returns=stock,benchmark=bench,output='1.html')
~\Miniconda3\envs\quant\lib\site-packages\quantstats\reports.py in html(returns, benchmark, rf, grayscale, title, output, compounded)
    205
    206     with open(output, 'w') as f:
--> 207         f.write(tpl)
    208
    209

~\Miniconda3\envs\quant\lib\encodings\cp1252.py in encode(self, input, final)
     17 class IncrementalEncoder(codecs.IncrementalEncoder):
     18     def encode(self, input, final=False):
---> 19         return codecs.charmap_encode(input,self.errors,encoding_table)[0]
     20
     21 class IncrementalDecoder(codecs.IncrementalDecoder):

UnicodeEncodeError: 'charmap' codec can't encode character '\u2212' in position 649916: character maps to <undefined>

Any solution?
Thank you very much for your work!

In reports.py fix next line
with open(file, 'w') as file:
to
with open(file, 'w', encoding='utf-8') as file:

Thanks! will do


Visual Studio 2015 intellisense broken after installing Typescript <IP_ADDRESS> Beta

Just installed latest typescript from download link available in typescript blog (https://blogs.msdn.microsoft.com/typescript/2016/01/28/announcing-typescript-1-8-beta/)
and downloaded installation exe from link provided
http://download.microsoft.com/download/6/D/8/6D8381B0-03C1-4BD2-AE65-30FF0A4C62DA/TS1.8.1-Beta-TS-master.20160126.1/TypeScript_Dev14Full.exe
When i open any ts file in vs2015, code is entiry black and reserved words do not appear blue. Also when trying to use '.' to list class members, nothing happens.
Noticed also another issue with 1.8 beta with .sln web projects (not sure is it related?) . In Project.Projerties.TypeScript Buid tab, the Tab Header is empty text and content of tab displays only text
An error occurred trying to load the page.
d4683cae-88c4-4b85-863d-ac8014f3ba36

Update: Visual Studio 2015 is installed on D: drive. Could this be installer problem?

// cc @yuit @paulvanbrenk

This is an issue with the installer. we should have this fixed in the next 1.8 release.
As a workaround, you should have a folder on your C drive under, C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript, please copy that to D:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript, and from a Visual Studio Command prompt, run devenv /setup.
Sorry about the trouble.

Thank you very much! Workaroud helped and You really saved my week!
Hopefully this is fixed also in coming TypeScript betas in the future. Looking forward and thanks again.

Seems that I am not able to debug TypeScript applications any more after upgrading 1.8 beta. Js files and symbols  (map files) are generate, so the compiler is working but breakpoints says 'The breakpoint will not currently be hit. No symbols have been loaded with this document.' I was able to debug prior update. I have an ASP.NET web application which I usually debug with Internet Explorer. I appreciate any help to get debug working again.

:+1:

@codewithtomi another set of dlls need to be copied to the correct location manually for debugging to work. the binaries are in C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\Debugger (**\TypeScriptDebugEngine.resources.dll, TypeScriptDebugEngine.dll, and TypeScriptDebugEngine.vsdconfig)

@rgripper is your VS installed to D:\Program Files (x86)\Microsoft Visual Studio 14.0 ?

I copied missing files (an resource folders)  that was missing. Here's comparison result of files that was missing.

At the moment I start application debug, all breakpoints in ts code turns to  white and hovering over one shows the same message ' will not be hit...' . I did run also devenv /setup just in case. Perhaps I am missing something still?

@mhegazy Argh, good point! I have VS on D: but in different folder, but I also have rubbish D:\Program Files (x86)\Microsoft Visual Studio 14.0 left from other installation of windows %). Now everything works, thanks!

@codewithtomi I think you may be missing this file:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PrivateAssemblies\TypeScriptSourceMapReader.dll

Hi
Good news! I get TS debugging working....
Following folders are under C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7

Need to copy IDE\PrivateAssemblies
TypeScriptSourceMapReader.dll

IDE\Remote Debugger   (x86 and x64 foders) file TypeScriptDebugEngine.dll in both...
I replaced older version from December in correspoding folder in D:

IDE\Remote Debugger\x64\TypeScriptDebugEngine.dll

Thank you very much!

Could you please verify, should I revert the steps 2) and 3). I was just investigating by my self before reading @paulvanbrenk's comment.

@codewithtomi your changes all look good, they may only be needed in some specific scenarios, but they don't hurt.

I seem to have the same issue, but all of the above DLLs are in place and still no debugging. Intellisense is working, however.

@davismj this looks like a different issue. can you provide more information. what did you install and what is working and what is not, do you see this on multiple machines or a single one? does repair on the installer solves the issue?

I only have one machine so I can only test on this one.
Link to the typescript install I'm using here:
http://download.microsoft.com/download/6/D/8/6D8381B0-03C1-4BD2-AE65-30FF0A4C62DA/TS1.8.1-Beta-TS-master.20160126.1/TypeScript_Dev14Full.exe
From this page:
Announcing TypeScript 1.8

I am having the same issue in 1.8.2 (Visual Studio 1.8.4)

@davismj can you please file a new issue and share your install logs, %temp%\dd_Typescript*

@mhegazy  How can I tell if @davismj ever submitted a new issue and shared his install logs?
I am having the same exact issue.  I will file a new issue, but would like the team's help in knowing what I can do to help reproduce and fix.
My issue only happened after I uninstalled Enterprise Edition trial, then re-installed it using a Corporate provided installer.  I notice this Corporate provided installer has the /NoWeb flag set, probably for security purposes, since as developers we are allowed to run VS in admin mode in order to effectively debug code.


Windows: Top (non-)implementation

Signed-off-by: John Howard<EMAIL_ADDRESS>This gives a clear error message that docker top is not (yet) implemented on Windows. As opposed to the previous error 'GetPidsForContainer() not implemented'.

LGTM

LGTM

LGTM


feat: fallback avatar to initials on image load error

Fallsback the avatar image to initials when the image fails to load

Fixed in #353.


treewide: bump copyright year to 2021 in generated files

test-me-please

test-me-please

retest-net-next

retest-net-next


DEPS.xwalk: Roll chromium-crosswalk (f3c69fc..b53bd1c)

b53bd1c Merge pull request #386 from rakuco/gn-rssdk
f1476d3 [Windows] GN: Add missing RSSDK files in media/.

RELATED BUG=XWALK-7336

LGTM


add action ac001 to cluster scope cl002

Checklist

[ ] Update changelog in CHANGELOG.md.

Context
All this code is generated by the tool itself. We will use ac001 for cluster creation.

You may have seen it but it seems that the generated code still fails linting.


Prepare docker-based tests for docker

Right now, I have only a PoC:
https://github.com/SpisTresci/cookiecutter-django/commit/8861b050c6f2ae61831cdaaeeb7c234637913423
Right now, as far as I know travis and circleci allows using docker images for tests. The whole trick is, to use docker container, to build and test other docker images. This is possible, with jpetazzo/dind image, however this image require a possibility of adding an option --privileged to docker run, and I am not sure, whether Travis or Circle allows doing that.
I have found some articles/code, which suggests, that this is possible

http://joshsymonds.com/blog/2015/02/04/chef-cookbook-continuous-integration/
https://news.ycombinator.com/item?id=8143424
https://github.com/feedforce/tech.feedforce.jp/blob/master/source/posts/2015-03-13-serverci-by-docker.md

Nevertheless, some additional research is required.
The good this about this kind of test is that they allow dev, debug and production configurations, and much more. Sky is the limit! :)

While triaging old issues I stumbled upon this which looks implemented since I started using cookiecutter-django. By the look of it, it was implemented in #507 which is now merged. I assume it's now fixed, therefore I'm closing this issue. Good work on this @noisy


Trying to access to a non-existing or a non-owned site hangs indefinitely

If the user tries to access to a screen with a non-existing site id, let's say:
http://dashboard.worona.org/check-site/foo , then the interface hangs saying "Retrieving data..." indefinitely.
Same happens if user tries to access to a deleted site or to a site which she doesn't own.
A possible solution would be to add a timeout and redirect to /sites in case that the page has spent too much time to render.
Another possible solution would be to check against the server if the site id exists and is owned by current user.

I think that the second approach is better.

check against the server if the site id exists and is owned by current user .

And display an error message in the client

The drawback of doing that is we need to do an extra call to the server just to verify if the URL is valid for this user.

Can't we do it in the same server call used to retrieve the data?
The server instead of not answering could answer with an error message.
I'm not sure if this works with our current architecture.

Well, It isn't like server is not answering to a request or anything like that. This what happens:

subscriptions package: Server retrieves the subscriptions data owned by logged in user, when user logs in.
bulma package: UI tries to show check-site screen for foo and blocks ("retrieving data") until foo is loaded in the client.

As user doesn't own foo (actually foo isn't even an existing siteId ), the site foo never arrives to the client and UI waits indefinitely.
These two are different packages not related to each other, they both run in parallel and are not directly connected one to the other.
The second approach involves to do a specific server call in order to confirm if the URL is for a siteId that exists and user owns. For this to be consistent, it'd have to be made in every screen that the app has an URL pointing to a siteId. But note that if the URL is OK, this call isn't necessary at all since eventually the client will get the site subscription and the UI will be automatically refreshed.
Perhaps the best solution would be a combination of both: We could add a timeout and when the time out expires, if no requested site has been retrieved, it can trigger a check against the server in order to know if it is a valid URL for the current user.
Moreover, there's a another possible scenario where user has dropped in a very bad connection. In this case, the requested URL is OK for the user but the site subscription never arrives. We could take advantage of the solution above to check also if what happens in reality is that user has dropped to a very bad connection, even when the URL is right.
Anyways we should leave this until First Lauch :rocket: ; because this isn't a critical bug and the solution can change according the app grows and the architecture evolves.

Won't fix ATM.


feat(README.md): Add Nixpkgs installation instructions

Update installation instructions to include installing from Nixpkgs
Terraform-TUI is being added to Nixpkgs in NixOS/nixpkgs#265844

Thanks! Waiting for the merge to finish on the Nixpkgs repo.

Hi sorry I've been quite ill over the past few weeks and haven't had time to finish getting this merged. I saw you released a new version so I removed the old PR, updated it to use v0.9, and created a new one NixOS/nixpkgs#272013.


Backend CCRP - Authentication

As carbonable
I want to add an auth module
In order to secure api access
[nodeJS/TypeScript]
Rules

Use this documentation to create the authentication management with JWT
Users can have the role admin or user - Documentation
Make all the existing api public
Create the "create user" (login, password, default role is user) api which is only accessible for an admin
Create the swagger doc in the controller

I will love to work on this.

Id love to improve my skills on NestJs on this.

Hi @fishonamos and @LouGel! Thanks for your interest in Carbonable and this issue.
I'm really sorry @fishonamos, @LouGel is going to work on this issue.
We had started the discussion outside github before you asked. It's a bit off process and we will do better next time.
I hope you'll find on other issue to work on.
Unfortunately we don't have a lot of nodeJS issue this time but we will have more for the next OD Hack.

Thats fair  @schwepps, since you have started a conversation on the issue with @LouGel. I commented on this issue to Upgrade the all repository from Cairo 2.2.0 to 2.6.0 with it's dependencies


TiffWriter.write() got an unexpected keyword argument 'fps'[BUG]

Describe the bug
This bug appears after I finish drawing the picture, how to solve it
To Reproduce
Expected behavior
Screenshots of error

Desktop (please complete the following information):
Additional context

I restart the webui and, the problem has been solved...
quite strange, but just fine.

me too


Darken the buttons to improve accessibility

I applied Starbeam's standard dark blue #094074 to the filters, to make them noticeable and pronounced. Also, I added a border-radius 10px (in Figma), to give it a more "friendly" look. These decisions are made for adding contrast and accessibility to the design and providing a more modern style.

Aw, is it implied?? Amazing! We'll see if the users like it :D

You betcha!  I got that applied and deployed.  Thank you for your valuable input and suggestions. If you have quick wins like these please let me know and I will look into it for you. 👍  Closing this issue for now.


Update Orbit dependencies to 0.17-0.beta.25

This is a followup to this PR. I needed to use the code from that branch (and with the not-building test removed).
This seems pretty straightforward; UnknownSerializer is no longer needed because Serializer can be used directly. I chose to rename the two deserialising functions to remove the QB that was also removed from the imported class names.
(How can I get the tests to run? 🤔 They pass locally)

When I use this and the orbit-sql PR in the orbit-server-template I cloned I get 404 for all endpoints, so maybe there’s something wrong… I’ll hopefully be able to dig into this this weekend.


[BUG] Can't submit an absence request for a single day

Describe the bug:
When trying to submit an absence request with the start date and end date being the same(so just one day off) it throws and error and doesn't submit
To Reproduce:
Steps to reproduce the behavior:

Go to 'absence_request page'
Click on 'start and end date and set them to the same day'
Fill out rest of form and submit
See error

Expected behavior:
You should be able to do a single day absence
Actual Behavior:
you cant and it throws an error
Possible Fix
There must be a check somewhere to verify the form submissions are correct and there must be a check for the end date being after the start date. We could either live it like that and create a second option to do a single day request(not actually different form just a script thing) or just fix the check

Added [BUG] to the title, changed to grammar stuff


Error running on MacOS

The extension does not work on MacOS with the following bash error:
bash: syntax error near unexpected token `['Working directory: ','

It seems that the matlab terminal did not start properly. Could you please try  running the following command and tell me the result?
matlab -nodesktop -nosplash

Typically, the terminal should look like this:

When I run that command I get a MATLAB Command Window pop up.

When I run that command I get a MATLAB Command Window pop up.

If you cannot open matlab directly in a terminal, you may try the pybackend.


ChildWindow position when it appears.

hello everyone!
Is there a way to set a certain ChildWindow position when it appears? At the moment it appears exact in the middle of the screen and even I move it to a certain place, next time (after App restart), it appears in the middle of the screen as it was before.
Is there a way to save this position?
thanks in advance!

Hi @DeputyOfCopyPaster If I remember correctly you can use the Margin property to define the position of a child window.  I don't have a PC at the moment so i could not check it right now.
Happy coding Tim

Hi @DeputyOfCopyPaster If I remember correctly you can use the Margin property to define the position of a child window. I don't have a PC at the moment so i could not check it right now.
Happy coding Tim

I don't think so, the Margin isn't a proper way to do that.
There should be a cleverer way, definetely.
So. please check it and tell me how to do that by a proper way.
thanks in advance!

Hi @DeputyOfCopyPaster ,
I had a look in the source code and as far as I can see (I'm not a programmer ;-) ) there is currently no buit in way to save the window position...
Workaround
You are correct, it wasn't Margin that I was looking for, it was Padding. You can take this property as a work around:
Let`s assume you have the following parameters set:
 VerticalContentAlignment = VerticalAlignment.Top;
 HorizontalContentAlignment = HorzontalAlignment.Left;

When you close the ChildWindow you have to calculate the offset from left and top and save these value somewhere, e.g. in the Properties. When you call the ChildWindow again, you can then initilize it with these values:
Padding = new Thickness(SavedLeftPosition, SavedTopPosition, 0, 0);

But please keep in mind, the MainWindow may have changed it's size and the ChildWindow might be outside of the MainWindow. This has to be cached I think.
Built in soultion
As far as I can see there has to be two new Properties OffsetX and OffsetY to enable what you are looking for. I don't know if @punker76 wants this feature or not. If he gives me the go, I will try to implement these Properties.
Happy coding
Tim

@timunie, hello
I went to #104 and had taken a look at animated GIF.
I'm afraid you missed the point of my issue.  The ChWindow behaviour  you had shown in #104 was available as long as 2018. Please see my animation. It's ChWindow test I performed in 2018 for myself.
It remembers its position easily within App session.
So, what is going to happen in case when you close App and reopen. Does ChWindow remembers its latter position?
thanks in advance!

Hi @DeputyOfCopyPaster ,
I took another gif to show you that it is possible to remember the position (I see you got it and changed your question, but I am already done with the new gif :-) ).

Happy coding
Tim

@timunie, hi there
Coulld yuo tell me where have done changes? ChWindow version?

@DeputyOfCopyPaster, at the moment it is just a PR. I don't know if it will be ever available, @punker76 has to decide :+1: or :-1:

Why not? Missing of that just deprives ChWindow of some usability, I believe.
the ChWindows must pop up at place where it was planned by end user. :+1:

I am not the owner of this repro and don't have write permissions, so I am unable to do.

never mind, hope owners follow our chat...

@timunie, @punker76,
Guys, I am not familiar with Github system at all, so please enlighten me what is the status of this ChWindow feature. May I use it?
thank you!

@DeputyOfCopyPaster yes if you uae the latest prerelease

@DeputyOfCopyPaster yes if you uae the latest prerelease

How do I find the latest prerelease?

Hi @DeputyOfCopyPaster ,
sorry for the late replay. Set this checkmark in your Nuget-Manager:

Happy testing
Tim

@timunie,
hi there,
just assembled a test project based on yours all latest prereleases, as you shaowed me above.
Perhaps I missed something. The ChildWindow still doesn't remember its position.
Today is Monday, though... :)

Hi @DeputyOfCopyPaster ,
As you can have more than one CW that you might want to rember, there is no build in way to save the position. You will need to save OffsetX and OffsetY on your own. see: https://docs.microsoft.com/de-de/visualstudio/ide/managing-application-settings-dotnet?view=vs-2015&redirectedfrom=MSDN
Happy coding
Tim

@timunie, it seems I've gotten a remembering of ChWindow previous position.
However, why  I'm getting at left upper corner -negative values and at right lower corner -positive values? As per GIF attached. Please give me an idea.

@DeputyOfCopyPaster it depends on the HorizontalAlignment and VerticalAlignment

@timunie. I don't see any alignment properties used in your latter demo release.

the default is center, so the Point (0,0) is in the middle ...

@timunie, while playing around I've noticed one more thing which brings some discomfort in ChildWindow usage. As practice shows, the left upper ChildWindow's corner (mostly it's icons area) is not sensetive for dragging. In other words it doesn't allow to hide ChildWindow more deeper.
It's possible to hide a bit more, though.
@timunie, look, I'm not speaking about hiding entirely, I'm speaking about hiding a bit more than we have at the moment.
So, what do you think about?

to be honest I don't see a reason why one should move the childwindow out of the parent window. Maybe you should consider to open a new MetroWindow.
Happy dragging
Tim

to be honest I don't see a reason why one should move the childwindow out of the parent window. Maybe you should consider to open a new MetroWindow.
Happy dragging
Tim

@timunie, Yeah, I see you don't know. However, many end users know some reasons.
Since the ChildWindows are essentially dialogues, what would you do with a few annoying dialogues which pop up for some reasons every 5 seconds on your screen, for example? Our end users just hide them nearly out of the screen.
So, in terms of usabiliity the dragging here is realized pretty poorly.
In other words the icon must not interfere to happy dragging of end users.

@DeputyOfCopyPaster
please try:
HorizontalContentAlignment="Right"
VerticalContentAlignment="Bottom"

But please keep in mind that even this will not solve all the positioning issues you might have. And unfortunatally I don't have the time to rewrite all the stuff needed to archiev your goal.

One personal oppinion from my side: If I were your customer and the ChildWindow would open so often, I would ask if this is the right Control / UserInterface for what you are trying to archiev. We can discuss this in a private gitter room, if you want to, please not here.

I hope you understand that I will now leave this issue as it is right now.
Happy coding
Tim


Add support get voice list in lib

Hello~
It is not support in lib but in bin.
And we may make the options better in lib.
For example, make the enum value locale and Role iter/to_stringable (with strum crate)

Landed in v5.2.0.

For example, make the enum value locale and Role iter/to_stringable (with strum crate)

I will make some improvements later. (Note that the locale is just a string, not an enum).


ci: Added CLA assistant

Fixes #638
Added Github action which requires the contributor to sign CLA agreement by making a comment I have read the CLA Document and I hereby sign the CLA
Flank organization members do not need to sign contribution, as well as bots
Test Plan

How do we know the code works?

User create Pull request
CLA assistant make a comment that User needs to sign CLA

User sign CLA by posting a comment I have read the CLA Document and I hereby sign the CLA

User signature is stored in cla/v1/signatures.json on cla_signatures branch

CLA assistant make a comment that all committers signed CLA

The real testing scenario will be done in the next PR to make sure that everything works correctly!!!
Checklist

[x] Documented

Flank organization members do not need to sign contribution, as well as bots

we'd want flank org members to sign the contribution (only once per github account)
bots can be excluded.

Flank organization members do not need to sign contribution, as well as bots

we'd want flank org members to sign the contribution (only once per github account)
bots can be excluded.


Variable missing dollar sign in script for scenario 2

The script starts as below
resource= "?resource=https://management.azure.com/"
However, this is a variable so it should have a dollar sign at the beginning as the rest of the variables in the script.
$resource= "?resource=https://management.azure.com/"
The script fails to run because of this.
Section:
https://docs.microsoft.com/en-us/azure/automation/troubleshoot/managed-identity#cause-1

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

ID: 12da5699-0a6a-1ddf-8981-d27bdd743d74
Version Independent ID: ce0178e4-a9a2-9a1f-1c73-0dd9691d81b3
Content: Troubleshoot Azure Automation managed identity issues (preview)
Content Source: articles/automation/troubleshoot/managed-identity.md
Service: automation
Sub-service: ****
GitHub Login: @MGoedtel
Microsoft Alias: magoedte

Thanks for brining this to our attention. We will investigate it further and update you shortly.

@MarceOrtegas - Thanks again for bringing this to our attention. We have updated the Doc and it will be live once its merged.  We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


v2.18.0 Incompatible with lcobucci/jwt ^3.4

#1109 introduced LooseValidAt constraint from lcobucci/jwt, but the class only exists on 4.0.x and above, but the composer.json states that the bundle is compatible with: lcobucci/jwt: "^3.4|^4.0".
Installing lcobucci/jwt:^3.4 with lexik/jwt-authentication-bundle:v2.18.0 results in error:
Error: Class "Lcobucci\JWT\Validation\Constraint\LooseValidAt" not found
Possible solutions:

Check if LooseValidAt class is available, if not use   ValidAt class.
Make this bundle only compatible with lcobucci/jwt:^4.0

The second proposal would solve the code incompatibility, but then it would invalidate the minimum php version of LexikJWTAuthenticationBundle as the lcobucci/jwt:4.0 requires PHP8.1, which is in conflict with announced minimum requirements of SF5.4....
I am currently facing the same issue. I have solved this by downgraded to lexik/jwt-authentication-bundle:2.10 and adapting my api firewall configuration back to the "guard" style:
api:              pattern: ^/api/             stateless: true             provider: app_user_provider             guard:                 authenticators:                     - lexik_jwt_authentication.jwt_token_authenticator             #jwt: ~ cannot be used due to the version of the version of the package lexik_jwt_authentication - the default version cannot be used as it requires version of lcobucci/jwt that doesn't contain the LooseValidAt
But I am not very happy with that solution, would anyone advise a better one? I know, upgrading server to PHP8 would help, but I cannot afford hat due to missing interbase extension in PHP8...

I have temporarily solved this by downgrading to lexik/jwt-authentication-bundle:2.10

Why all the way down to 2.10?  Why couldn't you just pin to 2.17?

Why all the way down to 2.10? Why couldn't you just pin to 2.17?

Thank you! I was too blind to see there's a more suitable version for downgrade...

I'm going to fix this tomorrow, thanks for the report.

Released in https://github.com/lexik/LexikJWTAuthenticationBundle/releases/tag/v2.18.1. Thanks for the report @fracsi and thanks @maxhelias for the quick fix!


Total requests per second in graph is vastly different from actual stats

Describe the bug
I was monitoring a distributed load test with 24 attached workers, and the chart in the web UI showed the current load to be around 150 request/second. When collecting the logs afterwards to print them in my own gnuplot, I noticed my graphs showing around 450-500 request/second. I inspected the generated report, and the report itself states the aggregated average request/second to be 421.3, which is vastly different from what the chart is showing.
Expected behavior
The chart in the web UI should show a good approximation of the amount of request/second.
Actual behavior

Steps to reproduce
Conduct a distributed load test from 24 attached workers, running in individual Docker containers throughout western Sweden. The actual test code was sending HTTPS POST-request towards 2 separate web services.
Environment

OS: Docker contained based on python:3.11.1-alpine3.17
Python version: 3.11.1
Locust version: 2.14.2
Locust command line that you ran: locust -f locustfiles --worker --master-host my-ssh-tunnel-proxy --master-port 5557
Locust file contents (anonymized if necessary):

import locust

class SoapUser(locust.FastHttpUser):
    abstract = True
    key_cert_file = None # needs to be set in sub-class

    def __init__(self, environment):
        super().__init__(environment=environment)

        def _create_default_context():
            context = gevent.ssl.create_default_context()
            context.check_hostname = False
            context.verify_mode = gevent.ssl.CERT_NONE
            if not self.key_cert_file is None:
                context.load_cert_chain(certfile=self.key_cert_file)
            return context

        self.client.client.clientpool.client_args['ssl_context_factory'] = _create_default_context

    def request(self, url, action, data):
        headers = {
            "ContentType": "application/xml",
            "SOAPAction": action
        }
        return self.client.request('POST', url=url, headers=headers, data=data, catch_response=True)

class xyz(SoapUser):
    wait_time = locust.constant(1)

    key_cert_file = '/mnt/secret/secret.pem'

    def request(self, path, action, payload):
        """Send request and verify that we get resultCode OK in return"""
        with super().request(path, action, payload) as response:
            if response.status_code == 200 and not "<resultCode>OK</resultCode>" in response.text:
                response.failure("Did not receive resultCode OK")

    @locust.task
    def get_xyz_1(self):
        self.request( path='/xyz/1', action='"xyz"', payload=f""" <soapenv:Envelope xyzxyzxyz>anonymized</soapenv:Envelope> """)

    @locust.task
    def get_xyz_2(self):
        self.request( path='/xyz/2', action='"xyz"', payload=f""" <soapenv:Envelope xyzxyz>anonymized</soapenv:Envelope> """)

Please let me know if there's any other detail I can contribute. I have anonymized the actual XML content in the HTTP post, but this should show the gist of it.

Conduct a distributed load test from 24 attached workers, running in individual Docker containers throughout western Sweden. The actual test code was sending HTTPS POST-request towards 2 separate web services.

That may be hard to reproduce :)
Have you checked the logs? The only reason I can think of is that the workers cannot (for some reason) report back to the master..
If there is nothing clear in the logs you’ll need to narrow it down further some other way, as the issue you are encountering is unlikely to be ”locust always makes an error counting number of requests” (or everyone else would be complaining about this too :)

Yeah, I get that :)
I've checked the master logs, but I can't see anything weird during that particular execution. There was some test-runs before the given graph with some disconnecting and reconnecting workers just to verify that everything was up to speed, but nothing out of the ordinary.
The fact that the report contains an aggregated 421.3 req/sec and simultaneously shows this graph leads me to believe master actually did receive the stats, but something goes wrong somewhere. The total number of requests also matches my external report (the workers contain additional code to write all requests to disk, which I collect afterwards for more precise stats).

I know this would be super hard to debug and I don't expect much, but I just wanted the report this behavior to have a dialog running. My current theory is that these different Docker containers run on different host OS (Windows/Linux), which might affect their comprehension of time. I suppose the _log_time_of_request would be totally off if each Worker reported a different value from time.time(), right?
I will continue to investigate on my side. I have some more tests to run.

I have executed some tests during the day, and it seems some of the Docker containers were running on hosts without NTP enabled. The time was off with 3-4 minutes between the machines, which hints to my above mentioned theory that the wrong value from time.time() will create a mess when the stats are aggregated into the chart. Once I set the time, I couldn't reproduce the problem anymore.
I assume the current request per second is computed from some kind of window/timespan based on the Master node's current time, which would explain why a lot of requests were omitted even though they are included in the stats.
I'm not sure how to fix it, beyond perhaps implementing some kind of warning if the workers' reference of time differs too much from master's, but if feels a bit nit-picky. I'll close this issue until further notice.
Thanks!

Interesting! I guess we could do some sanity check when master and worker connect. Passing a timestamp as part of the connect message and validating that it is within at least a minute or something. But maybe not worth the complexity.


addfleets command causes an exception when triggered on its own

@steveizi
Trying
!addfleets
causes
Traceback (most recent call last):
  File "/home/zyphore/antinub-gregbot/venv/lib/python3.5/site-packages/discord/ext/commands/bot.py", line 822, in process_commands
    yield from command.invoke(ctx)
  File "/home/zyphore/antinub-gregbot/venv/lib/python3.5/site-packages/discord/ext/commands/core.py", line 360, in invoke
    yield from self.prepare(ctx)
  File "/home/zyphore/antinub-gregbot/venv/lib/python3.5/site-packages/discord/ext/commands/core.py", line 338, in prepare
    yield from self._parse_arguments(ctx)
  File "/home/zyphore/antinub-gregbot/venv/lib/python3.5/site-packages/discord/ext/commands/core.py", line 297, in _parse_arguments
    transformed = yield from self.transform(ctx, param)
  File "/home/zyphore/antinub-gregbot/venv/lib/python3.5/site-packages/discord/ext/commands/core.py", line 205, in transform
    raise MissingRequiredArgument('{0.name} is a required argument that is missing.'.format(param))
discord.ext.commands.errors.MissingRequiredArgument: fdate is a required argument that is missing.

Fixed by #13