ModbusServerRTU not working reliable for function code 0x10

My client (windows PC) ask from my server (ESP32) to write holding registers (0x10). When writing less than 5 words, it usually goes fine but still sometimes (maybe 1 out of 40 packets) gets an error thrown (PACKET_LENGTH_ERROR).
Increasing the amount of word writes to holding registers, you will receive more frequent errors. Going to 100 word writes (I know, absurd value) you will always get an error. I use 100 word writes to holding registers as a test case in the code. And I got it fixed that never an error will be thrown.
The problem is because of the following;
The ModbusServerRTU function serve() is pinned to core 0 and assigned the highest priority (number 8 priority).
See:
    xTaskCreatePinnedToCore((TaskFunction_t)&serve, taskName, 4096, this, 8, &serverTask, coreID >= 0 ? coreID : NULL);
Now going to the file RTUuntils.cpp.
The function ModbusMessage RTUutils::receive waits for new data to arrive on the serial port in the state "WAIT_DATA". When a single byte is received, the state is changed from "WAIT_DATA" to "IN_PACKET".
And here is the problem. "IN_PACKET" is an blocking function. It blocks the entire RTOS. Thus also Queues will not work anymore from FreeRtos. The serial port espHAL uses the FreeRtos Queue to transfer data from hardware uart to the FreeRtosQueue.
Meaning, when in the state "IN_PACKET" no new serial port data can arrive in the freertos queue. You will only receive the current queue data until it is empty. New serial port data during this time will not be added to the queue causing that modbus frame's will not be received completely if they are a longer than 1mS.

Quick solution that I have tested to work FINE with 100 words. (zero faults!).

In the "IN_PACKET" routine add a delay "delay(1);" thus giving the scheduler some space to allow the queues to be filled. Also increase the interval for this state to e.g. 10mS. Why such a high interval? Because on the core0 also WiFI functions are operating. When using WiFi like I do, it is possible that there will be some context switches available that can cause context switches delay of several mS.
The question also is, why is such tight "interval" value is needed anyways. Because currently at 56k6 BAUD rate, the interval will be only 650uS. For a server, it is absolutely no problem to react some time later. Even the most robust PLC's that I work with, do not reply that soon. They take 50mS or more for a response. Do note that the interval specified in the ModbusRTU is mininum interval. Not maximum. RTU servers may not respond earlier than this interval, but later is no problem.

Solid solution: It could be improved the following way:

Add to the "IN_PACKET" state an routine that checks the incoming data. With the first let say 6 bytes from the modbus frame, you can already determine what frame length of data is to be expected. Using such a peek function, after just receiving 6 bytes of data from a client, you can calculate how many bytes are left to be received thus at arrival of the latest char you can directly start processing without any interval delay.
  case IN_PACKET:
      // Data waiting and space left in buffer?
      while (serial.available()) {
        // Yes. Catch the byte
        // Due to a latent bug in esp32-hal-uart.c of the arduino-esp32 core,
        // available() may return a 1 although there is no byte in the buffer yet.
        // So we have to attempt a read() and discard the result, if it is < 0.
        int b = serial.read();
        if (b >= 0) {
          buffer[bufferPtr++] = b;
          // Buffer full?
          if (bufferPtr >= bufferBlocks * BUFBLOCKSIZE) {
            // Yes. Extend it by another block
            bufferBlocks++;
            uint8_t *temp = new uint8_t[bufferBlocks * BUFBLOCKSIZE];
            memcpy(temp, buffer, (bufferBlocks - 1) * BUFBLOCKSIZE);
            delete[] buffer;
            buffer = temp;
          }
          // Rewind timer
          lastMicros = micros();
        }else
        {
          LOG_D("Err no byte in buffer\n");
        }
      }
      delay(1); // **<---- add this delay for the scheduler to have some room to fill queues**
      // Gap of at least _interval micro seconds passed without data?
      if (micros() - lastMicros >= 10000){// interval) { // **<---- Replace interval for fixed timeout**
        state = DATA_READ;
        LOG_D("RTU Interval end \n");
      }
      break;

@EmbeddedDevver Thank you for your analysis!
You are right with the missing delay(1). I will add that to the code asap.
I am not really convinced by your argument on relaxed interval times, especially with RTU servers. If you have multiple servers on a RTU Modbus, the servers need to react on every message to see if it is a request targeted to them. If the server would not be able to maintain the interval, it may miss a request, resulting in timeouts at the client.
Please note that you have the option to do a start(1) to have the server run on core 1.

@Miq1
May I first start to say that your code is awesome! Thank you for that.
Interval
When having multiple servers, let say we have 50 ESP32 on a RS485 bus, then adding the relaxed interval delay of 10mS would cause that every server replies after 10mS if the request is targeted to them. No server will miss a request, it will only process it later.
I never ever have seen any client at a PLC having a option to select a timeout response of lower than 100mS. (Coming from Phoenix contact, Omron and WAGO PLC's).
Core 0 or Core 1
Running the modbus library at core 1 does not work here, I tried that before, the complete library freezed then. I did not check what the cause of it was, maybe I do that later

[Edited upon some more thoughts]
The delay(1) you are proposing does not make sense with baud rates where the calculated interval is lower than 1ms, the very first delay will make the gap detection pop up.

A short calculation follows:
When writing 100 words of holding registers this comes to:
1 byte slave address
1 byte function code
2 bytes data address
2 bytes number of data
1 byte number of byte to follow
200 bytes of data (equals 100 words)
2 bytes of CRC
---------------+
209 bytes = * 10 = 2090 bits
At a BAUD rate of 115k2, this comes to
2090 / 115200 = 18mS for a frame.
Note that the interval for 115k2 is set to 325uS only.

Hmm, never heard about that looong intervals before. The client in fact is dictating the interval, so if a server timing-wise would be below the standards of the client, it could not work reliably. In the ModbusClientRTU code the begin() function has an optional factor parameter to scale the interval up to cope with slow responding servers.
But I always wanted to have the server code maintain the interval as good as possible. I will experiment a bit with different ideas I already got. PLS SBY! 😉

For the time being I created the RTU-intervals branch, where both the client start() and server begin() functions have an optional second parameter that lets you overwrite the calculated interval (given value needs to be larger than the calculated).
I also added the delay(1); to the receive loop, but only if the interval is >1ms.

Nice one!
I will see if I have the time to make such a peek function tomorrow as described earlier. That should also resolve your wish to not have delays when not needed. :-)

Yessss!! my 'peek'  function is implemented and working well. Tested for 100 holding writes and 100 holding reads. No problem anymore.
Keep in mind:  While I was thinking. With the current implementation, even for small requests from clients, there is a possibility that the frame is not received completely and thus the server will never respond. You can see this problem as a race condition within the OS running at the ESP32.
I will try to explain:

You have the ESP32 hardware UART with 128 bytes dedicated RX FIFO buffer.
The hardware UART is managed by a ESP HAL library with a task, say task0 on core0. This task0 reads any data from the hardware FIFO UART buffer and puts them in a FreeRTOS queue so that any other task can read the data safely.
The Modbus task, say task1 waits for data to come from the FreeRTOS Queue and is also running on core0
Now task0, the ESP HAL lib, detects 2 chars in the UART FIFO buffer, it copies them to the FreeRTOS queue.  This task0 then gets a context switch.
During (or after) this context switch, 4 more bytes were received by the hardware UART and is ready to read by task0. But as task0 is suspended, the hardware is not serviced yet.
now task1, the Modbus task, starts reading the queue. It detects 2 chars and reads them out, then it waits for more chars but they never arrive because task0 cannot (yet) run. Even if your Modbus task1 is using delay(1) once  you cannot be sure that task0 is run as the next task. It could be also WiFi, ADC, watchdog, or other peripheral from the ESP32. After the expired delay(1), the Modbus task1 has the first priority to run (as it is the highest priority).
Now the modbus task never receives any more data and thus the task1 interval timer expires and generates an Modbus error because of an incomplete frame.
The Modbus client that requested data never receives data and continues after his timeout has expired (causing far more delay than the initial 10mS).

I hope the above explains the current error/race condition. Because of the OS the Modbus can never 100% work reliable with the current implementation. Also if you switch core, you still have this race condition because core0 is shared with ADC and WiFi and many more. You can never be sure if and when the hardware FIFO is serviced by the ESP32 HAL.
THE solution
The solution below fixes all. No need for looong timer as you prefer, but 100% guaranteed no half received frames.
I did some testing @ 115k2 BAUD:

100 word writes (FC 16) = 7163uS
100 word reads (FC 3) = 1094uS
I think some excellent timings.

Also its interesting to see, if you enable the debug option with my new code below.
This debug output is for the 100 word writes. Note the remaining quantity. Every quantity is updated after delay(1); was run once. As you can see the data is not coming at the same rate from the ESP32 HAL libs.
For example, the first delay(1); only received 8 more bytes (from 168 to 160 remaining).
[D] 10165| ModbusServerRTU.cpp  [ 208] serve: Response sent.
[D] 24971| RTUutils.cpp         [ 241] receive: IN_PACKET
[D] 24973| RTUutils.cpp         [ 310] receive: RTU Expecting bytes 206, remaining 168
[D] 24974| RTUutils.cpp         [ 310] receive: RTU Expecting bytes 206, remaining 160
[D] 24982| RTUutils.cpp         [ 310] receive: RTU Expecting bytes 206, remaining 64
[D] 24989| RTUutils.cpp         [ 310] receive: RTU Expecting bytes 206, remaining 0
[D] 24996| RTUutils.cpp         [ 317] receive: RTU Interval end, expired time: 7163
[D] 25004| RTUutils.cpp         [ 335] receive: DATA_READ OK

Below the code
  case IN_PACKET:
      // Data waiting and space left in buffer?
      while (serial.available())
      {
        // Yes. Catch the byte
        // Due to a latent bug in esp32-hal-uart.c of the arduino-esp32 core,
        // available() may return a 1 although there is no byte in the buffer yet.
        // So we have to attempt a read() and discard the result, if it is < 0.
        int b = serial.read();
        if (b >= 0)
        {
          buffer[bufferPtr++] = b;
          // Buffer full?
          if (bufferPtr >= bufferBlocks * BUFBLOCKSIZE)
          {
            // Yes. Extend it by another block
            bufferBlocks++;
            uint8_t *temp = new uint8_t[bufferBlocks * BUFBLOCKSIZE];
            memcpy(temp, buffer, (bufferBlocks - 1) * BUFBLOCKSIZE);
            delete[] buffer;
            buffer = temp;
          }
          // Rewind timer
          lastMicros = micros();
        }
        else
        {
          LOG_D("Err no byte in buffer\n");
        }
      }
      // Give scheduler room to breathe
      delay(1);

      // [0;server addr][1;func code][2;start addr H][3;start addr L]
      // [4;qty addr H][5;qty addr L][6;num of bytes to follow]
      if (bufferPtr >= 7)
      {
        int16_t numBytes = 0;

        switch (buffer[1])
        {
        case WRITE_MULT_REGISTERS:
          numBytes = 1 + buffer[6]; // get the remaining num of bytes
          break;

        case READ_HOLD_REGISTER:
          numBytes = 0;
          break;

        default:
          // complete this switch for all of the function codes.
          numBytes = 0;
          break;
        }
        // add frame first 6 bytes plus the last 2 crc. This is the total to be expected frame sz.
        numBytes += 5 + 2;
        LOG_D("RTU Expecting bytes %d, remaining %d \n", numBytes, (numBytes - (bufferPtr - 1)));

        // only exit the receive if: exact right amount of bytes is received AND interval has timeout so that
        // we cannot reply too soon (interval) and also not exit too soon (still bytes left in uart)
        if (micros() - lastMicros >= interval && numBytes == (bufferPtr - 1))
        {
          state = DATA_READ;
          LOG_D("RTU Interval end, expired time: %lu \n", ((micros() - lastMicros)));
        }
      }

      // Timeout handling: The incoming message must be received completely within 50mS
      // else we may conclude that the client request has an error or was interrupted.
      if (micros() - lastMicros >= 50000)
      {
        state = FINISHED;
        rv.push_back(PACKET_LENGTH_ERROR);
        LOG_D("Err: Timeout during receiving frame, received %d bytes\n", (bufferPtr - 1));
      }

Well, yes, I get the idea. Unfortunately it is not completely fitting, I am afraid.
There are only some function codes where we have a chance to peek ahead to learn the number of bytes to expect, the user defined codes are free-form and will be missed. And real out-of-gauge packets will confuse the mechanism as well.

@Miq1
That I do understand. For that, I do not know any other solution than having a large enough delay or you should make your own hardware implementation for the esp32 :)
People using this library are more helped with something that works right with some extra delay than something that sometimes does not work. 😉

@Miq1
That I do understand. For that, I do not know any other solution than having a large enough delay or you should make your own hardware implementation for the esp32 :)
People using this library are more helped with something that works right with some extra delay than something that sometimes does not work. 😉

Right.

I referred to the Modbus standard once more and found this:

So it is mandatory to maintain the gap and character timing for baud rates of 19200 and below to be conforming to the standard, with a little relaxation for baud rates above that.
Having read that I would reckon we never will be able to achieve that on the ESP32 without a much deeper control of the serial communications. I was not aware of the 1.5t condition for in-frame gaps that would require packet discarding; as the gap times between packets are already hard to match, the in-frame gap checking is completely out of reach.
I will try to collect the real constellations we may encounter with clients and servers maintaining the proper timing or not and then decide how to tackle the issue.

This is going to be lengthy and meandering, so please bear with me 😉

we should concentrate on receive rather than also considering send. Only in receiving messages we might get into timing issues.
we will ignore the intra-message timing the standard obviously is requiring as it seems to be too challenging to meet that
given the internal UART buffer size of 128 bytes the Arduino core mandates we can be sure we will have to do repeated reads for longer messages anyway
we will disregard pathological messages or fragments

Client considerations

a client is controlling the bus. Timing is completely depending on the client.
a client will receive only messages following a previous request sent by itself.
the time gap between the request and the response is irrelevant, only the basic timeout to detect non-responding servers is to be maintained.
The gap after the response is irrelevant as well, as the next to be active on the bus again will be the client.
Concluding we may state that the client can wait as long as it likes for all data to be received.

Server considerations

a server is just one of several connected to the same bus.
a server has to watch all the time if a request is on the bus addressed to it
if another server will answer immediately after the bus interval has passed, missing it will be harmless for the server
if the client issues a request immediately after the last response has been received, the server needs to be able to catch it in case it is directed to it ⚡
the server may take several read cycles to read a message. If the message is addressed to it, this will only affect the general timeout. If it is not, it is regardless anyway, as it will have to ignore it.
Conclusion: there can be an issue if the client has a tight timing. All other cases may be handled more relaxed.

Implications

in general, we will not care about the interval while receiving, but do read cycles with some delay in between until no more bytes are found
the client still needs to maintain at least the interval before sending another request.
a ModbusServerRTU thus does not guarantee to react immediately after the interval has passed any more.

Does this all make sense to you?

I committed a modified RTU receive handling according to the above considerations to the RTU-intervals branch.
I am looking forward to your results.

A quick reply here, as I am on my mobile. I understand your points and I think that is correct. Some points however:

internal UART buffer size of 128 bytes

This can be easily be enlarged to e.g. 1k bytes buffer. Make a call to Serial.setRxBufferSize(SERIAL_SIZE_RX); where SERIAL_SIZE_RX can be defined e.g. 1000bytes of buffer.
I think there is no problem currently with the lib when sending characters, frame's can be transmitted to the serial buffer at once. The serial port has its own DMA so there will never be a silence between two characters that might lead to a timeout. So that is fixed 💯
The only problem is indeed at reception, but only because the preference to have stricter timings. If you look for example to MS Windows operated HMI systems, they reply every 50 to 200 mS to a client request.
From the view of MS Windows, there is no other option than just wait for 50mS or longer and then check / read the entire serial buffer and see if it's a valid and complete frame. This works fine and very stable, at the costs of relaxed timings.
As long as this lib is running at an OS, I see no other option than
A) have more relaxed timings
B) use software serial
C) built your own HAL
D) predict frame lengths (peeking) for known frames. For unknown frame you can switch automatically to a relaxed timing.
In my opinion it should work for users without having knowledge how its works. And if it works 100% stable at a e.g. 50mS reply rate to a client, than that is a specification that can be supplied with this library.
So my preferred solution would be relaxed timings combined with peek function to speed up the known functions. Also you can peek for frames that is addressed to the received server, if it is not, you can trash it directly.
And clients will have to meet the requirements of the (slowest) servers.
Again, awesome work that you make here!!!

I tested the new code up to 921600 baud without hickup (with the Test sketch, looping through Serial1<->Serial2, one task as client, another as server).
Would be interesting to know if your code does pass as well, without any other means.

awesome to read that it now passes.
wednesday iam back home, then I will redo the test with the new code.
i can only go till max of 112k6 bc of the tranceivers im using in my setup.
ill keep you posted

@EmbeddedDevver Do you have results already?

Not yet, I have a problem to buy certain IC chips and I had to place this project on hold until I can find the needed chips somewhere to buy. I keep you informed.

@EmbeddedDevver Howzit t'day?

Almosttt there :-).
Since my last message I am daily trying to get chips but everything is sold out :-(
But I will come back :-))

I thoroughly checked your branch  RTU-intervals.
The "case IN_PACKET:" routine is still blocking, am I right? There is only delayMicroseconds() available, but this routine is not giving the scheduler room to handle other tasks as it is an blocking delay. For as long as the modbus is running on core 0, note that core 0 also has the watchdog running. Any long delay at core0 causes a force reboot.
I recommend a delay(1) here to give the OS room.
I think you do this because you want to keep strict timings here, thus having a fast reply. I can get that view, however I am more on the safe side than strict timing.
Note when you're using the wifi with some code (webserver, sockets, or stuff like that), core 0 cannot be blocking for more than several mS before you get errors with the wifi handling.
Better would be to run the code anyway at core1. Wifi needs some dedicated fast acting core. I think that is the reason they used wifi at core 0 and user code at core 1.
Also a caution about this routine below. When bogus information is coming from serial port (e.g. a wire come lose), then this routine will never end the while loop. And because this loop is running at highest priority, the entire system will freeze up. I recommend a timeout, e.g. after 1 second throw an exception.
''
while (b >= 0)
{
buffer[bufferPtr++] = b;
// Buffer full?
if (bufferPtr >= bufferBlocks * BUFBLOCKSIZE)
{
// Yes. Extend it by another block
bufferBlocks++;
uint8_t *temp = new uint8_t[bufferBlocks * BUFBLOCKSIZE];
memcpy(temp, buffer, (bufferBlocks - 1) * BUFBLOCKSIZE);
delete[] buffer;
buffer = temp;
}
hadBytes = true;
b = serial.read();
}
''
I still need to test the code.... all be back :-)

I double checked that the delayMicroseconds() routine for you.
Here you can see what the actual routine is like, it is indeed an blocking code as I said previously.
void IRAM_ATTR delayMicroseconds(uint32_t us)
{
    uint32_t m = micros();
    if(us){
        uint32_t e = (m + us);
        if(m > e){ //overflow
            while(micros() > e){
                NOP();
            }
        }
        while(micros() < e){
            NOP();
        }
    }
}

I was just thinking, but besides delay(1), you could also consider taskYIELD(). This way, you give the scheduler the option to do some housekeeping. FreeRTOS description for taskYIELD():
taskYIELD() is used to request a context switch to another task. However, if there are no other tasks at a higher or equal priority to the task that calls taskYIELD() then the RTOS scheduler will simply select the task that called taskYIELD() to run again.
If you go this route with taskYIELD(), you will probably have a delay far less than 1mS.

Thanks for confirming. The taskYIELD is sounding nice, although I would have to combine that with a micros() check on the interval passing. That was why I originally had the delayMicroseconds(interval) in it. If the interval had passed without further data, I considered that as the packet's end.
I committed another change along these lines now. Runs okay at least with my test sketch at 115200 baud.

I think this looks better now.
One more note, I think the taskYIELD can better get a place here:

      // Did we read some?
      if (hadBytes) {
        // Yes, take another turn
        intervalEnd = micros();
        **taskYIELD();**
        // delay(1);
      } else {
        // No. Has a complete interval passed without data?
        lastMicros = micros();
        if (lastMicros - intervalEnd >= interval) {
          // Yes, go processing data
          state = DATA_READ;
        }

//here is a better place as in both if and else clause this taskYield will be executed.
        **taskYIELD();**

Well, the high priority was chosen to protect the tight RTU timing. The more we are discussing here, the more this concept seems to get brittle. I am not sure if we are going into the right direction here, but I have no personal experience to really judge that.

Before I created many libraries for Microchip 16/32 bit devices and one of them was Modbus.
The power with those devices was that there is no OS. You could pre-calculate timings to the microsecond.
However, this is not a time-critical bus (Modbus). If someone need something time critical, probably they choose CANbus. For now, I will use this library with the delay(1); inside, works rock solid and I think it is the best you can do when A) using an OS and B) not sacrificing that other libraries wont work anymore and C) to have an universal library.
Next step for me is to change the priority to zero and maybe increase the hardware buffer to 512 bytes. That way, the OS at ESP32 just gets an trigger when there is data in the buffer and thus can be read out at once.
Now I am also using an auto direction RS485 chip, so no more delay toggling the receive/drive enable pin. If you have something new to test, let me know :-)

I will revert to the delay(1) as well and take out the taskYIELD() .
Despite using RTU and WIFI in parallel on the bridge devices I do not remember having any freezes or reboots, so I will leave the RTU task priority at 6. Anyone is free to choose core 1 for it anyway - that is in fact what we suggest in the docs.
Thank you for your insights and suggestions!
The current "hot thing" I am working on is a CoilData class to make handling of this data type easier. This will be released next together with the RTU changes. Feel free to try it out!

Closing this now as the issues seems to be resolved.


IGAPP-1296: Fix city not visible after golive

This pull request belongs to an issue on our bugtracker.
You can find it there by looking for an issue with the key which is mentioned in the title of this pull request.
It starts with the keyword IGAPP.

I'm now getting the new city showing up but an error on actually trying to open it :/
https://github.com/digitalfabrik/integreat-app/assets/18513943/abc200b9-6b9a-4701-b231-7106a1302d9d

Yup, sorry, my bad. The URL is https://cms-test.integreat-app.de/aschaffenburg/de/wp-json/extensions/v3/pages/ and gives me an error 500. Note to self, don't test on Aschaffenburg 😓


fix(STONEINTG-646):  trigger snapshot reconcile for added its

This PR to fix race condition when adding another IntegrationTestScenario to an application that already running former one, the new one will bot be triggered.
to fix it, we identify the untriggered ITS  and then we add Re-run label to snapshot and this will trigger the snapshot reconcile .
more details in Jira STONEINTG-646
Maintainers will complete the following section

[ ] Commit messages are descriptive enough (hints)
[ ] Code coverage from testing does not decrease and new code is covered (check the PR coverage on codecov)
[ ] Controllers diagrams are updated when PR changes controllers code  (if applicable)

/retest

Its probably out of scope, but don't we want to cover new functions with unit tests also?


feat: update golang-github-patrickmn-go-cache to 2.1.0

in-memory key:value store/cache (similar to Memcached)
Issue: https://github.com/deepin-community/sig-deepin-sysdev-team/issues/552
Log: update repo

/lgtm
/approve


RepSep overload with no min parameter

Closes #111
The minimal implementation: does not include other possible extensions of repSep like repSepAs with accumulator or repSep with trailing separator.

Codecov Report

Merging #141 (4566701) into main (a10bd60) will increase coverage by 0.11%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #141      +/-   ##
==========================================
+ Coverage   95.55%   95.67%   +0.11%
==========================================
  Files           7        7
  Lines         923      924       +1
  Branches       89       88       -1
==========================================
+ Hits          882      884       +2
+ Misses         41       40       -1

Impacted Files
Coverage Δ

core/shared/src/main/scala/cats/parse/Parser.scala
95.37% <100.00%> (+0.13%)
:arrow_up:

Continue to review full report at Codecov.

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

Codecov Report

Merging #141 (4566701) into main (a10bd60) will increase coverage by 0.11%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #141      +/-   ##
==========================================
+ Coverage   95.55%   95.67%   +0.11%
==========================================
  Files           7        7
  Lines         923      924       +1
  Branches       89       88       -1
==========================================
+ Hits          882      884       +2
+ Misses         41       40       -1

Impacted Files
Coverage Δ

core/shared/src/main/scala/cats/parse/Parser.scala
95.37% <100.00%> (+0.13%)
:arrow_up:

Continue to review full report at Codecov.

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


Allow holes in file mounts

I'm trying to mount some additional files in the static target, so that they are published with the Hugo build, even though they come from other folders (javascript packages).
This works and copies the icons folder in the assets/icons folder in the output.
  - source: src/hugo/static
    target: static
  - source: src/core/assets/icons
    target: static/assets/icons

But when I change it to this, then I get nothing of the icons in the output.
  - source: src/hugo/static
    target: static
  - source: src/core/assets/icons
    target: static/assets/prefix/icons

Is there a limit on the number of subfolders that can be specified for a mount point?
Edit: Using hugo version 0.56.3
Edit2: Updated to hugo version 0.58.2. Same error.

Is there a limit on the number of subfolders that can be specified for a mount point?

No, but for the mounts that where we walk the directory tree (e.g. static), you currently cannot have "holes" in the target directory tree as it isn't reachable by traditional directory traversal, so to speak. This is fixable, but I also suspect that you could workaround it by somehow creating some dummy directories. Not sure.

That said, depending on your use case, you can mount these folders into /assets and load them with resources.Get, resources.Match etc. from your templates. This should work fine even for deeply nested structures.

Is there a limit on the number of subfolders that can be specified for a mount point?

No, but for the mounts that where we walk the directory tree (e.g. static), you currently cannot have "holes" in the target directory tree as it isn't reachable by traditional directory traversal, so to speak. This is fixable, but I also suspect that you could workaround it by somehow creating some dummy directories. Not sure.

Thanks for the quick reply. Indeed, your suggested workaround is working fine. Hugo is copying the files now on build.

I believe this issue would help us with https://github.com/twbs/bootstrap/pull/29283

I am unable to reproduce the reported behavior with v0.83.1.
This test mounts multiple directories under assets and static, with and without holes in the target path.
git clone --single-branch -b hugo-github-issue-6346 https://github.com/jmooring/hugo-testing hugo-github-issue-6346
cd hugo-github-issue-6346
hugo server

Can we close this issue?

It's been a while since I last tried to use this, so it might have been fixed. Just a note that I was testing mostly on Windows, in case that makes any difference.


Package info subdir

Description
In this pr, I have moved everything from battery to battery/battery. I will make package_info_platform_interface after this gets merged.
Related Issues
#3035
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[X] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[X] My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
[X] All existing and new tests are passing.
[X] I updated/added relevant documentation (doc comments with ///).
[X] The analyzer (flutter analyze) does not report any problems on my PR.
[X] I read and followed the Flutter Style Guide.
[X] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
[X] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
[X] I updated CHANGELOG.md to add a description of the change.
[X] I signed the CLA.
[X] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
[X] No, this is not a breaking change.

@ditman  Can you please review this .

I think there's a better opportunity here, I'm going to close this PR and go back to the main one :)


feat: apply focus-visible polyfill to shadow root

Alaska Airlines Pull Request
Fixes #97
Summary:
This PR applies the focus-visible polyfill to the shadow root. Previously, we could only detect focus-visible by the class being applied to the <auro-button> host itself. By applying it to the shadow root, we now see the class applied to the inner button element. Since native :focus-visible is now supported in Chrome and Firefox, we only apply the polyfill if we detect that :focus-visible is not supported (i.e., WebKit + IE). This should improve performance.
This also fixes the linked issue where auro-buttons nested inside another web component were not receiving focus styles without any effort needed by the consumer of this component.
The focus state has also been updated to remove outline to prepare for upcoming WCSS changes (https://github.com/AlaskaAirlines/WebCoreStyleSheets/pull/66)
Type of change:
Please delete options that are not relevant.

[x] New capability
[x] Revision of an existing capability

Checklist:

[x] My update follows the CONTRIBUTING guidelines of this project
[x] I have performed a self-review of my own update

By submitting this Pull Request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
Pull Requests will be evaluated by their quality of update and whether it is consistent with the goals and values of this project. Any submission is to be considered a conversation between the submitter and the maintainers of this project and may require changes to your submission.
Thank you for your submission!
-- Auro Design System Team

Thanks for this PR! I will dig into this ASAP! Very excited!

Concern. This code only applied the polyfill if the browser does not yet support the feature?
If that is true, this UX will break. We are not writing styles to match :focus-visible, we are writing styles to .focus-visible. https://github.com/AlaskaAirlines/auro-button/blob/master/src/style.scss#L61
That being said, I like this direction, a lot! But there is more work. We need to write styles that match both selectors. .focus-visible and :focus-visible.

Do my changes in style.scss address your concern? I updated the selectors to include .focus-visible and :focus-visible.
We can follow the same method in other components — conditionally apply the polyfill for performance, and write styles to target both native and polyfilled selectors.

Follow up to this is https://github.com/AlaskaAirlines/WC-Generator/issues/69

:tada: This PR is included in version 6.2.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


vscode: 1.58.0 -> 1.58.1

Motivation for this change
Upgrades vscode from 1.58.0 to 1.58.1
This PR was automatically generated by nixpkgs-upkeep.

CI workflow that created this PR.
Internal tag: f32edf67b422205bf182c29b722584bf.

Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 130144 at 62c1c115 run on x86_64-linux 1

3 packages built successfully:

vscode
vscode-fhs
vscode-with-extensions

replaced by e10404fa9ca8c22cf5144743f0e531f661897cdd


3 dimension  coordinate regression

Use your model to predict 2 points which have x-y-z axis,what modify should i do?

This should just work. Here's an example:
>>> unnormalized_heatmaps = torch.randn(1, 2, 7, 7, 7)
>>> heatmaps = dsntnn.flat_softmax(unnormalized_heatmaps)
>>> heatmaps[0, 0].sum()
tensor(1.)
>>> heatmaps[0, 1].sum()
tensor(1.0000)
>>> coords = dsntnn.dsnt(heatmaps)
>>> coords
tensor([[[-0.0227,  0.0297, -0.0091],
         [-0.0852, -0.0441, -0.0360]]])

The shape of unnormalized_heatmaps is [batch_size, num_points, depth, height, width], and coords contains values in x-y-z order.


Please add TypeScript declaration file

Please add a TypeScript declaration file (or add to DefinitelyTyped).

declare module "unique-selector" {
  export type Selector = string;

  export type SelectorType = "ID" | "Class" | "Tag" | "NthChild" | "Attributes";

  export type Options = {
    selectorTypes?: SelectorType[];
    attributesToIgnore?: string[];
    excludeRegex?: RegExp | null;
  };

  declare function unique(element: Element, options?: Options): Selector;

  export = unique;
}

@danielnixon would you like to open a PR for that?


fix: make it work on node7.x

Mostly because this api https://github.com/nodejs/node/blob/v6.10.0/deps/v8/src/api.cc#L8158  was removed on node 7.x https://github.com/nodejs/node/blob/v7.0.0/deps/v8/src/api.cc#L8268

All set, I think it's time to make a new release~


Add support for assuming a role via OIDC

An experiment in offering the option to assume a role via OIDC (AKA AssumeRoleWithWebIdentity) rather than AssumeRole.
This might be desirable in Buildkite setups where a shared pool of agents is running jobs for multiple teams, and assuming roles in accounts can be limited to particular pipelines rather than available to any job that can use the local EC2 Instance Role

I still think that plugins that need to do things where OIDC auth is an option (ecr login, ecs deploy, s3 upload, rubygems publish, various GCP things) would be neat to have OIDC support baked in rather than depend on a different plugin (like https://github.com/buildkite-plugins/aws-assume-role-with-web-identity-buildkite-plugin) running first and leaving some credentials lying around in the ENV.
I don't plan to pursue the idea for now though, so I'll close this


Disable New Cluster Button

add more stringent rules around action buttons when new cluster req is inflight

Coverage remained the same at 59.426% when pulling e395ab012215b341171cbd02ee743b783e019b02 on josephkane:disable-new-cluster-btn into c5f3e6f8a806034a217f1adce532cbe20fe962df on supergiant:master.


Original Bit depth is not retrived after cropping the image

Hi @CrackerakiUA .First of all thanks for this plugin,  I am using it  in my project It is really awesome.
One thing I noticed is that the  Bit Depth of the cropped image is always 32-bit,
When I upload a 24-bit image the plugin making it 32 bit and it increases the size of the image which is greater than the original image
I couldn't find where the bit depth is calculated in the plugin it would be great if we get the cropped image with bit depth same as the original one

i will check this as soon as i can.

Hi CrackerakiUA ,do we have any update on this.

Not yet. I am kinda busy with main projects.


Create artisan command to generate foreign keys

Will adding an optional artisan command and migration file to the package make sense? Seems like we should just leave this up to the individual dev to work out.
Refs PR #131

That would be very useful in some cases.

It's so easy to add them if you need them that it would seem like a waste of extra artisan command.

closing for now, please see #291 for a foreign key migration


restructures folders for tests fixes #427

Did you run ./build/test.py ?

It appears that only some of the tests are running now (integration tests + utils).  You will need to update karma.conf.js to match, as that has glob patterns for all the test files that need to be served.
Also, there is a problem with some of your renaming.  Because you put tests for lib/utils/ into test/utils/, you now have test utilities (previous contents of test/utils) mixed with tests of utilities.  The order in which test code gets loaded by karma is important.  Here's a snippet:
    files: [
      // closure base first
      'third_party/closure/goog/base.js',

      // deps next
      'dist/deps.js',
      'shaka-player.uncompiled.js',

      // requirejs next
      'node_modules/requirejs/require.js',

      // test utils next
      'test/util/*.js',

      // list of test assets next
      'demo/assets.js',

      // support test before other tests
      'test/support_check.js',

      // unit tests last
      'test/*_unit.js',
    ],

By combining things in test/util/, this strict ordering is no longer possible.

Did you run ./build/test.py ?

Yes, I think I had.

You will need to update karma.conf.js to match, as that has glob patterns for all the test files

My bad, I'll update my PR.

Because you put tests for lib/utils/ into test/utils/, you now have test utilities (previous contents of test/utils) mixed with tests of utilities.

Can we move the test utilities from lib/utils to lib/utilities? and then add the new glob pattern. Thank you very much for the feedbacks.

Please keep lib/util as is.  We don't want to change the namespace of library code, and we want the folders to match the namespaces.
Also, you can put the *_integration.js into subfolders as well.  No reason drm_engine_unit.js should be somewhere other than drm_engine_integration.js.
You could move test/assets, tests/externs, and test/util one level deeper to test/test.  This will require more changes in karma.conf.js, as well as some changes in the tests which load from the assets folder at runtime.

Also, things are changing quickly right now, so you will have to rebase your change and fix conflicts at least once.

I'm gonna make a new PR.

Please keep lib/util as is. We don't want to change the namespace of library code, and we want the folders to match the namespaces.

In my mind I was thinking about test/util, but I think the idea of test/test is much superior.


Some comments

I was just looking through the code and have a couple of minor comments:

https://github.com/mlubin/AMPLMathProgInterface.jl/blob/master/src/AMPLMathProgInterface.jl#L40: no, as far as I know, the ASL doesn't supply functions to compute Jacobian-vector products. @vitaut will confirm though.
https://github.com/mlubin/AMPLMathProgInterface.jl/blob/master/src/AMPLMathProgInterface.jl#L58: determining that the objective is linear is a matter of exposing nlo, etc., in aslinterface.c. I'll add that to the wish list. I don't think you can determine that the objective is quadratic without exposing the DAG and walking it à la Dr.AMPL.

the ASL doesn't supply functions to compute Jacobian-vector products

It doesn't AFAIK


Is is possible to manage groups using pytradfri?

Where are you using pytradfri (eg stand-alone, Home Assistant etc)
stand-alone
Version of pytradfri
latest (b122263)
Expected behaviour
be able to add devices to groups, create groups, remove groups
Actual behaviour
no matter what I tried (based on my limited knowledge of the products), the only things I can change are group name and state and controlling individual devices. Modifying group members using put 15004/ has no effect (altering 9018:15002:9903), also, using the <//15004/add>;ct=0, and <//15004/remove>;ct=0, endpoints yielded no results. It would be really cool to be able to configure groups without installing the app/adding a phone to the network. Any pointers on how to get this done/debugged (assuming this is possible at all)?

My view is that the app just sends coap commands so you should be able to control groups.
What I would do to try to solve this:

Look at the content of a group (see the debug script), try to figure out the pattern of a group and add a new entity
Setup wireshark and monitor the traffic to the gateway. The key on the router is the key for SSL.
Search github for other implementations og Trådfri in other languagues and see if they're solved it.

Command line for a fade out to zero w/ duration 30 seconds on group 131074 :
coap-client -m put -u "ffe37696dcb" -k "9J*po" "coaps://<IP_ADDRESS>:5684/15004/131074" -e '{  "5712": 300, "5851": 0}'

Where are you using pytradfri (eg stand-alone, Home Assistant etc)
stand-alone
Version of pytradfri
latest (b122263)
Expected behaviour
be able to add devices to groups, create groups, remove groups
Actual behaviour
no matter what I tried (based on my limited knowledge of the products), the only things I can change are group name and state and controlling individual devices. Modifying group members using put 15004/ has no effect (altering 9018:15002:9903), also, using the <//15004/add>;ct=0, and <//15004/remove>;ct=0, endpoints yielded no results. It would be really cool to be able to configure groups without installing the app/adding a phone to the network. Any pointers on how to get this done/debugged (assuming this is possible at all)?

add or remove a group from a device (bulb)
cmd = "add"   or cmd="remove"
myd = {}
myd[ATTR_ID] = [dev.id]
myd["9038"]  = grp.id"
api(Command('put', [15004,cmd],myd))
See also issue 211


Buzzer Button not getting call back from the server

Hi, I have run the project on the local server in multiple devices.
When I press Buzzer Button around the same time the last button pressed does not change it's colour to black and shows BUZZED in the text, but server does get the click effect and gets the ms deifference.

Hi Stavan, thanks for reaching out! Just to confirm, is this happening on your local server, or are you also observing it happening on the live website?

Hi Will, This is also happening on the live website. Thanks!

Do you mind sharing a screen recording of what you're seeing? Just to confirm - it sounds like under certain conditions, you're saying that when you press the buzzer button, the UI does not update (to black and "Buzzed")? It looks like it's continuing to work ok for me, so I'd love to better understand how to reproduce this.

https://user-images.githubusercontent.com/46033302/185759957-aff753fe-a0d6-4b78-8ba2-0bf749e4e994.mp4
Please find the attached recording. I have two mobile devices and I tried to click same time. ( Not everytime but 5/10 it happens)

Appreciate you sharing this! I was able to reproduce - I will deploy a quick fix for this.
It looks like this is a race condition when buzzes are very close to each other. When that happens, there is a slight delay on the server sending back game information, so the button state was incorrectly resetting. There may be a slight flash, but with this fix, it should resolve to the correct state.

@wsun  Thanks for the prompt reply!

Ok, I think my fix in dc366bf should resolve this. I've deployed to the website as well. Thank you again for reporting this!


Update MD file on new branch 2017-21-20_23-11-30

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestRef.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Disable Radar Chart Axis Labels[Feature]

What problem does this feature solve?
Hi ,
Is there a way to display axis labels for only one of the axis in the Radar chart?

We have a requirement where is need to display axis labels for only on the axis in case of the Radar chart, displaying for all of them is looking clumsy
What does the proposed API look like?
A property to retain axis labels for only one of the axis in Radar chart.

formatter should achieve this.

hi all ;) any news about this feature?

I was using formatter for this and it looks wrong. As I click legend I can't handle axisLabel counter reset.
How do I use formatter the correct way to display only one axis labels?

I have the same issue. How can I use formatter to achieve this?

only workaround => counting to stop showing labels on the needed time:
formatter: (value) => {
if (this.axisLabelLength++ > radarSplitNumber) {
return [];
}
return ${formatNumber(value, format)};
},


[23.05] electron_27-bin: init at 27.0.0

Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 264191 run on x86_64-linux 1

1 package built:

electron_27 (electron_27-bin)


Confusion about the LLBC produced for a closure

jonathan@verveine:~/Code/eurydice (protz_trait_clauses) $ \cat test/closure/src/main.rs
fn f() -> [u8; 1] {
    let s = [0; 1];
    let a: [u8; 1] = core::array::from_fn(|_| s[0]);
    a
}

fn main() {
    let actual = f()[0];
    let expected = 0;
    assert_eq!(actual, expected);
}

if I run eurydice on this, and I pass --log '*', I get a dump of the LLBC:
  fn closure::f::closure<0, 1>(state^1 : &0 mut ((&1 (@Array<u8, 1: usize>))), v@2 : (usize)) -> u8
{
    v@0 : u8;
    state^1 : &0 mut ((&1 (@Array<u8, 1: usize>)));
    v@2 : usize;
    v@3 : usize;
    v@4 : &'_ (@Array<u8, 1: usize>);
    v@5 : &'_ (u8);

    v@3 := (0: usize : usize);
    v@4 := &*((*(state^1)).0);
    v@5 := move @ArrayIndexShared<'_, u8, 1: usize>(move v@4, copy v@3);
    v@0 := copy *(v@5);
    drop v@3;
    return
  }

Now here's the snippet of Eurydice that we care for:
        match decl with
        | None -> None
        | Some decl ->
            let { C.def_id; name; signature; body; is_global_decl_body; item_meta; _ } = decl in
            let env = { env with generic_params = signature.generics } in
            L.log "AstOfLlbc" "Visiting %sfunction: %s\n%s"
              (if body = None then "opaque " else "")
              (string_of_name env name)
              (Charon.PrintLlbcAst.Ast.fun_decl_to_string env.format_env "  " "  " decl);

            assert (def_id = id);
            let name = lid_of_name env name in
            match body with
            | None ->
                ... (* irrelevant *)

            | Some { arg_count; locals; body; _ } ->
                if is_global_decl_body then
                  None
                else
                  let env = push_cg_binders env signature.C.generics.const_generics in
                  let env = push_type_binders env signature.C.generics.types in

                  L.log "AstOfLlbc" "ty of locals: %s"
                    (String.concat " ++ " (List.map (fun (local: C.var) ->
                      Charon.PrintTypes.ty_to_string env.format_env local.var_ty) locals));
                  L.log "AstOfLlbc" "ty of inputs: %s"
                    (String.concat " ++ " (List.map (fun t ->
                      Charon.PrintTypes.ty_to_string env.format_env t) signature.C.inputs));

Here's the fun bit: the types in the signature don't agree with the types of the locals.
ty of locals: u8 ++ &'0_0 mut ((&'0_1 (@Array<u8, 1: usize>))) ++ usize ++ usize ++ &'_ (@Array<u8, 1: usize>) ++ &'_ (u8)
ty of inputs: &'0_0 mut ((&'0_1 (@Array<u8, 1: usize>))) ++ (usize)

notably, one has a tuple of size one for the usize, while the other doesn't!
Please help me understand if I'm missing something or if this is a bug somewhere. Thanks!

That really seems like a bug. See also #194 for our plans for closures

Ok I worked around it by normalizing (t) to t everywhere.

This is strange. I wonder where the tuple is introduced: is it Rustc's fault or our fault?

I would guess the tuple comes from the Fn trait: a closure like |x, y, z| ... implements Fn<(X, Y, Z)>. Do we special-case the case of single arguments anywhere?

I do some transformations above to, among other things, make the closure state more explicit (this is the update_closure_signatures file I refer to above). The error likely comes from there, and especially this line where I do not special case on single arguments (I didn't have much time to recheck the code, but it is possible Rust does it on its side).

I fixed this in https://github.com/AeneasVerif/charon/pull/494. Now the closure signature matches the locals.


Proposal Insiders section

Created a proposal for the Insiders section. It's currently just a playground! Every page lists questions the site should answer - still a work in progress. Additionally, I divided the FAQ list and added the questions to each site.

I updated the structure again and focused on the sub-structure on every page. @alexvoss feel free to take a look and propose changes if you find the time.
The content is still copied from the FAQ list. Therefore, please ignore all questions which just help me sort the content for now.

Hi Kathi,
I am having problems building the site:
Error reading metadata of post 'blog/posts/chinese-search-support.md' in 'docs':
           Couldn't find anchor 'how-to-become-a-sponsor' in 'insiders/index.md'

I was going to have a look at the end result instead of (or in addition to?) going through the changes. Gives me more context.

That's strange. I did not touch the blog at all, only the Insiders section, and I do not know what kind of anchor is missing in the index.md. I updated all links yesterday and don't have any issues building the docs.

Just pushed the latest changes to be sure. Could it be that we are using different versions?

Comment out the hooks in the mkdocs.yml that could be the problem as I'm touching the Insiders section.

Just pulled and the problem persists. Stuff has moved out of insiders/index.md and this breaks some of the links defined in blog posts. This is the case not just for the Chinese support blog post but for others as well.
Not sure why you don't get this? I checked out a fresh copy on my side just to be sure but the error is still there. I am done with breakfast and will have a look to see if I can find out anything from my side that might help debug this.

Just pushed the latest changes to be sure. Could it be that we are using different versions?

@alexvoss I'm using the community edition. Are you using Insiders? Could be related to the related links feature. Does it work if you comment them out? Is it a warning, or does it crash the build? According to @squidfunk it shouldn't crash the build. If it does, please create an item in the inbox.

I just came to the same conclusion! The public version builds just fine, it is Insiders that aborts with the error message. It does abort the build, so I will put an item into the inbox.
Will switch to the public version just now. Is there a reason you are not using Insiders? Should I also be using the public version for building the documentation? I mean in general?

I just came to the same conclusion! The public version builds just fine, it is Insiders that aborts with the error message. It does abort the build, so I will put an item into the inbox.
Will switch to the public version just now. Is there a reason you are not using Insiders? Should I also be using the public version for building the documentation? I mean in general?

Let's talk about it in the meeting later 😊

I updated the structure again and focused on the sub-structure on every page. @alexvoss feel free to take a look and propose changes if you find the time. The content is still copied from the FAQ list. Therefore, please ignore all questions which just help me sort the content for now.

The content is still a copy-paste from the FAQ and I only touched the access management section so far. I left the questions above, so I know which question the text was supposed to answer.


Whack-a-Mole Game

Describe the Feature you want to end

i want to add this Whack-a-Mole Game on clicking your score increase make as high score in limited time
Expected behavior

Screenshots (optional)

Additional context (optional )

@MohitGupta121 @TusharKesarwani please assign this to me

@MohitGupta121 @TusharKesarwani please assign this to me

@MohitGupta121 please assign this to me


[TS migration] Migrate remaining GitHub actions to TypeScript

TypeScript migration
Make sure you read through our TypeScript's style guide, cheatsheet and PropTypes conversion table before you start working on this migration issue.
Files

Path
Dependencies

.github/actions/javascript/getGraphiteString/getGraphiteString.js
3

.github/actions/javascript/getArtifactInfo/getArtifactInfo.js
3

This issue is internal and will be carried out by the TS team.

Hi, I'm Julian from Callstack - expert contributor group - and I would like to take a look at this issue.

The PR is ready for review!


Bug:AttributeError: module 'pydantic._migration' has no attribute 'JsonValue'

Description
It pulls up this error when following the tutorial. This appears to be something caused by pydantic migrations for some reason?
Here is my dependancies
annotated-types==0.6.0
anyio==4.3.0
certifi==2024.2.2
click==8.1.7
EditorConfig==0.12.4
exceptiongroup==1.2.0
Faker==24.9.0
fast-query-parsers==1.0.3
h11==0.14.0
httpcore==1.0.5
httptools==0.6.1
httpx==0.27.0
idna==3.7
Jinja2==3.1.3
jsbeautifier==1.15.1
litestar==2.8.2
markdown-it-py==3.0.0
MarkupSafe==2.1.5
mdurl==0.1.2
msgspec==0.18.6
multidict==6.0.5
polyfactory==2.15.0
pydantic==2.7.0
pydantic_core==2.18.1
Pygments==2.17.2
python-dateutil==2.9.0.post0
python-dotenv==1.0.1
PyYAML==6.0.1
rich==13.7.1
rich-click==1.7.4
six==1.16.0
sniffio==1.3.1
typing_extensions==4.11.0
uvicorn==0.29.0
uvloop==0.19.0
watchfiles==0.21.0
websockets==12.0
URL to code causing the issue
No response
MCVE
# Your MCVE code here

Steps to reproduce
1. Enter Hello world tutorial online
2. Use litestar run

Screenshots
"![SCREENSHOT_DESCRIPTION](SCREENSHOT_LINK.png)"

Logs
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.10/bin/uvicorn", line 8, in <module>
    sys.exit(main())
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/uvicorn/main.py", line 409, in main
    run(
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/uvicorn/main.py", line 575, in run
    server.run()
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/uvicorn/server.py", line 65, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "uvloop/loop.pyx", line 1517, in uvloop.loop.Loop.run_until_complete
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/uvicorn/server.py", line 69, in serve
    await self._serve(sockets)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/uvicorn/server.py", line 76, in _serve
    config.load()
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/uvicorn/config.py", line 433, in load
    self.loaded_app = import_from_string(self.app)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/uvicorn/importer.py", line 19, in import_from_string
    module = importlib.import_module(module_str)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/Users/kodecreer/Documents/Python/Litestar/app.py", line 8, in <module>
    app = Litestar([hello_world])
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/litestar/app.py", line 361, in __init__
    plugins=self._get_default_plugins(list(plugins or [])),
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/litestar/app.py", line 521, in _get_default_plugins
    from litestar.contrib.pydantic import (
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/litestar/contrib/pydantic/__init__.py", line 8, in <module>
    from .pydantic_dto_factory import PydanticDTO
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/litestar/contrib/pydantic/pydantic_dto_factory.py", line 62, in <module>
    pydantic_v2.JsonValue: Any,
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pydantic/__init__.py", line 210, in __getattr__
    return _getattr_migration(attr_name)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pydantic/_migration.py", line 299, in wrapper
    raise AttributeError(f'module {__name__!r} has no attribute {name!r}')
AttributeError: module 'pydantic._migration' has no attribute 'JsonValue'

Litestar Version
2.82
Platform

[ ] Linux
[X] Mac
[ ] Windows
[ ] Other (Please specify in the description above)

[!NOTE]
While we are open for sponsoring on GitHub Sponsors and
OpenCollective, we also utilize Polar.sh to engage in pledge-based sponsorship.
Check out all issues funded or available for funding on our Polar.sh dashboard

If you would like to see an issue prioritized, make a pledge towards it!
We receive the pledge once the issue is completed & verified
This, along with engagement in the community, helps us know which features are a priority to our users.

Hi @kodecreer, thanks for reporting!
I cannot reproduce this as of now with the dependencies you specified on Python 3.10. That being said though, I have only tested it on Linux, but I don't think that would make a difference :eyeglasses:
Just to confirm, this is the code you're running?
from litestar import Litestar, get

@get("/")
async def hello_world() -> str:
    return "Hello, world!"

app = Litestar([hello_world])

Yes that's the exact code I ran.

Ok found out the issue. Litestar for some reason doesn't work with Python version 3.10.5 on Mac. It's reccomended to use a different version of python . I am here if you prefer to continue investigating the cause of this issue. I updated my python version to 3.12 and it worked fine.

It's reccomended to use a different version of python

Recommended by whom? :eyes:
Is this some dependency resolution thing?
If yes, how have you installed Litestar?

By me because it fixed my issue on my Mac.
Probably something in the implmentation of Python on Mac.
I installed it using "pip install litestar[standard]"

I was able to fix this by just setting "pydantic==2.7.0" in the litestar fullstack. No python 3.12 needed


Update dependencies to fix CVE-2024-34069

Fix for #321

Sorry about the delay. Can you rebase on master since #320 was merged?

@danihodovic rebased & updated

Released as danihodovic/celery-exporter:0.10.12.
Дякую, Віталію


Pass upload options to upload file method.

This allows users to pass upload options to the s3 blobstore client via an upload_options key. I'm specifically looking to pass the server_side_encryption option for compliance purposes, but any options from http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Object.html#upload_file-instance_method can be passed. This also adds a unit test asserting that the expected arguments are passed to upload_file.
cc @sharms @rogeruiz

@jmcarp we have actually switched director to use s3cli (https://github.com/pivotal-golang/s3cli) so that it's more consistent with what agent uses to download upload/download blobs. if your intent is to make the director use this configuration, i think you will have to add this to s3cli.

@cppforlife: thanks, I'll file an issue on s3cli. If s3cli eventually supports these options, would you be open to passing them through in S3cliBlobstoreClient?

Replaced by #1299.


Finish implementation for testing walmart API

Resolve #1 and #3.

Excellent work! Lot of helpful test cases :)

In the beginning, I didn't realize the requirements of Project 2 and thus directly merged my code into the main branch. Now I rebuild the workflow according to the requirements.


Primary assessor permissions

Allow primary assessors:

see the moderated appraisal after moderated appraisal submission
edit the case summary

 Primary Assessor should have the case summary view as well as they need to be able to edit it etc for the Panels going forward

Great job!


Arrows too small in Firefox and Opera

Hello,
I just tried to use the arrow-end attribute with raphael 2.0.1 and while it looks perfect with IE 6, 7, 8 and 9,  the arrow head is really tiny on firefox 8.0 and Opera 11.
To reproduce, simply enter
paper.path("M0,240L200,240").attr({'arrow-end':'classic-medium-medium' });
in the playground.
Best regards,
Christoph

Update: The issue also occurs on IE9 when the svg renderer is used, so it seems to be a general problem with svg and arrows.


Option to include dates only in the lastmod fields of XML sitemaps

Summary
Option to include dates only in the lastmod fields of XML sitemaps. Default includes full date-time. Feature controlled by a new input date-only.
Closing Issues
Closes #58
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Improvements to existing code, such as refactoring or optimizations (non-breaking)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[x] I have read the CONTRIBUTING document.
[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

@cicirello - don't know why you would not make me aware of completing this PR I started writing....

@MarketingPip you abandoned your PR #65. That PR was automarked stale a couple months ago, and then autoclosed a week later. See https://github.com/cicirello/generate-sitemap/pull/65#issuecomment-1272755396 . You didn't comment or otherwise reply to either those notifications or to the feedback on the review. I interpret months of inactivity and no interaction as no longer interested.

@cicirello - it was a month of being stale. :shrug: and you implemented it literally the next week (after saying it wasn't really needed & then gave no credit. Not that it was really looked for. Just I assumed you would said SOMETHING lol..)

@MarketingPip no credit was necessary as none of your code was used since it was wrong. I decided to implement it myself because it was a simple feature to add that took less time to do than my two prior reviews of your incorrect PRs.


feat: introduce typescript migration pipeline

Description
This introduces a tool for incrementally migrating our codebase to typescript through the use of a gulp pipeline. This process allows us to ensure that no major bugs are introduced during the migration, and that our migration is conservative (no transpilation, or major refactorings in the initial move).
I've included two migrated classes (ReadConcern, WriteConcern) for illustrative purposes. The process includes a git mv to preserve history, as well as introduction of minimal type information to preserve the existing structure of the output files. A comparison in the PR can help us observe that minimal changes (if any) are made to the original file - a major goal of the first phase of this transition to TypeScript.

@emadum yes, that's the goal on the first pass - no changes to the output javascript at all. We now have minor changes because we're depending on typescript to add "use strict"; but other than that there should be no expected changes


harfbuzz: 2.6.0 -> 2.6.1

Motivation for this change
https://github.com/harfbuzz/harfbuzz/releases/tag/2.6.1
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

Notify maintainers
cc @

@GrahamcOfBorg build harfbuzz

Darwin failure is because of meson, apparently:
builder for '/nix/store/hbcrbwi35vpacbyf1vnds6glhkc8akr0-meson-0.51.2.drv' failed with exit code 1

:(

meson on darwin is being addressed in https://github.com/NixOS/nixpkgs/pull/68129


1.6.8 fails to install - debian

gem install nokogiri fails with the following error:
[~] $ gem install nokogiri -v 1.6.8rc3
Fetching: nokogiri-1.6.8.rc3.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing nokogiri:
	ERROR: Failed to build gem native extension.

    /home/USER/.rvm/rubies/ruby-2.2.1/bin/ruby -r ./siteconf20160630-4317-1sc20gr.rb extconf.rb
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/home/USER/.rvm/rubies/ruby-2.2.1/bin/$(RUBY_BASE_NAME)
extconf.rb:78:in `<main>': uninitialized constant PKGConfig (NameError)

extconf failed, exit code 1

Gem files will remain installed in /home/USER/.rvm/gems/ruby-2.2.1/gems/nokogiri-1.6.8.rc3 for inspection.
Results logged to /home/USER/.rvm/gems/ruby-2.2.1/extensions/x86-linux/2.2.0/nokogiri-1.6.8.rc3/gem_make.out

Was able to successfully install <IP_ADDRESS> version though

Can you install nokogiri-1.6.8 release version?

For me, install with gem install nokogiri works but install from capistrano / bundler fails.
DEBUG [0ecd68f7]       An error occurred while installing nokogiri (1.6.8), and Bundler cannot
continue.
Make sure that `gem install nokogiri -v '1.6.8'` succeeds before bundling.

Please re-open if this is still hapenning with v<IP_ADDRESS>.


no physical Sources - SoundTouch 520

System Health details
no information here
Checklist

[X] I have enabled SmartInspect debug logging for my installation.
[X] I have filled out the issue template to the best of my ability.
[X] This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
[X] This issue is not a duplicate issue of any previous issues..

Describe the issue
hello Lucas,
thanks for the good work you do here. I really appreciate it, as the original Bose integration kind of sucks :slight_smile:
I have an (see also pic attached):
BOSE SoundTouch 520 5.1 Home Cinema System
Unfortunately it the source selection is not working as expected, it does not show any of the physical inputs. As you see, the remote has 6 input buttons (5x HDMI, 1x BT&Digital media).
I feel like if I switch via old remote control to e.g. GAME the HA integrations (official Bose integration & Bose SoundTouchPlus) consider the system to be OFF. I guess that the Amplifier turn off the black bar (marked red in pic).
Never the less, SoundTouch app and Win-Version are working excellent.
See below what I get as source displayed with latest version v1.0.26.
Attaches are also the logs from browser.

sources_info_suppURLs.zip
Reproduction steps

...
Debug logs
see zip file

Diagnostics dump
No response

Hi Bingo - The AUX and BLUETOOTH source are not showing up in the sources.xml that you listed.  I am not sure why that is.  Do you have any devices connected to those ports (AUX, HDMI 1-5) on the 520?  I would try selecting a source (e.g. AUX or HDMI1) while something is playing thru the device, and then reissue the command to retrieve the sources.xml.  The 520 may be temporarily adding and removing the source as it needs it.  I say "may be", as I have never tested with a 520 device before so I am not sure.  As for BLUETOOTH, try playing a BlueTooth source from your phone or other BT device, and then reissue the command to retrieve the sources.xml.
Also, even though a source does not appear in the CONFIG list of sources, it should still show in the media player as the actual source value that is selected.  You can verify the source that is playing by issuing a call to the /nowPlaying service from your home computer browser (e.g. http://192.168.x.x:8090/nowPlaying).  Output should be something like this:
<?xml version="1.0" encoding="UTF-8" ?>
<nowPlaying deviceID="xxxxxxxx" source="BLUETOOTH" sourceAccount="">
  <ContentItem source="BLUETOOTH" location="" sourceAccount="" isPresetable="false">
    <itemName>My iPhone</itemName>
  </ContentItem>
  <track>Baby, It's Cold Outside (Duet With Michael Bublé)</track>
  <artist>Various Artists</artist>
  <album>Christmas Mix</album>
  <stationName>My iPhone</stationName>
  <art artImageStatus="SHOW_DEFAULT_IMAGE" />
  <skipEnabled />
  <playStatus>PLAY_STATE</playStatus>
  <skipPreviousEnabled />
  <genre>Christmas</genre>
  <connectionStatusInfo status="CONNECTED" deviceName="My iPhone" />
</nowPlaying>

You can also try selecting the source from the developer tools services menu - example yaml (change yourdeviceid to your 520 entity_id):
service: media_player.select_source
data:
  source: BLUETOOTH
target:
  entity_id: media_player.YOURDEVICEID

Do all of your sources show up in the HA soundtouch (not soundtouchplus) integration?
Here is how my sources show up in my HA instance using the standard HA media player:
type: media-control
entity: media_player.bose_st10_1

Do all of your sources show up in the HA soundtouch (not soundtouchplus) integration?
no, sources are not working with original soundtouch integration. That is why I investigated to find a better solution.

I did this method with the nowPlaying command. See attached the result, it is only showing "local" source.... no matter what HDMI input I take.
Any other idear?
nowPlaying.zip

I started to use Wireshark to snif in.... after checking the SoundTouch app deeper, it seems that only the black box is controllable via App, the Amplifier may not - see screenshot below, in the app I can only select the digital sources like NAS and BT.

I would agree with you on your statement of "... only the black box (SoundTouch Wireless Adapter) is controllable via the SoundTouch App, the Amplifier may not".  I ran across the following in the Bose 520 manual, that indicates this is probably true:

I had another Bose 520 user with the same situation; he was trying to switch the 520 source to play input from an LG TV with webOS.  Here is the link to that thread with everything that we tried.  The closest we got was using the following service call to switch to the LOCAL source - it would never switch to the HDMI ARC connection though.
alias: Bose ST-520 Listening Mode - Plex (with TV Sound Toggle)
sequence:
  - service: media_player.select_sound_mode
    alias: select Bose ST-520 Soundbar Source LOCAL
    data:
      sound_mode: LOCAL
    target:
      entity_id: media_player.trash_2
mode: single
icon: mdi:soundbar

I thought it was an issue with the TV not switching properly since it was using HDMI ARC processing ... but now that I see what is displayed in the SoundTouch App, it seems that the amp is not controllable as you suggested.  The SoundTouch Wireless Adapter box simply adds SoundTouch sources (e.g. BLUETOOTH, AUX, Pandora, Spotify, TuneIn, etc) that get fed into the amplifier via a dedicated SoundTouch input, and cannot control the other (non SoundTouch) amplifier inputs themselves.
With all of that said, I did discover a SoundTouchHelper.exe tool in the SoundTouch App for Windows directory if you want to try it out (located in C:\Program Files (x86)\SoundTouch\SoundTouchHelper directory).  Running that will give you the following screen:

Check the SoundTouch device that you want to diagnose, and click on the Collect New Logs.  It will generate some logs and package them in a zip file.  Take a look at the ScmDiagsLogs folder output for more information.  It's also fun to run a Wireshark trace while that is working, which will give you the same information contained in the logs.
Hope it helps, and I wish I had better news.

I am updating the project wiki to include notes for specific SoundTouch device models.
Do you have a few minutes to run some tests for me so that I can update the ST-520 section?  I'm looking to see what aspects of the 520 can be controlled via Home Assistant service calls (e.g. volume, power, etc).
Thanks!
Standard Home Assistant media_player services
# power on the device.
service: media_player.turn_on
data: {}
target:
  entity_id: media_player.bose_st10_1

# power on the device.
service: media_player.turn_off
data: {}
target:
  entity_id: media_player.bose_st10_1

# turn volume up.
service: media_player.volume_up
data: {}
target:
  entity_id: media_player.bose_st10_1

# turn volume down.
service: media_player.volume_down
data: {}
target:
  entity_id: media_player.bose_st10_1

# toggle volume mute
service: media_player.volume_mute
data:
  is_volume_muted: false
target:
  entity_id: media_player.bose_st10_1

# select LOCAL soundtouch source.
# I don't think this one will work since the 520 does not support /selectLocalSource function.
service: media_player.select_source
data:
  source: LOCAL
target:
  entity_id: media_player.bose_st10_1

# select BLUETOOTH source.
service: media_player.select_source
data:
  source: BLUETOOTH
target:
  entity_id: media_player.bose_st10_1

# select AUX source.
service: media_player.select_source
data:
  source: 'AUX:AUX'
target:
  entity_id: media_player.bose_st10_1

soundtouchplus integration services:
# remote control power button press and release.
service: soundtouchplus.remote_keypress
data:
  entity_id: media_player.bose_st10_1
  key_id: POWER
  key_state: both

# remote control preset number 2 select
service: soundtouchplus.remote_keypress
data:
  entity_id: media_player.bose_st10_1
  key_id: PRESET_2
  key_state: release

sorry needed some time to come over it that my Bose is only semi "Connected".
you wrote that another user w/ 520 did some test.. unfortunately the link is not working.
I would expect if we use the "local" source I could use the SoundTouch Plus integration to turn on/off and it will stay at same HDMI input (would be sufficient for only 1 input device - my case).
I'd like to help you with the documentation. How can I test these commands?

Here's the link to that thread I was talking about with the other 520 user:
https://community.home-assistant.io/t/sorry-for-the-delay/635159/57.
The service commands can be tested from the Home Assistant Developer Tools interface:

Thank you for your help!

I am updating the project wiki to include notes for specific SoundTouch device models.
Do you have a few minutes to run some tests for me so that I can update the ST-520 section? I'm looking to see what aspects of the 520 can be controlled via Home Assistant service calls (e.g. volume, power, etc).
Thanks!
Standard Home Assistant media_player services
# power on the device.
service: media_player.turn_on
data: {}
target:
  entity_id: media_player.bose_st10_1

works,  520 plays and switches Source from HDMI to "Soundtouch" e.g. internet radio

# power off the device.
service: media_player.turn_off
data: {}
target:
  entity_id: media_player.bose_st10_1

OK

# turn volume up.
service: media_player.volume_up
data: {}
target:
  entity_id: media_player.bose_st10_1

OK

# turn volume down.
service: media_player.volume_down
data: {}
target:
  entity_id: media_player.bose_st10_1

OK

# toggle volume mute.
service: media_player.volume_mute
data:
  is_volume_muted: false
target:
  entity_id: media_player.bose_st10_1

OK

# select LOCAL soundtouch source.
# I don't think this one will work since the 520 does not support /selectLocalSource function.
service: media_player.select_source
data:
  source: LOCAL
target:
  entity_id: media_player.bose_st10_1

it does something, internet radio stops playing and Display say "Soundtouch". Or from BT -> "Soundtouch"

# select BLUETOOTH source.
service: media_player.select_source
data:
  source: BLUETOOTH
target:
  entity_id: media_player.bose_st10_1

OK

# select AUX source.
service: media_player.select_source
data:
  source: 'AUX:AUX'
target:
  entity_id: media_player.bose_st10_1

Fail: Unknown error

soundtouchplus integration services:
# remote control power button press and release.
service: soundtouchplus.remote_keypress
data:
  entity_id: media_player.bose_st10_1
  key_id: POWER
  key_state: both

turn on/off and plays last inputsource from Soundtouch: BT or internet radio

# remote control preset number 2 select.
service: soundtouchplus.remote_keypress
data:
  entity_id: media_player.bose_st10_1
  key_id: PRESET_2
  key_state: release

ok w/ PRESET_1 in my case, play music

hello Lucas, below the command you can find the result in bold

Thank you @Bingo2023 - that was very helpful.  I updated my SoundTouch Model Notes wiki page with your results, which will hopefully help other 520 owners with future questions.

u welcome. Thank you for the good work.
By the way, default name for this device is (could be changed in the wiki):
*.bose_st10_1     ->    *.soundtouch_520_1

Thank you - I adjusted the 520 section device name yaml example in the wiki.

@Bingo2023 Thanks for trying those commands, they were worth a shot.  I was pretty sure they were not going to work with the Wireless Adapter (attached to an ST-520), but wanted to confirm.  Those commands will work for the ST-10 and ST-300 though, as I have confirmed, in case anyone follows this thread in the future.
With that said, I think we have tried everything that we can and just have to accept the fact that the Bose Wireless Adapter has limited SoundTouch functionality when it comes to the WebServices API.  I wish Bose had done a better job integrating it with their supporting products, but it at least give you some other sources (Spotify, Pandora, TuneIn, etc) that the original device does not.
Thanks for getting back to me on the results.  I will go ahead and close the GitHub thread for this issue as well.


EOS-22340 correction in hare's test interface usage

Problem: Currently all the arguments are listed under optional args even if they are 'required'
[root@ssc-vm-5774 ~]# /opt/seagate/cortx/hare/bin/hare_setup test -h
usage: hare_setup test [-h] --config CONFIG [--file FILE]

optional arguments:
  -h, --help       show this help message and exit
  --config CONFIG  Conf Store URL with cluster info
  --file FILE      Full path to the CDF file.

Note: This is known behavior(issue) according to following thread
https://stackoverflow.com/questions/24180527/argparse-required-arguments-listed-under-optional-arguments/24181138
Solution is to use add_argument_group
[root@ssc-vm-5245 hare]# /opt/seagate/cortx/hare/bin/hare_setup init -h
usage: hare_setup init [-h] --config CONFIG [--file FILE]

optional arguments:
  -h, --help       show this help message and exit
  --file FILE      Full path to the CDF file.

required argument:
  --config CONFIG  Conf Store URL with cluster info

Also there is one more thing, as can be seen below,
[root@ssc-vm-5245 hare]# /opt/seagate/cortx/hare/bin/hare_setup test -h
usage: hare_setup test [-h] --config CONFIG [--file FILE] --plan PLAN
                       [--param PARAM]

optional arguments:
  -h, --help       show this help message and exit
  --file FILE      Full path to the CDF file.
  --param PARAM    Test input URL.

required argument:
  --config CONFIG  Conf Store URL with cluster info

required argument:
  --plan PLAN      Testing plan to be executed. Supported values:['sanity',
                   'regression', 'full', 'performance', 'scalability']

As we can see, if there are multiple required args then they will be listed in above format

@SwapnilGaonkar7 Can you state the problem in the PR please?

And just a side note. We can consider click library in favour of argparse. The code is shorter and more concise and it may happen that the problem you're struggling against can be solved easier.

@SwapnilGaonkar7, looks like the build is failing on the patch, kindly check.

Closing PR


Are there plans to release 3.0.0 soon?

I am considering to use react-vtree, with react 17. However, 3.0.0 version is under pre-release. Are there plans to release it soon?

Hi @ankur-sarda, sorry for making you wait for so long time.
Yes, the functionality work is mostly over and released as the latest beta. I also want to update all the dependencies and storybook to the latest versions; this is WIP for now. Unfortunately, it's relatively slow because I don't have enough time. However, for now, you can use the latest beta. It is pretty stable, and I'm not going to implement any new feature or breaking change there.

I am also looking for a release that works with react 17


Resolve libkita dependency

libkita could as well be a header only library. This would remove one of two external dependencies, with the remaining one (inih) being available in some (most?) package managers anyway. Therefore, installation would become a lot less tedious.

succade now uses the header-only version of libkita with 5dd650c100ff45796c1f3424213cb4f1514cdb94 (aka v1.0.1).


adding beta universal video extractor, applying it to shahid4u

modifying shahid4u to the new video extractor
Checklist:

[x] Updated extVersionCode value in build.gradle for individual extensions
[x] Updated overrideVersionCode or baseVersionCode as needed for all multisrc extensions
[x] Referenced all related issues in the PR body (e.g. "Closes #xyz")
[x] Added the isNsfw = true flag in build.gradle when appropriate
[x] Have not changed source names
[x] Have explicitly kept the id if a source's name or language were changed
[x] Have tested the modifications by compiling and running the extension through Android Studio

You shouldn't have copied the doodstream, streamtape, etc. extractors into the new lib. They already exist, so just import them.

well i thought about it but i wanted to make it standalone, idk if it is a bad idea but it is ok for now to import the other libs


React Icons

Description
Search and browse react icons.

Copy or paste the icon name
Copy or paste the icon react componet
Copy or paste the icon import statement
Copy or paste the icon svg

You can also see recent icons and pin icons.
Screencast

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

I see that the first check is failing due to file size being too large. What is the maximum file size allowed for extensions? I can move the SVGs to another repository if that is better?

I'm trying to create that extension too, but it's complicated, unfortunately. Take a look at this pull request.
At first, I tried to download all icons and it worked properly, but the directory was huge (about 100MB).
Then I decided to split each category of icons, but the comfort of using this extension wasn't very good (It works great without crashing any extension).
Now I'm trying to dynamic import icons with dropdown, but each import is saving in a cache, so when I import a few icon categories, there is info about the JavaScript heap out of memory.
Now I don't have an idea how to solve this problem.
The best that I want to achieve is to have one extension called React Icons and select category by dropdown in Grid view.

@teziovsky

At first, I tried to download all icons and it worked properly, but the directory was huge (about 100MB).

Yeah, I have that problem too; the directory is around 24 MB. I was thinking I could put the SVG files on another repository on github. I could still determine the URL of the SVG files easily and it should work just as fast without having to cache it.

The best that I want to achieve is to have one extension called React Icons and select category by dropdown in Grid view.

This is essentially what I have currently. Initially, I wanted to be able to display all icons so I tried putting all icon names in one JSON file but I could not load this file without getting the JavaScript heap out of memory error. Because there are so many icons, I don't think there is a way you can display all icons at once. I don't think it would be very useful anyway.
However, I think it is very important to be able to search for icons in all categories. I implemented this with my most recent push. Check it out:
https://user-images.githubusercontent.com/77864399/210126774-7fdabe20-a976-4385-abc8-ecc409c64611.mov

I tried moving the icons to another repository and it works fine; There is a small load time depending on your internet connection of course. Another drawback is that to use the extension, you would require an internet connection. Can someone from the raycast team confirm whether or not it is okay to keep the SVG files of the icon in the PR?

I have moved the SVG files to another repo so checks are now passing. I think this is ready for review.

🥳🎉


[DASH1-101] Dashboard > Update recruitment center GPS coordinates

Two of the rows in recruitment_center_codes have an incorrect longitude (should be negative) which causes the map view to place the points in the upper left corner. This PR introduces a migration to update those rows.
It also includes a trivial change to convert tabs to spaces in the original migration, but does not change its content.
[DASH1-101]

I think you should also update this in dashboards sql file

I think you should also update this in dashboards sql file

✅  Done

Not sure if I am right but just wondering whether the dots on the middle right are misplaced as well?

@shyamnaru Those are intentional. They are Direct Volunteer sites, so there isn't a geographic space to put them. At some point, the team decided to locate them off the Atlantic seaboard. 🤷♂

:+1:


Modular implicits

The 'anti-modularity' of type classes is even more awkward with first-class modules than regular ones. Plus we don't have generalization so type class parameters can't be inferred any more than implicit parameters. Obviously the challenge with implicits is that implicit search must be exhaustive, which is potentially very slow.

[x] Enable backtracking wrt. unification variables
[ ] Match implicit fn codomains before domains in subtyping and unification
[ ] Schedule resolutions for when unification variables go out of scope
[ ] Ensure termination of resolution

This paper has all the details of a resolution algorithm. It seems to be essentially the same as our subtyping as long as the codomain of implicit functions is matched before the domain (which causes recursive resolution).

Also need to be able to block the resolution of an implicit whose type contains unification variables until the moment those unification variables go out of scope. This mechanism should also be useful for generativity polymorphism (related to #9).

Actually using persistent union-find instead of a trail. Avoids complexity when undoing union operations and should only be slower by a constant factor. (Might even be faster since apparently a fast union-find might not be so fast when backtracking is required.)

Switched to mutable union-find with backtracking.


Feature request-abilty to add a sound file to a key press

Some DCS modules when you flick a switch in the cockpit you can hear a related sound file. Some modules such as KA50 no sound is heard when you flick a toggle switch. So a cool feature would be to add a sound file when programming a key press. So as well as having on the stream deck main page  "BUTTON ACTION" and "BUTTON IMAGE" you could have the option of "SOUND FILE".

OK. Let's ask around if this is something others would use too. Do you have several sound files like this one?
toggle_switch.zip

What if - I would embedd a few sound files with DCSFP? And user could choose from them? If embedded then there wouldn't be any need of keeping track of external files and sharing bindings with sound wouldn't be a problem.

Or even simpler, just have an option of sound on / off. That would be the best.
Found some sound files here : https://www.soundsnap.com/search/audio/switch/score

@shaky1963, check this pre-release => https://github.com/DCSFlightpanels/DCSFlightpanels/releases/tag/4.2.28
There you can specify a sound file for the button. Please provide feedback.

Thank you Guys
Will test tonight and provide feedback

Hi jdahlblom
I have done some initial testing, programming button presses with sounds in the KA50 and they work. The sounds i have used , i had downloaded from a free site. I have a request though - can you make the volume slider at maximum 100% louder? The key press sounds are hard to hear over the engine noise. My work around this at the moment is in the game settings - audio, i reduced the volume of all items by 50% and had dcsfp button push sound volume at 100%. Thank you for implementing this it is a good feature. Happy Easter and stay safe. Regards PEEP

I read about the volume control and it isn't possible. The value is between 0 - 1. The only option you have is to increase DCSFP's volume via Windows Volume Mixer which is located in the bottom right (task bar). I increased DCSFP's volume there and it worked. I am listening to Spotify at the same time so I had to lower Spotify's volume. (that too got increased??)

Hi again
Updated to 4.2.29 and adjusted volumes as you suggested with Windows Volume Mixer. Works good for me now.

Excellent!


Minor Improvement

Minor improvement.
Readme updates.
Nuget package creation - v1.0.2

Codecov Report

Merging #16 (9c3aaf8) into main (1c4252c) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main       #16   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            1         1
  Lines          106       108    +2
  Branches        10        10
=========================================
+ Hits           106       108    +2

Impacted Files
Coverage Δ

ShadowRoot.Digger/ShadowRootAssist.cs
100.00% <100.00%> (ø)

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 1c4252c...9c3aaf8. Read the comment docs.


add support for injecting label-matchers at runtime

This PR adds support for injecting label-matchers to promql expressions at runtime. Currently, this is implemented for alert rules, which are injected with the juju topology, replacing the previous relabeling mechanics of jinja with actual promql parsing and validation.
There are a couple of issues with the current promql-transform binary which are tracked in that repo:

https://github.com/canonical/promql-transform/issues/1
https://github.com/canonical/promql-transform/issues/2

Still left todo:

[x] https://github.com/canonical/prometheus-k8s-operator/pull/166#pullrequestreview-866903808

Promql-transform injects additional quotes into the alert rule expression, effectively disabling all rules, as they wont match anything.

Fixed in latest commit