Press Key issue with combined keys

I am having an issue pressing several keys on my application.
I can send a single key press with t'~' without an issue.  But when I try to send ALT+SHIFT+- or ALT+SHIFT+=, it seems to respond only to the keys - or =.  Yes, this key combo normally works on the application.
As you can see in my example, I tried sending it as t'' or s'' or assign it as a string, then sending it.
Show the info bar on the unity window
    [Tags]  unity
    Log to console  ...
    ${gamename} =  Set Variable  mygame
    Attach application by name  ${gamename}
    FlaUILibrary.Focus   /Window[@Name='${gamename}']

    FlaUILibrary.Press Key  t'~'
    Sleep  3s
    FlaUILibrary.Press Key  t'~'
    Sleep  1s

    # 'Half Time Scale': 'Alt+Shift+(minus)',
    FlaUILibrary.Press Key  t'ALT+SHIFT+-'
    Sleep  1s
    FlaUILibrary.Press Key  s'ALT+SHIFT+-'
    Sleep  1s
    ${halfTime} =  Convert To String  t'ALT+SHIFT+-'
    FlaUILibrary.Press Key  ${halfTime}
    Sleep  1s
    ${halfTime2} =  Convert To String  s'ALT+SHIFT+-'
    FlaUILibrary.Press Key  ${halfTime2}
    Sleep  3s

    #'Double Time Scale': 'Alt+Shift+(equals)',
    FlaUILibrary.Press Key  t'ALT+SHIFT+='
    Sleep  1s
    FlaUILibrary.Press Key  s'ALT+SHIFT+='
    Sleep  1s
    ${doubleTime} =  Convert To String  t'ALT+SHIFT+='
    FlaUILibrary.Press Key  ${doubleTime}
    Sleep  1s
    ${doubleTime2} =  Convert To String  s'ALT+SHIFT+='
    FlaUILibrary.Press Key  ${doubleTime2}

Current version:
C:\Windows\system32>pip show robotframework-flaui
Name: robotframework-flaui
Version: 1.7.3

Related...
I don't understand the difference between the t'' and s'', can you explain more with an example?
Finally, can you clear up this statement? If identifier set try to attach to given element if operation was successfully old element will be reattached automatically.   When does the attachment occur and to which element.

I also have combo commands for ALT+SHIFT+BACK and ALT+SHIFT+0 (The '0' key on the top of the alphanumeric keyboard.), but these don't work either.

Code looks quite good that it should work. I will investigate on Keyboard module where the problem comes.
I think it would be a good advice to extend keyboard tests by a gui element which send the response from entered input to a input field to verify if keyboard bindings work as expected.

@Nepitwin Any update?
Or could you at least answer my other questions for now?
Related...
I don't understand the difference between the t'' and s'', can you explain more with an example?
Finally, can you clear up this statement? If identifier set try to attach to given element if operation was successfully old element will be reattached automatically. When does the attachment occur and to which element.

@Mavnus04 oh i don't see your question.
t'' syntax is used for a text usage and s'' by syntax
For example if you want to input into a text field you should use t"Your Text Here"
By a shortcut you use s"CTRL+A" this type of can be mixxed up by a list
For example
${EXP_VALUE_OVERRIDE_INPUT_TEXT} =  Override
@{KEYBOARD_INPUT_OVERRIDE_TEXT}    s'CTRL+A'  t'${EXP_VALUE_OVERRIDE_INPUT_TEXT}'

What i can also see from docs
    The following keys are supported for usage as a part of key_combination:
    | LBUTTON     |     Left mouse button                           |
    | RBUTTON     |     Right mouse button                          |
    | CANCEL      |     Control-break processing                    |
    | MBUTTON     |     Middle mouse button (three-button mouse)    |
    | XBUTTON1    |     Windows 2000/XP: X1 mouse button            |
    | XBUTTON2    |     Windows 2000/XP: X2 mouse button            |
    | BACK        |     BACKSPACE key                               |
    | TAB         |     TAB key                                     |
    | CLEAR       |     CLEAR key                                   |
    | ENTER       |     ENTER key                                   |
    | SHIFT       |     SHIFT key                                   |
    | CTRL        |     CTRL key                                    |
    | ALT         |     ALT key                                     |
    | CAPITAL     |     CAPITAL key                                 |
    | PAUSE       |     PAUSE key                                   |
    | ESCAPE      |     ESC key                                     |
    | ESC         |     ESC key                                     |
    | SPACE       |     Blank space key                             |
    | NEXT        |     Next key                                    |
    | END         |     END key                                     |
    | HOME        |     HOME key                                    |
    | LEFT        |     LEFT ARROW key                              |
    | RIGHT       |     RIGHT ARROW key                             |
    | UP          |     UP ARROW key                                |
    | DOWN        |     DOWN ARROW key                              |
    | SELECT      |     SELECT key                                  |
    | PRINT       |     PRINT key                                   |
    | EXECUTE     |     EXEC key                                    |
    | INSERT      |     INS key                                     |
    | DELETE      |     DEL key                                     |
    | HELP        |     HELP key                                    |
    | 0 - 9       |                                                 |
    | A - Z       |                                                 |
    | F1 - F12    |                                                 |
    | LWIN        |     Left Windows key                            |
    | RWIN        |     Right Windows key                           |
    | APPS        |                                                 |
    | SLEEP       |                                                 |
    | MULTIPLY    |     '*' key                                     |
    | ADD         |     '+' key                                     |
    | SEPARATOR   |                                                 |
    | SUBTRACT    |                                                 |
    | DECIMAL     |                                                 |
    | DIVIDE      |                                                 |

You want to create a shortcut so s is correct for my opinion.
So the input from your sample code should work i will investigate your example until next week.

@Nepitwin
One more question related to the documentation while we wait for your investigation:
Can you clear up this statement? If identifier set try to attach to given element if operation was successfully old element will be reattached automatically. When does the attachment occur and to which element.

This documentation is outdated. The only thing that the Keyword is doing that Press Key can be used by XPATH optional to focus the element before a keyboard execution is triggered.
So it's quite similar like your code
Focus
Press Keys
Is equivalent to
Press Keys
I will now extend the test gui by a keyboard testing view. Which displays the keyboard inputs and extend the testcases by multiple keyboard bindings then i should find easily the issue.

Ah now i see what the issue is. You try to use the VirtuaKeyShort with simple mapping. But what i can see is that +,- and equals is not supported from current Key mapping to flaui
Keys = {
    "LBUTTON": VirtualKeyShort.LBUTTON,  # Left mouse button
    "RBUTTON": VirtualKeyShort.RBUTTON,  # Right mouse button
    "CANCEL": VirtualKeyShort.CANCEL,  # Control-break processing
    "MBUTTON": VirtualKeyShort.MBUTTON,  # Middle mouse button (three-button mouse)
    "XBUTTON1": VirtualKeyShort.XBUTTON1,  # Windows 2000/XP: X1 mouse button
    "XBUTTON2": VirtualKeyShort.XBUTTON2,  # Windows 2000/XP: X2 mouse button
    "BACK": VirtualKeyShort.BACK,  # BACKSPACE key
    "TAB": VirtualKeyShort.TAB,  # TAB key
    "CLEAR": VirtualKeyShort.CLEAR,  # CLEAR key
    "ENTER": VirtualKeyShort.ENTER,  # ENTER key
    "SHIFT": VirtualKeyShort.SHIFT,  # SHIFT key
    "CONTROL": VirtualKeyShort.CONTROL,  # CTRL key
    "CTRL": VirtualKeyShort.CONTROL,
    "ALT": VirtualKeyShort.ALT,
    "CAPITAL": VirtualKeyShort.CAPITAL,
    "PAUSE": VirtualKeyShort.PAUSE,
    "ESCAPE": VirtualKeyShort.ESCAPE,
    "ESC": VirtualKeyShort.ESCAPE,
    "CONVERT": VirtualKeyShort.CONVERT,  # IME convert
    "SPACE": VirtualKeyShort.SPACE,
    "PRIOR": VirtualKeyShort.PRIOR,  # PAGE UP key
    "NEXT": VirtualKeyShort.NEXT,  # PAGE DOWN key
    "END": VirtualKeyShort.END,
    "HOME": VirtualKeyShort.HOME,
    "LEFT": VirtualKeyShort.LEFT,  # LEFT ARROW key
    "RIGHT": VirtualKeyShort.RIGHT,  # RIGHT ARROW key
    "UP": VirtualKeyShort.UP,  # UP ARROW key
    "DOWN": VirtualKeyShort.DOWN,  # DOWN ARROW key
    "SELECT": VirtualKeyShort.SELECT,
    "PRINT": VirtualKeyShort.PRINT,
    "EXECUTE": VirtualKeyShort.EXECUTE,
    "SNAPSHOT": VirtualKeyShort.SNAPSHOT,  # PRINT SCREEN key
    "INSERT": VirtualKeyShort.INSERT,
    "DELETE": VirtualKeyShort.DELETE,
    "HELP": VirtualKeyShort.HELP,
    "0": VirtualKeyShort.KEY_0,
    "1": VirtualKeyShort.KEY_1,
    "2": VirtualKeyShort.KEY_2,
    "3": VirtualKeyShort.KEY_3,
    "4": VirtualKeyShort.KEY_4,
    "5": VirtualKeyShort.KEY_5,
    "6": VirtualKeyShort.KEY_6,
    "7": VirtualKeyShort.KEY_7,
    "8": VirtualKeyShort.KEY_8,
    "9": VirtualKeyShort.KEY_9,
    "A": VirtualKeyShort.KEY_A,
    "B": VirtualKeyShort.KEY_B,
    "C": VirtualKeyShort.KEY_C,
    "D": VirtualKeyShort.KEY_D,
    "E": VirtualKeyShort.KEY_E,
    "F": VirtualKeyShort.KEY_F,
    "G": VirtualKeyShort.KEY_G,
    "H": VirtualKeyShort.KEY_H,
    "I": VirtualKeyShort.KEY_I,
    "J": VirtualKeyShort.KEY_J,
    "K": VirtualKeyShort.KEY_K,
    "L": VirtualKeyShort.KEY_L,
    "M": VirtualKeyShort.KEY_M,
    "N": VirtualKeyShort.KEY_N,
    "O": VirtualKeyShort.KEY_O,
    "P": VirtualKeyShort.KEY_P,
    "Q": VirtualKeyShort.KEY_Q,
    "R": VirtualKeyShort.KEY_R,
    "S": VirtualKeyShort.KEY_S,
    "T": VirtualKeyShort.KEY_T,
    "U": VirtualKeyShort.KEY_U,
    "V": VirtualKeyShort.KEY_V,
    "W": VirtualKeyShort.KEY_W,
    "X": VirtualKeyShort.KEY_X,
    "Y": VirtualKeyShort.KEY_Y,
    "Z": VirtualKeyShort.KEY_Z,
    "LWIN": VirtualKeyShort.LWIN,
    "RWIN": VirtualKeyShort.RWIN,
    "APPS": VirtualKeyShort.APPS,
    "SLEEP": VirtualKeyShort.SLEEP,
    "MULTIPLY": VirtualKeyShort.MULTIPLY,  # '*'
    "ADD": VirtualKeyShort.ADD,  # '+'
    "SEPARATOR": VirtualKeyShort.SEPARATOR,
    "SUBTRACT": VirtualKeyShort.SUBTRACT,
    "DECIMAL": VirtualKeyShort.DECIMAL,
    "DIVIDE": VirtualKeyShort.DIVIDE,
    "F1": VirtualKeyShort.F1,
    "F2": VirtualKeyShort.F2,
    "F3": VirtualKeyShort.F3,
    "F4": VirtualKeyShort.F4,
    "F5": VirtualKeyShort.F5,
    "F6": VirtualKeyShort.F6,
    "F7": VirtualKeyShort.F7,
    "F8": VirtualKeyShort.F8,
    "F9": VirtualKeyShort.F9,
    "F10": VirtualKeyShort.F10,
    "F11": VirtualKeyShort.F11,
    "F12": VirtualKeyShort.F12
}

I will extend the missing VirtualKeyShort bindings.
Afterwards you can use the KeyShorts by corresponding bindings
FlaUILibrary.Press Key  t'ALT+SHIFT+SUBTRACT' <-- Should already work
FlaUILibrary.Press Key  t'ALT+SHIFT+ADD' <-- Should already work
FlaUILibrary.Press Key  t'ALT+SHIFT+EQUALS' <-- I don't find a corresponding from it

If you want to test it simple checkout keyboard branch this contains the new application test by keyboard view.
Here you can see input which are received by keyboard or flaui.

@Nepitwin I got the Keyboard branch my system and built.
When I hit Alt on my keyboard, I get System
While I hold Alt, and try to hit other keys, nothing else shows up in the 'Keyboard * Events'.
  Again, no more keys appear after Alt, if I do Shift then Alt.

Shift + Hyphen/Dash/Subtract/Minus + Alt

Forgot to mention, that when I try ALT+SHIFT+SUBTRACT or ALT+SHIFT+ADD, it still doesn't do what it is supposed to.

If your keyboard binding is first use ALT it will be executed as system by windows
https://social.msdn.microsoft.com/forums/vstudio/en-US/4355ab9a-9214-4fe1-87ea-b32dfc22946c/issue-with-alt-key-and-key-down-event?forum=wpf
https://docs.microsoft.com/en-us/dotnet/api/system.windows.input.keyeventargs.systemkey?redirectedfrom=MSDN&view=windowsdesktop-6.0#System_Windows_Input_KeyEventArgs_SystemKey
If your source code will handle on System and not Alt it probably work?

Tried putting Shift before Alt by manually pressing keys and the application responded properly. Shift+Alt+- & Shift+Alt+=
However, when I put it in the code, it still does NOT work.
Pressing D as text is a sanity check for me that the application is receiving commands.
Show the info bar on the unity window
    [Tags]  unity
    Log to console  ...
    ${gamename} =  Set Variable  mygame
    Set Up Unity Game For Key Presses  ${gamename}

    FlaUILibrary.Focus  /Window[@Name='${gamename}']

    Log To Console  texts...
    FlaUILibrary.Press Key  t'D'
    Sleep  2s
    FlaUILibrary.Press Key  t'D'
    Sleep  2s

    Log To Console  shortcuts...
    FlaUILibrary.Press Key  s'SHIFT+ALT+SUBTRACT'
    Sleep  2s
    FlaUILibrary.Press Key  s'SHIFT+ALT+ADD'
    Sleep  2s

@Mavnus04
Oh cool you test by a unity based application.
Is their any kind of keyboard interaction be triggered by flaui?
For example you set a simple input by keyboard or an ESC to open the main menu?
If yes sounds good so far. If not i have to investigate which keyboard event is be triggered from flaui.
So it could be related for the tripple usage binding or probably that any keyboard events are not triggered by unity because the simulation from the keyboard is not handle correctly by windows :).

@Nepitwin
Yes, it is a game created with Unity.
In my last example, I can send the character D and that works just fine, the game responds as it should.  It is my sanity check that something is going through from FlaUI
But for some reason, combining those key presses will not go through. Shift, Alt, [Other Key],  Doesn't seem to matter the order.

Sorry, I can't share anything from my company, but I could try making a simple Unity application which accepts and responds to some simple key presses.
Give me a week or so since I have a lot of other tasks that I have to attend to.

@Mavnus04
I have also thought of such an example application :).
No problem we have all work to do :)

@Nepitwin
Here is the unity application I created.
Pressing certain keys will cause the background color to change.
W = White
Y = Yellow
Alt + Shift +

Backspace = Blue
Equals = Red
Minus = Green
Alpha0 = Grey

Application.zip
The source code is 55MB, so I am not sure how to share that with you, if you need it?  GitHub said the upload limit is 25MB

@Mavnus04
Thanks a lot i will investigate what happens on flaui side now by this sample application and hopefully find the issue 👍

What i can see by my tests that an array is created with correct converted syntax
https://github.com/FlaUI/FlaUI/blob/58b5954349afe2343aeb16ea55b19962b28cd3e1/src/FlaUI.Core/WindowsAPI/Constants.cs#L934
SHIFT (0x10) + ALT (0x12) + BACKSPACE (0x8)
[16, 18, 8]
Type simualtenously method is called which shoud execute all these keyboard bindings
https://github.com/FlaUI/FlaUI/blob/6841da31e13d74f8ad2128e6a48cfa00c9e3501c/src/FlaUI.Core/Input/Keyboard.cs#L110
It's quite strange
i will try to implement a direct test in C# usage without wrapper libary to avoid possible data type converting issues. If the C# solution the issue is not on FlaUI it's on wrapper data type converting by robotframework-flaui wrapper which has to be identified why commands are not working like expected.

@Mavnus04
Okay i found some issues related to FlaUI by Alt Keyboard usage.
https://github.com/FlaUI/FlaUI/issues/295
https://github.com/FlaUI/FlaUI/issues/320
Bugfixes are from May 2021 and we use FlaUI in latest release version 3.2.0 from 17 July 2020.
Also the C# sample code have the same behavior like robotframework usage here.
using FlaUI.UIA3;
using FlaUI.Core.Input;
using FlaUI.Core.WindowsAPI;

var app = FlaUI.Core.Application.Launch("F:\\Unity\\Keypress.exe");
using (var automation = new UIA3Automation())
{
	var window = app.GetMainWindow(automation);
	Thread.Sleep(6000);
	Keyboard.TypeSimultaneously(VirtualKeyShort.KEY_Y);
	Keyboard.TypeSimultaneously(VirtualKeyShort.SHIFT, VirtualKeyShort.ALT, VirtualKeyShort.BACK);
	Keyboard.TypeSimultaneously(VirtualKeyShort.SHIFT, VirtualKeyShort.LCONTROL, VirtualKeyShort.BACK);
	Keyboard.TypeSimultaneously(VirtualKeyShort.SHIFT, VirtualKeyShort.CONTROL, VirtualKeyShort.BACK);

	Keyboard.Type(VirtualKeyShort.SHIFT);
	Keyboard.Type(VirtualKeyShort.CONTROL);
	Keyboard.Type(VirtualKeyShort.BACK);
}

I will retry FlaUI by a master build from current source code if it's working then i will update the flaui wrapper to the latest master version.

@Nepitwin How is it going?  Wondering if you could provide an update?
Thanks.

@Mavnus04
Currently i'm busy at work to do a quick fix for it and i think about the plugin mechanis if this behavior should fix it. I'm not sure. But you can already try a second solution to write a simple Keyword by your own in python code.
I think you know that this possiblity is always supported by robotframework.
Simple write a Python file and define a custom keyword which probably contains a sub call by another keyboard library which you include and use for your use case.
It would not solve the issue on flaui side but for thie one case your e2e test would work :).

I already have something that can send all these key commands for my testing purposes.  My hope was to replace it with FlaUI since it supports so much more.
Please let me know once you have a fix in, thanks.

@Nepitwin Hey, checking for an update?

Currently no news about an upcoming change how to fix your issue by unity. The only thing what i found is that flaui is sending by SendInput controls keyboard interactions. https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendinput


Unification: pressure alert range

Description:
According to our data format 5 our alert range should be fixed.
https://docs.ruuvi.com/communication/bluetooth-advertisements/data-format-5-rawv2#atmospheric-pressure
If value is smaller than 500 hPa or bigger than 1155 hPa make sure that app won't crash.
If value would be beyond these values it should automatically adjust to min or max. 1155 hPa is the maximum supported value.
Alert range 500-1155 hPa, force update alert to min or max value if outside range
Android issue: https://github.com/ruuvi/com.ruuvi.station/issues/992
iOS issue: https://github.com/ruuvi/com.ruuvi.station.ios/issues/1438

QA passed


Tabs component has varying font weights and sizes

Top is Angular, bottom is React. In the Angular tabs component, the non-active tabs (Design, Develop) look to be too big.
See spec: https://www.carbondesignsystem.com/components/tabs/usage/

likely the same core issue as #768


Debugger for Windows 10 parses source filepaths incorrectly

I'm having some weird bugs with the debugger.
As depicted in this screenshot, the debugger seems to be parsing a filepath that's more similar to a *nix-like filepath, not necessarily a windows one. However, it's definitely based on the windows filepath, so maybe there's some code somewhere trying to I guess "standardize" filepaths that isn't working correctly?
Even weirder, however, though, is it seems to run, pause itself, and then run infinitely without doing anything afterwards. This screenshot shows it displaying the console text for what normally happens when I load the prolog files as I would normally.

Oh, my bad. Sorry for the late reply!


feat: As a user, I want to add unit tests for validation.go.

Description
Since the coverage report of pkg/api/validation/apisix_plugin_config.go gives 0% coverage https://app.codecov.io/gh/apache/apisix-ingress-controller/tree/master/pkg/api/validation . I would like to add unit tests for the file

Thank you for your contribution and feel free to submit PR

@Gallardot kindly review


Changes between 1.9.10 and 1.9.11 broke XSPLIT (still broken with 1.11.1)

I've got a interesting problem where a XSPLIT client stopped working between version 1.9.10 and 1.9.11.  The problem remains to this day even when using 1.11.1.
Protocols in use on XPSLIT X264/AAC - bandwidth nor size of video seems to matter.
When viewing the stats for NGINX I see no connections in the server but xpslit thinks its streaming.
Anyone have any ideas on this - we are stumped.
Thanks!

Funny how sometimes you figure out an issue after opening a github issues.
For anyone that stumbles upon this - make sure rtmp_auto_push on is not enabled.


Add commit_seq to Replication.Message

#473  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @acco and the rest of your teammates on  Graphite


improved code readability with a few line breaks and indents.

Added a few line-breaks and indents to improve the code readability.

thanks


New Cases

Add Mauritius Island .. 3 Cases confirmed

Hi JordanBienvenue, thanks for notifying us. The map data is sync every 24 hours based on the JHU repo CSSEGISandData/COVID-19


[docs] improve style of Plone REST API JavaScript Client

The recently added documentation for Plone REST API JavaScript client needs the following improvements.
Run vale docs/source/client to identify errors, warnings, and suggestions.

[ ] Change inline literals formatting to exactly that, instead of using bold. This will eliminate many spelling errors.
[ ] Use sentence-case for all headings.
[ ] Use one line per sentence.

Most of the other messages may be ignored, but if you have any question, please ping @stevepiercy.
Current status:
✖ 55 errors, 28 warnings and 230 suggestions in 45 files.
See also https://github.com/plone/volto/pull/5490

@stevepiercy  can please assign me this task I would like to work on this

i am working on it

I would like to work on this!Please assign

@akshayw1 please read and follow Contributing to Plone and First-time contributors. We do not assign issues.

@stevepiercy  the link is not working .

@stevepiercy  maybe it was some browser issue

@stevepiercy  can you tell me the repo of this issue ?

It's this repo because the issue is in this repo. I think you mean where in this repo, which would be inside /docs, specifically /docs/source/client.

Aaaa...sorry i didn't look care fully .

No worries. It's new to you, and that's why we're here, to point you in the right direction. That said, in most packages, documentation is usually located at the root of the repository in /docs.

@stevepiercy why vale is not working i have downloaded this extension also gave path to it but it's not appearing in vscode search bar.

Hi @stevepiercy ,
Just to inform you that i have been added to the Plone contributors team would proceed with the review.
Thank you

@pankaj-2503 I have no idea. You should read the documentation for the VSCode extension.

Hello @stevepiercy, should I also fix the "passive voice" error?

@Hrittik20 is it an error, warning, or suggestion?
In general, the passive voice issues should not be addressed at this time. Passive voice issues depend on the context. Sometimes the passive voice is OK.

Its mostly "suggestions". Also, I think I should skip some errors/warning such as "RelatedObject should use sentence-style capitalization" or "For a general audience, use address rather than URL". What do you think?

@Hrittik20 I would focus only on errors at this time, but not all of them should be fixed. Vale is only as good as its configuration, and sometimes even returns false positives. We need to review the error message and decide whether to update Vale's configuration or follow its recommendation.
In the examples you provided, I would need to see the context, but in general:

When I see something like "RelatedObject", that looks like an inline literal and should be made into one by surrounding it with single backticks (`).
"For a general audience, use address rather than URL" looks like we should configure Vale to ignore the term URL.

If you can provide the full error message to include the file name and line number, or a link to the source files in the Volto repo where the text triggers these error messages, then I can provide exact guidance.

@stevepiercy I have fixed most of the errors (apart from a few) and also fixed many suggestions and warning. Should I make a PR now?

@Hrittik20 yes, please, but first, please read and follow Contributing to Plone and First-time contributors.
We can take a look at the remaining errors either as a part of the pull request review or separately. Thank you!

@stevepiercy Okay. About the change log entry file, do I need to make it in the "Products.CMFPlone" repo after making this PR (since as per the documentation, I need to put it inside the news directory)?

@Hrittik20 change log entries go in the same package as the docs you update, as stated in https://6.docs.plone.org/contributing/index.html#change-log-entry.

To create a change log entry or news item, create a file in the news directory, located in the root of the package.

For this package, it would be in:

https://github.com/plone/volto/tree/main/packages/client/news

...and duplicated to:

https://github.com/plone/volto/tree/main/packages/volto/news

I'm not absolutely sure on the duplicate, because the monorepo thing is new. @sneridagh can you clarify whether we should duplicate change log files? I think we should so that they appear in the changelog when it is released, but I'll defer to your guidance. We might also need to update the https://6.docs.plone.org/contributing/index.html#change-log-entry docs explicitly for Volto.

@stevepiercy Okay, got it. Thanks for the guidance. Really appreciate it!

@stevepiercy It should not be duplicated if there's no change in packages/volto. There's no sense in that. If the docs apply generically to "docs for Volto" then it is.
In this case it's "docs for the client" which, in principle, has nothing to do with Volto the library itself. So, no changelog in Volto is required. Which sense would that have?

BTW, If there's any PR already involved with this one, please link it in the sidebar tools or mention it in the comments/description.

@sneridagh the client docs are now included in the Volto docs, and that's why I thought it should be duplicated. But I understand how you see the client docs as being a self-contained sub-unit of Volto documentation.

@sneridagh I forgot to ask, how do you communicate that a sub-project has a new release, assuming they still have a separate release now that they are in a monorepo? IOW, must one look at the sub-project's CHANGELOG.md, for example, https://github.com/plone/volto/blob/main/packages/client/CHANGELOG.md?

I would like to add one more change request to this issue regarding each of the items listed under each Parameters heading. It will clean up a lot of the boilerplate markup and make it easier to style in the future. Apologies that I did not think of this sooner.

[ ] Convert the unordered lists to field lists for each function. See MyST syntax.

For example:
## Get add-on

```{js:function} getAddonQuery(addonId)

Use the `getAddonQuery` query function to get the query for fetching an add-on at a given path.

:arg string addonId: The add-on's ID. Required.
:hook: `useGetAddon`
```

Example of before and after rendering.

@Hrittik20 what are your thoughts on my proposed change request?

@stevepiercy Okay, on it! Do we need to do it only for functions which has "parameters"? (e.g - "Get add-ons list" doesnt have parameters)

It should be done for all functions. It will require a bit of shuffling around things to make it work.
For example, according to the The JavaScript Domain, we can use square brackets around an argument to indicate that it is optional, and avoid all that "Required: Yes/No" clutter. Arguments without brackets are implicitly required, and should be listed before optional.
I would suggest doing just one file to get a feel for it, and I can review just that one, before you go all out and make a bunch of changes that need to be changed yet again. Once we have an agreeable pattern, then you can go full speed ahead with the rest. Sound like a plan?

can i take it up


Add Stunning.so

Add Stunning.so
| Stunning.so | Build stunning websites in 30 seconds including copy & even images powered by AI. | Build websites with AI. | :white_check_mark: |

Awesome 😎
Do you have a Twitter account?
I'll give you a shoutout.


Remove September 2019 CCDB feature flag

The September 2019 CCDB feature flag was only needed to prevent content from going live before the go-live date. That date has now passed, so the flag is no longer needed.
Removals

Removed the feature-flagged parts of complaint-landing.html

Testing

Visit http://localhost:8000/data-research/consumer-complaints/ and make sure it matches exactly what's live at https://www.consumerfinance.gov/data-research/consumer-complaints/

Screenshots

Checklist

[x] PR has an informative and human-readable title
[x] Changes are limited to a single goal (no scope creep)
[x] Code can be automatically merged (no conflicts)
[x] Code follows the standards laid out in the CFPB development guidelines
[x] Passes all existing automated tests
[x] Any change in functionality is tested
[x] New functions are documented (with a description, list of inputs, and expected output)
[x] Placeholder code is flagged / future todos are captured in comments
[x] Visually tested in supported browsers and devices (see checklist below :point_down:)
[x] Project documentation has been updated
[x] Reviewers requested with the Reviewers tool :arrow_right:

Testing checklist
Browsers

[x] Chrome on desktop
[x] Firefox
[x] Safari on macOS
[x] Edge
[x] Internet Explorer 9, 10, and 11
[x] Safari on iOS
[x] Chrome on Android

Accessibility

[x] Keyboard friendly
[x] Screen reader friendly

Other

[x] Is useable without CSS
[x] Is useable without JS
[x] Flexible from small to large screens
[x] No linting errors or warnings
[x] JavaScript tests are passing

Good call, @Scotchester. Looks like that feature flag might be useful for future updates, so I'm leaving it available for the time being. I still cleaned up the CCDB landing page template to get rid of all the feature-flagged parts since those are no longer needed.

OK, I'm gonna make one more annoying suggestion: How about we rename the flag to something more generic, like CCDB_CONTENT_UPDATES, since Sept. 2019 has now passed? :)

Good call, @Scotchester. I renamed the flag in f6e852b. Would you mind checking that out one more time to make sure the newly named flag works as expected?


 What you want is an undirected graph graph which allows -- to denote an undirected edge.
In your case,
#import "@preview/diagraph:0.1.0": *
#render("graph { a -- b; }")

:facepalm: you're right
I was looking for mixing directed and undirected edges inside a graph, which apparently is solved using the [dir=none].


/DTEST in preprocessor does not work (the example is broken)

Repro:

Copy and Paste the example exactly as above.
Compile, confirm output is "TEST not defined".
Add "/DTEST=" to Project>C/C++ Properties>Preprocessor Definitions" so the full definition list looks like:
WIN32
_DEBUG
_CONSOLE
/DTEST=
Clean and compile. Expected result: "TEST defined". Actual result: "TEST not defined".
Observed on Visual Studio Community 2017, version 15.2

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

ID: 1a87ec45-dd47-8b9c-3f4f-4d4643a8ff57
Version Independent ID: e8236d27-55c6-5857-62f7-2a9137cd3b43
Content: -D (Preprocessor Definitions)
Content Source: docs/build/reference/d-preprocessor-definitions.md
Product: visual-cpp
GitHub Login: @corob-msft
Microsoft Alias: corob

@jnewth Ah, I see what you did there. In the IDE, you defined a preprocessor macro named "/DTEST" with no value. It doesn't match the #ifdef TEST line, so the following line isn't compiled, and it probably appears in light gray in the editor, showing that it's not the active code path. In the IDE, you just need to enter the preprocessor macro name and optionally assign a value. That is, in the Preprocessor Definitions dialog, you only need to enter TEST or TEST=, without the /D command line option prefixed. I can see we don't make that very clear. I'll put a task on my backlog to clean that up.
After you've edited a value in the Property Pages dialog, you can look at the command line by opening the Configuration Properties > C/C++ > Command Line page, where you'll see the list in All Options. In this case, look for the /D "TEST" option to see what effect your additional definition had on what gets passed to the compiler.

@corob-msft Thanks for that! I did in fact try various tweaks first, but before bugfiling I wanted to do exactly what I thought was being instructed to do. As you say, it may be helpful to clarify the language, or perhaps provide a screenshot of the properties panel used in the example, so people have an excessively well-defined example to work from. Regardless: You got me sorted out. Much appreciated.

Is it true that defining macro functions like /DSOMEFUNC(X)=(X*4) is oficially unsupported and there is no way to define one through command line?
Seems a bit unclear regarding "/D has the same effect as the #define directive at the beginning of a source code file"

I "believe" that the /D option may be used multiple times to define multiple definitions, but this help doesn't seem to include that information.  Perhaps the syntax above should be updated?  And perhaps a description of multiple use should be added?
I believe that this is valid:
CL /DONE=1 /DTWO=2
and we can also define
SET CL = /DONE#1 /DTWO#2
Correct?
Or is it
CL /DONE=1,TWO=2
SET CL /DONE#1,TWO#2
-thanks
-e

-D (Preprocessor Definitions) updated.


how use this

you can learn from https://github.com/huggingface/transformers/blob/main/README_zh-hans.md


[REEF-194]  Remove 3rd party libraries from REEF Client Nuget

This PR added

Org.Apache.REEF.Bridge project, that wraps clr dlls including Org.Apache.REEF.Bridge.Clr.dll and Org.Apache.REEF.Bridge.JavaClrBridge.dll. NuGet will be generated for Org.Apache.REEF.Bridge.dll with the spec and script during the build. The clr dlls are generated on the fly through mvn build
Org.Apache.REEF.Jar project, that wraps shaded jar file only. The NuGet for Org.Apache.REEF.Jar.dll. will be generated during the build process. The jar file is grabbed on the fly.

JIRA: REEF-194. (https://issues.apache.org/jira/browse/REEF-194)
Author: Julia Wang  Email<EMAIL_ADDRESS>

@jwang98052 I did a pass. Also, shouldn't this also delete the jar from the repository?

I'm confused:

When I build Org.Apache.REEF.sln, I get a new NuGet for Org.Apache.REEF.Bridge that contains a single DLL: Org.Apache.REEF.Bridge.dll. However, I don't see any code in VS when I open the project.
The new NuGet Org.Apache.REEF.Jar.0.11.0-SNAPSHOT-7 doesn't seem to contain anything.

@jwang98052 We are following another avenue for this, right? So, this could go.

#194 is submitted instead.


Update OptimizationResultCollection.create_basic_dataset to preserve molecule IDs

Description
The goal of this PR is a long-term fix to #297. In short, the current OptimizationResultCollection.create_basic_dataset implementation creates a new dataset by round-tripping through OpenFF Molecules, which causes issues with the hashing/equivalence checks in QCArchive, leading to "the same molecules" being considered different. In turn, this causes OptimizationResultCollection.to_basic_result_collection to return fewer records than expected.
Earlier qca-dataset-submissions (example) manually constructed qcportal datasets instead of using qcsubmit datasets to avoid this round trip. Due to the major updates to qcportal, I don't think this code works anymore, and it seems much more ergonomic to handle this in create_basic_dataset anyway.
The fix is simply to pass qcelemental Molecule objects along directly instead of reconstructing OpenFF Molecules. As it turns out, this was essentially already built into qcsubmit and just required a two-line change to update some keyword arguments in the BasicDataset.add_molecule call.
Todos

[x] Update create_basic_dataset to preserve molecule hashes from the optimization dataset

Status

[x] Ready to go

Well, that turned out to be a pretty easy fix. The hardest part was adding a new mock get_molecules method to the _PortalClient test fixture. The main limitation now is just that the new test is pulling down a full dataset from a live QCArchive instance. I think I can probably pull out a small subset of the real dataset to speed that up at least.

Hey Jeff, I'll take a closer look next week, but this test does fail with the previous logic. I wrote it first and tested that in my first commit.
I also minimized the real dataset including one of the molecules that failed in Lexie's report so I'm not quite following the methane comment.
Anyway, thanks again, and I'll take another look on Monday.

(happy to pick this up at our check in monday, have a good weekend!) Oh, maybe I'm misunderstanding. I was under the impression that both molecules only had the coordinates from methane (I didn't think they were fetching their full coords from QCArchive because of how PortalClient.get_molecules is overridden). Is it instead the case that methane there is a placeholder and that the full coordinates are being fetched before the hash comparisons?

Ah I see now, I forgot I used methane in the mock. I probably should have emphasized this more in the PR itself, but the get_molecules mock is not for the new test I wrote, which uses a live PortalClient from qcportal. The mock is only used by the unchanged, existing test right above the new one that uses the mock _PortalClient class.
I think the coverage of the new test should overlap with the old one, so it might be less confusing just to delete the old test and the new mock. But that seems good to discuss at our meeting!


add option timeout for redirect

Hi,
add option timeout for redirect

Why would we add that? Refresh headers to do a timed redirect are VERY rare nowadays - usually they are only used on shady download sites showing you a useless "Your download is starting in X seconds" message instead of just starting it straight away.
Also, you can create a response and add whatever header you want manually - I don't see any reason to add a shortcut for this particular header to Flask.


TestKit support for JournaledGrains

I was looking at the different examples but I couldn't find an example of a journaled grain that is being tested. Is this supported? I just want to call a method an verify that the "Raise event" is being called.
My grain is a journaled grain with a  [LogConsistencyProvider(ProviderName = "EventStorage")] and when activating this grain it would just crash with the following exception:
   at Orleans.EventSourcing.JournaledGrain`2.OnActivateAsync()
   at Orleans.Grain.<Participate>b__31_0(CancellationToken ct)
   at Orleans.LifecycleExtensions.Observer.OnStart(CancellationToken ct)
   at Orleans.TestKit.TestGrainLifecycle.<>c.<TriggerStartAsync>b__2_1(ValueTuple`2 x)
   at System.Linq.Enumerable.SelectIPartitionIterator`2.PreallocatingToArray(Int32 count)
   at System.Linq.Enumerable.SelectIPartitionIterator`2.ToArray()
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at Orleans.TestKit.TestGrainLifecycle.TriggerStartAsync()
   at Orleans.TestKit.TestKitSilo.<CreateGrainAsync>d__31`1.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Translink.Vbn.Aggregates.Tests.CompanyAggregateRootContext.<Execute>d__6.MoveNext()

So something doesnt work in the OnActivate.  This exception occurs when calling the CreateGrainAsync method
        Grain = await Silo.CreateGrainAsync<CompanyAggregateRoot>(CompanyId);

When I directly use the grain factory i do not get any DI which this grain needs (and the version property is not set). Are there better ways to test journaled grains? Or do I just not test them (which feels kinda strange).

I think the TestKit simply lacks support for JournaledGrain.
I previously implemented ICustomStorageInterface in a project, and iirc the JournaledGrain hooks into several pieces of the Orleans activation/context/internals. I would expect us needing some new mocking/infrastructure to support JournaledGrain.

I think the TestKit simply lacks support for JournaledGrain.
I previously implemented ICustomStorageInterface in a project, and iirc the JournaledGrain hooks into several pieces of the Orleans activation/context/internals. I would expect us needing some new mocking/infrastructure to support JournaledGrain.

I have been starting to use Orleans Journaled grains at work and I would like to help contribute to this feature.
I do not have a lot of knowledge about the inner workings of Orleans, could you point me in the right direction? What interfaces do you expect to need a mock implementation?


UI Raycast Camera can be destroyed at runtime with a multi-scene-setup

Describe the bug
There is no recovery from the UIRaycastCamera being destroyed at runtime. Due to the camera being spawned within the active scene, it doesn't guarantee the camera exists within the same scene as the core MRTK objects.
To reproduce
Steps to reproduce the behavior:

Run Unity with an empty scene.
Load a scene [Additive] with the core MRTK objects within it.
The UIRaycastCamera is instantiated into the active scene (the empty scene).
Unload the active scene (the empty one).
MixedRealityInputModule throws exceptions because the camera is destroyed.

Expected behavior
The UIRaycastCamera should persist by either using DontDestroyOnLoad or being moved to the scene where the core MRTK objects exist.
Your setup (please complete the following information)

Unity Version 2019.3.4f1
MRTK Version 2.4.0

Target platform (please complete the following information)

HoloLens 2

I seem to hit this now when I have upgraded to MRTK 2.4.0 (from 2.3.0, following the upgrade guide).
I use the LoadAdditiveScene script from one of the examples (think it was included in one of the eye tracking exmaples). Directly on load for the new scene the Camera seems to be destroyed and it's spitting out errors. Attached a file containing the three repeating errors' stack traces separated by some newlines, they can maybe help.
Stack_traces.txt

This seemed to solve itself by removing the MixedRealityToolkit and camera parent and reapply it with the MRTK tool Add to scene and configure...

I've had an issue like this when using additive scenes in the editor with the Scene Manager System.
You have to select DefaultManagerScene as the active scene. The problem is UIRaycastCamera always instantiates in the active scene.

We appreciate your feedback and thank you for reporting this issue.
Microsoft Mixed Reality Toolkit version 2 (MRTK2) is currently in limited support. This means that Microsoft is only fixing high priority security issues. Unfortunately, this issue does not meet the necessary priority and will be closed. If you strongly feel that this issue deserves more attention, please open a new issue and explain why it is important.
Microsoft recommends that all new HoloLens 2 Unity applications use MRTK3 instead of MRTK2.
Please note that MRTK3 was released in August 2023. It features an all-new architecture for developing rich mixed reality experiences and has a minimum requirement of Unity 2021.3 LTS. For more information about MRTK3, please visit https://www.mixedrealitytoolkit.org.
Thank you for your continued support of the Mixed Reality Toolkit!


Add Chang shu-huai to Contributors list

Try to send a PR request.

@junsuwhy, I'm quite elated about your pull request. I wanna evolve this project to addresses various problems faced by first-time contributors. I'd love to learn about your journey in open source community, the problems, pain points you had etc.
Could you explain how you felt when you went through the tutorial, made a pull request and learned that I merged it?
We’ve recently added Facebook share and tweet feature to our web app. Could you please go to https://roshanjossey.github.io/first-contributions/#social-share and share your first contribution to open source?
Also, check out projects with easy issues while you’re there.


Support Result<T, E> type in typegen

What version of fuels-ts are you using?
latest
Steps to Reproduce

Expected Behavior
The correct code is
export type ResultInput<T,E> = Enum<{ Ok: T, Err: E }>;
export type ResultOutput<T,E>=  ResultInput<T,E>;

Actual Behavior
export type ResultInput = Enum<{ Ok: T, Err: E }>;
export type ResultOutput=  ResultInput;

Related to https://github.com/FuelLabs/fuels-ts/issues/2162

@spacedragon I realized now that I misread the error you reported here. What you reported indeed seems off. Can you share the ABI which led to this problem?

Made some small changes to the counter example from the starter guide, following is the sway code
contract;

pub struct Foo {
    bar: u64,
    baz: bool
}

enum ColorError {
    Blue: (),
    Green: (),
    Red: (),
    Other: (),
}

storage {
    counter: u64 = 0,
    foo: Foo= Foo {
        bar: 0,
        baz: false
    },
}

abi Counter {
    #[storage(read, write)]
    fn increment(add: u32, two: u64, three: b256) -> u64;

    #[storage(read)]
    fn count() -> u64;

    #[storage(read, write)]
    fn complex(foo: Foo, option: Option<str[1]>) -> Result<Foo, ColorError>;
}

@spacedragon Thanks for the report and the ABI, it is indeed an issue.


DSEGOG-243 Use Echo S3 for image storage

This PR moves image storage from disk to using Echo S3. To do this, I've added an EchoInterface class, which creates a connection to the Echo instance and can download & upload files to the service. This is used in my refactor of Image, where I've changed all the code relating to storing/retrieving images to do these operations using Echo. To store images on Echo at ingestion, I've made use of a ThreadPool where more than one image is being ingested per HDF file. Based on testing with the ingestion script, this gave some performance improvements compared with not using them.
In terms of performance, using Echo to retrieve an image seems to take roughly the same amount of time compared with when images were stored on disk. Ingesting HDF files containing image channels does take longer, but it's still acceptable. Each HDF file that contains 1-2 images take 1-2 seconds to ingest, compared with <1 second before. Until we get a realistic volume of data (with HDF files containing a realistic number of image channels), we won't really know if the performance is acceptable, but at this point it's promising.
I've added tests for the EchoInterface and Image classes - hopefully that should increase coverage a bit and give us a bit less work when we come to the 'improve unit tests' piece of work. Coverage across the two classes is fairly good, although I couldn't find a way to mock a bucket not existing, so couldn't write a test for that.
I've edited the ingestion script to remove all files in a bucket if that option is selected and added a couple of extra bits of timing to help with the previously mentioned performance testing.
Ingestion to Echo works on GitHub Actions. At the start of each run, a new bucket is made - it's given a name based on the commit SHA, run ID and Python version being tested (so it's unique). At the end of the run (even if the run fails), this bucket is deleted. This should prevent any data from GitHub Actions overwriting data from our development buckets. To do this, s3cmd is used, a command line utility for interacting with S3 instances similar to a Unix filesystem. This was recommended by the Data Services team and is quite useful to managing buckets for our own development (e.g. if you need a new bucket to quickly test something) etc. There's some documentation about how to set it up in README.md.
While this PR has 1,584 lines added, over 1000 of them are from poetry.lock, so it's closer to only ~500 lines changed. Hopefully it shouldn't be as time consuming to review as the experiments PR!

@kevinphippsstfc I have made a change to this PR, please see 4b86e270d2b55c11804b431737e9b3ded5d326c0. This changes the use of the command line tool s3cmd to now use s4cmd. While working on the simulated data, I found that s4cmd is much better at dealing with large files, resulting in higher performance. It is installable via pip so it's a dev dependency, making it easier to install

So it turns out that s4cmd doesn't have the ability to remove buckets - it can be done in s3cmd though. As such, I've made an appropriate change in 340dd51e679003543e1278f091dd9abe146d3cb9 to make the CI work and clean up after itself (it's like an obedient child now..). It's not the best solution, but s4cmd has much better performance so I still want to keep that as the command line tool that we use in all other cases.

I've just pushed a change that removes all references to image_store_directory. It's not used in the code any more because images are stored on Echo, not on disk.

All review comments handled, I've marked this PR ready for a re-review

@kevinphippsstfc merge conflicts fixed

Made the suggested change and requested a re-review


add first migrations

Pull Request
Description
Easy to make migrations
Fixes #ale
How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce.
Please also list any relevant details for your test configuration

[ ] Yes

Checklist:

[ ] My code follows OCF's coding style guidelines
[ ] I have performed a self-review of my own code
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have checked my code and corrected any misspellings

https://alembic.sqlalchemy.org/en/latest/tutorial.html#running-our-first-migration


Add 'checkbulk' API

SpiceDB now has the ability to bulk-check permissions.
It'd be valuable to have this ability from the .NET bindings as well

Adding my voice to this, it would be great to have this added.

That is a very interesting addition as it's a pain to have to check permissions one at a time when often you might have multiple permissions in use in one particular area of an application.  I started a branch to work on implementing this method.  The proto definitions are up to date in the branch and I just have to add the method to do it.
I'm not super happy with the internals of this library at the moment.. I'd like to line it up with the api a bit better so I may at least refactor a bit.

I added this in #13 but unfortunately I can't test it through serverless as the experimental feature isn't yet available.  I don't have time at the moment to devote to this so if you guys can give it a go and let me know that would be great.

Pushing a new version that is using the graduated version of the API call from experimental to permissions.  Most methods are named CheckBulk* instead of BulkCheck*

Pushing a new version that is using the graduated version of the API call from experimental to permissions. Most methods are named CheckBulk* instead of BulkCheck*

AuthZed confirmed that CheckBulk is the GA release of the BulkCheck.

Pushing a new version that is using the graduated version of the API call from experimental to permissions. Most methods are named CheckBulk* instead of BulkCheck*

AuthZed confirmed that CheckBulk is the GA release of the BulkCheck.

Sounds good.  Then I'm going to try again to test when I get off of work.  If it does work for you let me know.

Pushing a new version that is using the graduated version of the API call from experimental to permissions. Most methods are named CheckBulk* instead of BulkCheck*

AuthZed confirmed that CheckBulk is the GA release of the BulkCheck.

Sounds good. Then I'm going to try again to test when I get off of work. If it does work for you let me know.

I asked about CheckBulk and Serverless, this is the response:
We don't ever plan to implement that API in Serverless. We are deprecating Serverless in a few months in favor of Authzed Cloud. BulkCheck will be available in Authzed Cloud. If you want to test BulkCheck, you can run SpiceDB in a Docker container.

So it seems that in order for me to test this method I'm going to need to set up a server. I've largely been going off Serverless for testing purposes but it appears a number of newer API methods aren't implemented in Serverless anyway.

I set up a proper environment for testing and have testing working through Github actions as well.  I was able to successfully get bulk permission testing to work in the newest version.


How much metadata behaviour should be implemented on their classes?

The TUF refactor aims at a more idiomatic use of OOP (see #1112). As such it seems reasonable to implement metadata entity behaviour as instance methods on the corresponding classes.
However, not all users of the metadata model need the same behaviour. For instance, a TUF client is likely to only need Metadata.verify and read access on all metadata object attributes, but none of the methods to modify attributes, which are needed by a  repository library/tool,  (e.g. sign, bump_version, bump_expiration, delegate, add_keys, add_targets, etc.).
This question about how to draw the line is especially important if unneeded functionality requires 3rd party dependencies, which we would have to vendor on a client.
Some possible approaches (brain storming):

Use classes exclusively for attributes (except maybe for methods on sslib's Metadata and Signed classes, such as sign, verify, canonicalise) and implement all behaviour on metadata user specific controller classes, e.g. Repository, Client  (or something like Project/Developer/Workspace for PEP480.
Use Subclasses, e.g. RepositoryTargets, ClientTargets, etc...
Expose all methods to all users of the model, but handle missing optional dependencies. E.g. raise something like an UnsupportedLibraryError if a client calls Metadata.sign but does not have the underlying optional  3rd-party dependencies (see https://github.com/secure-systems-lab/securesystemslib/issues/179)

Premise: Find a balance between OOP purism and pragmatism

Related discussion: Is there a need for library functions that should be implemented neither on a metadata class nor on a controller class?

dropping some thoughts here ...
On one hand the general preference should be towards composition over inheritance, in this case the controller classes option.
On the other hand, Client needs only a subset of all metadata methods, meaning there is a common base functionality between Client and Repository which repository extends which hints toward inheritance. However, Signed class already has one level of inheritance hierarchy which I find meaningful and I don't want to suggest ruining.
Having said that maybe something like option one:

Use classes exclusively for attributes (except maybe for methods on sslib's Metadata and Signed classes, such as sign, verify, canonicalise)

plus a base Controller class that can be extended by a RepositoryController, if needed, seems like the best compromise.
I like option three too,

Expose all methods to all users of the model, but handle missing optional dependencies. E.g. raise something like an UnsupportedLibraryError if a client calls Metadata.sign but does not have the underlying optional 3rd-party dependencies

mainly for its simplicity but I can't add much knowledge on potential dependencies issues

Related discussion: Is there a need for library functions that should be implemented neither on a metadata class nor on a controller class?

In the current code there are a lot of different functions performing hashing. Probably this can be done using directly securesystemslib but if such a pattern starts to appear again, maybe a helper/utility/wrapper class?

To answer Luke's question, my 🔥 take is 💯

From client implementation experience: The metadata API should definitely handle:

verify metadata signature with threshold
verify metadata file hash/length
verify target file hash/length

The rest is just nice-to-have functionality, mostly easier accessors to existing attributes: E.g. timestamp.signed.meta["snapshot.json"].version is "correct" but also completely unnecessary as "snapshot.EXT" is the only valid key in meta... so we could have timestamp.signed.snapshot_meta.version (which is a lot easier to statically type check)

The stable release of the Metadata API lets me assume that we have made a decision about this.
I wonder if we should track it in an ADR. It might keep us from cramming more functionality into the API when designing a repository library (#1136). Opinions?


Would you recommend me a way to get 360 degree view?

❓ Questions and Help
Would you recommend me a way to get 360 degree view using habitat-api?
I tried simply changing
config.SIMULATOR.RGB_SENSOR.HFOV = 360
config.SIMULATOR.DEPTH_SENSOR.HFOV = 360
config.SIMULATOR.SEMANTIC_SENSOR.HFOV = 360
But it doesn't work :( and it shows only images that are full of one color.
When I used mp3d dataset and for the default value(HFOV=90), it worked well.

Yeah, that won't work with the Pinhole camera model. The Pinhole camera model is only defined for 0<=x<180 FOV.
Currently, we are working on a hack where you render a cubemap for a 90 degree FOV in all 6 cardinal orientations and then stitch them together in a single cubemap using a cubemap2equirectangular projection. Long term, we plan to write a cubemap shader in Habitat-Sim to support this faster and better use the GPU Hardware.

Yeah, that won't work with the Pinhole camera model. The Pinhole camera model is only defined for 0<=x<180 FOV.
Currently, we are working on a hack where you render a cubemap for a 90 degree FOV in all 6 cardinal orientations and then stitch them together in a single equirectangular image using a cubemap2equirectangular projection as a PyTorch layer. Long term, we plan to write a cubemap shader in Habitat-Sim to support this faster and better use the native GPU cubemap texture units.
If you want multiple cameras on your agent, you can use #472 to setup multiple visual sensors with different orientations and UUIDs and then stitch them together somehow.

Wow, thanks for your kind comment. I'm very happy to know that you are working on the hack and thanks for your help!

@timegate #478 should be able to mimic a 360 sensor


Paper draft for JOSS

A draft for a submission to https://joss.theoj.org/
TODO: Get review and approval from all co-authors

[x] Alex
[x] Karina
[x] Knut
[x] Rafal
[x] @magnunor
[x] @jan-car
[ ] @irahulcse
[x] @woozey
[ ] @ozej8y

Wouldn't it be fair to add all formal contributors as coauthors? This is also valid for ZENODO.

Wouldn't it be fair to add all formal contributors as coauthors? This is also valid for ZENODO.

On Zenodo we have all contributors as authors.
With papers in relation to LiberTEM I find it hard to decide. On the one hand it would be nice to include all contributors. On the other hand we have a "long tail" of people with a few lines here and there. From some we even only know the GitHub handle. For a paper one needs explicit consent and buy-in from all the co-authors, which would make is more and more difficult to publish papers.
If someone contributed a few lines of code or gave some suggestions, this could be honored in an acknowledgment, perhaps? In particular for "helpful discussions", our list is so long that linking to it is more practicable, as practiced in this paper.

@uellue, I fully disagree with you. If one writes a publication about LiberTEM with a broad scope (e.g. about LiberTEM in general or especially with LT as main part of the title) one should in my opinion include all of the formal (I guess ones, listed on GitHub) contributors. I see quite obvious reasons for that:

All formal contributors have indeed contributed to the project unless it is specifically defined how many lines of code and in which module should be written to become a "real" part of the project;
It can be discouraging for the contributors otherwise, and as far as I remember one of the strategies was to encourage contributions in order to grow the project faster;
One would not need to decide which contributions were essential for the publication and which were not, which is rather vaguely defined for broad scope publication and, therefore, can again be discouraging.

In addition to that, the argument of long list of authors doesn't look valid to me - it should be as long as needed. Collecting approvals from all the authors isn't an argument neither, this can be done in a passive way, communicating to all authors deadlines for changes and for eventual authorship withdrawal. The argument of number of lines as I mentioned above would put one in the situation of deciding the exact number of lines and which lines are counted and which are not. I doubt that this is going to be productive.
For narrow scope publications, that for example describe some particular algorithms that have been developed for LiberTEM, I could imaging choosing different approach. However if it again  very close relation to the project (which isn't very defined), my suggestion would be developing some formal criteria to keep transparency and to avoid possible frustrations.
With Zenodo it does not look transparent to me how the contributors split into "Other(s)" neither.

@woozey Looking at a number of papers about software, there are quite a number of examples that follow a similar policy to what I have described:
https://github.com/apache/spark/graphs/contributors
vs
https://dl.acm.org/citation.cfm?doid=3013530.2934664
In 2016, when the paper was published, Apache Spark was already in full swing. Today it has 1444 contributors.
Another one:
https://ieeexplore.ieee.org/document/5725236/authors
vs
https://github.com/numpy/numpy/graphs/contributors
Can you give examples for software packages with more than 10 contributors that follow your proposed policy?
Regarding "creator" vs. "other" in LiberTEM, the criterion for being a creator is having a commit in the project, i.e. copyright.

By the way, good to check every now and then. @woozey you should be in creators.json because you contributed a commit. See #477
By the way, we encourage everyone to keep an eye on that themselves and update the files as part of contributing a PR.

See also https://joss.readthedocs.io/en/latest/submitting.html#authorship

@uellue I'm not sure that the example of Apache or NumPy is applicable here, since LT is a scientific package, and as you mentioned some time ago the output of scientists is measured by publications not by a number of code they have written. Therefore, including everyone in general publication until the number of contributors exceed some hundred would be a sensible decision.
I don't have in mind other projects than HyperSpy how does it, but I guess doing some research you would find examples for both approaches.
Even if one insists on that "we should do the same as major open source projects", I'm strongly for developing transparent policies on who to be acknowledged in which way. If one is up to deciding how many and which lines of code counted, I'm not a help here. One in any case needs to avoid situations when people ask themselves "why he is included and I'm not".

Regarding "creator" vs. "other" in LiberTEM, the criterion for being a creator is having a commit in the project, i.e. copyright. Edit: Or similar contributions, for example sample code that we ported to Python.
By the way, good to check every now and then. @woozey you should be in creators.json because you contributed a commit. See #477

This is an example, but adding my name still won't make it complying with your statement above. So my main requests are transparency and encouragement. The way to achieve it can be discussed, though at the moment I don't see a better way than I have proposed to achieve that. If someone have better suggestions, I'm open for discussion.
In addition to that,

See also https://joss.readthedocs.io/en/latest/submitting.html#authorship

I'm not sure what is the occasion for publishing in JOSS, though I can imaging that they won't have anything against seeing 10 people in the author list. If they will, one may think of ways to solve the problem or even to change the paper destination. Again, the argument that author list is too long doesn't sound valid to me having 10 contributors on GitHub. Once the project grows I can imaging that one says, for example, that for general publications the authorship goes to first 25 contributors sorted according to the number of lines contributed or whatever.

At Hyperspy, they had the same discussions with similar arguments from both sides:
https://github.com/hyperspy/hyperspy/issues/928
https://github.com/hyperspy/hyperspy/issues/1856
@woozey The point about the JOSS authorship guideline: The way I understand it, authorship means an endorsement of the entire paper and responsibility for the entire content. That means authors have to review the draft and actively consent to the publication.

At Hyperspy, they had the same discussions with similar arguments from both sides:
hyperspy/hyperspy#928
hyperspy/hyperspy#1856

Yes, and there are proposals for formal criteria like for example including authors of contributions made within a year, that none of the contributors feel unfairly excluded or bipassed.

@woozey The point about the JOSS authorship guideline: The way I understand it, authorship means an endorsement of the entire paper and responsibility for the entire content. That means authors have to review the draft and actively consent to the publication.

This is formally the case for any publication in any journal. In reality ones who "endorsed in the entire content of the paper" are typically first 2 authors, while others contributed only to parts of the paper. Responsibility depends on the level people understanding of it, and if everyone was given an opportunity to make changes and review content I don't see any issues with the responsibility. Not to mention that people can only contribute to the entire contents of the paper only if they are invited to do it (i.e include as coauthors).
Repeating myself again, current author list of this paper is an example to me of a nontransparent decision of whose contribution to the project is important and whose is not important to be asked to contribute to the paper. This can result in a discouragement and frustration of other contributors.

So my main requests are transparency and encouragement

I agree, we need a written policy on this. My suggestion would be to consider contributors from the creators list. If a contributor thinks he belongs on that list, they can add themselves via PR. I think this does tick the "encouragement" box - especially as it encourages people to get actively involved.
I will add a PR template later today to make sure future contributions all include the authorship information (among others).

Collecting approvals from all the authors isn't an argument neither, this can be done in a passive way, communicating to all authors deadlines for changes and for eventual authorship withdrawal

I would go for an opt-in approach here, as at least for the JOSS publication, "co-authors agree to be accountable for all aspects of the work [...]" (I imagine this is similar for other papers?). So before publishing, we would ask people if they want to be listed as author, and if they answer before a deadline, we add them.

So my main requests are transparency and encouragement

I agree, we need a written policy on this. My suggestion would be to consider contributors from the creators list. If a contributor thinks he belongs on that list, they can add themselves via PR. I think this does tick the "encouragement" box - especially as it encourages people to get actively involved.

Great that our discussion start to converge. That would also require a clear definition who are included as creators, but that sounds reasonable. Just in case, with word "contributor" I meant ones listed on Github not the extended list from Zenodo-Others.

Collecting approvals from all the authors isn't an argument neither, this can be done in a passive way, communicating to all authors deadlines for changes and for eventual authorship withdrawal

I would go for an opt-in approach here, as at least for the JOSS publication, "co-authors agree to be accountable for all aspects of the work [...]" (I imagine this is similar for other papers?). So before publishing, we would ask people if they want to be listed as author, and if they answer before a deadline, we add them.

This looks reasonable too. I'd prefer if it is done with explicit notifications i.e. either via email or if using Git's issues than making sure that the contributors get notifications.

require a clear definition who are included as creators

The requirement for being in creators.json is being listed in the GitHub contributors, having contributed code or material that ended up in the project in other ways (Example: Colin Ophus sent Alex a prototype of a K2IS reader, Knut gave Karina prototypes for the blobfinder), or significant contributions to management -- supervision of the work a contributor, for example.

Great that our discussion start to converge.

@woozey @sk1p Yes, this sounds like a good compromise. I'll update our documentation with an authorship guideline and policy that reflects this. Is the proposed criterion for being eligible for creators.json clear, fair and transparent, my comment above?
Fully agree on having clear, transparent policies, that's a good point. And definitely good to discuss in case sth is unclear or needs improvement.

I will add a PR template later today to make sure future contributions all include the authorship information (among others).

Done now, let me know if that is missing anything important

Great that our discussion start to converge. That would also require a clear definition who are included as creators, but that sounds reasonable. Just in case, with word "contributor" I meant ones listed on Github not the extended list from Zenodo-Others.

Thanks for clarifying - although the contributor list on GitHub can be misleading: for example, Karina had a misconfigured git client, so most of her commits are not attributed to her github account. So the creators.json should be a more accurate representation of contributions.
As for who is included as creators: anyone contributing code/docs/prototypes/benchmarks/... who gets their PR accepted can add themselves to the creators.json.

This looks reasonable too. I'd prefer if it is done with explicit notifications i.e. either via email or if using Git's issues than making sure that the contributors get notifications.

Agreed - I would suggest we, in the future, mention everyone from the creators.json via their github usernames when openly writing a paper like this, or privately via mail.

or significant contributions to management -- supervision of the work of a contributor, for example.

This look a bit dangerous to me. This statement is towards "bosses", who contribute resources (funding) to the project which is certainly makes it fair to include them. On the other hand with 10 contributors one may end up with situation that 10 bosses have to be included. The HS practice is not to do it at all as institutions get credits anyway of their members being listed as part of the project. And not to make the project being "Cambridge" project, which may drag away some possible contributors. Also I can imaging the same discussion between "bosses", that they ask "why he is included and I'm not?". Are my concerns valid? Any suggestions on how to clarify or narrow down this point?

As for who is included as creators: anyone contributing code/docs/prototypes/benchmarks/... who gets their PR accepted can add themselves to the creators.json.

I suggest to say it explicitly in corresponding PR comment.

This statement is towards "bosses", who contribute resources (funding) to the project which is certainly makes it fair to include them. On the other hand with 10 contributors one may end up with situation that 10 bosses have to be included.

You are right, we shouldn't have a long list of "honorary authors". Including managers is not targeted at the boss of someone who spends a few hours on a PR, but at bosses of people who contribute a significant fraction of their time to LiberTEM. Your arguments of encouraging contributions holds for bosses, too. If a boss employs someone who dedicates a significant part of that bosses resources to LiberTEM and where the boss provides guidance (valuable time and brain capacity) on the contribution, it should be worthwhile for the boss to do that.

The HS practice is not to do it at all as institutions get credits anyway of their members being listed as part of the project.

In that, LiberTEM and HS are a bit different. LiberTEM has targeted support and endorsement from institutions and companies from the beginning, and credits that.

And not to make the project being "Cambridge" project, which may drag away some possible contributors.

What is a "Cambridge" project?

You are right, we shouldn't have a long list of "honorary authors". Including managers is not targeted at the boss of someone who spends a few hours on a PR, but at bosses of people who contribute a significant fraction of their time to LiberTEM. Your arguments of encouraging contributions holds for bosses, too. If a boss employs someone who dedicates a significant part of that bosses resources to LiberTEM and where the boss provides guidance (valuable time and brain capacity) on the contribution, it should be worthwhile for the boss to do that.

The HS practice is not to do it at all as institutions get credits anyway of their members being listed as part of the project.

In that, LiberTEM and HS are a bit different. LiberTEM has targeted support and endorsement from institutions and companies from the beginning, and credits that.

I fully agree on this point and presence of Rafal for example in creators list is fully justified. And indeed, the project should be made attractive to different kind of contributors. I'd be rather more specific about what is "significant contribution" that will qualify "resource donators" as creators. Also I'm not sure if the individuals or actually institutes should be acknowledge in this case.

And not to make the project being "Cambridge" project, which may drag away some possible contributors.

What is a "Cambridge" project?

I was referring to HS which never became Cambridge-project having a strategy to include only actual contributors.

Also I'm not sure if the individuals or actually institutes should be acknowledge in this case

What about both? We already credit FZ Jülich in the "Funding" section. Others can join the ranks. :-)

I was referring to HS which never became Cambridge-project having a strategy to include only actual contributors.

Ah OK. :-) Well, at the moment LiberTEM is de-facto a "Jülich project" because a large fraction of the contributors and users is from here. The point is, it is not meant to stay like that. You raised a good point to make sure that each contribution gets a nice "pay-out" in terms of visibility and publication.

@woozey @sk1p see #483 for PR with new policy!

Hi all,
@probonopd @jan-car @irahulcse @woozey @magnunor @cophus @ozej8y @jaewshin
since you are co-creators of LiberTEM, per our newly developed authorship policy for LiberTEM https://libertem.github.io/LiberTEM/authorship.html you are cordially invited to be co-authors of this paper.
If you'd like to be included, please reply in this thread or contact me by other means! As co-author, your role includes reviewing and approving the draft for submission in a timely fashion and following the authorship policy of the journal we are targeting: https://joss.readthedocs.io/en/latest/submitting.html#authorship

Latest PDF preview: https://res.cloudinary.com/hju22ue2k/image/upload/v1574110250/nzejwzhldjzppwoc6ott.pdf

Hi, @uellue @sk1p  I will be honoured to be the part of the LiberTEM again on this Paper Draft for JOSS.

Hi Dieter,
Thanks for the generous invitation, even though I made a small contribution
(bug fix).
I'll review the current draft.
Regards,
Jay. (ozej8y)
On Tue, 19 Nov 2019 at 14:55, Rahul Chandra<EMAIL_ADDRESS>wrote:

Hi, @uellue https://github.com/uellue @sk1p https://github.com/sk1p I
will be honoured to be the part of the LiberTEM again on this Paper
Draft for JOSS.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/LiberTEM/LiberTEM/pull/460?email_source=notifications&email_token=AAPOUY5SYE3UE4C6F2LGU53QUNPUZA5CNFSM4JG7PGSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEMYS2Y#issuecomment-555321707,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAPOUYYAD5S4UHLDYJ7ZKZDQUNPUZANCNFSM4JG7PGSA
.

--
Jay van Schyndel
Research DevOps Engineer,
Monash eResearch Centre
https://www.monash.edu/researchinfrastructure/eresearch
Ph: 03 9902 0795 (+61 3 9902 0795)
Email<EMAIL_ADDRESS><EMAIL_ADDRESS>Mail:
Monash eResearch Centre,
G96, 15 Innovation Walk,
Monash University, Clayton Campus
Victoria 3800, Australia

Hey, @uellue! Highly appreciated! I'll review the draft asap!

Very nice! I'm in, and will read through the draft asap.
And markdown based paper, nice :)

I'm not too familiar with these types of "software papers", so I read through the https://joss.readthedocs.io/en/latest/submitting.html#what-should-my-paper-contain. Based on that I think the current draft looks good!
Some minor comments:

In the Clausen2019 reference, it would be nice to have @Probonopd name
In the lower left on each page, with the paper title ++, the author list is currently Mickey Mouse et al.. Is that due to a misconfiguration, or something which will be updated to the real author list in the "journal typesetting"?

Regarding ordering of author lists I've added a proposal to resolve this: https://github.com/LiberTEM/LiberTEM/pull/460/commits/b95eeb1f0d78d324badc8d02b58dd68acd684ecf
Alphabetical ordering is not a good choice for papers, unfortunately.

@magnunor, thx for your review!

In the Clausen2019 reference, it would be nice to have @probonopd name

Ok, took a bit of sleuthing, but I found it. Thx for pointing it out!

In the lower left on each page, with the paper title ++, the author list is currently Mickey Mouse et al.. Is that due to a misconfiguration, or something which will be updated to the real author list in the "journal typesetting"?

Oh, good catch! That looks like a bug in the drafting service since there's no Mickey Mouse anywhere in the paper and the main author list is correct. We should confirm that during the reviewing process.

Hi @irahulcse

But does that matter I had only some bug fixes and documentation done during the pre GSOC period.
As I was not able to get selected in GSOC.

Your bug fixes went into LiberTEM, which means you are among the creators. All contributions are valuable and deserve proper credit!
The point that @woozey raised in the discussion above was that we can't just define an arbitrary "cut-off" or decide unilaterally who is on a paper just to keep the author list of a paper short. At the same time, we have to make sure that only people who actively consent and assume their responsibility as authors are included. That means we needed to establish a policy. The compromise is drafting a paper, typically among a smaller group of contributors, and then inviting all creators with recent contributions to be co-authors.
Long story short, I understand your comment in such a way that you'd like to be co-author. Is that correct? In that case, could you also please indicate your affiliation for the paper, for example the university where you are enrolled?

@magnunor what affiliation should I use, Antwerp or Oxford? I find a commit from the 29th of May 2018 in the git log.

@irahulcse Do you already have an ORCID? If yes, could you please post it here? If not, this could be a good time to register one here so that you can start building your publication track record: https://orcid.org/

@ozej8y great, thanks in advance! Could you please indicate your ORCID?

@uellue As I didn't have the knowledge about the ORCID, so I had just created my ORCID now. My ORCID is 0000-0003-2079-5368

@uellue As I didn't have the knowledge about the ORCID, so I had just created my ORCID now. My ORCID is 0000-0003-2079-5368

@irahulcse Thank you! Could you please also indicate the affiliation that I should use, for example your university?

@uellue As I didn't have the knowledge about the ORCID, so I had just created my ORCID now. My ORCID is 0000-0003-2079-5368

@irahulcse Thank you! Could you please also indicate the affiliation that I should use, for example your university?

@uellue My university name is  Chandigarh University.

@irahulcse Thanks, updated! :-)

Just as a comment, editing and reviewing papers with the GitHub workflow works really, really well in my impression! If you agree I'd propose to do it that way for all LiberTEM papers.

@magnunor what affiliation should I use, Antwerp, Oxford or Cambridge? I find a commit from the 29th of May 2018 in the git log.

You can put in EMAT, University of Antwerp, Antwerp, Belgium (or whatever version of that is appropriate for the affiliation format).
I've never worked at Oxford or Cambridge, but I was about 3 years at University of Glasgow :)

@magnunor Thx for the info!

I've never worked at Oxford or Cambridge, but I was about 3 years at University of Glasgow :)

🙈 yes that one! Sry... 😄

@jan-car @irahulcse @woozey @ozej8y
Dear all, do you think we can complete the manuscript for submission until next Monday, i.e. the 9th of December? As far as I am aware, we'd need your review and approval of the draft for that.

I was brave to commit changes in the affiliations directly. Essentially reordering them as they appear in the author list.
In addition to that some minor optional comments are inline:

Sorry for the delay and thanks for adding me to the author list. I had a look at my contributions and only found two test cases I added for directional color coding, but if I remember correctly, I gave the according main visualization code to Alex via USB stick, so it won’t appear under my GitHub handle (same situation for the code Knut gave Karina if I followed the discussion here correctly), so that should be fine, right?
The draft looks good to me and all minor things were already adressed by others, I also really like the markdown approach, never saw that before.
Do you also need my ORCID?

@woozey Thank you for your review! :-) I'll integrate it shortly.

@jan-car Many thanks! :-) Yes, I also liked collaborative editing, much better than circulating Word documents.

Hi @uellue. Sorry for the delay. Could you pls guide me what should I review and update so that manuscript is ready before timeline.

Hi @irahulcse, you can just read the current draft and comment the source code with suggestions and remarks, if you have any. After that you can leave a comment if you agree to be co-author, or just check the checkbox in the description above. We need an explicit consent from each co-author to submit a manuscript to a journal, and all co-authors have full responsibility for the entire content of a publication, which means that each co-author should review and approve the draft. Plus, each review improves the quality of the manuscript!

Thanks, to @uellue. I would like to be the co-author but I wanted to ask that, is manuscript is going to get published in some journal and if yes, then when?. Because I don't have the experience regarding the process of publication before.

Thanks, to @uellue. I would like to be the co-author but I wanted to ask that, is manuscript is going to get published in some journal and if yes, then when?. Because I don't have the experience regarding the process of publication before.

Thanks, to @uellue. I would like to be the co-author but I wanted to ask that, is manuscript is going to get published in some journal and if yes, then when?. Because I don't have the experience regarding the process of publication before.

Hi @irahulcse, yes, the plan is to submit the manuscript for publication in the Journal of Open Source Software. The next step after submission will be a review process at JOSS. That should take anywhere between a few weeks and a few months, depending how fast the reviewers work and what kind of changes we have to make. After that it will (hopefully) be published in JOSS.

@irahulcse If you still would like to be co-author, could you please find the time to review the manuscript and approve it for submission ASAP?

@uellue How to approve it? As, I am not able to check the box given in the starting of this pull request,

it is showing 2 affiliations in my section. What does it mean?

@irahulcse Thank you for your review. The "2" means affiliation index two, which is Chandigarh University in the section below. If you can't check the box, you can just write a comment that you are OK with submitting the manuscript.

OK, @uellue . I am approving the manuscript. Hope for the best, that it will get published in JOSS.

Ok, thx, great! :-)

Final PDF preview: https://res.cloudinary.com/hju22ue2k/image/upload/v1576166151/rcx94houmw1edjve5rjr.pdf
As far as I can see, this should be ready for submission at JOSS.

Thanks @uellue for authoring and thanks everyone for reviewing - I've merged the PR which means the  submission to JOSS can continue!

The paper is submitted and I'll keep you updated about the progress.

Here's the review process at JOSS: https://github.com/openjournals/joss-reviews/issues/1962


Fix: more and more Wrap are added every time the mouse is moved.

Fix Issues: more and more Wrap are added every time the mouse is moved.

Related #5077
Related #5079
Closes #5084

Here is an example of how this would solve the issue.
Adding a value greater than 2.0 will prevent the popup(=tooltip) size from changing when you move the mouse.
If you add 16.0 ~ 20.0, tooltips that were affected by other tooltips will return to their original size.
If you add 25.0 or more, the size of the tooltip will continue to grow until there is no wrap.
May be, It seems to be affected by line size and inner margin of tooltip.

This is not the right way to fix this


Improve Search on Website

Description
We are using Algolia for search, it was built as a quick iteration, that we've never really re-visited.
The search bar is the most interacted with element in our docs, but the search results are terrible, this task is to track improvements in this space.
In particular, I think the following tasks should be considered:

[ ] Separate docs out such that searching when in the scope of /docs only returns docs items. Or at least, prioritises documentation content. It should definitely not return Handbook content
[ ] Searching in our Handbook should just return /handbook content
[ ] On mobile, the search is very broken, if you type a couple of characters, they then get auto-deleted, this needs investigation.

Epic/Story
No response
Have you provided an initial effort estimate for this issue?
I have provided an initial effort estimate

Hi @joepavitt thanks for the issue, I already had one created: https://github.com/FlowFuse/website/issues/2314 I'll delete it since it's duplicated now.
I did investigate a bit, but couldn't find many built in options since we're using the netlify free plugin.

For me, Android/Chrome - every 2-3 characters I type, it clears the search

Mmm... That's odd, I've just tried from an Android and it works too

The best approach would be to namespace search queries.
This would imply adding a new 'namespace' attribute that algolia tracks in the header section of each doc. Namespace values could be docs/userDocs, handbook etc.
From what I can tell we're initializing algolia's search bar in a lot of places, so we can just add a new searchParameters.filters = 'namespace:handbook' where needed

Sounds good to me @cstns - we are also currently using Netlify's Algolia plugin, but we may want to switch to the standard option of InstantSearchJS


Removes beep :sob: :sob: :sob:

Removes the beep task for audibly saying the build is done. I vow to bring it back some day!
Removals

gulp beep task

Review

@vickumar1981
@kave

@kave I'm so conflicted by your sign off. :+1: /:-1:

:+1:

Gone but never forgotten. :+1:


Create a model for how to write SQS invoking lambda

Update from Aditya - likely not going to get to this within the next week


WIP: Update line series to use properties/decorate pattern

I've got an alternative idea, I'd like to finish that first.

replaced by #254


How is BN in key-encoder updated (in Moco v1)？

updated by momentum update?  or by setting BN in .train() mode, updated by itself (i.e., running_mean/running_var)?

BTW, no gradient in key-encoder, even in BN, right?


Unifi Gateway data

David,
Please let me start with the fact that this is an INCREDIBLE monitoring tool. Very Impressive.
I am not sure that this is an issue. I have now had time to look through what you have done. There is a huge set of data that is presented and there are loads of options to filter through it and view individual devices and ports. What I seem to not find is the data on the Unifi Gateway at all. This might be my complete misunderstanding of the data set.
Looking at the dashboard I can see all of my APs and all my switches. within my network, but I do not see the gateway device at all.
below all switches

below all Devices

all switches

all APs

Looking at the list of devices, you can see UAP, UDM and USW
Can I assume that the UDM device is the gateway itself. Does that in turn mean that there could be something not configured and that is the reason when the UDM device is selected there is no data present?
Thanks again for your great support.
Regards
Lawrence

Looking at the dashboard

Which dashboard? There are 6. Does your gateway show up on the USG dashboard? Do you have a UDM or a USG on your network? Does your controller have more than 1 site; how many?

Can I assume that the UDM device is the gateway itself.

A UDM is a gateway and will be considered as such.

Does that in turn mean that there could be something not configured and that is the reason when the UDM device is selected there is no data present?

What data is not present that you're expecting, and which dashboard/panels are you looking at?

Your screenshot don't provide enough data, take bigger ones that show the variables, panels and dashboard titles.

I have a USG ... with only 1 site ICAN
You say 6 dashboards. haha then I am missing some because I only see one. How can I see the rest ?
 I just downloaded the USG dashboard and that shows great data as well
Sorry.
Lawrence

I have now added the following template ... UAP for Influxdb but I am seeing that I am miising a pluging.

What pluging should I install to view the red piecharts

Ignore the last I found it.
Lawrence

The installation process is documented in the wiki. Recommend reading these two articles:
https://github.com/unifi-poller/unifi-poller/wiki/Installation
https://github.com/unifi-poller/unifi-poller/wiki/Grafana

David,
Those are the instructions that I have followed. This is how I have managed to get this far, that as well as a load of help and support from you .
Thanks again.
Lawrence

Great, those articles should cover most of these issues. Were you able to get DPI working? Anything else you need assistance with?


bump: containerd 1.7.15 for CVE and bug fixes

What type of PR is this?

What this PR does / why we need it:
bumps containerd to 1.7.15 for CVE and bug fixes
Which issue(s) this PR fixes:

Fixes #
Requirements:

[ ] uses conventional commit messages

[ ] includes documentation
[ ] adds unit tests
[ ] tested upgrade from previous version

Special notes for your reviewer:
Release note:
none

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 82.077%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2450

Relevant Lines:
2985

💛  - Coveralls


The view is not clickable if added inside a list using a custom adapter

Version 2 should be used until the bug is fixed

This should be fixed with ce49a498599aac4588ad0d1df752187f54c4989c


get_vec_pos

Not an issue per se, but I'm just wondering. Why is get_vec_pos written as a macro?

primarily to get something akin to inlining


Scholarship: Hide scholarship navigation

We're not likely to run a scholarship anytime soon. Removing it from
our website.
TEST=manual
Change-Id: I4ed4d6f9c9aa00b2f62122355a26f649d4f966c7

Code Review comments can be found at https://gerrithub.io/q/I4ed4d6f9c9aa00b2f62122355a26f649d4f966c7


[BotFramework-Streaming-Extensions] Missing to export interfaces

Versions
Package version botframework-streaming-extensions - v4.6.0-preview.76590
Nodejs v10.8.0
OS Windows 10
Describe the bug
Using the library botframework-streaming-extensions to implement the latest changes of WebSocket in botframework-solutions/botbuilder-skills (TypeScript), we need to use IStreamingTransportClient and IReceiveResponse in order to have the same consistency as C# version. However, those interfaces are not exposed.
Is there any reason to do not export them?
To Reproduce

Install botframework-streaming-extensions library using the registry of botbuilder-v4-js-daily in a project
Try to import IReceiveResponse, or IStreamingTransportClient
Check the following error Module /node_modules/botframework-streaming-extensions/lib"' has no exported member 'IStreamingTransportClient'. Did you mean 'IStreamingTransportServer'?

Expected behavior
Import the IStreamingTransportClient and IReceiveResponse interfaces in order to use it internally.
Screenshots
Error during the import of those interfaces

index file of botframeworks-streaming-extensions

Additional context
[bug]

@Batta32 we've merged the PR to add IStreamingTransportClient and IReceiveResponse to the exported classes.


feat: added hairStyle "beanie"

Added a beanie for those who don't identify with any of the hairstyles.
Suggestion/feedback regarding the design would be appreciated! :)

LGTM

Thanks : )


IOS - Tapping Download on “Share code” doesn’t always work

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

Version Number: 1.4.37-0
Reproducible in staging?: y
Reproducible in production?: n
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
Issue found when executing PR https://github.com/Expensify/App/pull/34580
Action Performed:

Launch the app and tap on the avatar on top right
Tap on Share code > Download

Expected Result:
An image is downloaded with the QR code
Actual Result:
Most of the times nothing happens. If the Download icon is tapped several times rarely it does work
Workaround:
Unknown
Platforms:

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

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

Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/93399543/401add3f-cda6-48fd-abd1-de19d54d0acc
View all open jobs on GitHub

We think that this bug might be related #vip-vsb
CC @quinthar

Commented with the solution in offending PR

@thienlnam do we need to CP this one to staging?

Ah I didn't realize this was linked to a blocker - yeah I can get this CPed sorry

Closing - this was a regression that was fixed by the original author / reviewers


Secrets not being replicated among pods

Describe the bug:
I have a vault cluster running in EKS using aws s3 as storage backend. Right now I have 3 pods running for the same statefulset using bank vaults helm chart. Somehow the secrets are not being replicated among the pods, specially the delete, when I delete using the UI and then I go inside the pods and do a vault read, apparently only one pod is throwing secret not found, the other two has it. Do you know if this is a bug or its something that I'm missing?
Environment details:

Kubernetes version v1.20
Cloud-provider/provisioner EKS
Install method (e.g. helm or static manifests): helm
/kind bug

Could you please send us the proper command/config/helm command your config that are you using? How is the s3 storage backend configured?

The config is:
vault:
  config:
    listener:
      tcp:
        tls_disable: true
    logLevel: trace
    storage:
      s3:
        bucket: ****
    telemetry:
      statsd_address: ""

I'm installing the helm chart through the helm provider with terraform, and we are using IRSA, that's why I'm not passing AWS credentials here. The unsealer mode aws-kms-s3 and is using the same bucket.

Just as an FYI the s3 backend alone is not capable of HA according to the docs: https://www.vaultproject.io/docs/configuration/storage/s3
You need to define an ha_storage backend as well for that.

Can I use this approach here?
https://github.com/banzaicloud/bank-vaults/blob/53abecdf5f21dcd83b23cc34d2708692eae6a99c/operator/deploy/cr-etcd-ha-aws.yaml#L47-L59
And btw, the operator's etcd can be used for this?

The operator can be used of course for this as well, however I don't suggest to use etcd, since the etcd-operator we relied on for this is unmaintained. You can simply just use DynamoDB ha_storage backend if you are already on AWS, I think that is the most straightforward solution.

Gotcha. Thanks for all the help, I'm closing this issue now.