zanshin cli output_iterable does not handle deeply nested JSON objects

Steps to reproduce the problem:

Install a fresh new zanshin CLI.
Configure the config file with a new API key.
Issue command and get the wrong answer:

$ zanshin summary alert a72f4225-43e9-4922-b6b7-8b0620bdb1c0  # <-- ACME's org ID
"total"
"scanTargets"
zanshin: 2 object(s) processed in 0:00:00.476967

I can list organizations and get a list of orgs. ACME is included in the returned JSON. That's how I got its UUID.
The same thing happens with other ogranizations. I tried BTC - ECTP too:
$ zanshin summary alert a7a9d850-edbf-48b0-84d6-cbe5ef5395e9
"total"
"scanTargets"
zanshin: 2 object(s) processed in 0:00:00.368208

The plot thickens. It seems the API is having issues with a parameter, but upon closer inspection, it might be with authorization.
I'm getting this error message: The organizationId field is required, but I've added it and the ID is valid:

Looking at the code, it seems to be a ValidateError, which triggers in the first line of this:

which is simply calling the validator class:

Could the caching of the schema be bad?

Update:
Part of the problem was my use of Postman. I was adding a comma after the organizationId. The API works.
Then, I checked that the SDK works too:
cli.get_scan_summaries("a72f4225-43e9-4922-b6b7-8b0620bdb1c0")
{'all': {'2021-12-09': {'infos': {'CLOSED': {'HIGH': 196, 'INFO': 165, 'MEDIUM': 103, 'LOW': 131, 'CRITICAL': 126}, 'OPEN': {'HIGH': 344, 'MEDIUM': 377, 'INFO': 350, 'LOW': 369, 'CRITICAL': 176}}, 'states': {'CLOSED': 141, 'OPEN': 149}, 'severities':
...

So, now the issue appears to be with the CLI. Focusing on that next.

The problem is that the CLI calls output_iterable that does not handle the returned summary dictionary very well. We need to re-write that function.

This bug now belongs in the CLI. Moving there.


events_test - fixing assertion for a runtime registration create

Adding patch  for issue #188, fixing assertion for a runtime registration create.
Assertion failing for webhook url assert for a runtime registration.

Fix  PR is merged and released in version aio-lib-java-1.1.8


createHashHistory and hash key

Hello and thank you for this amazing tool.
I'm trying to migrate my projects from a react-router v3 stack to a react-router v4 stack and so I'd like to use history 4.x. Note I also use react-router-redux for accessing history from my store but I don't think it's important here (Moreover last current version of react-router-redux is not adapted to history v4).
Firstly, I'd like to apologize if it is not the appropriate place to ask this question but I still do not know if I'm doing incorrectly things or is there actually a remaining bug.
I try to test createHashHistory for my development process in order to avoid configuring a development server. I know I could also put a listener on history and build my own redirections for my development needs. Trick that works!
But I came across a weird behavior. I have no more ?_k= in my url, reading CHANGES.md it seems legacy, so ok ! good ! No more ugly url. But If I browse my website, and hit browser back button it does not work anymore. What am I missing?
Should I create a specific configuration ?
I've put a listener on history to see what's going on when I browse my website, and it seems like only pathname and search fields are updated. hash, key  and state are not (which seems ok for the last one in a createHashHistory config, but why is it present then?).
Thank you for your time :)

Hello and thank you for this amazing tool.

You're very welcome :)
The back/forward buttons still work when using hash history, but you're right, you won't have hash, key, or state.
We can only provide key and state using the state argument to pushState and replaceState, which are part of the HTML5 history API. In past versions of history we tried to mimic this behavior with hash history, but we had to use sessionStorage and there were just too many issues with it for us to recommend it generally.


lxd: don't set device cgroup values for unpriv containers

Fixes: #8608
Fixes: https://discuss.linuxcontainers.org/t/container-fails-to-start-properly-when-a-usb-device-is-attached-to-the-container-before-start-up
Signed-off-by: Christian Brauner<EMAIL_ADDRESS>

@brauner in the thread https://discuss.linuxcontainers.org/t/container-fails-to-start-properly-when-a-usb-device-is-attached-to-the-container-before-start-up, what gave you the hint that the LXD process was running as unpriv (as opposed to just the container), and why do you think this only occurred on restart of the container? Thanks

@brauner in the thread https://discuss.linuxcontainers.org/t/container-fails-to-start-properly-when-a-usb-device-is-attached-to-the-container-before-start-up, what gave you the hint that the LXD process was running as unpriv (as opposed to just the container), and why do you think this only occurred on restart of the container? Thanks

The check doesn't just check whether LXD is running inside a user namespace it also checks whether the container is running unprivileged which is what we care about in this scenario. There are multiple places where device cgroup rules get set:

initLXC()
startCommon()
deviceAddCgroupRules()

The 1. and 3. place are already placed under logic that makes sure the container is privileged and that LXD is not running inside of a user namespace. Only the 2. place doesn't have the same logic.
If you hotplug a device into the container you will hit 3. so no device cgroup rule will be written to the container's config. If you restart that container you will hit 2. which doesn't have the logic 1. and 3. are under and thus the cgroup device rule gets written out to the container's config causing the failure to appear. You're essentially accidentally generating an allowlist.

Got it thanks @brauner


JS: add some convenience getters to DataFlow::Node

While writing some JS cookbook queries it struck me how a few simple changes could make the DataFlow API nicer to use for others. The full public API is obviously not something others can be expected to learn, so it would be nice if we could just focus on making the DataFlow API the one thing you need to learn for security queries.
Writing asExpr().getStringValue() may not seem like a big deal, but it prevents code completion from suggesting getStringValue, and I think it makes QL look less attractive because it's not clear at a glance how you could possibly know when to use asExpr() and when not.
Of course, we already have mayHaveStringValue but it isn't always a replacement for getStringValue (e.g. when using the value as a flow source), and getters are often so much more convenient. I'm personally fine with having both.
Also adds getIntValue (same story) and getAFunctionValue which has come up quite a bit in custom query work, so I think it's worth exposing this.

Sorry, I forgot the evaluation was stilled running for this. It should be done soon. I'll revert if it doesn't come out positive.

The evaluation looks ok after re-running on test262
Project  da07f338883@c13336266  da07f338883@3290c174c
test262  3784                   3805                    1.005


DoesClaimExist - Boolean?

Should this not be classified as a Boolean ClaimsTransformation ?

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

ID: 9161f948-7c8c-0a57-19ad-1ae731fd65c8
Version Independent ID: 77b6ea7f-e2fe-a7b2-60fa-80b198413ee8
Content: General claims transformation examples for the Identity Experience Framework Schema of Azure Active Directory B2C
Content Source: articles/active-directory-b2c/general-transformations.md
Service: active-directory
GitHub Login: @davidmu1
Microsoft Alias: davidmu

@WhippsP Thanks for your feedback! We will investigate and update soon on it.

Sot it is based on the input not the output. Makes sense. Thanks


Simple rendering

Reverting back to canvas rendering. Addresses some minor rendering issues such as limit of 4 sprites per tile. Also makes sprig engine more easily usable as a library.

I would love help checking every game before we merge this in. @Omay238 @LucasHT22 @Neesh774 @SamDev-7

I'll check now

all games are playable, in yarn test only Snake_4_2  returns error in properties x  and y, I've tried everything but I couldn't solve it

@LucasHT22 Can you put a screenshot in the github thread? I have been unable to access Slack recently. I can try to debug it.

ok!

I think I fixed it. I changed every time it looks for something.x to check that it exists. I also changed == -> === and != -> !== to just be correct JS syntax.

Very good @Omay238 ! Thanks

It's because there are random inputs so the test is not exhaustive or repeatable. But the test also looks at the map not the render. So really we have to manually check the games.


Does Loki have to be installed on the same host to Promtail?

Does Loki have to be installed on the same host to Promtail?
I would like ship all container logs to Loki but if I have 20 hosts to run Loki next to the Promtail it seems pointless. After all, the logs are shipped to one loki server. Did I get something wrong?

No. You can configure the Loki host in the promtail configuration file, so you can have all your protmail instances pointing to the same Loki server.
Check: https://grafana.com/docs/loki/latest/clients/promtail/configuration/#clients
For more details, I recommend checking the documentation. The example on this repository is focused on having Loki run on your local development machine. It´s not a "production" like envrionment.


no hires source map where the appendLeft inserted

We use this library to transform svelte code to power editor features in language-tools. And use the source map to map character to character back to the original code.
When using appendLeft and prependLeft with hires: true the position where the appendLeft inserted is not included in the mapping. So it is mapped to the previous character. In our use case, it causes the error or warning to be highlighted one character less than it should be, for example like this:

Here is a test case for the situation
it('should correctly map content before append', () => {
    const s = new MagicString('function Foo () {}');

    s.appendLeft(8, '*'); // test will pass if this line is removed

    const map = s.generateMap({
        hires: true,
        file: 'output.js',
        source: 'input.js',
        includeContent: true
    });

    const smc = new SourceMapConsumer(map);

    const loc = smc.originalPositionFor({ line: 1, column: 8 });
    assert.strictEqual(loc.line, 1);
    assert.strictEqual(loc.column, 8); // failed here 7 !== 8
});

I think that's actually correct behavior. * is the new 8th character and since it belongs to the previous character (at least that's how I interpreft ...Left) the correct position is 7.
What feels wrong to me though is that the same happens when you do ...Right, which to my understanding means "it belongs to the current character", which is the 8th character in the original, but originalPositionFor also returns 7 in this case.

I think that's actually correct behavior. * is the new 8th character and since it belongs to the previous character (at least that's how I interpreft ...Left) the correct position is 7.
What feels wrong to me though is that the same happens when you do ...Right, which to my understanding means "it belongs to the current character", which is the 8th character in the original, but originalPositionFor also returns 7 in this case.

Ah, maybe we are just mapping the wrong character. That is we should map the character before the end of the range and add the offset back to the mapped position.

Ah, maybe we are just mapping the wrong character. That is we should map the character before the end of the range and add the offset back to the mapped position.

I think you have fallen into the same trap I have before, that is, having a wrong understand of where append/prepend left/right is placed. I thought in the beginning that it means you would have character X and could add something before or afterwards. But what MagicString actually does it adding EVERYTHING before X. So this
str.prependLeft('Pl', 0);
str.appendLeft('Al', 0);
str.prependRight('Pr', 0);
str.appendRight('Ar', 0);

will ALWAYS (no matter the order in this case because each method is used once) result in PlAlPrArX.

I think you have fallen into the same trap I have before, that is, having a wrong understand of where append/prepend left/right is placed. I thought in the beginning that it means you would have character X and could add something before or afterwards. But what MagicString actually does it adding EVERYTHING before X. So this
str.prependLeft('Pl', 0);
str.appendLeft('Al', 0);
str.prependRight('Pr', 0);
str.appendRight('Ar', 0);

will ALWAYS (no matter the order in this case because each method is used once) result in PlAlPrArX.

Yeah, it' kind of confusing. It does make more sense after reading the source and understanding the chunk concept though. I think what I confused about in this situation is the column index of source mapping and where the edit applied. I'll close this because as you mentioned it is the correct behaviour and the Right one doesn't seem to be causing the problem I mentioned. Also, in my test, the mapping to the previous character does help in some cases.

Yeah, it' kind of confusing. It does make more sense after reading the source and understanding the chunk concept though. I think what I confused about in this situation is the column index of source mapping and where the edit applied. I'll close this because as you mentioned it is the correct behaviour and the Right one doesn't seem to be causing the problem I mentioned. Also, in my test, the mapping to the previous character does help in some cases.


@all-contributors please add @NIKU-SINGH for contributions

@all-contributors please add @NIKU-SINGH  for

@all-contributors please add @NIKU-SINGH  for Code


[Feature Request] Port to Obsidian

https://obsidian.md/

https://github.com/yeboster/autocomplete-obsidian

Apologies, we will not be able to support this for now.
If you are interested, please consider forking it and adding support for Indic transliterations.
Feel free to let us know if you require any help from our side, including how to use our public API.
Leaving this issue open in-case someone else is also interested in building this.
Thanks!


chore: updated opc-styles for font dependent components

Fixes
Explain the feature/fix

Updated opc-styles for all font dependency packages

Does this PR introduce a breaking change
No
Screenshots

View Screenshots

Ready-for-merge Checklist

[x] Expected files: all files in this pull request are related to one feature request or issue (no stragglers)?
[x] Does the change have appropriate unit tests?
[x] Did tests pass?
[x] Did you update or add any necessary documentation (README.md, WHY.md, etc.)?
[x] My changes generate no new warnings
[x] I have performed a self-review of my own code
[x] I have documented my code, particularly in areas like todo, complex logic, quick fix, temporary patch, etc.

Browsers you have tested in

[ ] Latest two versions of Mozilla Firefox and Google Chrome supported by Red Hat Enterprise Linux distribution
[x] Google Chrome [Latest 2 versions]
[x] Mozilla Firefox [Latest 2 versions]
[ ] Microsoft Edge [Latest 2 versions]
[ ] Apple Safari [Latest 2 versions]
[ ] Microsoft Internet Explorer 11

I have bumped only opc-nav because rest of them have already been bumped in previous PR. This change should be released with that version which is yet to release


No module named yaml

Hello,
I wanted to use ESP32 BLE Server module and followed the instruction in esp32-at/tools/readme.md.
But... got the error message as below.

Charlie Choi@Charlie MINGW32 /c/esp32/projects/esp32-at/tools
$ python BLEService.py -t GattServiceExample.bin GattServiceExample.csv
Traceback (most recent call last):
File "BLEService.py", line 6, in
import yaml
ImportError: No module named yaml

PyYAML and xlrd are aleady installed as below...

Charlie Choi@Charlie MINGW32 /c/esp32/projects/esp32-at/tools
$ pip install pyyaml xlrd
Requirement already satisfied: pyyaml in c:/msys32/mingw32/lib/python2.7/site-packages
Requirement already satisfied: xlrd in c:/msys32/mingw32/lib/python2.7/site-packages
Charlie Choi@Charlie MINGW32 /c/esp32/projects/esp32-at/tools
$ pip freeze
pyserial==3.4
PyYAML==3.12
xlrd==1.1.0**

Could somebody help me to use BLE server moudule via at-command?

I found the problem doesn't happen when I excute the python in "msys2.exe".
It happens in "mingw32.exe".
What's the difference?

@Chunghyon
Hi,sorry for the late reply.
msys2.exe is the upgraded version of mingw32.exe, to be compatible with more attributes.
In fact, it also can install and work well on "mingw32.exe" in a right install way.

for linux:
$ sudo apt-get install python-yaml
for windows:[maybe a little complex]
following the readme

install python 2.7
install pip

maybe you should set some pip attributes by the guidence

install the following python packages with pip: pip install pyyaml xlrd

if failed, try:  // maybe different system configuration would result in the install fail.

$ easy_install rosinstall
$ easy_install python-yaml
$ easy_install xlrd

in my  windows 7 [64 bit] workspace, it works well under the mingw32.exe when i run make command.

I just downloaded the current Windows pre-built toolchain, pulled the current image of esp32-at with git, tried to compile.
Running 'make', I receive the following warning:
GENCONFIG WARNING: Toolchain version is not supported: 1.22.0-75-gbaf03c2 Expected to see version: 1.22.0-73-ge28a011
and the following error:
generating AT customized partition bins to /home/Admin/esp32-at/build/customized_partitions generating ble_data.bin: python /home/Admin/esp32-at/tools/BLEService.py -t /home/Admin/esp32-at/build/customized_partitions/ble_data.bin /home/Admin/esp32-at/components/customized_partitions/raw_data/ble_data/example.csv Traceback (most recent call last):   File "K:/msys32/home/Admin/esp32-at/tools/BLEService.py", line 6, in <module>     import yaml ImportError: No module named yaml make: *** [/home/Admin/esp32-at/components/customized_partitions/Makefile.projbuild:43: /home/Admin/esp32-at/build/at_customize.bin] Error 1
If 'yaml' is required by Python to complete the build, I'm surprised it's not part of the pre-built toolchain (Python 2.7 IS already installed as part of this toolchain).
From the warning shown above, it appears the pre-built toolchain is newer than the current esp32-at code expects. Possibly this is related to the eventual failure
???
Or have I missed some step?

@mws-rmain
hi,
tbh, python 2.7 would not pre-install yaml.
you can lookup it by visit pyyaml.org

Starting from the 3.08 release, PyYAML and LibYAML bindings provide a complete support for Python 3
you had better install yaml module firstly according your python and pc environment.

Best regards

I guess the point I would try to make from my experience is:
Either YAML is required by many of the ESP32 projects, or it is unique to the ESP32-AT project.

If it is required by all/many/some of the ESP32 projects, then it's not unreasonable to expect that it should be included in the pre-built toolchain that is supposedly configured for ESP32 development.
if it is required ONLY for ESP32-AT, then I'd suggest it would be appropriate to mention this 'unique' additional requirement in the build instructions, such as on the home page of the project. This information would be equally useful to developers who choose a pre-built toolchain, and developers who assemble their toolchain from scratch.

Since the pre-built toolchain is now more advanced than the ESP32-AT expects and causes the warning I mentioned about 'unsupported toolchain', I expect I may well have to go ahead and assemble a toolchain from scratch.

thanks for your suggestion.
Best regards


Add download data for May 2018

Up over 15% from April, with 642,041 downloads from 21,140 unique IPs, and 2.10 down to 2.86% of circe-core downloads.

Codecov Report

Merging #905 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #905   +/-   ##
=======================================
  Coverage   85.64%   85.64%
=======================================
  Files          76       76
  Lines        2459     2459
  Branches      157      157
=======================================
  Hits         2106     2106
  Misses        353      353

Impacted Files
Coverage Δ

...rc/main/scala/io/circe/numbers/BiggerDecimal.scala
91.25% <0%> (-0.63%)
:arrow_down:

...re/shared/src/main/scala/io/circe/KeyDecoder.scala
97.29% <0%> (+2.7%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 58107ee...a30b440. Read the comment docs.


Builtin functions have invalid source code links

What happened
Clicking a "browse source code" link on a builtin function's documentation opens an invalid link in the nixpkgs repo.
Steps to Reproduce
Steps to reproduce the behavior:

Go to a builtin function's documentation.
Click on "Browse source code".
Note that the opened page does not exist.

Expected behavior
Either

No link should be shown in the documentation
The link should open the C++ code implementing the builtin
The link should open the nix code where the builtin is stubbed & documented

Screenshots

Thx for the report i'll fix the bug. I cannot link to the source location currently for builtins.

Resolved. See https://noogle.dev/q?term=builtins


Provide Chinese Move Book

Hello, developers who contribute to Move language. I am an open source enthusiast, I have learned a lot of knowledge from the open source community, so that I have grown up well. At the same time, I am also a novice to explore Web3.
In the past three months, I have learned what is a blockchain and what is Web3. I have been looking forward to the world of Web3.
Move is the first smart contract programming language I contacted, and I already like this language.
I want to introduce this language to more Chinese friends who are yearning for Web3, so I set up a Move Chinese community (MoveCC) to preach to Chinese developers.
I am planning to translate the Move Book, I have done a small step now.

I also want to propose this, and I suggest maintaining a multi-language version at https://github.com/move-language/move/tree/main/language/documentation/book.
@sblackshear @wrwg

I am very supportive of this!
Perhaps what we can do is add a book/translations directory and add the Chinese version in a subdirectory there? Will happily approve a PR for this, and I expect we'll see other translations soon enough (e.g., there are a lot of Turkish Move developers these days...)
But of course, also happy to keep translation in a separate repo and maintain a markdown list that points to translations in external repos. Let me know what you prefer @geometryolife--you are the one that's done the hard work here!

This is another Chinese version of the Move book: Move Book Chinese version by MoveDAO, we started from  July 25,.
@sblackshear @jolestar

You have a high degree of completion. If you can migrate your results to book/translations/move-book-zh, we can improve move-book-zh faster. During the migration process, the English content needs to be retained first. In the machine translation process, some charts are not translated, only the text content is translated. @lshoo

good idea @geometryolife

hi everyone, we we can discuss the mdbook-i18n-solution.  #512
Waiting for your opinion ~~


Allow sorting collection items by title

Fixes
User request: https://odysee-workspace.slack.com/archives/C02GSHBKYEM/p1706110785279389

Nice!


Sascala toc edit

I've made a first draft of substantial organization changes to the Marathon docs site. I'd love your feedback:

Do you think there should be any other top-level categories?
Are the topics I've put under "Deploying Applications" and "Management" correctly placed?
@aquamatthias, @gkleiman, @kolloch: I'd worked with @meichstedt on this, so I assigned the PR to him, but I'd very interested in all of your feedback.

The relevant file is in docs/_layouts/docs.html

Btw: your branch is 234 commits behind master. Please rebase! There have been changes to metrics.md in the meantime that conflict with your changes to that file; unfortunately you'll have to resolve those conflicts.
Seems like you used an old existing branch to add your changes. In general, it's easer to create a new branch based on master and commit to that one.

Something strange happened to metrics.md. Which editor are you using?

In general: I think structuring the pages like that is a step in the right direction. As described above, I'd like more specific terms like Using Marathon vs. Administrating Marathon, and you need to clearly separate between these 2 sections. I'll help you organizing them.

There are 8 commits in this PR – which ones do you actually want to merge?

@meichstedt Thanks for your comments. I'll update the file with your suggestions. AFAICT I rebased and negotiated the merge conflicts -- was I successful?

@sascala there are a couple of commits, that do not belong to this PR.
After rebasing can we merge?

Closing this in favor of #3746


Update README.md

Add license information to README.md.
Move Travis CI and AppVeyor badges to an HTML table.
Add "API Docs", "Crates.io" and "License" badges indicating the status of and/or
providing links to their respective services.

This PR updates the badges in the README to provide them some context, moves them into a table for better formatting (instead of just having them float), and adds some extra badges for convenience (e.g. I particularly like the API Docs badge because it catches the eye quickly).
Additionally, I added a small license section, for convenience.
I'll be modifying this PR per your suggestions and also adding new commits as I work on implementing the GitBook documentation.

OK I think this is ready for review. There's still some stuff I'd like to move to the GitBook (and some duplicate info between here and there), but I think this is a good start for now.

Thanks!  It looks good and is closer to how I want our README to look than what we have now.
Anything in particular you'd like feedback on?  If not, looks great, we should merge this.

For this PR, I think the format/content is good. What I really wanted feedback on was what else could be moved to the GitBook from the README. I was thinking of something similar to what serde has.

Also, I'm going to merge this, and more feedback on future changes can be done on this issue: https://github.com/rusoto/rusoto/issues/421.


Fix #1185

Closes #1185. See also #628 - something similar is happening here (type instability in profile view but everything is fine with @code_warntype).

@sloede (or someone else with a Mac): Could you please check the macOS error?

Do you know why it takes 16 minutes in the job to reach the test package initialization?

It needs to precompile OrdinaryDiffEq.jl :sweat_smile: - and install and precompile Trixi.jl (before)

@jlchan @andrewwinters5000 Could anyone of you test this?  I still can't install MPI on my Macbook until Julia 1.8 😭

Building Trixi on this branch now. Do you want me to just run the MPI and threaded tests locally?

Yeah, I think running either set would be great. If it works, we can merge this from my point of view and need to wait until the HDF5 issue linked above is fixed

Threaded tests run fine on my laptop. Running MPI now.

Checked out this branch, and both MPI and threaded tests run on my 2020 Macbook Pro using Julia 1.7.3.

Cool, thanks! I will merge this unless someone vetos (@sloede?)

No veto. Thanks for the support!


Update metadata for Sablier V1 and V2

Revision checks

[x] Used smart contracts were audited.
[x] Your Safe App include a manifest.json file at the root with the required data.
[x] The app can be loaded as a custom Safe App in the Apps section of https://app.safe.global.
[x] The app auto-connects to the Safe.
[x] You are able to trigger and execute one transaction with a Safe.
[x] RPC requests are optimized (not triggering many requests in a very short time period).

Name/Description
Sablier
Type

Update

Audit document
https://github.com/sablier-labs/audits
Code for review
https://github.com/sablier-labs/v2-core
IPFS hash/App URL
https://app.sablier.com
Requests

Update the URL for "Sablier V1" to https://sablier.com
Update the GitHub URL to https://github.com/sablier-labs
Make Sablier V2 available on Base? (addresses here)
Change the description for "Sablier V1" to "Streams tokens with Sablier V1, the first release of the protocol"
Change the description for "Sablier V2" to "Stream tokens with Sablier V2, the latest release of the protocol. You can use Sablier for vesting campaigns, payroll, airdrops, and more."

Hello, could anyone please help us here? @dasanra @mmv08 @rmeissner

Hello, could anyone please help us here? @dasanra @mmv08 @rmeissner

Hey @PaulRBerg !
Should be updated now. Thank you!


Update image ghcr.io/tarampampam/error-pages to v2.27.0

This PR contains the following updates:

Package
Update
Change

ghcr.io/tarampampam/error-pages
minor
2.26.0 -> 2.27.0

Release Notes

tarampampam/error-pages (ghcr.io/tarampampam/error-pages)
v2.27.0
Compare Source
Changed

Go updated from 1.21 up to 1.22
Go dependencies updated

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠ Warning: custom changes will be lost.


After creating shapefile from db the geometry coordinate becomes reverse order.

This issue was imported from CodePlex
monowarul wrote 2016-03-15 at 07:11
I have a database table named 'hitbgt'. There is a column name 'the_geom' contains the geometry value. Get the data from db table as datatable and create a shapefile based on it. The codes are given below..........
DataTable dt = new DataTable();
        DbHandeler dbHandelerObj = new DbHandeler();
        string query = "Select st_asBinary(the_geom) as geom, * from hitbgt";

        try
        {
            dt = dbHandelerObj.GetDataTable(query);

            IFeature feature = new Feature();
            FeatureSet fs = new FeatureSet(FeatureType.Polygon);

            foreach (DataColumn dc in dt.Columns)
            {
                if (dc.ColumnName != "the_geom" && dc.ColumnName != "geom")
                {
                    fs.DataTable.Columns.Add(dc.ColumnName, dc.DataType);
                }
            }

            foreach (DataRow dr in dt.Rows)
            {

                Byte[] data = (Byte[])dr["geom"];

                WkbReader wkbReader = new WkbReader();
                IGeometry geometry = wkbReader.Read(data);

                feature = fs.AddFeature(geometry);

                feature.DataRow.BeginEdit();
                foreach (DataColumn dc in fs.DataTable.Columns)
                {
                    feature.DataRow[dc.ColumnName] = dr[dc.ColumnName];
                }
                feature.DataRow.EndEdit();
            }

            fs.SaveAs("F:\\Test_value\\hitbgt_test.shp", true);
            fs.Close();

            MessageBox.Show("Done");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

Everything work fine. But when I retrieve the geom data from shapefile, the polygon coordinate values show reverse clockwise as in database.
        IList shapeCorList = null;
        IFeatureSet fb = FeatureSet.Open("F:\\Test_value\\hitbgt_test.shp");
        foreach (IFeature ff in fb.Features)
        {
            if (ff.DataRow["cadid"].ToString() == "12345")
            {
                shapeGeometry = ff.BasicGeometry as IGeometry;
                shapeCorList = shapeGeometry.Coordinates;
            }
        }
Example:
Db geometry:
"POLYGON((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30))"
Shape Geometry:
"MULTIPOLYGON(((35 10,10 20,15 40,45 45,35 10),(20 30,30 20,35 35,20 30)))"
Anyone please help.........
jany_ wrote 2016-03-15 at 12:33
I drew the coordinates and came up with a quadrangle with a hole in form of a triangle.
Based on this I can say that the order of the multipolygon's coordinates looks alright.
The shapefiles definition says that polygon shells (the quadrangle) are orientated clockwise and holes (the tirangle) are orientated counterclockwise.
And your multipolygon conforms to that definition.
It is possible that the definition your database uses to store polygons differs from the definition that is used to store polygons in shapefiles. That could explain why the coordinates of your databases polygon are in reverse order.
The problem that I see is that you got a multipolygon instead of a polygon with a hole.
So could you please post the content of the Byte[] data object you gave to wkbReader for me to have a look why wkbReader creates a MultiPolygon from this.

@jany-tenaj there is no response on your question much time. Let's close issue?

Yes lets close it.


Wrapper command

This is a rarely-used feature of MultiMC (In Settings->Java) which lets you wrap java with optirun so it'll run on my NVidia graphics on an optimus laptop using Bumblebee.
It's mainly for Linux users with hybrid graphics, but I don't think it'd be too bad to implement.

Can confirm, was not too bad to implement.


ppc64le CI build always fails

Currently we have a build triggered here https://powerci.osuosl.org/job/build-envoy-static-master/
it always fails with:
Extracting Bazel installation...
Starting local Bazel server and connecting to it...
INFO: Reading rc options for 'build' from /home/alfred/jenkins/workspace/build-envoy-static-master/.bazelrc:
  'build' options: --color=yes --workspace_status_command=bash bazel/get_workspace_status --incompatible_strict_action_env --host_force_python=PY3 --java_runtime_version=remotejdk_11 --tool_java_runtime_version=remotejdk_11 --platform_mappings=bazel/platform_mappings --copt=-DABSL_MIN_LOG_LEVEL=4 --action_env=CC --host_action_env=CC --action_env=CXX --host_action_env=CXX --action_env=LLVM_CONFIG --host_action_env=LLVM_CONFIG --action_env=PATH --host_action_env=PATH --enable_platform_specific_config --test_summary=terse --incompatible_config_setting_private_default_visibility --incompatible_enforce_config_setting_visibility --define absl=1 --@com_googlesource_googleurl//build_config:system_icu=0 --test_env=HEAPCHECK=normal --test_env=PPROF_PATH
ERROR: --host_action_env=CC :: Unrecognized option: --host_action_env=CC
Build step 'Execute shell' marked build as failure
Stopping Docker container after build completion
Finished: FAILURE

im guessing a bazel version or similar, but not sure
apart from wasted cycles it means we always have a failing status badge - we should either fix or remove the badge if its not expected to pass and noone intends to fix

cc @cmluciano @clnperez

as noone seems to be following up on this i will pr to remove the badge - and potentially disable the ci

Hi @phlax I no longer at the company where I supported the ppc64le builds. I will try to ping the individuals that I handed this work over to but given that it's been failing for a while, it's probably safe to remove.

thanks for update @cmluciano i will hold off for a little while in that case and i would be happy to assist if i can getting it working again - but yep, it probs makes sense to remove until it can be fixed

thank you for this! my mailbox has become very overloaded but @cmluciano found me and let me know. i'd definitely like to get this fixed so that these builds remain. i had submitted some bazel fixes years ago to get it working to begin with, so hopefully not too big of a deal to fix.

if my reading is correct (may not be!) its using a fixed bazel version that is now not working
if that is the case my recommendation would be to switch to using bazelisk with bazel aliased to it so it respects the repo's bazel version

if my reading is correct (may not be!) its using a fixed bazel version that is now not working

your reading of what I said? :D or something else?

the fail logs

@phlax -- retooling the container this build uses, and will see if i can get bazelisk into this workflow. but first would like to double-check the Java & C++ config. we're using clang, and i do see mention of a setup_clang.sh script in the envoy doc. However, I can't find that script. Is there any other doc wrt the java version required, how to configure clang, etc?

so for clang the reference (atm at least) is the build container which serves as an environment to bazel in envoy's CI
probably most relevant bit is here
https://github.com/envoyproxy/envoy-build-tools/blob/b0452fc4dfb1b02357bd4ce2d55a1056b53e2ffd/build_container/build_container_ubuntu.sh#L90-L107

you shouldnt need to worry about java versions or most other things, but if you see what is installed in that container that will cover anything you will need

setup_clang.sh is in the ci/ dir

i updated the bazel version to see if that got rid of the error that was being seen, but it looks like maybe now i'll need to go look at the rules_python repo. https://powerci.osuosl.org/job/build-envoy-static-master/8292/console
it doesn't seem to support ppc64le at the moment: ERROR: Error computing the main repository mapping: no such package '@python3_10//': No platform declared for host OS linux on arch ppc64le
but maybe there's a way to use a native python instead

they come from here https://github.com/indygreg/python-build-standalone/releases/tag/20230116
it doesnt look very hopeful

kinda related https://github.com/bazelbuild/rules_python/issues/877
i think you can work around this (theoretically) by using a custom py_runtime but you may need the patch mentioned in that issue

Ah, thanks for that.
Maaaaybe not hopeless! I submitted https://github.com/indygreg/python-build-standalone/pull/165 and I'll try to use that here. They do have s390x support, and they cross-compile everything. Hoping it's simple and that I won't need to chase down too many of these projects. I think I'll have to add a new triple in the rules_python repo at the very least.

manually built Python for ppc64le and modified the rules_python package. Currently, it can be built after manual patching. Next, let's work together to push for acceptance of the patch by indygreg/python-build-standalone and bazel/rules_python.
diff --git a/bazel/repositories_extra.bzl b/bazel/repositories_extra.bzl
index 885b41dec6..e045619946 100644
--- a/bazel/repositories_extra.bzl
+++ b/bazel/repositories_extra.bzl
@@ -5,7 +5,7 @@ load("//bazel/external/cargo:crates.bzl", "raze_fetch_remote_crates")
 load("@aspect_bazel_lib//lib:repositories.bzl", "aspect_bazel_lib_dependencies")

 # Python version for `rules_python`
-PYTHON_VERSION = "3.10.2"
+PYTHON_VERSION = "3.10.9"

 # Envoy deps that rely on a first stage of dependency loading in envoy_dependencies().
 def envoy_dependencies_extra(python_version = PYTHON_VERSION):
@@ -17,6 +17,7 @@ def envoy_dependencies_extra(python_version = PYTHON_VERSION):
     python_register_toolchains(
         name = "python%s" % ("_".join(python_version.split(".")[:-1])),
         python_version = python_version,
+        ignore_root_user_error = True,
     )

     aspect_bazel_lib_dependencies()
diff --git a/bazel/repository_locations.bzl b/bazel/repository_locations.bzl
index 0992ec2559..97a00fe086 100644
--- a/bazel/repository_locations.bzl
+++ b/bazel/repository_locations.bzl
@@ -794,11 +794,11 @@ REPOSITORY_LOCATIONS_SPEC = dict(
         project_name = "Python rules for Bazel",
         project_desc = "Bazel rules for the Python language",
         project_url = "https://github.com/bazelbuild/rules_python",
-        version = "0.9.0",
-        sha256 = "5fa3c738d33acca3b97622a13a741129f67ef43f5fdfcec63b29374cc0574c29",
-        release_date = "2022-06-12",
+        version = "0.19.0-ppc64le-dirty-fix",
+        sha256 = "fbe317ce2b2d35ef0db738f2ad246453d56006c3df17c7728bda9fdd2852c20c",
+        release_date = "2023-03-08",
         strip_prefix = "rules_python-{version}",
-        urls = ["https://github.com/bazelbuild/rules_python/archive/{version}.tar.gz"],
+        urls = ["https://github.com/ninehills/rules_python/archive/{version}.tar.gz"],
         use_category = ["build"],
     ),
     rules_pkg = dict(

Still waiting to hear back on the python PR

Hi , I am facing the same error while trying to build envoy for ppc64.  Would some one please let me know if there is any work around/fix for the same and how do I get a working envoy binary for ppc64? I have actually followed the documentation mentioned at https://github.com/envoyproxy/envoy/blob/main/bazel/README.md#quick-start-bazel-build-for-developers but stuck with the error.
ERROR: An error occurred during the fetch of repository 'python3_10':
   Traceback (most recent call last):
        File "/root/.cache/bazel/_bazel_root/9cb33e04803417c878f91275e3e1bfb1/external/rules_python/python/private/toolchains_repo.bzl", line 88, column 38, in _toolchain_aliases_impl
                host_platform = get_host_platform(os_name, arch)
        File "/root/.cache/bazel/_bazel_root/9cb33e04803417c878f91275e3e1bfb1/external/rules_python/python/private/toolchains_repo.bzl", line 249, column 13, in get_host_platform
                fail("No platform declared for host OS {} on arch {}".format(os_name, arch))
Error in fail: No platform declared for host OS linux on arch ppc64le
ERROR: /root/sobha/envoy-proxy/WORKSPACE:17:25: fetching toolchain_aliases rule //external:python3_10: Traceback (most recent call last):
        File "/root/.cache/bazel/_bazel_root/9cb33e04803417c878f91275e3e1bfb1/external/rules_python/python/private/toolchains_repo.bzl", line 88, column 38, in _toolchain_aliases_impl
                host_platform = get_host_platform(os_name, arch)
        File "/root/.cache/bazel/_bazel_root/9cb33e04803417c878f91275e3e1bfb1/external/rules_python/python/private/toolchains_repo.bzl", line 249, column 13, in get_host_platform
                fail("No platform declared for host OS {} on arch {}".format(os_name, arch))
Error in fail: No platform declared for host OS linux on arch ppc64le
ERROR: Error computing the main repository mapping: no such package '@python3_10//': No platform declared for host OS linux on arch ppc64le

@scheruku-in The issue is that there just isn't a python build for power yet -- so you have to build your own. You can build the python requirements using the PR linked above, and then you'll need to do what @ninehills posted in the comment above to pull in what you build. When the PR is merged envoy can pick up the power builds like it does for all the other architectures.

There was a new build released and I started putting together a PR to rules_python today, but, it looks like there's a problem with that release so I'll have to wait for a new one. Thanks for everyone's patience while we get this back!

making more progress. the version for rules_python now has the one that picks up the power PR. but of course there are a couple of other things that also need to change. i did update the CI job, so you can see the newest failure. we do have a patch that fixes the build failure and will submit asap

i also tested the patch via the jenkins ci we have attached ot this project and it passes
https://powerci.osuosl.org/job/build-envoy-static-master/9594/console
@sumitd2 -- have you submitted that patch yet?

Also now there's a new cpu platform type so we'll need to change from ppc everywhere to ppc64le. When I initially removed the luajit build 5 years ago, I used pcc everywhere. IIRC no one was doing much with big endian power and open source.

cc @clnperez the webhook for this ci stopped working yesterday, wondering if we should remove it

@phlax sorry missed your comment. the CI was paused a while ago since the builds aren't fixed yet. We've made (I really hope) some good progress in our private endeavors there, but if you want to remove it for now, that's fine. Can you just link to that PR here?


Add support for Remote and AppDomains

Secondary AppDomains not supported in .NET Standard or .NET Core
https://stackoverflow.com/questions/27266907/no-appdomains-in-net-core-why
TODO

investigate creating api for code-isolation and AssemblyLoadContext


Mediapipe have low FPS

Hello everyone:
We use mediapipe build a project like video
https://drive.google.com/file/d/1rRrlYNVcPWF70FS-Ux69YmX5hqBWyVxt/view?usp=sharing
However the FPS is very low.
We want to know it's the mediapipe's problem or we can fix it by other solution.
If someone know how to slove it, please tell me thanks.

@CYChuang You can add tracking to it. The overlay is not so smooth.
https://google.github.io/mediapipe/solutions/instant_motion_tracking.html

@CYChuang The performance depends on the underlying hardware. Try resizing the video to 720p and check.

Hi @kXborg ,https://github.com/google/mediapipe/issues/1160#issuecomment-872706753 gives you understanding on increasing of FPS

Hi @sureshdagooglecom , I meant that only.

@kXborg ,
Did you get the required information?

@sureshdagooglecom, hey it's not my issue. @CYChuang created it. I hope he got it.


[$1000] member count not updated for #announce

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

Actions Performed:

create a workspace by userA
add userB as member
for userB, go to #announce > details > members
for userA, add a new member to the workspace
new member will be shown in the members list for userB , go back to details page and check the members count

Expected Result:
member count should be updated
Actual Result:
member count not updated
Workaround:
unknown
Platforms:

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

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

Version Number: 1.2.53-0
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos:
https://user-images.githubusercontent.com/43996225/212194416-a695372c-3f40-45d7-8933-0204d49b578b.mov
https://user-images.githubusercontent.com/43996225/212194438-05051f6b-3b5f-4522-bfda-dcdc5daa13c5.mp4
Expensify/Expensify Issue URL:
Issue reported by: @gadhiyamanan
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1673513127757489
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~010681c413bd1587cd
Upwork Job ID:<PHONE_NUMBER>262090240
Last Price Increase: 2023-01-17

I'm OOO starting tonight until Tuesday and I won't get a chance to look at it in a timely manner. Reassigning to ensure the client isn't waiting on my return.

My first few of these, so taking the template from StackOverflowTeams: https://stackoverflowteams.com/c/expensify/questions/14418

[x] The "bug" is actually a bug.
[x] The bug is not a duplicate report of an existing GH
[x] The bug is reproducible, following the reproduction steps.
[x] The GH template is filled out as fully as possible
[x] The GH was created by an Expensify employee or a QA tester.
[x] The bug is an /App issue

Okay, agreed. This happens both ways as well, when adding on desktop or web and when adding on iOS or Android. Seems completely cross platform that we're just not pushing the updated number. Viewing the list is also fine, that updates just like the chat does across platforms, so it's just the number in this option menu.

Proposal
Problem
Whenprops.report.participants is updated in ONYX, the menuItems isn't updated
Solution
We should add logic to update menuItems when props.report.participants is changed
diff --git a/src/pages/ReportDetailsPage.js b/src/pages/ReportDetailsPage.js
index 62afb287e..5a48e401c 100644
--- a/src/pages/ReportDetailsPage.js
+++ b/src/pages/ReportDetailsPage.js
@@ -106,6 +106,13 @@ class ReportDetailsPage extends Component {
             OptionsListUtils.getPersonalDetailsForLogins(participants, this.props.personalDetails),
             isMultipleParticipant,
         );
+        const membersItemIndex = _.findIndex(this.menuItems, item => item.key === CONST.REPORT_DETAILS_MENU_ITEM.MEMBERS);
+        if (membersItemIndex >= 0) {
+            this.menuItems[membersItemIndex] = {
+                ...this.menuItems[membersItemIndex],
+                subtitle: lodashGet(this.props.report, 'participants', []).length,
+            };
+        }
         return (

Result
https://user-images.githubusercontent.com/113963320/212274833-e0658a04-dce7-49ff-8025-d99fdfd0fb04.mp4

Proposal
Update the length of the participants for the first menu item as it is added statically and will be the first item always.
diff --git a/src/pages/ReportDetailsPage.js b/src/pages/ReportDetailsPage.js
index 62afb287e..0ca5f24de 100644
--- a/src/pages/ReportDetailsPage.js
+++ b/src/pages/ReportDetailsPage.js
@@ -101,6 +101,10 @@ class ReportDetailsPage extends Component {
         const isChatRoom = ReportUtils.isChatRoom(this.props.report);
         const chatRoomSubtitle = ReportUtils.getChatRoomSubtitle(this.props.report, this.props.policies);
         const participants = lodashGet(this.props.report, 'participants', []);
+        if (this.menuItems.length) {
+            // Update participants length in the menu item Members subtitle
+            this.menuItems[0] = {...this.menuItems[0], subtitle: participants.length};
+        }
         const isMultipleParticipant = participants.length > 1;

Update the length of the participants for the first menu item as it is added statically and will be the first item always.

https://user-images.githubusercontent.com/14358475/212924415-4bc87e69-787b-4e1a-854d-42ba8e141482.mp4

Proposal 2
Since the menu items are generated in constructor, it will not change when this.props.report is changed, which might cause further inconsistency issue besides this one. So another way we can do is to generate the menuItems whenever the component render. This way, any update to the this.props.report will be reflected correctly in the menu items.
diff --git a/src/pages/ReportDetailsPage.js b/src/pages/ReportDetailsPage.js
index 62afb287ed..9c8d1a739e 100644
--- a/src/pages/ReportDetailsPage.js
+++ b/src/pages/ReportDetailsPage.js
@@ -56,32 +56,36 @@ const propTypes = {
 class ReportDetailsPage extends Component {
     constructor(props) {
         super(props);
-
         this.menuItems = [];
+    }
+
+    setMenuItems() {
         if (ReportUtils.isArchivedRoom(this.props.report)) {
             return;
         }

+        const menuItems = [];
+
         // All nonarchived chats should let you see their members
-        this.menuItems.push({
+        menuItems.push({
             key: CONST.REPORT_DETAILS_MENU_ITEM.MEMBERS,
             translationKey: 'common.members',
             icon: Expensicons.Users,
-            subtitle: lodashGet(props.report, 'participants', []).length,
-            action: () => { Navigation.navigate(ROUTES.getReportParticipantsRoute(props.report.reportID)); },
+            subtitle: lodashGet(this.props.report, 'participants', []).length,
+            action: () => { Navigation.navigate(ROUTES.getReportParticipantsRoute(this.props.report.reportID)); },
         });

         if (ReportUtils.isPolicyExpenseChat(this.props.report) || ReportUtils.isChatRoom(this.props.report)) {
-            this.menuItems.push({
+            menuItems.push({
                 key: CONST.REPORT_DETAILS_MENU_ITEM.SETTINGS,
                 translationKey: 'common.settings',
                 icon: Expensicons.Gear,
-                action: () => { Navigation.navigate(ROUTES.getReportSettingsRoute(props.report.reportID)); },
+                action: () => { Navigation.navigate(ROUTES.getReportSettingsRoute(this.props.report.reportID)); },
             });
         }

         if (ReportUtils.isUserCreatedPolicyRoom(this.props.report)) {
-            this.menuItems.push({
+            menuItems.push({
                 key: CONST.REPORT_DETAILS_MENU_ITEM.INVITE,
                 translationKey: 'common.invite',
                 icon: Expensicons.Plus,
@@ -94,6 +98,8 @@ class ReportDetailsPage extends Component {
                 action: () => { /* Placeholder for when leaving rooms is built in */ },
             });
         }
+
+        this.menuItems = menuItems;
     }

     render() {
@@ -106,6 +112,7 @@ class ReportDetailsPage extends Component {
             OptionsListUtils.getPersonalDetailsForLogins(participants, this.props.personalDetails),
             isMultipleParticipant,
         );
+        this.setMenuItems();
         return (
             <ScreenWrapper>
                 <HeaderWithCloseButton

The proposal 2 will be more preferable if:

We expect there could be any change in the report leading to the evaluation of isPolicyExpenseChat, isChatRoom, isUserCreatedPolicyRoom changes
We plan to add anything related to the this.props.report into the menu items in the future (similar to the participants count in this issue) and want to be safe

In the first proposal, I made some mistakes when I uploaded the video.
This is the result of the first proposal
https://user-images.githubusercontent.com/113963320/212936245-c5a56a65-363f-4703-85a9-20d9387e7196.mp4

@parasharrajat what are your thoughts?

Proposal
Root cause
When props are updated , this.menuItems isn't updated hence the component will not re-render Menu ,So  we either refactor this.menuItems to use state and add update it componentDidUpdate or we have to always get menuItems during the render
Solution
diff --git a/src/pages/ReportDetailsPage.js b/src/pages/ReportDetailsPage.js
index 62afb287ed..8578a8fd86 100644
--- a/src/pages/ReportDetailsPage.js
+++ b/src/pages/ReportDetailsPage.js
@@ -54,25 +54,28 @@ const propTypes = {
 };

 class ReportDetailsPage extends Component {
+    // eslint-disable-next-line no-useless-constructor
     constructor(props) {
         super(props);
+    }

-        this.menuItems = [];
+    getMenuItems() {
+        const menuItems = [];
         if (ReportUtils.isArchivedRoom(this.props.report)) {
-            return;
+            return menuItems;
         }

         // All nonarchived chats should let you see their members
-        this.menuItems.push({
+        menuItems.push({
             key: CONST.REPORT_DETAILS_MENU_ITEM.MEMBERS,
             translationKey: 'common.members',
             icon: Expensicons.Users,
-            subtitle: lodashGet(props.report, 'participants', []).length,
-            action: () => { Navigation.navigate(ROUTES.getReportParticipantsRoute(props.report.reportID)); },
+            subtitle: lodashGet(this.props.report, 'participants', []).length,
+            action: () => { Navigation.navigate(ROUTES.getReportParticipantsRoute(this.props.report.reportID)); },
         });

         if (ReportUtils.isPolicyExpenseChat(this.props.report) || ReportUtils.isChatRoom(this.props.report)) {
-            this.menuItems.push({
+            menuItems.push({
                 key: CONST.REPORT_DETAILS_MENU_ITEM.SETTINGS,
                 translationKey: 'common.settings',
                 icon: Expensicons.Gear,
@@ -81,7 +84,7 @@ class ReportDetailsPage extends Component {
         }

         if (ReportUtils.isUserCreatedPolicyRoom(this.props.report)) {
-            this.menuItems.push({
+            menuItems.push({
                 key: CONST.REPORT_DETAILS_MENU_ITEM.INVITE,
                 translationKey: 'common.invite',
                 icon: Expensicons.Plus,
@@ -94,6 +97,8 @@ class ReportDetailsPage extends Component {
                 action: () => { /* Placeholder for when leaving rooms is built in */ },
             });
         }
+
+        return menuItems;
     }

     render() {
@@ -106,6 +111,7 @@ class ReportDetailsPage extends Component {
             OptionsListUtils.getPersonalDetailsForLogins(participants, this.props.personalDetails),
             isMultipleParticipant,
         );
+        const menuItems = this.getMenuItems();
         return (
             <ScreenWrapper>
                 <HeaderWithCloseButton
@@ -149,7 +155,7 @@ class ReportDetailsPage extends Component {
                             </View>
                         </View>
                     </View>
-                    {_.map(this.menuItems, (item) => {
+                    {_.map(menuItems, (item) => {
                         const brickRoadIndicator = (
                             ReportUtils.hasReportNameError(this.props.report)
                             && item.key === CONST.REPORT_DETAILS_MENU_ITEM.SETTINGS

Proposal
diff --git a/src/pages/ReportDetailsPage.js b/src/pages/ReportDetailsPage.js
index 62afb287ed..1679ce8b92 100644
--- a/src/pages/ReportDetailsPage.js
+++ b/src/pages/ReportDetailsPage.js
@@ -1,4 +1,4 @@
-import React, {Component} from 'react';
+import React, {PureComponent} from 'react';
 import PropTypes from 'prop-types';
 import {withOnyx} from 'react-native-onyx';
 import _ from 'underscore';
@@ -53,35 +53,34 @@ const propTypes = {
     personalDetails: PropTypes.objectOf(participantPropTypes).isRequired,
 };

-class ReportDetailsPage extends Component {
-    constructor(props) {
-        super(props);
-
-        this.menuItems = [];
+class ReportDetailsPage extends PureComponent {
+    buildMenuItems() {
         if (ReportUtils.isArchivedRoom(this.props.report)) {
-            return;
+            return [];
         }

+        const menuItems = [];
+
         // All nonarchived chats should let you see their members
-        this.menuItems.push({
+        menuItems.push({
             key: CONST.REPORT_DETAILS_MENU_ITEM.MEMBERS,
             translationKey: 'common.members',
             icon: Expensicons.Users,
-            subtitle: lodashGet(props.report, 'participants', []).length,
-            action: () => { Navigation.navigate(ROUTES.getReportParticipantsRoute(props.report.reportID)); },
+            subtitle: lodashGet(this.props.report, 'participants', []).length,
+            action: () => { Navigation.navigate(ROUTES.getReportParticipantsRoute(this.props.report.reportID)); },
         });

         if (ReportUtils.isPolicyExpenseChat(this.props.report) || ReportUtils.isChatRoom(this.props.report)) {
-            this.menuItems.push({
+            menuItems.push({
                 key: CONST.REPORT_DETAILS_MENU_ITEM.SETTINGS,
                 translationKey: 'common.settings',
                 icon: Expensicons.Gear,
-                action: () => { Navigation.navigate(ROUTES.getReportSettingsRoute(props.report.reportID)); },
+                action: () => { Navigation.navigate(ROUTES.getReportSettingsRoute(this.props.report.reportID)); },
             });
         }

         if (ReportUtils.isUserCreatedPolicyRoom(this.props.report)) {
-            this.menuItems.push({
+            menuItems.push({
                 key: CONST.REPORT_DETAILS_MENU_ITEM.INVITE,
                 translationKey: 'common.invite',
                 icon: Expensicons.Plus,
@@ -94,9 +93,12 @@ class ReportDetailsPage extends Component {
                 action: () => { /* Placeholder for when leaving rooms is built in */ },
             });
         }
+
+        return menuItems;
     }

     render() {
+        const menuItems = this.buildMenuItems();
         const isPolicyExpenseChat = ReportUtils.isPolicyExpenseChat(this.props.report);
         const isChatRoom = ReportUtils.isChatRoom(this.props.report);
         const chatRoomSubtitle = ReportUtils.getChatRoomSubtitle(this.props.report, this.props.policies);
@@ -149,7 +151,7 @@ class ReportDetailsPage extends Component {
                             </View>
                         </View>
                     </View>
-                    {_.map(this.menuItems, (item) => {
+                    {_.map(menuItems, (item) => {
                         const brickRoadIndicator = (
                             ReportUtils.hasReportNameError(this.props.report)
                             && item.key === CONST.REPORT_DETAILS_MENU_ITEM.SETTINGS

RCA
The menuItems variable is a member of the class component and is only computed once on the constructor function. The thing is menuItems relies on the props that are passed to <ReportDetailsPage />. If any of those props changes, the menuItems becomes outdated as it won't change.
To have our component change the menuItems as well it must be treated as a state variable (because changing state variables triggers render function). This will require some additional work such as implementing componentDidUpdate or getDerivedStateFromProps. Neither are a good fit as the former will lead to double-render and the latter will make the component complex..
We can do a shortcut, by simply computing the menuItems at every render, but that requires us to use some kind of a memorisation technique otherwise the menuItems will be computed many times when not necessary. The most straightforward memorisation is to use PureComponent instead of Component

Bump for @parasharrajat.

We've been discussing this one with @parasharrajat, thank you for your continued patience. (Internal Slack link)

I agree with @parasharrajat, let's hire @tienifr for his 2nd proposal, @twisterdotcom.
@tienifr I have a small suggestion: how about getting rid of this.menuItems, renaming setMenuItems to getMenuItems, and calling getMenuItems in render()?

@flodnv sure, all good with that.et me implement accordingly in the PR.
Thanks.

@tienifr - please make sure you've proposed on Upwork too. (Same @parasharrajat).

sorry @twisterdotcom I'm waiting for the assignment like this as the signal to get started on the PR. Would you mind handling the assignment?
thanks

Hi @parasharrajat, The PR is ready for review. Please help to review it

Just a heads up, I'm OOO tomorrow so this will be paid out on Feb 8th. Apologies for the minor delay.

@gadhiyamanan and @parasharrajat could you add your applications to https://www.upwork.com/jobs/~010681c413bd1587cd please?

Assigned: https://github.com/Expensify/App/issues/14254#event-8365191213 Jan 26 at 15:30 UTC
Merged: https://github.com/Expensify/App/pull/14596#event-8390985636 Jan 30 at 18:00 UTC

@parasharrajat I still need your application on https://www.upwork.com/jobs/~010681c413bd1587cd
@parasharrajat and @flodnv - could you help with the three steps here: https://github.com/Expensify/App/issues/14254#issuecomment-1410947195

@twisterdotcom I think this issue is eligible for the PR timeline bonus since it's merged within 3 working days.

Also @tienifr - great spot. I only just saw this was business days.

@parasharrajat and @tienifr you should both have offers in Upwork to accept.

@parasharrajat and @flodnv can you check off the boxes here: https://github.com/Expensify/App/issues/14254#issuecomment-1410947195
If there was no regression, as it seems like this was just how it was originally designed to work, let's just close this out.

@tienifr are you able to propose the regression steps for me?

Regression Test Proposal
Bug: Timezone changes to some 1st option in the list while pressing the enter key
Proposed Test Steps:

On device 1, create workspaceC by userA
Add userB as member
On device 2, for userB, go to #announce of the workspaceC  > details > members
On device 1, for userA, add a new member to the workspace
Verify that on device 2, the new member will be shown in the members list for userB , go back to details page and verify the members count is display correctly

Do we :+1: or :-1:
Video demo (Regression Test):
https://user-images.githubusercontent.com/113963320/212936245-c5a56a65-363f-4703-85a9-20d9387e7196.mp4

Sounds good 👍

Bug: Timezone changes to some 1st option in the list while pressing the enter key

But this is wrong, no? 😄

@flodnv oh my bad, I just updated.

Slack discussion: https://expensify.slack.com/archives/C01SKUP7QR0/p1676636903920779


ModuleNotFoundError: No module named 'im2mesh.utils.libmesh.triangle_hash'

When I want to run the test.py as the readme says. The error above happens. It seems like there is a triangle_hash.pyx in libmesh which is a cython file. What should I do to run the test successfully? Thanks a lot.

Hi, it seems like you are running the ARAH code.


Question: How to handle render inheritance?

What's the proper way to handle inheritance with this library?
Multiple:
class Base {
  render () {
    return html`<div></div>`
  }
}

class Derived extends Base {
  render () {
    return html`<span>${super.render()}</span>`
  }
}

const derived = new Derived()
render(derived.render(), document.body) // lit-html's render

Single v1:
class Base {
  render () {
    return `<div></div>`
  }
}

class Derived extends Base {
  render () {
    return html`<span>${super.render()}</span>`
  }
}

const derived = new Derived()
render(derived.render(), document.body) // lit-html's render

Single v2:
class Base {
  render () {
    return `<div></div>`
  }
}

class Derived extends Base {
  render () {
    return `<span>${super.render()}</span>`
  }
}

const derived = new Derived()
render(html`${derived.render()}`, document.body) // lit-html's render

Now that I think about it, I suspect that the multiple example won't actually work, but would love some confirmation.

In case it's not immediately clear: the multiple example uses the html template tag in each class's render function, the single v1 example only uses it at the end of the inheritance chain, and the single v2 example only uses it at the final render call.

Good question. The "Multiple" example is the correct way do compose templates. A string without a html tag is just a string, and would be rendered as text, not HTML (it would render the text "", not an empty ).
I think this becomes more clear when you have more complex templates with expressions. If you didn't tag them with html, they'd be strings with embedded values that aren't efficiently updatable.

Ah okay, that makes sense.  If I'm understanding this correctly, the super.render() call in the "multiple" example would end up as a Part right?  In which case lit-html would detect that it's a template TemplateResult and handle it accordingly I think.
Thanks for the quick reply :)

That's exactly correct :)
You're welcome!


Build Error "The Broccoli Plugin: [StyleLinter] failed"

Expected behavior:
Run hospitalrun-frontend
Actual behavior:
Build Error. Log ahead..
Checking CouchDB...Starting ember server
WARNING: Node v7.0.0 has currently not been tested against Ember CLI and may result in unexpected behaviour.
Could not start watchman; falling back to NodeWatcher for file system events.
Visit http://ember-cli.com/user-guide/#watchman for more info.
Livereload server on http://localhost:49152
Serving on http://localhost:4200/
[BABEL] Note: The code generator has deoptimised the styling of "hospitalrun/patients/edit/template.js" as it exceeds the max of "100KB".
[BABEL] Note: The code generator has deoptimised the styling of "hospitalrun/tests/fixtures/appointments.js" as it exceeds the max of "100KB".
[BABEL] Note: The code generator has deoptimised the styling of "hospitalrun/tests/fixtures/inventory.js" as it exceeds the max of "100KB".
[BABEL] Note: The code generator has deoptimised the styling of "hospitalrun/tests/fixtures/labs.js" as it exceeds the max of "100KB".
[BABEL] Note: The code generator has deoptimised the styling of "hospitalrun/tests/fixtures/medication.js" as it exceeds the max of "100KB".
[BABEL] Note: The code generator has deoptimised the styling of "hospitalrun/visits/edit/template.js" as it exceeds the max of "100KB".
(node:4792) DeprecationWarning: Using Buffer without `new` will soon stop working. Use `new Buffer()`, or preferably `Buffer.from()`, `Buffer.allocUnsafe()` or `Buffer.alloc()` instead.
TypeError: Cannot read property 'length' of undefined
    at exports.default (/home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-stylelint/node_modules/stylelint/dist/utils/isStandardSyntaxDeclaration.js:28:38)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-stylelint/node_modules/stylelint/dist/rules/declaration-colon-space-after/index.js:54:49
    at /home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:192:28
    at /home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:148:26
    at AtRule.each (/home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:114:22)
    at AtRule.walk (/home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:147:21)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:150:32
    at Root.each (/home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:114:22)
    at Root.walk (/home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:147:21)
    at Root.walkDecls (/home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:190:25)
File: styles/_bootstrap.scss
The Broccoli Plugin: [StyleLinter] failed with:
TypeError: Cannot read property 'errored' of undefined
    at StyleLinter.postProcess (/home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-stylelint/index.js:137:12)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-persistent-filter/lib/strategies/default.js:21:21
    at initializePromise (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:588:5)
    at new Promise (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:1076:31)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-persistent-filter/lib/strategies/default.js:20:14
    at tryCatch (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:538:12)
    at invokeCallback (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:553:13)
    at publish (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:521:7)
    at flush (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:2373:5)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

The broccoli plugin was instantiated at:
    at StyleLinter.Plugin (/home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-plugin/index.js:7:31)
    at StyleLinter.Filter [as constructor] (/home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-persistent-filter/index.js:60:10)
    at new StyleLinter (/home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-stylelint/index.js:66:10)
    at Class.lintTree (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli-stylelint/index.js:53:14)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:603:20
    at Array.map (native)
    at EmberApp.addonLintTree (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:601:36)
    at EmberApp.lintTestTrees (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1158:24)
    at EmberApp.appTests (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1129:51)
    at EmberApp.test (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1115:26)

OS and Browser:
Chrome. Ubuntu 14.04 vagrant box on OS X.

I downgraded node from version 7.0.0 to 6.0.0 then rebuild node-sass and still get the same build error.

@SheriefAlaa thanks for filing the issue.  I can reproduce and I will take a look at it.

@SheriefAlaa if you get the latest from master this problem is now fixed.

Still experiencing issues even after git pull on master, npm install (I made sure stylelint got updated).
error log:
styles/_bootstrap.scss (in /home/vagrant/code/hospitalrun-frontend/tmp/style_linter-input_base_path-rNFjVXIl.tmp/0)

The Broccoli Plugin: [StyleLinter] failed with:

TypeError: Cannot read property 'errored' of undefined
    at StyleLinter.postProcess (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli-stylelint/node_modules/broccoli-stylelint/index.js:137:12)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-persistent-filter/lib/strategies/default.js:21:21
    at initializePromise (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:588:5)
    at new Promise (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:1076:31)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-persistent-filter/lib/strategies/default.js:20:14
    at tryCatch (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:538:12)
    at invokeCallback (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:553:13)
    at publish (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:521:7)
    at flush (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:2373:5)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

The broccoli plugin was instantiated at:
    at StyleLinter.Plugin (/home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-plugin/index.js:7:31)
    at StyleLinter.Filter [as constructor] (/home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-persistent-filter/index.js:60:10)
    at new StyleLinter (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli-stylelint/node_modules/broccoli-stylelint/index.js:66:10)
    at Class.module.exports.lintTree (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli-stylelint/index.js:53:14)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:603:20
    at Array.map (native)
    at EmberApp.addonLintTree (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:601:36)
    at EmberApp.lintTestTrees (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1158:24)
    at EmberApp.appTests (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1129:51)
    at EmberApp.test (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1115:26)

Thanks for you help.

@jkleinsc Seems it all started here: https://github.com/billybonks/broccoli-stylelint/issues/18
I ran npm test and here's the output:
> ./script/test

Could not start watchman; falling back to NodeWatcher for file system events.
Visit http://ember-cli.com/user-guide/#watchman for more info.
⠸ Building[BABEL] Note: The code generator has deoptimised the styling of "hospitalrun/patients/edit/template.js" as it exceeds the max of "100KB".
⠙ Building[BABEL] Note: The code generator has deoptimised the styling of "hospitalrun/tests/fixtures/appointments.js" as it exceeds the max of "100KB".
⠹ Building[BABEL] Note: The code generator has deoptimised the styling of "hospitalrun/tests/fixtures/inventory.js" as it exceeds the max of "100KB".
⠸ Building[BABEL] Note: The code generator has deoptimised the styling of "hospitalrun/tests/fixtures/labs.js" as it exceeds the max of "100KB".
[BABEL] Note: The code generator has deoptimised the styling of "hospitalrun/tests/fixtures/medication.js" as it exceeds the max of "100KB".
⠹ Building[BABEL] Note: The code generator has deoptimised the styling of "hospitalrun/visits/edit/template.js" as it exceeds the max of "100KB".
⠼ BuildingTypeError: Cannot read property 'length' of undefined
    at exports.default (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli-stylelint/node_modules/stylelint/dist/utils/isStandardSyntaxDeclaration.js:28:38)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli-stylelint/node_modules/stylelint/dist/rules/declaration-colon-space-after/index.js:54:49
    at /home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:192:28
    at /home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:148:26
    at AtRule.each (/home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:114:22)
    at AtRule.walk (/home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:147:21)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:150:32
    at Root.each (/home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:114:22)
    at Root.walk (/home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:147:21)
    at Root.walkDecls (/home/vagrant/code/hospitalrun-frontend/node_modules/postcss/lib/container.js:190:25)
    at declarationColonSpaceChecker (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli-stylelint/node_modules/stylelint/dist/rules/declaration-colon-space-after/index.js:52:8)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli-stylelint/node_modules/stylelint/dist/rules/declaration-colon-space-after/index.js:19:5
    at /home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli-stylelint/node_modules/stylelint/dist/postcssPlugin.js:124:46
    at Array.forEach (native)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli-stylelint/node_modules/stylelint/dist/postcssPlugin.js:103:33
cleaning up...
Build failed.
File: styles/_bootstrap.scss
The Broccoli Plugin: [StyleLinter] failed with:
TypeError: Cannot read property 'errored' of undefined
    at StyleLinter.postProcess (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli-stylelint/node_modules/broccoli-stylelint/index.js:137:12)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-persistent-filter/lib/strategies/default.js:21:21
    at initializePromise (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:588:5)
    at new Promise (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:1076:31)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-persistent-filter/lib/strategies/default.js:20:14
    at tryCatch (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:538:12)
    at invokeCallback (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:553:13)
    at publish (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:521:7)
    at flush (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:2373:5)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

The broccoli plugin was instantiated at:
    at StyleLinter.Plugin (/home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-plugin/index.js:7:31)
    at StyleLinter.Filter [as constructor] (/home/vagrant/code/hospitalrun-frontend/node_modules/broccoli-persistent-filter/index.js:60:10)
    at new StyleLinter (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli-stylelint/node_modules/broccoli-stylelint/index.js:66:10)
    at Class.module.exports.lintTree (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli-stylelint/index.js:53:14)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:603:20
    at Array.map (native)
    at EmberApp.addonLintTree (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:601:36)
    at EmberApp.lintTestTrees (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1158:24)
    at EmberApp.appTests (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1129:51)
    at EmberApp.test (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1115:26)
    at EmberApp.toArray (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1647:61)
    at EmberApp.toTree (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/broccoli/ember-app.js:1662:30)
    at module.exports (/home/vagrant/code/hospitalrun-frontend/ember-cli-build.js:37:14)
    at CoreObject.module.exports.Task.extend.setupBroccoliBuilder (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/models/builder.js:70:19)
    at CoreObject.module.exports.Task.extend.init (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/models/builder.js:50:10)
    at CoreObject.superWrapper [as init] (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/node_modules/core-object/lib/assign-properties.js:32:18)
    at CoreObject.Class (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/node_modules/core-object/core-object.js:32:33)
    at CoreObject.module.exports.Task.extend.run (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/tasks/build.js:15:19)
    at CoreObject.<anonymous> (/home/vagrant/code/hospitalrun-frontend/node_modules/ember-cli/lib/commands/test.js:164:27)
    at tryCatch (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:538:12)
    at invokeCallback (/home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:553:13)
    at /home/vagrant/code/hospitalrun-frontend/node_modules/rsvp/dist/rsvp.js:628:16

@SheriefAlaa my apologies.  I thought it was fixed, but @billybonks needed to publish a new version of https://github.com/billybonks/ember-cli-stylelint which he has now done and that version has now just been updated in HospitalRun, so the problem should now be fixed.  Let me know if it still persists after getting the latest from master.

@jkleinsc HR now runs on my local machine just fine using master. Thanks for your and @billybonks '.


Track line number additionally to file name for inclusion reason

Would it be possible for nft to track the line number that caused it to include something in the tree vs. just the file/parent? Then it would be trivial to look at the correct code to figure out what lead to an inclusion in the archive.
(Extracted from https://github.com/vercel/nft/issues/203#issuecomment-842629092)

Sounds like a nice debugging feature. Do you want to submit a PR to add it? 🙂

Right now no capacity (surprise...), but if I have a future reason to actually jump into the codebase to understand it I will certainly remember this enhancement request here and take a shot. Anyone else of course feel free to do so in the meantime.


Support including fragment documents inside gql

See https://github.com/apollostack/graphql-fragments/issues/2#issuecomment-258057233 + https://github.com/apollostack/GitHunt-React/tree/fragments-from-graphql-anywhere

@stubailo I'm not really sure what the best way to support the second mode. It seems more complicated to figure out that you are mid way through a selection set when you see a fragment document for a substitution

@stubailo shall we merge and release this?

@tmeasday sorry, I didn't have a chance to review this; some comments:

We should test that this preserves the property that queries are === each other if they are the same. That's used in various places to identify whether a query is different or not.
There's got to be some way to avoid printing and then parsing again every time. The package has some memoization built in so that we make sure to only parse things once, the first time they are encountered. Maybe there is something similar we can do? Otherwise the fragments will be printed and parsed every single time gql runs.

@stubailo so we are OK with only working with fragment documents that come from this library?
Or are you just saying I shouldn't use this print technique and instead figure out how to put the fragment document's AST at the bottom of the query document. That seems pretty reasonable to me, although it might be out of order.

oh, yeah I mean just using the AST directly rather than having the intermediate state of having a string.

Alright take a look now. As discussed elsewhere, we are keeping the loc field on top-level documents so we can avoid an unnecessary print here. There may be other alternatives we can use in future.

@stubailo I think you should probably review this before I merge it.

Looks great.


A test method must be registered for each individual suite

Description
When we review statistic info about stability of special test case we want to see suites list that include this test case in a 'TESTCASE INFO' widget.

For now If we create a dashboard with tests failures statistic info for a project, the suite name may not match with the suite name in 'TESTCASE INFO' widget (detailed widget with info for special test case). It's applicable for projects with cross browsers/platforms testing.
Value
It will help to see more detailed and correct information about special test case. It is really actual for projects where cross browsers/platforms testing is used.

@vdelendik Could you take a look, please?

@vdelendik, do we need to change db for that ticket?

@hursevich @katedkm fixed in 4.1.67 zafira-client.


Highcharts + Highstock in final bundle with CRA

Description
When you add 3D extra module (and maybe all others modules ?) with Highstock and "react-jsx-highstock", both Highcharts and Highstock are in final bundle.
How to reproduce

Setup a project with CRA (Create-React-App).
Add "webpack-bundle-analyzer" with "npm i webpack-bundle-analyzer --save-dev"
Add analyze command in "package.json" script to inspect bundle size :

"analyze": "npm run build -- --stats && webpack-bundle-analyzer build/bundle-stats.json -p 9999"

Create 2 chart with "react-jsx-highstock" (a 2D StockChart and a 3D Chart) in App component.

You need to import :

Highstock (from "highcharts/highstock")
Highcharts 3D Module (from "highcharts/highcharts-3d'").

Apply 3D factory function into Highstock to enable 3D.

Run "npm run dev", everything is fine and both chart render correctly.

Build app and analyze dependencies with "npm run analyze", you have Highcharts + Highstock + 3D Module. That result in 732Kb of dependencies (parsed, no gzip).

Expected : only Highstock + 3D Module should be packaged with CRA (CRA use Webpack).
Live demo demonstrating bug
/
Versions

React JSX Highstock version : 3.5.0
Highcharts version: 7.1.1
React version:  16.8.6

Solution
Alias Highcharts module into Highstock module. This is a Highcharts issue, not related to this package.
This can be done with Webpack (check "resolve.alias" in Webpack documentation for more information) :
    alias: {
      highcharts$: 'highcharts/highstock.src.js',
    }

Unfortunaly, CRA doesn't provide any sort of aliasing, unless you eject :( .

I closed the issue because i found a working solution, and the initial problem doesn't come from this package ;) .


Some detail about recovery.

I have find two problems and need to seek advice from you. @shlomi-noach
I created a situation like this, by add "sleep 10m" in PostMasterFailoverProcesses of config, the leader of raft changes during recovery process.
In my understanding, the log in raft will be synced from leader to followers, so the process should be continue in new leader. But the result is not like expected.
I guess, these processes don't be sync to follower, and only the ultimately change(such as the value of KV and the changed cluster_alias) will be sync, so the intermediate process can not be continued. Is that true?
When the process of RESET SLAVE of new master MySQL and CHANGE MASTER of new slave MySQL will be done? From my observation, this step executes after PreFailoverProcesses and before PostMasterFailoverProcesses, Is that true?

I guess, these processes don't be sync to follower, and only the ultimately change(such as the value of KV and the changed cluster_alias) will be sync, so the intermediate process can not be continued. Is that true?

You are correct that invocation of external hooks are not transferred to the followers. If the leader fails before completing the recovery, or, to clarify, before the topology is healed, then the follower will pick up where things were left and will run its own recovery. But once the topology is healed you are correct and there's a gray zone. I'll try and think more about this.

When the process of RESET SLAVE of new master MySQL and CHANGE MASTER of new slave MySQL will be done? From my observation, this step executes after PreFailoverProcesses and before PostMasterFailoverProcesses, Is that true?

Correct. If you don't like it, you can "ApplyMySQLPromotionAfterMasterFailover": false, and do it on your own in your post failover scripts.

If I set "ApplyMySQLPromotionAfterMasterFailover": false, it only detects the DeadMaster, and the following steps, such as select the new master, reset slave, change master, update information, etc, are all needed to do by me. Is it?

it only detects the DeadMaster, and the following steps, such as select the new master, reset slave, change master, update information, etc, are all needed to do by me. Is it?

No. Please see https://github.com/github/orchestrator/blob/master/docs/configuration-recovery.md#promotion-actions

I should clarify. You asked about RESET SLAVE of new master and CHANGE MASTER. These are two very different operations.
The CHANGE MASTER is part of the very basic recovery mechanism. If you don't want that, you don't want  recovery at all. The RESET MASTER part is optional.

ok, I understand.
The ApplyMySQLPromotionAfterMasterFailover is only affects the step of RESET SLAVE and SET READ ONLY = 0.

The step of RESET SLAVE and CHANGE MASTER which will be done earlier if "ApplyMySQLPromotionAfterMasterFailover": true?

Can this issue be closed?

👌of course!


Add backend for Redis Sentinel

Just for internal review before upstream PR in openstack gerrit repo.

Moved into upstream PR https://review.opendev.org/c/openstack/oslo.cache/+/907211


What do these packages do?

I'm trying to figure out what's the purpose of these packages and the README does not say anything about them.

me too

They add suppoort of Swashbunkle swagger to fast endpoints instead nswag


Xbox Controller implementation not working with HL2 & MRTK on Build

A few of my colleagues (@lstearns86) and I have been attempting to get Xbox Controllers working with the newest updates to MRTK in Unity 2020. We have had this working on projects in the past (2.6.1), but unfortunately have had no luck with MRTK 2.7. As per #9931 and the updates found in 2.7.1, the Xbox controller works in the Unity Editor, but not in the HL2 after a build.
To reproduce
Steps to reproduce the behavior:

Set up MRTK in a Unity project.
Create new profiles for the InputSystem, InputActions, ControllerMapping, and define controller definitions for Xbox Controller.
Create a new script to enable functions for the controller, and create a function to manipulate an on-screen object (so you can see it after the build). Here is an example of our setup:

Note: We have also tried inheriting from the BaseInputHandler instead of the InputSystemGlobalHandlerListener
using UnityEngine;
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;

public class Input_MRTK_Implementation :
  InputSystemGlobalHandlerListener, IMixedRealityInputHandler {

  [Header("MRTK Input Actions")]
  [SerializeField] private MixedRealityInputAction Start_Button;
  [SerializeField] private MixedRealityInputAction View_Button;
  [SerializeField] private MixedRealityInputAction A_Button;
  [SerializeField] private MixedRealityInputAction B_Button;
  [SerializeField] private MixedRealityInputAction Y_Button;
  [SerializeField] private MixedRealityInputAction X_Button;
  [SerializeField] private MixedRealityInputAction Left_Bumper;
  [SerializeField] private MixedRealityInputAction Right_Bumper;

  [SerializeField] private bool _start;
  [SerializeField] private bool _view;
  [SerializeField] private bool _a;
  [SerializeField] private bool _b;
  [SerializeField] private bool _y;
  [SerializeField] private bool _x;
  [SerializeField] private bool _lb;
  [SerializeField] private bool _lb;
  [SerializeField] private bool _rb;

#region On Input Up/Down
  public void OnInputUp(InputEventData eventData){
    if(eventData.MixedRealityInputAction == Start_Button) _start = false;
      if(eventData.MixedRealityInputAction == View_Button) _view = false;
      if(eventData.MixedRealityInputAction == A_Button) _a = false;
      if(eventData.MixedRealityInputAction == B_Button) _b = false;
      if(eventData.MixedRealityInputAction == Y_Button) _y = false;
      if(eventData.MixedRealityInputAction == X_Button) _x = false;
      if(eventData.MixedRealityInputAction == Left_Bumper) _lb = false;
      if(eventData.MixedRealityInputAction == Right_Bumper) _rb =  false;
  }

  public void OnInputDown(InputEventData eventData){
      if(eventData.MixedRealityInputAction == Start_Button) _start = true;
      if(eventData.MixedRealityInputAction == View_Button) _view = true;
      if(eventData.MixedRealityInputAction == A_Button) _a = true;
      if(eventData.MixedRealityInputAction == B_Button) _b = true;
      if(eventData.MixedRealityInputAction == Y_Button) _y = true;
      if(eventData.MixedRealityInputAction == X_Button) _x = true;
      if(eventData.MixedRealityInputAction == Left_Bumper) _lb = true;
      if(eventData.MixedRealityInputAction == Right_Bumper) _rb = true;
  }
#endregion

#region Handlers
  protected override void RegisterHandlers(){
    CoreServices.InputSystem.RegisterHandler< IMixedRealityInputHandler >(this);
  }

  protected override void UnregisterHandlers(){

  }
#endregion
}

Map your MixedRealityInputAction 's to the Input Actions defined in the Controller Definitions section of MRTK.

Test in the Unity Editor. If the Xbox Controller does not respond, you need to make sure the UnityJoystickManager Provider is included in Input Data Providers.
Once you can see the Xbox Controller works with your setup, build to the HL2!
Before you start the application, connect your Xbox Controller to your HL2 over Bluetooth.
Open the application and test the functionality of the controller.

Expected behavior
The Xbox controller should work the same way as it does in the editor.
Your setup

Unity Version 2020.3.2, 2020.3.6
MRTK Version 2.7.1+

Target platform

HoloLens 2
Bluetooth Xbox controller

Additional context

I have also made sure that the firmware of my Xbox controller is on its latest version through this application.

My best guess to the solution is that there is a API marked as Legacy in 2.7 that the Xbox Controller needs to work properly.

There is also basically no documentation on the proper or best way to get a Xbox Controller working with a HoloLens other than the fact that the HL2 does support them.

Can you please let me know which Windows version you have on your HoloLens? We're currently investigating a potential issue in certain Windows versions with Xbox controller not coming through properly.

@keveleigh My HL2 is running:

Windows Holographic for Business 21H1
OS Build 20346.1002

I'm having this issue as well, but I'm running OS Build 20348.1007

Yep, those builds both look solidly in the range where I'd expect this. I'll mark this issue as External and will follow-up here when a fix ships!

Thanks!

I'm also running into this issue.

@keveleigh Is there a workaround for this issue, or an estimate on when it will be fixed? Or can you provide a specific version of Windows (and/or MRTK) that we should roll back to so that the Xbox controllers will work again?

This should be fixed in Windows 20348.1405 or newer (it should be in one of the Insider Preview rings). You may need to unpair/repair your Xbox controller to your device.

If you instead want to roll back, you can roll back to any 20H2 builds. This issue was only present on 21H1 builds.


Created PR doesn't have auto complete set even if auto complete options are set.

In document of Create PR, request body contains possible options "autoCompleteSetBy" and "completionOptions" but create PR doesn't have auto complete set even when these options are passed.
Request Body:
{{
  "sourceRefName": "{0}",
  "targetRefName": "{1}",
  "title": "My PR",
  "description": "My Description",
  "autoCompleteSetBy": {{
    "id": "{4}"
  }},
  "completionOptions": {{
    "deleteSourceBranch": "false",
    "squashMerge": "false"
  }}
}}

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

ID: 6afa8c60-46f6-d829-ba00-fed86df4601f
Version Independent ID: 7b98c04a-c934-a4a9-4f57-55bd0afccf76
Content: Pull Requests (Git)
Content Source: docs-ref-autogen/5.1/git/Pull%20Requests.yml
Product: devops
GitHub Login: @wnjenkin
Microsoft Alias: whjenkin

You need a merge to finish before you can complete a pull request. Typically what is done is you first create your pull request. Then you wait for the mergeStatus to be successful and then update the pull request to set autocomplete.

@erjohnms in that case documentation should be updated to reflect that. Current doc just lists all properties of Pull Request definition. It should however mark which ones are required/honored/used to create or update etc.