[web] Browser showing "Because of firebase login web is currently not supported!"

I tried to use firbase auth + cloud_firestore in flutter web. On android it is working fine but in the browser it is showing the following:

I am a bit confused because it said web is supported now for firebase auth.
My pubspec.yaml
version: 1.0.0+5

environment:
  sdk: ">=2.2.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  json_annotation: ^3.0.1
  assets_audio_player: ^1.2.3
  firebase_auth: ^0.15.5+3
  cloud_firestore: ^0.13.4+2
  flutter_reorderable_list: ^0.1.3
  percent_indicator: ^2.1.1+1
  url_launcher: ^5.4.2
  flutter_email_sender: ^3.0.1

dev_dependencies:
  flutter_test:
    sdk: flutter
  build_runner:
  json_serializable:

  uses-material-design: true

  assets:
    - assets/sounds/beep8.mp3

My index.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Hangboard Timer</title>
</head>
<body>

    <!-- The core Firebase JS SDK is always required and must be listed first -->
    <script src="https://www.gstatic.com/firebasejs/7.13.1/firebase-app.js"></script>

    <!-- TODO: Add SDKs for Firebase products that you want to use
         https://firebase.google.com/docs/web/setup#available-libraries -->
    <script src="https://www.gstatic.com/firebasejs/7.13.1/firebase-auth.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.13.1/firebase-firestore.js"></script>

    <script>
        // Your web app's Firebase configuration
        var firebaseConfig = {
            apiKey: ...
            ...
        };
        // Initialize Firebase
        firebase.initializeApp(firebaseConfig);
    </script>

    <script src="main.dart.js" type="application/javascript"></script>

</body>
</html>

Flutter Doctor:
[√] Flutter (Channel master, v1.16.4-pre.18, on Microsoft Windows [Version 10.0.18362.720], locale de-DE)
[!] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    X Android license status unknown.
      Try re-installing or updating your Android SDK Manager.
      See https://developer.android.com/studio/#downloads or visit visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions.
[√] Chrome - develop for the web
[√] Android Studio (version 3.5)
[√] IntelliJ IDEA Ultimate Edition (version 2019.2)
[√] IntelliJ IDEA Ultimate Edition (version 2019.3)
[!] VS Code, 64-bit edition (version 1.41.1)
    X Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[√] Connected device (3 available)

Hi @Tonne-TM
can you please provide your flutter doctor -v and flutter run -d Chrome -verbose? Also, to better address the issue, would be helpful
if you could post a minimal code sample to reproduce the problem
Thank you

It was able to resolve this error. There was false flag in my code.


fix error twig : Key 'dragsort' for array with keys ... does not exist

fix an error twig : Key 'dragsort' for array with keys ... does not exist
The error appear when we display an overview page without dragsort.

Ah, thanks! 👍


feat: Create is_at_bottom() function

Fixes #1018 very crudely. Seems to work in my project though. Super open to feedback overall though!

Would be nice to add tests for this as well.

Seems reasonable. What about changing this to be is_at_beginning / is_at_end to match with the begin/end terms for the symbols?

I agree with the rename (and thought of it too, just as I clicked to open the PR). Will discuss merit in the issue.

Closing this one entirely; will open a new one.

Hey there. As a quick aside for future PRs, it's often better to keep PRs open and adjust them when necessary by rebasing / force pushing changes as capturing the flow of comments in a single place helps reduce the quantity of places devs have to go to get the complete story on a PR.


Consider Constants as a global singleton.

After the legacy tests were added, it is seen that the constants are widely used and shared throughout the bio_process module (and coral).
This might be a good principle to apply a Singleton pattern and avoid having multiple instances of it.

Apparently constants should not behave as a singleton as they are modified during run time. However it might be good to follow this issue up and remove (or reduce) as many dependencies of 'constants' as possible within the bio_process, coral and environment module / classes.


Proxy support ?

One thing I liked with request, it's support of env vars for managing proxy behavior (https://github.com/request/request#controlling-proxy-behaviour-using-environment-variables).
It's very convenient, especially if you work under a corporate proxy 😢 , and the production is not.
Is there something like that planned for r2 ?

r2 is intended more for browser focused use cases, so probably not since none of that information is available in the browser directly.
i would consider adding support in bent() though.


otel-cli exec does not report a span if the command failed

$ otel-cli exec -- false

The above example does not report a span. If I run with --verbose, then I see this:
$ otel-cli exec --verbose -- false
2023/08/30 18:36:07 command failed: exit status 1

I think the issue is here:
	if err := child.Run(); err != nil {
		config.SoftFail("command failed: %s", err)
	}
	span.EndTimeUnixNano = uint64(time.Now().UnixNano())

	ctx, err := otlpclient.SendSpan(ctx, client, config, span)
	if err != nil {
		config.SoftFail("unable to send span: %s", err)
	}

Calling config.SoftFail is going to exit immediately. What is probably intended instead is to record the span with an error code.

Yep, the first config.SoftFail is the problem. My bad. If we get the test in your PR working, it'll make sure this doesn't revert.


Only connect with usb

OnePlus 11 after android 14 update I can connect only with usb
I try to remove phone and add again with bt but I can't see the app support on my id5

I think I had a similar issue. My S24+ (Android 14) would connect with Calls/Audio only. If I connected to the car via USB the apps option appeared and aaidrive populated apps. I managed to get it to connect with Apps over Bluetooth by doing the following (I'm not positive which was the magic bullet, but i did all of them):

Developer Options -> Set Bluetooth AVRCP version to 1.3
MyBMW app -> Allow Calendar, Contacts, Location, Nearby devices, Notifications, Photos and videos permissions
MyBMWapp -> Turn off "Pause app activity if unused"

Id be curious if this works for you or if anyone has any input. I'm fairly certain the issue is with the MyBMW app connection to the car and once it is established aaidrive works great.

Thanks for your feedback I try your set and working fine 😍


"Cancel and remove" function for extensions does not check the active-state of the extension and leads to server error

PHP Version: 8.2.23   | Shopware Version: <IP_ADDRESS>  | Affected area / extension: Platform(Default)

Expected behaviour:
When using the "cancel [subscription] and remove"-function for an extension that is active, the user should get an warning, that the extension is currently in use and cannot be removed. The user can get an prompt to select further steps.

disable/deinstall the extension and cancel my subscription
cancel and keep everythin as it is

Actual behaviour:
When using the "cancel [subscription] and remove"-function for an extension that is active, the system does exactly this without checking is active-status. This lead to an server error, because the system is still expecting the extension.
A user have to know and remember, that the extension first needs to be deactivated and then use the function.
How to reproduce:

Rent a random extension from the store
Install & activate it in your testsystem
Use the function "cancel [subscription] and remove" while the extension is still active. [context menu]
Refresh
**Result: **Look at the 500-server error.
**FIX: ** check via console the "before"-installed version of the removed plugin, upload it to /custom/plugins
Now deactivate the plugin via console. After that removing the entire extension is safe.

[public] Shopware automated response: This issue is linked to the internal issue: NEXT-38173
[created from NEXT-38173, comment 492518]


Secondary DNS server

Is it possible to set another DNS server?
dhcp.OptionDomainNameServer

I found a solution by using JoinIPs method, and it works, I got both DNS servers in my client network information
	```

dnsips := make([]net.IP, 2)
dnsips[0] = dnsIP
dnsips[1] = dns2IP
dnsJ = dhcp.JoinIPs(dnsips)

JoinIPs works fine


Question: isn't SelectorMixin the right sklearn subclass?

Hi!:) We're looking forward to using this library, it looks just what we're after in terms of feature selection!
We have our own little, lightweight time series pipelining framework that automatically wraps SKLearn classes, and found that BoostShap is not a subclass of SelectorMixin, which is the way we identify feature selectors (they have get_support() method). Would it be possible to change the base class to SelectorMixin, to conform the sklearn conventions?
Thank you!

Yes, thank you! they do, but they don't match the sklearn convention to subclass SelectorMixin, which actually has get_support() method. https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectorMixin.html

Could u provide a practical example where the two implementations have different/unexpected behaviors?

Sure! All of sklearn's feature selection methods are subclasses of SelectorMixin as well, this is how they signify that these classes are doing feature selection, not other kind of transformations:
https://github.com/scikit-learn/scikit-learn/blob/ff1023fda/sklearn/feature_selection/_rfe.py#L59
https://github.com/scikit-learn/scikit-learn/blob/ff1023fda/sklearn/feature_selection/_sequential.py#L19
https://github.com/scikit-learn/scikit-learn/blob/ff1023fda61acaa6b95b86c6a62ba81013474aa2/sklearn/feature_selection/_univariate_selection.py#L433
https://github.com/scikit-learn/scikit-learn/blob/ff1023fda/sklearn/feature_selection/_variance_threshold.py#L13
All you'd need to do is subclass SelectorMixin instead of TransformerMixin (which SelectorMixin subclasses).

Ok, I understood this point... but why should I make sklearn estimator's subclass of SelectorMixin? They do feature selection in the same way.
You should provide an example where sklearn RFE doesn't do the same things (or have different behaviors) from BoostRFE


[ServerDev] Some feedback

Just pulled the latest from ServerDev branch and try to compile simple BLE-Uart code.
Using PlatformIO.
Compilation error due to missing #defines
Compilation failes with
C:\users\beegee\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\bt/esp_bt.h:120:24: error:
'CONFIG_BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_EFF' undeclared (first use in this function)
     .bt_sco_datapath = CONFIG_BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_EFF,    \
                        ^
lib\NimBLE-Arduino\src\esp-hci\src\esp_nimble_hci.c:453:41: note: in expansion of macro 'BT_CONTROLLER_INIT_CONFIG_DEFAULT'
     esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
                                         ^
C:\users\beegee\.platformio\packages\framework-arduinoespressif32\tools\sdk\include\bt/esp_bt.h:120:24: note: each undeclared identifier is reported only once for each function it appears in
     .bt_sco_datapath = CONFIG_BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_EFF,    \
                        ^
lib\NimBLE-Arduino\src\esp-hci\src\esp_nimble_hci.c:453:41: note: in expansion of macro 'BT_CONTROLLER_INIT_CONFIG_DEFAULT'
     esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();

sdkconfig.h in NimBLE library is missing some defines that are set in ESP32-Arduino's :
Solution:
in NimBLE-Arduino->src->sdkconfig.h add
#define CONFIG_BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_EFF 1
#define CONFIG_ARDUINO_EVENT_RUNNING_CORE 1

SW crash when starting advertise service
After that code compiles but then crashes with
I NimBLEDevice: "BLE Host Task Started"
GAP procedure initiated: stop advertising.
I NimBLEDevice: "NimBle host synced."
E NimBLEAdvertising: "error setting advertisement data; rc=4, The provided buffer is too small."
abort() was called at PC 0x400d7b64 on core 1

Backtrace: 0x400916a8:0x3ffc7290 0x400918d9:0x3ffc72b0 0x400d7b64:0x3ffc72d0 0x400d24a2:0x3ffc7310 0x400d4a50:0x3ffc7360 0x400ec08f:0x3ffc73a0 0x4008dd2d:0x3ffc73c0

Rebooting...
ets Jun  8 2016 00:22:57

Backtrace decoded
Decoding stack results
0x400916a8: invoke_abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/panic.c line 155
0x400918d9: abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/panic.c line 170
0x400d7b64: NimBLEAdvertising::start() at lib\NimBLE-Arduino\src\NimBLEAdvertising.cpp line 269
0x400d24a2: initBLE() at src\BLE\ble_esp32.cpp line 174
0x400d4a50: setup() at src\main.cpp line 107
0x400ec08f: loopTask(void*) at C:\users\beegee\.platformio\packages\framework-arduinoespressif32\cores\esp32\main.cpp line 14
0x4008dd2d: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c line 143

Adverting part of my code:
#include "main.h"
#include <NimBLEUtils.h>
#include <NimBLEServer.h>
#include <NimBLEDevice.h>
#include <NimBLEAdvertising.h>

/** Service UUID for Uart */
#define UART_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E"
/** Characteristic UUID for receiver */
#define RX_UUID "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
/** Characteristic UUID for transmitter */
#define TX_UUID "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"

/** Characteristic for BLE-UART TX */
BLECharacteristic *pCharacteristicUartTX;
/** Characteristic for BLE-UART RX */
BLECharacteristic *pCharacteristicUartRX;
/** BLE Advertiser */
BLEAdvertising *pAdvertising;
/** BLE Service for Uart*/
BLEService *uartService;
/** BLE Server */
BLEServer *pServer;

/** Flag if a device is connected */
bool bleUARTisConnected = false;

/** Flag if client notification is enabled */
bool bleUARTnotifyEnabled = false;

/** RX and TX buffer size */
#define BUFF_SIZE 253

/** Buffer for outgoing data */
uint8_t txData[BUFF_SIZE] = {0};
/** Buffer for incoming data */
uint8_t rxData[BUFF_SIZE] = {0};
/** Number of bytes in the of incoming data buffer */
size_t rxLen = 0;

/** Mutex used to enter critical code part (RX data buffer access) */
SemaphoreHandle_t _mutex;

/**
 * Callbacks for client connection and disconnection
 */
class MyServerCallbacks : public BLEServerCallbacks
{
	void onConnect(BLEServer *pServer)
	{
		myLog_d("BLE client connected");
		pServer->updatePeerMTU(pServer->getConnId(), 260);
		bleUARTisConnected = true;
	};

	void onDisconnect(BLEServer *pServer)
	{
		myLog_d("BLE client disconnected");
		bleUARTisConnected = false;
		bleUARTnotifyEnabled = false;
		pAdvertising->start();
	}
};

/**
 * Callbacks for BLE client read/write requests
 * on BLE UART characteristic
 */
class UartTxCbHandler : public BLECharacteristicCallbacks
{
	void onWrite(BLECharacteristic *pCharacteristic)
	{
		std::string rxValue = pCharacteristic->getValue();
		rxLen = rxValue.size();

		xSemaphoreTake(_mutex, portMAX_DELAY);
		// if ((rxLen > 0) && (dataRcvd == false))
		if (rxLen > 0)
		{
			strncpy((char *)rxData, rxValue.c_str(), 253);

			myLog_d("UART write callback received %s", (char *)rxData);
		}
		xSemaphoreGive(_mutex);
	};
};

/**
 * Initialize nRF52 BLE UART
 */
void initBLE(void)
{
	char apName[] = "EC-xxxxxxxxxxxx";
	// Using ESP32 MAC (48 bytes only, so upper 2 bytes will be 0)
	sprintf(apName, "EC-%08X", deviceID);
	myLog_d("Device name: %s", apName);

	// Create mutex for access to RX data buffer
	_mutex = xSemaphoreCreateMutex();
	xSemaphoreGive(_mutex);

	// Initialize BLE and set output power
	BLEDevice::init(apName);
	BLEDevice::setMTU(260);
	BLEDevice::setPower(ESP_PWR_LVL_P7);

	myLog_d("BLE address: %s", BLEDevice::getAddress().toString().c_str());

	// Create BLE Server
	pServer = BLEDevice::createServer();

	// Set server callbacks
	pServer->setCallbacks(new MyServerCallbacks());

	// Create the UART BLE Service
	uartService = pServer->createService(UART_UUID);

	// Create a BLE Characteristic
	pCharacteristicUartTX = uartService->createCharacteristic(
		TX_UUID,
		BLECharacteristic::PROPERTY_NOTIFY |
			BLECharacteristic::PROPERTY_READ);

	// Register callback for notification enabled
	pCharacteristicUartTX->setNotifyProperty(true);

	pCharacteristicUartRX = uartService->createCharacteristic(
		RX_UUID,
		BLECharacteristic::PROPERTY_WRITE);

	pCharacteristicUartRX->setCallbacks(new UartTxCbHandler());

	// Start the service
	uartService->start();

	// Start advertising
	pAdvertising = pServer->getAdvertising();
	pAdvertising->addServiceUUID(UART_UUID);
	pAdvertising->start();
}

Maybe I am missing something in the setup of the advertising service???
Missing feature
Maybe I did miss it, but I used to set a callback on the characteristic descriptor to get a callback if the client enables notifications.
What I used was
...
#include <BLE2902.h>
#include <esp_bt_device.h>
...
/** Descriptor for the BLE-UART TX characteristic */
BLEDescriptor *txDescriptor;
 ...
/**
 * Callbacks for BLE client descriptor changes
 * on BLE UART characteristic
 */
class DescriptorCallbacks : public BLEDescriptorCallbacks
{
	void onWrite(BLEDescriptor *pDescriptor)
	{
		uint8_t *descrValue;
		descrValue = pDescriptor->getValue();
		if (descrValue[0] & (1 << 0))
		{
			bleUARTnotifyEnabled = true;
		}
		else
		{
			bleUARTnotifyEnabled = false;
		}
	};
};
...
void initBLE(void)
{
...
	// Create a BLE Characteristic
	pCharacteristicUartTX = uartService->createCharacteristic(
		TX_UUID,
		BLECharacteristic::PROPERTY_NOTIFY |
			BLECharacteristic::PROPERTY_READ);

	pCharacteristicUartTX->addDescriptor(new BLE2902());
	txDescriptor = pCharacteristicUartTX->getDescriptorByUUID("2902");
	if (txDescriptor != NULL)
	{
		txDescriptor->setCallbacks(new DescriptorCallbacks());
	}
...
}

Not sure how to do this with NimBLE.

Thanks for testing this out, I’ll make the change to sdkconfig right away.
Descriptors work differently in NimBLE and I need to work on their implementation still. That said NimBLE automatically creates the 2902 descriptor if you enable notifications/ indications and will work but not callbacks for that yet.
Yes there is something you missed because I forgot to mention it.
Before you make the first call to start advertising you have to start the gatts server.
In your code try adding:
pServer->start();
Right before advertising start.
I’ll implement this directly in the advertising start function soon.

Sounds great. Will try tomorrow again.
The reason why I use the descriptor callback is that after a client connects I send a data package. If I send it before notifications are enabled the client looses that data package. Hope you can implement this callback.
Will report back tomorrow.

Great!
I just updated it as well to include the sdkconfig changes as well as handling the server start automatically when starting advertising so your code should work now as is.

Found the problem.
My advertising data is too long (more than 31 bytes). If I shorten my device name to 4 characters advertising of one 128bit UUID + the name works. If I go 1 character longer the startAdvertise calls abort.
In Arduino-ESP32 BLE library some data is put into the scan response.
in void BLEAdvertising::start() of ESP32 BLE library:
	if (!m_customScanResponseData && m_scanResp) {
		m_advData.set_scan_rsp = true;
		m_advData.include_name = m_scanResp;
		m_advData.include_txpower = m_scanResp;
		errRc = ::esp_ble_gap_config_adv_data(&m_advData);
		if (errRc != ESP_OK) {
			log_e("<< esp_ble_gap_config_adv_data (Scan response): rc=%d %s", errRc, GeneralUtils::errorToString(errRc));
			return;
		}

Maybe something to do in NimBLE as well!

Yes, I was looking at that as well. I think the start function should calculate the advertising packet size and make adjustments based on that.
It’s on the todo list now.

No longer on the todo list, had some free time at work and it's now done.
Advertising will now limit data to 31 bytes and move the name to scan response.  tx power is now also in the scan response. Now there is room in the advertisement packet for a 128bit uuid and a 10 char name. If larger than that there is room for 29 char name in scan response.

Looking better and better. Advertising works and my Android app can connect.
Some statistics about Flash, RAM and heap usage. Heap is checked after all other functions are initialized (display, LoRa, BLE). Beside of BLE the app is the same, just one time using NimBLE and other time using ESP32 BLE
NimBLE
RAM:   [=         ]   9.4% (used 30920 bytes from 327680 bytes)
Flash: [=====     ]  46.7% (used 611495 bytes from 1310720 bytes)
Internal Total heap 322872, internal Free Heap 257848
ESP32 BLE
RAM:   [=         ]  12.7% (used 41608 bytes from 327680 bytes)
Flash: [========  ]  78.0% (used 1022499 bytes from 1310720 bytes)
Internal Total heap 291572, internal Free Heap 166676

Glad to hear it's working for you and those stats are a significant improvement!
I just pushed an update that enables the 2902 descriptor and the onwrite callback is working, onread is todo still. NimBLE handles that one automatically so I need to find the api for the callbacks onread to work.
Also since NimBLE takes care of that descriptor internally I did the same, the 2902 is automatically created in the library as well so there is no need to call addDescriptor in the setup code unless you want to set the callbacks or something else.

Descriptor callback works fine.
onWrite callback works fine.
Thanks for the update.

Good stuff, thanks for the update.
Hopefully I can get the descriptor code finished up soon, then start on security and examples.

Just as reference, here is how I get the descriptor and add the descriptor callback:
/** Descriptor for the BLE-UART TX characteristic */
NimBLEDescriptor *txDescriptor;

// Add callback for notifcation and indication changes
txDescriptor = pCharacteristicUartTX->getDescriptorByUUID("2902");
if (txDescriptor != NULL)
{
	myLog_d("Found 2902 descriptor!");
	txDescriptor->setCallbacks(new DescriptorCallbacks());
}

And the callback looks like
/**
 * Callbacks for BLE client descriptor changes
 * on BLE UART characteristic
 */
class DescriptorCallbacks : public NimBLEDescriptorCallbacks
{
	void onWrite(NimBLEDescriptor *pDescriptor)
	{
		uint8_t *descrValue;
		descrValue = pDescriptor->getValue();
		if (descrValue[0] & (1 << 0))
		{
			bleUARTnotifyEnabled = true;
		}
		else
		{
			bleUARTnotifyEnabled = false;
		}
	};
};

Thanks!
Just pushed an update that allows for any type of descriptor to be added to a characteristic as well.
Haven't had time to much testing but the quick test I did seems to be working.
Not sure yet how to implement the onRead callback for 2902 but I don't think it's important enough to be concerned with at this point. Not much use for it I don't think.

Latest version doesn't compile under PlatformIO anymore.
I went down the commits and the problem starts after commit #f43533d. That is when you changed the sdkconfig.h file.
Starting from commit #0281973 compilation fails with missing FreeRTOS defines (in PlatformIO):
In file included from C:/users/beegee/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:32:0,
                 from src/main.h:2,
                 from src\BLE\ble_esp32.cpp:3:
C:/users/beegee/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/FreeRTOS.h:244:3: error: #error configMAX_TASK_NAME_LEN must be set to a minimum of 1 in FreeRTOSConfig.h
  #error configMAX_TASK_NAME_LEN must be set to a minimum of 1 in FreeRTOSConfig.h
   ^

In ArduinoIDE I get redefinition errors and then compilation stops with a "expected type-specifier before NimBLE2902" error
In file included from B:\Projects\Arduino\libraries\NimBLE-Arduino\src/nimble/nimble_npl.h:26:0,

                 from B:\Projects\Arduino\libraries\NimBLE-Arduino\src/os/os.h:38,

                 from B:\Projects\Arduino\libraries\NimBLE-Arduino\src/nimble/ble.h:26,

                 from B:\Projects\Arduino\libraries\NimBLE-Arduino\src/NimBLEAddress.h:20,

                 from B:\Projects\Arduino\libraries\NimBLE-Arduino\src/NimBLEAdvertisedDevice.h:20,

                 from B:\Projects\Arduino\libraries\NimBLE-Arduino\src/NimbleScan.h:19,

                 from B:\Projects\Arduino\libraries\NimBLE-Arduino\src/NimBLEDevice.h:20,

                 from B:\Projects\Arduino\NimBLE-UART\NimBLE-UART.ino:22:

B:\Projects\Arduino\libraries\NimBLE-Arduino\src/nimble/sdkconfig.h:12:0: warning: "CONFIG_LOG_BOOTLOADER_LEVEL" redefined

 #define CONFIG_LOG_BOOTLOADER_LEVEL 3

 ^

In file included from C:\Users\beegee\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4/tools/sdk/include/log/esp_log.h:20:0,
                 from C:\Users\beegee\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32/esp32-hal-log.h:128,
                 from C:\Users\beegee\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32/esp32-hal.h:50,
                 from C:\Users\beegee\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32/Arduino.h:35,
                 from sketch\NimBLE-UART.ino.cpp:1:
C:\Users\beegee\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4/tools/sdk/include/config/sdkconfig.h:248:0: note: this is the location of the previous definition
 #define CONFIG_LOG_BOOTLOADER_LEVEL 0

...

In file included from B:\Projects\Arduino\NimBLE-UART\NimBLE-UART.ino:22:0:
B:\Projects\Arduino\NimBLE-UART\NimBLE-UART.ino: In function 'void setup()':
B:\Projects\Arduino\libraries\NimBLE-Arduino\src/NimBLEDevice.h:55:23: error: expected type-specifier before 'NimBLE2902'
 #define BLE2902       NimBLE2902
                       ^
B:\Projects\Arduino\NimBLE-UART\NimBLE-UART.ino:87:40: note: in expansion of macro 'BLE2902'
   pTxCharacteristic->addDescriptor(new BLE2902());

Thanks for pointing this out, I haven't tested using PlatformIO. I've been doing some work with the descriptors and trying to minimize the sdkconfig to work in as many arduino versions as possible.
If you could try the latest update I did, about 5 mins ago, and change your code from:
pTxCharacteristic->addDescriptor(new BLE2902());
to:
pTxCharacteristic->createDescriptor("2902");
and let me know if you have any problems it would be appreciated.
I've been trying to maintain compatibility with the old library but some things just didn't make sense to keep, that is one of them.
Also where you create your characteristics you should change any:
BLECharacteristic::PROPERTY_XXXXX
to:
PROPERTY_XXXXX
since I have changed those to a defined value instead as it's more compatible with NimBLE.

Still no success on PlatformIO. Adding
#define CONFIG_FREERTOS_MAX_TASK_NAME_LEN 16
just leads to the next missing config.
On ArduinoIDE it compiles with latest version (many redefine warnings). But then simple BLE-UART example code crashes. Maybe I missed something?
Code:
/*
    Video: https://www.youtube.com/watch?v=oCMOYS71NIU
    Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleNotify.cpp
    Ported to Arduino ESP32 by Evandro Copercini

   Create a BLE server that, once we receive a connection, will send periodic notifications.
   The service advertises itself as: 6E400001-B5A3-F393-E0A9-E50E24DCCA9E
   Has a characteristic of: 6E400002-B5A3-F393-E0A9-E50E24DCCA9E - used for receiving data with "WRITE"
   Has a characteristic of: 6E400003-B5A3-F393-E0A9-E50E24DCCA9E - used to send data with  "NOTIFY"

   The design of creating the BLE server is:
   1. Create a BLE Server
   2. Create a BLE Service
   3. Create a BLE Characteristic on the Service
   4. Create a BLE Descriptor on the characteristic
   5. Start the service.
   6. Start advertising.

   In this example rxValue is the data received (only accessible inside that function).
   And txValue is the data to be sent, in this example just a byte incremented every second.
*/
#include <NimBLEDevice.h>
#include <NimBLEServer.h>
#include <NimBLEUtils.h>
//#include <BLE2902.h>

BLEServer *pServer = NULL;
BLECharacteristic * pTxCharacteristic;
bool deviceConnected = false;
bool oldDeviceConnected = false;
uint8_t txValue = 0;

// See the following for generating UUIDs:
// https://www.uuidgenerator.net/

#define SERVICE_UUID           "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" // UART service UUID
#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"

class MyServerCallbacks: public BLEServerCallbacks {
    void onConnect(BLEServer* pServer) {
      deviceConnected = true;
    };

    void onDisconnect(BLEServer* pServer) {
      deviceConnected = false;
    }
};

class MyCallbacks: public BLECharacteristicCallbacks {
    void onWrite(BLECharacteristic *pCharacteristic) {
      std::string rxValue = pCharacteristic->getValue();

      if (rxValue.length() > 0) {
        Serial.println("*********");
        Serial.print("Received Value: ");
        for (int i = 0; i < rxValue.length(); i++)
          Serial.print(rxValue[i]);

        Serial.println();
        Serial.println("*********");
      }
    }
};

void setup() {
  Serial.begin(115200);

  // Create the BLE Device
  BLEDevice::init("UART Service");

  // Create the BLE Server
  pServer = BLEDevice::createServer();
  pServer->setCallbacks(new MyServerCallbacks());

  // Create the BLE Service
  BLEService *pService = pServer->createService(SERVICE_UUID);

  // Create a BLE Characteristic
  pTxCharacteristic = pService->createCharacteristic(
                        CHARACTERISTIC_UUID_TX,
                        PROPERTY_NOTIFY
                      );

  //  pTxCharacteristic->addDescriptor(new BLE2902());
  pTxCharacteristic->createDescriptor("2902");

  BLECharacteristic * pRxCharacteristic = pService->createCharacteristic(
      CHARACTERISTIC_UUID_RX,
      PROPERTY_WRITE
                                          );

  pRxCharacteristic->setCallbacks(new MyCallbacks());

  // Start the service
  pService->start();

  // Start the server
  pServer->start();

  // Start advertising
  pServer->getAdvertising()->start();
  Serial.println("Waiting a client connection to notify...");
}

void loop() {

  if (deviceConnected) {
    pTxCharacteristic->setValue(&txValue, 1);
    pTxCharacteristic->notify();
    txValue++;
    delay(10); // bluetooth stack will go into congestion, if too many packets are sent
  }

  // disconnecting
  if (!deviceConnected && oldDeviceConnected) {
    delay(500); // give the bluetooth stack the chance to get things ready
    pServer->startAdvertising(); // restart advertising
    Serial.println("start advertising");
    oldDeviceConnected = deviceConnected;
  }
  // connecting
  if (deviceConnected && !oldDeviceConnected) {
    // do stuff here on connecting
    oldDeviceConnected = deviceConnected;
  }
}

Error log from terminal:
GAP procedure initiated: stop advertising.
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC      : 0x400dbce8  PS      : 0x00060130  A0      : 0x800d3fc1  A1      : 0x3ffc5ce0
A2      : 0x3ffc8c70  A3      : 0x3ffc87c8  A4      : 0x3ffc87c4  A5      : 0x3ffc5d28
A6      : 0x3ffc5d6e  A7      : 0x3ffc2601  A8      : 0x00000001  A9      : 0xfefefefe
A10     : 0x00000000  A11     : 0x00000001  A12     : 0x00000000  A13     : 0x00000030
A14     : 0x00000000  A15     : 0x3ffc8b4c  SAR     : 0x00000018  EXCCAUSE: 0x0000001c
EXCVADDR: 0xfefefefe  LBEG    : 0x4000c349  LEND    : 0x4000c36b  LCOUNT  : 0x00000000

Backtrace: 0x400dbce8:0x3ffc5ce0 0x400d3fbe:0x3ffc5d00 0x400d1be5:0x3ffc5d90 0x400e4863:0x3ffc5de0 0x4008d4d5:0x3ffc5e00

Rebooting...
ets Jun  8 2016 00:22:57

Decoded backtrace from exception says:
PC: 0x400dbce8: ble_gatts_count_cfg at B:\Projects\Arduino\libraries\NimBLE-Arduino\src\nimble\host\src\ble_gatts.c line 2058
EXCVADDR: 0xfefefefe

Decoding stack results
0x400dbce8: ble_gatts_count_cfg at B:\Projects\Arduino\libraries\NimBLE-Arduino\src\nimble\host\src\ble_gatts.c line 2058
0x400d3fbe: NimBLEService::start() at B:\Projects\Arduino\libraries\NimBLE-Arduino\src\NimBLEService.cpp line 162
0x400d1be5: setup() at B:\Projects\Arduino\NimBLE-UART/NimBLE-UART.ino line 98
0x400e4863: loopTask(void*) at C:\Users\beegee\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32\main.cpp line 14
0x4008d4d5: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c line 143

Solution for sdkconfig.h problem:

in NimBLE-Arduino/src rename sckconfig.h to NimConfig.h
delete sdkconfig.h in NimBLE-Arduino/src/nimble
change all includes from #include "sdkconfig.h" to #include "NimConfig.h"

Compiles without problems under both ArduinoIDE and PlatformIO.
Content of NimConfig.h (two sdkconfig.h defines are required to get all working!)
#pragma once
#define CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL 1
#define CONFIG_BT_NIMBLE_MAX_CONNECTIONS 3
#define CONFIG_BT_NIMBLE_MAX_BONDS 3
#define CONFIG_BT_NIMBLE_MAX_CCCDS 8
#define CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM 0
#define CONFIG_BT_NIMBLE_PINNED_TO_CORE_0 1
#define CONFIG_BT_NIMBLE_PINNED_TO_CORE 0
#define CONFIG_BT_NIMBLE_TASK_STACK_SIZE 4096
#define CONFIG_BT_NIMBLE_ROLE_CENTRAL 1
#define CONFIG_BT_NIMBLE_ROLE_PERIPHERAL 1
#define CONFIG_BT_NIMBLE_ROLE_BROADCASTER 1
#define CONFIG_BT_NIMBLE_ROLE_OBSERVER 1
#define CONFIG_BT_NIMBLE_NVS_PERSIST 1
#define CONFIG_BT_NIMBLE_SM_LEGACY 1
#define CONFIG_BT_NIMBLE_SM_SC 1
#define CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME "nimble"
#define CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN 31
#define CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU 256
#define CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE 0x0
#define CONFIG_BT_NIMBLE_ACL_BUF_COUNT 12
#define CONFIG_BT_NIMBLE_ACL_BUF_SIZE 255
#define CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE 70
#define CONFIG_BT_NIMBLE_HCI_EVT_HI_BUF_COUNT 30
#define CONFIG_BT_NIMBLE_HCI_EVT_LO_BUF_COUNT 8

#define CONFIG_BT_ENABLED 1
#define CONFIG_BTDM_CONTROLLER_MODE_BLE_ONLY 1

And last one today.
After making above changes the NimBLE-UART.no example compiles and works under ArduinoIDE without problems using your latest commit.
Same for my own application, working now with the latest commit.
Don't know how the test the Eddystone stuff.

Awesome, thanks for the help, seems I'll need to do some more work with the config files.
Unfortunately NimBLE has a lot of relative path includes and some of them involve the sdkconfig which is why there are 2 of them.
I didn't want to touch the NimBLE core files if I didn't have to so updating it would be a simple matter of replacing files, but it seems the best solution to minimize problems for others would be to make some changes in there.

The changes I did are only the includes in the NimBLE files so that should be manageable. And PlatformIO is way better than ArduinoIDE. Compilation is 3 times faster, you can jump directly to variables and functions declarations/definitions, make global defines, easy way to support different boards,.... You should give it a try. . I think it is important to keep compatibility to both IDEs.
I will look as well for some Eddystone examples tomorrow.

Thanks, yes I will try out PlatformIO. I mainly use the idf and arduino as a component in eclipse.
I did find the bug causing the crash in BLEuart. Only happens when using arduino. Just pushed an update to fix that.
Now I’ll play around with sdkconfig :).

Eclipse is as good as PlatformIO!
I just feel ArduinoIDE is like a toy for kids.
You did a great job with the NimBLE library. I will try tomorrow to use it with a custom  characteristic instead of the BLE UART.

 If you use the IDF you can just clone the espressif nimble library and add the bits from the v4 idf branch to v3.2 and stick it in your project/components folder. So much better and only 1 sdkconfig lol.

So it seems arduino initialization was releasing the memory for BLE because of the config setup so I implemented your suggested changes and so far so good.
Thanks!

I tested the iBeacon example from the BLE library with NimBLE and it works just fine.
I looked for Eddystone example code, but there is nothing that uses the BLEEddystoneURL or BLEEddystoneTLM stuff.
In fact I think that these two classes are incomplete. At least for BLEEddystoneURL, the advertising frame created there is incomplete.  It doesn't hold all informations. I checked this Github blob and wrote some code using the NimBLE library and it advertises correct as EddystoneURL.
Here is the iBeacon example code which is beside of one line the same as the original example:
/*
   Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleScan.cpp
   Ported to Arduino ESP32 by pcbreflux
*/

/*
   Create a BLE server that will send periodic iBeacon frames.
   The design of creating the BLE server is:
   1. Create a BLE Server
   2. Create advertising data
   3. Start advertising.
   4. wait
   5. Stop advertising.
   6. deep sleep

*/
#include "sys/time.h"

#include <Arduino.h>

#include "NimBLEDevice.h"
#include "NimBLEUtils.h"
#include "NimBLEBeacon.h"
#include "NimBLEAdvertising.h"

#include "esp_sleep.h"

#define GPIO_DEEP_SLEEP_DURATION 10		 // sleep x seconds and then wake up
RTC_DATA_ATTR static time_t last;		 // remember last boot in RTC Memory
RTC_DATA_ATTR static uint32_t bootcount; // remember number of boots in RTC Memory

#ifdef __cplusplus
extern "C"
{
#endif

	uint8_t temprature_sens_read();
	//uint8_t g_phyFuns;

#ifdef __cplusplus
}
#endif

// See the following for generating UUIDs:
// https://www.uuidgenerator.net/
BLEAdvertising *pAdvertising;
struct timeval now;

#define BEACON_UUID "8ec76ea3-6668-48da-9866-75be8bc86f4d" // UUID 1 128-Bit (may use linux tool uuidgen or random numbers via https://www.uuidgenerator.net/)

void setBeacon()
{

	BLEBeacon oBeacon = BLEBeacon();
	oBeacon.setManufacturerId(0x4C00); // fake Apple 0x004C LSB (ENDIAN_CHANGE_U16!)
	oBeacon.setProximityUUID(BLEUUID(BEACON_UUID));
	oBeacon.setMajor((bootcount & 0xFFFF0000) >> 16);
	oBeacon.setMinor(bootcount & 0xFFFF);
	BLEAdvertisementData oAdvertisementData = BLEAdvertisementData();
	BLEAdvertisementData oScanResponseData = BLEAdvertisementData();

	oAdvertisementData.setFlags(0x04); // BR_EDR_NOT_SUPPORTED 0x04

	std::string strServiceData = "";

	strServiceData += (char)26;   // Len
	strServiceData += (char)0xFF; // Type
	strServiceData += oBeacon.getData();
	oAdvertisementData.addData(strServiceData);

	pAdvertising->setAdvertisementData(oAdvertisementData);
	pAdvertising->setScanResponseData(oScanResponseData);
	// pAdvertising->setAdvertisementType(ADV_TYPE_NONCONN_IND);
}

void setup()
{

	Serial.begin(115200);
	gettimeofday(&now, NULL);

	Serial.printf("start ESP32 %d\n", bootcount++);

	Serial.printf("deep sleep (%lds since last reset, %lds since last boot)\n", now.tv_sec, now.tv_sec - last);

	last = now.tv_sec;

	// Create the BLE Device
	BLEDevice::init("MeBeacon");

	// Create the BLE Server
	// BLEServer *pServer = BLEDevice::createServer(); // <-- no longer required to instantiate BLEServer, less flash and ram usage

	pAdvertising = BLEDevice::getAdvertising();

	setBeacon();
	// Start advertising
	pAdvertising->start();
	Serial.println("Advertizing started...");
	delay(10000);
	pAdvertising->stop();
	Serial.printf("enter deep sleep\n");
	esp_deep_sleep(1000000LL * GPIO_DEEP_SLEEP_DURATION);
	Serial.printf("in deep sleep\n");
}

void loop()
{
}

And here is the EddyStoneURL example:
/*
   Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleScan.cpp
   Ported to Arduino ESP32 by pcbreflux
*/

/*
   Create a BLE server that will send periodic iBeacon frames.
   The design of creating the BLE server is:
   1. Create a BLE Server
   2. Create advertising data
   3. Start advertising.
   4. wait
   5. Stop advertising.
   6. deep sleep

*/
#include "sys/time.h"

#include <Arduino.h>

#include "NimBLEDevice.h"
#include "NimBLEUtils.h"
#include "NimBLEBeacon.h"
#include "NimBLEAdvertising.h"

#include "esp_sleep.h"

#define GPIO_DEEP_SLEEP_DURATION 10		 // sleep x seconds and then wake up
RTC_DATA_ATTR static time_t last;		 // remember last boot in RTC Memory
RTC_DATA_ATTR static uint32_t bootcount; // remember number of boots in RTC Memory

#ifdef __cplusplus
extern "C"
{
#endif

	uint8_t temprature_sens_read();
	//uint8_t g_phyFuns;

#ifdef __cplusplus
}
#endif

// See the following for generating UUIDs:
// https://www.uuidgenerator.net/
BLEAdvertising *pAdvertising;
struct timeval now;

#define BEACON_UUID "8ec76ea3-6668-48da-9866-75be8bc86f4d" // UUID 1 128-Bit (may use linux tool uuidgen or random numbers via https://www.uuidgenerator.net/)

#define FLAGS_UID 0x00
#define FLAGS_URL 0x10
#define FLAGS_TLM 0x20

static const char *eddystone_url_prefix_subs[] = {
	"http://www.",
	"https://www.",
	"http://",
	"https://",
	"urn:uuid:",
	NULL};

static const char *eddystone_url_suffix_subs[] = {
	".com/",
	".org/",
	".edu/",
	".net/",
	".info/",
	".biz/",
	".gov/",
	".com",
	".org",
	".edu",
	".net",
	".info",
	".biz",
	".gov",
	NULL};

static int string_begin_with(const char *str, const char *prefix)
{
	int prefix_len = strlen(prefix);
	if (strncmp(prefix, str, prefix_len) == 0)
	{
		return prefix_len;
	}
	return 0;
}

void setBeacon()
{
	BLEAdvertisementData oAdvertisementData = BLEAdvertisementData();
	BLEAdvertisementData oScanResponseData = BLEAdvertisementData();

	const char url[] = "http://giesecke.tk";

	int scheme_len, ext_len = 1, i, idx, url_idx;
	char *ret_data;
	int url_len = strlen(url);

	ret_data = (char *) calloc(1, url_len + 13);

	ret_data[0] = 2;	 // Len
	ret_data[1] = 0x01;  // Type Flags
	ret_data[2] = 0x06;  // GENERAL_DISC_MODE 0x02 | BR_EDR_NOT_SUPPORTED 0x04
	ret_data[3] = 3;	 // Len
	ret_data[4] = 0x03;  // Type 16-Bit UUID
	ret_data[5] = 0xAA;  // Eddystone UUID 2 -> 0xFEAA LSB
	ret_data[6] = 0xFE;  // Eddystone UUID 1 MSB
	ret_data[7] = 19;	// Length of Beacon Data
	ret_data[8] = 0x16;  // Type Service Data
	ret_data[9] = 0xAA;  // Eddystone UUID 2 -> 0xFEAA LSB
	ret_data[10] = 0xFE; // Eddystone UUID 1 MSB
	ret_data[11] = 0x10; // Eddystone Frame Type
	ret_data[12] = 0x20; // Beacons TX power at 0m

	i = 0, idx = 13, url_idx = 0;

	//replace prefix
	scheme_len = 0;
	while (eddystone_url_prefix_subs[i] != NULL)
	{
		if ((scheme_len = string_begin_with(url, eddystone_url_prefix_subs[i])) > 0)
		{
			ret_data[idx] = i;
			idx++;
			url_idx += scheme_len;
			break;
		}
		i++;
	}
	while (url_idx < url_len)
	{
		i = 0;
		ret_data[idx] = url[url_idx];
		ext_len = 1;
		while (eddystone_url_suffix_subs[i] != NULL)
		{
			if ((ext_len = string_begin_with(&url[url_idx], eddystone_url_suffix_subs[i])) > 0)
			{
				ret_data[idx] = i;
				break;
			}
			else
			{
				ext_len = 1; //inc 1
			}
			i++;
		}
		url_idx += ext_len;
		idx++;
	}
	ret_data[7] = idx - 8;

	std::string eddyStoneData(ret_data);

	oAdvertisementData.addData(eddyStoneData);
	pAdvertising->setAdvertisementData(oAdvertisementData);
	// oScanResponseData.addData("Bernd Giesecke");
	pAdvertising->setScanResponseData(oScanResponseData);
}

void setup()
{

	Serial.begin(115200);
	gettimeofday(&now, NULL);

	Serial.printf("start ESP32 %d\n", bootcount++);

	Serial.printf("deep sleep (%lds since last reset, %lds since last boot)\n", now.tv_sec, now.tv_sec - last);

	last = now.tv_sec;

	// Create the BLE Device
	BLEDevice::init("MeBeacon");

	// Create the BLE Server
	// BLEServer *pServer = BLEDevice::createServer(); // <-- no longer required to instantiate BLEServer, less flash and ram usage

	pAdvertising = BLEDevice::getAdvertising();

	setBeacon();
	// Start advertising
	pAdvertising->start();
	Serial.println("Advertizing started...");
	delay(10000);
	pAdvertising->stop();
	Serial.printf("enter deep sleep\n");
	esp_deep_sleep(1000000LL * GPIO_DEEP_SLEEP_DURATION);
	Serial.printf("in deep sleep\n");
}

void loop()
{
}

I think I understand now the purpose of BLEEddystoneURL and BLEEddystoneTLM classes. They are to decode data received from an Eddystone beacon, not to create one.
Will try if I can create some code to test these classes. One ESP32 acting as Eddystone beacon, another one to receive the data and decode it using these classes.

Thanks for doing this, NimBLE has built in functions for creating eddystone URL and UID beacons. Maybe I should add that functionality to the class to use those.

That sounds great as long as it doesn't break compatibility with the current BLE libraries. Let me know if I can help.

I'll have to look at it more, the library seems to be capable of creating a beacon and decoding them so it should be dual purpose. I'll see what I can do to use NimBLE to simplify your example.

More tests from my side.
I created an iBeacon, an EddystoneTLM beacon and an EddystoneURL beacon and wrote a beacon scanner app (base source).
I checked the beacons as well with the nRFConnect app on Android.
All three beacons work as expected and are detected by both nRFConnect and the ESP32 scanner as the correct beacon types.
Two findings:
BLE scan callback called twice
In the scanner app I declared the scanner callback as in your example with BLEScanResults foundDevices = pBLEScan->start(scanTime, false); and the callback is called as expected. But it is called twice for each device, but the first time without the data attached.
Serial output:
Scan done!
Found ServiceUUID: 6e400001-b5a3-f393-e0a9-e50e24dcca9e

Device name: EC-BF6C660E

Found ServiceUUID: 6e400001-b5a3-f393-e0a9-e50e24dcca9e

Found an iBeacon!
iBeacon Frame
ID: 004C Major: 0 Minor: 90 UUID: 8ec76ea3-6668-48da-9866-75be8bc86f4d Power: 0
Device name: iBeacon

Found an iBeacon!
iBeacon Frame
ID: 004C Major: 0 Minor: 90 UUID: 8ec76ea3-6668-48da-9866-75be8bc86f4d Power: 0
Device name: TLMBeacon

Device name: TLMBeacon

Found ServiceUUID: 0xfeaa

Found an EddystoneTLM beacon!
Reported battery voltage: 3246mV
Reported temperature from TLM class: 37912.00C
Reported temperature from data: 24.58C
Reported advertise count: 91
Reported time since last reboot: 1844ms

General bug in BLEEddystoneTLM (both Arduino and NimBLE)
EddystoneTLM has a temperature value.
According to Google definition the format is 8.8 fixed-point notation. But in the BLEEddystoneTLM class the temperature is declared as float, and the two bytes of the temperature value is just interpreted as an float value which gives complete wrong values. I found one Eddystone TLM example, and there the setting the temperature values is done wrong as well. The wrong value can be seen in nRFConnect, where it shows impossible temperatures.
The correct conversion from float to 8.8 fixed-point and back is shown in Fixed Point Maths.
The correct conversion on the beacon side would be (as example read temperature from a DHT sensor)
float tempFloat = dht.getTemperature();
int temp = (int)(tempFloat * 256);
...
beacon_data[5] = (temp & 0xFF);					   // Beacon temperature
beacon_data[4] = (temp >> 8);					   //
...

And in BLEEddystoneTLM class the getTemp() function should be
float NimBLEEddystoneTLM::getTemp() {
	return ((((m_eddystoneData.temp) & 0xFF00) >> 8) + (((m_eddystoneData.temp) & 0xFF) << 8)) / 256.0f;
} // getTemp

I will report this bug in the arduino-esp32 issues as well.

Further test on double callback, I tested with the default Arduino BLE libraries and the callback is called only once there:
Device name: EC-BF6C660E

Found ServiceUUID: 6e400001-b5a3-f393-e0a9-e50e24dcca9e

Device name: iBeacon

Found an iBeacon!
iBeacon Frame
ID: 004C Major: 0 Minor: 332 UUID: 8ec76ea3-6668-48da-9866-75be8bc86f4d Power: 0
Devices found: 2
Scan done!

Great catch, thanks for this, I will update the code to reflect asap.
As for the double callback I will have to see what I can do about it. This is a function of NimBLE, it calls the callback once for the advertisment and a second time for the scan response. In the library I just updated the advertisedDevice data with the scan response data when it comes but perhaps I should filter it and only callback when the scan response is received.
Then I would have to make sure active scanning is being performed and the device has scan response capability or there will be no callback lol. I'll put it on my todo list to look into.

Ah, now I understand the double callback.
Just a thought (not compatible with ESP32 BLE library)
Have two call backs. One for advertise data and a second one for scan response data.
For the other issue (EddystoneTLM temperature) I need to investigate more. Chegewara gave me some feedback I need to check. Don't push a change yet.

Yeah I was thinking of making a scan response callback but I wanted to remain compatible as much as possible. Also made more sense to just add that data to the advertisement packet data. However I do believe the callback should only occur with the complete data is available.

Pushed an update to address the double callback issue, if you could retest with your beacons it would be much appreciated. Also log level selection now works correctly in Arduino and reading/writing descriptors is fixed.
All looks good in my testing so far, more testing and examples next.

Double call of scan callback is gone. Scan works as expected.
Sent a pull request for the EddystoneTLM data parsing fix. There was more than just the temperature wrong in that class.
Added 3 examples
Beacon scanner example to show usage of BLEEddystoneTLM class and BLEEddystoneURL class
EddystoneTLM beacon example
EddystoneURL beacon example

Great work! Thank you!
That saved me a lot of time not having to dig into that and search up examples.
I will merge the PR shortly.

If you are interested in a more complex example using custom characteristics, I just converted my
ESP32WiFiBLE to use NimBLE-Arduino ==> ESP32WiFiBLE-NimBLE.
Here a comparison of the identical code, one time using ESP32 BLE library and second time using NimBLE-Arduino library
Memory usage (compilation output)
Arduino BLE library
RAM:   [==        ]  17.7% (used 58156 bytes from 327680 bytes)
Flash: [========  ]  76.0% (used 1345630 bytes from 1769472 bytes)

NimBLE-Arduino library
RAM:   [=         ]  14.5% (used 47476 bytes from 327680 bytes)
Flash: [=======   ]  69.5% (used 911378 bytes from 1310720 bytes)

Memory usage after setup() function
Arduino BLE library
Internal Total heap 259104, internal Free Heap 91660
NimBLE-Arduino library
Internal Total heap 290288, internal Free Heap 182344

This is double the free heap for the application!

That's a cool project. Only thing you need to do is add security so you don't send plain text credentials over the air. It's already configured for just works pairing it in the library all you have to do is turn it on by adding:
PROPERTY_READ_ENC | PROPERTY_WRITE_ENC
to your createCharacteristic() call.

Just have to find out how the decoding/encoding on the Android side works.
Last commit doesn't compile. Something is missing. If I comment out the function (not called from anywhere right now), it compiles and works.

Working on that right now, seems I pushed the wrong file from my working directory.
Is it the int rc = ble_gap_check_conn_params( BLE_HCI_LE_PHY_2M, m_pConnParams); that's causing your error?

I think so, it's past midnight here and I thought I left a comment on your commit, but it's gone. Will check tomorrow morning.

Had some time to play with the beacon examples you made. They work great, I may find them useful for my own projects 👍 . Thanks again! I think this is almost complete as an initial stable release at this point.

Glad you liked the Beacon examples.
For adding security, I added PROPERTY_READ_ENC | PROPERTY_WRITE_ENC but I do not see any difference. My Android app just connects and reads the data as it did before.
How would I add pairing requirement to the app?

Not sure how Android handles pairing in a just works method, might not prompt for user acceptance. I'll test it on my end and see if NimBLE shows the encryption getting initialized.

I finally got it to compile with IDF lol, arduino libraries can be a pain with it, had to do some edits to arduinojson to get it going. However with those properties added the pairing is working for me. I suspect Android just isn't telling you. As a side note, with IDF v3.2 and your code with my sdk settings I get: Internal Total heap 296852, internal Free Heap 239988 :)

Nice!
I saw the automatic pairing after I connected the ESP32 to my phone. The ESP32 was listed as paired device.
Next challenge, I tried to add pass ode with NimBLESecurity. But my phone always says connection failed because of wrong pin code.

Cool, well for passcode testing what you need to do is change the io mode like this:
NimBLEDevice::setSecurityIOCap(BLE_HS_IO_DISPLAY_ONLY ); // set display output capability NimBLEDevice::setSecuityAuth(false, true, true); // no bonding, man in the middle protection, secure connection
That's the NimBLE way, but the old ESP lib way works too.

I never liked how the old library did the security callbacks, defining another class etc. I kept it in for compatibility but implemented the callbacks in the server/client callback classes as well, I need to build some examples of both to show the changes.
I just added those 2 lines to your code after the setPower() call and it worked fine with 123456 as the passcode.

Thanks, pin works now when using the default pin.
But if I try to set a different pin with
// Set pin code
BLESecurity * pSecurity = new BLESecurity();
pSecurity->setStaticPIN(300162);

then again I am back to "wrong pin" on the Android side.
How would I set another pin?

Oops, I didn't complete that part of the backward compatibility, I'll get on that next. For now in your class MyServerCallbacks add:
uint32_t onPassKeyRequest() {
    return 300162;
}

Aaaahhh,
ok, no pressure on that one. I am just playing around.
I implemented all security callbacks, but it looks like only onAuthenticationComplete is called.
onPassKeyRequest is never called.
Something for later.

Thats's odd I'll have another look tomorrow. I fixed the backward compatibility just now and will push the update if you want to try it with the setStaticPIN() call.

Super!
setStaticPin() works now! Thanks.
btw., in NimBLEDevice.h lines 88 and 89
    static void             setsScurityInitKey(uint8_t init_key);
    static void             setsScurityRespKey(uint8_t init_key);

is this a typo?

haha, yes it's a typo from the original library that I copied over I guess, good catch!

I think this is all sorted, closing this one for now.


Subsetting before Multivelo analysis

Hello !
I'm performing a multivelo analysis on a complex tissue with more than 10 well-represented cell types. When I perform the analysis on the whole sample, it work just fine.
However, I'm mainly interested in a peculiar cluster of cell. Subsetting the adata_result from the "global analysis" for my cluster of interest work but 1) I loose some important genes 2) and I think analyzing every clusters together biases somewhat the results (because of genes expressional leaking and random chromatin accessibility in big cell clusters).
So I tried to run multivelo only on this cluster by subsetting my object before the analysis

cur_celltypes = ['Cluster']
adatam_object_cluster = adatam_object[adatam_object.obs['cell_Type'].isin(cur_celltypes)]

Everything goes smoothly up to the mv.recover_dynamics_chrom step :

adata_result = mv.recover_dynamics_chrom(adatam_object_cluster, adata_atac_cluster,max_iter=5, init_mode="invert",verbose=False,parallel=True,save_plot=False,rna_only=False,fit=True,n_anchors=500,extra_color_key='orig.ident')

and I get, at around 18% of the job :
....
File "/home/.local/lib/python3.8/site-packages/multivelo/dynamical_chrom_func.py", line 1386, in initialize_steady_state_params
for t_sw_1 in np.arange(1, rna_interval-1, 2,
ValueError: arange: cannot compute length
"""
....
...
The above exception was the direct cause of the following exception:
...
File "/home/.local/lib/python3.8/site-packages/joblib/parallel.py", line 763, in _return_or_raise
raise self._result
ValueError: arange: cannot compute length
I'm wondering why. Do you have any idea? The only evident difference I see is the number of cells that would be insufficient. Could that be possible ?
Best
David

It could be related to low-quality genes after subsetting, see #5 and #28. The highly-variable gene selection step during preprocessing is recommended to run directly on the object that is given to MultiVelo. Without a good phase portrait, the trajectory inference is likely to fail.
You can also try removing the single gene that's causing this error and rerunning again.


Process $DROP_CAPS

Process $DROP_CAPS (example value: "KILL,MKNOD,SETGID,SETUID,SYS_CHROOT") by splitting it at commas, upper-casing it, prefixing each value with "CAP_" if it doesn't already start with that prefix, and setting it in the DropCapabilities list in our BuildOptions.

rather than wiring this though as env vars (given that the env vars are hardcoded in the origin build controller strategy impl), I think it makes more sense to just hardcode the caps to drop here in the builder image?  (and remove the logic in openshift/origin that sets the env vars, since I guess nothing is currently consuming them?)
/cc @adambkaplan
In any case I guess none of this actually drops capabilities on the builder pod itself, which is what we really need to be doing if we want to tighten up the security of our privileged builder pod.

Yes, this sets us up to drop capabilities when we're handling RUN instructions, but the builder process itself still has everything that we granted to the builder container.

@adambkaplan PTAL

/retest

/retest

hrm...also looks like upgrade tests aren't running on this repo. Need to check this is required.

Added a unit test for the dropCapabilities() function, which parses the environment variable and returns a slice of capability names.

Thanks, squashed the commits.

/test e2e-aws-image-ecosystem

this will get stuck in tide until e2e-aws-builds is green again.


Semi-colon expected after Prettier format

I use Prettier to make my styled components look nice. Unfortunately sometimes Prettier wraps certain lines and that causes issue with the plugin which marks them as errors.
For example:
    padding: ${({ theme }) => theme.spacing.xxs} ${({ theme }) => theme.spacing.xs};

Gets formatted to:
    padding: ${({ theme }) => theme.spacing.xxs}
      ${({ theme }) => theme.spacing.xs};

Which the plugin marks as error:
semi-colon expectedts-styled-plugin(9999)

I'm aware I can start typing them like this to avoid Prettier's formatting:
    padding: ${({ theme }) => `${theme.spacing.xxs} ${theme.spacing.xs}`};

But I'm wondering if there's a better way to fix this?

Any updates on fixing this?
I am also getting the following errors due to the same problem:
at-rule or selector expected,
semi-colon expected,
) expected
For the following snippet:
&.editField {
      background-image: url(${({ theme }) =>
         base_icon_URL + // ") expected" error shows here.
         theme.tintedGlassHex(theme.foreground, theme.background).slice(1) +
         '/pencil--v1.png'}); // "semi-colon expected" error shows here.
} // "at-rule or selector expected" error shows here.


Not able to get role assignment

I am running following command after getting authenticated in Powershell:
Get-AzureADMSPrivilegedRoleAssignment -ProviderId "aadRoles" -ResourceId "94be56d7-88f4-4964-8b05-7c00cd**5c8"
and I am getting the following error:
_Get-AzureADMSPrivilegedRoleAssignment : Error occurred while executing GetAzureADMSPrivilegedRoleAssignments
Code: UnknownError
Message:
InnerError:
RequestId: 6cef32b3-da6e-40cf-a5bf-3afea86f74a1
DateTimeStamp: Mon, 30 Mar 2020 13:11:11 GMT
HttpStatusCode: Forbidden
HttpStatusDescription: Forbidden
HttpResponseStatus: Completed
At line:1 char:1

Get-AzureADMSPrivilegedRoleAssignment -ProviderId "aadRoles" -Resourc ...

  + CategoryInfo          : NotSpecified: (:) [Get-AzureADMSPrivilegedRoleAssignment], ApiException
  + FullyQualifiedErrorId : Microsoft.Open.MSGraphBeta.Client.ApiException,Microsoft.Open.MSGraphBeta.PowerShell.GetAzureADMSPrivilegedRoleAssignment_

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

ID: 51dbe039-2ab8-b9a3-531d-71de3082cf2c
Version Independent ID: 020b443d-d664-9bad-bbc9-74dbe35c8ae2
Content: PowerShell for Azure AD roles in PIM - Azure AD
Content Source: articles/active-directory/privileged-identity-management/powershell-for-azure-ad-roles.md
Service: active-directory
Sub-service: pim
GitHub Login: @curtand
Microsoft Alias: curtand

@arjbholu
Thanks for your feedback! We will investigate and update as appropriate.

@arjbholu I am not seeing any issues running the cmdlet.  Can you please use the cmdlet Get-Module AzureADPreview to provide the version you are using.
Also, as mentioned in the documentation, can you please make sure you have the following banner on the quick start blade of PIM -

@SaurabhSharma-MSFT  Following is the output of the cmdlet:
Binary     <IP_ADDRESS>   AzureADPreview                      {Add-AzureADAdministrativeUnitMember, Add-AzureADApplicationOwner, Add-AzureADApplicationPolicy, Add-AzureADDeviceRegisteredOwner...}
Also, I confirm that I see the given banner in the quickstart

@SaurabhSharma-MSFT any update?
Let me know, we can connect on teams too. I am MS FTE.

I am seeing the same issue 6 months later. Did anything ever get resolved?

Is there any update regarding this issue? i'm still seeing same

hi,
Facing similar issue and it is not working for me as well. same error. could you please share solution.


Net6 2nd try

Updated .NET 6.x skipping integration tests HUT.

Merged 6.x changes skipping HUT

Merge!


[KARAF-4196] Upgrade Cglib to version 3.2.0

Hi all,
This PR is related to:
https://issues.apache.org/jira/browse/KARAF-4196
Andrea

Thanks for this pull request. Btw. As you seem to be working on karaf regularly can you also join the irc channel? It would be easier if there is something to discuss.

Hi Christian,
Yes for sure :-) I will do! :-)


[FEATURE] Consider adding BPR model with a tutorial

Description

Bayesian Personalized Ranking (BPR) is a well-established model for implicit feedback. I would like to contribute a tutorial using BPR model with the usage of Cornac library @ https://github.com/PreferredAI/cornac
Expected behavior with the suggested feature

Other Comments

Definitely agree. Would love to see your contribution. Putting it as a notebook in the  notebooks/02_model section. You can add that as a dependency to the conda environment to support this.

hi @tqtg, it would be nice to have your contribution. Ideally, what we are doing with other algos is to use our dataloaders and splitters.
Then with that data we will put it into your model. Normally we will use model.fit but it can be any other method your library has. Then we will have either model.predict for rating or model.recommend_k_items for ranking. In this part, if the library is already developed, we normally try to add the minimum possible addition. Maybe a good example is the surprise utilities. Here the functions that we have are a small refactoring of the original content of surprise library, but we don't reinvent the wheel here.
And then finally, we will input the results on our ranking or rating metrics.
We have two kinds of algorithm content, one are the quick starts, where we just show quickly how to run an algo. The others are the deep dives, where we explain the math and show an algo implementation.
I think for your case it would be good to do a deep dive.
Please let us know if you need any help in designing the content. We would be happy to help

Thank you for your instructions @miguelgfierro !
I'm working on my PR and will seek your suggestions when I have the first draft.

Since we already have BPR model, I would like to add it to the benchmark notebook. Is it something we are interested in?

yes, definitely. I'll add a separate issue so we can close this out.


state: provide enough balance for all test cycles in the test

Motivation
Closes: https://github.com/spacemeshos/go-spacemesh/issues/2759
Closes: https://github.com/spacemeshos/go-spacemesh/issues/2635
Changes

set a max boundary for amount that can be sent, so that we don't run out of balance during the test

Test Plan
can be reproduce by running tests repeatedly for 100 times
TODO

[ ] Explain motivation or link existing issue(s)
[ ] Test changes and document test plan
[ ] Update documentation as needed

DevOps Notes

[x] This PR does not require configuration changes (e.g., environment variables, GitHub secrets, VM resources)
[x] This PR does not affect public APIs
[x] This PR does not rely on a new version of external services (PoET, elasticsearch, etc.)
[x] This PR does not make changes to log messages (which monitoring infrastructure may rely on)

bors merge


[ST] Linea router down

Describe the bug
The router https://connextscan.io/router/0x58507fed0cb11723dfb6848c92c59cf0bbeb9927 is not completing txns since yesterday.
Example of txns that should get bids from this router: https://connextscan.io/tx/0x0ccd169c648506800eb8c7329db1694cd178990c75e446a62aff0e436bd2a0de

Last tx processed:
https://connextscan.io/tx/0x0ccb6ea9f55fcbbe9e6a37045dd0ce42eb83054f86cfa511378b1747287ede8f
Link to ticket in discord
https://discord.com/channels/454734546869551114/1224837944293199912
@oncall

https://connextscan.io/tx/0xbbdbce23fc58f09da4d72b6ed08f49ffc53bcf7a37c181f924d95f186e86c7cf

this is in review
router-subscriber-logs-3h.txt
router-publisher-logs-3h.txt

https://discord.com/channels/992549151134982234/1223342633393459261

@ekbainova
Dialectic router is still not bidding.
Reviewed the logs, not seeing errors, but also it is not detecting new xcalls.
Asked, them on TG to upgrade to a recent router image
Their config looks ok

https://github.com/connext/monorepo/issues/6062

Today:
https://app.intercom.com/a/inbox/qge2vd8z/inbox/shared/all/conversation/580?view=List
https://app.intercom.com/a/inbox/qge2vd8z/inbox/shared/all/conversation/579?view=List
https://app.intercom.com/a/inbox/qge2vd8z/inbox/shared/all/conversation/576?view=List
https://app.intercom.com/a/inbox/qge2vd8z/inbox/shared/all/conversation/578?view=List
https://app.intercom.com/a/inbox/qge2vd8z/inbox/shared/all/conversation/574?view=List
https://app.intercom.com/a/inbox/qge2vd8z/inbox/shared/all/conversation/575?view=List

removing high for now @ekbainova can you close if needed


MySQL DB scripts for IS 6.0.0-m1 are failing when indexes are created.

Describe the issue:
When creating the tables/indexes in MySQL for identity database, some of them are failing due to following error. Issue is found in the db scripts provided in IS 6.0.0-m1 after introducing the new constraints/indexes.
ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes
How to reproduce:
Create a MySQL database and apply the db scripts provided for identity in $IS_HOME/dbscripts/identity/mysql.sql and $IS_HOME/dbscripts/identity/uma/mysql.sql.
Expected behaviour:
Provided scripts should be creating the tables and indexes without any errors.
Environment information (Please complete the following information; remove  any unnecessary fields) :

Product Version: IS 6.0.0-m1
Database: MySQL

@wenodpathirana If you use mysql 8 then you need to create the database , with charset latin1,to avoid errors while executing db scripts. Can you please confirm whether you did that step
create database regdb character set latin1;

@ShanikaWickramasinghe It was the mysql version 8 and scripts worked without any error after setting the character set to latin1.


More examples

May you please add more examples? Perhaps a simple weather app demonstrating:

making API calls.
unit tests.
recommended project structure (folders, naming conventions, etc).

Have a look at this great example:
https://github.com/felangel/bloc/tree/master/examples/flutter_weather

Hi! 👋
I've got another example app on the back burner (#70), but I could also do a quick API wrapper/a weather app.
Just wanted to touch on this briefly:

recommended project structure (folders, naming conventions, etc).

Aside from capsule naming conventions (xyzCapsule, xyzManager, xyzFactory, xyzAction, xyzAsyncCapsule, and maybe another one or two I'm forgetting that are in the documentation), ReArch is unopinionated with how you structure your code (see #28 for more). Thus, I may take a particular approach in my code, but that doesn't mean I'd recommend everyone use that for their applications.

I'll treat this issue as a tracking issue for an API wrapper sort of app (I'll probably stick with a weather app per your suggestion).

Lmk if you have any questions about https://github.com/GregoryConrad/rearch-dart/tree/main/examples/weather_app!


Any plans to make it available as a Vue component?

Hi @qdoop we don't specifically have plans to do this, but we would be open to accepting contributions from the community. Does Vue work well with React?

Vue is as different from React as Angular. It would be interesting to spin up WebChat-Vue (and/or WebChat-Angular) and see how much code it shares with the current React version of WebCha. It certainly take a very motivated party who understands both React and one of the other libraries.
Personal theory: shared code would be limited to DirectLineJS and style sheets.

i know its closed.
But if someone wants an easy solution for vue.
npm install botframework-webchat --save

then create a vue component like this:
create a folder in your components folder called WebChat.
after that create those files in the folder
index.vue
<template src="./WebChat.component.html"></template>

WebChat.component.js
import { App } from 'botframework-webchat'
import 'botframework-webchat/botchat.css'

export default {
  name: 'web-chat',
  components: { },
  props: ['directLineSecret'],
  data () {
    return {

    }
  },
  computed: {

  },
  mounted () {
    console.log(this.directLineSecret)
    App({
        directLine: { secret: this.directLineSecret },
        user: { id: 'userid' },
        bot: { id: 'botid' },
        resize: 'detect'
      }, document.getElementById("botframework-chat"))
  },
  methods: {

  }
}

WebChat.component.html

WebChat.component.css
.web-chat{
  position: absolute;
  width: 100%;
  height: 100%;
}

Thats all u need for the component.
Now u can use the component.
Dont forget to pass the directLineSecret
usage example:

  <WebChat direct-line-secret="yourSecret_3g9h459gb4etrvo8e4bter4tb"/>

@Wenish Doesn't work with the latest version

@ziad-akiki I wrote a blog post about this topic the idea is to use vuera to include it. Works fine in production for me.

Hi ,
Is custom rendering of this chat Bot supports in Vue.Js

I need Feedback options for the AI Chat Bot for the CDN using it in Vue js


Feature/fix frontend

Fix Application helper - Markdown method
Frase formal para Bem vindo
Fix em base css background
Fix User Profile
Fix User Profile Link

I've prepared a stage to preview changes. Open stage or view logs.

WIP


PCC - Approved Contributors empty.

In the Project control center, when selecting "Approved Contributors", the UI shows "No CLA data available" even when there are contributors who have verified under the company's CCLA.

I believe this was for Tungsten Fabric: https://projectadmin.lfx.linuxfoundation.org/project/a092M00001F1Yv4QAF/tools/easycla/overview/57854295-e49d-4a28-a0ff-2d6d3163378c/signatures
/cla-group/{claGroupID}/corporate-contributors for CLA Group ID: 57854295-e49d-4a28-a0ff-2d6d3163378c

Issue is related to old records where the sigtype_signed_approved_id column is not set.

Resolved by writing a migration script for PROD signatures table that has a missing sigtype_signed_approved_id column value.  No code changes are required.
Ready for re-test @WillsonHG

Looks to be correct now.


Update README.md

Appreciate myself in Readme

Testing the CODEOWNERS file. Though I remembered later on, authors can't review thmselves.


Test on Django 2.2

Added Django 2.2 to the test matrix
Description

Added Django 2.2 to test matrix
Remove Django 2.0 from test matrix, end of support was April 2019
Add migrations to test models to placate Django 2.2
Update trove classifiers

No code changes required to two_factor itself
Motivation and Context

Django 2.2 was missing from the test matrix
How Has This Been Tested?

Django 2.2 has now been added to the test matrix
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[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.

Travis ran but codecov isn't playing ball. I've restarted the build to see if that helps.


fix: missing dependency packaging

Fixes the startup error of backintime{,-qt}:
ModuleNotFoundError: No module named 'packaging'.
Reproduce it locally via nix run nixpkgs#backintime.
Description of changes
Added the 'packaging' to the list of python packages.
Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] 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
[x] 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.

Commit msg should be backintime,backintime-qt: add missing dependency

@snpschaaf this is superseded by #246095 (power of self-merging :p).


Provide an API to exclude or overload AppThemeProvider

Context
On the HP DevEx project, we're using the default Backstage frontend app for the admin interface. The frontend that users see is a different React app in the same monorepo. Each major section of the UI is a separate package that uses the Backstage plugin template. We use @backstage/cli plugin:serve to run each section separately while doing development. We use the dev.tsx file to configure the development environment for each section. Here is what the bootstrap mechanism looks like,
import React from 'react';
import ReactDOM from 'react-dom';
import { createApp } from '@backstage/core-app-api';
import { Section } from '../src';

const app = createApp();
const BackstageProvider = app.getProvider();

const HpDevExApp = ({ children }) => {
   const wrap  = () => {
     // our setup goes here which uses config from app-config.yaml
   };
   return wrap(children);
}

const DevApp: FC<{
  children: ReactNode;
}> = ({ children }: { children: ReactNode }) => {
  return (
    <Suspense fallback={
Loading...
}>
      <BackstageProvider>
        <HpDevExApp>{children}</HpDevExApp>
      </BackstageProvider>
    </Suspense>
  );
};

ReactDOM.render(
  <DevApp>

  </DevApp>,
  document.getElementById('root'),
);

The benefit of this setup is that we're able to use all of the Backstage APIs but use HP's internal component framework. The problem is that <CssBaseline /> messes with CSS from HP's component framework. I would really like to eliminate AppThemeProvider or replace it with another provider.
Currently, we created a patch to remove CSS provided by <CssBaseline /> but it messes with the CSS of our Backstage admin site because that site actually needs those styles.
Feature Suggestion
Make it possible to replace or remove AppThemeProvider from the context tree.
Possible Implementation
The possible API could be something like this,
const app = createApp();
const BackstageProvider = app.getProvider({ AppThemeProvider: ({ children }) =>  children });

We can contribute the change if Backstage team can suggest an API.

The way to customize the app theme is via createApp, similar to how the config works.
When it comes to getting rid of CssBaseline I'm really not sure if that's a good idea 😅. We could however enable it by making the AppThemeProvider a customizable app component, I don't think that would be completely insane given that it also houses the logic for the default theme selection logic.

@Rugvip would you accept a PR that introduces the ability to customize the theme as I described above? If not, what API would you accept? We can put together a PR based on your response.

@taras thank you!
I'd want to go with the app component route, both because that's where we collect these kind of overrides, and also because I hope to get rid of the getProvider API eventually.
So an addition here: https://github.com/backstage/backstage/blob/c9ce2ba317b6860b06a241dc9ece6ad2e5f73dca/packages/core-app-api/src/app/types.ts#L69
Ends up looking something like this:
const app = createApp({
  components: {
    ThemeProvider: ...
  }
})

Needs to be optional ofc, and note the dropped App* prefix as I think it's redundant there.

@Rugvip perfect! We'll work with this.
@minkimcello let's work on this together when you get a chance.

Closed in #7201


Update tooling version to 10.2.2

The latest compiler nuget has shipped to nuget.org.  Updates to the next version to be released.
10.2.2
/cc @pilchie …. branch requires m2 signoff.

@dotnet-bot test Ubuntu16.04 Release_default Build please


feat: allow forum tags to be specified

https://discord.com/developers/docs/resources/webhook?source=post_page---------------------------#execute-webhook-jsonform-params

Inspired by https://github.com/runelite/plugin-hub/pull/7019


fail to build base64Binary type

The generated definition:
type base64Binary []byte

func (b base64Binary) UnmarshalText(text []byte) (err error) {
	*b, err = base64.StdEncoding.DecodeString(string(text))
	return err
}
func (b base64Binary) MarshalText() ([]byte, error) {
	var buf bytes.Buffer
	enc := base64.NewEncoder(base64.StdEncoding, &buf)
	enc.Write([]byte(b))
	enc.Close()
	return buf.Bytes()
}

There are 3 problems:

*b, err = base64.StdEncoding.DecodeString(string(text)) failed as invalid indirect of b (type base64Binary)

MarshalText failed as not enough arguments to return

The corresponding fields actually are not in base64Binary type.

I looked into this further. Besides the easy-to-fix problems in the method template, the xsdgen package does not correctly handle types that extend or restrict any of the non-trivial builtin types (base64Binary, hexBinary, xsdDate, anything in xsdgen/xsdgen.go#L349-L360).
The code that handles these "special" builtins is quite messy, so I'm going to write some tests and try to refactor it.

I'm getting there. My main goal is making the generated types easy to use and hiding all the XML ugliness. A more distant secondary goal is keeping the generated code "simple" (according to my subjective definition of "simple"). Given xsd like this:
<complexType name="MyType">
  <sequence>
    <element name="name" type="string"/>
    <element name="data" type="base64Binary"/>
  </sequence>
</complexType>

The following generated code is fairly simple.
type Base64Binary []byte

func (x *Base64Binary) UnmarshalText(text []byte) error {
	...
}

func (x Base64Binary) MarshalText() ([]byte, error) {
	...
}

type MyType struct {
	Name string `xml:"name"`
	Data Base64Binary `xml:"data"`
}

However, while this is probably one of the more simple approaches, I don't like it for a few reasons:

Looking at the decl for MyType, it's not immediately clear to the user what Data is, how to read it, and how to write it. Since it's called Base64Binary, do I have to encode the bytes I assign to it? (incorrect assumption, the Marshal/Unmarshal methods take are of that)
Why do I need to know about Base64Binary at all? It's an implementation detail and shouldn't pollute my godoc page.

I much prefer a type declaration like this:
type MyType struct {
	Name string
	Data []byte
}

The question is, how do we write the marshal/unmarshal methods? The key challenge is to override the unmarshaling specific fields in a struct without introducing extra types into the public declaration. I've been doing some experimenting, and I think something like this would work: https://play.golang.org/p/wWIXrHIMNU . In short, embed the type in an anonymous type, containing private type overrides for any non-trivial builtins (time, day, month, hexbinary, base64binary etc).
Marshalling seems like an easier problem, but the technique above may prove useful there, too.

After PR #24  I'm pretty happy with the quality of the generated code. The generating code has gotten more messy, but that's OK, it doesn't end up in users' codebases :) . I've only verified that valid Go code is generated for a few examples; I haven't actually tried a Marshal/Unmarshal of real data, so I'll leave this open until I can verify it works for straightforward types.

Thanks for making it happen! We will give a try in a few days.

The tests introduced in #26 exercise marshal/unmarshal for the time, hexBinary, and base64Binary builtins. They uncovered a bug, too, which has been fixed.
One small gotcha with this approach is that it changes the order of the output when marshalling a type back into XML. Any "overrided" types get put at the end, instead of the order they are declared in the XSD. I don't see this being a problem worth working around.
Since this has been tested, I'll close this issue. Feel free to open a new one if you have any problems.


use zsh-defer

Just to leave for reference before it goes unnoticed, zsh-defer (by the author of gitstatus mentioned in https://github.com/zimfw/zimfw/issues/336 ) speeds up starting zsh by running deferred commands after the prompt has shown up (and is idle).

@rjcoelho, zmodule is not called during startup, only when calling zimfw, so no need to defer that.
This should work:

Add zsh-defer as a module, but don't let Zim initialize it inside init.zsh:
zmodule romkatv/zsh-defer -d

and run zimfw install.

Initialize Zim with zsh-defer:
source ${ZIM_HOME}/modules/zsh-defer/zsh-defer.plugin.zsh
PS1='
%F{135}%n%f at %F{166}%m%f in %F{118}%~%f
%(!.#.$) '
RPS1="%F{240}loading%f"
setopt prompsubst
if [[ ${ZIM_HOME}/init.zsh -ot ${ZDOTDIR:-${HOME}}/.zimrc ]]; then
  # Update static initialization script if it's outdated, before sourcing it
  zsh-defer source ${ZIM_HOME}/zimfw.zsh init -q
fi
zsh-defer source ${ZIM_HOME}/init.zsh

Only issue I had with the above was that my PS1 (set by a prompt sourced by the init.zsh script) is updated on the current line, but after executing a command and getting a new prompt line, I get back the PS1 set above before the first call to zsh-defer, instead of my fulll prompt. Not sure what I am missing here.

Yes, somehow loading the prompt zmodule is not deferred correctly.
The only modules that significantly add startup time are those that add a per directory history such as https://github.com/gaoyifan/zsh-prioritize-cwd-history, but they are useful enough to justify it.

I've also tried the following, that seemed to be more fit to how zsh-defer is intended to be used, but I got even more unstable results:
source ${ZIM_HOME}/modules/zsh-defer/zsh-defer.plugin.zsh
PS1='
%F{135}%n%f at %F{166}%m%f in %F{118}%~%f
%(!.#.$) '
RPS1="%F{240}loading%f"
setopt prompsubst
if [[ ${ZIM_HOME}/init.zsh -ot ${HOME}/.zimrc ]]; then
  zsh-defer source ${ZIM_HOME}/zimfw.zsh init -q
fi
while read zline; do
  zsh-defer -c "${zline}"
done < ${ZIM_HOME}/init.zsh
unset zline

In this case I also get "No such widget `history-substring-search-up'" when pressing UP, besides the prompt issue reported in the previous commit.
And in both cases, I noticed that also all that should be defined by the environment module (which is sourced inside init.zsh) is ignored. The history settings don't work (my history is empty instead of read from HISTFILE), and the setopt are not set (when I do setopt, I only get the default ones, and none of those additionally set by the module).

while read zline; do

Should this be while IFS= read -r zline; do ?
Also note that this loop will silently skip the last line if it doesn't end with \n. A more robust way to iterate over all non-empty would be this:
for zline in ${(f)"$(<$ZIM_HOME/init.zsh)"}; do
  ...
done

Yes, somehow loading the prompt zmodule is not deferred correctly.

zsh-defer executes commands from zle in function scope with LOCAL_OPTIONS, LOCAL_PATTERNS and LOCAL_TRAPS options. This breaks some some code. See https://github.com/romkatv/zsh-defer/blob/master/README.md#caveats. I don't know if this explains prompt zmodule breaking. If you find a caveat that isn't documented, please let me know.

Thanks for the clarifications, @romkatv! This explains why the history, the setopt and the prompt configurations are not loaded with zsh-defer.
Just looking from the outside as a user, looks like p10k uses a different approach to load the whole .zshrc while displaying a temporary prompt and letting zle work. I haven't experienced any caveats with p10k.

Just looking from the outside as a user, looks like p10k uses a different approach to load the whole .zshrc while displaying a temporary prompt and letting zle work. I haven't experienced any caveats with p10k.

That's right. Powerlevel10k instant prompt, zsh-defer and zplugin turbo mode solve the same problem -- they remove Zsh startup lag. All of them have caveats but not equal amount thereof. zsh-defer has every caveat of instant prompt plus many more. Zplugin turbo mode has every caveat of zsh-defer plus a few more.
This is why I don't use zsh-defer myself. Since I'm using Powerlevl10k, I have access to instant prompt. It's easier to use (just add a few lines at the top of zshrc without changing anything else), much more reliable, and looks smoother (you get your regular prompt right away without having two different prompts).

With the explained above by @romkatv, I think we should close this as "won't do".


fix(select): compatibility with angular forms API

PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows our
guidelines: https://github.com/goetzrobin/spartan/blob/main/CONTRIBUTING.md#-commit-message-guidelines
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[X] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[X] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] Other... Please describe:

Which package are you modifying?

[ ] accordion
[ ] alert
[ ] alert-dialog
[ ] aspect-ratio
[ ] avatar
[ ] badge
[ ] button
[ ] calendar
[ ] card
[ ] checkbox
[ ] collapsible
[ ] combobox
[ ] command
[ ] context-menu
[ ] data-table
[ ] date-picker
[ ] dialog
[ ] dropdown-menu
[ ] hover-card
[ ] input
[ ] label
[ ] menubar
[ ] navigation-menu
[ ] pagination
[ ] popover
[ ] progress
[ ] radio-group
[ ] scroll-area
[X] select
[ ] separator
[ ] sheet
[ ] skeleton
[ ] slider
[ ] spinner
[ ] switch
[ ] table
[ ] tabs
[ ] textarea
[ ] toast
[ ] toggle
[ ] tooltip
[ ] typography

What is the current behavior?
This PR fixes several issues of the select component if its used together with the angular forms API.
What is the new behavior?

Fixing a NG0600 issue if the value of the select is set from a FormControl
Initial values of a FormControl are correctly passed to the select component
Synchronizing the disabled state with the FormControl
Values from the component are correctly passed back to the ReactiveFormsAPI
The value type depends on the multiple property. If it is true, value is going to be a string array otherwise a normal string
TBD: Displaying an error state depending on the FormControl

Does this PR introduce a breaking change?

[ ] Yes
[X] No

This change is much needed, I was gonna start this myself but saw your draft already. Let me know if I can help to get this ready to be merged.

@badsgahhl - thanks for helping out in trying to fix some of these form issues with Select. I know this is still in draft but I think most of the changes are looking good so far. Only thing I would comment on if its at all possible to avoid the write signals in the effect I think that would be best, but otherwise this is coming along great. As @alexciesielski mentioned let us know if we can do anything to help get this merged!

@badsgahhl - thanks for helping out in trying to fix some of these form issues with Select. I know this is still in draft but I think most of the changes are looking good so far. Only thing I would comment on if its at all possible to avoid the write signals in the effect I think that would be best, but otherwise this is coming along great. As @alexciesielski mentioned let us know if we can do anything to help get this merged!

@thatsamsonkid do you think using untracked is better or are you in general saying that this might cause infinite loops?

@badsgahhl - thanks for helping out in trying to fix some of these form issues with Select. I know this is still in draft but I think most of the changes are looking good so far. Only thing I would comment on if its at all possible to avoid the write signals in the effect I think that would be best, but otherwise this is coming along great. As @alexciesielski mentioned let us know if we can do anything to help get this merged!

@thatsamsonkid do you think using untracked is better or are you in general saying that this might cause infinite loops?

I was just saying in general. Technically it shouldn't have infinite loop issue since I believe listbox change here will now only update the value in the service and then the effect will see that has changed and will update value in root component and trigger change. It should be ok, but I think my preference would be to avoid allowSignalWrite if possible if not, I'm good.

I pushed two commits to improve the mentioned things. I just removed the inner value of the brn-select.component so the whole state is now fully handled by the service. The effect is now only needed to sync the state value back to the forms api.
Otherwise I could need some inspiration of the error state. As I understand the Forms API and already debugged it, Angular places the ng-invalid and ng-touched classes onto the element that is used by the Forms API. In this case those classes are on the hlm-select element. However, the trigger button is three layers below so I really don't know how to make the border red etc. if the brn-select Component is invalid. If anyone has an idea how to do this?

You can inject NgControl in the constructor and check it's valid property. Or use the statusChanges Observable, depending on how you want to access it.
constructor(
   @Optional() @Self() public ngControl: NgControl | null
) {}

// ...

const isValid = this.ngControl.control.valid

Please take into consideration please the problem highlighted in this issue and the demonstration provided in the StackBlitz regarding the select control:
Issue link: https://github.com/goetzrobin/spartan/issues/188#issuecomment-1979262542
StackBlitz demonstration: https://stackblitz.com/edit/github-s5zire?file=src%2Fmain.ts

@badsgahhl let me know if there's anything else we can do to help you get this ready for merging! Thanks for your work on this

You can inject NgControl in the constructor and check it's valid property. Or use the statusChanges Observable, depending on how you want to access it.
constructor(
   @Optional() @Self() public ngControl: NgControl | null
) {}

// ...

const isValid = this.ngControl ? this.ngControl.control.valid : true; // defaulting to `valid` if no ngModel/formControl passed

One thing I noticed here is that ngControl.control is null during the constructor and gets populated later, therefore I can't access the status changes Observable. Will try to find a solution for that, that's the only thing that makes me a headache.

@badsgahhl - Did you try removing @Self, I think its not needed here. I'd be a little surprised if it still didn't resolve after that because ti should be assigned by the time the trigger is created.

Got it. Should be done now.

Ok just for awareness i'll look into making some tests for this hopefully tonight. Thanks!

Awesome @thatsamsonkid I was going to wait for this PR to release the next alpha, but we can also do a follow up PR of tests and I'll try to get this out first thing tomorrow. Since the new release should improve a lot of little pains

Just providing an update, I pushed a fix for the styling to match the shadcn error state and I also fixed the issue with setting the initial values on cdkListbox if anyone wants to check that out. I think there's a few more tests I could write but I think at least my pr solves all the issues I found above for the moment.
One thing I was seeing, I think I will add this in a different PR but we can also add a brn-error/hlm-error directive similar to our label directive so we can fully match the error state style

Alright added tests for all those scenarios. @badsgahhl if you want to take a look at that PR I have in your fork if its all good if you could merge it so it can be part of this PR and then I think we can do a final code review here!

Sorry for taking so long, looked into the things and they look good. Thanks for the testing!
Only one e2e test is currently failing in my setup:
────────────────────────────────────────────────────────────────────────────────────────────────────

  Running:  select/select.cy.ts                                                           (16 of 27)

  select
    default
      1) click on trigger should open and close it content
      √ should close after selecting an option in single mode (749ms)
    multiple
      √ should stay open after selecting an option in multi mode (950ms)
      √ should stay open after selecting an option in multi mode (945ms)
    disabled
      √ should not open if disabled (448ms)
    form validation
      √ should have form validation classes and reflect control status (987ms)
      √ should have form validation classes and reflect control status with label (923ms)
      √ should have form validation classes and reflect control status when assigned with initial value (978ms)
      √ should have form validation classes and reflect control status (757ms)
    scrollable
      √ should be scrollable (1209ms)
    scrollable with sticky headers
      √ should be scrollable with sticky headers (1029ms)

  10 passing (14s)
  1 failing

  1) select
       default
         click on trigger should open and close it content:
     AssertionError: Timed out retrying after 4000ms: expected '<button#brn-select-0--trigger.bg-background.border.border-input.disabled:cursor-not-allowed.disabled:opacity-50.flex.focus:outline-none.focus:ring-2.focus:ring-offset-2.focus:ring-ring.h-10.items-center.justify-between.placeholder:text-muted-foreground.px-3.py-2.ring-offset-background.rounded-md.text-sm.w-56>' to be 'focused'
      at verifySelectSetup (webpack:///./src/integration/select/select.cy.ts:50:0)
      at Context.eval (webpack:///./src/integration/select/select.cy.ts:59:0)

  (Results)

  ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ Tests:        11                                                                               │
  │ Passing:      10                                                                               │
  │ Failing:      1                                                                                │
  │ Pending:      0                                                                                │
  │ Skipped:      0                                                                                │
  │ Screenshots:  1                                                                                │
  │ Video:        false                                                                            │
  │ Duration:     14 seconds                                                                       │
  │ Spec Ran:     select/select.cy.ts                                                              │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘

Will try to fix that, but its reviewable in the meantime.

No worries and sure thing! Thats weird that last test failed for you, all the tests were passing for me before with my last commit. I kicked off the CI job here. Lets see what the results are here.

@badsgahhl - I think we're good seems everything passed here. Just requesting a final review and we should probably be good to merge!

LGTM!

Inquiring whether it's feasible to implement a feature where multiple modes can be checked and unchecked, but changes are only applied upon clicking the "OK" button. Conversely, if the "Cancel" or close button is clicked, no modifications should take effect. As the component's author, is this achievable within the existing framework, or would it necessitate creating a custom version of the select functionality?

Inquiring whether it's feasible to implement a feature where multiple modes can be checked and unchecked, but changes are only applied upon clicking the "OK" button. Conversely, if the "Cancel" or close button is clicked, no modifications should take effect. As the component's author, is this achievable within the existing framework, or would it necessitate creating a custom version of the select functionality?

Are you saying you want a separate dialog that allows you to toggle between a select components multiple or single mode or that you'd like to have the user select multiple values in the select and then only apply them after they click OK?

Would it be possible to make a new release of the select package? @goetzrobin