Unsteady Grasp

Hi,
I'm a student and I'm trying to use MuJoCo for picking object with UR5
I'm looking for some help with grasping. When I test the pick task in MuJoCo simulator, it seems good and everything is fine. However, it is unsteady when I try it in my python code. Either the grasp went through the object or the object slipped out when gripper touches it. Interestingly, these cases occur in the same model file.
 THIS IS DIY UR5 DEMO <include file='ur5.xml'/> -->
        <include file='ur5_origin.xml'/>

        <body name='object' pos='0.5 0.1 1.675' quat='1 0 0 0'> <!0.5 0.1 1.675   0.8 0.33 1.67   >
            <joint type="free" damping="0.007" name="free_joint" />
            <geom size=".02 .02 .02" pos="0 0 0" type="box" rgba='0.3 0.9 0.2 1' mass='2' />
            <site name="object" pos="0 0 0" size="0.02 0.02 0.02" rgba="1 0 0 1" type="sphere"/>
        </body>

        <!-- <body name='hole' pos='-0.5 0.3 1.67'>
            <geom size=".02 .02 .02" pos="0 0 0" type="box" rgba='0.9 0.9 0.2 1'/>
        </body> -->

        <body name="hole" pos="0.5 -0.5 1.67">

            <body name="w1" pos="0.0179 0. 0.025">
                <geom name="w1" rgba="0.3 0.5 0.6 1" type="box" group="1" size="0.0071 0.025 0.02" contype="1" conaffinity="1" />
            </body>
            <body name="w2" pos="-0.0179 0. 0.025">
                <geom name="w2" rgba="0.3 0.5 0.6 1" type="box" group="1" size="0.0071 0.025 0.02" contype="1" conaffinity="1" />
            </body>
            <body name="w3" pos="0. -0.0179 0.025">
                <geom name="w3" rgba="0.3 0.5 0.6 1" type="box" group="1" size="0.0108 0.0071 0.02" contype="1" conaffinity="1" />
            </body>
            <body name="w4" pos="0. 0.0179 0.025">
                <geom name="w4" rgba="0.3 0.5 0.6 1" type="box" group="1" size="0.0108 0.0071 0.02" contype="1" conaffinity="1" />

            </body>
        </body>

    </worldbody>

    <!-- <equality>
        <joint name="fingers" joint1="UR5:base_to_rik" joint2="UR5:base_to_lik" polycoef="0 1 0 0 0"/>
    </equality> -->

    <actuator>
        <!include file='actuators/position.xml'/>

        <motor name='UR5:shoulder_pan_T' ctrllimited="true" ctrlrange="-2 2" joint='UR5:shoulder_pan_joint' gear="101"/> <!--range -150 150--> <!ctrlrange="-2 2">
        <motor name='UR5:shoulder_lift_T' ctrllimited="true" ctrlrange="-2 2" joint='UR5:shoulder_lift_joint' gear="101"/> <!ctrlrange="-2 2">
        <motor name='UR5:forearm_T' ctrllimited="true" ctrlrange="-2 2" joint='UR5:elbow_joint' gear="101" /> <!ctrlrange="-2 2">
        <motor name='UR5:wrist_1_T' ctrllimited="true" ctrlrange="-1 1" joint='UR5:wrist_1_joint' gear="101"/>  <!--range -28 28-->
        <motor name='UR5:wrist_2_T' ctrllimited="true" ctrlrange="-1 1" joint='UR5:wrist_2_joint' gear="101"/>
        <motor name='UR5:wrist_3_T' ctrllimited="true" ctrlrange="-1 1" joint='UR5:wrist_3_joint' gear="101"/>
        <! grippers>
        <motor name='UR5:gripper_motor_l' ctrllimited="true" ctrlrange="-1 1" joint='UR5:base_to_lik' gear="101"/>
        <motor name='UR5:gripper_motor_r' ctrllimited="true" ctrlrange="-1 1" joint='UR5:base_to_rik' gear="101"/>
    </actuator>
</mujoco>

this is my gripper part code:

minimal XML
<!--GRIPPER-->
<mujoco>
    <body name="UR5:robotiq_85_base_link" pos="0 0.0823 0" quat="0.707107 -0.707107 0 0"> <!pos="0 0.0823 0" quat="0.5 -0.5 0.5 0.5 ">
        <inertial pos="0.00021987 -2.3546e-10 0.030163"  quat="0.707058 0.00723369 0.00723345 0.707081" mass="0.30915" diaginertia="0.00030737 0.000289758 0.000199102" />
        <geom type="mesh" rgba="0.1 0.1 0.1 1" friction="0.8 0.8 0.8" mesh="robotiq_85_base_link_coarse" />

    <body name="UR5:left_inner_knuckle" pos="0.0127 0 0.0693075">
        <inertial pos="0.0170975 -3.93809e-10 0.0224918"   quat="0.947655 0 -0.319297 0" mass="1.10931" diaginertia="5.59353e-06 3.96549e-06 1.88108e-06" />
        <geom type="mesh" rgba="0.1 0.1 0.1 1" friction="0.8 0.8 0.8" mesh="inner_knuckle_coarse" />
        <joint name="UR5:base_to_lik" class="GRIPPER" pos="0 0 0" axis="0 1 0" limited="true" range="-1 1" />

        <body name="UR5:left_inner_finger" pos="0.0345853 0 0.045497" >
            <inertial pos="0.00602756 0 0.00669926"  quat="0.699065 0.106339 0.106339 0.699065" mass="4" diaginertia="1.70064e-06 1.58577e-06 3.69621e-07" />
            <geom type="mesh" rgba="0.1 0.1 0.1 1" friction="0.8 0.8 0.8" mesh="inner_finger_coarse" />
        </body>
    </body>

    <body name="UR5:right_inner_knuckle" pos="-0.0127 0 0.0693075" quat="0 0 0 1"> <! mass=0.0110931>
        <inertial pos="0.0168606 3.93808e-10 0.02267"  quat="0.949317 0 -0.314322 0" mass="1.10931" diaginertia="5.59353e-06 3.96549e-06 1.88108e-06" />
        <geom type="mesh" rgba="0.1 0.1 0.1 1" friction="0.8 0.8 0.8" mesh="inner_knuckle_coarse" />
        <joint name="UR5:base_to_rik" class="GRIPPER" pos="0 0 0" axis="0 1 0" limited="true" range="-1 1" />

        <body name="UR5:right_inner_finger" pos="0.034106 0 0.0458574">
            <inertial pos="0.00602756 0 0.00669926"  quat="0.699065 0.106339 0.106339 0.699065" mass="4" diaginertia="1.70064e-06 1.58577e-06 3.69621e-07" />
            <geom type="mesh" rgba="0.1 0.1 0.1 1" friction="0.8 0.8 0.8" mesh="inner_finger_coarse" /><!0.00724255>
        </body>
    </body>

    </body>

</mujoco>

Actually, I googled similar issues before, and the solutions are normally like:

change the timestep to 1e-4 1e-5
add solref=".01 1" solimp=".99 .99 .01" in
make the object larger
more stable control
Emmmm, waiting for your answer now...

Here is a screenshot / video, illustrating my question:
the video shows how the gripper went through the object:
https://user-images.githubusercontent.com/87897172/227270924-8b8cfbd3-9af6-480e-9eb8-96cbb5b2079a.mp4
the video shows another abnormal issue that the object slipped out from the gripper
https://user-images.githubusercontent.com/87897172/227272755-46eed6ab-0441-484d-aa48-eba6cd25af0e.mp4
the picture shows the object can be held in the gripper very stable (I just change the height of target) . And you can find the force can be shown in the image:

Hope someone can provide good suggestions, I really really have no idea now, because it seems existing collision between the gripper and target.
Thanks in advance!

#698 I tried all solutions according to this issue.

I have also encountered this problem, my solutions are:

Make sure you adjust the friction coefficient of your grasper.  It can be done through the geom type attributes
Add <option noslip_iteration="5"> </option> to your XML file head,  you can try to modify the number, 5 is fine by me.
Add <option><flag multiccd="enable"/> </option>
You can try it out.
But I am not sure it will 100% help you, because I have also used this UR5 model, and it act strange when I added these options, I think it is linked to how your geom settings.

Thanks for your answer. @cidxb
However,  they do not work for me. My friction values are set '.8 .8 .8' and according to @yuvaltassa  suggestions, noslip_iterations cannot be set more than 3. (even if I try to set 5, it does not work ...)
I suppose the reasons why simulation is unstable are either model files set or controlling methods. For the second possible reason, maybe my gripper force is too large, so the object is 'pop out'. But when I decrease its gains and low its grasping velocity, it will go through the object, i.e. almost no collision.

Hi @wangjunyi9999, I would suggest you use the Robotiq 2F85 gripper we have in Menagerie here. The collision geoms for the pads are implemented using multiple boxes to generate more contact points. Would be great if you gave it a try to see if it solves your issues.

Hi @STAY-Melody,
I am also working on the same item with the Franka arm. Do you want to combine efforts to try to solve this?

Hi! @wangjunyi9999 Have you solved it? I met the same error but with Franka arm. Would you mind sharing your solution? Thanks!

Hi, bro, sorry for the late reply. Honestly, I did not find a good solution for the issue, so I changed to another simulator named Isaac Gym. That one provides more stable examples so that you do not have to deep more about modeling work. I recommend you have a try. Hope it helps you.

Thanks @STAY-Melody for the feedback on your iterations towards solving this problem. I'll also share my learnings here shortly and a solution if I get one. In my current implementation it seems that the arm controller is causing issues rather than the gripper, this being said I will be testing the gripper again once I fix my arm controller.

Hi all, we took a look at the Robotiq gripper. Two issues that we discovered and fixed are:

Using a high impratio requires elliptic friction cones, fixed here.
The Robotiq has two box geoms per finger which are what is actually colliding. Some of the previously reported issues involved box-box collisions and it turned out that code has some bugs which should be fixed after 7942fe957ea046750f936ac002d49425e31d9dab.

So the Robotiq gripper from the Menagerie should be pretty good now.
@kevinzakka do we actually have the gripper in the OP?
I suspect it needs some work giving it a better collision layer but TBH I don't recognize it.
Closing for now, please reopen if the above is not sufficient.

I'll also share my learnings here shortly and a solution if I get one.

So I ported the following osc controller to my codebase and I am getting better results (I still need to perform source build for the updates but plan to do this soon).
Screencast from 12-13-2023 05:17:29 PM.webm
This being said despite setting gap=margin for geoms it looks like there is a gap between my gripper fingers and geoms (guessing this is due to the gripper model).
I also have had issues with commanding open/close of the gripper where continuously commanding close command can result in subsequent open commands not being reactive, I'll post what I learn about this tomorrow as I plan to debug.
Other than this I am working on making the controller as robust as possible, it works well right now for my purposes but I plan to spend more time with it.  Here's my controller running on my simple XML which combines the Menagerie and Robotiq models together with no modifications:
https://github.com/google-deepmind/mujoco/assets/10518920/83ebd84e-2f45-418a-ac9e-a570a03befd8

Hey @yuvaltassa
My gripper is unable to grasp I really tried multiple iterations of friction for grippers, object but still cant figure this out
https://github.com/user-attachments/assets/6b4866a2-1e1c-4fa1-a0b4-e9318f1c51fd

Hi,
I'm a student and I'm trying to use MuJoCo for picking object with UR5
I'm looking for some help with grasping. When I test the pick task in MuJoCo simulator, it seems good and everything is fine. However, it is unsteady when I try it in my python code. Either the grasp went through the object or the object slipped out when gripper touches it. Interestingly, these cases occur in the same model file.
Here is a model which explains my question:
minimal XML
this is my gripper part code:
minimal XML
Actually, I googled similar issues before, and the solutions are normally like:

change the timestep to 1e-4 1e-5
add solref=".01 1" solimp=".99 .99 .01" in
make the object larger
more stable control
Emmmm, waiting for your answer now...

Here is a screenshot / video, illustrating my question: the video shows how the gripper went through the object: https://user-images.githubusercontent.com/87897172/227270924-8b8cfbd3-9af6-480e-9eb8-96cbb5b2079a.mp4 the video shows another abnormal issue that the object slipped out from the gripper
abnormal.pick.mp4
the picture shows the object can be held in the gripper very stable (I just change the height of target) . And you can find the force can be shown in the image:

Hope someone can provide good suggestions, I really really have no idea now, because it seems existing collision between the gripper and target.
Thanks in advance!

Hey were you able to fix it?

Did you read this?
https://mujoco.readthedocs.io/en/latest/modeling.html#preventing-slip

Did you read this?
https://mujoco.readthedocs.io/en/latest/modeling.html#preventing-slip

Ahm yes, I played with friction values of gripper, object.


Resnet model download problems

I didn't find the download link of resnet model. Have you ever published it? Thanks.

Yes, we haven't publish the resnet model. I will update this issue when we do.

We have relase a new version with ResNet-50 model.
Hope you enjoy it. Best.


Adding a math library to toy

Hello,
I've added a new library called math which uses C's math library to provide some more advanced math utilities for toy programs. I've also added a test script with numerous tests for the functions, and added the library to be imported by the REPL. I did have to make a minor change by adding the -lm tag to the make file to get the code to compile. However, I've never used make before this, so if I messed something up, please let me know.
Common

mod(x, y): Returns the modulus or remainder of dividing x by y.

Power

pow(x, y): Returns x to the power of y.
sqrt(x): Returns the square root of x.
qbrt(x): Returns the cube root of x.
hypot(x, y): Returns the length of the hypotenuse assuming x and y are the legs in a right-angle triangle.

Trigonometric

toRad(d): Converts degrees into radians.
toDeg(r): Converts radians into degrees.
sin(x): Returns the sine of x.
cos(x): Returns the cosine of x.
tan(x): Returns the tangent of x.
asin(x): Returns the arc sine of x.
acos(x): Returns the arc cosine of x.
atan(x): Returns the arc tangent of x.

Comparison

isnan(x): Returns true if x is NaN and false otherwise.
floatCompare(x, y): Returns true if x is approximately equal to y.

Constants

PI: Represents the ratio of a circle's circumference to its diameter.
E: Represents Euler's number, the base of natural logarithms.
EPSILON: Represents the acceptable amount of approximation error for floats.
NAN: Represents not a number, often returned when a calculation is impossible e.g. sqrt(-1)
INFINITY: Represents the largest possible float type.

I believe this update will enhance the functionality and utility of toy program. If you encounter any issues or have any feedback, please don't hesitate to let me know.

Looks like their might be something wrong with aliasing imports since the checks fail less when I comment out these lines

OK, a few notes:

You missed a few instances of Toy_freeLiteral calls which, while not totally necessary, are needed for consistency (I might add a way to omit them at build time in future for speed purposes, IDK). For example, at lib_math.c, line 88, you're only freeing xLiteral and not yLiteral. Make sure every literal gets freed on every possible execution path.
mod is a little redundant, as Toy supports the modulo operation with the % operator.
A few naming tweaks: checkIsNaN(), toRadians(), toDegrees(), epsilionCompare(), etc.
lib_math.c, line 792: this type should be TOY_LITERAL_ANY, since the alias dictionary isn't just string:function anymore.
If you check the diff, you've accidentally deleted some lines from lib_standard.c, which is why the checks are failing.
You need to make sure that math.toy is actually being executed in the tests - I can tell it isn't, because you need to add a reference to it within test_interpreter.c, probably at line 136.

On the whole, this is a good start. If you can address these issues, I'll review it again.
P.S. -lm is simply because math.h isn't part of the C standard after all, but that's fine because every compiler supports it anyway.

Thank you so much, for your feedback! I knew something was off but I could not figure it out. Now that I've implemented your suggestions it passes the checks.

(I must've suggested the wrong spot for where to invoke math.toy - good catch!)
Congratulations on the merge! I'm super happy with how all of this looks. Will you be expanding it in future, or do you have any other ideas? I'll open up a discussion for ideas and such.

I think the math library could benefit from some logarithmic functions, but other then that I don't see what else it could need. As for new ideas, I think exposing the <stdio.h> header through an io library could be useful since then toy programs could be interactive. Though I know toy is not intended to operate on its own, so maybe that is unnecessary? I also think I could use FastNoiseLite to implement a noise library which could be very useful random number generation, and game programs.
Those are my ideas currently, what do you think?

Jump over here https://github.com/Ratstail91/Toy/discussions/95


”Văcăreni” is listed in the drop-down menu

Description:
"Văcăreni" is listed in the drop-down menu alongside its corresponding county and commune, according to the law.
Precondition:
The website is up an running.

Step 1
Type "Văcăreni" in the search bar.

Expected results
The location is listed in the drop-down menu as "Sat Văcăreni, TULCEA (Văcăreni)".


Remove usage of a separate python.json environment.

We instead now pull the python according to pigweed setup (so that version is maintained and uniform).
This moves windows to also use python 3.11 (because 3.9 will not work) and removes the mac-amd64 pull of a python3.9 as that is redundant.

Apparently this fails because github includes a python 3.12 by default in their runners: https://github.com/actions/runner-images/blob/macos-13/20240916.98/images/macos/macos-13-Readme.md
however why that interacts oddly between python 3.9 and 3.11 is unclear to me ... we should have had installed python 3.11 and have things just work.


[Snyk] Upgrade @types/node from 18.0.0 to 18.16.9

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to upgrade @types/node from 18.0.0 to 18.16.9.
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.

The recommended version is 94 versions ahead of your current version.
The recommended version was released 23 days ago, on 2023-05-13.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.
For more information:
🧐 View latest project report
🛠 Adjust upgrade PR settings
🔕 Ignore this dependency or unsubscribe from future upgrade PRs

Codecov Report
Patch and project coverage have no change.

Comparison is base (88ba57b) 80.88% compared to head (914d5b0) 80.88%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@           Coverage Diff           @@
##             main      #28   +/-   ##
=======================================
  Coverage   80.88%   80.88%
=======================================
  Files          19       19
  Lines         408      408
  Branches       59       59
=======================================
  Hits          330      330
  Misses         25       25
  Partials       53       53

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


GoogleDrive folder permissions break cache check process

To reproduce the problem, I have a private google drive folder setup with a single MS called KAT7_200_7_1.tar.gz. The yaml entry in registry.yaml is as follows:
'/TEST/KAT7_200_7_1.tar.gz':
    'type': 'google'
    'file_id': '1wtAoYX157fnNYQaSwZJbppgQcbp8ttw2'
    'hash': 'a1abca2896a3682485193eb72f9174a03ec88815c617a1cef8ceb907117e44f8'
    'description': 'KAT7 measurement set with n_time=200, n_ant=7 and n_chan=1.'

Where the file_id is from the url of the MS share link, and the hash is calculated in my terminal using as suggested:
~$ sha256sum KAT7_200_7_1.tar.gz
a1abca2896a3682485193eb72f9174a03ec88815c617a1cef8ceb907117e44f8

If I run the command-line packratt for this measurement set, the following ValueError is raised:
~$ packratt get /TEST/KAT7_200_7_1.tar.gz
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): drive.google.com:443
DEBUG:urllib3.connectionpool:https://drive.google.com:443 "GET /uc?export=download&id=1wtAoYX157fnNYQaSwZJbppgQcbp8ttw2 HTTP/1.1" 302 None
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): accounts.google.com:443
DEBUG:urllib3.connectionpool:https://accounts.google.com:443 "GET /ServiceLogin?service=wise&passive=1209600&continue=https://drive.google.com/uc?export%3Ddownload%26id%3D1wtAoYX157fnNYQaSwZJbppgQcbp8ttw2&followup=https://drive.google.com/uc?export%3Ddownload%26id%3D1wtAoYX157fnNYQaSwZJbppgQcbp8ttw2&ltmpl=drive HTTP/1.1" 200 None
Traceback (most recent call last):
  File "/home/brian/Code/brianWelman/final/bin/packratt", line 11, in <module>
    sys.exit(run())
  File "/home/brian/Code/brianWelman/final/lib/python3.6/site-packages/packratt/application.py", line 46, in run
    return _run(sys.argv[1:])
  File "/home/brian/Code/brianWelman/final/lib/python3.6/site-packages/packratt/application.py", line 38, in _run
    commands(args.command, args)
  File "/home/brian/Code/brianWelman/final/lib/python3.6/site-packages/packratt/dispatch.py", line 19, in __call__
    return fn(*args, **kwargs)
  File "/home/brian/Code/brianWelman/final/lib/python3.6/site-packages/packratt/application.py", line 18, in get
    return get(args.key, args.destination)
  File "/home/brian/Code/brianWelman/final/lib/python3.6/site-packages/packratt/interface.py", line 62, in get
    % (sha256_hash, entry['hash']))
ValueError: sha256hash does not agree. 42ddaa7f99fef90ebdda747b497dc7a912ec19d030700e25f727b0300a4decc8 vs a1abca2896a3682485193eb72f9174a03ec88815c617a1cef8ceb907117e44f8

where it seems restricted access folders/files produce a different sha256 hash:
42ddaa7f99fef90ebdda747b497dc7a912ec19d030700e25f727b0300a4decc8

but can be fixed by setting the folder and its contents to public. The issue comes with trying to run the same packratt command after fixing the drive permissions.
~$ packratt get /TEST/KAT7_200_7_1.tar.gz
Traceback (most recent call last):
  File "/usr/lib/python3.6/shutil.py", line 916, in _unpack_tarfile
    tarobj = tarfile.open(filename)
  File "/usr/lib/python3.6/tarfile.py", line 1578, in open
    raise ReadError("file could not be opened successfully")
tarfile.ReadError: file could not be opened successfully

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/brian/Code/brianWelman/final/bin/packratt", line 11, in <module>
    sys.exit(run())
  File "/home/brian/Code/brianWelman/final/lib/python3.6/site-packages/packratt/application.py", line 46, in run
    return _run(sys.argv[1:])
  File "/home/brian/Code/brianWelman/final/lib/python3.6/site-packages/packratt/application.py", line 38, in _run
    commands(args.command, args)
  File "/home/brian/Code/brianWelman/final/lib/python3.6/site-packages/packratt/dispatch.py", line 19, in __call__
    return fn(*args, **kwargs)
  File "/home/brian/Code/brianWelman/final/lib/python3.6/site-packages/packratt/application.py", line 18, in get
    return get(args.key, args.destination)
  File "/home/brian/Code/brianWelman/final/lib/python3.6/site-packages/packratt/interface.py", line 64, in get
    shutil.unpack_archive(str(filename), destination)
  File "/usr/lib/python3.6/shutil.py", line 983, in unpack_archive
    func(filename, extract_dir, **kwargs)
  File "/usr/lib/python3.6/shutil.py", line 919, in _unpack_tarfile
    "%s is not a compressed or uncompressed tar file" % filename)
shutil.ReadError: /home/brian/.cache/packratt/f9/7f/9f/ce709847c2bf044ae813adede0002f26ee98cfd9de6ca70c11/KAT7_200_7_1.tar.gz is not a compressed or uncompressed tar file

The only way around this is to remove the cached file:
rm /home/brian/.cache/packratt/f9/7f/9f/ce709847c2bf044ae813adede0002f26ee98cfd9de6ca70c11/KAT7_200_7_1.tar.gz

Then packratt get command is back to normal. Looking at the get function in interface.py, my assumption is that the problem occurs in lines 63 to 67:
def get(key, destination, entry=None):
.
.
.
# Download to the destination
        sha256_hash = downloaders(entry['type'], key, entry)

        if not sha256_hash == entry['hash']:
            raise ValueError("sha256hash does not agree. %s vs %s"
                             % (sha256_hash, entry['hash']))

The file is downloaded and stored in .cache with the incorrect hash since the drive permissions changed the resulting hash value. Now even if I change permissions on google drive, packratt always checks for the file in .cache and will always throw the ValueError until the cached version is removed to correct the hash-key.
Side note: Is it intended functionality to still keep the downloaded files in .cache even if the hash check fails?

Thanks for the in-depth investigation @brianwelman2. Would you consider submitting a PR to fix?

I think that the corrupted download should be removed.

I'm not certain how the cache python api works though, but I can have a go.
On Wed, 17 Feb 2021, 09:29 Simon Perkins<EMAIL_ADDRESS>wrote:

I think that the corrupted download should be removed if the hash check
fails
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ratt-ru/packratt/issues/18#issuecomment-780363921,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE5OS5BSDG66TKPHM43RKCDS7NV5BANCNFSM4XWPJCAQ
.


If primary DNS server fails, secondaries servers are not used

./despf.sh hotmail.comwill trigger this query
 dig +time=2 +short -t TXT hotmail.com @ns4.msft.net. ns2.msft.net. ns1.msft.net. ns3.msft.net.

Ideas:

Parse SOA record for primary and then query for NS records - badly configured "hidden primary" architectures
simple iterate by all NS servers and break on success.

Thanks for report! I think it's a very good idea to iterate and break. Working on it right now (on the drill branch).


No Intellisense on beta7-12274

Using VS-Code and when using beta7-12274 there is no Intellisense.  There is Intellisense for beta5.

Possibly related to https://github.com/aspnet/Announcements/issues/44
Are you only seeing this issue with EF APIs? Or is IntelliSense missing for other libraries too?

I do not believe so - I see the initial Intellisense as I type but as soon as I hit the "." and any "." after there is no Intellisense anywhere until I hit ctrl-space.  I am thinking that this might be a Visual Studio Code issue.  What are your thoughts?  I am thinking close the ticket.
BTW - I am running beta7-12302 and the same is happening.

Hey,
Yes I agree, this doesn't appear to be an EF issue. We suspect it is a result of the change discussed in https://github.com/aspnet/Announcements/issues/44. I guess VS Code probably needs to react to this, so opening an issue in their tracker is probably the way to go.
~Rowan


[Bug] Edit Transaction on Right Click feature not working

I have the Edit Transaction function enabled in toolkit, but whenever I click on transactions in the current setup with Chrome based browsers (Chrome, Brave), I get the browser menu rather than the Edit Transaction menu.

Entire right-click popup menu not working. Mac OSX 12.4. Chrome 103.0.5060.114 (Official Build) (arm64)

+1

Edit Transaction on Right Click not working.  This is pretty common and occurs sporadically.  Mac OS 12.4

That’s not really a helpful answer though. As a software developer, nothing really happens sporadically. It has been working fine in recent weeks and since the most recent collection of fixes after the YNAB team essentially broke the entire Toolkit a few weeks back.
…

@banksjim my impression is that @Sarcasticon is just providing a confirmation of the same bug. They are not attempting to provide an answer.
It looks like @jonnyasmar has published a pull request with a potential fix.

Hey @crytting the fix for this should be in our current release! If you notice the issue still exists and you're definitely running the newest version of the toolkit, please reopen! Thanks!
Please note, all browser can take up to an hour to provide updates to all users. You can force an update if it's available for you by going to chrome://extensions and clicking the "Update" button. Firefox users can go to about:addons, click the setting cog, and click "Check for updates...".


remote_rpi_gpio

Home Assistant release with the issue:

0.94.1
Last working Home Assistant release (if known):
N/A
Operating environment (Hass.io/Docker/Windows/etc.):

Hass.io
Component/platform:

Description of problem:
I try to set up new remote rpi integration with no success.
That is how the log looks like:

Error while setting up platform remote_rpi_gpio
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 126, in _async_setup_platform
SLOW_SETUP_MAX_WAIT)
File "/usr/local/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
return fut.result()
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/src/homeassistant/homeassistant/components/remote_rpi_gpio/switch.py", line 40, in setup_platform
address, port, invert_logic)
File "/usr/src/homeassistant/homeassistant/components/remote_rpi_gpio/init.py", line 24, in setup_output
from gpiozero import LED
File "/usr/local/lib/python3.7/site-packages/gpiozero/init.py", line 22, in
from .devices import (
File "/usr/local/lib/python3.7/site-packages/gpiozero/devices.py", line 486, in
Device.pin_factory = _default_pin_factory()
File "/usr/local/lib/python3.7/site-packages/gpiozero/devices.py", line 453, in _default_pin_factory
raise BadPinFactory('Unable to load any default pin factory!')
gpiozero.exc.BadPinFactory: Unable to load any default pin factory!

Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):
switch:
  - platform: remote_rpi_gpio
    host: <IP_ADDRESS>
    ports:
      12: REMOTE - Test

Traceback (if applicable):

Additional information:
I did enabled remote GPIO at the raspbian config.

Not sure how to resolve it, but I believe it's due to the environment variable GPIOZERO_PIN_FACTORY - it needs to be set to pigpio.
I wasn't able to set that environment variable myself, but I reproduced this issue on a Windows machine and setting that env-var worked.

I have this working with hassio on a RPi3B+ but get the same error on my Ubuntu/Docker system, both fresh installs of 0.94.3.

hmm, this issue is still not resolved?
installed a fresh pi 3+ today, i also have that BadPinFactory error message :(
how can i resolve it? running Hassos 2.12 here

here is a workaround, just load it as a custom, and changed the requirement, so it wll download gpiozero 1.5.1 , instead of version 1.4.1
here more info :
https://github.com/home-assistant/home-assistant/issues/25944#issuecomment-537592781


Remove unique.rs

I was looking through some old issues and from #5 it seems that unique.rs only exists, because it was unstable many years ago. I assume, it is not unstable anymore.

Actually it still is nightly only: http://web.mit.edu/rust-lang_v1.25/arch/amd64_ubuntu1404/share/doc/rust/html/std/ptr/struct.Unique.html

Unique has been removed since a lot of time, I think NonNull should work perfectly https://doc.rust-lang.org/std/ptr/struct.NonNull.html


Aligning readme with current config

Eventually, to be added lazy commands if pull request will be accepted.

Probably I am a nitpicker, but for people reading readme in Vim/Emacs an additional space after ###### would increase readability.
#####Diff bez plusów i minusów -> ##### Diff bez plusów i minusów

I've fixed that


Fixes

3 fixes:

aria-current problem https://validator.w3.org/nu/?doc=https%3A%2F%2Fks-bootshop.myshopify.com%2F
triple quote in an ID declaration in addresses.liquid
if someone created a navigation dropdown and didn't explicitly create the top-level link with a href attribute of # all dropdowns on the website stopped working (including the cart dropdown), now if a dropdown is present the top level link is forced to have href="#"

Thank you, I'm glad you are enjoying this theme.


CLOUDP-192880: Make clean CLI tool

Move various clean up scripts as a single clean tool under a separate module.
All Submissions:

[X] Have you signed our CLA?
~Put closes #XXXX in your comment to auto-close the issue that your PR fixes (if there is one)~.
~Update docs/release-notes/release-notes.md if your changes should be included in the release notes for the next release~.

https://github.com/mongodb/mongodb-atlas-kubernetes/actions/runs/6378832472/job/17310166792
Suspiciously fast and silent for VPCs

https://github.com/mongodb/mongodb-atlas-kubernetes/actions/runs/6378950010/job/17310488624
All seem to have completed OK


node08: openssl fixes and modernisation

If we have to maintain old Node versions, at least this way they aren't a nightmare in difference from Homebrew/homebrew and they are secure compared to the bundled OpenSSL versions, or in some cases, linking into the system OpenSSL.

Any objections on this @jacknagel @mikemcquaid? It's recent enough to be tugged into line with the Homebrew/homebrew formula, but it's a pretty drastic rewrite.
It'll mean less trouble going forwards, as the 08 formula was missing a whole bunch of important changes we'd pushed to Homebrew/homebrew in the last 6+ months. It also enforces OpenSSL for obvious reasons here. Just thought given it was a more major change than just adding OpenSSL dep and revisioning I'd run it past you both.
There's nothing too radical as such. It's essentially the Homebrew/Homebrew formula, just with an old Node version and an enforced OpenSSL dep.

:+1: with me if the build is green and you think it will save us effort longer-term.

Yeah, just means we can keep it in relative sync with the Homebrew/Homebrew formula going forwards rather than having it so specialised and difficult to maintain. The Node formula in Homebrew/homebrew is actually relatively stable thankfully, so backporting those changes should save some work going forwards. Have merged it in.


enh: Allow Only OAuth Signup/Signin

Describe the solution you'd like
With the ability to sign up/in now with OAuth2, the option to only allow OAuth2 and remove the default email and password fields would be a great feature. This could be accomplished by adding a new optional environment variable to "hide" or remove the default email and password fields. The optional environment variable would have a default value of false (not hidden) and only used when ENABLE_OAUTH_SIGNUP=true.
Describe alternatives you've considered
Able to disable signups with environment variables but this does not remove the username and password fields resulting in a undesired cluttering when only wanting to use OAuth for logins.

PR welcome!

@Louden7 I care about this too! If it's ok with you I can put in a PR for it. I have a branch at https://github.com/Seth-Rothschild/open-webui/tree/hide-password-login that adds an environment variable ENABLE_PASSWORD_LOGIN which defaults to true and hides the password form when it's switched to false.

Has there been any progress in merging this to the main branch.

Maybe you should try it：
https://github.com/812781385/ollama-webUI

Started working on an implementation. Looks to be easy enough to set an environment variable that corresponds to a html element style variable and setting it to display: none;.
Taking a bit more time than expected however because Im unfamiliar with all the connections between the backend and frontend with the env vars.

Closing with the recent merge #4068.


Refactor embedded expectations

Will need to manually reimport all guides in production, since it changes DB model in a non-backward compatible way


bevy_ui backend does not work with TargetCamera

Here's a minimal reproduction code. It's a combination of 2d/pixel_grid_snap.rs and ui/button.rs from the official examples:

Expand
use bevy::{
    prelude::*,
    render::{
        camera::RenderTarget,
        render_resource::{
            Extent3d, TextureDescriptor, TextureDimension, TextureFormat, TextureUsages,
        },
        view::RenderLayers,
    },
    window::WindowResized,
};
use bevy_mod_picking::prelude::*;

/// In-game resolution width.
const RES_WIDTH: u32 = 160;

/// In-game resolution height.
const RES_HEIGHT: u32 = 90;

/// Default render layers for pixel-perfect rendering.
/// You can skip adding this component, as this is the default.
const PIXEL_PERFECT_LAYERS: RenderLayers = RenderLayers::layer(0);

/// Render layers for high-resolution rendering.
const HIGH_RES_LAYERS: RenderLayers = RenderLayers::layer(1);

fn main() {
    App::new()
        .add_plugins(DefaultPlugins.set(ImagePlugin::default_nearest()))
        .add_plugins(DefaultPickingPlugins)
        .insert_resource(Msaa::Off)
        .insert_resource(DebugPickingMode::Normal)
        .add_systems(Startup, (setup_camera, setup_ui).chain())
        .add_systems(Update, fit_canvas)
        .run();
}

/// Low-resolution texture that contains the pixel-perfect world.
/// Canvas itself is rendered to the high-resolution world.
#[derive(Component)]
struct Canvas;

/// Camera that renders the pixel-perfect world to the [`Canvas`].
#[derive(Component)]
struct InGameCamera;

/// Camera that renders the [`Canvas`] (and other graphics on [`HIGH_RES_LAYERS`]) to the screen.
#[derive(Component)]
struct OuterCamera;

/// Our button
#[derive(Component)]
struct MyButton;

fn setup_ui(mut commands: Commands, query: Query<Entity, With<InGameCamera>>) {
    commands
        .spawn((
            NodeBundle {
                style: Style {
                    width: Val::Percent(100.0),
                    height: Val::Percent(100.0),
                    align_items: AlignItems::Center,
                    justify_content: JustifyContent::Center,
                    ..default()
                },
                ..default()
            },
            Pickable::IGNORE,
            TargetCamera(query.single()),
        ))
        .with_children(|parent| {
            parent
                .spawn((
                    MyButton,
                    ButtonBundle {
                        style: Style {
                            width: Val::Px(50.0),
                            height: Val::Px(20.0),
                            border: UiRect::all(Val::Px(2.0)),
                            // horizontally center child text
                            justify_content: JustifyContent::Center,
                            // vertically center child text
                            align_items: AlignItems::Center,
                            ..default()
                        },
                        border_color: BorderColor(Color::BLACK),
                        background_color: BackgroundColor(Color::rgb(0.15, 0.15, 0.15)),
                        ..default()
                    },
                    On::<Pointer<Click>>::run(|| info!("pressed!")),
                    On::<Pointer<Over>>::run(|| info!("hovered!")),
                ))
                .with_children(|parent| {
                    parent.spawn((
                        TextBundle::from_section(
                            "Button",
                            TextStyle {
                                font_size: 10.0,
                                color: Color::rgb(0.9, 0.9, 0.9),
                                ..default()
                            },
                        ),
                        Pickable::IGNORE,
                    ));
                });
        });
}

fn setup_camera(mut commands: Commands, mut images: ResMut<Assets<Image>>) {
    let canvas_size = Extent3d {
        width: RES_WIDTH,
        height: RES_HEIGHT,
        ..default()
    };

    // this Image serves as a canvas representing the low-resolution game screen
    let mut canvas = Image {
        texture_descriptor: TextureDescriptor {
            label: None,
            size: canvas_size,
            dimension: TextureDimension::D2,
            format: TextureFormat::Bgra8UnormSrgb,
            mip_level_count: 1,
            sample_count: 1,
            usage: TextureUsages::TEXTURE_BINDING
                | TextureUsages::COPY_DST
                | TextureUsages::RENDER_ATTACHMENT,
            view_formats: &[],
        },
        ..default()
    };

    // fill image.data with zeroes
    canvas.resize(canvas_size);

    let image_handle = images.add(canvas);

    // this camera renders whatever is on `PIXEL_PERFECT_LAYERS` to the canvas
    commands.spawn((
        Camera2dBundle {
            camera: Camera {
                // render before the "main pass" camera
                order: -1,
                target: RenderTarget::Image(image_handle.clone()),
                ..default()
            },
            ..default()
        },
        InGameCamera,
        PIXEL_PERFECT_LAYERS,
    ));

    // spawn the canvas
    commands.spawn((
        SpriteBundle {
            texture: image_handle,
            ..default()
        },
        Canvas,
        Pickable::IGNORE,
        HIGH_RES_LAYERS,
    ));

    // the "outer" camera renders whatever is on `HIGH_RES_LAYERS` to the screen.
    // here, the canvas and one of the sample sprites will be rendered by this camera
    commands.spawn((Camera2dBundle::default(), OuterCamera, HIGH_RES_LAYERS));
}

fn fit_canvas(
    mut resize_events: EventReader<WindowResized>,
    mut projections: Query<&mut OrthographicProjection, With<OuterCamera>>,
) {
    for event in resize_events.read() {
        let h_scale = event.width / RES_WIDTH as f32;
        let v_scale = event.height / RES_HEIGHT as f32;
        let mut projection = projections.single_mut();
        projection.scale = 1. / h_scale.min(v_scale).round();
    }
}

I tried to read through the UI backend and I think this is the problem. We have two cameras:
commands.spawn((
    Camera2dBundle {
        camera: Camera {
            order: -1,
            target: RenderTarget::Image(image_handle.clone()),
            ..default()
        },
        ..default()
    },
    InGameCamera,
    PIXEL_PERFECT_LAYERS,
));

commands.spawn((Camera2dBundle::default(), OuterCamera, HIGH_RES_LAYERS));

The first one targets an image handle, while the second one targets the main window. The UI node is associated with the first camera, while the main pointer is associated with the second camera.
The bevy_ui backend looks for pointers associated with the camera that the UI node is rendering to, before testing if those pointers intersects with the UI node. So our UI here is always skipped because our UI camera has no associated pointers.
It seems that the sprite backend does not have this problem. I think it's because the sprite backend does not care to which camera the sprite is getting rendered to.
Do you think that there is a general way to solve this problem upstream? Some pointers would be appreciated.

I am also having the same issue. Using the same exact code I cannot get any pointers to work. When using the noisy debugger, It's obvious that It sees the Pixel Perfect camera as a large texture and not an actual ui element. So the target Camera is the outer camera. Not sure how to fix.

If you are trying to pick into a texture, then you need to add a pointer to that render target. https://github.com/aevyrie/bevy_mod_picking/pull/327

So in that example they aren't using raycasting. Is there not a way to simply attach the current pointer to the original in game camera? As opposed to translating the positions of the mouse to the render texture?

That won't work. The pointer's position on the window is not the same as the pointer's position on the lower resolution render target. For example, if the window is 1920x1080, and you put the pointer in the bottom right, the pointer's position on the low resolution target is not (1920,1080), it depends on the size of that render target and its position on screen. If it is half resolution, the position 1920, 1080 on the window would map to 960, 540 on the half resolution render target. However, this ignores that the main camera could move around such that the render target does not fill the window, in which case you also need to compute this offset. You could hardcode this and assume the render target always fills the screen and has some fixed resolution ratio, but it might be brittle.

Thank you for the write up, that makes sense. Perhaps rendering to a texture isn’t the greatest method for achieving this? Maybe there are better methods for achieving pixel perfect rendering?

I don't think there is anything wrong with this approach, it's just not immediately obvious how to handle this in a robust way. Considering this is 2D-only, it shouldn't be too hard though. All you need is the position of the pointer inside the texture. If it is in bevy_ui, I think it already computes that for you. If you are doing this manually with two 2d cameras, that also shouldn't be too hard. The only steps you need to follow are:

Compute the position of the pointer in the texture quad

This is the only tricky part. In 2d, this is just comparing the location of the two camera's viewports, and mapping the pointer from the outer camera's viewport to the inner camera's viewport. If you are showing this texture in bevy_ui, you should be able to just use https://docs.rs/bevy/latest/bevy/ui/struct.RelativeCursorPosition.html
If your render-to-texture is in 3d space, you would need to do a raycast.

Send an InputMove event for that pointer, with the quad's RenderTarget and the position computed in step 1

This is very helpful, I appreciate you taking the time to do this! Hopefully this will help others as well.


KDE apps get updated daily

KDE applications get updated daily - kate, okular and kdeconnect - even when there's technically no new release. KDE Binary Factory builds the release version of the apps daily, for some reason. Personally, I think the daily update brings in a lot of bloat.

We can't move it to Versions bucket because it's not a nightly
There's no permalink for the latest successful build
Artifact for each day gets deleted in 72 hours

I don't know how to fix this. @issaclin32 thoughts?

https://binary-factory.kde.org/view/Windows 64-bit/job/kdeconnect-kde_Release_win64/861/artifact/
One release lasts for 3 days, i think it should be treated as nightly.

Nightly builds are different, see https://binary-factory.kde.org/view/Windows 64-bit/job/kdeconnect-kde_Nightly_win64

Both versions nightly(#1054)[1] & release21.12.1(#865)[2] are build from same git commit ie 2cebf5c35feaac11f66b15b2d8812b4bb1bcc8d2
[1] https://binary-factory.kde.org/view/Windows 64-bit/job/kdeconnect-kde_Nightly_win64/1054/
[2] https://binary-factory.kde.org/view/Windows 64-bit/job/kdeconnect-kde_Release_win64/865/
As for why they do this, I have no idea, onky a kde maintainer would know.

Also the builds are released everyday, even if there is no change, https://github.com/KDE/kdeconnect-kde/commits/master

Ah, I see. Thanks for the detailed analysis. Really strange CI/CD setup they've got there.
I guess the best option would to move them to Versions, for now.

I guess the best option would to move them to Versions, for now.

I guess so.
I cannot think of any simple solution to this, unless we can find a mirror/reliable third-party site for the files.


[1.20.4] add the chicken egg localization

Hi!CreeperHost,I'm a member of the VM-Chinese-translate-group.I want to add the chicken egg localization,just modify some code.
The code in the net/creeperhost/chickens/item/ItemChickenEgg.java -------getName() method
String name = this.getType(itemStack).getEntityName().replace("_", " ") + " egg";
String first = name.substring(0, 1).toUpperCase();
String formatted = first + name.substring(1);
return Component.literal(formatted);

modify to
 return Component.translatable("entity.chickens."+getType(itemStack).getEntityName()).append(Component.translatable("item.chickens.chicken_egg.egg"));

And add the
"item.chickens.chicken_egg.egg" : " egg"

To en_us.json
I would be grateful if you allow me to submit a PR.

Hardcode that can't be translated doesn't help mod propagation, and as a translator I'd like to improve this.


"xFormers not available" error when running the sample code

import cv2
import torch
from depth_anything_v2.dpt import DepthAnythingV2
get error!
/usr/bin/python3 /home/dp/Depth-Anything-V2/test.py
xFormers not available
xFormers not available

I don't know how to solve this problem.

Indeed, this warning will not affect the running of the sample code. You can also install the xformers library to avoid this warning.

Hi @LiheYoung !, I'm wondering what's the difference w/wo xformers? Speed or what else?

I'm wondering what's the difference w/wo xformers?

It can help a lot if you run at higher input image sizes, but only works with cuda.
Memory usage drops significantly and if you use float16, there's a significant speed up as well. Here's a results comparison for depth-anything v1 (should be the same for v2).


Add "Good first issue" label

It would be nice to add this label to be able easily find a way to contribute for newcomers 👶

Sure thing. We will add the label if we see such issues.
If you look for one:
https://github.com/cosmos/voyager/issues/1321

@faboweb Thanks!


First web page created on Aug 6, 1991

@coolbrg Sir, Fixed #1.

@gorkhalitechie The solution looks good. Go ahead with the next assignment. 👍


Added autoDetectWindowHeight and autoScrollBodyContent to MuiDialog

thanks alot for PR , but @elacin  is already working on MUI upgrade may be it will redundant!

Yeah, I've been working with him on getting the elemental-ui as well. Please close the pull request


Enable build cache and HMR

Enable build cache and HMR.
https://issues.redhat.com/browse/COST-3220

@dlabrecq ok I was able to get it working. The issues is with direct default exports. See: https://github.com/pmmmwh/react-refresh-webpack-plugin/blob/main/docs/TROUBLESHOOTING.md#edits-always-lead-to-full-reload
This diff made it work for me:
diff --git a/src/app.tsx b/src/app.tsx
index aa66f29e..61526146 100644
--- a/src/app.tsx
+++ b/src/app.tsx
@@ -13,7 +13,7 @@ export interface AppOwnProps {
   basename: string;
 }

-interface AppStateProps {}
+interface AppStateProps { }

 interface AppDispatchProps {
   history: any;
@@ -88,4 +88,8 @@ const mapStateToProps = createMapStateToProps<AppOwnProps, AppStateProps>((state

 const mapDispatchToProps: AppDispatchProps = { history };

-export default compose<React.ComponentType<AppOwnProps>>(withRouter, connect(mapStateToProps, mapDispatchToProps))(App);
+const ComposedApp = compose<React.ComponentType<AppOwnProps>>(
+  withRouter,
+  connect(mapStateToProps, mapDispatchToProps)
+)(App);
+export default ComposedApp;
diff --git a/src/appEntry.tsx b/src/appEntry.tsx
index 76f63d39..bbdeca52 100644
--- a/src/appEntry.tsx
+++ b/src/appEntry.tsx
@@ -29,7 +29,7 @@ const store = configureStore({
   // },
 });

-export default () => {
+const AppEntry = () => {
   const basename = getBaseName(window.location.pathname);
   const locale = getLocale();

@@ -46,3 +46,5 @@ export default () => {
     </div>
   );
 };
+
+export default AppEntry;

It is possible that making changes to some nested components that follow the same pattern might cause a full refresh. But making sure the function is not directly exported as a default module will fix the potential issue.

Codecov Report

Merging #2656 (311c9bf) into main (413e764) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 311c9bf differs from pull request most recent head b75de5c. Consider uploading reports for the commit b75de5c to get more accurate results

@@           Coverage Diff            @@
##             main    #2656    +/-   ##
========================================
  Coverage   65.70%   65.70%
========================================
  Files         451      451
  Lines        8918     8918
  Branches     2081     1937   -144
========================================
  Hits         5860     5860
  Misses       3055     3055
  Partials        3        3

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 413e764...b75de5c. Read the comment docs.

Thank you for the help, Martin.
I wasn't able to see HMR working with the diffs, but created an issue to refactor our unnamed default exports.
https://issues.redhat.com/browse/COST-3224


Make localization targets incremental

These targets are not incremental: https://github.com/Microsoft/msbuild/blob/master/src/UpdateLocalizedResources.targets
We should make them incremental :)

Closing as obsolete now that we're on https://github.com/dotnet/xliff-tasks which does have incremental.


[mesheryctl] Introducing --port-forward in system dashboard

Signed-off-by: Piyush Singariya<EMAIL_ADDRESS>Description
This PR introduces the --port-forward flag to system dashboard for accessing Meshery UI via the port-forwarding method
Notes for Reviewers
Signed commits

[x] Yes, I signed my commits.

Codecov Report

Merging #5053 (d6edfe3) into master (cda183c) will decrease coverage by 7.77%.
The diff coverage is 0.84%.

@@            Coverage Diff             @@
##           master    #5053      +/-   ##
==========================================
- Coverage   31.46%   23.68%   -7.78%
==========================================
  Files          61       63       +2
  Lines        5066     5341     +275
==========================================
- Hits         1594     1265     -329
- Misses       3083     3796     +713
+ Partials      389      280     -109

Flag
Coverage Δ

gointegrationtests
?

unittests
23.68% <0.84%> (-1.23%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

mesheryctl/pkg/utils/portforward.go
0.00% <0.00%> (ø)

mesheryctl/internal/cli/root/system/dashboard.go
1.05% <2.70%> (-14.83%)
:arrow_down:

mesheryctl/internal/cli/root/system/start.go
1.89% <0.00%> (-54.84%)
:arrow_down:

mesheryctl/internal/cli/root/system/restart.go
2.50% <0.00%> (-47.50%)
:arrow_down:

mesheryctl/internal/cli/root/system/status.go
1.14% <0.00%> (-43.68%)
:arrow_down:

mesheryctl/internal/cli/root/system/update.go
1.05% <0.00%> (-34.74%)
:arrow_down:

mesheryctl/internal/cli/root/system/check.go
1.03% <0.00%> (-23.03%)
:arrow_down:

mesheryctl/internal/cli/root/system/stop.go
2.56% <0.00%> (-22.23%)
:arrow_down:

mesheryctl/internal/cli/root/system/logs.go
3.29% <0.00%> (-20.88%)
:arrow_down:

... and 3 more

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 cda183c...d6edfe3. Read the comment docs.

A merge conflict has arisen.

@piyushsingariya outside of this merge conflict, is the functionality ready for review and testing?

@piyushsingariya outside of this merge conflict, is the functionality ready for review and testing?

yes it is.

@alphaX86, would you like to give this a review and a test of its functionality?
@gr455 ?

@alphaX86, would you like to give this a review and a test of its functionality?
@gr455 ?

I'll do it 👍

@alphaX86, would you like to give this a review and a test of its functionality?
@gr455 ?

Sure!

Scenario: Meshery Server Not Running
Issue: Poor UX
Scenario Status: ❌
Output:
$ mesheryctl system dashboard
Error: services "meshery" not found

@leecalcote in last case you mentioned it's definitely port-forwarding, if something is already using the defined port it would have resulted in similar output as @alphaX86 mentioned in his review.

For first scenario, it returned as Meshery server not running. Please start Meshery and not service not found... Maybe it differs among users?

@piyushsingariya, port 9081 was already used on my system. The port-forwarding command should have resulted in a port conflict, but didn't.

hey @piyushsingariya please let's discuss this PR on the dev call today.

Folks this PR also contains changes for https://layer5io.slack.com/archives/C0130BQ4L3T/p1645558249865859

Suggested verbiage on successful forwarding:
Forwarding localhost:34301 —> <IP_ADDRESS>:32681

Let's get this merged?


Created instrument addon ethernet protocol listener vi

[x] This contribution adheres to CONTRIBUTING.md.

TODO: Check the above box with an 'x' indicating you've read and followed CONTRIBUTING.md.
What does this Pull Request accomplish?
Added a new ListenerVi.vi along with Listener Class and methods which facilitates the testing of the protocols defined under Protocols.lvlib
Why should this Pull Request be merged?
Adds the ListenerVi.vi with the necessary support files to the project
What testing has been done?
All tests run locally passed.

Rename this virtual folder to Listener:

This VI can be deleted, it is just a plain wrapper over another call:

There shouldn't be an "AK?" input to any of these VIs, that information can be extracted from the Protocol object being sent in. Another argument for this is that there's no "AK UDP" implementation, that combination of parameters would be invalid.

Protocols.lvlib should not be in the Tests virtual folder:

Rename "Network Operation" to "Execute Network Operation".

Rename "Close Ref" to "Close Reference" and capitalize all words for "Set protocol data" -> "Set Protocol Data"

Rename "Protocol Ctl.ctl" to just "Protocol.ctl"

Also regarding naming: instead of TCP IP and TCP_IP used interchangeably, standardize on TCP in all your usages.

Fix the node covering the structure here:

Clean up the error wire in all your VIs.

Rename this virtual folder to Listener:
![image](https://user-images.githubusercontent.com/61490253/78673779-49430c80-78eb-11ea-9fc7-a24c468ac99f.png

Closed accidentally.


API to collect Extra Data from Wasm plugins and custom transforms

Describe the feature
I think it is worth the effort. I'll work on this
Babel plugin or link to the feature description
No response
Additional context
No response

cc @dferber90 for visibility


Jax multi-gpu randomly hangs forever

Discussed in https://github.com/google/jax/discussions/10763

Originally posted by jrabary May 19, 2022
Hi,
We are facing a problem where a training and validation code based on jax/flax hangs randomly on a multi-gpu host.
Using a single GPU is working correctly but once we add multi-gpu support it hangs in an unpredictable way.
The GPUs usage is at 0% for all GPU but the CPU is used.
What could be the problem ?

After locally upgrading NCCL to 2.12.12 the repro hasn't deadlocked yet for me on 8xV100 (...of course that doesn't mean it won't deadlock, but it's encouraging.) I'm using the repro from https://github.com/google/jax/discussions/10763#discussioncomment-2812199
If you'd like to try this yourself, then you can either install the community-authored Conda build of JAX, which I believe uses its own copy of NCCL, or you can build jaxlib from source using your locally-installed copy of NCCL instead of its own vendored copy, like this:

Install CUDA, CuDNN and NCCL, including the development headers, etc.
Build jaxlib from source, passing TF_NCCL_VERSION matching your installed NCCL version:TF_NCCL_VERSION=2.12.12 python build/build.py --enable_cuda

Install the newly built jaxlib (and you'll probably need to install jax from your source tree as well so the jax and jaxlib versions are compatible).
Profit?

(I'm personally trying with XLA_FLAGS=--xla_gpu_enable_async_all_reduce=false just to rule that out as a problem, but that's probably not needed.)
A NCCL 2.12.12 upgrade is already in progress although it's currently blocked on some unrelated test breakage.

I have made some observations that may help to solve this issue. In my code, it looks like the hang appears when I switch more often between the train_step and eval_step. I have a code that hangs approximately after the same number of steps.
In the first version of this code, my evaluation dataset was a finite tf.Dataset so I had to create the data iterator before running the evaluation step, every time.
Then, I changed to an infinite dataset and create the evaluation data iteration, only once, before the training and evaluation loop. The process runs to completion.
I don't know whether it is a luck or really the issue but I'm running more experiments to see if it repetable.

@hawkinsp Is there a (official) docker image that we can use to build jax locally ?

@jrabary commented on 2022年6月4日 GMT+8 16:04:

I have made some observations that may help to solve this issue. In my code, it looks like the hang appears when I switch more often between the train_step and eval_step. I have a code that hangs approximately after the same number of steps.
In the first version of this code, my evaluation dataset was a finite tf.Dataset so I had to create the data iterator before running the evaluation step, every time.
Then, I changed to an infinite dataset and create the evaluation data iteration, only once, before the training and evaluation loop. The process runs to completion.
I don't know whether it is a luck or really the issue but I'm running more experiments to see if it repetable.

Well, I used TensorFlow data pipeline to load data in my experiments. And I always create two infinite datasets only once (one for training and one for evaluation). But my training script always runs into this bug after several hours. I also encountered this bug when using a self-made data loader (written with threading.Thread in Python). So I think it's not TensorFlow data's matter.

I left the repro running overnight and it's still going well. Given that it used to deadlock with 10s of minutes on 8xV100 I'm now reasonable confident it has fixed the problem.
Here's a TF fork with a NCCL upgrade (courtesy of the engineer who is doing that upgrade; I didn't do the work here):
https://github.com/hawkinsp/tensorflow/tree/nccl
You should be able to check out that branch/fork of TF, together with JAX and build a jaxlib with an updated NCCL like this:
python build/build.py --bazel_options=--override_repository=org_tensorflow=/path/to/the/nccl/fork/of/tensorflow  --enable_cuda

We don't have a docker image for builds that's easy to use unfortunately.

@hawkinsp To make sure I understand. Should I first build this TF fork, install it and then build Jax ?

Finally works. I forgot to checkout the mccl branch.

Got the following error after the build
AttributeError: module 'jaxlib.gpu_linalg' has no attribute 'rocm_lu_pivots_to_permutation'

@hawkinsp Any idea ?

Experiencing the same issue. The issue is happening with compute instances with 8xV100 (SXM2) GPUs. But not with 2xV100 (PCIE) or 4xV100 (PCIE) instances.

Experiencing the same issue. The issue is happening with compute instances with 8xV100 (SXM2) GPUs. But not with 2xV100 (PCIE) or 4xV100 (PCIE) instances.

@hawkinsp we faced a similar-ish behavior with t5x ... I'll tag few people later when I'm able to DM them (to know who is the most relevant person)

After locally upgrading NCCL to 2.12.12 the repro hasn't deadlocked yet for me on 8xV100 (...of course that doesn't mean it won't deadlock, but it's encouraging.) I'm using the repro from #10763 (comment)
If you'd like to try this yourself, then you can either install the community-authored Conda build of JAX, which I believe uses its own copy of NCCL, or you can build jaxlib from source using your locally-installed copy of NCCL instead of its own vendored copy, like this:

Install CUDA, CuDNN and NCCL, including the development headers, etc.
Build jaxlib from source, passing TF_NCCL_VERSION matching your installed NCCL version:TF_NCCL_VERSION=2.12.12 python build/build.py --enable_cuda

Install the newly built jaxlib (and you'll probably need to install jax from your source tree as well so the jax and jaxlib versions are compatible).
Profit?

(I'm personally trying with XLA_FLAGS=--xla_gpu_enable_async_all_reduce=false just to rule that out as a problem, but that's probably not needed.)
A NCCL 2.12.12 upgrade is already in progress although it's currently blocked on some unrelated test breakage.

is the community author build in the condo-forge channel?

Experiencing the same issue. The issue is happening with compute instances with 8xV100 (SXM2) GPUs. But not with 2xV100 (PCIE) or 4xV100 (PCIE) instances.

spoke too soon :-) It is happening with 4xV100 instance too

I left the repro running overnight and it's still going well. Given that it used to deadlock in 10s of minutes on 8xV100 I'm now reasonably confident it has fixed the problem.
Here's a TF fork with a NCCL upgrade (courtesy of the engineer who is doing that upgrade; I didn't do the work here): https://github.com/hawkinsp/tensorflow/tree/nccl
You should be able to check out that branch/fork of TF, together with JAX and build a jaxlib with an updated NCCL like this:
python build/build.py --bazel_options=--override_repository=org_tensorflow=/path/to/the/nccl/fork/of/tensorflow  --enable_cuda

We don't have a docker image for builds that's easy to use unfortunately.

this solution seems to be working so far...fingers crossed ;-)

Are you using the main branch of jax for the build ?
My build is successful but when I import jax I get a rocm_lu_pivots_to_permutation.

Are you using the main branch of jax for the build ?
My build is successful but when I import jax I get a rocm_lu_pivots_to_permutation.

yep. I used the main branch

@ibulu Are you using jax from head together with your newly-built jaxlib? Are you sure? I think the symptom you have here is a version mismatch.
At head, the function is called hip_lu_pivots_to_permutation, so my guess is your jax is too old for your jaxlib. What versions do you have installed?

@ibulu Are you using jax from head together with your newly-built jaxlib? Are you sure? I think the symptom you have here is a version mismatch.
At head, the function is called hip_lu_pivots_to_permutation, so my guess is your jax is too old for your jaxlib. What versions do you have installed?

no issues on my end @hawkinsp . The solution you suggested is working for me!

At head, the function is called hip_lu_pivots_to_permutation, so my guess is your jax is too old for your jaxlib. What versions do you have installed?

Finally managed to build it. So far, there is no hang.

Thanks for all the help.
Having trouble getting this to build. Running into this error.
nccl/enhcompat.pic.d '-frandom-seed=bazel-out/k8-opt/bin/external/nccl_archive/_objs/nccl/enhcompat.pic.o' -iquote external/nccl_arch[72/1930]
te bazel-out/k8-opt/bin/external/nccl_archive -iquote external/local_config_cuda -iquote bazel-out/k8-opt/bin/external/local_config_cuda -Ibaz
el-out/k8-opt/bin/external/nccl_archive/_virtual_includes/nccl -Ibazel-out/k8-opt/bin/external/nccl_archive/_virtual_includes/include_hdrs -Ib
azel-out/k8-opt/bin/external/local_config_cuda/cuda/_virtual_includes/cuda_headers_virtual -Ibazel-out/k8-opt/bin/external/nccl_archive/_virtu
al_includes/src_hdrs -Ibazel-out/k8-opt/bin/external/nccl_archive/_virtual_includes/wc_store_fence_wa -isystem external/local_config_cuda/cuda
 -isystem bazel-out/k8-opt/bin/external/local_config_cuda/cuda -isystem external/local_config_cuda/cuda/cuda/include -isystem bazel-out/k8-opt
/bin/external/local_config_cuda/cuda/cuda/include -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME_
_="redacted"' -fPIC -U_FORTIFY_SOURCE '-D_FORTIFY_SOURCE=1' -fstack-protector -Wall -fno-omit-frame-pointer -no-canonical-prefixes -fno-canoni
cal-system-headers -DNDEBUG -g0 -O2 -ffunction-sections -fdata-sections '-fvisibility=hidden' -Wno-sign-compare -Wno-stringop-truncation -Wno-
array-parameter '-DMLIR_PYTHON_PACKAGE_PREFIX=jaxlib.mlir.' -mavx '-std=c++17' -x cuda '-DGOOGLE_CUDA=1' '-Xcuda-fatbinary=--compress-all' '--
cuda-gpu-arch=sm_35' '--cuda-gpu-arch=sm_52' '--cuda-gpu-arch=sm_60' '--cuda-gpu-arch=sm_70' '--cuda-include-ptx=sm_80' '--cuda-gpu-arch=sm_80
' -c external/nccl_archive/src/enhcompat.cc -o bazel-out/k8-opt/bin/external/nccl_archive/_objs/nccl/enhcompat.pic.o)
# Configuration: 65ddd241d57ae07a06fa3c2dfe98cea411398d066481c7622c029211f161d012
# Execution platform: @local_execution_config_platform//:platform
nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in
a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in
a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
external/nccl_archive/src/enhcompat.cc(13): error: more than one instance of overloaded function "cudaStreamGetCaptureInfo_v2" has "C" linkage

external/nccl_archive/src/enhcompat.cc(15): error: more than one instance of overloaded function "cudaUserObjectCreate" has "C" linkage

external/nccl_archive/src/enhcompat.cc(17): error: more than one instance of overloaded function "cudaGraphRetainUserObject" has "C" linkage

external/nccl_archive/src/enhcompat.cc(19): error: more than one instance of overloaded function "cudaStreamUpdateCaptureDependencies" has "C"
 linkage

external/nccl_archive/src/enhcompat.cc(21): error: more than one instance of overloaded function "cudaGetDriverEntryPoint" has "C" linkage

5 errors detected in the compilation of "external/nccl_archive/src/enhcompat.cc".

Thanks for all the help.
Having trouble getting this to build. Running into this error.
nccl/enhcompat.pic.d '-frandom-seed=bazel-out/k8-opt/bin/external/nccl_archive/_objs/nccl/enhcompat.pic.o' -iquote external/nccl_arch[72/1930]
te bazel-out/k8-opt/bin/external/nccl_archive -iquote external/local_config_cuda -iquote bazel-out/k8-opt/bin/external/local_config_cuda -Ibaz
el-out/k8-opt/bin/external/nccl_archive/_virtual_includes/nccl -Ibazel-out/k8-opt/bin/external/nccl_archive/_virtual_includes/include_hdrs -Ib
azel-out/k8-opt/bin/external/local_config_cuda/cuda/_virtual_includes/cuda_headers_virtual -Ibazel-out/k8-opt/bin/external/nccl_archive/_virtu
al_includes/src_hdrs -Ibazel-out/k8-opt/bin/external/nccl_archive/_virtual_includes/wc_store_fence_wa -isystem external/local_config_cuda/cuda
 -isystem bazel-out/k8-opt/bin/external/local_config_cuda/cuda -isystem external/local_config_cuda/cuda/cuda/include -isystem bazel-out/k8-opt
/bin/external/local_config_cuda/cuda/cuda/include -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME_
_="redacted"' -fPIC -U_FORTIFY_SOURCE '-D_FORTIFY_SOURCE=1' -fstack-protector -Wall -fno-omit-frame-pointer -no-canonical-prefixes -fno-canoni
cal-system-headers -DNDEBUG -g0 -O2 -ffunction-sections -fdata-sections '-fvisibility=hidden' -Wno-sign-compare -Wno-stringop-truncation -Wno-
array-parameter '-DMLIR_PYTHON_PACKAGE_PREFIX=jaxlib.mlir.' -mavx '-std=c++17' -x cuda '-DGOOGLE_CUDA=1' '-Xcuda-fatbinary=--compress-all' '--
cuda-gpu-arch=sm_35' '--cuda-gpu-arch=sm_52' '--cuda-gpu-arch=sm_60' '--cuda-gpu-arch=sm_70' '--cuda-include-ptx=sm_80' '--cuda-gpu-arch=sm_80
' -c external/nccl_archive/src/enhcompat.cc -o bazel-out/k8-opt/bin/external/nccl_archive/_objs/nccl/enhcompat.pic.o)
# Configuration: 65ddd241d57ae07a06fa3c2dfe98cea411398d066481c7622c029211f161d012
# Execution platform: @local_execution_config_platform//:platform
nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in
a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in
a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
external/nccl_archive/src/enhcompat.cc(13): error: more than one instance of overloaded function "cudaStreamGetCaptureInfo_v2" has "C" linkage

external/nccl_archive/src/enhcompat.cc(15): error: more than one instance of overloaded function "cudaUserObjectCreate" has "C" linkage

external/nccl_archive/src/enhcompat.cc(17): error: more than one instance of overloaded function "cudaGraphRetainUserObject" has "C" linkage

external/nccl_archive/src/enhcompat.cc(19): error: more than one instance of overloaded function "cudaStreamUpdateCaptureDependencies" has "C"
 linkage

external/nccl_archive/src/enhcompat.cc(21): error: more than one instance of overloaded function "cudaGetDriverEntryPoint" has "C" linkage

5 errors detected in the compilation of "external/nccl_archive/src/enhcompat.cc".

had the same error...following solved the issue for me...as the error suggests, the old mccl version is still installed...adding "TF_NCCL_VERSION=2.12.12" in front of the python build/build.py .... solved the issue for me

@ibulu You're a hero. Thanks so much.
One other change we had to make was to fix this line in the jax build.
--- a/jaxlib/mlir/_mlir_libs/BUILD.bazel
+++ b/jaxlib/mlir/_mlir_libs/BUILD.bazel
-        "@org_tensorflow//tensorflow/compiler/mlir/hlo:python/MlirHloModule.cc",
+        "@org_tensorflow//tensorflow/compiler/mlir/hlo:python/MlirHloModule.cpp",

Running now :crossed_fingers:

We've released jax and jaxlib 0.3.14 which contain a new version of NCCL. To the best of my knowledge, this should fix this problem. Hope that helps!

Strangely, the new version still hangs with 16 GPUs but it works well with 8 GPUs.
Setup:
16 x A100
cudnn 8.2
cuda 11.3

@srxzr 16 GPUs in one single node or 2 nodes with 8 GPUs each ? As far as I know, the support of multi-node GPU is not working yet with Jax

@hawkinsp it seems based on @srxzr input this is not fixed?

@srxzr Could you please open a new issue with instructions on how to reproduce?
@jrabary Actually, multi-node GPU should work: the main thing that needs work to my knowledge is the documentation. The main thing you need to know is to use the jax.distributed to initialize the cluster, and then follow the usual rules for multiprocess programming in JAX (see the docs).

@hawkinsp, I may have encountered the same issue (unless there's a coding mistake I'm missing). Executing the code on a single device will run as expected. However, if n_devices > 1, I'm observing all devices will allocate memory but an inconsistent number will perform computation (as displayed via nvtop / nvidia-smi), leading to an indefinite hang.
Environment:

python: 3.8.10
driver: 515.48.07
cuda: 11.7
jax: 0.3.14

While the actual codebase is far more complex, I believe I've identified a simple repro:
def func(num_rows_per_device, num_devices, num_features):
    num_entries = num_rows_per_device * num_devices * num_features

    # often hangs
    def fn(x_):
        return jax.lax.cond(
            x_.sum() > num_entries,
            lambda: 0.,
            lambda: jnp.sum(x_**2)
        )

    # doesn't seem to hang
    # def fn(x_):
    #     return x_.sum()

    data = jnp.arange(num_entries).reshape(num_rows_per_device, num_devices, num_features).astype(jnp.float32)
    return jax.lax.map(jax.pmap(fn), data)

print(jax.jit(func, static_argnames=["num_rows_per_device", "num_devices", "num_features"])(5, 4, 2))

Thoughts?

@ntenenz Can you open a new issue for this?


feature - openstack-helm-up - using sigil env var

In the openstack-helm-up.sh, there is an export of Sigil but the var is not used.
Expected: when executing curl use the var to version the pulled version of sigil
Actual: the sigil var is not used.

@gardlt: i'm not sure this is really needed since it's on the POR to remove the sigil requirement all together for OSH. i made a comment here, and still really applies; I'd rather remove it all together if that works for you?
https://github.com/v1k0d3n/bootkube-ci/blob/master/deploy-addons/openstack-helm-up.sh#L29

no response to question, so closing issue.


Handle always not found status code

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 3 (0.0%)  changed or added relevant lines in 1 file are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-1.02%) to 33.824%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/EventListener/StateChangeRequestListener.php
0
3
0.0%

Files with Coverage Reduction
New Missed Lines
%

src/EventListener/StateChangeRequestListener.php
2
0%

Totals

Change from base Build<PHONE_NUMBER>:
-1.02%

Covered Lines:
23

Relevant Lines:
68

💛  - Coveralls


WEB-2 Start/stop node. Current node/blockchain status. Transfer tiles

With the new additions the dashboard looks like this:

While the dashboard is functional in it's current form, it's lacking a couple of features which will make the UX a lot better.
For example

We don't have a good way to send notifications in case a request fails (or succeeds)
The information is static, meaning that the mining speed and tile list will stay the same until a page refresh
If the user has a lot of tiles, it could choke the UI

Let me know if you want me to address any (or all) of those in this PR. I think that the code it's at a good point to be transformed to use a framework (it has <200 lines of code and little HTML).
I was thinking of using React (with redux I think) to do so, but I'm open to suggestions!
That's all!

Nice work @NicoSantangelo !

Feedback:

I'd set the on/off mining as a toggle and replace the informative sentence into an easy-to-read table
I also find this sentence not quite needed:

Welcome. From this page you will be able to manage your node and see your mined tiles. You can send rpc calls to the node and see the result here

As there is no more hash rate next to the Tiles title, i'd move the tile count next to it

It's not "start/stop node" but "start/stop miner"
👍

Actually, I'd set the on/off mining as a toggle and replace the informative sentence into an easy-to-read table

By a toggle you mean a native radio element or a styled toggle button like:

I also find this sentence not quite needed:

👍

As there is no more hash rate next to the Tiles title, i'd move the tile count next to it

Because we now show the

I can't find the transfer tile button

@NicoSantangelo I was thinking in that same toggle you pasted.

Could it be a cache problem?

Mmmh, tried pulling the repo, re-building the miner andning the web ui on incognito but i'm still getting this:

@martriay I managed to reproduce it by removing-refetching the branch. There was a problem with the last rebase, which left two functions with the same name on main.js. The last one on the file was outdated and overrode the newer one.
It should work now!

@NicoSantangelo it works now! But the main feedback remains:

Toggle and wording (miner instead of node)
Table instead of long sentence for mining specs

I guess this is more of an epic, but this is what I would use for this admin interface:
https://blackrockdigital.github.io/startbootstrap-sb-admin-2/pages/index.html

I've updated the missnamed node action to miner. Let me know if you want me to try to add the table and toggle @martriay suggested or if we're going to redesign the dashboard (in another issue) like @eordano proposed.
Also, just in case you missed it, we need to discuss the points mentioned on the first post eventually:

We don't have a good way to send notifications in case a request fails (or succeeds)
The information is static, meaning that the mining speed and tile list will stay the same until a page refresh
If the user has a lot of tiles, it could choke the UI

(...)
I think that the code it's at a good point to be transformed to use a framework (it has <200 lines of code and little HTML). I was thinking of using React (with redux I think) to do so, but I'm open to suggestions!

+1 to react, go for it
we don't even have a mock of the design, so please go on with the toggle and table
static info, edge cases (too many tiles) and non-response is ok in this instance

@martriay I added the table and changed the node references to miner. I'm having troubles placing the toggle thought.
First I came up with this (current commited version)

From there, adding the toggle it's not that easy, here are some options:

Let me know if you like any of them or if you have any other ideas and I'll update the branch :)


What type of update are you requesting?
A new version of an existing package
Current Package Identifier
flux.flux
Package Version
4.134
Please describe the changes you would like to see
As noted on the page https://justgetflux.com/ current version is 4.134

https://github.com/microsoft/winget-pkgs/pull/144243


Install of 0.20.0 tries to restart Windows Explorer but doesn't complete

ℹ Computer information

Windows build number: [run "winver"] 19041.388
PowerToys version: 0.20.0
PowerToy module: Installation

📝 Provide detailed reproduction steps (if any)

Run the update from 0.19.2 to 0.20.0.
At the end, it asks to restart Windows Explorer and I click to let that proceed.
It apparently gets stuck in the restart, with a blank background and current foreground apps showing on top (in this case, Google Chrome and Mozilla Thunderbird, in one tabbed window using TidyTabs).
I Ctrl-Alt-Del and select Sign out.
I sign back in again, and my user account loads normally with Windows Explorer working fine.

✔ Expected result
What is the expected result of the above steps?
The Windows Explorer restart should have completed the restart process without any intervention.
❌ Actual result
What is the actual result of the above steps?
The actual result is me having to intervene, signing off and signing on again to complete the restart.
📷 Screenshots
Are there any useful screenshots? WinKey+Shift+S and then just paste them directly into the form
I think my descriptions cover it.

For me, it finished the restart but the system tray was almost empty, although the applications were still running

I just ran the install on another Windows 10 laptop, with the same Windows build number, and the results were exactly the same. Note that the laptops involved are quite different, hardware-wise, the first one being a 2019 Acer Nitro 5 (AMD) and the other a 2009 Dell Inspiron 1545 (Intel).

@enricogior / @yuyoyuppe the watcher may need a bit more tlc from #5293

@crutkas
since we use an official Windows API to restart Explorer and since trying to restart it manually if it doesn't restart in 10 seconds doesn't seem to work, I suggest we replace the option to restart Explorer with a simple notice to log off and log on manually.

@crutkas
since we use an official Windows API to restart Explorer and since trying to restart it manually if it doesn't restart in 10 seconds doesn't seem to work, I suggest we replace the option to restart Explorer with a simple notice to log off and log on manually.

Agreed.

Actually, can we make this built into the installer versus just informing.

@crutkas
you mean we should add the "Windows needs to restart" warning in the MSI and then restart? I suggest not, because I never managed to have that feature working properly.

@enricogior @crutkas
since powertoys is an official microsoft prodoct why are you not contacting the explorer team and figure out with them why the restart api is not working every time?
right now you are only building workarounds.
having to log off after an update is annoying.

@floh96
the two things are not mutually exclusive, we need a solution asap for PowerToys, we can't simply wait for the next release of Windows 10 and even if it will be fixed in a new release it may not be available as a hotfix.

@floh96, issue also is we support all the way back to RS4.  If it got fixed, it would be future versions of windows
@enricogior, no.  My idea was we have a dialog that throws up "Do you wish for us to sign you out" not force explorer to restart.
I'm 99% vs code does something in their install.  I'm also wondering if we can tweak our upgrade process to not destroy the reg entries if they are present.

@crutkas

My idea was we have a dialog that throws up "Do you wish for us to sign you out"

OK!

As told by @enricogior , if we choose not to restart explorer, the app starts just as fine. And everything still works.

@Cyberdroid1
what may not be up-to-date are the shell extensions like PowerRename, but it's also possible that Explorer has already reloaded the extension.

"barış"

Well, if you want to, you can restart explorer on your own through task manager. (I keep task manager always open, so not a hassle for me)
You maybe correct, I don't know about that.

Do we really want the logging off functionality? Even if it's only a dialog that the user needs to agree on, it seems like a very drastic and intrusive measure for the issue we're having, i.e. explorer reloading new shell extensions toys after ~10-30 minutes instead of immediately.
It doesn't affect other modules like Fancy Zones or Power Run, and having some small percentage of users noticing that new bug fixes are not applied for e.g. PowerRename/Svg Preview immediately is a minor issue compared to everyone are being prompted for re-logging. We already have some negative feedback from the users about it.
I suggest we simply show a notification explaining that shell extensions will not be reloaded immediately and reboot/log-off may be needed and do not introduce an action-button for it, since that way the takeaway for most users could be "PowerToys now requires to restart for some obscure reason".
@crutkas @enricogior thoughts?

That would make an assumption that none of the features would work until restarted. So, we can change the prompt stating "PowerToys is now installed. Most features will continue to work, but if you face problem, you will need to logout and login once."

I suggest we simply show a notification explaining that shell extensions will not be reloaded immediately and reboot/log-off may be needed and do not introduce an action-button for it, since that way the takeaway for most users could be "PowerToys now requires to restart for some obscure reason".

I think something like this is the most straightforward fix as restarting Windows Explorer is indeed unnecessary for using most of the PowerToys, and we can't expect a related fix to Windows 10 would be available for all users of PowerToys for the foreseeable future.

This has been a problem for several updates.

@jcddcjjcd We're sadly calling a standard API in Windows.  API is basically "hey, we did stuff where you'll need to safely restart" and from there Explorer handles the rest.  Before we were manually killing and restarting explorer and the feedback was that wasn't cool which is totally understandable.

@yuyoyuppe i think what you're describing is a good middle ground.
Here is what VS Code does

Visually, i didn't see it cycle Explorer however

Even checking context menu, it didn't seem to cycle explorer

@crutkas
VS Code only adds a menu handler, not a full shell extension. PowerRename is loaded in memory by Explorer, not launched as standalone application passing a file list.

I had similar issue during updates:

19.2 -> 20.0
20.0 -> 20.1
WinVer: 1909 Build 18363.959

PowerToys update was succesful, I confirmed explorer restart
Taskbar disappeared, I could see shortcuts on desktop, but they were flickering all time

@PepekT
thank you for reporting the problem.
Since the Explorer restart is not mandatory, if you have to install PT again (or on a different machine) feel free to choose "No" in the Explorer restart dialog.

@Enricogior, did we see this from 0.19.x release?  Feels like 0.20 introduced the issue.  Wondering if it is due to EXE vs MSI

@crutkas
we added one file extension, but other than that nothing that might cause Explorer to go bananas. It's more likely something that changed in Windows.

I was able to get out of the crashing loop by using Ctrl+ Shift + Esc to open Task Manager and killing the Windows Explorer task:

To add some insights in case it helps, here is the error reported by Explorer as it was stuck in the crash -> launch -> crash -> launch cycle.
Faulting application name: explorer.exe, version: 10.0.19041.388, time stamp: 0x0b2e759c
Faulting module name: KERNELBASE.dll, version: 10.0.19041.388, time stamp: 0x3cc24707
Exception code: 0xc0000602
Fault offset: 0x000000000010b37c
Faulting process id: 0x2d14
Faulting application start time: 0x01d66c199fa85821
Faulting application path: C:\WINDOWS\explorer.exe
Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll
Report Id: 5ff6ceb4-8b12-4dd7-b8a6-c10155cd2e49
Faulting package full name:
Faulting package-relative application ID:

That error happened dozens of time before I was able to get a handle on inputs (mouse and keyboard are hard to use while shell is constantly crashing). Here's a screenshot of approx 1/3rd of them:

Issue persists in v0.20.1 installer as well. After confirming to explorer restart, taskbar disappeared and did not come back.
Right clicking on desktop caused below dialog and windows was able to restart after clicking on "Restart the program"

@mehul115
0.20.1 didn't make any change to how Explorer is restarted.

@enricogior, did we see this from 0.19.x release? Feels like 0.20 introduced the issue. Wondering if it is due to EXE vs MSI

I experienced this issue when upgrading to 0.19.x as well as 0.20. That being said, I am (for some unknown reason) stuck running Windows 10 1809. (Windows updates always fail when trying to update to 19 and above). Anyway, when I went from PT 18 to PT 19 explorer crashed on me. This has happened since the update to 19 for me. I think removing the option to restart explorer and instead adding the notification that a log off/on may be needed is the best move forward.

For the record, I didn't experience this issue until 0.20.0, although I've only been using PT since 0.18.2.  I've been on Windows 10 2004 all along.

Just updated from 0.19.2 to 0.20.1 and the Explorer restart also had issues. Just like @PepekT said: taskbar and other stuff not appearing and desktop icons flickering. However: I used Ctrl+Alt+Del to open Task Manager. There I saw explorer.exe with about 20% of CPU usage. A simple right-click and select "Restart" was enough to snap him out of it.

@Jay-o-Way
thanks for reporting, but we have already fixed this and 0.21 will not prompt to restart Explorer anymore.

When is v0.21 planned to come out?

@dtigue
Try doing an in-place upgrade using media creation tool. It might help fixing Windows update. Download tool from here - https://go.microsoft.com/fwlink/?LinkId=691209
Check out this page too - https://docs.microsoft.com/en-us/windows/release-information/status-windows-10-2004

Fix added in 0.21.1, please go to https://github.com/microsoft/PowerToys/releases to upgrade

0.21.1 fixed it for me.  I however experienced a seeming double-install, with PT installing twice over, but I'm not sure yet if that was "user error", with me initiating the install twice. I'll monitor this in the next release and open a new issue if necessary.

@stevemagruder
you may have experience this bug https://github.com/microsoft/PowerToys/issues/6329 that happens if you are updating from two version before the current one.


Additional Sample Using Kotlin DSL

What is the correct way to use this plugin for Gradle build files that is using Kotlin DSL? This is working before the Kotlin migration from Groovy.
The sample in README is something like this.
appsweep {
    apiKey "API_KEY"
}

But as far I can tell, the Kotlin DSL syntax is always using = for assignment of value, so we assume we could do something like this?
appsweep {
    apiKey = project.property("APPSWEEP_API_KEY") as String
}

Running ./gradlew :app:uploadToAppSweepDebug will result to this error
Welcome to Gradle 8.2!

Here are the highlights of this release:

 - Kotlin DSL: new reference documentation, assignment syntax by default

 - Kotlin DSL is now the default with Gradle init

 - Improved suggestions to resolve errors in console output

For more details see https://docs.gradle.org/8.2/release-notes.html

Starting a Gradle Daemon (subsequent builds will be faster)

FAILURE: Build failed with an exception.

* What went wrong:

Could not determine the dependencies of task ':app:uploadToAppSweepDebug'.

> Could not resolve all task dependencies for configuration ':app:debugRuntimeClasspath'.

 > The consumer was configured to find a component for use during runtime, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug', attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.3', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm'. However we cannot choose between the following variants of project :app:libs:AndroidCommon:

       - Configuration ':app:libs:AndroidCommon:debugRuntimeElements' variant android-aar-metadata declares a component for use during runtime, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.3', attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm':

 > The consumer was configured to find a component for use during runtime, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug', attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.3', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm'. However we cannot choose between the following variants of project :app:libs:AndroidAdMob:

       - Configuration ':app:libs:AndroidAdMob:debugRuntimeElements' variant android-aar-metadata declares a component for use during runtime, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.3', attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm':

 > The consumer was configured to find a component for use during runtime, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug', attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.3', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm'. However we cannot choose between the following variants of project :app:libs:AndroidMaterial:

       - Configuration ':app:libs:AndroidMaterial:debugRuntimeElements' variant android-aar-metadata declares a component for use during runtime, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.AgpVersionAttr' with value '8.1.3', attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm':

Hi @ArcherEmiya05,
I'm thrilled to see that you are utilizing AppSweep to scan your app for security vulnerabilities. However, I'm sorry to hear that you're experiencing issues with our Gradle plugin. Let me clarify that our samples are designed for Groovy, while in Kotlin DSL, you'll need to use the = symbol to assign values.
I'd like to assure you that the problem you're facing isn't due to migrating from Groovy to Kotlin. We recently released a new version of AppSweep Gradle plugin, and it caused this problem. However, our team is already investigating and working on a solution to fix this issue, which is similar to the one reported in #8 . We'll release a new version as soon as possible to address the issue.
Thank you for your patience and understanding.
Duplicate of #8.


Don't crash when dealing with locales that don't have po/json files

When we have a project that defines supported languages something that's not in the volto/locales folder, we get a crash.

@tiberiuichim What do you think about the above comment? I think we should return English (as it has all the default messages in there) if no lang file found.

@sneridagh I haven't had a chance to test it yet.

@tiberiuichim I think we should not abandon this, let's try to push it forward.


Adds Remotely Awesome Jobs to the aggregators list.

I thought I submitted this as a Pull Request over a year ago, but apparently I had submitted it to myself instead of you. 🤦♂

Oh dear! No worries. Looks good


Please add HighVibe.Network (HV)

In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:

[ ] Filename in the lowercase format
[ ] Image format: png
[ ] Image size: 256 by 256 px

Also, you can use these graphics to say that your ERC20 token fully compatible with Trust Wallet (https://trustwallet.com/logo-assets). Tokens will show up automatically once the user receives them.
Feel free to share this on social media and tag Trust Wallet:

Twitter: @trustwalletapp

Facebook: @trustwalletapp

Hello Mykola,
Thank you for your answer and for the merge!
I have a question tho, when I search for HighVibe in the trust wallet, I cannot find it. Do you know why?
Thank you in advance,
Nicolas NUPS

Le 20 mars 2019 à 17:21, Mykola<EMAIL_ADDRESS>a écrit :
Also, you can use these graphics to say that your ERC20 token fully compatible with Trust Wallet (https://trustwallet.com/logo-assets). Tokens will show up automatically once the user receives them.
Feel free to share this on social media and tag Trust Wallet:

> Twitter: @trustwalletapp
>
Facebook: @trustwalletapp
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Try now

It is working fine now! Thank you
Nicolas

Le 20 mars 2019 à 19:47, Mykola<EMAIL_ADDRESS>a écrit :
Try now
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.


Added worker initialization task

Added the ability to have initialization task shared between all workers.

Please add some docstrings to the worker. It is becoming non-trivial to deduce what the arguments are for the worker.

bump


bug in chat where followup user prompts fail to produce expected results

Fixed in 1863179 and previous two commits