write_request get executed only after i kill the server

The problem
i created a gatt server based on the gattserverexample.py and i must kill the server(KeyboardInterrupt) to get the write_request code to log on screen
Reproduction
`   from concurrent.futures import thread
import logging
import asyncio
import threading
from typing import Any, Dict
from bless import (  # type: ignore
        BlessServer,
        BlessGATTCharacteristic,
        GATTCharacteristicProperties,
        GATTAttributePermissions
        )
GENERIC_ACCESS_SERVICE = "00001800-0000-1000-8000-00805F9B34FB"
DEVICE_NAME = "00002A00-0000-1000-8000-00805F9B34FB"
APPEARANCE = "00002A01-0000-1000-8000-00805F9B34FB"
PERIPH_PREF_CONN_PARAM = "00002A04-0000-1000-8000-00805F9B34FB"

RX_UART = "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
TX_UART = "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"
SERVICE_UART ="6E400001-B5A3-F393-E0A9-E50E24DCCA9E"

GET_ALL_DATAS = 'download mem'
GET_LAST_GPS = 'get position'
ERASE_MEME = 'erase mem'

UART_SAFE_SIZE = 20

DATA_PATTERN = ('ID', 'crc', 'hour', 'minute', 'seconds', 'day', 'month', 'year', 'lat', 'long', 'HDOP', 'time_to_fix', 'nb_sat')

logger = logging.getLogger(__name__)

class BleServer:

    def __init__(self, serviceName) -> None:
        self._serviceName = serviceName
        self._trigger: threading.Event = threading.Event()
        self._gatt: Dict = {
            f"{SERVICE_UART}":{
                f"{RX_UART}":{
                    "Properties": (GATTCharacteristicProperties.write |
                                   GATTCharacteristicProperties.write_without_response)
                },
                f"{TX_UART}": {
                    "Properties": (GATTCharacteristicProperties.notify),
                    "Permissions": (GATTAttributePermissions.readable),
                    "Value": None
                }
            }
        }

    def startServer(self):
        loop = asyncio.get_event_loop()
        logger.debug("Starting Server loop")
        try:
            loop.run_until_complete(self._setServerUp(loop))
        except KeyboardInterrupt:
            loop.run_until_complete(self.stopServer())

    async def _setServerUp(self, loop):
        logger.debug("Setting up server")
        self._trigger.clear()
        self._server = BlessServer(name=self._serviceName, loop=loop)
        #TODO fix service name not showing
        self._server.read_request_func = self.read_request
        self._server.write_request_func = self.write_request
        #logger.debug(self._gatt)
        await self._server.add_gatt(self._gatt)
        logger.debug("Gatt added to the server")
        await self._server.start()
        logger.debug("server started")

        #logger.debug(self._server.get_characteristic(RX_UART))
        logger.debug("advertising")

        self._trigger.wait()
        self._server.get_characteristic(DEVICE_NAME).value = (
            bytearray(self._serviceName.encode())
        )
        self._server.update_value(GENERIC_ACCESS_SERVICE, DEVICE_NAME)
        logger.debug("after wait trigger")

    def read_request(self,
        characteristic: BlessGATTCharacteristic,
        **kwargs
        ) -> bytearray:
        logger.debug(f"Reading {characteristic.value}")
        return characteristic.value

    def write_request(self,
        characteristic: BlessGATTCharacteristic,
        value: Any,
        **kwargs
        ):
        logger.debug("Write Request")
        logger.debug(value)
        characteristic.value = value
        logger.debug(f"Char value set to {characteristic.value}")
        if characteristic.value :
            logger.debug("Nice write request")
            self._trigger.set()

    async def stopServer(self):
        logger.debug("stopping server")
        await self._server.stop()

if __name__ == '__main__':
    logging.basicConfig(level=logging.DEBUG)
    logger = logging.getLogger(__name__)
    logger.debug("Starting Server in self running mode")
    server = BleServer("GATT_SERVICE")
    server.startServer()

`
Expected behavior
I excpected that the write_request section run in real time so i could them code the function triggered by the update of the RX_UART
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
-Rspbian (rpi 4b 8gb)
-Python 3.9.2
Additional context
i'm trying to setup a service similar to another one for specific need, this is why i use the Nordic UART service
Other small isue
My service name are never advertised, i only got N/A

Sorry for the delayed response.
Some systems use threading and coroutines differently. If the code is ran entirely on asynchronous coroutines, my understanding is that blocking the thread will block other coroutines that need to process. To test this: have you tried changing the trigger to be an asyncio.Event rather than a threading.Event? This way, when you await the asyncio.Event the background function for bless can continue working.

Hello, no worries for the delay, we're all busy ;-)
i'll just try and got the following error:
/home/pi/hotspot-python/pkg/ble/ble_server.py:75: RuntimeWarning: coroutine 'Event.wait' was never awaited

self._trigger.wait()#This one seem to block

I've edited your code and it runs fine (see below). The await Event.wait() command was blocking the code from getting to the rest of the server setup. The changes below address it. You should see write requests coming through now.
I still need to check why the service name isn't broadcasting. This can be tricky though depending on your system.
import asyncio

import logging
from typing import Any, Dict
from bless import (  # type: ignore
        BlessServer,
        BlessGATTCharacteristic,
        GATTCharacteristicProperties,
        GATTAttributePermissions
        )
GENERIC_ACCESS_SERVICE = "00001800-0000-1000-8000-00805F9B34FB"
DEVICE_NAME = "00002A00-0000-1000-8000-00805F9B34FB"
APPEARANCE = "00002A01-0000-1000-8000-00805F9B34FB"
PERIPH_PREF_CONN_PARAM = "00002A04-0000-1000-8000-00805F9B34FB"

RX_UART = "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
TX_UART = "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"
SERVICE_UART ="6E400001-B5A3-F393-E0A9-E50E24DCCA9E"

GET_ALL_DATAS = 'download mem'
GET_LAST_GPS = 'get position'
ERASE_MEME = 'erase mem'

UART_SAFE_SIZE = 20

DATA_PATTERN = ('ID', 'crc', 'hour', 'minute', 'seconds', 'day', 'month', 'year', 'lat', 'long', 'HDOP', 'time_to_fix', 'nb_sat')

logger = logging.getLogger(__name__)

class BleServer:

    def __init__(self, serviceName) -> None:
        self._serviceName = serviceName
        self._trigger: asyncio.Event = asyncio.Event()
        self._gatt: Dict = {
            f"{SERVICE_UART}":{
                f"{RX_UART}":{
                    "Properties": (GATTCharacteristicProperties.write |
                                   GATTCharacteristicProperties.write_without_response),
                    "Permissions": (GATTAttributePermissions.readable | GATTAttributePermissions.writeable)
                },
                f"{TX_UART}": {
                    "Properties": (GATTCharacteristicProperties.notify),
                    "Permissions": (GATTAttributePermissions.readable),
                    "Value": None
                }
            }
        }

    def startServer(self):
        loop = asyncio.get_event_loop()
        logger.debug("Starting Server loop")
        try:
            loop.run_until_complete(self._setServerUp(loop))
        except KeyboardInterrupt:
            loop.run_until_complete(self.stopServer())

    async def _setServerUp(self, loop):
        logger.debug("Setting up server")
        self._trigger.clear()
        self._server = BlessServer(name=self._serviceName, loop=loop)
        #TODO fix service name not showing
        self._server.read_request_func = self.read_request
        self._server.write_request_func = self.write_request
        #logger.debug(self._gatt)
        await self._server.add_gatt(self._gatt)
        logger.debug("Gatt added to the server")
        await self._server.start()
        logger.debug("server started")

        #logger.debug(self._server.get_characteristic(RX_UART))
        logger.debug("advertising")

        # self._server.get_characteristic(DEVICE_NAME).value = (
            # bytearray(self._serviceName.encode())
        # )
        # self._server.update_value(GENERIC_ACCESS_SERVICE, DEVICE_NAME)
        await self._trigger.wait()
        logger.debug("after wait trigger")

    def read_request(self,
        characteristic: BlessGATTCharacteristic,
        **kwargs
        ) -> bytearray:
        logger.debug(f"Reading {characteristic.value}")
        return characteristic.value

    def write_request(self,
        characteristic: BlessGATTCharacteristic,
        value: Any,
        **kwargs
        ):
        logger.debug("Write Request")
        logger.debug(value)
        characteristic.value = value
        logger.debug(f"Char value set to {characteristic.value}")
        if characteristic.value :
            logger.debug("Nice write request")
            self._trigger.set()

    async def stopServer(self):
        logger.debug("stopping server")
        await self._server.stop()

if __name__ == '__main__':
    logging.basicConfig(level=logging.DEBUG)
    logger = logging.getLogger(__name__)
    logger.debug("Starting Server in self running mode")
    server = BleServer("GATT_SERVICE")
    server.startServer()

i tested it, but unfortunately, when trying to connect with nrfConnect, i got disconnected after launching discover service, so i was not able to even try to send a write request, there is still something wrong, i'll copy paste you the last version of my code :
`
import logging
import asyncio
from typing import Any, Dict
from bless import (  # type: ignore
BlessServer,
BlessGATTCharacteristic,
GATTCharacteristicProperties,
GATTAttributePermissions
)
GENERIC_ACCESS_SERVICE = "00001800-0000-1000-8000-00805F9B34FB"
DEVICE_NAME = "00002A00-0000-1000-8000-00805F9B34FB"
APPEARANCE = "00002A01-0000-1000-8000-00805F9B34FB"
PERIPH_PREF_CONN_PARAM = "00002A04-0000-1000-8000-00805F9B34FB"
RX_UART = "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
TX_UART = "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"
SERVICE_UART ="6E400001-B5A3-F393-E0A9-E50E24DCCA9E"
GET_ALL_DATAS = 'download mem'
GET_LAST_GPS = 'get position'
ERASE_MEME = 'erase mem'
UART_SAFE_SIZE = 20
DATA_PATTERN = ('ID', 'crc', 'hour', 'minute', 'seconds', 'day', 'month', 'year', 'lat', 'long', 'HDOP', 'time_to_fix', 'nb_sat')
logger = logging.getLogger(name)
class BleServer:
def __init__(self, serviceName) -> None:
    self._serviceName = serviceName
    self._trigger: asyncio.Event = asyncio.Event()
    self._gatt: Dict = {
        f"{SERVICE_UART}":{
            f"{RX_UART}":{
                "Properties": (GATTCharacteristicProperties.write |
                               GATTCharacteristicProperties.write_without_response)
            },
            f"{TX_UART}": {
                "Properties": (GATTCharacteristicProperties.notify),
                "Permissions": (GATTAttributePermissions.readable),
                "Value": None
            }
        }
    }

def startServer(self):
    loop = asyncio.get_event_loop()
    logger.debug("Starting Server loop")
    try:
        loop.run_until_complete(self._setServerUp(loop))
    except KeyboardInterrupt:
        loop.run_until_complete(self.stopServer())

async def _setServerUp(self, loop):

    logger.debug("Setting up server")

    self._trigger.clear()
    self._server = BlessServer(name=self._serviceName, loop=loop)

    #TODO fix service name not showing

    self._server.read_request_func = self.read_request
    self._server.write_request_func = self.write_request

    await self._server.add_gatt(self._gatt)
    logger.debug("Gatt added to the server")
    await self._server.start()
    logger.debug("server started")

    logger.debug("advertising")

    await self._trigger.wait()
    logger.debug("after wait trigger")

def read_request(self,
    characteristic: BlessGATTCharacteristic,
    **kwargs
    ) -> bytearray:
    logger.debug(f"Reading {characteristic.value}")
    return characteristic.value

def write_request(self,
    characteristic: BlessGATTCharacteristic,
    value: Any,
    **kwargs
    ):
    logger.debug("Write Request")
    logger.debug(value)
    characteristic.value = value
    logger.debug(f"Char value set to {characteristic.value}")
    if characteristic.value == bytearray(b'allo'):
        self.printSomething()
    elif characteristic.value :
        logger.debug("Nice write request")
        self._trigger.set()

def printSomething(self):
    logger.debug("TEST")
    print("TEST")

async def stopServer(self):
    logger.debug("stopping server")
    await self._server.stop()

if name == 'main':
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(name)
logger.debug("Starting Server in self running mode")
server = BleServer("GATT_SERVICE")
server.startServer()
`

When you try to connect and discover services, does the python code continue to run or does it crash?

the python code keep running without issue.
(the version i past earlier)

Does the examples/server.py example work for you?

no, i got the same issue

Does your raspberry pi have a built in bluetooth module or are you using the nordic board as the adapter?

O'm using the onboard device, the nordic board are for a linked but
dofferent project
Le jeu. 10 nov. 2022, 16 h 00, Kevin Davis @.***> a
écrit :

Does your raspberry pi have a built in bluetooth module or are you using
the nordic board as the adapter?
—
Reply to this email directly, view it on GitHub
https://github.com/kevincar/bless/issues/87#issuecomment-1310886788, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABSPAACNLGMCSAZVNARZWRLWHVO6BANCNFSM53VQDGVA
.
You are receiving this because you authored the thread.Message ID:
@.***>

Any chance I could get a screen ship of the nRF connect error? Do you also have this issue if you use PunchThrough's LightBlue app?
I haven't tested on Raspian, I'll see if I can flash a copy later and test.

I'll gave you more details later today
Le jeu. 10 nov. 2022, 16 h 21, Kevin Davis @.***> a
écrit :

Any chance I could get a screen ship of the nRF connect error? Do you also
have this issue if you use PunchThrough's LightBlue app
https://punchthrough.com/lightblue/?
I haven't tested on Raspian, I'll see if I can flash a copy later and test.
—
Reply to this email directly, view it on GitHub
https://github.com/kevincar/bless/issues/87#issuecomment-1310906265, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABSPAAGPSEJ7W53HIQDVARLWHVRNNANCNFSM53VQDGVA
.
You are receiving this because you authored the thread.Message ID:
@.***>

So i will explain you the whole situation first:
we have the nordic board(dev board) that is use to make a standalone BLE device that my work will use.
in a first stage, i have to code a Android Application that will have to fetch the Device (named puck) data  and store it locally until it have network and can be forwarded to our server.(the device will be in a zone with low to no cellular coverage)
in a second stage, i will have to code a Raspberry pi device that will automatically fetch data from the Puck when they are in Ble range (and later probably add LoRa support for better coverage of a site)
So since we will still have the network coverage issue (not cellular data so the Raspberry pi can'T automatically send data) we will have to manually go get the data using an android App, or another raspberry pi that will be mounted on car or stuff.
So my idea to work smarter not hard was to reproduce the puck BLE Behavior (UUID, Command, etc.....) of the Puck so the current android app and raspberry pi python app will be able to fetch the data the exact same way it currently does with the puck.

There is the screenshot

And the log from a current Working nordic dev board
nRF Connect, 2022-11-10
AxlStick (C1:50:68:11:28:B7)
D	18:29:06.422	gatt.close()
D	18:29:06.426	wait(200)
V	18:29:06.627	Connecting to C1:50:68:11:28:B7...
D	18:29:06.627	gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D	18:29:06.766	[Server callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	18:29:06.766	[Server] Device with address C1:50:68:11:28:B7 connected
I	18:29:06.767	[Server] MTU changed to 247
D	18:29:06.778	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	18:29:06.778	Connected to C1:50:68:11:28:B7
D	18:29:06.786	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
V	18:29:06.796	Discovering services...
D	18:29:06.796	gatt.discoverServices()
I	18:29:07.472	Connection parameters updated (interval: 7.5ms, latency: 0, timeout: 5000ms)
D	18:29:07.703	[Callback] Services discovered with status: 0
I	18:29:07.703	Services discovered
V	18:29:07.707	Generic Access (0x1800)
- Device Name [R W] (0x2A00)
- Appearance [R] (0x2A01)
- Peripheral Preferred Connection Parameters [R] (0x2A04)
- Central Address Resolution [R] (0x2AA6)
Generic Attribute (0x1801)
- Service Changed [I] (0x2A05)
   Client Characteristic Configuration (0x2902)
Nordic UART Service (6e400001-b5a3-f393-e0a9-e50e24dcca9e)
- RX Characteristic [W WNR] (6e400002-b5a3-f393-e0a9-e50e24dcca9e)
- TX Characteristic [N] (6e400003-b5a3-f393-e0a9-e50e24dcca9e)
   Client Characteristic Configuration (0x2902)
Secure DFU Service (0xFE59)
- Buttonless DFU [I W] (8ec90003-f315-4f60-9fb8-838830daea50)
   Client Characteristic Configuration (0x2902)
D	18:29:07.708	gatt.setCharacteristicNotification(00002a05-0000-1000-8000-00805f9b34fb, true)
D	18:29:07.711	gatt.setCharacteristicNotification(6e400003-b5a3-f393-e0a9-e50e24dcca9e, true)
I	18:29:07.763	Connection parameters updated (interval: 50.0ms, latency: 0, timeout: 5000ms)

Thanks for the clarification. I think I understand your situation. So that we can pin point whether the issue directly associated with bless and not another piece of your workflow, can you post the following:

nRF connect logs when connecting to the Raspberry Pi running the example/server.py
Confirm that the same behavior occurs Im when using LightBlue app

The log have already been posted, it was when using my code, but they are
the same.
I will try with your app
Le jeu. 10 nov. 2022, 19 h 41, Kevin Davis @.***> a
écrit :

Thanks for the clarification. I think I understand your situation. So that
we can pin point whether the issue directly associated with bless and not
another piece of your workflow, can you post the following:

nRF connect logs when connecting to the Raspberry Pi running the
example/server.py
Confirm that the same behavior occurs Im when using LightBlue app

—
Reply to this email directly, view it on GitHub
https://github.com/kevincar/bless/issues/87#issuecomment-1311085409, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABSPAABHIT3N5CZOT3SLLP3WHWI3HANCNFSM53VQDGVA
.
You are receiving this because you authored the thread.Message ID:
@.***>

I can confirm the same issue with lightblue
Le jeu. 10 nov. 2022, 20 h 09, Martin Verret @.***> a
écrit :

The log have already been posted, it was when using my code, but they are
the same.
I will try with your app
Le jeu. 10 nov. 2022, 19 h 41, Kevin Davis @.***> a
écrit :

Thanks for the clarification. I think I understand your situation. So
that we can pin point whether the issue directly associated with bless and
not another piece of your workflow, can you post the following:

nRF connect logs when connecting to the Raspberry Pi running the
example/server.py
Confirm that the same behavior occurs Im when using LightBlue app

—
Reply to this email directly, view it on GitHub
https://github.com/kevincar/bless/issues/87#issuecomment-1311085409,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABSPAABHIT3N5CZOT3SLLP3WHWI3HANCNFSM53VQDGVA
.
You are receiving this because you authored the thread.Message ID:
@.***>

Thanks for the update.
I'll see if I can whip up my Raspberry Pi to run Raspian. I've currently tested bless on Raspberry Pi running Ubuntu and it works properly, but haven't checked Raspian. I'll keep you posted

In the mean time, do you have any way to confirm this isn't an android issue? See here

I have no issue connecting to the nordic board
Le jeu. 10 nov. 2022, 20 h 49, Kevin Davis @.***> a
écrit :

In the mean time, do you have any way to confirm this isn't an android
issue? See here
https://devzone.nordicsemi.com/f/nordic-q-a/7459/unexpected-disconnect-after-bluetoothgatt-discoverservices-android
—
Reply to this email directly, view it on GitHub
https://github.com/kevincar/bless/issues/87#issuecomment-1311127518, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABSPAADUMKM325YTD265CULWHWQ4FANCNFSM53VQDGVA
.
You are receiving this because you authored the thread.Message ID:
@.***>

I can confirm this problem on RPI 4 (python:3.8 based docker container managed by balena)
Using asyncio.Event solved the problem
I would at least suggest a comment in the example file regarding this possible issue.

Thanks for this confirmation @tobias-dv-lnu. I've pushed an update on a development branch to include your suggestion. See here
However, I'm not sure this solves @arist0v 's issue on Raspian though. To confirm, did the switch to using an asyncio.Event work for you while using Ubuntu on RPI 4, or are you using Raspian?

Our project who use this is on hold for i don't know how many time, so i won't be able to confiirm anything soon, if you really need confirmation from me please tell me and i will setup stuff to try to help as much as i can

@arist0v sounds good. No need for now but I’ll let you know. I still need to confirm for myself first. Thanks!

@kevincar nice!
Our docker container is FROM: python:3.11 -> i guess this is debian based in the bottom of things.
FROM python:3.11
RUN apt-get update
RUN apt-get install -y build-essential bluetooth libdbus-1-dev libgirepository1.0-dev libudev-dev libical-dev
ENV DBUS_SYSTEM_BUS_ADDRESS=unix:path=/host/run/dbus/system_bus_socket
WORKDIR /code
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
RUN pip install dbus-python pycairo PyGObject
RUN pip install python-networkmanager
COPY . .
ENTRYPOINT sh docker_entrypoint.sh

docker_entrypoint.sh:
#!/bin/bash

service dbus start
bluetoothd &

python ble_service.py

/bin/bash

To follow up. I tested the updated server.py example file on Raspbian v6.1.21 released on 2023-5-3 and it worked without issues. I test this using an iOS device as a central and first ensured that the devices were paired prior to testing.
I'm going to close this since it is working as expected. If anyone is still having issues with this please reopen and we'll continue the discussion.


Can't read back from localStorage

Code Example
http://plnkr.co/edit/ThTAB4NfstC0DOCiPflt?p=preview
Description:
I'm trying to save to the local stroage and then read from it, I followed the code examples and I think I wrote it as I should, but it should show "hello you" and instead it shows "hello world"
I see the values being saved in the localStorage, but CacheFactory doesn't seem to recognize any of them after reload
What am I doing wrong here?

I got same thing. Actually, not just for localStorage, sessionStorage has the same issue.
I guess you can't use CacheFactory.get(CahceID).get(key) to get that value if you store value in sessionStorage or localStorage method.  However, since it's store in localStorage you can get that message directly use   'localStorage.get method'   It's a javascript method. no need for any dependencies.

You've misunderstood how angular-cache works. Items you "put" into a cache (which has been configured to use localStorage) will be saved to localStorage. The cache itself will not be saved to localStorage. A cache is a memory-only entity, its methods and behaviors can't be serialized to localStorage, so whenever your app starts again you have to check to make sure the cache has been initialized before you try to read any data from it. Change your plunker from this:
var supposedToBeCached = CacheFactory.get('test');
if (supposedToBeCached) {
  console.log('test');
  $scope.name = supposedToBeCached.get('message');
} else {
  var cache = CacheFactory('test');
  cache.put('message', 'You');
}

to this:
// Check to see if the cache has been initialized
var testCache = CacheFactory.get('test');

if (!testCache) {
  // Cache has not been initialized, so initialize it
  testCache = CacheFactory('test');
}

// Now we are sure the cache has been initialized,
// so let's read data from it (or write if nothing has been written yet).
$scope.name = testCache.get('message') || testCache.put('message', 'you');

Closing because I’m not sure this is an issue, if you are convinced that this is really a bug, please feel free to re-open the issue and add more information:

good - Your versions of Angular, Angular-cache, etc, relevant console logs/error, code examples that revealed the issue
better - A plnkr, fiddle, or bin that demonstrates the issue
best - A Pull Request that fixes the issue, including test coverage for the issue and the fix

Otherwise support is done via the mailing list.


Unable to add blocks to builder field after 3.1 update

Package
filament/filament
Package Version
v3.1.0
Laravel Version
v10.34.0
Livewire Version
v3.2.1
PHP Version
v8.2
Problem description
Blocks are no longer added to builder fields after clicking a block in the picker. This started happening after the v3.1 update.
Expected behavior
Blocks should be added when clicked in the picker.
Steps to reproduce
Install the reproduction repo, create a new "Builder tests" item, then try and add blocks.
Reproduction repository
https://github.com/binaryfire/filament-kv-bug
Relevant log output
No response

Seems to only be an issue with builders inside sections

In fact, it's only builders inside sections with the heading "Builder"
This is because, sections with the heading "Builder" have an auto-generated id() of builder
And the ID of the builder component is also builder
Form components must have unique IDs in order for form component actions to work correctly
So the fix is Section::make()->id('builder-section')
The reason why this has just started, is because we introduced section header actions, which rely on the ID existing for section. To make it easier to use, we added the ID generation by default, but now the IDs clash.

I've just pushed up a fix to remove the ID autogeneration when there are no header actions, so this shouldnt be a BC anymore.

Makes sense. Would never have figured that out - thanks for the explanation.


[logging] Consider putting JSON of data in message field

At request of @davidiw
Overview
Current behavior
Lack of a message means no message
info!(key=value)
=> {"data":{"key":"value"}}

Requested behavior
Lack of a message means put JSON of data in the message field
info!(key=value)
=> {"data":{"key":"value"}, "message":"{"key":value"}"}

I'm not quite sure what this is asking for. @davidiw could you elaborate a bit more?

I'm not quite sure what this is asking for. @davidiw could you elaborate a bit more?

I've updated with what david and I talked about

I'm not quite sure I understand how this is useful, other than doubling the number of bytes logged

so when I hop into kibana, the default log line is empty. That makes my logs useless without hitting the carrot so that you can see more information in it.

I would suggest you just add a message to your log lines then :P

my log lines are the message, it would literally be duplicating itself

https://github.com/libra/libra/blob/master/secure/net/src/lib.rs#L260 or https://github.com/libra/libra/blob/master/consensus/safety-rules/src/safety_rules.rs#L150

maybe this is a trivial tweak in kibana?

cc: @sherry-x thoughts?

Yeah I've been having this issue as well, lots of logs does not have "message" field and if you try to just show message field it's empty. but I also agree setting message field is just duplication. we can probably do different filter for different module so that the output message is useful, example: https://85bd0f3d76314c71869bce3ae260f6d2.us-west1.gcp.cloud.es.io:9243/goto/3f58e3783a9f4bd352591287df1b9281

That doesn't really work well, @sherry-x, usually I'm not debugging a specific component but I'm debugging an issue and jumping across multiple components. @bmwill / @gregnazario, we really need to have a default string otherwise it makes kibana a pain to use. If there isn't an easy fix to duplicate the data upstream, I propose we just bite the bullet for now and duplicate the data in our code.

I'm fine with duplicating the data, but we've got to be careful that the data isn't too large

Yeah it's not great to have missing message when debugging general issues. As long as it's not tons of data we can add it for now (Association is paying it anyway ¯_(ツ)_/¯)

Given we've had issues with throughput of logs before I'm hesitant to just duplicate the data. Also just dumping the data in as a JSON string into an empty message field seems not very readable. A default string would probably bring more harm than good since then we'll end up with a ton of similar messages making debugging a bit harder.

Okay, maybe we can make this an attribute on my schema?

Okay, maybe we can make this an attribute on my schema?

Something like this?
#[derive(Schema)]
#[schema(data_to_message)]
pub struct Schema {
    ...
}

Something like that wouldn't be ideal for usability reasons. What happens if you also include a message? If this is something that we want to do, it should be handled on the backend, just before sending the data out. I'm fine with duplicating the data I was just hoping since this is really a "kibana" issue that we could fix it in kibana and not in libra

Give me a second and I'll have a PR whipped up

Something like that wouldn't be ideal for usability reasons. What happens if you also include a message? If this is something that we want to do, it should be handled on the backend, just before sending the data out. I'm fine with duplicating the data I was just hoping since this is really a "kibana" issue that we could fix it in kibana and not in libra

This actually brings up the bigger point of how do we handle duplicated data fields in schemas and non-schemas?  Which one wins?
Kibana is a pretty simple client and just prints out directly what's in the database.  There might be some complicated way to do it, but tbh I'm not an expert in doing anything too fancy with it, and it tends to slow down pretty quickly when you do too much complicated things.

It's dependent on the implementation of how the Logger collects the key/value pairs. Currently we do "last one wins" if there happen to be two key's that match.

Thanks everyone for having a thorough conversation on this, identifying an acceptable though not ideal solution, and @bmwill for getting it done!


Break hook out?

I want to write a tool that does on the fly analysis of source code.
Your hook mechanism seems awesome to implement my analysis machine.
it would be create if it could be broken out into either instanbul-hook or istanbul-core/hook :)
I can help with this if it's preferred

@gotwarlost this is very old and most provably also a non requirement. please close to increase overall confidence in this very good tool!


KeypairService does not have a get method

The keypair service has a find method, but no get method. Should there be a get method for consistency?

Added.


Implement option to skip svg files with duplicate filenames

I needed this option for a big-scale project where different clients can overwrite single icons by using the existing svg filename, but uploading it to a client specific directory.
The implementation may be too simple and I didn't write any tests, but if you could use this branch as a base and implement the option, it'll be great.
Please note that I use id instead of filename. This is needed due to Rails naming conventions (we have files like close.de_xy.svg, which overwrites close.svg)

It may also solve Issue #99


absolute path

Need to ensure absolute file paths are taken care of cause imager fails with a pathed string for the image name...

fixed for imager and fuse mount, need to test for verify, and info, etc..

fixed for all tools


Remove remaining from_ops calls

Circuit.from_ops() is deprecated, so we shouldn't use it in examples
anymore.
In addition, it can cause test failures if the deprecation warning
gets triggered in another test before being tested for in
circuit_test.py.

If i recall, some from_ops were kept to make sure the deprecation "still worked" in the sense that from_ops would still run?

Shouldn't the circuit_test.py do that?  I don't think we should leave stuff around in random files.  I left the tests in circuit_test that use it.
I think several of these were do to commits that happened after the migration (phased_iswap for instance).


Created Romanian translation for the Contribution Guidelines.

Created Romanian translation for the Contribution Guidelines.

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #18632

LGTM! Thanks for creating this translation, @lindakovacs - I see you've been part of the discussion about translations, where we noted we're only focusing on the 5 noted languages to translate the Guide and Curriculum for now. One update there is that we're welcoming translations to any language of the README and CONTRIBUTING docs in the fCC repo. 🎉 🇷🇴 🔁

@HKuz thank you.


disable symink finder to fix tests

cc @Kureev
Disabling symlink resolver temporarily because it breaks launchPackager.command.
Waiting for a PR with a fix to enable both

By analyzing the blame information on this pull request, we identified @grabbou and @Kureev to be potential reviewers.

@facebook-github-bot shipit

Thanks for importing.

I'll pick it up asap


Fixes to improve python2.7 compatibility

Codecov Report

Merging #12 into master will not change coverage.
The diff coverage is 80%.

@@           Coverage Diff           @@
##           master      #12   +/-   ##
=======================================
  Coverage   80.57%   80.57%
=======================================
  Files          25       25
  Lines         767      767
=======================================
  Hits          618      618
  Misses        149      149

Impacted Files
Coverage Δ

chaosmonkey/attacks/executor.py
36.36% <0%> (ø)
:arrow_up:

chaosmonkey/engine/cme_manager.py
93.15% <100%> (ø)
:arrow_up:

chaosmonkey/attacks/attack.py
83.33% <100%> (ø)
:arrow_up:

chaosmonkey/planners/planner.py
72.22% <100%> (ø)
: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 f4f5fbe...b073375. Read the comment docs.


Create PBBUnsharing.cls

creates an un share to group block to compliment the share to group block

unfortunately not - the test classes are also covering other classes as this was made primarily for another project I was working on


As a user, I want to implement eye tracking

Let's implement WebGazer
Request:

https://twitter.com/fr3ddy/status/1192209578722770945
https://twitter.com/MIDIBlocks/status/1318770324121427969

If you implement this I would be very interested in how you do it.  The holistic mediapipe app has everything but iris tracking already integrated.

If you implement this I would be very interested in how you do it.  The holistic mediapipe app has everything but iris tracking already integrated.

For sure! I plan on implementing the MediaPipe iris model, but I'm holding off a bit more as it doesn't look like it's been officially released by the MediaPipe team for the web yet (there is this web demo though)

For sure! I plan on implementing the MediaPipe iris model, but I'm holding off a bit more as it doesn't look like it's been officially released by the MediaPipe team for the web yet (there is this web demo though)

This would be great !
realeye.io implemented WebGazer JS (+ some modifications). There is a live demo, it works really well.
Keep it up ! Your job is awesome ! :)

This would be great !
realeye.io implemented WebGazer JS (+ some modifications). There is a live demo, it works really well.
Keep it up ! Your job is awesome ! :)

Closing and moving this to #150 with MediaPipe Iris: https://google.github.io/mediapipe/solutions/iris.html


Don't copy false values. Fixes usage in React Native.

https://github.com/facebook/react-native/blob/6a838a4201f99ae5e88b3684bb
798d363815dd53/packager/react-packager/src/Resolver/polyfills/polyfills.
js#L24

Parens are unnecessary, but I always favour explicit code over smart. Do you agree?

Parens are unnecessary, but I always favour explicit code over smart. Do you agree?

I agree.
I don't see how unnecessary parens make something more explicit :) the parens make it look like it will evaluate to a boolean instead of just being a ternary.

I agree.
I don't see how unnecessary parens make something more explicit :) the parens make it look like it will evaluate to a boolean instead of just being a ternary.

I released a fix for this in version 2.3.3 via #52. :100:

Awesome. Thank you!


Not able to hit the WebSocket with newly created AWS instance(on prem feature)

What is the current behavior?
I am not able to get the transcription when I use the WebSocket with the new AWS instance that I created.
I'm getting the following error.
{
    _events: [Object: null prototype] {
      open: [Function],
      close: [Function],
      error: [Function],
      message: [Function]
    },
    _eventsCount: 4,
    _maxListeners: undefined,
    _binaryType: 'nodebuffer',
    _closeCode: 1006,
    _closeFrameReceived: false,
    _closeFrameSent: false,
    _closeMessage: '',
    _closeTimer: null,
    _extensions: {},
    _protocol: '',
    _readyState: 2,
    _receiver: null,
    _sender: null,
    _socket: null,
    _bufferedAmount: 0,
    _isServer: false,
    _redirects: 0,
    _url: 'ws://instance_url.com/v1/listen?model=nova-2',
    _req: ClientRequest {
      _events: [Object: null prototype],
      _eventsCount: 5,
      _maxListeners: undefined,
      outputData: [],
      outputSize: 0,
      writable: true,
      destroyed: true,
      _last: true,
      chunkedEncoding: false,
      shouldKeepAlive: true,
      _defaultKeepAlive: true,
      useChunkedEncodingByDefault: false,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      _contentLength: 0,
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      socket: [Socket],
      _header: 'GET /v1/listen?model=nova-2 HTTP/1.1\r\n' +
        'Sec-WebSocket-Version: 13\r\n' +
        'Sec-WebSocket-Key: dtrfrb1XD/4W1GHVjvjxQA==\r\n' +
        'Connection: Upgrade\r\n' +
        'Upgrade: websocket\r\n' +
        'Authorization: token token_number\r\n' +
        'User-Agent: @deepgram/sdk/2.4.0 node/14.18.1\r\n' +
        'Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits\r\n' +
        'Host: ec2-3-91-57-125.compute-1.amazonaws.com\r\n' +
        '\r\n',
      _keepAliveTimeout: 0,
      _onPendingData: [Function: noopPendingOutput],
      agent: undefined,
      socketPath: undefined,
      method: 'GET',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      path: '/v1/listen?model=nova-2',
      _ended: false,
      res: [IncomingMessage],
      aborted: true,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: [HTTPParser],
      maxHeadersCount: null,
      reusedSocket: false,
      host: 'ec2-3-91-57-125.compute-1.amazonaws.com',
      protocol: 'http:',
      [Symbol(kCapture)]: false,
      [Symbol(kNeedDrain)]: false,
      [Symbol(corked)]: 0,
      [Symbol(kOutHeaders)]: [Object: null prototype]
    },
    [Symbol(kCapture)]: false
  },
  type: 'error',
  message: 'Unexpected server response: 400',
  error: Error: Unexpected server response: 400
      at ClientRequest.<anonymous> (/Users/yash/Projects/Bright-Github/backend/node_modules/@deepgram/sdk/dist/index.js:1:84270)
      at ClientRequest.emit (events.js:400:28)
      at ClientRequest.emit (domain.js:475:12)
      at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:647:27)
      at HTTPParser.parserOnHeadersComplete (_http_common.js:127:17)
      at Socket.socketOnData (_http_client.js:515:22)
      at Socket.emit (events.js:400:28)
      at Socket.emit (domain.js:475:12)
      at addChunk (internal/streams/readable.js:293:12)
      at readableAddChunk (internal/streams/readable.js:267:9)
      at Socket.Readable.push (internal/streams/readable.js:206:10)
      at TCP.onStreamRead [as _originalOnread] (internal/stream_base_commons.js:188:23)
      at TCP.callbackTrampoline (internal/async_hooks.js:130:17)
}

Steps to reproduce
Whenever I open the socket from the frontend, the error shows up. But when I request the DeepGram's server, the transcription comes fine(line number 25 in the handleDeepGramWebSocketConnection function).
Here's the backend code I'm using.
wss.on('connection', handleDeepGramWebSocketConnection);

// file that contains handleDeepGramWebSocketConnection function.
import WebSocket from 'ws';
import { Deepgram } from '@deepgram/sdk';

import logger from './util/logger';

const { DEEPGRAM_API_KEY } = process.env;

const handleDeepGramWebSocketConnection = (ws) => {
  try {
    if (!DEEPGRAM_API_KEY) {
      logger.info('Error: DEEPGRAM_API_KEY is missing in the environment variables.');

      const errorMessage = {
        type: 'error',
        message: 'DEEPGRAM_API_KEY is missing in the environment variables.',
      };

      if (ws.readyState === WebSocket.OPEN) {
        ws.send(JSON.stringify(errorMessage));
      }

      ws.close();

      return;
    }

    const apiUrl = 'instance.com'; // **WILL NOT GET THE TRANSCRIPTOIN, WHEN USING THIS**
    // const apiUrl = 'wss://api.deepgram.com/v1/listen';
    // const requireSSL = false;
    // const deepgram = new Deepgram(DEEPGRAM_API_KEY, apiUrl, requireSSL);
    const deepgram = new Deepgram(DEEPGRAM_API_KEY); // **getting the transcription when using this.**

    const deepgramLive = deepgram.transcription.live({
      model: 'nova-2',
    });

    deepgramLive.addListener('open', () => console.log('dg onopen'));

    deepgramLive.addListener('error', (error) => {
      console.log('error in here', error);

      const errorMessage = {
        type: 'error',
        message: error?.message,
        error: error?.error,
      };

      if (ws.readyState === WebSocket.OPEN) {
        ws.send(JSON.stringify(errorMessage));
      }
    });

    // eslint-disable-next-line no-param-reassign
    ws.onmessage = (event) => deepgramLive.send(event.data);

    // eslint-disable-next-line no-param-reassign
    ws.onclose = () => deepgramLive.finish();

    deepgramLive.addListener('transcriptReceived', (data) => ws.send(data));
  } catch (err) {
    console.log('err', err);
  }
};

export default handleDeepGramWebSocketConnection;

Here's the relevant frontend code
const transcription = () => {
    try {
      setIsRecording(true);

      navigator.mediaDevices.getUserMedia({ audio: true }).then((stream) => {
        if (!MediaRecorder.isTypeSupported('audio/webm')) {
          return alert('Browser not supported');
        }

        const mediaRecorder = new MediaRecorder(stream, {
          mimeType: 'audio/webm',
        });

        // create a websocket connection
        const url = websocketUrl();
        console.log('url', url);
        const socket = new WebSocket(url);
        // TODO: Remove this
        // const socket = new WebSocket('ws://localhost:5200');
        socket.onopen = () => {
          mediaRecorder.addEventListener('dataavailable', async (event) => {
            if (event.data.size > 0 && socket.readyState === 1) {
              socket.send(event.data);
            }
          });
          mediaRecorder.start(1000);
        };

        socket.onmessage = (msg) => {
          const received = JSON.parse(msg.data) || {};
          console.log('on message', msg, received);
          if (received?.type === 'error' || (received?.type === 'Metadata' && received?.transaction_key === 'deprecated')) {
            console.log('error', received);
            createNotification(
              received?.message || 'Something went wrong',
            );
            setIsRecording(false);
            console.log('socket', socket);
            // if (socket.readyState === 1) socket.close();
            // socket.close();
            setTimeout(() => {
              if (socketRef.current.readyState === 1) {
                socketRef.current.close();
              }
            }, 500);
          } else if (received?.channel?.alternatives[0]) {
            const { transcript } = received?.channel?.alternatives[0];
            if (transcript) {
              setMessage((prevState) => ({
                ...prevState,
                ...(received.is_final && { text: `${prevState.text} ${transcript}` }),
                interimMessage: received.is_final ? '' : `${prevState.text} ${transcript}`,
                isFinal: !!received.is_final,
              }));
            }
          }
        };

        socket.onclose = () => {
          console.log({ event: 'onclose' });
        };

        socket.onerror = (error) => {
          console.log({ event: 'onerror', error });
        };

        socketRef.current = socket;
      });
    } catch (err) {
      console.log('in the err of transcription');
    }
  };

Expected behavior
I SHOULD get the results if I hit the newly created AWS instance.
Also, the issue should be in Websocket code. As I am able to get the transcription from the pre-recorded audio.
const getTranscription = async ({
  // recording,
  // url,
}) => {
  try {
    // TODO: handle this logic as well.
    if (!DEEPGRAM_API_KEY) {
      logger.info('Error: DEEPGRAM_API_KEY is missing in the environment variables.');

      const errorMessage = {
        type: 'error',
        message: 'DEEPGRAM_API_KEY is missing in the environment variables.',
      };

      return errorMessage;
    }

    const url = 'insance.com';
    const requireSSL = false;
    const deepgram = new Deepgram(DEEPGRAM_API_KEY, url, requireSSL);

    const filePath = path.join(__dirname, '../../../../bueller.wav');

    const transcription = await deepgram.transcription.preRecorded({
      // url: 'https://dpgr.am/spacewalk.wav', // working
      stream: fs.createReadStream(filePath), // working
      mimetype: 'audio/ogg',
    }, {
      model: 'nova-2',
    });

    // version 3.1 code
    // const deepgram = createClient(DEEPGRAM_API_KEY, { global: { url } });

    // const transcription = await deepgram.listen.prerecorded.transcribeFile(
    //   fs.readFileSync(filePath),
    //   {
    //     model: 'nova-2',
    //   },
    // );

    console.log('transcription', JSON.stringify(transcription));

    if (transcription?.results) return transcription?.results;

    return transcription;
  } catch (err) {
    console.log('err', err);
    return null;
  }
};

Please tell us about your environment

Operating System/Version: Mac
Language: [Node.js, React.js]
Browser: Chrome
DeepGram JS SDK: 2.4.0
Node.js: v14.18.1

Other information
Here are the docker logs from the instance when I hit the request.
The status in this logs is 400, so I should be missing something from the request.
2023-12-21T09:17:26.640219485Z  INFO request{id=1d26f939}: stem::middleware::tracing: new
2023-12-21T09:17:26.64027988Z  INFO request{id=1d26f939 path=listen}: stem::middleware::tracing: New request. request_uuid=1d26f939-fca9-4f3d-86c4-ea375088eb47 query="model=nova-2"
2023-12-21T09:17:26.640337988Z  INFO request{id=1d26f939 path=listen}: tower_http::trace::on_response: finished processing request latency=0 ms status=400
2023-12-21T09:17:26.640359665Z  INFO request{id=1d26f939 path=listen}: stem::middleware::tracing: close time.busy=110µs time.idle=31.4µs

If you want to make client-side requests, you need to use v3 of the SDK.

Could you point me to a working example of the code of v3?
Also, I am able to get the transcription when I am hitting the DeepGram API, it's just that when I point the URL to my instance, it starts giving error.

nvm. I found it.
But with the new version, I'm not even able to get a transcription and getting this error when I use the above code.
TypeError: _sdk.Deepgram is not a constructor

@yashjais can you tell me what exactly you're trying to achieve in brief? I might be able to whip up a small example that can help. I think there is a mix up here in your code between the old version and the new.

@lukeocodes
I am trying to get the transcription using the streaming method via my AWS instance.
The architecture is like -> From the frontend, I am calling my backend(via socket - sending binary data) and then in the backend, I'm using DeepGram JS SDK to get the transcription.
When I just use the DeepGram server to get the transcription, it's working fine and well.
const deepgram = new Deepgram(DEEPGRAM_API_KEY);
But when I hit my instance to get the transcription, it's giving me 400.
const apiUrl = 'instance.com'; // **WILL NOT GET THE TRANSCRIPTOIN, WHEN USING THIS**
const requireSSL = false;
const deepgram = new Deepgram(DEEPGRAM_API_KEY, apiUrl, requireSSL);

Now I can think of a couple of issues that can cause this.

We missed some configuration in the instance.(but we are able to get the transcription when hitting the same instance with pre-recorded URL)
There can be some issue in the SDK, that is giving 400 when I hit my AWS instance.
Node version can be a issue(We're using <v18)

I believe this has now been resolved!


Patch 2

Added math.sign and added it to the spec. Not sure where I'd put it in the feature list, since math.clamp isn't there either.

Coverage increased (+0.0008%) to 98.052% when pulling ced67550df5d26e1a62fc776a4067b395fb0bea7 on howmanysmall:patch-2 into 714cf6b847f677de9df58bf5e7fac2335d5a1282 on LPGhatguy:master.


Support more ES client API calls in tracks

Currently we only support selected API calls in tracks. This leads to problems when we need to call unsupported APIs (see e.g. elastic/rally-tracks#3). We should find a way to support more (and ideally arbitrary) API calls in Rally.

Concrete idea by @ywelsch: allow to start primary relocation from node A to B and back. This obviously makes only sense after we've implemented #71 (or if users set up their own cluster and use the --benchmark-only pipeline). So it might make sense to define a separate ticket for that later.

Another use case: evaluate reindex performance (suggested by @nik9000). For this we'd also need a more flexible approach for tracks, as we want to vary the number of shards in the target index.

#107 laid the groundwork for this task by allowing arbitrary parameter sources via a plugin API. We will not support arbitrary calls in Rally core but we will provide a new plugin extension point which allows users to write custom "runners" for a track.

Rally allows now create any API calls that the Python Elasticsearch client supports. Here is a short example (based on the fix for elastic/rally-tracks#3):
In track.json specify an operation with type "percolate" (you can choose this name freely):
    {
      "name": "percolator_with_content_google",
      "operation-type": "percolate",
      "body": {
        "doc": {
          "body": "google"
        },
        "track_scores": true
      }
    }

Then create a file track.py next to track.json and implement the following two functions
def percolate(es, params):
    es.percolate(
        index="queries",
        doc_type="content",
        body=params["body"]
    )
    return 1, "ops"

def register(registry):
    registry.register_runner("percolate", percolate)

Details are in the user docs.


Crash in ApproovURLSession

Hey,
We're experiencing some crashes, which seems likely to be inside the ApproovURLSession. I've attached a crash-log, could we get you to take a look at it and confirm whether or not this is on Approov's side or our side?
Kind regards
2023-04-23_16-25-48.4928_+0200-cbf2da3747d93117a67b9196bf63464e8d965bae.crash.zip

I can confirm this is within the ApproovURLSession.

It seems to happen on devices which are a little older. It can be reproduced on iPhone 7 at the moment, but not on iPhone 11 Pro.

Thanks, we will investigate

Hi @JohanAlbrectsen, there was a bug in our side which we fixed in the 3.1.4 version of the swift package. Could you please update and let us know! Thank you.

It seems to have been fixed, will reopen the issue if I experience it again 👍


Update README.md

docs(readme) added https in site url
NOTE: Please read the CONTRIBUTING.md guidelines before submitting your patch,
and ensure you followed them all:
https://github.com/Kong/kong/blob/master/CONTRIBUTING.md#contributing
Summary
SUMMARY_GOES_HERE
Full changelog

[Implement ...]
[Add related tests]
...

Issues resolved
Fix #XXX

This change was already proposed and rejected, see
https://github.com/Kong/kong/pull/3879#discussion_r226805267


Volume mount createOptions is not documented

In section Deploy from Visual Studio Code [link], step 6, asks to use either of volume or bind mounts. For bind mount, Step 3b has correctly provided createOptions value as screenshot.
But for volume mount, there are no references. Volume mounts will not be precreated automatically unless specified so in createOptions. Could step 3 screenshot be updated to include createOptions for volume mount creation?

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

ID: d574f299-1f45-ad1b-755f-ced23163a60a
Version Independent ID: 54532d7c-60b0-8522-9455-4ec094af9cb4
Content: Deploy blob storage on module to your device - Azure IoT Edge
Content Source: articles/iot-edge/how-to-deploy-blob.md
Service: iot-edge
GitHub Login: @kgremban
Microsoft Alias: kgremban

Hello @kiranpradeep
I have assigned the issue to our SME for further review.

Thanks for your dedication to our documentation. Unfortunately, at this time we have been unable to review your issue in a timely manner and we sincerely apologize for the delayed response. We are closing this issue for now, but if you feel that it's still a concern, please respond and let us know. If you determine another possible update to our documentation, please don't hesitate to reach out again. #please-close

@kgremban This is surely an issue. Please reopen.

@PatAltimore can you review this issue?

Hi @kiranpradeep,
Thanks for letting us know. I'll add the update to my list. I should get to it soon. I'll reopen #please-open and assign it to me #reassign:PatAltimore.
Thanks,
Pat

#reassign:PatAltimore

Hi @kiranpradeep,
I made several updates to the article to improve consistency across the sections. Most of the updates were outdated screenshots that didn't match the steps. The screenshot you mention has been updated to leave the <mount> placeholder.  The updates should publish tomorrow. Thanks for the feedback. I'm going to close the issue. #please-close
Thanks,
Pat


MODCLUSTER-516 Move /container-spi module into /container/spi module

Jira
https://issues.jboss.org/browse/MODCLUSTER-516

Triggering build using a merge of 6a88ed61ccbedffe4b27f34bfe923004661df777 on branch master:
Private: https://jenkins.mw.lab.eng.bos.redhat.com/hudson/job/mod_cluster-1.3.x-pull-player-executor/

Build 203 outcome was SUCCESS using a merge of 6a88ed61ccbedffe4b27f34bfe923004661df777 on branch master:
Private: https://jenkins.mw.lab.eng.bos.redhat.com/hudson/job/mod_cluster-1.3.x-pull-player-executor/203
Public: https://hudson.jboss.org/hudson/job/mod_cluster-1.3.x-pull-player-executor/203

Looks good.


native_image.go doesn't include META-INF on classpath

The GraalVM native-image tooling looks in /META-INF/native-image for JSON configuration, but the buildpack doesn't include that on the classpath (it only takes entries from BOOT-INF/lib per the manifest). The result is that you either can't build an image, or it fails at runtime because it can't find resources that were configure there.

Resolved by 6eb80c1d284b944b29a8b63d7123247da706acf5


Cannot write program_pubkey=1 to OTP memory

Describe the bug
I want to lock secure mode on my Raspberry Pi 4B completely, to have bootloader that ignores any recovery.bin that is not signed with my RSA private key. I followed instructions in this repo (https://github.com/raspberrypi/usbboot/blob/master/secure-boot-recovery/README.md#locking-secure-boot-mode) and general secure boot instructions (https://pip.raspberrypi.com/categories/685-whitepapers-app-notes/documents/RP-003466-WP/Boot-Security-Howto.pdf).
When I'm trying to lock bootloader with program_pubkey=1, recovery fails (red screen and error in logs).
Similar issue: #143
Steps to reproduce the behaviour
Changed secure-boot-recovery/config.txt to the following:
uart_2ndstage=1

eeprom_write_protect=1

program_pubkey=1

#revoke_devkey=1

#program_jtag_lock=1

cd secure-boot-recovery
../tools/update-pieeprom.sh -k ../private.pem
sudo ../rpiboot -d .
Device(s)
Other
Compute Module IO board.
No response
RPIBOOT logs
RPIBOOT: build-date Jul 23 2024 version 20240422~085300 bbd60338
Loading: ./bootcode4.bin
Waiting for BCM2835/6/7/2711/2712...
Loading: ./bootcode4.bin
Sending bootcode.bin
Successful read 4 bytes
Waiting for BCM2835/6/7/2711/2712...
Loading: ./bootcode4.bin
Second stage boot server
Loading: ./config.txt
File read: config.txt
Loading: ./pieeprom.bin
Loading: ./pieeprom.bin
Loading: ./pieeprom.sig
File read: pieeprom.sig
Loading: ./pieeprom.bin
File read: pieeprom.bin
Second stage boot server done

Kernel logs
no kernel
Device UART logs
  8.17 RPi: RECOVERY release VERSION:72caf667 DATE: 2024/05/17 TIME: 12:26:58
  8.21 BOOTMODE: 0x07 partition 0 build-ts BUILD_TIMESTAMP=1715945218 serial ec9a8c13 boardrev c03115 stc 8821279
  8.31 PM_RSTS: 0x00001000
  8.33 part 00000000 reset_info 00000000
  8.37 uSD voltage 3.3V
  9.95 OTP boardrev c03115 bootrom 8b0 8b0
  9.77 BOOT_ORDER: 0xf3
  9.77 USB-OTG disconnect
 11.89 Read config.txt bytes     1214 hnd 0x0
 11.92 pieeprom.sig
 11.92 hash: 26ec387b92a613d201ae73f0372a4eba3eaca7ae03f5b9c80b752c7e9864bb9d
 11.99 ts:<PHONE_NUMBER>
 11.87 Reading EEPROM: 524288 bytes 0xc0b60000
 12.26 637ms
 12.80 Bootloader EEPROM is up to date
 12.80 secure_boot_provision program_pubkey 1
 12.87 bootconf.sig
 12.87 hash: d7c7f93ddb4805ddd847c358e4e4770c68a2e5dcd0448f2352128b8cf4b58957
 12.93 rsa2048: 842ce46724d5d000442be962c605e746607ce445865006c27f5f65d7adaa2ff4ddc16cc82336b04c1e4d6a7d5b02f17c34654ae61b113bdcb84c0c351dad40e7c870aa629711d7473e6f06765733a7b6b3efa4b3f2da187cba72f24306b6d320927145aa5a9471352e2e535d4149f547afdec5327bdd65764012d3439d9d1a66abfe5d1ebca9f4f72c171a88f1f840dab6dbf8a07d01b69627ac6f2a3d1026440f0bcbe985bc4357fbb22b3b6f4f7419f470a0f2252190cb36de01bbf5c1a4ab57b8d8b9e74c8c1528ed25d07ce693ecf43b0a64a08b868ac4230e6d135367de56bcb5243535b052826480f571f98b8b811c3aeb0fa9684b688008d1202e88df
 12.41 RSA verify
 12.75 rsa-verify pass (0x0)
 12.75 Failed to set RPIBOOT OTP gpio0 c600 -> 0
 12.79 USB-OTG disconnect
 12.81 BOOT ERROR: code 34 - ''

Have you use gpio 6 for the nRPIBOOT gpio? If this is the case I think you might need to add "program_rpiboot_gpio=6" to config.txt as well.

Yes, I'm using GPIO6 to boot in RPIBOOT mode, it was programmed previously. But I though that config program_rpiboot_gpio=6 enables gpio6 in OTP memory and therefore has no effect after it was programmed, at least that's what documentation says. Do I need to have this line in config.txt every time I want to change something in signed bootloader?

I think you need it when enabling secure boot. It's playing safe to make sure OTP is set correctly for the GPIO you have chosen because a side effect of enabling secure-boot is that SD boot by the BOOTROM is disabled, i.e. you can only update the eeprom with rpiboot via the nRPIBOOT gpio. Hope that makes sense.

Thanks for the quick answer! I can confirm that everything works as expected after I've added program_rpiboot_gpio=6 to my config.txt file. However, I'd like to clarify something since I haven't found anything about it in the documentation. So, the 'correct' workflow for locking secure boot is:

erase EEPROM to fall into RPIBOOT mode manually
program_rpiboot_gpio=N to have easy access to RPIBOOT mode
enable secure boot
lock secure boot by adding program_pubkey=1, revoke_devkey=1 etc., BUT program_rpiboot_gpio=N still needs to be presented in config.txt file.

Does N need to be the same? For example what if I've programmed GPIO6 but changed config to program_rpiboot_gpio=4 when locking secure boot? Is this option only required to be presented or to match currently OTP programmed nRPIBOOT?
And the most important, it should be documented somewhere, right? Because that's a very simple but not very obvious detail.


Accessing current array member with template functions

The section 'Accessing current array member with template functions' decribes the use of the current() function. What I don't get from this chapter is when and why to use this function? Doesn't the count expression with a where condition enable me to evaluate individual members of an array?
What is the difference between these two examples:
Example with just count/where expression
Description: Azure Policy selects a single array member i and evaluate the resource content against the where condition as if i is the only member of the array.
{
"count": {
"field": "Microsoft.Test/resourceType/stringArray[]",
"where": {
"field": "Microsoft.Test/resourceType/stringArray[]",
"equals": "a"
}
},
"equals": 1
}
Example with the current() function
Description: When using template functions, use the current() function to access the value of the current array member or the values of any of its properties.
{
"count": {
"field": "Microsoft.Test/resourceType/objectArray[]",
"where": {
"value": "[current('Microsoft.Test/resourceType/objectArray[].property')]",
"like": "value*"
}
},
"equals": 2
}

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

ID: bef28901-e87d-c86b-108a-37940a38331e
Version Independent ID: bcce1b7b-b9e3-9507-3af8-530b01197f93
Content: Author policies for array properties on resources - Azure Policy
Content Source: articles/governance/policy/how-to/author-policies-for-arrays.md
Service: azure-policy
GitHub Login: @DCtheGeek
Microsoft Alias: dacoulte

@GitHubUser1339 Thanks for your comment! We will review and provide an update as appropriate.

#reassign:DCtheGeek

#label:"assigned-to-author"
#remove-label:"cxp"

@GitHubUser1339 Thanks for the question.  The current() template function gives access to the value and properties of the currently evaluated array instance and is intended for use in combination with other template functions as part of a value condition.  Using current() as the only template function in a value condition is roughly equivalent to using field for the given array property.
The current() function has 2 purposes:

It’s the only way to access the current array member in value count expressions.
It replaces the behavior of the field() function inside field count expressions. If you need to manipulate the value of the current field array member with template functions, current() is the best way to do it.

I'm going to close this Issue now, but if you have more discussion, feel free to continue it here or open a new Issue if you have an issue with a Doc.  For general product questions, I'd recommend using Microsoft Q&A.
#please-close


Fix EmailTransformer

✓ Checklist:

[x] This PR has been added to CHANGELOG.md (at the top of the list);
[x] Tests for the changes have been added (for bug fixes / features);

Codecov Report

Merging #72 (c42cbf6) into main (2e37946) will increase coverage by 0.71%.
The diff coverage is 93.33%.

:exclamation: Current head c42cbf6 differs from pull request most recent head 955afe1. Consider uploading reports for the commit 955afe1 to get more accurate results

@@            Coverage Diff             @@
##             main      #72      +/-   ##
==========================================
+ Coverage   75.88%   76.60%   +0.71%
==========================================
  Files          41       41
  Lines        2281     2287       +6
==========================================
+ Hits         1731     1752      +21
+ Misses        550      535      -15

Impacted Files
Coverage Δ

...anymizer_engine/src/transformers/internet/email.rs
90.24% <93.33%> (+44.52%)
: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 2e37946...955afe1. Read the comment docs.


[BUG] Routing and gh-pages

Describe the bug
The deployment of the application is not working due to react-router. We have to fix it to have a functional application in the deployment.
To Reproduce
Steps to reproduce the behavior:

Go to the deployment page
Get into the console and see the logs

Expected behavior
The app should be displayed perfectly.

Working on it!

@labra do you remember the other group that managed to solve this problem? We have tried the main solutions available on the web, but we don´t achieve it.

I don't remember now, but I think they managed to solve it following this article


Move automatic conversion from write to encode

I think each encode*** function should handle its own automatic conversion based on what the encoder supports, or throw if the conversion cannot be done in a meaningful way.

It would be helpful to have a table in the documentation that shows how each color model is encoded
Have on column with the color model / bit depth of the original image and another with the color model / bit depth of decode(encode(image))

Here is what I came up with.

DECODE
8bits
16bits
32bits
Gray
RGB
Alpha

TIFF
Yes
Yes
Yes
Yes
Yes
Yes

PNG
Yes
Yes
No
Yes
Yes
Yes

JPEG
Yes
No
No
Yes
Yes
No

BMP is not there because it is not decoded.TIFF and PNG can be decoded as anything. JPEG converts gray and rgb 8-bit images, but once decoded it sets colorModel as RGBA.

ENCODE
1bit
8bit
16bit
Gray
RGB
Alpha

PNG
No
Yes
Yes
Yes
Yes
Yes

JPEG
No
Yes
No
No
Yes
No

BMP
Yes
No
No
No
No
No

We don't support TIFF encoding. JPEG converts any image into 8 bit RGB. Again, important to note that it works only if the data's colorModel is set as RGBA. PNG has the same encoding capabilities as decoding. BMP can encode only binary images.


Icon support for .babelrc.json files

Fixes #1660
Changes proposed:

[X] Add
[ ] Delete
[ ] Fix
[ ] Prepare

I've searching a bit also, and I didn't find either any reference about the .babelrc.json file extension (with the initial .). So, I think I'll change the file extension references to babelrc.json, as you mentioned.


working init and install for toml based modules file

Changes the manifest file for projects from package.json to module.toml.
Makes some organizational changes to make it function more like  rust project and easier to understand.
Summary of Additions:

Adds toml-rs as a dependency -> Toml serial and deserializing
Adds semver as a dependency -> allows for evaluating relations between semantic versions
Explicit format definition and parsing -> The format sub module of veritas manages the modules.toml format defining expected field names and types and expected nexting over a collection of stucts in the main.
Adds an IO sub module to clearly handle status messages to the console and console input
General refactoring using rust idioms (e.g. using explicit match evaluations to handle options and results)
removes unnecessary nesting of source code from the top level

Known Issues :

Crashes if there already exists a veritas_modules directory (should be resolved with update or some analogous function)


Fix loading images for marks in node.js

This patch fixing generating PNGs with marks for node.js. Browser generation works fine too.

Dope, I just realized it was a patch for Vega.js - not the original source.  The original file needs to be fixed

My fault. How better to do? Just revert the commit and do the same for the file in the 'src' dir?


Clear SRPM pack list file when SRPM_PACK_LIST argument is empty

Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

[x] The toolchain has been rebuilt successfully (or no changes were made to it)
[x] The toolchain/worker package manifests are up-to-date
[x] Any updated packages successfully build (or no packages were changed)
[x] Packages depending on static components modified in this PR (Golang, *-static subpackages, etc.) have had their Release tag incremented.
[x] Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
[x] All package sources are available
[x] cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
[x] LICENSE-MAP files are up-to-date (./SPECS/LICENSES-AND-NOTICES/data/licenses.json, ./SPECS/LICENSES-AND-NOTICES/LICENSES-MAP.md, ./SPECS/LICENSES-AND-NOTICES/LICENSE-EXCEPTIONS.PHOTON)
[x] All source files have up-to-date hashes in the *.signatures.json files
[x] sudo make go-tidy-all and sudo make go-test-coverage pass
[x] Documentation has been updated to match any changes to the build system
[x] Ready to merge

Summary
Subsequent calls to make targets with different SRPM_PACK_LIST arguments can result in an SRPM pack list file that doesn't match the contents of the SRPM_PACK_LIST make variable.
More specifically, we don't clear the pack list file if SRPM_PACK_LIST goes from non-empty to empty. This results in a limited set of SRPMs being built when the user expects all SRPMs to be built.
Change Log

Use truncate -s 0 on the SRPM pack list when SRPM_PACK_LIST is empty. This (a) creates the file with zero size if not present, (b) truncates the file to zero size if present, and (c) updates the mtime of the file in all cases.

Does this affect the toolchain?
NO
Associated issues

Fixes ADO/OS/42357379

Test Methodology
Following sequence succeeds and builds the expected SRPMs for each command:
sudo make input-srpms SRPM_PACK_LIST="iptables" -j8 REBUILD_TOOLS=y
sudo make input-srpms SRPM_PACK_LIST="" -j8 REBUILD_TOOLS=y

As an FYI, I have a pr out that touches the pack list: https://github.com/microsoft/CBL-Mariner/pull/4181/files#diff-71dbe794406e4f45d19637b785e46e1b1806fffbe71ae6a780f7fa6cb944f481
Feel free to go ahead with this, I'm still waiting to figure out when we want to merge my PRs in and will adjust as needed.


[release-v1.11] Backport TLS fixes

See individual commits and references for details.

/cc @Cali0707 @Leo6Leo @creydr @matzew


[Toolkits] Design of 'introduction' for each entry needs updating

After the changes made in #400, we used the topic title and subtitle in the second level breadcrumb, rather than topic title and introduction as these are very variable in length and can be quite long. The introduction currently sits below the breadcrumb in the toolkit scrollable area (see example below), however, this is not catered for in the designs. Need discussion to resolve.

We're not sure this looks bad and don't have a plan to improve. Closing.


SFTP上传文件时,并不会自动保存并上传

SFTP上传文件时,并不会自动保存并上传, 这个逻辑存在问题.
目前是已保存文件的上传文件没问题,如果没保存的文件,点击[SFTP上传文件] 却只是保存,并没有上传操作. 需要进行二次操作,很不方便

提供一下重现步骤和日志谢谢。
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Run command '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. Mac, Win, Linux]
VSCode Version [e.g. 1.27.0]
Extension Version [e.g. 1.7.0]

Extension Logs from Startup - required

Open User Settings.

On Windows/Linux - File > Preferences > Settings
On macOS - Code > Preferences > Settings

Set sftp.debug to true and reload vscode.

Reproduce the problem, get the logs from View > Output > sftp.

就是文件编辑后(并未保存文件时) ,点击右键菜单-SFTP上传文件,第一次默认是保存文件,并不是直接保存文件并上传文件(这里判断逻辑有问题,应该是判断文件未保存先保存,然后还要加上上传操作)
------------------ Original ------------------
From<EMAIL_ADDRESS>Date:  Tue, Jun 18, 2019 04:16 PM
To<EMAIL_ADDRESS>Cc<EMAIL_ADDRESS><EMAIL_ADDRESS>Subject:  Re: [liximomo/vscode-sftp] SFTP上传文件时,并不会自动保存并上传 (#587)
提供一下重现步骤和日志谢谢。
To Reproduce
Steps to reproduce the behavior:
Go to '...'
Run command '....'
See error
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
OS: [e.g. Mac, Win, Linux]
VSCode Version [e.g. 1.27.0]
Extension Version [e.g. 1.7.0]
Extension Logs from Startup - required
Open User Settings.
On Windows/Linux - File > Preferences > Settings
On macOS - Code > Preferences > Settings
Set sftp.debug to true and reload vscode.
Reproduce the problem, get the logs from View > Output > sftp.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

提供一下完整的日志谢谢。

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

可以配置


Add support for descriptions in content type creation.

Coverage increased (+0.0%) to 99.59% when pulling 069c03e0fa3d683507bf89396451fdbc75358b92 on KingBuzzer:set-description-for-contenttype into 66eac3e8f48b78cd080878fb9b6ca9fc973b56aa on contentful:master.

Coverage increased (+0.19%) to 99.77% when pulling 069c03e0fa3d683507bf89396451fdbc75358b92 on KingBuzzer:set-description-for-contenttype into 66eac3e8f48b78cd080878fb9b6ca9fc973b56aa on contentful:master.

:+1: thanks!


Update end-to-end walkthrough for JupyterCon 2023

These are some updates in preparation for the nbdev tutorial at JupyterCon next week. I also made a tiny fix to the CSS due to upstream changes in Quarto's styling.
The main change is to suggest Lab instead of classic Notebook, which I would now personally recommend for the following reasons:

Growing extension ecosystem:

I can't live without the wonderful jupyterlab-quarto these days. It's still under development but already renders a bunch of things in your notebook like Quarto frontmatter, callouts, and fenced divs.
Interesting work being done on LLM-related extensions e.g. jupyter-ai which adds an LLM chat interface to the sidebar and a magic command.
jupyterlab-git for notebook diffs.

Version 4.0.0 release candidate was released last week, which includes lots of improvements including built-in functionality from the classic collapsible headings extension (including keyboard shortcuts). However, it is worth noting that extensions will need to migrate to v4 and I'm not sure what this process will look like!

I considered recommending VSCode instead, but after trying it out for a month for the second time, I personally encountered too many issues with performance (terrible fps) and robustness (the kernel often gets into an irrecoverable state), both of which were experienced by other people I spoke to. These issues seem not to affect everyone, but I couldn't figure out how to fix them or how to get support -- very frustrating!

@seeM when you are done here you might want to update this site https://github.com/fastai/jupytercon-2023 with a link to this tutorial.  (Sharing here for visibility)

Thanks @seeM lgtm! :D


New Token submission

ioTube Token submission

Team / Developer name
...
Token Symbol
...
Token Name in full
...
Link to the token icon
https://...
Short description of your project
Descrie your project here
What is the blockchain (source blockchain) that your token is issued on

[x] Ethereum
[x] Binance Smart Chain
[x] Polygon
[x] IoTeX

Token native contract address
Address:
Your project websites

https://...

Your social channels

Telegram:
Twitter:
Discord:

How would you like your token to be bridged?

[x] Bridge Option 1. Create a crosschain token and bridge it to all different blockchains
[x] Bridge Option 2. Just bridge my token to IoTeX (from source chain to IoTeX)

What is the preferred name of your bridged token

[x] the same as my token on source blockchain (Bridge option 1)
[x] C-token (denoting the crosschain version of the token) (Bridge Option 1)
[x] add a subfix denoting the source blockchain (_b for bsc, _m for matic) (Bridge Option 2)
[x] other, please specify:

Hi


add new platform: MXE

MXE (M cross environment) is a Makefile that compiles a cross compiler and cross compiles many free libraries such as SDL and Qt. Target OS is MinGW.
MXE has a plugin called "luarocks" which adds a luarocks itself and dozens of packages. It applies a patch to luarocks to make it usable in MXE. I have done this work for luarocks 2.2.2 and then have to rebase this patch for luarocks 2.3.0. This pull request is equal to that patch.
See also https://github.com/mxe/mxe/pull/1017 and https://github.com/mxe/mxe/pull/1182

This sounds really specific. The code assumes that LuaRocks was installed in the same prefix as your MXE tools (in other words, that it is being installed by your MXE script/makefile). If the only way to use this is in conjunction with the MXE environment anyway, it seems to me that this custom config belongs there rather than here.
Another important observation is that virtually all changes are in configuration. Instead of patching LuaRocks, you could obtain the same results writing a config.lua file for your environment that sets these values. The only thing that would break is if you want to add "mxe" platform-overrides to your rockspecs, but if you are patching them, that's not the case, I assume.
Apart from that, the only real change in the could would be

if cfg.is_platform("cygwin") or cfg.is_platform("mxe") then

which we could change to make non-cygwin-specific, by changing it to a setting like cfg.link_lua_explicitly (set by default to true on cygwin only). With this one-line change to LuaRocks and a custom config.lua, I think you could use it on MXE without patching LuaRocks.

You are right: most of my changes can be moved to config.lua.
But two changes can not be moved to config.
Can you add "mxe" to the list of platforms to remove one of the remaining changes, please?

if cfg.is_platform("cygwin") or cfg.is_platform("mxe") then

which we could change to make non-cygwin-specific, by changing it to a setting like cfg.link_lua_explicitly (set by default to true on cygwin only).

+1 for that change. Can you do it, please?

@starius I just made a significant change to make it possible for you to set platforms = { "unix", "mxe" } in the config file, and I also added the setting link_lua_explicitly = true. With these changes, I think everything can be done via config file. Please try the latest code in Git!


Root npm run dev only runs server and never started the client

Describe the bug
Following the README running npm run dev only starts the server not the client.
To Reproduce Steps to reproduce the behavior:
I cloned the repo and followed the readme and started the server.
Didn’t see next steps after that in the readme.
Readme tells you to open local host 3000 and cli output from npm run dev shows 3001 and 3002. Opening 3001 shows 500.
I mean server error 500.
At that point I searched GitHub for similar issues and didn't find them.
Expected behavior
Expect to see both client and server start with the client opening the user's default browser and showing the welcome screen.
Screenshots
N/A
Additional context
N/A

If you dig in to the package.json file and run the commands manually you see that the server starts on the IP of the machine and the npx wait-on is checking localhost. So wait reports server down and never starts the client.

Ah, the cursed change to IPv6 default in Node 18. This shouldn't be too difficult to address.

Just pushed the fix for this to develop


Loan Comparison: Output Interaction when API is loading

Additions

fading out the outputs when API is being called/data is loading
fetching data message over top of faded outputs

Reviews:
@stephanieosan I can't really take a screenshot because it happens so fast, but I can share with you live after scrum
@virginiacc @cfarm

Okay I was able to take some, @stephanieosan:

Looks great!  :shipit:


Edits on PR #198

This is a PR merging the changes for #198 ; #198 will be closed and all changes are to be merged through this PR

Hi @OliverSchacht
maybe you can check again if the notebooks works alright... I'm having some issues with the summary from the flaml-based learners (we can discuss again)
Thanks for checking!

Hey @PhilippBach
I got the notebook a bit in shape. Can you please check and provide feedback?
Thanks! :)


Not finding .clang-format file

I have the clang-format file, formatted code, and github action in the same PR.  It seems like the github action isn't finding my .clang-format file.  How do I verify that the action is using the .clang-format file in the PR?
PR: https://github.com/ofiwg/libfabric/pull/8595

never mind... version 13-14 is important


Data migration to add audit records for the existing user role assignments

Describe the task
Data migration to add audit record for the existing user role assignments. Need to think about if ignore or need a way to handle the records have been done through a batch upload. For the user role assignments that have been done through the batch upload, the create_user column in the database will show the lambda user (need to double check).
Acceptance Criteria

[ ] Create the data migration script to add audit record for existing user role assignments
[ ] Handle the situation when create_user is a system user (db user or lambda user)
[ ] Add the forest client name to the table if the role has forest client numbers (could run a sql data migration first to get the records, and then an api to update the forest client name)
[ ] add client number names for all records
[ ] migration script should be based on cut-off time before new audit feature is deployed.

Additional context

Epic story 1 #1534
Might need logic details
only add creation of records

Based on team discussion, decision made to NOT complete this task. Adding a new issue to  add 'audit record not available' message for historic.


Change net451 to net45

Solve #96
Just had to re implement the Marshal generic functions from https://github.com/dotnet/coreclr/blob/master/src/mscorlib/src/System/Runtime/InteropServices/Marshal.cs

@confluentinc It looks like @treziac just signed our Contributor License Agreement. :+1:
Always at your service,
clabot

Ok, LGTM - it seems 4.5 is popular enough to prioritize over an probably insignificant perf hit.
thanks for sorting this out @treziac


dts/arm/st: f2 USB OTGFS clock on AHB2 bus

dts/arm/st: f2 USB OTGFS clock on AHB2 bus
Signed-off-by: Alexandre Bourdiol<EMAIL_ADDRESS>

^^@FRASTM


NavigationBar still overlap

:( But you didn't find that the same problem exists in your sample project.
  Can you see the title("first") blocked by NavigationBar?

can you make a zip archive and upload it here? I would like to see the issue because I cannot reproduce it

issue closed, please reffer to #13