Updating code to be ESP32 compatible

Hi, WKHarmon, really liked your code, but im struggling to update it to be ESP32 "friendly"
At the moment my changes were:

Modifying the library from ESP8266WiFi.h to WiFi.h
BearSSL changed to WiFiClient leaving the underneath code as it is
Debug: true

Right now my worst nightmare is the GET from aviationweather.gov, the query is being sent but the data received is not being decoded. Only the "default" leds are lightning up (VFR, IFR, etc.)
Here's the editted code if there's something weird looking
`#include <WiFi.h>
#include <FastLED.h>
#include
using namespace std;
#define FASTLED_ESP8266_RAW_PIN_ORDER
#define NUM_AIRPORTS 5 // This is really the number of LEDs
#define WIND_THRESHOLD 30 // Maximum windspeed for green, otherwise the LED turns yellow
#define LOOP_INTERVAL 5000 // ms - interval between brightness updates and lightning strikes
#define DO_LIGHTNING true // Lightning uses more power, but is cool.
#define DO_WINDS true // color LEDs for high winds
#define REQUEST_INTERVAL 900000 // How often we update. In practice LOOP_INTERVAL is added. In ms (15 min is 900000)
#define USE_LIGHT_SENSOR false // Set USE_LIGHT_SENSOR to true if you're using any light sensor.
// Set LIGHT_SENSOR_TSL2561 to true if you're using a TSL2561 digital light sensor.
// Kits shipped after March 1, 2019 have a digital light sensor. Setting this to false assumes an analog light sensor.
#define LIGHT_SENSOR_TSL2561 false
const char ssid[] = "MySsid"; // your network SSID (name)
const char pass[] = "MyVerySecurePassword"; // your network password (use for WPA, or use as key for WEP)
// Define the array of leds
CRGB leds[NUM_AIRPORTS];
#define DATA_PIN    5 // Kits shipped after March 1, 2019 should use 14. Earlier kits us 5.
#define LED_TYPE    WS2811
#define COLOR_ORDER RGB
#define BRIGHTNESS 20 // 20-30 recommended. If using a light sensor, this is the initial brightness on boot.
/* This section only applies if you have an ambient light sensor connected /
#if USE_LIGHT_SENSOR
/ The sketch will automatically scale the light between MIN_BRIGHTNESS and
MAX_BRIGHTNESS on the ambient light values between MIN_LIGHT and MAX_LIGHT
Set MIN_BRIGHTNESS and MAX_BRIGHTNESS to the same value to achieve a simple on/off effect. */
#define MIN_BRIGHTNESS 20 // Recommend values above 4 as colors don't show well below that
#define MAX_BRIGHTNESS 20 // Recommend values between 20 and 30
// Light values are a raw reading for analog and lux for digital
#define MIN_LIGHT 16 // Recommended default is 16 for analog and 2 for lux
#define MAX_LIGHT 30 // Recommended default is 30 to 40 for analog and 20 for lux
#if LIGHT_SENSOR_TSL2561
#include <Adafruit_Sensor.h>
#include <Adafruit_TSL2561_U.h>
#include <Wire.h>
Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345);
#else
#define LIGHTSENSORPIN A0 // A0 is the only valid pin for an analog light sensor
#endif
#endif
/* ----------------------------------------------------------------------- */
std::vector lightningLeds;
std::vector airports({
"LIFR", // 1 order of LEDs, starting with 1 should be KKIC; use VFR, WVFR, MVFR, IFR, LIFR for key; NULL for no airport
"IFR", // 2
"MVFR", // 3
"WVFR", // 4
"VFR", // 5
"SAEZ", // 6
"SADF", // 7
"SAAR", // 8
"SAZM", // 9
"KCVH", // 10
"KWVI", // 11
"KE16", // 12
"SABE" // 80 I limited the number of airports trying to find if the big quantity of airports affected the GET
});
#define DEBUG true
#define READ_TIMEOUT 15 // Cancel query if no data received (seconds)
#define WIFI_TIMEOUT 60 // in seconds
#define RETRY_TIMEOUT 15000 // in ms
#define SERVER "www.aviationweather.gov"
#define BASE_URI "/adds/dataserver_current/httpparam?dataSource=metars&requestType=retrieve&format=xml&hoursBeforeNow=3&mostRecentForEachStation=true&stationString="
boolean ledStatus = true; // used so leds only indicate connection status on first boot, or after failure
int loops = -1;
int status = WL_IDLE_STATUS;
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(74880);
//pinMode(D1, OUTPUT); //Declare Pin mode
//while (!Serial) {
//    ; // wait for serial port to connect. Needed for native USB
//}
pinMode(LED_BUILTIN, OUTPUT); // give us control of the onboard LED
digitalWrite(LED_BUILTIN, LOW);
#if USE_LIGHT_SENSOR
#if LIGHT_SENSOR_TSL2561
Wire.begin(D2, D1);
if(!tsl.begin()) {
/* There was a problem detecting the TSL2561 ... check your connections */
Serial.println("Ooops, no TSL2561 detected ... Check your wiring or I2C ADDR!");
} else {
tsl.enableAutoRange(true);
tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS);
}
#else
pinMode(LIGHTSENSORPIN, INPUT);
#endif
#endif
// Initialize LEDs
FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_AIRPORTS).setCorrection(TypicalLEDStrip);
FastLED.setBrightness(BRIGHTNESS);
}
#if USE_LIGHT_SENSOR
void adjustBrightness() {
unsigned char brightness;
float reading;
#if LIGHT_SENSOR_TSL2561
sensors_event_t event;
tsl.getEvent(&event);
reading = event.light;
#else
reading = analogRead(LIGHTSENSORPIN);
#endif
Serial.print("Light reading: ");
Serial.print(reading);
Serial.print(" raw, ");
if (reading <= MIN_LIGHT) brightness = 0;
else if (reading >= MAX_LIGHT) brightness = MAX_BRIGHTNESS;
else {
// Percentage in lux range * brightness range + min brightness
float brightness_percent = (reading - MIN_LIGHT) / (MAX_LIGHT - MIN_LIGHT);
brightness = brightness_percent * (MAX_BRIGHTNESS - MIN_BRIGHTNESS) + MIN_BRIGHTNESS;
}
Serial.print(brightness);
Serial.println(" brightness");
FastLED.setBrightness(brightness);
FastLED.show();
}
#endif
void loop() {
digitalWrite(LED_BUILTIN, LOW); // on if we're awake
#if USE_LIGHT_SENSOR
adjustBrightness();
#endif
int c;
loops++;
Serial.print("Loop: ");
Serial.println(loops);
unsigned int loopThreshold = 1;
if (DO_LIGHTNING || USE_LIGHT_SENSOR) loopThreshold = REQUEST_INTERVAL / LOOP_INTERVAL;
// Connect to WiFi. We always want a wifi connection for the ESP8266
if (WiFi.status() != WL_CONNECTED) {
if (ledStatus) fill_solid(leds, NUM_AIRPORTS, CRGB::Orange); // indicate status with LEDs, but only on first run or error
FastLED.show();
WiFi.mode(WIFI_STA);
WiFi.hostname("LED Sectional " + WiFi.macAddress());
//wifi_set_sleep_type(LIGHT_SLEEP_T); // use light sleep mode for all delays
Serial.print("WiFi connecting..");
WiFi.begin(ssid, pass);
// Wait up to 1 minute for connection...
for (c = 0; (c < WIFI_TIMEOUT) && (WiFi.status() != WL_CONNECTED); c++) {
Serial.write('.');
delay(1000);
}
if (c >= WIFI_TIMEOUT) { // If it didn't connect within WIFI_TIMEOUT
Serial.println("Failed. Will retry...");
fill_solid(leds, NUM_AIRPORTS, CRGB::Orange);
FastLED.show();
ledStatus = true;
return;
}
Serial.println("OK!");
if (ledStatus) fill_solid(leds, NUM_AIRPORTS, CRGB::Purple); // indicate status with LEDs
FastLED.show();
ledStatus = false;
}
// Do some lightning
if (DO_LIGHTNING && lightningLeds.size() > 0) {
std::vector lightning(lightningLeds.size());
for (unsigned short int i = 0; i < lightningLeds.size(); ++i) {
unsigned short int currentLed = lightningLeds[i];
lightning[i] = leds[currentLed]; // temporarily store original color
leds[currentLed] = CRGB::White; // set to white briefly
Serial.print("Lightning on LED: ");
Serial.println(currentLed);
}
delay(25); // extra delay seems necessary with light sensor
FastLED.show();
delay(25);
for (unsigned short int i = 0; i < lightningLeds.size(); ++i) {
unsigned short int currentLed = lightningLeds[i];
leds[currentLed] = lightning[i]; // restore original color
}
FastLED.show();
}
if (loops >= loopThreshold || loops == 0) {
loops = 0;
if (DEBUG) {
fill_gradient_RGB(leds, NUM_AIRPORTS, CRGB::Red, CRGB::Blue); // Just let us know we're running
FastLED.show();
}
Serial.println("Getting METARs ...");
if (getMetars()) {
  Serial.println("Refreshing LEDs.");
  FastLED.show();
  if ((DO_LIGHTNING && lightningLeds.size() > 0) || USE_LIGHT_SENSOR) {
    Serial.println("There is lightning or we're using a light sensor, so no long sleep.");
    digitalWrite(LED_BUILTIN, HIGH);
    delay(LOOP_INTERVAL); // pause during the interval
  } else {
    Serial.print("No lightning; Going into sleep for: ");
    Serial.println(REQUEST_INTERVAL);
    digitalWrite(LED_BUILTIN, HIGH);
    delay(REQUEST_INTERVAL);
  }
} else {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(RETRY_TIMEOUT); // try again if unsuccessful
}

} else {
digitalWrite(LED_BUILTIN, HIGH);
delay(LOOP_INTERVAL); // pause during the interval
}
}
bool getMetars(){
lightningLeds.clear(); // clear out existing lightning LEDs since they're global
fill_solid(leds, NUM_AIRPORTS, CRGB::Black); // Set everything to black just in case there is no report
uint32_t t;
char c;
boolean readingAirport = false;
boolean readingCondition = false;
boolean readingWind = false;
boolean readingGusts = false;
boolean readingWxstring = false;
std::vector led;
String currentAirport = "";
String currentCondition = "";
String currentLine = "";
String currentWind = "";
String currentGusts = "";
String currentWxstring = "";
String airportString = "";
bool firstAirport = true;
for (int i = 0; i < NUM_AIRPORTS; i++) {
if (airports[i] != "NULL" && airports[i] != "VFR" && airports[i] != "MVFR" && airports[i] != "WVFR" && airports[i] != "IFR" && airports[i] != "LIFR") {
if (firstAirport) {
firstAirport = false;
airportString = airports[i];
} else airportString = airportString + "," + airports[i];
}
}
WiFiClient client;
Serial.println("\nStarting connection to server...");
// if you get a connection, report back via serial:
if (!client.connect(SERVER, 80)) {
Serial.println("Connection failed!");
client.stop();
return false;
} else {
Serial.println("Connected ...");
Serial.print("GET ");
Serial.print(BASE_URI);
Serial.print(airportString);
Serial.println(" HTTP/1.1");
Serial.print("Host: ");
Serial.println(SERVER);
Serial.println("User-Agent: LED Map Client");
Serial.println("Connection: close");
Serial.println();
// Make a HTTP request, and print it to console:
client.print("GET ");
client.print(BASE_URI);
client.print("airportString");
client.println(" HTTP/1.1");
client.print("Host: ");
client.println(SERVER);
client.println("User-Agent: LED Sectional Client");
client.println("Connection: close");
client.println();
client.flush();
t = millis(); // start time
FastLED.clear();
Serial.print("Getting data");

while (!client.connected()) {
  Serial.println("Im not connected");
  if ((millis() - t) >= (READ_TIMEOUT * 1000)) {
    Serial.println("---Timeout---");
    client.stop();
    return false;
  }
  Serial.print(".");
  delay(1000);
}

Serial.println();

while (client.connected()) {
  Serial.println("Im connected pal");
  if ((c = client.read()) >= 0) {
    yield(); // Otherwise the WiFi stack can crash
    currentLine += c;
    if (c == '\n') currentLine = "";
    if (currentLine.endsWith("<station_id>")) { // start paying attention
      if (!led.empty()) { // we assume we are recording results at each change in airport
        for (vector<unsigned short int>::iterator it = led.begin(); it != led.end(); ++it) {
          doColor(currentAirport, *it, currentWind.toInt(), currentGusts.toInt(), currentCondition, currentWxstring);
        }
        led.clear();
      }
      currentAirport = ""; // Reset everything when the airport changes
      readingAirport = true;
      currentCondition = "";
      currentWind = "";
      currentGusts = "";
      currentWxstring = "";
    } else if (readingAirport) {
      if (!currentLine.endsWith("<")) {
        currentAirport += c;
      } else {
        readingAirport = false;
        for (unsigned short int i = 0; i < NUM_AIRPORTS; i++) {
          if (airports[i] == currentAirport) {
            led.push_back(i);
          }
        }
      }
    } else if (currentLine.endsWith("<wind_speed_kt>")) {
      readingWind = true;
    } else if (readingWind) {
      if (!currentLine.endsWith("<")) {
        currentWind += c;
      } else {
        readingWind = false;
      }
    } else if (currentLine.endsWith("<wind_gust_kt>")) {
      readingGusts = true;
    } else if (readingGusts) {
      if (!currentLine.endsWith("<")) {
        currentGusts += c;
      } else {
        readingGusts = false;
      }
    } else if (currentLine.endsWith("<flight_category>")) {
      readingCondition = true;
    } else if (readingCondition) {
      if (!currentLine.endsWith("<")) {
        currentCondition += c;
      } else {
        readingCondition = false;
      }
    } else if (currentLine.endsWith("<wx_string>")) {
      readingWxstring = true;
    } else if (readingWxstring) {
      if (!currentLine.endsWith("<")) {
        currentWxstring += c;
      } else {
        readingWxstring = false;
      }
    }
    t = millis(); // Reset timeout clock
  } else if ((millis() - t) >= (READ_TIMEOUT * 1000)) {
    Serial.println("---Timeout---");
    fill_solid(leds, NUM_AIRPORTS, CRGB::Cyan); // indicate status with LEDs
    FastLED.show();
    ledStatus = true;
    client.stop();
    return false;
  }
}

}
// need to doColor this for the last airport
for (vector::iterator it = led.begin(); it != led.end(); ++it) {
doColor(currentAirport, *it, currentWind.toInt(), currentGusts.toInt(), currentCondition, currentWxstring);
}
led.clear();
// Do the key LEDs now if they exist
for (int i = 0; i < (NUM_AIRPORTS); i++) {
// Use this opportunity to set colors for LEDs in our key then build the request string
if (airports[i] == "VFR") leds[i] = CRGB::Green;
else if (airports[i] == "WVFR") leds[i] = CRGB::Yellow;
else if (airports[i] == "MVFR") leds[i] = CRGB::Blue;
else if (airports[i] == "IFR") leds[i] = CRGB::Red;
else if (airports[i] == "LIFR") leds[i] = CRGB::Magenta;
}
client.stop();
return true;
}
void doColor(String identifier, unsigned short int led, int wind, int gusts, String condition, String wxstring) {
CRGB color;
Serial.print(identifier);
Serial.print(": ");
Serial.print(condition);
Serial.print(" ");
Serial.print(wind);
Serial.print("G");
Serial.print(gusts);
Serial.print("kts LED ");
Serial.print(led);
Serial.print(" WX: ");
Serial.println(wxstring);
if (wxstring.indexOf("TS") != -1) {
Serial.println("... found lightning!");
lightningLeds.push_back(led);
}
if (condition == "LIFR" || identifier == "LIFR") color = CRGB::Magenta;
else if (condition == "IFR") color = CRGB::Red;
else if (condition == "MVFR") color = CRGB::Blue;
else if (condition == "VFR") {
if ((wind > WIND_THRESHOLD || gusts > WIND_THRESHOLD) && DO_WINDS) {
color = CRGB::Yellow;
} else {
color = CRGB::Green;
}
} else color = CRGB::Black;
leds[led] = color;
}`
Thanks a lot and sorry for the inconvenience

Are you running with the serial monitor?
You should be seeing the stations update with the parsed data-
WiFi connecting.......OK!
Getting METARs ...
Starting connection to server...
Connected ...
GET /adds/dataserver_current/httpparam?dataSource=metars&requestType=retrieve&format=xml&hoursBeforeNow=3&mostRecentForEachStation=true&stationString=KIKV,KARB,KTNU,KDTW HTTP/1.1
Host: www.aviationweather.gov
User-Agent: LED Map Client
Connection: close
Getting data
KTNU: MVFR 16G21kts LED 14 WX:
KIKV: IFR 8G17kts LED 12 WX: -SN
KARB: LIFR 6G0kts LED 13 WX: BR
KDTW: IFR 11G17kts LED 50 WX:
knowing if you are getting that data output in the serial monitor would help you understand if you have a problem parsing the response from the server or something with the calls to update the LED states.


Add priorityClassName for the deployments

Summary
We need to prioritize the deployments for the Operator and Connect. Therefor we need the possibility to add a priorityClassName for those deployments.
Use cases
We had the situation where we needed the Operator and Connect to be scheduled prioritized to other applications. While starting a new cluster, we needed the Operator and Connect prior to all other applications so that the secrets become available as soon as possible.
Proposed solution
Adding a priorityClassName for both deployments as prepared in the PR #178
Is there a workaround to accomplish this today?
Not with helm alone.
References & Prior Work
PR in #178

Any information how to keep this topic going?


in re license

To whom it may concern:
Being of the esteemed legal profession, Y U NO LICENSE?
The submitting party of this issue (hereafter "dhrubins") doth herein make such humble request whereby the publishing party of some multiple repositories (hereafter "digitallawyer") do effect the rightful submission of a license to this repository. This hereby concludes the submission of this issue, in toto.

@dhrubins for the avoidance of doubt, are you noting that this repo should have a license (would be MIT) or that a certain license that needs to be included was not?

(I'll fix either way.)

:)
I just noticed it didn't have a license and I'd love to contribute to & use it


contributing.md file

Github will display a link to this file on every issue & PR - might be a good opportunity to highlight some key points and link to other README's (e.g. the one at public/content)

That's a nice idea.

bumping that as stuff like 48 chars for mobile is probably new to potential contributors ;-)

bumping that as stuff like 48 chars for mobile is probably new to potential contributors

quickly submitted #66


DRILL-7406: Update Calcite to 1.21.0

DRILL-7386 - added tests to TestHiveStructs.
DRILL-4527 - the DrillAvgVarianceConvertlet can't be removed without test failures.
DRILL-6215 - switched to prepared statement in JdbcRecordReader.
DRILL-6905 - added test into TestExampleQueries.
DRILL-7415 - Fixed jdbc show tables when 2 tables with same name are present in different schemas.
DRILL-7340 - Fixed jdbc filter pushdown when few jdbc datasources enabled.
Split SqlConverter into multiple source files.
Minor refactorings for jdbc and other places.

Jira: DRILL-7406 .

@vvysotskyi , @paul-rogers  I have updated the PR, please take a look again.


[BUG] Roblox closes when I try to open a game or it takes a long time to load a game. And also the menu during the game freezes for 3 seconds and then returns to normal

Acknowledgement of preliminary instructions

[X] I have read the preliminary instructions, and I am certain that my problem has not already been addressed.

What problem did you encounter?
https://github.com/pizzaboxer/bloxstrap/assets/77170931/364181a1-5916-4949-a031-57bb139de5e5

Have you confirmed that this doesn't happen with the stock Roblox launcher? https://github.com/pizzaboxer/bloxstrap/wiki/Switching-between-Roblox-and-Bloxstrap

Yes I do, it's work normally

What should I do?

Yes I do, it's work normally

What options have you configured in the Bloxstrap Menu?

Issue has been awaiting clarification for over a month, closing as stale. If you have anything further to add, just respond and I'll reopen.


Support custom chain presets

This PR introduces support for custom chain presets through the use of a dynamic SSZ marshaller.
The dynamic SSZ marshaller is available at https://github.com/pk910/dynamic-ssz
It uses reflection to provide flexibility in handling SSZ encoding/decoding, enabling support for custom presets that are not covered by static code generation methods like fastssz.
While reflection-based marshalling is inherently slower than its statically generated counterparts (approximately 10x slower for unmarshalling tasks), I've mitigated this performance impact significantly.
The dynamic marshaller smartly defaults to using static code for encoding/decoding wherever no dynamic specification values are applied, ensuring that the performance penalty is minimized.
In practice, with presets such as minimal, only a small subset of structs (around 5-7) are processed dynamically, with the majority being handled by the faster static code path.
Detailed performance benchmarks can be found in the dynamic-ssz repository.
Given the complexity and the potential performance implications of the dynamic SSZ marshaller, it is not enabled by default. To opt-in for dynamic SSZ marshalling, it can be activated using the http.WithDynamicSSZ(true) parameter
Additionally, to ensure compatibility with non-mainnet presets, I've removed two tests related to committee sizes from the JSON decoding code path.
These tests relied on hardcoded spec values, which would fail under the minimal preset.
Although removing tests is generally not preferred, this trade-off was necessary to support the minimal preset without encountering conflicts with static checks in the JSON path. I hope this adjustment is acceptable :)

PR check fails because 2 tests regarding the committee size check fail.
These tests have been removed from this branch,  but the tests running for this PR are loaded from master

One thing I note is that the module is licensed under a GPL derivative. All of the current direct dependencies are using a more liberal license (BSD,Apache,MPL) so would you consider relicensing under one of these or similar?

I've changed the license of the library to apache-2.0 👍

I'm also unsure of the parameter name. It may not be immediately obvious to someone that dynamic SSZ will create a significant overhead over the static SSZ system, and dynamic often sounds better. Perhaps something like WithCustomSpecification() or similar, although I'm not totally happy with that either. Thoughts on this?

What about WithExperimentalDynamicSSZ() / WithExperimentalSSZ()?
I'm happy with WithCustomSpecification() too, maybe  WithCustomSpecSupport()?

 WithCustomSpecSupport() sounds good.  Looks like there is a rebase required, and a tweak to some of the tests, but after that I can look to merge this.

I've rebased to latest master and renamed the parameter to WithCustomSpecSupport :)
There's one important thing to note with the current implementation:
While go-eth2-client uses the dynamic SSZ library internally when WithCustomSpecSupport is true, there is no way to change the exported MarshalSSZ / UnmarshalSSZ / SizeSSZ / HashTreeRoot methods for each available spec type.
These methods still use the static fastssz code, which is expected to fail when using non-mainnet presets.
Downstream applications need to avoid using these methods when working with non-mainnet presets. Instead, there are corresponding functions available via the dynamic SSZ library (except HashTreeRoot, which is still WIP).
I think this should be documented somewhere,  but I'm not sure where to do?

I think that it makes most sense to document this in WithCustomerSpecSupport, as that way it will be in the code and anyone looking up the function will see the information there.


marketplace.getAllListings filtering & pagination

getAllListings should let you pass in filters: seller address, asset contract address + optional token id.
it should paginate the listings as well. start (starting cursor) + count (number of results)

@ayshptk submitted another review

This has been merged and released.


Error when calling scope with argument (undefined method 'abstract_class?' for Object:Class)

I get an error when using postgres_ext with rapns gem (https://github.com/ileitch/rapns) on Rails 3.2.11. Without postgres_ext it is working perfectly. I've tried both 0.2.0 and 0.2.2.
This is the error:
[2013-02-18 18:44:01] [ERROR] NoMethodError, undefined method 'abstract_class?' for Object:Class
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/model_schema.rb:148:inreset_table_name'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/model_schema.rb:104:in table_name'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/model_schema.rb:228:incolumns'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/postgres_ext-0.2.2/lib/postgres_ext/active_record/relation/predicate_builder.rb:32:in block in build_from_hash'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/postgres_ext-0.2.2/lib/postgres_ext/active_record/relation/predicate_builder.rb:6:ineach'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/postgres_ext-0.2.2/lib/postgres_ext/active_record/relation/predicate_builder.rb:6:in map'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/postgres_ext-0.2.2/lib/postgres_ext/active_record/relation/predicate_builder.rb:6:inbuild_from_hash'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/relation/query_methods.rb:327:in build_where'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/relation/query_methods.rb:136:inwhere'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/postgres_ext-0.2.2/lib/postgres_ext/active_record/relation/query_methods.rb:78:in where_with_chaining'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/querying.rb:9:inwhere'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/rapns-3.1.0/lib/rapns/notification.rb:25:in block in class:Notification'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/scoping/named.rb:180:incall'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/scoping/named.rb:180:in block (2 levels) in scope'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/scoping/default.rb:41:inblock in unscoped'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/relation.rb:241:in block in scoping'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/scoping.rb:98:inwith_scope'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/relation.rb:241:in scoping'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/scoping/default.rb:41:inunscoped'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/scoping/named.rb:180:in block in scope'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/relation/delegation.rb:14:inblock in for_apps'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/relation.rb:241:in block in scoping'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/scoping.rb:98:inwith_scope'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/relation.rb:241:in scoping'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/relation/delegation.rb:14:infor_apps'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/rapns-3.1.0/lib/rapns/daemon/feeder.rb:44:in block in enqueue_notifications'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/rapns-3.1.0/lib/rapns/daemon/database_reconnectable.rb:16:inblock in with_database_reconnect_and_retry'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/activerecord-3.2.11/lib/active_record/connection_adapters/abstract/connection_pool.rb:129:in with_connection'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/rapns-3.1.0/lib/rapns/daemon/database_reconnectable.rb:15:inwith_database_reconnect_and_retry'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/rapns-3.1.0/lib/rapns/daemon/feeder.rb:41:in enqueue_notifications'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/rapns-3.1.0/lib/rapns/daemon/feeder.rb:14:instart'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/rapns-3.1.0/lib/rapns/daemon.rb:52:in start'
/Users/xxx/.rvm/gems/ruby-1.9.3-p374/gems/rapns-3.1.0/lib/rapns/push.rb:9:inpush'
Any idea what can cause this?

same error with a combo of ransack and postgres_ext:


morph targets are not implemented

Implement morph targets, which should help with https://github.com/kcoley/gltf2usd/issues/17

I was under the impression USD(Z?) only supports keyframe and skeletal animation, not morph targets / blend shapes. Have you found docs or examples to suggest otherwise?

@donmccurdy with their latest release before SIGGRAPH, they added support for skeletons and morph targets.  Here is a link to some of their Doxygen documentation: https://graphics.pixar.com/usd/docs/api/_usd_skel__schemas.html#UsdSkel_BlendShape

Awesome, thanks!

@kcoley Is blendshapes working already for USDZ?

@enzyme69 I'm working on it in #16. If you want to see my progress, you can check out this branch.

@kcoley  Blend Shapes has partial support now in USD v19.05. With some great help in the usd interest group I managed to get @ox morphedCube.usda test file working.
I've attached the working usda file as zip.
In the original usda file these timecode below were wrongly set to 0
endTimeCode =  101
startTimeCode =1

and rel skel: animationSource =  was added to the correct location below.
def Skeleton "skel"
            {

               rel skel:animationSource = <anim>

                def SkelAnimation "anim"

to run the usda file in usdview use command line:

There is also another problem on the MacOS installed of v19.05

to get the morphed targets rendering in the viewer

you need to open the interpreter and enter the following:

from pxr import UsdSkel
UsdSkel.BakeSkinning(usdviewApi.stage.Traverse())

you also need to make sure you've pushed "play" on the animation

[morphedCube.usda.zip](https://github.com/kcoley/gltf2usd/files/3066084/morphedCube.usda.zip)

@kcoley I've attached what the current version of gltf2usd produces with the same archive animatedMorphCube.gltf usda attached below as zip file.
Apart from the issues I posted above. It is also missing the blendShapeWeights.timeSamples data for some reason?
float[] blendShapeWeights.timeSamples = {
                        0: [0, 0],
                        1: [0.00128, 0],
                         .....
                         100: [0, 0.00506],
                        101: [0, 0],

Current_animatedMorphCube.usda.zip


clearified how friendship should work, and moved comment: CommentID o…

fixed few things our team was not clear on the friend relationship, and move the comment for object id to the appropriate field in example like object.

Thanks!


Cannot download for Windows

When trying to download the lastest stable version on https://atom.io/ it redirects to https://github.com/atom/atom/releases/tag/v1.60.0
https://github.com/atom/atom/discussions/ shows 404 error

This is the releases page. Under the text, you can see the "Assets" page, where you can find several files.
The one your probably looking for is "AtomSetup.exe".


Fix test_load_dataset_distributed_with_script

Fix #6796.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


Edit Footer Groups

[x] Question
[ ] Bug
[ ] Enhancement

I am not able to figure out how to edit the groups in the footer list.  I would like to change there names to somthing else.  I am new to this.

The easy way, edit a given list item in the PnP-PortalFooter-Links list. You will find a dropdown field, PnPPortalLinkGroup, that also allows for new custom values. If you add a new group name, that will appear in the list view and be used elsewhere.

This field is being driven by a Content Type, PnPPortalLink, found in the Content Type Group, "PnP Content Types". You could update the site column there, just ensure that updates get applied to lists already using the content type.

Got it working thanks for the guidance.


Create API for v.2.0 (close #558)

This PR involves several changes to the API:

Separate interface classes (new Configuration/Controller classes) from business logic (Tracker, Emitter, Subject, etc.)
Transform Events in pure configuration objects
Move to a Swift suitable builder pattern
Improve Swift interoperability indicating specific class and method names
Introduce a first seed of dependency injection (SPServiceProvider)

I'll separately prepare a clip (or documentation) to explain more in detail the changes introduced in this massive PR.

And one final comment, I like the new folder structure but I find it odd that everything is inside the internal folder. Is there a reason for this? In my mind internal is more "private" API vibes vs "public" stuff but internal is where everything lives. I guess I'm just curious where the naming comes from :-)

And one final comment, I like the new folder structure but I find it odd that everything is inside the internal folder. Is there a reason for this? In my mind internal is more "private" API vibes vs "public" stuff but internal is where everything lives. I guess I'm just curious where the naming comes from :-)


Not persistent across reboots

Thanks for making this script available. I have followed the setup instructions and upon reboot (regardless of sysctl.conf setting for 0 instead of 1024 the DSM seems to be resetting it to defaults).
Here is some basic debugging after a reboot, note I installed using the script run as root (sudo -i) before rebooting.
myuser@sin:/$ sudo -i
root@sin:~# date
Sat Feb  3 03:29:12 AM EST 2024
root@sin:~# uptime
 03:29:14 up 1 min,  1 user,  load average: 5.34, 1.84, 0.66 [IO: 3.79, 1.22, 0.43 CPU: 1.55, 0.62, 0.23]
root@sin:~# cat /etc/sy
synoappprivilege.db     synoinfo.conf.16tlG0    synotoprc               sysctl.conf
synoautoblock.db        synopackageslimit.conf  synouser.conf           syslog-ng/
synoinfo.conf           synosyslog/             sysconfig/              systemd/
root@sin:~# cat /etc/sysctl.conf
kernel.panic = 3
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse  = 1
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
kernel.syno_forbid_console=0
kernel.syno_forbid_usb=0
net.ipv6.conf.default.accept_ra_defrtr=0
net.ipv4.conf.default.accept_redirects=0
net.ipv6.conf.default.accept_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv6.conf.default.accept_ra=0
dev.flashcache_shared_cache_vg1_alloc_cache_1+volume_1.skip_seq_thresh_kb="0"
(failed reverse-i-search)`dev': ^Cte
root@sin:~# /volume1/data/synology/scripts/
@eaDir/            syno_app_mover.sh  syno_seq_io.sh
root@sin:~# /volume1/data/synology/scripts/syno_seq_io.sh
Synology_enable_sequential_IO v1.0.1 - by 007revad

See https://github.com/007revad/Synology_enable_sequential_IO

Setting a cache's skip_seq_thresh_kb to 0 enables sequential I/O
Choose a volume with a cache to edit:
---------------------
Cache Volume  Setting
---------------------
1)  volume_1  1024
---------------------
Select cache volume to edit: 1

You selected volume_1 to set to 0

Sequential I/O for volume_1 cache is enabled.

The Synology needs to restart.
Type yes to reboot now.
Type anything else to quit (if you will restart it yourself).

My workaround for now.
root@sin:~# cat /proc/sys/dev/flashcache_shared_cache_vg1_alloc_cache_1+volume_1/skip_seq_thresh_kb
1024
root@sin:~# echo "0" > /proc/sys/dev/flashcache_shared_cache_vg1_alloc_cache_1+volume_1/skip_seq_thresh_kb
root@sin:~# cat /proc/sys/dev/flashcache_shared_cache_vg1_alloc_cache_1+volume_1/skip_seq_thresh_kb
0

Verified working; otherwise the NAS won't write to nvme sequential IO (7GB linux dvd iso)

Are you using DSM 7.2.1 Update 4?

Are you using DSM 7.2.1 Update 4?

No.
DSM 7.2.1-69057 Update 3 (Release notes) on DS1522+

I am seeing the same issue and I am running DSM 7.2.1-69057 Update 3 on DS1823xs+
After running the script and setting to 0 I immediately re-run the script and I still see a value of 1024.
# ./syno_seq_io.sh
Synology_enable_sequential_IO v1.0.1 - by 007revad

See https://github.com/007revad/Synology_enable_sequential_IO

Setting a cache's skip_seq_thresh_kb to 0 enables sequential I/O
Choose a volume with a cache to edit:
---------------------
Cache Volume  Setting
---------------------
1)  volume_1  1024
---------------------
Select cache volume to edit: 1

You selected volume_1 to set to 0

Sequential I/O for volume_1 cache is enabled.

The Synology needs to restart.
Type yes to reboot now.
Type anything else to quit (if you will restart it yourself).
<no reboot>

# cat /proc/sys/dev/flashcache_shared_cache_vg1_alloc_cache_1+volume_1/skip_seq_thresh_kb
1024

# ./syno_seq_io.sh
Synology_enable_sequential_IO v1.0.1 - by 007revad

See https://github.com/007revad/Synology_enable_sequential_IO

Setting a cache's skip_seq_thresh_kb to 0 enables sequential I/O
Choose a volume with a cache to edit:
---------------------
Cache Volume  Setting
---------------------
1)  volume_1  1024
---------------------
Select cache volume to edit: 1

You selected volume_1 to set to 0

Sequential I/O for volume_1 cache is enabled.

But if I run:
echo "0" > /proc/sys/dev/flashcache_shared_cache_vg1_alloc_cache_1+volume_1/skip_seq_thresh_kb

And then run the script immediately after (no reboot) I see it correctly set to 0:
# ./syno_seq_io.sh
Synology_enable_sequential_IO v1.0.1 - by 007revad

See https://github.com/007revad/Synology_enable_sequential_IO

Setting a cache's skip_seq_thresh_kb to `0` enables sequential I/O
Choose a volume with a cache to edit:
---------------------
Cache Volume  Setting
---------------------
1)  volume_1  0
---------------------
Select cache volume to edit: q
Invalid choice! q

But then if I reboot it goes back to 1024.
# cat /proc/sys/dev/flashcache_shared_cache_vg1_alloc_cache_1+volume_1/skip_seq_thresh_kb
1024

# ./syno_seq_io.sh
Synology_enable_sequential_IO v1.0.1 - by 007revad

See https://github.com/007revad/Synology_enable_sequential_IO

Setting a cache's skip_seq_thresh_kb to 0 enables sequential I/O
Choose a volume with a cache to edit:
---------------------
Cache Volume  Setting
---------------------
1)  volume_1  1024
---------------------

I've worked around this by using a scheduled boot task to run:
echo "0" > /proc/sys/dev/flashcache_shared_cache_vg1_alloc_cache_1+volume_1/skip_seq_thresh_kb

@TheLinuxGuy @skupjoe
My Internet was down for 4 hours today so I had time to work on this script. The version I'm working on:

Includes echo "0" > /proc/sys/dev/flashcache_shared_cache_vg1_alloc_cache_1+volume_1/skip_seq_thresh_kb for the selected volume.
Does not need a reboot after running running the script due to point 1.

I'm currently working on making it possible to schedule the script to run a boot with an option to specify the caches you want set to sequential I/O.

New version of the script here: https://github.com/007revad/Synology_enable_sequential_IO/releases/tag/v2.0.3
It needs to be scheduled to run as root at boot, with the --volumes=volume_n option.
See readme: https://github.com/007revad/Synology_enable_sequential_IO
and how to scheduled: https://github.com/007revad/Synology_enable_sequential_IO/blob/main/how_to_schedule.md


v4.2.1: I can't open ER diagram or tables anymore

Most of the items I try to double click just expend. No ERD or table view opens. This is a major bug to me. I just updated and reset views and perspectives. Nothing helps. Of course I also restarted DBeaver.

This is just a change in default double click behavior, it is configurable. See #2160

Maybe there should be a small popup for first time which inform you about changes in default behaviour. Not everyone reads changelogs and this time I hadn't the time to do it so I skipped it. I didn't expect a default behaviour change.


The Download WP2Static is not sending link for download

checked all spam folders and tried with different email for some days, but still no email is received.
Stucked in using manual install too,
Have downloaded the repo, install composer, successfully ran composer install but then stuck in composer-build with error: The system cannot find the path specified.
Could you please send me the link for downloading the plugin directly? Thank you.

I'm having the same problem with the download form.
@leonstafford please can you post the download link here / look into the form?

Experiencing the same issue.

I had this issue and just changed to a different email address.  When I provided a gmail address, I received it right away.


[BUG] Button gets pressed on mouse hover with crossterm

Describe the bug
Hovering over a button presses it when using the crossterm backend. Termion has the correct behavior.
To Reproduce

cursive = { version = "0.20.0", default-features = false, features = ["crossterm-backend"] }

Use the example code:

use cursive::views::{Dialog, TextView};

fn main() {
    // Creates the cursive root - required for every application.
    let mut siv = cursive::default();

    // Creates a dialog with a single "Quit" button
    siv.add_layer(Dialog::around(TextView::new("Hello Dialog!"))
                         .title("Cursive")
                         .button("Quit", |s| s.quit()));

    // Starts the event loop.
    siv.run();
}

Touch the quit button with the mouse cursor.

Expected behavior
Nothing happens unless I left-click.
Environment

macOS Sonoma 14.0, M1 pro
Backend: crossterm
Current locale:

LANG=""
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

Cursive version: 0.20

Hi, and thanks for the report!
I'm unable to reproduce the issue so far, running on a M1 pro laptop on Sonoma 14.2.1.
What version of crossterm is in Cargo.lock?

Hi! 0.25.0

I still cannot reproduce it, either with the default terminal app, or with alacritty.
Does the issue still exist when running from this git main branch? (It should use crossterm 0.27.0).

Huh, I ran the app from Terminal, and it worked as expected. The problem only happens if I run the app from the terminal in my IDE.


Datarace temporary fix

issue #67 Describes a data race in the application. Here's a workaround until the real problem is solved.

Looks good to me too. If this is temporary, is there an issue for a less temporary fix?


Small fixes for Sample

builds in Rider on Manjaro Linux
adjusts config for CORS so localhost is whitelisted
updates Dockerfile for web so the npm package is installed

Thanks!


Linux + macOS (hopefully) Manual support

It's the end of the semester, I await graduation, and yet time moves slower, so I present you this documentation that I can use to amplify my portfolio \(ˆ˚ˆ)/
PR essentially adds a manual for hax command on Linux (tested) and macOS (untested) devices. Cannot test Command Prompt or PowerShell at the moment because they seem to hate locally installed NPM packages, so if this gets approved then I can update and test for Windows manual support at a later time. I plan to continue working on this manual to make sure it looks consistent and gets improved descriptions and anything else it needs, just wanted to get it pulled into the main repo to test Windows stuff along with getting it out there since it is more or less "content complete".
Context if you don't know
Linux (and I think macOS) have support for the man command, which will open a manual in the terminal for whatever command you put after man. For example, typing man ls will list the manual for the ls command, showing all the flags and other fancy options that can be used, and is meant to be a more in-depth set of instructions than a --help flag.
What this adds

Synopsis showing how to lay out a hax command
Description detailing what HAX is, and what the CLI can do
Options pulled from the --help flag, with slight modifications to be a bit more detailed
Example commands pulled from the README.md file
Instructions detailing how to report bugs via the HAX GitHub Issues Queue
Links to the haxtheweb.org site, CLI repository, and web components repository (to encourage people to check them out and possibly contribute)
Authors links connecting to the GitHub contributor graphs for the CLI and Web Components repos (waaaay easier than updating names manually).
Additions to README detailing how to fix some possible PowerShell issues when running hax command, mainly based around ExecutionPolicy.
man field in package.json which tells man command where to find the manual file for hax.

What it looks like on my terminal (WSL)

"It WoRkS oN mY mAcHiNe!"
Also can confirm this works with local installation (npm install -g .) in root project folder, then running man hax, which is how I got the screenshot above.

this is awesome Zach, appreciate it! never knew package supported man command


Example ImageJ Script with N5 Data and Documentation

Write a script that uses the N5 data viewer plugin, and does some processing on it to display the capabilities of this plugin within a real world example.

Also have some one or two page documentation that gives the essentials of what N5 is, how it works, and some other information that may be useful for the users.


[TRAVEL] Landing-page header/hero/search

Adds header and functional hero and search components to the Travel template.

LGTM 👍


Remove big from tests and replace it with public docker images

This will let folks run the test setup without Banno specific tools.
See: https://github.com/Banno/terraform-provider-marathon/pull/37

Nice!

retest this please

retest this please

retest this please

@sherzberg or @DustinChaloupka could you try running this locally? For some reason the marathon image isn't able to connect to the python port. I can get into the image and curl it fine though.

replaced by https://github.com/Banno/terraform-provider-marathon/pull/43

@adamdecaf Just a note that the PR linked only removes references to big, it still uses some images that are only in the Banno private registry.

I don't think there was anything specific except for some certs though. We should be able to grab the image references from this PR and use them in the compose file.


[BUG] Restricted admin can't see cluster in removing status

Describe the bug

Restricted admin can't see cluster in removing status
To Reproduce
Steps to reproduce the behavior:

Import Harvester into rancher
Create RKE2 cluster in Node driver
Create RKE1 cluster in Node driver
Create restricted admin user
Delete RKE1 and RKE2 cluster
log out as admin
Log in as restricted admin
Check cluster management cluster list page

Expected behavior

clusters should show up
Support bundle

supportbundle_f640d504-eb80-4df5-a6b0-acccf5932679_2022-05-06T23-04-33Z.zip
Environment:

Harvester ISO version: v1.0.2-rc1
Rancher version: v2.6.5-rc8 single node docker instance
Underlying Infrastructure (e.g. Baremetal with Dell PowerEdge R630): 3 node vagrant libvirt setup

Additional context
Add any other context about the problem here.

Hi @noahgildersleeve, I think the issue has already been fixed in Rancher v2.8.5. I can't reproduce it.

Tested in Harvester master-09f3ca1-head and Rancher v2.8.5. Verified as fixed.


Update GenerateNuSpec.GetContentFilesIncludePath

Don't duplicate file name in return from GetContentFilesIncludePath.
Seems to fix issue in https://github.com/nuproj/nuproj/issues/261

Could you add linked file to CreatePackage_SetContentFilesMetadata unit test scenario?

@kovalikp Let me take a look at that; I had unit test failures when running build.cmd after forking that I haven't tracked down.

Any chance you've overcome something like the following and have pointers?
From output of build.cmd
xUnit.net MSBuild Runner (32-bit .NET 4.0.30319.42000)
    Discovering: NuProj.Tests
    Discovered:  NuProj.Tests
    Starting:    NuProj.Tests
C:\aa\git\dls314\nuproj\src\NuProj.Tests\Infrastructure\MSBuild.cs(22): error : DotNet_CanPackage [FAIL] [c:\aa\git\dls
314\nuproj\tools\tests.proj]
        System.IO.FileLoadException : Could not load file or assembly 'System.Collections.Immutable, Version=<IP_ADDRESS>,
  Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definit
  ion does not match the assembly reference. (Exception from HRESULT: 0x80131040)
             at NuProj.Tests.Infrastructure.MSBuild.<ExecuteAsync>d__2.MoveNext()
             at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachi
  ne)
             at NuProj.Tests.Infrastructure.MSBuild.ExecuteAsync(String projectPath, String[] targetsToBuild, IDictiona
  ry`2 properties, ITestOutputHelper testLogger)
          C:\aa\git\dls314\nuproj\src\NuProj.Tests\Infrastructure\MSBuild.cs(22,0): at NuProj.Tests.Infrastructure.MSBu
  ild.RebuildAsync(String projectPath, String projectName, IDictionary`2 properties, ITestOutputHelper testLogger)
          C:\aa\git\dls314\nuproj\src\NuProj.Tests\Infrastructure\Scenario.cs(62,0): at NuProj.Tests.Infrastructure.Sce
  nario.<RestoreAndBuildPackagesAsync>d__2.MoveNext()
          --- End of stack trace from previous location where exception was thrown ---
             at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
             at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
          C:\aa\git\dls314\nuproj\src\NuProj.Tests\Infrastructure\Scenario.cs(44,0): at NuProj.Tests.Infrastructure.Sce
  nario.<RestoreAndBuildSinglePackageAsync>d__1.MoveNext()
          --- End of stack trace from previous location where exception was thrown ---
             at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
             at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
          C:\aa\git\dls314\nuproj\src\NuProj.Tests\DotNetTests.cs(24,0): at NuProj.Tests.DotNetTests.<DotNet_CanPackage
  >d__2.MoveNext()
          --- End of stack trace from previous location where exception was thrown ---
             at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
             at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
          --- End of stack trace from previous location where exception was thrown ---
             at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
             at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
          --- End of stack trace from previous location where exception was thrown ---
             at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
             at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

The only thing I can see is that the appveyor build's not running the same way that build.cmd is, but still, when I run the build command from appveyor "%ProgramFiles(x86)%\MSBuild\14.0\Bin\MSBuild.exe" /nologo /m /v:m /nr:false /flp:verbosity=detailed /p:SkipTests=True and change to /p:SkipTests=False I get the same failures.
Any how to set up your build environment notes would be appreciated.

I think easiest would be to run the test from VS using Test Explorer.

Got the tests worked out after installing Wix.
Good call on looking at them; the fix I had previously breaks the normal case where you're specifying a ContentFile element to NuProj w/o a Link statement.
I'll close this pull; the fix for https://github.com/nuproj/nuproj/issues/261 needs to be more subtle and keep the old behavior in case there/s no Link statement.


Add riscv64 target for OpenSSL_1_1_1

Just add riscv64 config.

@t8m  Hi Tomáš, can you review this pr?

Unfortunately this would require an exception from OTC/OMC as 1.1.1 is bug fix only.

The change has been merged to master via #14723

Does this need a hold?

We've allow similar changes in the past but the OTC should confirm I think.

We've allow similar changes in the past but the OTC should confirm I think.

Hi paulidale
How to get OTC to confirm ?

We've allow similar changes in the past but the OTC should confirm I think.

As a rule, we consider this type of change "new feature" and therefore not applicable on release branches.  We have occasionally made an exception to this rule, as per OMC decision / vote.

We have occasionally made an exception to this rule, as per OMC decision / vote.

Recent example: https://github.com/openssl/openssl/pull/12369, see discussion there on how that was eventually resolved.
I think new architectures that need no adaptation of code (but can be implemented by just adding a config) should get a pass for maintenance branches (especially if the next release is still a while away).

I switch to the OMC decision label, to follow the example set by #12369, which @h-vetinari so kindly reminded us of.

This PR is in a state where it requires action by @openssl/omc but the last update was 30 days ago

This PR is in a state where it requires action by @openssl/omc but the last update was 61 days ago

The vote has passed, this can be merged to 1.1.1.

24 hours has passed since 'approval: done' was set, but this PR has failing CI tests.  Once the tests pass it will get moved to 'approval: ready to merge' automatically, alternatively please review and set the label manually.

Squashed the commits and merged to 1.1.1. Thank you for your contribution.


Error in angr example

I was trying out the example that you have for angr, and it seems a refactor a while ago didn't quite work. This line shouldn't say
show_message_box("Angr Solve", "You have not specified a goal instruction.\n\n" +
	"Please right click on the goal instruction and select \"Find Path to This Instruction\" to " +
	"continue.", MessageBoxButtonSet.OKButtonSet, MessageBoxButtonSet.ErrorIcon)

but should say
show_message_box("Angr Solve", "You have not specified a goal instruction.\n\n" +
	"Please right click on the goal instruction and select \"Find Path to This Instruction\" to " +
	"continue.", MessageBoxButtonSet.OKButtonSet, MessageBoxIcon.ErrorIcon)

specifically MessageBoxButtonSet.ErrorIcon -> MessageBoxIcon.ErrorIcon
Unless there is actually an error icon button but it isn't being imported, or perhaps I'm doing something wrong?

Nope, that's definitely a typo. If you want, you could file a PR to fix it 😃

Made #730
Also, it's commit 500, woohoo!

Fixed in builds > 1.0.811


MXML Incrorrect header

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
		  xmlns:s="library://ns.adobe.com/flex/spark"
		  xmlns:mx="library://ns.adobe.com/flex/halo"
</s:Application>

Halo - is graphic theme mx. spark & mx - is core. You can not inherit from the core of the spark and the graphic theme "mx". It is more appropriate to inherit from the core.
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
		  xmlns:s="library://ns.adobe.com/flex/spark"
		  xmlns:mx="library://ns.adobe.com/flex/mx"
</s:Application>

If you still want to leave inheritance from the "halo," then add:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
		  xmlns:s="library://ns.adobe.com/flex/spark"
		  xmlns:mx="library://ns.adobe.com/flex/mx"
		  xmlns:halo="library://ns.adobe.com/flex/halo"
</s:Application>

fixed via #2024 ?


docs(type): add Typography docs

Resolves #142
Impact: minor
Type: docs

Component

Docs: Type

Screenshots
https://deploy-preview-197--stoic-hodgkin-c0179e.netlify.com/#!/Typography
Testing

Read https://deploy-preview-197--stoic-hodgkin-c0179e.netlify.com/#!/Typography + Compare with Zeplin

🚀 Preview deployed
Built with commit af7b2e49c132c4b26aa21cfd9467364530f1b39f
https://deploy-preview-197--stoic-hodgkin-c0179e.netlify.com

@cassytaylor fixes!!

Looks great! Thank youuu

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Helm values.schema.json validation not working with boolean and numeric env vars types

Hi,
first of all I'm using Quarkus 3.1.2.Final and Quarkiverse Helm 1.0.8.
For the configuration file, I'm not using application.properties, but application.yml (https://quarkus.io/guides/config-yaml).
Today I wanted to make a clean configuration for the new values.schema.json file, for example for the Quarkus runtime property QUARKUS_MAILER_PORT.
As this is a port number, the type must be an integer and must be between 0 (or 1 as 0 is a reserved port) and 65535.
As boolean and numeric types must be quoted for K8s Pod environment variables, I added the following workaround with an expression
# Specifiy the env var for the Deployment
quarkus.kubernetes.env.vars.QUARKUS_MAILER_PORT=${quarkus.mailer.port}

# Fix the quoting (https://helm.sh/docs/chart_template_guide/functions_and_pipelines/#pipelines), else we get the error message below
quarkus.helm.expressions.QUARKUS_MAILER_PORT.path=(kind == Deployment).spec.template.spec.containers.(name == my-container).env.(name == QUARKUS_MAILER_PORT).value
quarkus.helm.expressions.QUARKUS_MAILER_PORT.expression={{ .Values.app.envs.MAIL_FOLDER_MAIL | quote }}

If we do not add this workaround, the Helm deploy or the K8s Deployment fails with
Deployment in version "v1" cannot be handled as a Deployment:
  json: cannot unmarshal number into Go struct field EnvVar.spec.template.spec.containers.env.value of type string

// OR

Deployment in version "v1" cannot be handled as a Deployment:
  json: cannot unmarshal bool into Go struct field EnvVar.spec.template.spec.containers.env.value of type string

For the Helm values.schema.json validation, I added the following properties
quarkus.helm.values-schema.properties.QUARKUS_MAILER_PORT.name=app.envs.QUARKUS_MAILER_PORT
quarkus.helm.values-schema.properties.QUARKUS_MAILER_PORT.type=integer
quarkus.helm.values-schema.properties.QUARKUS_MAILER_PORT.minimum=1
quarkus.helm.values-schema.properties.QUARKUS_MAILER_PORT.maximum=65535

but no matter what I try, the value in the values.yaml is always generated as a string
---
app:
  envs:
    QUARKUS_MAILER_PORT: "25"
# The rest of the YAML was removed for brevity

therefore, the schema Helm values.schema.json validation fails with

when I want to deploy the Helm instance.
In my YAML application.yml instead of application.properties the K8s/Helm configuration is configured as follows (many unrelated properties are missing in this example for brevity):
quarkus:
  kubernetes:
    env:
      vars:
        # Quarkus Mailer
        QUARKUS_MAILER_HOST: ${quarkus.mailer.host}
        QUARKUS_MAILER_PORT: ${quarkus.mailer.port}
        QUARKUS_MAILER_FROM: ${quarkus.mailer.from}
  helm:
    values-schema:
      properties:
        QUARKUS_MAILER_PORT:
          name: app.envs.QUARKUS_MAILER_PORT
          type: integer
          minimum: 1
          maximum: 65535
    expressions:
      QUARKUS_MAILER_PORT:
        path: (kind == Deployment).spec.template.spec.containers.(name == my-container).env.(name == QUARKUS_MAILER_PORT).value
        expression: "{{ .Values.app.envs.QUARKUS_MAILER_PORT | quote }}"

Unfortunately, the mapping of env var types only works for string types because system properties are String based properties.
Alternatively, what you can do is:
quarkus.mailer.port=${app.mailerPort}
quarkus.helm.values.mailerPort.value-as-int=1000
quarkus.helm.values-schema.properties.mailerPort.minimum=1
quarkus.helm.values-schema.properties.mailerPort.maximum=65535
quarkus.helm.values-schema.properties.mailerPort.type=integer

Quarkus Helm will bind the Quarkus property with the Helm values automatically by you, so you don't need to provide the path.
Can you give it a try? I hope it helps!

I've created a new example to better explain how to map properties that are not a string.
Feel free to have a look into this.


Add addresses in Waco, TX

Status:

[ ] Research sources and propose best source (and it's data license)
[ ] Review proposed source
[ ] Approve source based on review comments
[ ] Add to OpenAddresses

NOTE: Proposed source notes should include basic column mapping to OpenAddress data model.

parcels: http://gis.ci.waco.tx.us/arcgis/rest/services/Parcels/MapServer/0


Render text to image

What are you trying to achieve?
Processes text like a browser, with automatic line breaks.
Have you searched for similar feature requests?
Yes, no relevant results were found.
What would you expect the API to look like?
sharp({
  create: {
    width: 300,
    height: 200,
    channels: 4,
    background: { r: 255, g: 0, b: 0, alpha: 0.5 }
  }
}).text('is very long text , this width max width is 1000',{fontSize:'24px',font:'arial'}).png()

What alternatives have you considered?
I know that there are some image libraries that can handle such as pango it is a solution for linux image interface
Is there a sample image that helps explain?
none

Please see https://github.com/lovell/sharp/issues/512


make the memory::string support clone function

with clone function, caller can get a truely deep copy string from the original string, default copy constructor and copy assignment operator will get a CoW string if the string in the large mode(size > 255).
this feature will make string safe in cross cpu core argument passing.
because memory::string do not use atomic int, so the refCounted ++/-- is not thread safe.
Resolves CORE-628

 struct RefCounted {
    std::atomic<size_t> refCount_;
    Char data_[1];

    constexpr static size_t getDataOffset() {
      return offsetof(RefCounted, data_);
    }

    static RefCounted* fromData(Char* p) {
      return static_cast<RefCounted*>(static_cast<void*>(
          static_cast<unsigned char*>(static_cast<void*>(p)) -
          getDataOffset()));
    }

    static size_t refs(Char* p) {
      return fromData(p)->refCount_.load(std::memory_order_acquire);
    }

    static void incrementRefs(Char* p) {
      fromData(p)->refCount_.fetch_add(1, std::memory_order_acq_rel);
    }

    static void decrementRefs(Char* p) {
      auto const dis = fromData(p);
      size_t oldcnt = dis->refCount_.fetch_sub(1, std::memory_order_acq_rel);
      assert(oldcnt > 0);
      if (oldcnt == 1) {
        free(dis);
      }
    }

怎么没有跑 CI

不知道啊

哦，这个repo没有设置CI

stdb里面会跑

with clone function, caller can get a truely deep copy string from the original string, default copy constructor and copy assignment operator will get a CoW string if the string in the large mode(size > 255).
this feature will make string safe in cross cpu core argument passing. because memory::string do not use atomic int, so the refCounted ++/-- is not thread safe.
Resolves CORE-628

这个直接加到代码注释里比较好

test slack notify

test slack notify

notify

test slack notify

notify

notify 1


Upgraded to Node v10 - Pretter:Failed to parse buffer

Do you want to request a feature or report a bug?
Bug
What is the current/expected behavior?
Upon trying to save a file which vim-prettier typically formats (.js), it now throws the error: "Prettier: failed to parse buffer.", regardless of the file contents.  Adjusting various .vimrc settings didn't resolve the issue.
What version of vim-prettier are you using - (output of :PrettierVersion) ?
0.2.6
What version of prettier are you using - (output of  :PrettierCliVersion) ?
cosmiconfig requires at least version 4 of Node, please upgrade
(node --version = v10.0.0)
What is your prettier executable path - (output of  :PrettierCliPath) ?
/Users/chrisball/.vim/bundle/vim-prettier/node_modules/.bin/prettier
Did this work in previous versions of vim-prettier and/or prettier ?
Yes, never had a problem before the node upgrade.

Hi @christopherball,
Thanks for reporting this issue. Will try to reproduce it now and will comment back on this issue

Hi @christopherball ,
I tried to reproduce locally without success. In order to better assist you could you try providing a bit more info ?

can you try on the command line giving me the output of /Users/chrisball/.vim/bundle/vim-prettier/node_modules/.bin/prettier --version

"cosmiconfig requires at least version 4 of Node, please upgrade"

I figured it out - turns out after doing a vundle :PluginUpdate, I needed to manually re-run 'npm install' to update the dependency version of prettier that vim-prettier relies on.  Seems to be working now.


Output questions

Can you tell me the meaning of each column of output file , like 'predict.test.drmm_classify.text'.

0<PHONE_NUMBER>51 0.499621
1<PHONE_NUMBER>50 0.499639
0<PHONE_NUMBER>44 0.499624
0 11544 11545 0.499714
The four column is ground truth label, text_id1, text_id2, predicted matching score.
You can check the following code in main.py.
f.write('%s %s %s %s\n'%(gt, qid, did, score))

Thank you for your answer. I got this code.
f.write('%s\tQ0\t%s\t%d\t%f\t%s\t%s\n'%(qid, did, inum, score, config['net_name'], gt))
But, what is 'inum' and 'gt' in this code.

'inum' is the rank of the did corresponding to a particular qid; 'gt' is the ground truth label for the qid, did pair.


Python: Include Google logs' IDs in generated code

Chromium requires this information to be able to enforce a policy where
SCTs from Google-operated an non-Google operated logs are required.

Fixed.


[SPARK-42401][SQL][FOLLOWUP] Always set containsNull=true for array_insert

What changes were proposed in this pull request?
Always set containsNull=true in the data type returned by ArrayInsert#dataType.
Why are the changes needed?
PR #39970 fixed an issue where the data type for array_insert did not always have containsNull=true when the user was explicitly inserting a nullable value into the array. However, that fix does not handle the case where array_insert implicitly inserts null values into the array (e.g., when the insertion position is out-of-range):
spark-sql> select array_insert(array('1', '2', '3', '4'), -6, '5');
23/02/14 16:10:19 ERROR Executor: Exception in task 0.0 in stage 0.0 (TID 0)
java.lang.NullPointerException
	at org.apache.spark.sql.catalyst.expressions.codegen.UnsafeWriter.write(UnsafeWriter.java:110)
	at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.project_doConsume_0$(Unknown Source)
	at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.processNext(Unknown Source)
	at org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)

Because we can't know at planning time whether the insertion position will be out of range, we should always set containsNull=true on the data type for array_insert.
Does this PR introduce any user-facing change?
No.
How was this patch tested?
New unit tests.

Merged to master and branch-3.4.


TypeError: MessagePassing.init() got an unexpected keyword argument 'sageconv_dropout'

Hiii thanks for the work but it would be helpful if by any chance you can offer some pointers on this error. Below is the full error message@lucidrains :
TypeError                                 Traceback (most recent call last)
Cell In[5], [line 10](vscode-notebook-cell:?execution_count=5&line=10)
      [3](vscode-notebook-cell:?execution_count=5&line=3) from meshgpt_pytorch import (
      [4](vscode-notebook-cell:?execution_count=5&line=4)     MeshAutoencoder,
      [5](vscode-notebook-cell:?execution_count=5&line=5)     MeshTransformer
      [6](vscode-notebook-cell:?execution_count=5&line=6) )
      [8](vscode-notebook-cell:?execution_count=5&line=8) # autoencoder
---> [10](vscode-notebook-cell:?execution_count=5&line=10) autoencoder = MeshAutoencoder(
     [11](vscode-notebook-cell:?execution_count=5&line=11)     num_discrete_coors = 64
     [12](vscode-notebook-cell:?execution_count=5&line=12) )
     [14](vscode-notebook-cell:?execution_count=5&line=14) # mock inputs
     [16](vscode-notebook-cell:?execution_count=5&line=16) vertices = torch.randn((2, 121, 3))            # (batch, num vertices, coor (3))

File [~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/pytorch_custom_utils/save_load.py:35](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/pytorch_custom_utils/save_load.py:35), in save_load.<locals>._save_load.<locals>.__init__(self, *args, **kwargs)
     [32](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/pytorch_custom_utils/save_load.py:32) _config = pickle.dumps((args, kwargs))
     [34](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/pytorch_custom_utils/save_load.py:34) setattr(self, config_instance_var_name, _config)
---> [35](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/pytorch_custom_utils/save_load.py:35) _orig_init(self, *args, **kwargs)

File <@beartype(meshgpt_pytorch.meshgpt_pytorch.MeshAutoencoder.__init__) at 0x7f3c27c8b550>:212, in __init__(__beartype_get_violation, __beartype_conf, __beartype_getrandbits, __beartype_func, *args, **kwargs)

File [~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/meshgpt_pytorch.py:492](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/meshgpt_pytorch.py:492), in MeshAutoencoder.__init__(self, num_discrete_coors, coor_continuous_range, dim_coor_embed, num_discrete_area, dim_area_embed, num_discrete_normals, dim_normal_embed, num_discrete_angle, dim_angle_embed, encoder_dims_through_depth, init_decoder_conv_kernel, decoder_dims_through_depth, dim_codebook, num_quantizers, codebook_size, use_residual_lfq, rq_kwargs, rvq_kwargs, rlfq_kwargs, rvq_stochastic_sample_codes, sageconv_kwargs, commit_loss_weight, bin_smooth_blur_sigma, attn_encoder_depth, attn_decoder_depth, local_attn_kwargs, local_attn_window_size, linear_attn_kwargs, use_linear_attn, pad_id, flash_attn, sageconv_dropout, attn_dropout, ff_dropout, resnet_dropout, checkpoint_quantizer, quads)
    [489](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/meshgpt_pytorch.py:489) init_encoder_dim, *encoder_dims_through_depth = encoder_dims_through_depth
    [490](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/meshgpt_pytorch.py:490) curr_dim = init_encoder_dim
--> [492](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/meshgpt_pytorch.py:492) self.init_sage_conv = SAGEConv(dim_codebook, init_encoder_dim, **sageconv_kwargs)
...
---> [91](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/torch_geometric/nn/conv/sage_conv.py:91) super().__init__(aggr, **kwargs)
     [93](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/torch_geometric/nn/conv/sage_conv.py:93) if self.project:
     [94](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/torch_geometric/nn/conv/sage_conv.py:94)     if in_channels[0] <= 0:

TypeError: __init__() got an unexpected keyword argument 'sageconv_dropout'

Hiii thanks for the work but it would be helpful if by any chance you can offer some pointers on this error. Below is the full error message@lucidrains :
`TypeError                                 Traceback (most recent call last)
Cell In[5], line 10
3 from meshgpt_pytorch import (
4     MeshAutoencoder,
5     MeshTransformer
6 )
8 # autoencoder
---> 10 autoencoder = MeshAutoencoder(
11     num_discrete_coors = 64
12 )
14 # mock inputs
16 vertices = torch.randn((2, 121, 3))            # (batch, num vertices, coor (3))
File ~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/pytorch_custom_utils/save_load.py:35, in save_load.._save_load..init(self, *args, **kwargs)
32 _config = pickle.dumps((args, kwargs))
34 setattr(self, config_instance_var_name, _config)
---> 35 _orig_init(self, *args, **kwargs)
File <@beartype(meshgpt_pytorch.meshgpt_pytorch.MeshAutoencoder.init) at 0x7f3c27c8b550>:212, in init(__beartype_get_violation, __beartype_conf, __beartype_getrandbits, __beartype_func, *args, **kwargs)
File ~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/meshgpt_pytorch.py:492, in MeshAutoencoder.init(self, num_discrete_coors, coor_continuous_range, dim_coor_embed, num_discrete_area, dim_area_embed, num_discrete_normals, dim_normal_embed, num_discrete_angle, dim_angle_embed, encoder_dims_through_depth, init_decoder_conv_kernel, decoder_dims_through_depth, dim_codebook, num_quantizers, codebook_size, use_residual_lfq, rq_kwargs, rvq_kwargs, rlfq_kwargs, rvq_stochastic_sample_codes, sageconv_kwargs, commit_loss_weight, bin_smooth_blur_sigma, attn_encoder_depth, attn_decoder_depth, local_attn_kwargs, local_attn_window_size, linear_attn_kwargs, use_linear_attn, pad_id, flash_attn, sageconv_dropout, attn_dropout, ff_dropout, resnet_dropout, checkpoint_quantizer, quads)
489 init_encoder_dim, *encoder_dims_through_depth = encoder_dims_through_depth
490 curr_dim = init_encoder_dim
--> 492 self.init_sage_conv = SAGEConv(dim_codebook, init_encoder_dim, **sageconv_kwargs)
...
---> 91 super().init(aggr, **kwargs)
93 if self.project:
94     if in_channels[0] <= 0:
TypeError: init() got an unexpected keyword argument 'sageconv_dropout'`

I also have the same issue... Googling doesn't seem to offer any chance on this error

    sageconv_kwargs = {**sageconv_kwargs, 'sageconv_dropout' : sageconv_dropout}

to:

Hey @MarcusLoppe thanks -- the default is 0 anyway so i guess we can do that

Another error im getting is:
File [~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:106](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:106), in <listcomp>(.0)
     [98](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:98)     batch_codes = autoencoder.tokenize(
     [99](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:99)         vertices=padded_batch_vertices,
    [100](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:100)         faces=padded_batch_faces,
    [101](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:101)         face_edges=padded_batch_face_edges
    [102](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:102)     )
...
--> [106](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:106)     item['codes'] = [code for code in codes if code != autoencoder.pad_id and code != -1]
    [108](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:108) self.sort_dataset_keys()
    [109](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:109) print(f"[MeshDataset] Generated codes for {len(self.data)} entrys")

Is this still specific issues on my end as well : (?
Another idea that I am thinking of is to generate meshes w/ bounding boxes as input text token parameters. Would you think this is possible given the setup we have if we insert that info into the training loop? @MarcusLoppe Thank you so much for all the help!

Another error im getting is:
File [~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:106](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:106), in <listcomp>(.0)
     [98](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:98)     batch_codes = autoencoder.tokenize(
     [99](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:99)         vertices=padded_batch_vertices,
    [100](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:100)         faces=padded_batch_faces,
    [101](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:101)         face_edges=padded_batch_face_edges
    [102](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:102)     )
...
--> [106](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:106)     item['codes'] = [code for code in codes if code != autoencoder.pad_id and code != -1]
    [108](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:108) self.sort_dataset_keys()
    [109](https://vscode-remote+ssh-002dremote-002bitx.vscode-resource.vscode-cdn.net/home/stephen/Desktop/meshgpt-pytorch/~/anaconda3/envs/meshgpt/lib/python3.9/site-packages/meshgpt_pytorch/mesh_dataset.py:109) print(f"[MeshDataset] Generated codes for {len(self.data)} entrys")

Is this still specific issues on my end as well : (?

Ah no sorry! I always used to generate tokens using 1 item per batch to avoid VRAM issues.
But since doing that for 218k items takes a while I implemented batch processing. I made a few mistakes but the latest commit should have resolved that issue.
Sorry about that, I was doing the changes while half asleep :)

Another idea that I am thinking of is to generate meshes w/ bounding boxes as input text token parameters. Would you think this is possible given the setup we have if we insert that info into the training loop? @MarcusLoppe Thank you so much for all the help!

You mean providing it with more details about the wanted mesh model size?
The autoencoder converts the mesh and 'simplifies'/discretize it so the lowest point in a axis is 0 and max is 127.
This way all the inputs are the same sizes since they are the same dimensions and it lets the autoencoder learn in a more uniform way.
You can increase this value (num_discrete_coors ) to higher if you are dealing with very big meshes. Otherwise it seems to work fine with the current meshes im dealing with.
So it wouldn't quite matter I think, It might just be more helpful for the transformer if you provide verbs about the shape, e.g. "very big chair" or something like that. The it will create a relationship with that mesh model and the text 'very big', doing this over all the big meshes will create a correlation for the transformer and help it understand what 'big' means.

Thank you so much @MarcusLoppe -- that makes a lot of sense! May I also know the reason why you have two trainers -- is it just because you wanna do learning rate scheduling at diff losses?
trainer = MeshTransformerTrainer(model = transformer,warmup_steps = 10,grad_accum_every=4,num_train_steps=100, dataset = dataset,
                                 learning_rate = 1e-3, batch_size=8)
loss = trainer.train(100, stop_at_loss = 0.009)

trainer = MeshTransformerTrainer(model = transformer,warmup_steps = 10,grad_accum_every=4,num_train_steps=100, dataset = dataset,
                                 learning_rate = 5e-4, batch_size=8)
loss = trainer.train(200, stop_at_loss = 0.00001)

Thank you so much @MarcusLoppe -- that makes a lot of sense! May I also know the reason why you have two trainers -- is it just because you wanna do learning rate scheduling at diff losses?
trainer = MeshTransformerTrainer(model = transformer,warmup_steps = 10,grad_accum_every=4,num_train_steps=100, dataset = dataset,
                                 learning_rate = 1e-3, batch_size=8)
loss = trainer.train(100, stop_at_loss = 0.009)

trainer = MeshTransformerTrainer(model = transformer,warmup_steps = 10,grad_accum_every=4,num_train_steps=100, dataset = dataset,
                                 learning_rate = 5e-4, batch_size=8)
loss = trainer.train(200, stop_at_loss = 0.00001)

Correct, I at the start thought that the autoencoder could benefit from higher learning rate at the start of the training.
But I discovered that it didn't really matter.
I tried to implement the existing LRScheduler class but the lr scheduler that contains the stepping of learning rate isn't a base class of _LRScheduler. Accelerate requires a lr scheduler that is of the type _LRScheduler, so that one isn't compatible with the accelerator.
I also tried to recreate it by hand but there was so many issues so I didn't bother finishing it so I just stopped a specific loss and setup the training again but with lower learning rate :)
Dependant on hardware resources, it might be worth it to use a higher learning rate on the transformer, but I'm not 100% sure.

Got it thank you! I am thinking of getting more resources form my lab and train it over objectverse (thinking of trianing this on the magnitude of thousands of objects at least). Do u have have a rough estimate of the compute needed and whether its easy to parallelize it over multiple GPUs? Happy to share a pretrained model afterward and wanna hear what u think! @MarcusLoppe

Got it thank you! I am thinking of getting more resources form my lab and train it over objectverse (thinking of trianing this on the magnitude of thousands of objects at least). Do u have have a rough estimate of the compute needed and whether its easy to parallelize it over multiple GPUs? Happy to share a pretrained model afterward and wanna hear what u think! @MarcusLoppe

I've only trained using max 250 faces, that was over 14k 3d mesh models(x15 augments), I used the 4 encoder and 8 decoder attention layers which resulted in the total parameters size is 75M
The result was very good at a 0.36 MSE loss and took only like 20hrs using a single P100.
Checkout the discussion i posted Pre-trained autoencoder & data sourcing #66  , you can see the results and link to the google drive with the rendered output & model.
Each epoch took 2.5hrs so it was about  8-9 epochs for a 218k dataset.
It seems like the attention layers is a must if you don't want to train it much longer, without the attention I got to 0.48 loss after 30hrs+ training.
When i used 1 encoder and 1 decoder layer it got down to 0.42 loss, so more attention layer definitely helps.
However the transformer takes much longer,  using the model below, it takes about 4.5hrs per epoch with 8 batch size (8 grad_accum_every).
If you got enough of VRAM use dim size of 1024 and either 12 or 24 attn_depth, for context: GPT-2 uses 1024 & 24 attention layer I believe.
The autoencoder seem to scale with the model size so it's probably faster/better to train the transformer as big as possible.
Dependant on the GPU's it probably will take a day or two, in the paper they did 4 days with 4 A100 I believe.
However this repo got massive amounts of upgrades compared to the paper.
I managed to train on 14k models on the autoencoder and only took 1 day using a single P100 while it took 2 days using x4 A100 for them.
So hopefully something similar might be the case for the transformer.
transformer = MeshTransformer(
    autoencoder,
    dim = 512,
    attn_depth = 24,
    attn_heads = 8,
    coarse_pre_gateloop_depth = 6,
    fine_pre_gateloop_depth= 4,
    max_seq_len = max_seq,
    condition_on_text = True,
    text_condition_model_types = "bge",
    text_condition_cond_drop_prob = 0.01,
)

@MarcusLoppe Thank you so much for the response! That's super helpful : )
For now, I've been training w/ the demo mesh, w/ autoencoder loss 0.277, and the transformer loss plateaued at around 0.005. I tried to keep training w/ a 3090 for a couple more hrs and the results dont seem to get much better than what I have below (when using only text prompts). Do you think this is expected or do u by any chance have any insights? Thanks in advance!

@MarcusLoppe Thank you so much for the response! That's super helpful : )
For now, I've been training w/ the demo mesh, w/ autoencoder loss 0.277, and the transformer loss plateaued at around 0.005. I tried to keep training w/ a 3090 for a couple more hrs and the results dont seem to get much better than what I have below (when using only text prompts). Do you think this is expected or do u by any chance have any insights? Thanks in advance!

Try providing it with 10-50% of the tokens for a model and see.  The original paper never used text as a guide but only the tokens it was prompted, the text guiding seems to be pretty week in the start of the generation but it's given like 10% of the tokens, it will jump start the generation and output a very good mesh
I've had some difficulty when training on small datasets, if it's just one shape it's fine and the transformer can over-fit the model.
However when dealing with multiple shapes it get's harder.  I'll probably exchange the demo meshes so it's the old poly mesh.
Without providing any tokens I've gotten descent result with using chair, table and softa dataset but the only meshes I've flawless outputted using text-to-3d is those 4 basic shapes about cube, cone etc.
But when providing about 10% tokens to jump start it, the transformer goes very well.
The issue when dealing with more complex shapes is that it needs to be more generalized.
Hence why I stopped dealing with small datasets of 400-800 models and moved on to the larger 14k model dataset.

Thank makes a lot of sense thank u: )


GEODE-10002: Remove in documentation obligation for parallel …

…gateway sender to share disk store with region

For all changes:

[ ] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[ ] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[ ] Is your initial contribution a single, squashed commit?

[ ] Does gradlew build run cleanly?

[ ] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

I'd like @upthewaterspout and @karensmolermiller to confirm if the change proposed is ok or if we should even go further and remove the recommendation.
I do not know what was the origin for the previous ticket and PR that provoked the addition of the obligation to have the same disk-store (maybe an operation error in a customer that deleted the files). In my opinion, to prevent a hang in the startup because someone could delete manually some files is not a reason to even recommend this.
I see advantages in separating the disk-stores of the data region from the queue events and that's why I am reluctant to even have the recommendation if the only reason is the one above.

I like this change. I would be ok with going further and removing the restriction. As far as I know the only reason to put the region and the sender in the same disk store is to avoid accidentally deleting one of the disk stores.
A long time ago we discussed some changes that might make it better for a region and a sender to be the same disk store. For example, the new value in the region and the new value going to the gateway sender are the same bytes, so we might theoretically be able to to avoid duplicating those bytes on disk. However, we're not doing anything like that right now.

@upthewaterspout Thanks for your answer. I think it is best to remove the restriction given that the only reason we have for it is to avoid problems when there is an accidental deletion of one of the disk stores.

As per https://cwiki.apache.org/confluence/display/GEODE/Commit+Message+Format, first commit summary should be under 29 characters (not including bug# or pr#) (yours is 102 characters) and details should explain what the intent of the commit is and why. If you amend your initial commit now and force-push, you can benefit from review feedback on your commit message, and you won't have to remember to fix it later when you merge.

@onichols-pivotal Can I still do that even if the pull request is already merged and closed?

Oops, I didn't see this was already merged.


Use zmount as the default disk workload

Which package/s are you suggesting this feature for?
grid_client
Is your feature request related to a problem? Please describe
on the development branch, the volume workload is used as the default disk.
Describe the solution you'd like
let's return back to use zmount as the default.

Work completed:
Used zmount while creaing disk instead of volume.


Incremental synchronization support

Spawned off #3758.
Some LSP clients (ahem, Gnome Builder) don't respect our choice for full text synchronization, and it wouldn't hurt to reduce the amount of text transferred.
The text change notification comes in here. params.content_changes contains all changes, but right now we only process one of them. Before passing the changes to the VFS layer, we need to convert from a line/column to byte offset representation. The latter is implemented as the TextRange type, and a conversion method is available here.

Another potential complication is that we store files with normalized line endings (\n), so we need to account for that. I think  just normalizing the text from TextDocumentContentChangeEvent would do the trick, as ranges are ending-agnosic.

I think just normalizing the text from TextDocumentContentChangeEvent would do the trick, as ranges are ending-agnosic.

But.. their length changes when normalizing the text. This seems harder than I thought :sweat_smile:.


Can't find variable:DOMParser

We are using this package in react-native v 0.59

@Saisankeerthpopcorn React native is currently not supported by @azure/storage-blob package.

Closing as it looks like this discussion is complete. @Saisankeerthpopcorn please open a new issue if you have any further questions or find any other bugs in the preview. Thank you for trying it out!


Unity WebGL build gives an IL2CPP error

Hi,
I'm on an Unity project that uses MongoDB.
I have all the MongoDB assemblies and dependencies wich includes ZstdSharp.
When building for WebGL, I get this error:
Error: IL2CPP error for method 'System.Void ZstdSharp.Unsafe.Methods::.cctor()' in assembly 'C:\Users\Fleurman\Scriipts\Library\Bee\artifacts\WebGL\ManagedStripped\ZstdSharp.dll'

System.ArgumentOutOfRangeException: Cannot create a constant value for types of System.UIntPtr for System.UIntPtr ZstdSharp.Unsafe.Methods::ZSTD_blockHeaderSize (Parameter 'declaredParameterOrFieldType')

I asked for help on the Unity forum and got this explanation:
"Unity uses the IL2CPP scripting backend to convert .NET assemblies to C++ to support AOT (Ahead Of Time) compilation which is a requirement on platforms like WebGL. The System.UIntPtr type in your error message is a pointer type and pointer arithmetic is not supported in IL2CPP which could be causing the error."
Also I'm told to "Check if there's a version of ZstdSharp that's compatible with WebGL."
I know it is more likely to be an issue with Unity and their IL2CPP, but do you think there is a way I could make it work ?
Thanks a lot !

While IL2CPP does support the System.UIntPtr and pointer arithmetic, constant nint/nuint are a recent addition to C# and IL2CPP clearly does not handle them well.
https://github.com/oleg-st/ZstdSharp/blob/314fbc4c7e87c4eec503090c23d93329d25e4b59/src/ZstdSharp/Unsafe/ZstdInternal.cs#L17
Potential fix would be changing this const to a static readonly, or reporting a IL2CPP bug and waiting.

@Fleurman
I think it's fixed in 0.7.2
Could you check it?

It is fixed !
You are formidable thank you very much !!
PS: to answer to your first question, I don't think you can run IL2CPP by istelf.

Hi, it's fixed in version 0.7.2, but reopen in version 0.7.3, please check

@hoainam1593
What version of Unity are you using?

it happen on both unity 2021.3.22 and 2022.3.13

The compilation error for 0.7.3 can be fixed, but now I'm getting a runtime error for 0.7.2 with Unity 2022.3.13f1 for code that previously worked

@hoainam1593
Released 0.7.4 with compilation fix for IL2CPP, runtime error still needs to be looked into

it works now on v0.7.4, many thanks


Add usd view render and playblast functionality

Expose a way to easily render an image sequence output from GL or a supported Hydra renderer for the USD view viewer.
Similar features appear in:

USD View
Prism USD Editor

I'd say this should be an easy entry point via the api/lib first and then expose it to the user via a GUI second.

Adding a reference, there's a tool called usdrecord which could be a reference for this feature, see example Python file here
As mentioned originally I believe USD View also has capabilities of rendering a sequence or capturing an image - but I might be mistaken.

Had some issues but the rudimentary functionality is working.
I kept getting errors but it turns out I forgot that garbage collection exists
Now everything works as intended, which is fun
It can already do sequences, and switch to different render engines that are available.
Auxilliary functions to populate UI with later on are all available too!
https://github.com/Sasbom/usd-qtpy/tree/enhancement/usdview_render_turntable

Good stuff! :) Looking forward to seeing more progress.

Adding other references:

USD assets working group: Thumbnailer
USD Alliance forum discussion on minimal frame recorder
USD Tests: test for FrameRecorder

Some visuals playblast/render UIs from Prism:

RenderSettings primitive,

Actually - I think all major renderers support it, at least Arnold, V-Ray and Redshift render from RenderSettings prims. I suspect it's just the GL renderers that not necessarily render using 'render settings'?

Actually - I think all major renderers support it, at least Arnold, V-Ray and Redshift render from RenderSettings prims. I suspect it's just the GL renderers that not necessarily render using 'render settings'? Or at least, in e.g. Houdini the Render Settings prim is what defines how the renderer renders it.

While working this popped into my mind too, but I wondered if it was actually a USD or specifically a solaris thing,
since I only really know it from working with Karma/Redshift in that context so I wasn't quite sure.
I don't know if this is the exact same thing, and it seems like it's not nessecarily the most surefire way of dealing with it, so I'd like to avoid RenderSettings primitives for now. A lot of information seems to be deduced from the camera, and the thumbnail generator tool seems to set it up very nicely.

While working this popped into my mind too, but I wondered if it was actually a USD or specifically a solaris thing,
since I only really know it from working with Karma/Redshift in that context so I wasn't quite sure.

Should definitely be a USD thing - it's all in their api from RenderSettings, through RenderProduct to RenderVar.

I don't know if this is the exact same thing, and it seems like it's not nessecarily the most surefire way of dealing with it, so I'd like to avoid RenderSettings primitives for now. A lot of information seems to be deduced from the camera, and the thumbnail generator tool seems to set it up very nicely.

The more we can simplify the better - and I feel for GL captures since they don't support render settings we'll need to go that route anyway. Thanks!


Using the Snakemake Workflow Catalogue as deployment results in SyntaxError

When using the Snakemake Workflow Catalogue (thus snakedeploy)  for "installing" UnCoVar, the following error occurs:
SyntaxError in line 14 of /Users/btf/Projects/uncovar-snakedeploy/workflow/Snakefile:
invalid syntax (Snakefile, line 14)

This can be solved by removing the quotes in the Sankefile, line 13 and change
"github("IKIM-Essen/uncovar", path="workflow/Snakefile", tag="v0.3.0")"

to
github("IKIM-Essen/uncovar", path="workflow/Snakefile", tag="v0.3.0")

This problem is already known (see https://github.com/snakemake/snakedeploy/issues/22) and will be fixed soon (see https://github.com/snakemake/snakedeploy/pull/23) 😊

@lenakinzel, the above-mentioned PR is now merged. Could you please try the workflow catalogue deployment method again?
If it works please close this issue. Thanks 🙂

The SyntaxError for running the workflow with the catalogue deployment method is no longer present. The mentioned PR merge fixed the issue.


Implement Python bindings

Hi kampersanda - I wanted to point you to Polars, another library that's based on Rust and has Python bindings. Maybe that'll help you? They use PyO3 and Maturin.
I'm up for testing and creating documentation on the Python bindings, so LMK how you'd like some help.

@avimallu Thank you very much! First. I'll investigate the architecture of Polars.


Prepare v0.34.1

Google Cloud PHP v0.34.1
Cloud Storage v1.1.3

A bug preventing Signed URLs from working properly on Windows has been fixed. (#577)

you're so on top of things.


FALA triggers on ASYNC protocol receive

FALA doesn't don’t currently trigger on incoming bytes in async protocols like UART and HDUART. We could set a trigger on the appropriate pin and then capture incoming bytes too.

Another test comment