Multi-frame Fusion

Hi, I have been reading this code for some time, but I fail to find any multi-frame fusion config. All I have found is num_sweeps=1:
https://github.com/Megvii-BaseDetection/BEVDepth/blob/16d7854156efcc9353ab5a45d3250e5f1ab0fd76/exps/bev_depth_lss_r50_256x704_128x128_24e.py#L222
Does it mean that now this code doesn't support multi-frame fusion yet? I wonder if in the comparison with SOTA results on nuscenes val set (0.351mAP and 0.475NDS for R50) and test set (0.503mAP and 0.600NDS for which backbone?) in the paper, BEVDepth has used multi-frame fusion? Or in the leaderboard? If so, could you please give me some advice on how to reproduce the paper results or the leaderboard results?

Hi! We have provided multi-frame exps, please refer to https://github.com/Megvii-BaseDetection/BEVDepth/blob/main/exps/bev_depth_lss_r50_256x704_128x128_20e_cbgs_2key_da_ema.py. To reproduce the results in paper, you need to change the backbone to Vovnet and the image resolution to 640 x 1600.

After a more thourough go through on the previous issues, I find a very similar issue here (https://github.com/Megvii-BaseDetection/BEVDepth/issues/8). Like that issue, I didn't notice the key_idxes used in key frame fusion. I thought BEVDepth selectes previous sweep frames for fusion, but clearly I was wrong.
About reproducing the result, I think R50 and R101 are used on nuscenes val set. I assume Vovnet and 640x1600 resolution you describe here are used on nuscenes test set? I wonder what config did you use to reproduce the result on the nuscenes leaderboard?

Yes, On the leaderboard, we use vovnet and 640x1600 resolution.

Ok, that helps a lot, thanks!

Hi, I just found this answer about leaderboard results reproduction. It says ConvNeXT is used as backbone, not VovNet. I wonder which one is correct? Thanks!

Yes, On the leaderboard, we use vovnet and 640x1600 resolution.

I fail to locate the code for implementing multi-frame fusion. Would you show me where I can find the module? Specifically, I'm interested in the code that aligns two frames using a coordinate transformation matrix. Thanks a lot!


Fix routing intent deployment issue in virtual wan

Overview/Summary
Replace this with a brief description of what this Pull Request fixes, changes, etc.
This PR fixes/adds/changes/removes
This PR addresses the issue described in the issue #868 - routing_intent does not find the next hop destination when deployed with the azurerm firewall in vhub.
Breaking Changes
no
Testing Evidence
Please provide any testing evidence to show that your Pull Request works/fixes as described and planned (include screenshots, if appropriate).
Before the fix:
 API Response:
│
│ ----[start]----
│ {"status":"Failed","error":{"code":"InvalidNextHop","message":"The next hop '/subscriptions/xxxxxx/resourceGroups/connectivity/providers/Microsoft.Network/azureFirewalls/fw-hub-japaneast' in route/policy 'routing-intent-policy-all' in the resource '/subscriptions/xxxxxx/resourceGroups/connectivity/providers/Microsoft.Network/virtualHubs/hub-japaneast/routingIntent/routingintent-japaneast' is invalid.","details":[]}}
│ -----[end]-----
│
│
│   with module.alz.azurerm_virtual_hub_routing_intent.virtual_wan["/subscriptions/xxxxxxx/resourceGroups/connectivity/providers/Microsoft.Network/virtualHubs/hub-japaneast/routingintent-japaneast"],
│   on ../../alz/resources.virtual_wan.tf line 364, in resource "azurerm_virtual_hub_routing_intent" "virtual_wan":
│  364: resource "azurerm_virtual_hub_routing_intent" "virtual_wan" {
│
│ creating Routing Intent (Subscription: "xxxxxxx"
│ Resource Group Name: "connectivity"
│ Virtual Hub Name: "hub-japaneast"
│ Routing Intent Name: "routingintent-japaneast"): polling after RoutingIntentCreateOrUpdate: polling failed: the Azure API returned the following error:
│
│ Status: "InvalidNextHop"
│ Code: ""
│ Message: "The next hop '/subscriptions/xxxxxxx/resourceGroups/connectivity/providers/Microsoft.Network/azureFirewalls/fw-hub-japaneast' in route/policy 'routing-intent-policy-all' in
│ the resource '/subscriptions/xxxxxx/resourceGroups/connectivity/providers/Microsoft.Network/virtualHubs/hub-japaneast/routingIntent/routingintent-japaneast' is invalid."
 Resources: 3 added, 0 changed, 0 destroyed.

As part of this Pull Request I have

[x] Checked for duplicate Pull Requests
[x] Associated it with relevant issues, for tracking and closure.
[x] Ensured my code/branch is up-to-date with the latest changes in the main branch
[x] Performed testing and provided evidence.
[x] Updated relevant and associated documentation.

/azp run unit

Thank you for this PR - lgtm


Add concurrency to test-ipsec-upgrade

The changes on this PR helps to decrease the test run time significantly. During testing if this was possible, a lot of flakes were being caused by the egress-gateway, egress-gateway-with-l7-policy and from-cidr-host-netns tests which is why they run separately without concurrency and then all the other tests run parallel afterwards.
You can find 10 successful runs in https://github.com/cilium/cilium/actions/runs/11295216848

Name
Before
After
Time Decreased

Test 1
00:49:48
00:29:54
-39.96%

Test 2
00:00:23
00:00:19
-17.39%

Test 3
00:49:08
00:25:04
-48.98%

Test 4
00:00:23
00:00:21
-8.7%

Test 5
00:49:18
00:26:30
-46.25%

Test 6
00:00:22
00:00:23
4.55%

Test 7
00:44:46
00:21:20
-52.35%

Test 8
00:00:19
00:00:21
10.35%

Test 9
00:49:34
00:25:33
-48.45%

Test 10
00:00:22
00:00:19
-13.64%

/ci-ipsec-upgrade

/test

/test

/test

Looks good, but I'm quite confused about how egress gateway tests could be an issue in the IPsec workflow... given we don't run them there.

Ok, if we don't run them here then I can drop this commit. I wasn't sure about it as I copied this commit from a similar concurrent PR (#34806) and it didn't matter which PR would be merged first.

Ack for the egress gateway tests, but the from-cidr-host-netns I believe is executed in the IPsec workflows.

Hm, the failure in the IPsec upgrade tests feels a bit suspicious:
🟥 failed to flush ct entries: %w command failed (pod=kube-system/cilium-qq2x7, container=cilium-agent): "time=\"2024-10-16T21:40:39.620403221Z\" level=error msg=\"Unable to delete CT entry\" error=\"unable to delete element <IP_ADDRESS>:61575 --> <IP_ADDRESS>:62751, 6, 1 from map cilium_ct4_global: delete: key does not exist\" key=\"<IP_ADDRESS>:61575 --> <IP_ADDRESS>:62751, 6, 1\" subsys=map-ct\n"

I haven't seen this failure before, so wondering if it could be related to the changes made here. Isn't it possible we're trying to flush the CT map in parallel and therefore failing?

/ci-ipsec-upgrade

/test


load_in_8bit for model quantization

Does torchtune allow load_in_8bit or load_in_4bit before performing SFT or DPO fine-tuning on models? If not, what modifications are required to run training on quantized models?

Hey @SUMEETRM , good question! @ebsmothers , do you have any insights on this one?

@SUMEETRM thanks for creating the issue. We currently do not support training in precision lower than 16-bit as it generally leads to poor performance. However, load_in_4bit (as used in Hugging Face) is also used for QLoRA-style usage of NF4, which we do support. If you can share a bit more about what you're trying to do I'd be happy to give some more pointers here.


Change HealthCheck json payload

Hi,
First thanks for your amazing work.
I'd like to propose an enhancement in the HealthCheck payload.
Current situation
Currently the healthcheck payload, according to this configuration http://www.dropwizard.io/0.9.2/docs/manual/core.html#health-checks, is
{"deadlocks":{"healthy":true},"database":{"healthy":true}}

The problem with this payload in a production environment is that we don't know directly if the whole system is healthy or not. Instead we have to check each healthcheck entry and check if the field healthy is true.
Proposal solution
I think it would be better to have a payload similar to what we have with spring-boot.
For the same configuration in the spring-boot way, I'd have:
{"status": "UP", "deadlocks":{"status":"UP"},"database":{"status":"UP"}}

Where status can be UP, DOWN or UNKNOWN (for example in case we can't find HealthCheck).
I can see 2 advantage with this payload:

There is a global status which is an aggregation of the others (it will be UP if all status is UP, DOWN otherwise). This way, with only one check we can check the system health.
It will be the same kind of payload than spring-boot which means we facilitate the life of OPS guys.

What do you think ?
I'd love to contribute it if you want to.

The health check implementation is supplied by https://github.com/dropwizard/metrics, this would need to  be proposed there. But the implementation already flexes the response status if any of the checks are not healthy.
https://github.com/dropwizard/metrics/blob/3.1-maintenance/metrics-servlets/src/main/java/com/codahale/metrics/servlets/HealthCheckServlet.java#L95-99

Hi @mattnelson, sorry for my mistake.
By the way, I found this issue https://github.com/dropwizard/metrics/issues/663 which might be a good solution.
Thanks for the information, the status might be a good fit as spring does the same thing (even if they are using 503 instead of 500).
So I'll close this issue and put a +1 on https://github.com/dropwizard/metrics/issues/663.


Pending tests should be printed when running under XCTest

This modifies the way that Cedar integrates with the XCTest runner such that pending tests aren't ignored entirely, but are still made known to the example reporters. This results in the pending test count and summary info being included in Cedar's test output. The pending tests aren't exposed to XCTest, however, since there is no way to represent the "pending" state in its framework.
This addresses #303 and https://www.pivotaltracker.com/story/show/99707426.
(Inspired by a recent conversation with @pivotal/team-cedar, I also swapped the ad-hoc Cedar fake in CDRXCTestSuiteSpec with a full-fledged test double class.)

@pivotal-misa-sakamoto I encountered this issue most recently with you, it would be great if you could give it a try and see if it resolves the issue of pending tests not being reflected in the summary output.
Same goes for @idoru and @tjarratt if you've got test bundle projects going right now :)

Sorry this sat here so long; I finally had some spare time to test it out today.
I didn't see any reason not to merge this, since our lack of reporting pending tests has been broken for a long time (#303).

LOL totally hamfisted that. Merged anyway since the checks had passed previously before I accidentally closed the PR. Thanks for the fixing this, @briancroom

:+1: Thanks for taking a look and doing the honors @idoru!


Allow rooms to be created in the UI

Coverage increased (+0.6%) to 52.482% when pulling 534d11c3669048d68a78041c674182247ffa9d66 on rooms into dc87b88e1a26368ba2135188a3b0b80f1fe71036 on master.


[PDAugment] What does the phoneme level alignment pickle file contain?

Hi PDAugment team, just a quick question about the pickle file generated during the phoneme level alignment stage. In the example on the README
{
    "174-168635-0000.wav" : [0, 12, 18, 20...],
    "174-168635-0001.wav" : [0, 12, 27, 35...],
    "174-168635-0002.wav" : [0, 13, 26, 33...],
    ...
}

what do the lists such as [0, 12, 18, 20, ...] represent? Do they represent the milliseconds for the split positions between adjacent phonemes?

Hi, you can refer to this issue https://github.com/microsoft/muzic/issues/20.


how are dedicated nodes power managed?

Like any other node. Or do you mean nodes that have a rent contract on them?

Why should it be execluded from the capacity planning? And how should the power management look like?

As this rented node isn't really usable by anyone other than the renter

Any planning request from users side (who aren't renting the node) will either return that node, or will need to power on other nodes (because it depended on the capacity of a dedicated node that wasn't going to be used to fulfill that request)
The threshold calculations to power on/off other offline nodes as the rented nodes aren't really usable by others

The way I see it for the power management: we need to have a decision for dedicated nodes, either be always powered on or not -if the cost doesn't justify the bill-, but even if it was going to be powered off to save energy, It should be isolated from the shared nodes.

When there is a rent contract it will keep the node up and it will be marked as "used" so it will not be returned to other requests.


Add name in array of linked resource URLS

For example:
"starships": [{"name": "X-wing", "url": "http://swapi.co/api/starships/12/"}]

This would allow someone to build a url without having to query for each value in the array in order to get the name.

Will probably be solved when implementing #9, right?

@AliSoftware Yup


CUDA error: invalid device function when DeviceRadixSort::SortKeys called from host device function

The following program:
#if !defined(__CUDA_ARCH__) || (__CUDA_ARCH__>= 350 && defined(__CUDACC_RDC__))
#  define CUB_CDP 1
#endif

#include <thrust/device_vector.h>
#include <thrust/tabulate.h>
#include <thrust/functional.h>
#include <thrust/sort.h>
#include <thrust/copy.h>
#include <thrust/execution_policy.h>
#include <cub/device/device_radix_sort.cuh>
#include <cassert>

template<typename T>
__host__ __device__
cudaError_t cub_sort_n(T* first, size_t n)
{
  cudaError_t result = cudaSuccess;

#if !defined(__CUDA_ARCH__) || CUB_CDP
  // XXX the additional temporary storage bytes
  //     must be allocated on a 16b aligned address
  struct __align__(16) aligned_type {};

  if(n > 1)
  {
    cub::DoubleBuffer<T> double_buffer;

    // measure the number of additional temporary storage bytes required
    size_t num_additional_temp_storage_bytes = 0;

    cudaError_t error = cub::DeviceRadixSort::SortKeys(0, num_additional_temp_storage_bytes, double_buffer, static_cast<int>(n));
    if(error != cudaSuccess) return error;

    // allocate temporary storage for double buffer as well as additional bytes
    size_t num_double_buffer_bytes = n * sizeof(T);
    size_t num_aligned_double_buffer_bytes = thrust::detail::util::round_i(num_double_buffer_bytes, sizeof(aligned_type));
    size_t num_aligned_total_temporary_storage_bytes = num_aligned_double_buffer_bytes + num_additional_temp_storage_bytes;

    thrust::device_vector<char> temporary_storage(num_aligned_total_temporary_storage_bytes);

    void* additional_temp_storage_ptr = thrust::raw_pointer_cast(temporary_storage.data() + num_aligned_double_buffer_bytes);

    double_buffer.d_buffers[0] = thrust::raw_pointer_cast(&*first);
    double_buffer.d_buffers[1] = reinterpret_cast<T*>(thrust::raw_pointer_cast(temporary_storage.data()));

    result = cub::DeviceRadixSort::SortKeys(additional_temp_storage_ptr,
                                            num_additional_temp_storage_bytes,
                                            double_buffer,
                                            static_cast<int>(n));
    if(result != cudaSuccess) return result;

    if(double_buffer.Current() != 0)
    {
      T* temp_ptr = reinterpret_cast<T*>(double_buffer.d_buffers[1]);
      thrust::copy(thrust::device, temp_ptr, temp_ptr + n, first);
    }
  }
#else
  result = cudaErrorNotSupported;
#endif

  return result;
}

int main()
{
  size_t n = 2;

  thrust::host_vector<int> ref(n);

  // generate unsorted values
  thrust::tabulate(ref.begin(), ref.end(), thrust::placeholders::_1 % 1024);

  thrust::device_vector<int> data = ref;

  cudaError_t error = cub_sort_n(thrust::raw_pointer_cast(data.data()), data.size());
  if(error)
  {
    std::cerr << "CUDA error: " << cudaGetErrorString(error) << std::endl;
    std::exit(-1);
  }

  thrust::sort(ref.begin(), ref.end());

  assert(ref == data);

  assert(thrust::is_sorted(data.begin(), data.end()));

  return 0;
}

Yields the following output at runtime:
$ nvcc -I. repro.cu -run
CUDA error: invalid device function

I believe the way that CUB uses the CUB_CDP macro is causing the host compiler to elide the CUDA kernels because it thinks they are unused. It requires quite a few workarounds to get this right -- CUB should probably perform these on behalf of the client.

the CUB_CDP macro is causing the host compiler to elide the CUDA kernels because it thinks they are unused.

Actually, your program's #ifdef on line 20 is causing the compiler to elide the CUDA kernels.  Take that out and call CUB.  It will return cudaErrorNotSupported if it's not supported.  Don't use it on some compiler passes and not others.

The ifdef is integral to another, larger, codebase this snippet is part of a larger codebase, this snippet is taken from. The code needs to choose statically, at comiple time, how to implement a sort. It's not possible to call CUB if CUDA dynamic parallelism is not supported, correct? When CUDA dynamic parallelism is supported, it will use CUB. If not, the code will do something else. Is it possible to build a program like that using CUB? One way  seems to be the workaround I mentioned.
Why not implement the workaround within CUB so that users don't have to do it themselves? It leads to difficult to debug errors, otherwise.

It's not possible to call CUB if CUDA dynamic parallelism is not
supported, correct?

Not only is it possible, it's required, actually.  CUB simply returns
cudaErrorNotSupported when used in device code.  (You don't need to do that
yourself.)
To elaborate, CUB itself uses an #ifdef internally in the same manner.
However, it instantiates its kernels before its #ifdef in order to make
sure the kernels get compiled on all passes regardless.  If the calling
application places an #ifdef around cub for some compiler passes (as in
your example), then you risk kernels not being compiled for sm10..sm30.
The same is true for any kernel call, e.g.:
__host__ __device__ void CdpFoo()
{
#if !defined(__CUDA_ARCH__) || (__CUDA_ARCH__>= 350 &&

defined(CUDACC_RDC))
FooKernel<<<...>>>(...);
#endif
}
int main()
{
    CdpFoo();
    return 0;
}

In this case, SomeKernel will not be compiled at all with nvcc -arch=sm_20.

For reference, another way to protect dispatch (yet force compilation) is
simply to create a kernel function pointer, but don't invoke it on certain
code paths.  This is much less verbose.
template <typename T>
global void FooKernel(T* d_in) {}
template <typename T>
host device cudaError_t foo_wrapper(T* d_in)
{
*void* (*kernel_ptr)(*T**) = FooKernel<*T*>;

#if !defined(CUDA_ARCH) || (CUDA_ARCH>= 350 &&
defined(CUDACC_RDC))
kernel_ptr<<<1,1>>>(d_in);

*return* *cudaPeekAtLastError*();

#else
*return* cudaErrorNotSupported;

#endif
};


RM4 Mini 0x5216 not supported

My RM4 Mini (0x5216 type) is not supported by Broadlink Manager.
Broadlink Manager is installed with Qnap Container Station (docker) on my Qnap TS-653A.
After network scan, Broadlink Manager finds the RM4 mini as "not supported".
As a matter of fact, I can't learn any IR code under "Actions" menu.
When I try, I can see the message "waiting for signal" (just for a second) and then I receive the "Error occurred while scanning, please try again" message.
This is my log after network scan:
2022-06-05 14:13:13.955 | INFO     | __main__:<module>:48 - OS: posix
2022-06-05 14:13:13.960 | DEBUG    | __main__:get_env_ip_list:71 - Environement discovered IP List []
2022-06-05 14:13:13.984 | DEBUG    | __main__:get_local_ip_list:64 - Locally discovered IP List ['<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>']
2022-06-05 14:13:13.985 | INFO     | __main__:<module>:126 - Broadlink will try to discover devices on the following IP interfaces: ['<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>']
2022-06-05 14:13:13.988 | INFO     | __main__:<module>:135 - Configuring app
2022-06-05 14:13:13.994 | INFO     | __main__:get_analytics_code:179 - Content: <script async src="https://www.googletagmanager.com/gtag/js?id=UA-131664523-2"></script>
    <script>
        window.dataLayer = window.dataLayer || [];
        function gtag() { dataLayer.push(arguments); }
        gtag('js', new Date());

        gtag('config', 'UA-131664523-2');
    </script>

2022-06-05 14:13:14.025 | INFO     | __main__:<module>:641 - Broadllink Manager is up and running
INFO:     Started server process [1]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://<IP_ADDRESS>:7020 (Press CTRL+C to quit)
INFO:     <IP_ADDRESS>:52163 - "GET / HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52164 - "GET / HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52164 - "GET /about HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52164 - "GET /index HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52164 - "GET /index HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52170 - "GET /index HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52170 - "GET /index HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52170 - "GET /generator HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52170 - "GET /index HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52170 - "GET /index HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52181 - "GET /index HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52183 - "GET /index HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52196 - "GET /about HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52204 - "GET /index HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52204 - "GET /index HTTP/1.1" 200 OK
2022-06-05 14:16:19.411 | INFO     | __main__:load_devices_from_file:574 - Reading devices from file
2022-06-05 14:16:22.415 | ERROR    | __main__:load_devices_from_file:579 - Loading devices from file has faild with the following exception: [Errno 2] No such file or directory: 'data/devices.json'
INFO:     <IP_ADDRESS>:52214 - "GET /devices/load HTTP/1.1" 200 OK
2022-06-05 14:16:27.579 | INFO     | __main__:search_for_devices:592 - Searcing for devices...
2022-06-05 14:16:27.579 | INFO     | __main__:search_for_devices:594 - Checking devices on interface assigned with IP: <IP_ADDRESS>
2022-06-05 14:16:32.716 | INFO     | __main__:search_for_devices:601 - New device detected: Not Supported (ip: <IP_ADDRESS>  mac: ec0bae990d7b)
2022-06-05 14:16:32.717 | INFO     | __main__:search_for_devices:594 - Checking devices on interface assigned with IP: <IP_ADDRESS>
2022-06-05 14:16:37.720 | INFO     | __main__:search_for_devices:594 - Checking devices on interface assigned with IP: <IP_ADDRESS>
2022-06-05 14:16:42.722 | INFO     | __main__:search_for_devices:594 - Checking devices on interface assigned with IP: <IP_ADDRESS>
2022-06-05 14:16:47.724 | INFO     | __main__:search_for_devices:594 - Checking devices on interface assigned with IP: <IP_ADDRESS>
2022-06-05 14:16:52.726 | INFO     | __main__:search_for_devices:594 - Checking devices on interface assigned with IP: <IP_ADDRESS>
2022-06-05 14:16:57.729 | INFO     | __main__:search_for_devices:594 - Checking devices on interface assigned with IP: <IP_ADDRESS>
2022-06-05 14:17:02.732 | INFO     | __main__:search_for_devices:594 - Checking devices on interface assigned with IP: <IP_ADDRESS>
2022-06-05 14:17:07.734 | INFO     | __main__:search_for_devices:594 - Checking devices on interface assigned with IP: <IP_ADDRESS>
2022-06-05 14:17:12.736 | DEBUG    | __main__:search_for_devices:611 - Devices Found: [{'name': 'Not Supported', 'type': '0x5216', 'ip': '<IP_ADDRESS>', 'mac': 'ec0bae990d7b'}]
INFO:     <IP_ADDRESS>:52218 - "GET /autodiscover HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:52218 - "GET /index HTTP/1.1" 200 OK
2022-06-05 14:17:12.987 | DEBUG    | __main__:get_device_status:623 - <IP_ADDRESS>
2022-06-05 14:17:13.085 | DEBUG    | __main__:get_device_status:626 - b'1\n'
INFO:     <IP_ADDRESS>:52222 - "GET /device/ping?host=<IP_ADDRESS> HTTP/1.1" 200 OK
2022-06-05 14:17:40.906 | INFO     | __main__:save_devices_to_file:557 - Writing devices to file
2022-06-05 14:17:40.907 | INFO     | __main__:save_devices_to_file:561 - Finished writing devices to file
INFO:     <IP_ADDRESS>:52225 - "POST /devices/save HTTP/1.1" 200 OK

And this is my log after trying to learn IR code:
2022-06-05 14:26:59.615 | INFO     | __main__:learnir:428 - Learning IR Code for device: <IP_ADDRESS>
                    2022-06-05 14:26:59.737 | INFO     | __main__:learnir:431 - Entering IR Learning Mode
                                                                                INFO:     <IP_ADDRESS>:52336 - "GET /ir/learn?type=0x5216&host=<IP_ADDRESS>&mac=ec0bae990d7b HTTP/1.1" 500 Internal Server Error
                                                                                ERROR:    Exception in ASGI application
               Traceback (most recent call last):
                                                   File "/usr/local/lib/python3.8/dist-packages/uvicorn/protocols/http/h11_impl.py", line 373, in run_asgi
                           result = await app(self.scope, self.receive, self.send)
                                                                                File "/usr/local/lib/python3.8/dist-packages/uvicorn/middleware/proxy_headers.py", line 75, in __call__
                                                            return await self.app(scope, receive, send)
                                                                                File "/usr/local/lib/python3.8/dist-packages/fastapi/applications.py", line 212, in __call__
                                                                      await super().__call__(scope, receive, send)
                                                                                File "/usr/local/lib/python3.8/dist-packages/starlette/applications.py", line 112, in __call__
                                                                                await self.middleware_stack(scope, receive, send)
   File "/usr/local/lib/python3.8/dist-packages/starlette/middleware/errors.py", line 181, in __call__
                                                                                raise exc
                                                                                File "/usr/local/lib/python3.8/dist-packages/starlette/middleware/errors.py", line 159, in __call__
                                                                                await self.app(scope, receive, _send)
                                                                                File "/usr/local/lib/python3.8/dist-packages/starlette/middleware/cors.py", line 84, in __call__
                                                                                await self.app(scope, receive, send)
    File "/usr/local/lib/python3.8/dist-packages/starlette_exporter/middleware.py", line 135, in __call__
                                                                                await self.app(scope, receive, wrapped_send)
                        File "/usr/local/lib/python3.8/dist-packages/starlette/exceptions.py", line 82, in __call__
                                                                                raise exc
                                                                                File "/usr/local/lib/python3.8/dist-packages/starlette/exceptions.py", line 71, in __call__
                                                                                await self.app(scope, receive, sender)
   File "/usr/local/lib/python3.8/dist-packages/starlette/routing.py", line 656, in __call__
                                                                                await route.handle(scope, receive, send)
       File "/usr/local/lib/python3.8/dist-packages/starlette/routing.py", line 259, in handle
                                                                                await self.app(scope, receive, send)
     File "/usr/local/lib/python3.8/dist-packages/starlette/routing.py", line 61, in app
                                                                                response = await func(request)
                                                                                File "/usr/local/lib/python3.8/dist-packages/fastapi/routing.py", line 226, in app
                                                                               raw_response = await run_endpoint_function(
                                                                                File "/usr/local/lib/python3.8/dist-packages/fastapi/routing.py", line 161, in run_endpoint_function
                                                                                return await run_in_threadpool(dependant.call, **values)
                        File "/usr/local/lib/python3.8/dist-packages/starlette/concurrency.py", line 39, in run_in_threadpool
                                                                                return await anyio.to_thread.run_sync(func, *args)
                                                  File "/usr/local/lib/python3.8/dist-packages/anyio/to_thread.py", line 28, in run_sync
         return await get_asynclib().run_sync_in_worker_thread(func, *args, cancellable=cancellable,
                                                                                File "/usr/local/lib/python3.8/dist-packages/anyio/_backends/_asyncio.py", line 818, in run_sync_in_worker_thread
                                                                                return await future
                                                                                File "/usr/local/lib/python3.8/dist-packages/anyio/_backends/_asyncio.py", line 754, in run
                                                                         result = context.run(func, *args)
                                                                                File "broadlinkmanager.py", line 432, in learnir
                             dev.enter_learning()
                                                 AttributeError: 'Device' object has no attribute 'enter_learning'

Added.
Please pull the last version.


az aks is broken after az extension update --name aks-preview

Describe the bug
I am trying to enable NodeAutoProvisioning (Karpenter) for AKS using az aks update --resource-group aks-cilium-karpenter --name aks-cilium-karpeter --node-provisioning-mode Auto.
This command required the following preview extensions. After adding and updating the extension, any az aks commands does not work.
➜  ~ az extension add --name aks-preview
az extension update --name aks-preview

Related command
➜  ~ az aks list
➜  ~ az aks update --resource-group aks-cilium-karpenter --name aks-cilium-karpeter --node-provisioning-mode Auto

Errors
The command failed with an unexpected error. Here is the traceback:
'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/knack/cli.py", line 233, in invoke
    cmd_result = self.invocation.execute(args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/commands/__init__.py", line 564, in execute
    self.commands_loader.load_arguments(command)
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/__init__.py", line 527, in load_arguments
    loader.load_arguments(command)  # this adds entries to the argument registries
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/psetlur/.azure/cliextensions/aks-preview/azext_aks_preview/__init__.py", line 45, in load_arguments
    load_arguments(self, command)
  File "/Users/psetlur/.azure/cliextensions/aks-preview/azext_aks_preview/_params.py", line 433, in load_arguments
    k8s_support_plans = self.get_models(
                        ^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/__init__.py", line 782, in get_models
    return get_sdk(self.cli_ctx, resource_type, *attr_args, mod='models', operation_group=operation_group)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/profiles/__init__.py", line 91, in get_sdk
    return _sdk_get_versioned_sdk(cli_ctx.cloud.profile, resource_type, *attr_args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/profiles/_shared.py", line 694, in get_versioned_sdk
    sdk_path = get_versioned_sdk_path(api_profile, resource_type, operation_group)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/profiles/_shared.py", line 686, in get_versioned_sdk_path
    api_version = getattr(api_version, operation_group)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/profiles/_shared.py", line 481, in __getattr__
    self._resolve()
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/profiles/_shared.py", line 468, in _resolve
    for operation_group_name, operation_type in self._client_type.__dict__.items():
                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'. Did you mean: '__dir__'?

Issue script & Debug output
n/a
Expected behavior
The cluster should be updated with NAP and az aks list should be able to list the cluster as required.
Environment Summary
➜  ~ az --version
azure-cli                         2.65.0

core                              2.65.0
telemetry                          1.1.0

Extensions:
account                            0.2.5
aks-preview                      9.0.0b6

Dependencies:
msal                              1.31.0
azure-mgmt-resource               23.1.1

Python location '/usr/local/Cellar/azure-cli/2.65.0_1/libexec/bin/python'
Extensions directory '/Users/psetlur/.azure/cliextensions'

Python (Darwin) 3.12.7 (main, Oct  1 2024, 02:05:46) [Clang 15.0.0 (clang-15<IP_ADDRESS>)]

Legal docs and information: aka.ms/AzureCliLegal

Your CLI is up-to-date.

Additional context
No response

Thank you for opening this issue, we will look into it.

Something that could be related to this issue. I am also unable to ssh into the VM using a bastion host.
➜  ~ az network bastion ssh --name aks-vnet-23126944-bastion --resource-group MC_aks-cilium-karpenter_aks_cilium-karpenter_westus --target-resource-id /subscriptions/xxxxxxxx/resourceGroups/aks-clium-karpenter/providers/Microsoft.Compute/virtualMachines/kubectl-client --auth-type ssh-key --username azureuser
The command failed with an unexpected error. Here is the traceback:
No module named 'pkg_resources'
Traceback (most recent call last):
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/knack/cli.py", line 233, in invoke
    cmd_result = self.invocation.execute(args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/commands/__init__.py", line 666, in execute
    raise ex
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/commands/__init__.py", line 733, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/commands/__init__.py", line 703, in _run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/commands/__init__.py", line 336, in __call__
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/commands/command_operation.py", line 121, in handler
    return op(**command_args)
           ^^^^^^^^^^^^^^^^^^
  File "/Users/psetlur/.azure/cliextensions/bastion/azext_bastion/custom.py", line 145, in ssh_bastion_host
    _test_extension(SSH_EXTENSION_NAME)
  File "/Users/psetlur/.azure/cliextensions/bastion/azext_bastion/custom.py", line 78, in _test_extension
    from pkg_resources import parse_version
ModuleNotFoundError: No module named 'pkg_resources'
To check existing issues, please visit: https://github.com/Azure/azure-cli/issues

I'm also seeing this exact issue 'NoneType' object has no attribute '__dict_ when attempting to use az aks

Something that could be related to this issue. I am also unable to ssh into a VM using a bastion host.
➜  ~ az network bastion ssh --name aks-vnet-23126944-bastion --resource-group MC_aks-cilium-karpenter_aks_cilium-karpenter_westus --target-resource-id /subscriptions/xxxxxxxx/resourceGroups/aks-clium-karpenter/providers/Microsoft.Compute/virtualMachines/kubectl-client --auth-type ssh-key --username azureuser
The command failed with an unexpected error. Here is the traceback:
No module named 'pkg_resources'
Traceback (most recent call last):
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/knack/cli.py", line 233, in invoke
    cmd_result = self.invocation.execute(args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/commands/__init__.py", line 666, in execute
    raise ex
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/commands/__init__.py", line 733, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/commands/__init__.py", line 703, in _run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/commands/__init__.py", line 336, in __call__
    return self.handler(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/Cellar/azure-cli/2.65.0_1/libexec/lib/python3.12/site-packages/azure/cli/core/commands/command_operation.py", line 121, in handler
    return op(**command_args)
           ^^^^^^^^^^^^^^^^^^
  File "/Users/psetlur/.azure/cliextensions/bastion/azext_bastion/custom.py", line 145, in ssh_bastion_host
    _test_extension(SSH_EXTENSION_NAME)
  File "/Users/psetlur/.azure/cliextensions/bastion/azext_bastion/custom.py", line 78, in _test_extension
    from pkg_resources import parse_version
ModuleNotFoundError: No module named 'pkg_resources'
To check existing issues, please visit: https://github.com/Azure/azure-cli/issues

Weird, setuptools is missing.
I think this issue is caused by the 3.12 bump in homebrew. Wait for homebrew member's response: https://github.com/Homebrew/homebrew-core/pull/194884#issuecomment-2425815824

From my perspective, it could be caused by: https://github.com/Azure/azure-cli/issues/30148

I also ran into this problem. Was fixed with the latest update homebrew azure-cli (2.65.0_2).

brew upgrade azure-cli fixed the issue. Thank you for the quick fix!


Black fill on spline-area for Android

Hi,
While iOS works great, Android is showing a black fill for some reason. Any ideas?
iOS:

Android:

Thanks!
Luke

Hi, I also noticed that on Android and couldn't fix it. It seems to be a problem with ART on Android. Using react-native-svg instead of ART seems to fix that. I'm very busy at the moment, but some time soon I'll port this project over to use react-native-svg instead.

I just pushed the new code after the react-native-svg migration. I didn't get around to testing it on Android yet, but I think it should fix the fill issues. I'd appreciate it if you could try it out and let me know if it works now. Thanks!

I'm seeing the error "Can't find variable: Group" in the latest version.
I'd be happy enough with the old version for Android if I could remove the fill - is that achievable?

I think I fixed the Group error. ART used  tags and in react-native-svg they are called just .
The problem with the fill is the following:
To give the fill under the active marker that glow effect, we use a linear gradient for the fill, with stops placed where the markers are. All stops are 0.5 opacity, but the stop for the active marker, which has a value of 1 for opacity. As far as I can tell, linear gradient doesn't work for Android, i.e. it always renders black. These are the option I can think of we have:

Try the new version (1.0.2) and see if that works now
Instead of using spline-area, use spline on Android. This will only draw the line, without the area/fill below the line
I could add an option to the old code (the one using ART) that if it is running on Android it uses a solid colour instead of a liner gradient. Then however you wouldn't get the feedback of the selected point in the fill.
Fix the ART bug on Android or find a workaround :)

If you give 1.0.2 a try, please let me know if it works.

Hey - recorded a couple of videos to show some issues with the new ART when combined with setState Also it has an odd height. Old (ART) and new videos:
ART: https://ufile.io/bpy7a
SVG: https://ufile.io/paude

The setState issue should be fixed in 1.0.3. About the height: We always use 0 as the bottom of the Y axis. I suppose that is not a good assumption. For the next version I will try to add that you can set the Y axis range yourself or that it calculates it with some padding from the minimum and maximum Y values.


test gateway-mfr with signing and ecdh test

confirm that configuration works and ecc functions as expected.

Fixed by #6


Test/test workflow

Description of the Change

Benefits

Possible Drawbacks

Usage Examples or Tests [optional]

Alternate Designs [optional]

Codecov Report

:exclamation: No coverage uploaded for pull request base (iroha2-dev@1f1c8d7). Click here to learn what that means.
The diff coverage is n/a.

@@              Coverage Diff              @@
##             iroha2-dev       #8   +/-   ##
=============================================
  Coverage              ?   70.20%
=============================================
  Files                 ?      143
  Lines                 ?    28157
  Branches              ?        0
=============================================
  Hits                  ?    19768
  Misses                ?     8389
  Partials              ?        0

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 1f1c8d7...54a8812. Read the comment docs.


ownfile not working because of comma

Hi,
Trying to play own files via the "ownfile" node but sonos says it cannot play the file because it cannot contact 192,168,0,3:1980 (it should be <IP_ADDRESS>:1980)  to be clear, it is looking for 192 comma 168 dot 0 dot 3 instead of 192 dot 168 dot 0 dot 3
How can this happen ?

Hi
tried yet. It works.

Are you sure not to have commas instead of points in the config

window?

Too easy, thanks for the swift response.... works now


tsv-uniq: Add repeated lines option.

Add an option to print only repeated lines. Includes the ability to specify a minimum repeat count.

Codecov Report

Merging #129 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #129      +/-   ##
==========================================
+ Coverage   99.09%   99.09%   +<.01%
==========================================
  Files          16       16
  Lines        4437     4440       +3
==========================================
+ Hits         4397     4400       +3
  Misses         40       40

Impacted Files
Coverage Δ

tsv-uniq/src/tsv-uniq.d
100% <100%> (ø)
:arrow_up:


Python 3.10 support

Adds support for structural pattern matching introduced in Python 3.10.

Looks good to me.  I think the only thing missing is to add 3.10 to the list of versions exercised by github actions.  If you ever happen to be in London, or thereabouts, then I think I now also owe you a pint.

Ok, I'll update the actions. What do you think about upgrading all the actions to run on Python 3.10? I'd like to avoid disabling linting for Python 3.10 exclusives as I had to do in 01ad66d.
Also, I'll have to take you up on that pint if I'm ever in the area. Although, I'm not too much of a drinker myself and I've heard you all across the pond are professionals :smile:

Coffee also good.  Running all actions using 3.10 probably makes sense.  mypy is usually also quite slow with support for new versions so you might need to bump that dependency.

Ignore that last bit.  Apparently I never actually added mypy to the CI config.  I was a bit dubious about adding annotations to ssort because it made the project feel a bit too much like work.  Should probably revisit now that there are people actually using it.

I think adding mypy would be a big help. I've been trying to run it locally as much as possible to catch any issues; although, I may need to clean up some of the type annotations I added if we use it as a CI check. I'd be happy to work on that next.

That would be great.  There is also https://github.com/bwhmather/ssort/issues/23, which I suspect is biting lots of people who use venv.

(if you are wondering why I never finished that exclude branch, the black files module doesn't respect .gitignore files outside the project root.  There's a fair bit of work to do to make it match git, and I'm not sure whether it makes sense to do it without a plan to push the improvements back to black)


Forcing Horizontal doesn't work

What info can I provide?

If you mean the vertical layout doesn't work anymore, I can confirm this issue.
Switching to the vertical layout, either automatically or with Force tabs layout set to Vertical has no effect.
I will analyze the root cause and will fix in in the next release.
Thanks for reporting 👍

Sorry @jtagcat, but I'm getting a little ahead of myself here. I'm afraid I can't understand what you mean exactly.
Switching between horizontal and vertical layout works fine for me. No matter if automatically or via the Force tabs layout option. I have tested with Joplin v2.2.7 and the plugin version v1.4.0.
Please also note that if the option Force tabs layout is toggled, the changes will only become active after a restart of the app.
So could you please be a little more specific about what you are experiencing and what kind of behavior you would actually expect?

I have restarted the app, many times.
I can have a vertical layout, where the tabs are in a list, above-below themselves.
Setting it to automatic, it is always vertical, no matter I do.
Setting it to force horizontal (where tabs are left-right of each other) used to not work at all (keeping vertical).

Right now, it worked sub-optimally as seen on the image above: I would assume the tabs would be above the title of the note. ..and they can be. I checked the README again for reference, I didn't know there was a 'change application layout' button hidden in the drop-downs.
Pardon for troubling, pebcak.


Cannot view heic images in windows desktop app

When I receive an heic image, the image loads indefinitely and when I click on it, it says "failed to load image". It is only when I download the image and open it externally that I am finally able to view it.
Possibly related to something being wrong with the heic -> jpg conversion??
I'm using BlueBubbles version <IP_ADDRESS>

When I receive an heic image, the image loads indefinitely and when I click on it, it says "failed to load image". It is only when I download the image and open it externally that I am finally able to view it.
Possibly related to something being wrong with the heic -> jpg conversion??
I'm using BlueBubbles version <IP_ADDRESS>

Hi Jony, I believe that we fixed this partially in the latest server update that is unreleased as of right now. We basically auto convert HEIC images to JPEGs

Oh perfect, looking forward to the next server release!


Revert "Feat: migrate current diagram to view"

Reverts systeminit/si#4847
Migration failed again

Let's not merge this yet, we should keep some of the changes


Update dependency quay.io/enix/x509-certificate-exporter to v2.13.0

This PR contains the following updates:

Package
Update
Change

quay.io/enix/x509-certificate-exporter
minor
2.12.1 -> 2.13.0

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

[ ] If you want to rebase/retry this PR, click this checkbox.

This PR has been generated by Renovate Bot.

This one looks safe to merge according to https://github.com/enix/x509-certificate-exporter/releases/tag/v2.13.0


"this" value of function member of ProxyObject is incorrect depending on the way the function is called

For both myObject.myFunction() and myObject["myFunction"]() the value of this is myObject.
This is true both in Chrome and in GraalJS, when using JS objects.
However, when myObject is a ProxyObject only the latter works as intended while the former gets the global object as this.
The expected result would be that myObject.myFunction() also passes myObject as this, whether or not myObject is a ProxyObject.
Class to demonstrate the issue:
import org.graalvm.polyglot.Context;
import org.graalvm.polyglot.Value;
import org.graalvm.polyglot.proxy.ProxyObject;
public class TestRep {
    public static void main(String[] args) {
        Context c = Context.newBuilder("js").build();
        c.getBindings("js").putMember("jo", new ProxyObject() {
            private Object m;
            public void putMember(String key, Value value) { if ("mem".equals(key)) { m = value; } }
            public boolean hasMember(String key) { return m != null && "mem".equals(key); }
            public Object getMemberKeys() { return m != null ? new String[] { "mem" } : null; }
            public Object getMember(String key) { return "mem".equals(key) ? m : null; }
        });
        c.eval("js",
                "show = function(o, n) {" +
                "    console.log(``);" +
                "    console.log(n + `:`);" +
                "    o.mem = function() { console.log(this, ` / `, this.mem) };" +
                "    console.log(o, ` / `, o.mem); /* the expected object */" +
                "    o[`mem`](); /* expected: object */" +
                "    o.mem(); /* expected: object, incorrect for ProxyObject */" +
                "    x = o.mem;" +
                "    x(); /* expected: window/global */" +
                "    x = o[`mem`];" +
                "    x(); /* expected: window/global */" +
                "};" +
                "console.log(`expected: 3 x object, 2 x window/global`);" +
                "show({}, `JS Object`);" +
                "if (this.jo) show(jo, `ProxyObject`);");
    }
}

The script separately to compare with e.g. Chrome:
show = function(o, n) {
    console.log(``);
    console.log(n + `:`);
    o.mem = function() { console.log(this, ` / `, this.mem) };
    console.log(o, ` / `, o.mem); /* the expected object */
    o[`mem`](); /* expected: object */
    o.mem(); /* expected: object, incorrect for ProxyObject */
    x = o.mem;
    x(); /* expected: window/global */
    x = o[`mem`];
    x(); /* expected: window/global */
};
console.log(`expected: 3 x object, 2 x window/global`);
show({}, `JS Object`);
if (this.jo) show(jo, `ProxyObject`);

Your test-case is a bit tricky despite it looks relatively simple at the first sight. I will try to explain what (I believe) is going on here.
I will start with repeating two sentences that I wrote into your last issue: The ability to pass this as an additional argument during function invocation is specific to JavaScript. On the other hand, the Polyglot API (org.graalvm.polyglot) is supposed to be language agnostic.
When JavaScript code evaluates o.mem(), it realizes that o is not a JavaScript object. So, it does not know what exactly the invocation of its mem method should do. Hence, it delegates the invocation to o. o being ProxyObject (that comes from Polyglot API) knows nothing about JavaScript-specific this argument of function invocation. So, it executes the function without passing this argument (= as if this was undefined).
When JavaScript code evaluates o['mem'](), it reads mem member of o. Accidentaly, o['mem'] is a JavaScript function (despite o is not a JavaScript object). Realizing this fact, JavaScript invokes this function with full JavaScript semantics (i.e. including this being set to o).
While you may like the behaviour of o['mem'](), one may argue that it should behave in the same way as o.mem(), i.e., that o['mem']() should delegate the invocation of mem to o (because it is its member; so o should the one who decides how the invocation is performed).
In other words, I am afraid that if the inconsistency (between o.mem() and o['mem']()) is going to be fixed, it will be in the opposite direction than the one you expected, i.e., this will be "broken" for o['mem']() as well.

Generally, I suggest you not to rely on language-specific stuff (like this in JavaScript calls) when doing interoperability with other objects/languages (if possible). If you really need this in such JavaScript function call then I suggest you to "export" (out of JavaScript code) a function that has this bound.

Thank you for getting back so quickly and in so much Detail. However, neither I, nor colleagues of mine that also looked into it, are sure we understand why the behavior should be that way. I have collected our thoughts on it, with some additional information:
Theory:
So, do we understand correctly that "full JavaScript semantics" are intentionally not applied when the object containing the function is a ProxyObject? If so, we don't understand the reasoning behind it. We expected ProxyObjects to be treated just like normal/native JS objects, at least from the view of the script. Or is there a technical reason not to retrieve the function from the object and then call it with that object as "this"? If not, we see no advantage in not having the object as "this", while the disadvantage seems to be a loss of information.
Background:
In PDFreactor we have implemented a JS environment that mimics browser behavior, except for interactive functionalities. This is currently based on a modified version of Rhino. We primarily expose our Java DOM to JS, which works well as we use W3C interfaces and only have to map those properly. We want to migrate this system to GraalJS.
Use-Case:
We're working on ProxyObjects as wrappers for Java objects to handle various mappings (setter/getter to member, add ProxyArray where applicable). The functionality related to this issue is as follows: We're implementing functionality that maps the Interfaces of the Java Objects to proto objects in JS. The goal is to put ProxyExecutables that wrap Java Methods into those prototype objects. So these ProxyExecutables require the "this" value to have the instance of the Java object to invoke the Method on. (This is similar to Chrome behavior. Placing the "append" function from a DOM Element into a variable and calling that causes an exception. But when put into an Element, or given one as "this" via "call" or "apply", it works correctly, on that Element.) When using o['mem']() this works fine. So we hope o.mem() can be adapted to do the same (maybe as an option).

So, do we understand correctly that "full JavaScript semantics" are intentionally not applied when the object containing the function is a ProxyObject?

You lose "full JavaScript semantics" because you leave the realm of JavaScript by using non-JavaScript objects like ProxyObject (provided by Polyglot API). While we do our best to handle non-JavaScript objects as close to JavaScript semantics as possible, there are inevitable deviations caused by the fact that Polyglot API is an API that is not JavaScript specific (it is a general API covering all kinds of languages) and as such does not support all JavaScript-specific subtleties.

Or is there a technical reason not to retrieve the function from the object and then call it with that object as "this"?

This suggestion is focused too much on your particular test-case. In general, the semantics of an invocation of a member of a non-JavaScript object may be completely different (for example, the corresponding member may not be readable). Hence, the invocation should be delegated to the receiver/target (as this object has the most information about the meaning/semantics of the invocation of its members).
Anyway, I don't want this issue to turn into a lesson on our Polyglot API and/or our design decisions (changes in this are too slow anyway). So, let's focus on what you really need to solve. As I mentioned, the root of the problem is your usage of JavaScript functions as members of ProxyObject. It is not clear what you are getting by not using pure JavaScript object (or JavaScript Proxy) instead. I believe that you can refactor your code a bit to achieve what you need.

For example, one simple change that may or may not be suitable for you is to wrap your ProxyObject by JavaScript Proxy (i.e. use show(new Proxy(jo, {}), "ProxyObject")). You will have to modify the debugging output of your test-case a bit (as new Proxy(jo, {}) cannot be converted to string because it is a JavaScript object that has neither toString() nor valueOf()) but you will get the right this for both o.mem() and o['mem'](), I believe. Of course, the direct usage of JavaScript Proxy (and the complete avoidance of ProxyObject) may be a more appropriate change in your case.


Add box selection modes for Touched/Contained/By Drag Direction

Fixes #2041

added a function is_layer_fully_inside to determine if a layer is fully inside a selection box or not which will eventually helps to select objects in rightward direction.

I'll mark this as a draft until you've also added this to the user preferences dialog, with a choice between "Touched", "Contained", and "By Drag Direction". Please mark it as Ready for Review and ping me when that's ready. Thanks!

!build

There's a merge conflict, please resolve that and I'll get to QA and code review after that.


Hybrid decorators do not lift reactive properties through subclasses

Which package(s) are affected?
Other/unknown (please mention in description)
Description
See https://github.com/lit/lit/pull/4184 which reproduces the issue.
This was found when testing the new Hybrid decorators in the MWC repo. They use a pattern that looks like this:
class Button extends LitElement {
  @property() exampleProp = '';
  // Lots of implementation
}

@customElement('md-button')
class MdButton extends Button { }

The addition of @customElement on MdButton causes the reactive property exampleProp to not work correctly on MdButton.
A possible workaround is replacing @customElement with a customElements.define(...), which fixes the issue.
See the failing test cases here: https://github.com/lit/lit/pull/4184/commits/b846db696516a284cc5c5f700a20fb71c620edaa
class BaseTest extends ReactiveElement {
  @property() first = 'first';
}

class SubClass extends BaseTest {
  @property() second = 'second';
}

Now if the SubClass is initialized with: container.innerHTML = '<sub-class first="overrideFirst" second="overrideSecond"></sub-class>'
subclass.first is first, but I expected overrideFirst.
subclass.second is correctly set to overrideSecond.
Reproduction
na
Workaround
na
Is this a regression?
No or unsure. This never worked, or I haven't tried before.
Affected versions
Not released
Browser/OS/Node environment
N/A

Fixed by https://github.com/lit/lit/pull/4204


Failures on [VM/Runtime] - Do not try to resolve exec path for default namespace...Revert "AnalysisDriver. Produce results for all files of a library."

There are new test failures on [VM/Runtime] - Do not try to resolve exec path for default namespace...Revert "AnalysisDriver. Produce results for all files of a library.".
The tests
standalone/io/regress_54516_test RuntimeError (expected Pass)

are failing on configurations
vm-aot-android-release-arm64c
vm-aot-android-release-arm_x64

The newly added test fails on android:
--- Command "vm_compile_to_kernel" (took 01.000778s):
DART_CONFIGURATION=ReleaseAndroidARM64C /b/swarming/w/ir/pkg/vm/tool/gen_kernel --aot --platform=out/ReleaseAndroidARM64C/vm_platform_strong.dill -o /b/swarming/w/ir/out/ReleaseAndroidARM64C/generated_compilations/vm-aot-android-release-arm64c/tests_standalone_io_regress_54516_test/out.dill /b/swarming/w/ir/tests/standalone/io/regress_54516_test.dart -Dtest_runner.configuration=vm-aot-android-release-arm64c --packages=/b/swarming/w/ir/.dart_tool/package_config.json -Ddart.vm.product=false --sound-null-safety

exit code:
0

--- Command "precompiler" (took 02.000213s):
DART_CONFIGURATION=ReleaseAndroidARM64C out/ReleaseAndroidARM64C/clang_x64/gen_snapshot --snapshot-kind=app-aot-elf --elf=/b/swarming/w/ir/out/ReleaseAndroidARM64C/generated_compilations/vm-aot-android-release-arm64c/tests_standalone_io_regress_54516_test/out.aotsnapshot --loading-unit-manifest=/b/swarming/w/ir/out/ReleaseAndroidARM64C/generated_compilations/vm-aot-android-release-arm64c/tests_standalone_io_regress_54516_test/ignored.json --sound-null-safety -Dtest_runner.configuration=vm-aot-android-release-arm64c --ignore-unrecognized-flags --packages=/b/swarming/w/ir/.dart_tool/package_config.json /b/swarming/w/ir/out/ReleaseAndroidARM64C/generated_compilations/vm-aot-android-release-arm64c/tests_standalone_io_regress_54516_test/out.dill

exit code:
0

--- Command "remove_kernel_file" (took 10ms):
DART_CONFIGURATION=ReleaseAndroidARM64C rm /b/swarming/w/ir/out/ReleaseAndroidARM64C/generated_compilations/vm-aot-android-release-arm64c/tests_standalone_io_regress_54516_test/out.dill

exit code:
0

--- Command "strip" (took 31ms):
DART_CONFIGURATION=ReleaseAndroidARM64C third_party/android_tools/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --strip-unneeded /b/swarming/w/ir/out/ReleaseAndroidARM64C/generated_compilations/vm-aot-android-release-arm64c/tests_standalone_io_regress_54516_test/out.aotsnapshot

exit code:
0

--- Command "adb_precompilation" (took 543ms):
Steps to push precompiled runner and precompiled code to an attached device. Uses (and requires) adb.

exit code:
255

stdout:
Executing adb -s HT7BG1A04039 shell rm -Rf /data/local/tmp/precompilation-testing/test ; echo AdbShellExitCode:  $?
Stdout:
AdbShellExitCode: 0
ExitCode: 0
Time: 0:00:00.067889

Executing adb -s HT7BG1A04039 shell mkdir -p /data/local/tmp/precompilation-testing/test ; echo AdbShellExitCode:  $?
Stdout:
AdbShellExitCode: 0
ExitCode: 0
Time: 0:00:00.089719

Executing Skipped cached push
ExitCode: 0
Time: 0:00:00.000041

Executing Skipped cached push
ExitCode: 0
Time: 0:00:00.000006

Executing Skipped cached push
ExitCode: 0
Time: 0:00:00.000002

Executing Skipped cached push
ExitCode: 0
Time: 0:00:00.000004

Executing adb -s HT7BG1A04039 shell chmod 777 /data/local/tmp/precompilation-testing/dart_precompiled_runtime /data/local/tmp/precompilation-testing/process_test /data/local/tmp/precompilation-testing/abstract_socket_test ; echo AdbShellExitCode:  $?
Stdout:
AdbShellExitCode: 0
ExitCode: 0
Time: 0:00:00.065840

Executing adb -s HT7BG1A04039 push /b/swarming/w/ir/out/ReleaseAndroidARM64C/generated_compilations/vm-aot-android-release-arm64c/tests_standalone_io_regress_54516_test/ignored.json /data/local/tmp/precompilation-testing/test/ignored.json
Stdout:
/b/swarming/w/ir/out/ReleaseAndroidARM64C/generated_compilations/vm-aot-android-release-arm64c/tests_standalone_io_regress_54516_test/ignored.json: 1 file pushed, 0 skipped. 5.9 MB/s (625 bytes in 0.000s)
ExitCode: 0
Time: 0:00:00.031807

Executing adb -s HT7BG1A04039 push /b/swarming/w/ir/out/ReleaseAndroidARM64C/generated_compilations/vm-aot-android-release-arm64c/tests_standalone_io_regress_54516_test/out.aotsnapshot /data/local/tmp/precompilation-testing/test/out.aotsnapshot
Stdout:
/b/swarming/w/ir/out/ReleaseAndroidARM64C/generated_compilations/vm-aot-android-release-arm64c/tests_standalone_io_regress_54516_test/out.aotsnapshot: 1 file pushed, 0 skipped. 1902.5 MB/s (1573808 bytes in 0.001s)
ExitCode: 0
Time: 0:00:00.089290

Executing adb -s HT7BG1A04039 shell export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local/tmp/precompilation-testing/test;export TEST_COMPILATION_DIR=/data/local/tmp/precompilation-testing/test;/data/local/tmp/precompilation-testing/dart_precompiled_runtime --android-log-to-stderr --sound-null-safety -Dtest_runner.configuration=vm-aot-android-release-arm64c --ignore-unrecognized-flags --packages=/b/swarming/w/ir/.dart_tool/package_config.json /data/local/tmp/precompilation-testing/test/out.aotsnapshot ; echo AdbShellExitCode:  $?
Stdout:
AdbShellExitCode: 255
Stderr:
Unhandled exception:
Expect.isTrue(false) fails.
#0      Expect._fail (package:expect/expect.dart:721)
#1      Expect.isTrue (package:expect/expect.dart:152)
#2      main (file:///b/swarming/w/ir/tests/standalone/io/regress_54516_test.dart:18)
#3      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297)
#4      _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184)
ExitCode: 255
Time: 0:00:00.103937

--- Re-run this test:
python3 tools/test.py -n vm-aot-android-release-arm64c standalone/io/regress_54516_test

Maybe the test should use // OtherResources= to make sure extra file is copied.
/cc @a-siva

Missed adding OtherResources in the test, this CL should take care of it https://dart-review.googlesource.com/c/sdk/+/345861

Above CL has landed closing issue.


[Suggestion] - Reintroduce nodes as a far more compact vis battery.

Nodes have always an important and interesting part of Thaumcraft, so it seems a shame they do not have any part in TC6. Additionally, the current vis batteries are just... unsatisfying. However, their Thaumonomicon entry in which it is mentioned their capacity cannot be increased opens a great possibility. What if a player could create their own nodes? These nodes would likely be expensive, and require a constant stabilization to neutralize any explosive side-effects. They would probably ensure their balance by accepting a primordial pearl of some sort to be created. However, their use is the important part. They could either be a massive vis battery, or an infinitely dense pile of silverwood leaves. xD
They could basically store... 5-10K(?) vis or create vis at the rate of one-per-second, or something like that. Its just an absolute shame nodes have been removed. I have a thought you are planning something with them, but wanted to give some ideas in case they were wanted.

I like the environmental and lunar-cycle based vis balance going on so far in TC6, I think a return to nodes in any even remotely similar way to how they were present before would detract from the current system.
As it is now there's more of a focus on vis and flux as an inherent part of the world that you need to be mindful of, rather than as a side effect of aura nodes.  Feels a bit closer to TC2 than before and I'm excited to see how things go further into development with that.

The environment and lunar systems are novel... but they can become obnoxious when you are using large amounts of vis and have to wait for a full/new moon (whichever it is) to get real vis regen.
The silverwood vis generation is a good concept... but I don't think it is something a late-game thaumaturge would see themselves using (at least with the whole lore of the mod). The system is a little similar to Astral Sorcery... the nodes were an exceptionally unique system. Tbh, the Demon Will Aura in Blood Magic is very similar to thaumcraft's...

I don't see how you could feasibly run out of vis in your area and need to wait any large amount of time to start progressing again.  With the workbench charger and both crystal clusters and vis batteries to expand the aura's capacity, you'd be hard-pressed to actually manage to use up all the surrounding vis.

If you are using vis for crafting, yes.
But using vis for foci like like plan -> break, or any focus with a long chain of effects stacks up very quickly. I have to break multiple times during a "big dig" just to the the aura recoup. A node with some sort of effect to alleviate this issue would we welcome. Maybe a node gives a status effect that is essentially the opposite of flux flu, that increases vis efficiency.

I like the idea of nodes acting as continuous aura generators that regenerate vis at a constant rate (like 1 vis/tick) and will stop once the aura is full. If a primordial pearl is required to craft this, it would become a very rare late-game object, so being a powerful tool to manipulate vis would be welcome. It is kind of annoying that using enough stabilizers to make expensive infusions drains huge amounts of vis that can't be regenerated easily.

 Maybe add a way for a "stable Rift/Node", which are connected to a more magical (pure) place that push Vis to the Aura, replenishing and maybe expanding the Aura, also causing a bit of Flux (like stressing the local Aura, like mirrors). Maybe an inferior or more unstable version, which has greater Flux penalties. (The whole concepts seems like a potential big Expansion of Auromancy?)

This issue was moved to Azanor/thaumcraft-suggestions#456


New Port Red Handsome Hood

New Port for Red Handsome Hood
Game Information

Title: Red Handsome Hood
URL: https://bolhut.itch.io/red-handsome-hood

Submission Requirements
CFW Tests
Ensure your game has been tested on all major CFWs:

[X] AmberELEC
[X] ArkOS
[X] JELOS

Resolution Tests
Test all major resolutions:

[X] 480x320
[X] 640x480
[X] 720x720 (RGB30)
[X] Higher resolutions (e.g., 1280x720)

File Structure

Your port should have the following structure:

portname/

port.json
README.md
screenshot.jpg
cover.jpg
Port Name.sh
portname/

Additional Resources
For an in-depth guide on creating a pull request, refer to: PortMaster Game Packaging Guide

Okies, added :)


I want to pick up the camera. How can I change it?

I want to pick up the camera. How can I change it?  please Help me

@hangzhaomit  why ? help me


Theres any way no plot inline, i.e without call plt.show()?

There's anyway make automatically plot every time return a matplotlib object, similar to Jupyter?

I think there should be by using the xonsh display method mechanism. You would have to monkey-patch the Axes and Figure objects to get that to work


Group call?

can you add features with group call?

It work with group call

but it says conferencing not yet implemented!?


Exception message "IAuthenticationSchemeHandler"

IAuthenticationSchemeHandler is missing. IAuthenticationHandler, is not it?

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot


When "Add Record" button pressed, it moves unexpectedly

Completed this by changing the styling and layout. Check out the new features.


Calibrate to factory setting

Required Info

Camera Model
D435

Firmware Version
<IP_ADDRESS>

Operating System & Version
Win (10)

Platform
PC

SDK Version
2.32

Language
C++

Segment
desktop app

Issue Description
I seemed to have butchered my camera by calibrating with the realsense depth tool gui.
so i checked this site
https://dev.intelrealsense.com/docs/self-calibration-for-depth-cameras
and tried to recalibrate.
I wrote

rs2::pipeline pipex;
rs2::config cfgx;
cfgx.enable_stream(RS2_STREAM_DEPTH, 256, 144, RS2_FORMAT_Z16, 90);
rs2::device dev = pipex.start(cfgx).get_device();
rs2::auto_calibrated_device cal = dev.asrs2::auto_calibrated_device();
cal.reset_to_factory_calibration();
return 0;

I got

RealSense error calling rs2_pipeline_start_with_config(pipe:000001FADCFC7790, config:000001FADCFC7240):
Failed to resolve the request:
Format: Z16, width: 256, height: 144
Into:
Formats:
Z16

I'm missing something obvious I'm sure.
Thanks.

Also, not the OP subject but what is the ideal way to light a room for depth(only) data. I know to avoid natural light and halogen(?)
but  should  i get  a studio light? does it make a difference?

Hi @arothenberg   You can also reset the camera to its factory calibration by using the Dynamic Calibrator tool.   you can download it for Windows from the link below.
https://downloadcenter.intel.com/download/29618/Intel-RealSense-D400-Series-Dynamic-Calibration-Tool
Installing the calibrator tool package also installs a program called CustomRWthat can be launched from the Windows Command Prompt text interface.  The CustomRW program has a factory reset command.
You can find the Command Prompt by typing command into the text box at the base of the Windows screen, next to the button in the corner where the PC is shut down.
Once the Command Prompt window is open, you can activate the factory reset function of CustomRW by launching it in the Command Prompt with the command below:
Intel.RealSense.CustomRW -g

In regard to lighting, you do not need to avoid natural light as the Vision Processor D4 hardware inside the 400 Series cameras is able to auto-adjust to changing lighting conditions very well.  In fact, the 400 Series cameras work even better in strong light.
I would recommand avoiding fluorescent lights such as ceiling strip lights that contain heated gas instead of a bulb though, as they can flicker at frequencies that are hard to see with the human eye and introdue noise into the image.   If you cannot avoid such lights in the scene, try setting the camera FPS to a frequency that is close to the operating frequency of the particular fluorescent lights in the scene.  For some lights it might be 60 FOs and for others it may be 30 FPS.
If you do not have strong light present in the scene then you can use the camera's IR emitter to cast a semi-random dot pattern over the scene.  The camera can use these dots as a texture source to analyze surfaces that the dots are cast upon for depth information.  The laser-based projector in the 400 Series cameras can introduce a noise phenomenon called laser speckle though, so if you need to use a dot pattern projection then it may be worth using an external LED pattern projector instead.
Alternatively, you could add an external IR Illuminator to the scene to provide a light-source to aid the camera's depth analysis.
https://github.com/IntelRealSense/librealsense/issues/2000

Awesome. thanks you for all of that. that did it.
The manual is a little hinky because it misstates the path to the exe on page 58 jfyi.
I have no natural light in the studio  so I'll try that led.
Thanks again Marty.

One more comment on this.
That LED helped a lot. I have a dark studio a model and a white back drop. the LED lights got
rid of a lot of mess from the background  regrading the depth image.
I think this is the quality of the image I've been looking for.
Thank you.

That's great news that LED worked out for you so well.  Thanks very much for the update!   :)


Unable to update the Databricks connection of a Power BI report.

We wanted to update the databricks cluster URL which we have environment specific. we tried with existing connect types and no luck. please share if we have option to replace the same on a specific report.

Do you have any information regarding this?

Sure maikvandergaag!
We are using parameter to control databricks URL in the PBI file. So, having option to update the dataset parameter can achieve our requirement. appreciate your help!

Will not be incorporated within the extension at this moment. Will be happy to support a pull request for this addition


cfn-signal is not sent in time or at all after beinstances are created

The beinstances are not sending the success signal or the timeout is too low. I checked the code in the BEStack and it was set to 10M which I increased to 30M and it still timed out. I can see the instance in EC2 console and all seems to be ok. Not sure why the stack is not getting the success signal. I have tried both templates, the new VPC and my own and get the same error.

To fix this, we have submitted a PR #25 , which is currently under review.


Laravel9 | Profile > Edit causes exception

Editing profile causes below exception, probably related to user avatar image 'cause it is the only file related part of a user's profile.
League\Flysystem\Filesystem::delete(): Argument #1 ($location) must be of type string, null given
Version
Laravel9 branch
To Reproduce

Go to your profile
Click on edit
Scroll down and click save
See error

Screenshots

Moved to PR as comment


Provide command to update namespace key in wskadmin-next

Currently wskadmin (and next) provide way to add a namespace with specific auth key.
 wskadmin user create -ns foo --auth uuid:key

In some cases we need a way to update the namespace key with a specific auth even if it already exists. One way would be to add a -f, --force flag to enable this override behaviour
wskadmin user create -ns foo --auth uuid:key -f

Do you mean to set the uuid and key or just the key?
Can we add a revoke flag to change just the key? This is handy.

Do you mean to set the uuid and key or just the key?

For our case both. Objective here is that credentials for some system namespaces are stored in separate store and deployment logic would ensure that one in db matches the one in credential store used by deployment

Can we add a revoke flag to change just the key? This is handy.

That would be useful (cc @duynguyen)


Polymer 0.5 dependency left in index.html

After invoking bower install --save "file-input#^2.0" there is an file-input/index.html which contains references to the old Polymer:
  <script src="../webcomponentsjs/webcomponents.js"></script>
  <link rel="import" href="../polymer/polymer.html">
  <link rel="import" href="../core-component-page/core-component-page.html">

This is needed to render the documentation page. You will see that the library itself does not use polymer. I have no plans to upgrade the docs to use a later version of polymer or to not use polymer.


ci(approve): add the required permissions

This fixes the permissions of the Dependabot PR auto-approver, so that we can re-enable it again.

Probably going to write some code to automate it - check checks, approve if needed, merge, wait a bit and repeat until done.

Why not automate it in a workflow? The on.check_suite syntax allows us to trigger a workflow when a check suite has finished. I think we could then use an if: statement to skip the job unless the check suite failed due to a merge conflict, and otherwise add a comment @dependabot rebase.
Of course, we could also try to rebase ourselves, figuring out which package was updated, and then push the result, but if we try to do that via a workflow with permissions: contents: write, then the check won't run again because an event triggered by a workflow cannot trigger another workflow, whereas an event triggered by a workflow can trigger Dependabot which in turn can trigger another workflow. (Yes, this is a bit convoluted.)

Oh, we could instead trigger [on: pull_request: types: ['synchronize']](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request and skip the job if github.event.pull_request.mergeable_state != "dirty" (which seems to be the indicator of merge conflicts, if there are no merge conflicts, the value will be "clean" according to my tests).


Priority to $onlyIf

The Code:
{
name: "ty ?cancle",
category: "TOURNEY",
description: "CANCLE A USER'S REGISTRATION.",
usage: "?ty ?cancle <REGISTRATION MESSAGE IN-REFERENCE",
example: "NA",
note: "NA",
preview: "NA",
$if: "v4",
code: `
$if[$messageExists[$advancedTextSplit[$getUserVar[$getServerVar[$getChannelVar[TyGroupID;$channelID]];$getMessage[$channelID;$referenceMessageID;userID]];_;3];$getChannelVar[TourneyCT;$channelID]]==true]
$editMessage[$get[CT];Your slot is cancelled;$get[CTC]]

$else
$endif
$onlyIf[$referenceMessageID!=;Error]
$onlyIf[$getChannelVar[TyGroupID;$channelID]!=;{newEmbed:{author:COULDN'T PROCESS YOUR REQUEST}{title:THIS CHANNEL DOESN'T SUPPORTS TRACKING}{footer:$toUppercase[$UserName[$clientID]]}{color:RED}}]

`

},
Issue:
$onlyIf returns it's error message but $if block still checks it's statement and return an extra error.
Information:

aoi.js version: 5.5.5

Screenshots (If any): Image or Link
https://media.discordapp.net/attachments/944097051665387541/1006820106594172958/1660115015010.png

response in #405


Hooks with Functional Components

I'm submitting a ...

[x] feature request

Hooks with Functional Components.

Resolved in https://github.com/RommelTJ/react-hooks-simple/pull/4


HAX CMS Preliminary Layout and Styles

action buttons operations

[ ] create with preset themes (a la gDocs)
[ ] import
[ ] clone
[ ] delete
[ ] publish to web
[ ] sync with repo
[ ] listing item

[ ] select box
[ ] icon or image
[ ] title and subtitle
[ ] filter dates
[ ] action buttons/operations
[ ] more button

[ ] filter bar
[ ] top bar nav

[ ] Left logo
[ ] HAX CMS custom header name (HAX Publisher in this case)
[ ] account settings link
[ ] docs link
[ ] cms settings link

Some more visual ideas for configuration of sites using the outline designer tool to write either separate json files that gets merged or to write to parts of a master json file. Config is visually stitched together here with a simple node flow wires, but this can be done with a different UI as well. I'm, thinking about themes as distinct user contexts and in this situation, a course with auto-generated OER/LRMI/CC Schema would require different configuration than would a blog or a digital book.

Ideas for a global theme, regions, and styles design UI.

Ideas for content editing.

See also https://codepen.io/michael-collins/pen/memxpe

Related medium design tool article: https://uxdesign.cc/design-tools-are-holding-us-back-1aca266b333e

Higher res of all the things:

@michael-collins thanks for posting these.
Could you add labels to the pages in this for new people to know the designation between what's more of a HAX specific thing and whats more of a HAXcms specific thing? I know this from looking through but as we'll have more people joining the project, @nikkimk starting into HAX / editor related things, and a focus on documentation and community building, I'd like to make sure we're all on the same page about these comps.
Personal thoughts:

I like a lot of the individual widgets, icons, areas and styles associated w/ buttons and small bits that currently are only partly designed in HAX.
Especially like the largely two-tone, B/W, small amounts of grey, small amounts of height, small touches of color. 0.12.0 of HAX/HAXcms starts pushing toward this color direction so that it's easier to do next steps to work toward this comp
I really like the selected vs deselected vs grid plate / move bar vs paragraph highlighted as far as active both in colors and spacing. These could be easy next steps for working into HAX without completely disrupting the way it works
There's currently no connotations of going into an editable state, where the options to add things appear or if it's only in the + menu (which its possible it is I'm just confused so correct me here) :)
I like the idea of the plus sign / inline add a thing but I think we'll need to envision how it might have a form of preview or search or something to make it more robust. We've been asked by multiple ppl to have a way to preview the widget you're about to select so that people know what they'll get when they pick "full width image" vs "simple image" (or whatever the designation). So having some way of filtering things based on type of media (which we have tags under the hood we're not using yet) and then allowing the user to preview / see an example of that prior to adding might be key to improving user awareness of what they're about to get by pushing a button (realizing it can be undone easily)
The node flow stuff is definitely lower priority then the rest. I think we should focus on visual treatment, improving the UX of HAX itself which will help HAXcms, then normalize HAXcms to match HAX across platforms and move forward from there

That's it for now. I really like this direction, just think we need more awareness of HAX. The bar across the top w/ options is a love hate thing for sure and I think something we'll need additional user base to hash out which they prefer. From looking at Gbug studies there seems to be a bit of hate around "where are the text options" when working with Text as it's at the top of the page / moves around vs being right in context. Additionally the (+) in Gbug is easy enough to use but does take up a lot of real estate and I know causes A11y issues.
I think we're lacking designs / capability in a type of side bar that provides all contextual / advanced options / common place to drag and drop new items in from. Much like a draw.io or something like that which has a pallet of options on the side that the user knows "I am editing and I can do X" at a glance. Also makes it easier to have the keyboard focus back into an area after adding things for accessible drag and drop among other things.
I'd love to see some way of incorporating the options we have currently in a fly out across the top into a bar that has all those capabilities.  This is definitely an area for separating ourselves from the UX traps of Gbug so we should look at their audits and learn from their mistakes, while also forging our own audits.

Node/Graph design inspiration thread from another project: https://github.com/prisma/studio/issues/198

@btopro I just saw your comments from October 20. Will work on this early January.

Really nice minimal interface inspiration: https://prisma-studio.now.sh

Graph inspiration. Open source interface for graphql editor: https://github.com/graphql-editor/graphql-editor/

This is for UI improvements and styling. Node flow content outlining isn't even remotely in scope until a legit element that helps do it all emerges which still has yet to happen. If this is a dream board then cool

This is the thread where we put ideas and inspiration for the UI. Many comments I am leaving here are to help catalogue UI ideas.

Example of the collapsed multi-browser left bar with access to scoped items:


You can have it


Update UG

Codecov Report

Merging #339 (79cc094) into master (06b8c1e) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #339   +/-   ##
=========================================
  Coverage     64.60%   64.60%
  Complexity      701      701
=========================================
  Files           112      112
  Lines          2557     2557
  Branches        332      332
=========================================
  Hits           1652     1652
  Misses          775      775
  Partials        130      130

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 06b8c1e...79cc094. Read the comment docs.


Update the Playwright version

Description

This PR updates the Playwright version to the most current version, 1.25. This will allow us to use HAR recordings introduced in version 1.23.
For some reason, it also removes a lot dependencies in the lock file.
Testing Instructions

Playwright CI tests should pass.
Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

Here's another cool feature added in 1.24:
https://playwright.dev/docs/release-notes#-component-tests-update

I don't know what's happening, but the node_modules seems to be not available in the Docker container. This prevents the container from running Playwright and talkback together. I wonder if it's related to the multistage build.

We don't use a multi-stage Dockerfile for playwright. We also don't explicitly copy node_modules into the container because we expect it to be mounted by docker-compose: https://github.com/WordPress/openverse-frontend/blob/c4a117a11ddda2d0085506c88284db43e2784223/docker-compose.playwright.yml#L10
Indeed, it does get properly mounted:
➜  openverse-frontend git:(update/vue) ✗ USER_ID=$(id -u) docker-compose -f docker-compose.playwright.yml run playwright bash
pwuser@72718588e85e:/app# ls
CODE_OF_CONDUCT.md     LICENSE                        ecosystem.config.js      nuxt.config.ts      tailwind.config.js     typings
CONTRIBUTING.md        README.md                      feat                     package.json        tailwind.safelist.txt
DEPLOYMENT.md          TESTING_GUIDELINES.md          jest.config.js           pnpm-lock.yaml      test
Dockerfile             bin                            node_modules             prettier.config.js  test-results
Dockerfile.playwright  docker-compose.playwright.yml  nuxt-template-overrides  src                 tsconfig.json
pwuser@72718588e85e:/app# ls node_modules/.bin
acorn                     dot-object              import-local-fixture  nanoid           run-s                      ts-node-transpile-only
ansi-html                 editorconfig            is-ci                 nopt             sane                       ts-script
ansi-to-html              errno                   is-docker             npm-run-all      semver                     tsc
atob                      escodegen               jest                  nuxt             sentry-cli                 tsserver
autoprefixer              esgenerate              jest-runtime          nuxt-cli         sha.js                     uglifyjs
babylon                   eslint                  jiti                  nuxt-storybook   sitemap                    uuid
browserslist              eslint-config-prettier  js-beautify           nuxt-telemetry   start-storybook            vue-demi-fix
build-storybook           esparse                 js-yaml               opencollective   storybook-server           vue-demi-switch
color-support             esvalidate              jscodeshift           opener           svgo                       vue-i18n-extract
css-beautify              flat                    jsesc                 parser           tailwind                   vue-tsc
css-blank-pseudo          glob-all                json5                 pidtree          tailwind-config-viewer     watch
css-has-pseudo            handlebars              lint-staged           playwright       tailwindcss                webpack
css-prefers-color-scheme  he                      loose-envify          prettier         tailwindcss-config-viewer  webpack-bundle-analyzer
cssesc                    html-beautify           lz-string             regexp-tree      terser                     which
default-browser-id        html-minifier           miller-rabin          regjsparser      ts-node                    x-default-browser
detect                    html-minifier-terser    mime                  replace-in-file  ts-node-cwd
detect-port               husky                   mkdirp                rimraf           ts-node-esm
detective                 image-size              mustache              run-p            ts-node-script

Even npm-run-all is there and has the correct permissions (owned by pwuser):
pwuser@72718588e85e:/app# ll ./node_modules/.bin | grep npm-run-all
-rwxr-xr-x  1 pwuser pwuser   556 Aug 24 17:08 npm-run-all*

I can even execute it just fine.
It turns out that Playwright at some point changed the execution context of the webserver command to be the same directory as the configuration file instead of the cwd from where Playwright was called.
Adding cwd: '/app', to the webServer configuration fixes the issue.

It turns out that Playwright at some point changed the execution context of the webserver command to be the same directory as the configuration file instead of the cwd from where Playwright was called.

I found the PR that changed the context: https://github.com/microsoft/playwright/pull/13626
I tried simply adding the  cwd: '/app', but it didn't work.

It looks like the tests did run, there just appear to be a lot of visual regression failures. Could those come down to the change in browser version that accompanies a playwright upgrade? Maybe there was something else I missed in the logs?

@sarayourfriend, it seems that all of the test failures here are due to some differences in the Arabic texts, or the way they are rendered. You can see some NUL symbols on this snapshot, for example:

Interesting... I wonder if the fonts changed in the container's base image or something :thinking:

I tried other versions, and all up to 1.25 work well. You can see version 1.24 pass the CI with all the same setting, and v1.25 has lots of visualization regression failures.
One more thing I noticed in v1.25 Docker container logs is "Running playwright: config file not found" when running the tests. Although it must have found it to run the tests...

I think we can keep the version updated to 1.24 in this PR, and invesigate newer versions later, as it's not such a high priority now.


Reorganise input of design metadata and input them into generated files

Metadata about the design -- designer, contact, license, etc. -- is important. I'd like to add those to the generated files like the Gerbers (license header, for example) and the SVG in the document property dialog (the screen grabs below are from Inkscape 1.0beta2).

PCBmodE will now insert the specified metadata into the Inkscape SVG so it appears in the Metadata and License tabs in Inkscape's Document Properties. I've also encountered an Inkscape bug, and suggested improvements:
https://gitlab.com/inkscape/inkscape/issues/639
https://gitlab.com/inkscape/inbox/issues/1511