BLE protocol: Action HvacTemperatureAdjustmentAction ignores set properties values

When using the ble protocol to send the action HvacTemperatureAdjustmentAction, only values for properties driver_temp_celsius and passenger_temp_celsius are being considered and all others are ignored.
For example, sending a message with values only for delta_celsius = 1 and hvac_temperature_zone = 2 (TEMP_ZONE_FRONT_LEFT) does not work. The car ignores the values for those 2 properties and, since driver_temp_celsius and passenger_temp_celsius are not set, it sets both temperatures to 'LO'.
That makes it is not possible to increase or decrease the temperature, with a given delta, using ble.

Here is an example, a slightly modified version of Vehicle.ChangeClimateTemp(...) from what we have in climate.go. Executing this action results in temperature for both driver and passenger being set to 'LO'.
func (v *Vehicle) ChangeClimateTemp(ctx context.Context, driverCelsius float32, passengerCelsius float32) error {
  var zones []*carserver.HvacTemperatureAdjustmentAction_HvacTemperatureZone

  var zone *carserver.HvacTemperatureAdjustmentAction_HvacTemperatureZone =  new(carserver.HvacTemperatureAdjustmentAction_HvacTemperatureZone)
  zone.Type = &carserver.HvacTemperatureAdjustmentAction_HvacTemperatureZone_TEMP_ZONE_FRONT_LEFT{}

  zones = append(zones, zone)

  return v.executeCarServerAction(ctx,
    &carserver.Action_VehicleAction{
      VehicleAction: &carserver.VehicleAction{
        VehicleActionMsg: &carserver.VehicleAction_HvacTemperatureAdjustmentAction{
          HvacTemperatureAdjustmentAction: &carserver.HvacTemperatureAdjustmentAction{
            DeltaCelsius: 1, // <- Added but no effect
            HvacTemperatureZone: zones, // <- Added but no effect
            Level: &carserver.HvacTemperatureAdjustmentAction_Temperature{
              Type: &carserver.HvacTemperatureAdjustmentAction_Temperature_TEMP_MAX{},
            },
          },
        },
      },
    })
}

This doesn't appear to be a BLE issue. The API defined in climate.go doesn't support those fields because they are currently not used by the car.
@sheng168 In general their should be parity between BLE and HTTP. The commands end up in the same place. There are a small number of exceptions related to security (e.g., fleet manager keys cannot authorize commands over BLE) or technical constraints (e.g., vehicle wake behavior).


Cannot use column name "min" without limit() call

Sails version: 1.1
Node version: v10.15.1
NPM version: 6.4.1
DB adapter name: N/A
DB adapter version: N/A
Operating system: OSX

# Observed
Doing find() calls on a db when matching a column named min fails without limit() clause.
Recreating
Example project at: https://github.com/alxndrsn/sailsjs-min-without-limit
sails console

With limit():
sails> Minmax.find({ min: { '<': 10 } }).limit(2).then(console.log).catch(console.log)
Promise {
  _bitField: 0,
  _fulfillmentHandler0: undefined,
  _rejectionHandler0: undefined,
  _promise0: undefined,
  _receiver0: undefined }
sails> []

Without limit():
sails> Minmax.find({ min: { '<': 10 } }).then(console.log).catch(console.log)
Promise {
  _bitField: 0,
  _fulfillmentHandler0: undefined,
  _rejectionHandler0: undefined,
  _promise0: undefined,
  _receiver0: undefined }
sails> { Error: Consistency violation: Encountered unexpected internal error when attempting to normalize/validate the provided criteria:
```
{ min: { '<': 10 } }
```
And here is the actual error itself:
```
Error: The `min` clause is no longer supported in Sails/Waterline.
In previous versions, `min` could be provided in a criteria to perform an aggregation query.  But as of Sails v1.0/Waterline v0.13, the usage has changed.  Now, to calculate the minimum value of an attribute across multiple records, use the `.find()` model method.

For example:
```
// Get the smallest account balance from amongst all account holders
// between the ages of 35 and 45.
BankAccount.find('balance').where({
  ownerAge: { '>=': 35, '<=': 45 }
})
.limit(1)
.select(['balance'])
.sort('balance ASC')
}).exec(function (err, relevantAccounts){
  // ...
  var minBalance;
  if (relevantAccounts[0]) {
    minBalance = relevantAccounts[0].balance;
  }
  else {
    minBalance = null;
  }
});
```
For more info, see:
http://sailsjs.com/docs/reference/waterline-orm/models/find
    at normalizeCriteria (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/utils/query/private/normalize-criteria.js:297:11)
    at forgeStageTwoQuery (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/utils/query/forge-stage-two-query.js:623:24)
    at Deferred._.extend._WLModel [as _handleExec] (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/methods/find.js:180:9)
    at Deferred.exec (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:286:10)
    at Deferred.tryCatcher (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/util.js:11:23)
    at ret (eval at makeNodePromisifiedEval (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/promisify.js:184:12), <anonymous>:14:23)
    at Deferred.toPromise (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:572:19)
    at Deferred.then (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:431:22)
    at repl:1:35
    at Script.runInThisContext (vm.js:96:20)
    at REPLServer.defaultEval (repl.js:332:29)
    at bound (domain.js:395:14)
    at REPLServer.runBound [as eval] (domain.js:408:12)
    at REPLServer.onLine (repl.js:639:10)
    at REPLServer.emit (events.js:194:15)
    at REPLServer.EventEmitter.emit (domain.js:441:20)
    at REPLServer.Interface._onLine (readline.js:290:10)
    at REPLServer.Interface._line (readline.js:638:8)
    at REPLServer.Interface._ttyWrite (readline.js:919:14)
    at REPLServer.self._ttyWrite (repl.js:712:7)
    at ReadStream.onkeypress (readline.js:168:10)
    at ReadStream.emit (events.js:189:13)
```
    at forgeStageTwoQuery (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/utils/query/forge-stage-two-query.js:637:17)
    at Deferred._.extend._WLModel [as _handleExec] (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/methods/find.js:180:9)
    at Deferred.exec (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:286:10)
    at Deferred.tryCatcher (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/util.js:11:23)
    at ret (eval at makeNodePromisifiedEval (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/promisify.js:184:12), <anonymous>:14:23)
    at Deferred.toPromise (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:572:19)
    at Deferred.then (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:431:22)
    at repl:1:35
    at Script.runInThisContext (vm.js:96:20)
    at REPLServer.defaultEval (repl.js:332:29)
    at bound (domain.js:395:14)
    at REPLServer.runBound [as eval] (domain.js:408:12)
    at REPLServer.onLine (repl.js:639:10)
    at REPLServer.emit (events.js:194:15)
    at REPLServer.EventEmitter.emit (domain.js:441:20)
    at REPLServer.Interface._onLine (readline.js:290:10)
    at REPLServer.Interface._line (readline.js:638:8)
    at REPLServer.Interface._ttyWrite (readline.js:919:14)
    at REPLServer.self._ttyWrite (repl.js:712:7)
    at ReadStream.onkeypress (readline.js:168:10)
    at ReadStream.emit (events.js:189:13)
    at ReadStream.EventEmitter.emit (domain.js:441:20)
  cause:
   Error: Consistency violation: Encountered unexpected internal error when attempting to normalize/validate the provided criteria:
   ```
   { min: { '<': 10 } }
   ```
   And here is the actual error itself:
   ```
   Error: The `min` clause is no longer supported in Sails/Waterline.
   In previous versions, `min` could be provided in a criteria to perform an aggregation query.  But as of Sails v1.0/Waterline v0.13, the usage has changed.  Now, to calculate the minimum value of an attribute across multiple records, use the `.find()` model method.

   For example:
   ```
   // Get the smallest account balance from amongst all account holders
   // between the ages of 35 and 45.
   BankAccount.find('balance').where({
     ownerAge: { '>=': 35, '<=': 45 }
   })
   .limit(1)
   .select(['balance'])
   .sort('balance ASC')
   }).exec(function (err, relevantAccounts){
     // ...
     var minBalance;
     if (relevantAccounts[0]) {
       minBalance = relevantAccounts[0].balance;
     }
     else {
       minBalance = null;
     }
   });
   ```
   For more info, see:
   http://sailsjs.com/docs/reference/waterline-orm/models/find
       at normalizeCriteria (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/utils/query/private/normalize-criteria.js:297:11)
       at forgeStageTwoQuery (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/utils/query/forge-stage-two-query.js:623:24)
       at Deferred._.extend._WLModel [as _handleExec] (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/methods/find.js:180:9)
       at Deferred.exec (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:286:10)
       at Deferred.tryCatcher (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/util.js:11:23)
       at ret (eval at makeNodePromisifiedEval (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/promisify.js:184:12), <anonymous>:14:23)
       at Deferred.toPromise (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:572:19)
       at Deferred.then (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:431:22)
       at repl:1:35
       at Script.runInThisContext (vm.js:96:20)
       at REPLServer.defaultEval (repl.js:332:29)
       at bound (domain.js:395:14)
       at REPLServer.runBound [as eval] (domain.js:408:12)
       at REPLServer.onLine (repl.js:639:10)
       at REPLServer.emit (events.js:194:15)
       at REPLServer.EventEmitter.emit (domain.js:441:20)
       at REPLServer.Interface._onLine (readline.js:290:10)
       at REPLServer.Interface._line (readline.js:638:8)
       at REPLServer.Interface._ttyWrite (readline.js:919:14)
       at REPLServer.self._ttyWrite (repl.js:712:7)
       at ReadStream.onkeypress (readline.js:168:10)
       at ReadStream.emit (events.js:189:13)
   ```
       at forgeStageTwoQuery (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/utils/query/forge-stage-two-query.js:637:17)
       at Deferred._.extend._WLModel [as _handleExec] (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/methods/find.js:180:9)
       at Deferred.exec (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:286:10)
       at Deferred.tryCatcher (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/util.js:11:23)
       at ret (eval at makeNodePromisifiedEval (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/promisify.js:184:12), <anonymous>:14:23)
       at Deferred.toPromise (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:572:19)
       at Deferred.then (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:431:22)
       at repl:1:35
       at Script.runInThisContext (vm.js:96:20)
       at REPLServer.defaultEval (repl.js:332:29)
       at bound (domain.js:395:14)
       at REPLServer.runBound [as eval] (domain.js:408:12)
       at REPLServer.onLine (repl.js:639:10)
       at REPLServer.emit (events.js:194:15)
       at REPLServer.EventEmitter.emit (domain.js:441:20)
       at REPLServer.Interface._onLine (readline.js:290:10)
       at REPLServer.Interface._line (readline.js:638:8)
       at REPLServer.Interface._ttyWrite (readline.js:919:14)
       at REPLServer.self._ttyWrite (repl.js:712:7)
       at ReadStream.onkeypress (readline.js:168:10)
       at ReadStream.emit (events.js:189:13)
       at ReadStream.EventEmitter.emit (domain.js:441:20),
  isOperational: true }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
WARNING: A function that was initially called over 15 seconds
ago has still not actually been executed.  Any chance the
source code is missing an "await"?

 [?]
In previous versions, `min` could be provided in a criteria to perform an aggregation query.  But as of Sails v1.0/Waterline v0.13, the usage has changed.  Now, to calculate the minimum value of an attribute across multiple records, use the `.find()` model method.

For example:
```
// Get the smallest account balance from amongst all account holders
// between the ages of 35 and 45.
BankAccount.find('balance').where({
  ownerAge: { '>=': 35, '<=': 45 }
})
.limit(1)
.select(['balance'])
.sort('balance ASC')
}).exec(function (err, relevantAccounts){
  // ...
  var minBalance;
  if (relevantAccounts[0]) {
    minBalance = relevantAccounts[0].balance;
  }
  else {
    minBalance = null;
  }
});
```
For more info, see:
http://sailsjs.com/docs/reference/waterline-orm/models/find
    at normalizeCriteria (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/utils/query/private/normalize-criteria.js:297:11)
    at forgeStageTwoQuery (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/utils/query/forge-stage-two-query.js:623:24)
    at Deferred._.extend._WLModel [as _handleExec] (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/methods/find.js:180:9)
    at Deferred.exec (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:286:10)
    at Deferred.tryCatcher (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/util.js:11:23)
    at ret (eval at makeNodePromisifiedEval (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/promisify.js:184:12), <anonymous>:14:23)
    at Deferred.toPromise (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:572:19)
    at Deferred.then (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:431:22)
    at repl:1:35
    at Script.runInThisContext (vm.js:96:20)
    at REPLServer.defaultEval (repl.js:332:29)
    at bound (domain.js:395:14)
    at REPLServer.runBound [as eval] (domain.js:408:12)
    at REPLServer.onLine (repl.js:639:10)
    at REPLServer.emit (events.js:194:15)
    at REPLServer.EventEmitter.emit (domain.js:441:20)
    at REPLServer.Interface._onLine (readline.js:290:10)
    at REPLServer.Interface._line (readline.js:638:8)
    at REPLServer.Interface._ttyWrite (readline.js:919:14)
    at REPLServer.self._ttyWrite (repl.js:712:7)
    at ReadStream.onkeypress (readline.js:168:10)
    at ReadStream.emit (events.js:189:13)
```
    at forgeStageTwoQuery (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/utils/query/forge-stage-two-query.js:637:17)
    at Deferred._.extend._WLModel [as _handleExec] (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/methods/find.js:180:9)
    at Deferred.exec (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:286:10)
    at Deferred.tryCatcher (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/util.js:11:23)
    at ret (eval at makeNodePromisifiedEval (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/promisify.js:184:12), <anonymous>:14:23)
    at Deferred.toPromise (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:572:19)
    at Deferred.then (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:431:22)
    at repl:1:35
    at Script.runInThisContext (vm.js:96:20)
    at REPLServer.defaultEval (repl.js:332:29)
    at bound (domain.js:395:14)
    at REPLServer.runBound [as eval] (domain.js:408:12)
    at REPLServer.onLine (repl.js:639:10)
    at REPLServer.emit (events.js:194:15)
    at REPLServer.EventEmitter.emit (domain.js:441:20)
    at REPLServer.Interface._onLine (readline.js:290:10)
    at REPLServer.Interface._line (readline.js:638:8)
    at REPLServer.Interface._ttyWrite (readline.js:919:14)
    at REPLServer.self._ttyWrite (repl.js:712:7)
    at ReadStream.onkeypress (readline.js:168:10)
    at ReadStream.emit (events.js:189:13)
    at ReadStream.EventEmitter.emit (domain.js:441:20)
  cause:
   Error: Consistency violation: Encountered unexpected internal error when attempting to normalize/validate the provided criteria:
   ```
   { min: { '<': 10 } }
   ```
   And here is the actual error itself:
   ```
   Error: The `min` clause is no longer supported in Sails/Waterline.
   In previous versions, `min` could be provided in a criteria to perform an aggregation query.  But as of Sails v1.0/Waterline v0.13, the usage has changed.  Now, to calculate the minimum value of an attribute across multiple records, use the `.find()` model method.

   For example:
   ```
   // Get the smallest account balance from amongst all account holders
   // between the ages of 35 and 45.
   BankAccount.find('balance').where({
     ownerAge: { '>=': 35, '<=': 45 }
   })
   .limit(1)
   .select(['balance'])
   .sort('balance ASC')
   }).exec(function (err, relevantAccounts){
     // ...
     var minBalance;
     if (relevantAccounts[0]) {
       minBalance = relevantAccounts[0].balance;
     }
     else {
       minBalance = null;
     }
   });
   ```
   For more info, see:
   http://sailsjs.com/docs/reference/waterline-orm/models/find
       at normalizeCriteria (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/utils/query/private/normalize-criteria.js:297:11)
       at forgeStageTwoQuery (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/utils/query/forge-stage-two-query.js:623:24)
       at Deferred._.extend._WLModel [as _handleExec] (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/methods/find.js:180:9)
       at Deferred.exec (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:286:10)
       at Deferred.tryCatcher (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/util.js:11:23)
       at ret (eval at makeNodePromisifiedEval (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/promisify.js:184:12), <anonymous>:14:23)
       at Deferred.toPromise (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:572:19)
       at Deferred.then (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:431:22)
       at repl:1:35
       at Script.runInThisContext (vm.js:96:20)
       at REPLServer.defaultEval (repl.js:332:29)
       at bound (domain.js:395:14)
       at REPLServer.runBound [as eval] (domain.js:408:12)
       at REPLServer.onLine (repl.js:639:10)
       at REPLServer.emit (events.js:194:15)
       at REPLServer.EventEmitter.emit (domain.js:441:20)
       at REPLServer.Interface._onLine (readline.js:290:10)
       at REPLServer.Interface._line (readline.js:638:8)
       at REPLServer.Interface._ttyWrite (readline.js:919:14)
       at REPLServer.self._ttyWrite (repl.js:712:7)
       at ReadStream.onkeypress (readline.js:168:10)
       at ReadStream.emit (events.js:189:13)
   ```
       at forgeStageTwoQuery (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/utils/query/forge-stage-two-query.js:637:17)
       at Deferred._.extend._WLModel [as _handleExec] (/Users/user/workspaces/paygo/minmax/node_modules/waterline/lib/waterline/methods/find.js:180:9)
       at Deferred.exec (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:286:10)
       at Deferred.tryCatcher (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/util.js:11:23)
       at ret (eval at makeNodePromisifiedEval (/Users/user/workspaces/paygo/minmax/node_modules/bluebird/js/release/promisify.js:184:12), <anonymous>:14:23)
       at Deferred.toPromise (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:572:19)
       at Deferred.then (/Users/user/workspaces/paygo/minmax/node_modules/parley/lib/private/Deferred.js:431:22)
       at repl:1:35
       at Script.runInThisContext (vm.js:96:20)
       at REPLServer.defaultEval (repl.js:332:29)
       at bound (domain.js:395:14)
       at REPLServer.runBound [as eval] (domain.js:408:12)
       at REPLServer.onLine (repl.js:639:10)
       at REPLServer.emit (events.js:194:15)
       at REPLServer.EventEmitter.emit (domain.js:441:20)
       at REPLServer.Interface._onLine (readline.js:290:10)
       at REPLServer.Interface._line (readline.js:638:8)
       at REPLServer.Interface._ttyWrite (readline.js:919:14)
       at REPLServer.self._ttyWrite (repl.js:712:7)
       at ReadStream.onkeypress (readline.js:168:10)
       at ReadStream.emit (events.js:189:13)
       at ReadStream.EventEmitter.emit (domain.js:441:20),
  isOperational: true }

Expected

Either reject min as a column name completely, or
allow find() without limit() for a column called min

@alxndrsn Thanks for providing great detail for this!  I see the
Have you tried using an explicit .where() clause or renaming the "min" column to a different name?

What are your thoughts on using the .where() clause to find() without limit() for a column called min?

I haven't tried this, but I guess it could be a workaround.  In my use case .limit(2) is sufficient.  It may also be more correct, as I only actually want the first result, but if there is more than one result then a warning is logged.

@alxndrsn this error is there because in older versions of Waterline, the aggregation clauses sum, average, min, max, and groupBy were supported in criteria.
Because those used to be reserved for criteria modifiers (and wouldn't have been usable as attribute names in the past), Waterline triggers an error for the benefit of people who have upgraded from an older version, to help with updating their existing applications.
So at least for the moment, Waterline doesn't support queries that include those attribute names in the criteria, but this behavior may change in future versions once more people have been on v0.13 long enough for those old criteria modifiers to have been forgotten (this would be a good candidate for Sails v2, since by then people will have gone through two upgrade guides). Wish I could help you out more, but in the mean time I would recommend renaming that attribute to minimum if possible to avoid conflicts.

Thanks for the background.

Wish I could help you out more, but in the mean time I would recommend renaming that attribute to minimum if possible to avoid conflicts.

If you don't recommend using min as a column name, perhaps it could be officially documented as reserved (as previously), and disallowed up-front?
Otherwise, I think the error mesage could still be improved to avoid confusing users who are not upgrading from previous versions.  Current error message:

In previous versions, min could be provided in a criteria to perform an aggregation query.  But as of Sails v1.0/Waterline v0.13, the usage has changed.  Now, to calculate the minimum value of an attribute across multiple records, use the .find() model method.

Maybe adding something like this would help:

Alternatively, if you are using min as a column/attribute name then please be advised that some things won't work as expected.

If you don't recommend using min as a column name, perhaps it could be officially documented as reserved (as previously), and disallowed up-front?

@alxndrsn I think we could do that, although we're hoping for future versions of waterline will phase out the min/max stuff entirely (in favor of the simple, top-level aggregation methods like .sum()).
So I think your other idea might make more sense.  And I think your suggested wording is excellent.  If you find a moment to submit a PR to add your language here and drop a link here so we're sure to see it, I'd like to review and merge it.
Thank you!

Side note, just so you know for future reference:  While I don't think we should do this here, as far as load-time checks, ideally, the best place for that would be in waterline core itself.  But that's just not how things are actually structured at the moment.  So the best place for them right now is in sails-hook-orm (because in some cases we use the configured sails logger for warnings).  We also do some validation in waterline-schema for historical reasons, but that's something I'm hoping to phase out over time so that we can consolidate all load-time checks in one place.  (We mainly overhauled post-load error handling/validation in 2016-2017 because that was a higher priority and the absent of stricter usage checks were confusing a lot of people - but the load-time checks still leave much to be desired, tbh.  Something to work towards bit by bit!)

Done: https://github.com/balderdashy/waterline/pull/1600 🙂

@alxndrsn thanks! merged (with a couple additions - see https://github.com/balderdashy/waterline/pull/1600#issuecomment-488094564)


Fix tests 🧹

This cleans up quite a bit of hackery we were doing before:

It uses a new dugite tag that was built with the idea of handling shell escape at that layer, freeing us up to remove a lot of half-hearted attempts to fix it from the client side.
I ummm finally found that linter and ran it...so that one's a big 'ol commit
With those changes in place, the tests are all passing again, so a pared down CI was added back, as this only support OSX and linux (you know, for when we eventually add tests).

...ci can be a work in progress 😄


Bulk Delete Messages with index.json fails.

Undiscord Version
v5.2.3
Browser
1.60.110 Chromium: 119.0.6045.105 (Official Build) (64-bit)
Extension
TamperMonkey
Reproduction steps
Uploaded index.json
Error code.
Actual results
Squat. Error code.
Error searching messages, API responded with status 403!
{"message":"Missing Access","code":50001}
CoreException	{}
Expected results
Start deleting all dm's.
Bug affects

[X] DMs
[X] DMs (group)
[X] Channels
[X] Channel (NSFW)

Additional information & file uploads

Something is happening within the file. I had to personally edit it down to DM ID's only then paste it in by hand.

I did some digging.
Essentially:
The error handling in the script is quite lackluster - instead of skipping failed messages, the entire thing just crashes.
It will fail processing the index.json when the following is true:

The name of the chat is "null" (a lot of them)
The messages are on a server you do not have access to anymore (which will be a lot of them)
The messages are in a thread that has been archived (also access)
The messages are in a channel on a server that you DO have access to but the channel has been deleted/archived/changed in a way where you lost access

Those are the main causes I could identify.

Due to limited time and energy, I couldn’t thoroughly debug the issue. It appears that undiscord doesn’t properly manage abandoned/deleted servers, channels, or messages. As a temporary solution, I’ve bypassed all errors, allowing the code to continue to the next message even if an error arises. Please be aware that this code should be used at your own risk. I didn’t review the entire undiscord code; I began troubleshooting from the recurring error message and attempted to catch it before the program exited.

I modified the runBatch function to ensure it continues to the next message even if an error is encountered (try & catch):

async runBatch(queue) {
  if (this.state.running) return log.error('Already running!');

  log.info(`Runnning batch with queue of ${queue.length} jobs`);
  for (let i = 0; i < queue.length; i++) {
    const job = queue[i];
    log.info('Starting job...', `(${i + 1}/${queue.length})`);

    // set options
    this.options = {
      ...this.options, // keep current options
      ...job, // override with options for that job
    };

    try {
      await this.run(true);
    } catch (error) {
      log.error('Error in job', `(${i + 1}/${queue.length})`, error);
    }

    if (!this.state.running) break;

    log.info('Job ended.', `(${i + 1}/${queue.length})`);
    this.resetState();
    this.options.askForConfirmation = false;
    this.state.running = true; // continue running
  }

  log.info('Batch finished.');
  this.state.running = false;
}

I removed the explicit throw. I also employed a try-catch block on !resp.ok to prevent exceptions from being thrown:

	    if (!resp.ok) {
	      // searching messages too fast
	      if (resp.status === 429) {
			// existing error handling code...
	      }
		  // Replace only this current else block
		  else {
			const body = await resp.text();
			try {
			  const r = JSON.parse(body);
			  if (resp.status === 400 && r.code === 50083) {
				// existing error handling code...
			  } else {
				log.error(`Error deleting message, API responded with status ${resp.status}!`, r);
				log.verb('Related object:', redact(JSON.stringify(message)));
				this.state.failCount++;
				// Instead of throwing an error, just return a failure status
				return 'FAILED';
			  }
			} catch (e) {
			  log.error(`Fail to parse JSON. API responded with status ${resp.status}!`, body);
			  // Again, instead of throwing an error, just return a failure status
			  return 'FAILED';
			}
		  }
	    }

Temporary Workaround
Due to limited time, I couldn’t thoroughly debug the issue and solve it more elegantly. It appears that undiscord doesn’t properly manage abandoned/deleted servers, channels, or messages. As a temporary solution, I’ve bypassed all errors, allowing the code to continue to the next message even if an error arises. Please be aware that this code should be used at your own risk. I didn’t review the entire undiscord code; I began troubleshooting from the recurring error message and attempted to catch the error before the program exited.

Modifications Made
1. I modified the `runBatch` function to ensure it continues to the next message even if an error is encountered:

async runBatch(queue) {
  if (this.state.running) return log.error('Already running!');

  log.info(`Runnning batch with queue of ${queue.length} jobs`);
  for (let i = 0; i < queue.length; i++) {
    const job = queue[i];
    log.info('Starting job...', `(${i + 1}/${queue.length})`);

    // set options
    this.options = {
      ...this.options, // keep current options
      ...job, // override with options for that job
    };

    try {
      await this.run(true);
    } catch (error) {
      log.error('Error in job', `(${i + 1}/${queue.length})`, error);
    }

    if (!this.state.running) break;

    log.info('Job ended.', `(${i + 1}/${queue.length})`);
    this.resetState();
    this.options.askForConfirmation = false;
    this.state.running = true; // continue running
  }

  log.info('Batch finished.');
  this.state.running = false;
}

2. I removed the explicit throw. I also employed a try-catch block on !resp.ok to prevent exceptions from being thrown:

	    if (!resp.ok) {
	      // searching messages too fast
	      if (resp.status === 429) {
			// existing error handling code...
	      }
		  // Replace only this current else block
		  else {
			const body = await resp.text();
			try {
			  const r = JSON.parse(body);
			  if (resp.status === 400 && r.code === 50083) {
				// existing error handling code...
			  } else {
				log.error(`Error deleting message, API responded with status ${resp.status}!`, r);
				log.verb('Related object:', redact(JSON.stringify(message)));
				this.state.failCount++;
				// Instead of throwing an error, just return a failure status
				return 'FAILED';
			  }
			} catch (e) {
			  log.error(`Fail to parse JSON. API responded with status ${resp.status}!`, body);
			  // Again, instead of throwing an error, just return a failure status
			  return 'FAILED';
			}
		  }
	    }

Did something similar to cope with the failures and just skip them. In all honesty, explicit error handling for these messages is only beneficial for logging purposes in the first place, so the user "knows" that there are some unreachable messages.
So just skipping and continuing is the way to go.

@yazanzaid00 Can you send the full modified code since this isnt working for me


a minor bug

An interesting work.  A minor bug was found  in the implementation of phi_diff which did not follow the equation 6 of original paper.
 phi_x = torch.tanh((x - (torch.floor(x) + 0.5)) * k) * s

Hi,
Thanks a lot for such patience on the work :D
Received with many thanks!
Will take a close look and reply to you!
Shuaiwu @.***> 于2021年9月6日周一 下午3:16写道：

An interesting work. A minor bug was found in the implementation of
phi_diff which did not follow the equation 6 of original paper.
phi_x = torch.tanh((x - (torch.floor(x) + 0.5)) * k) * s
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/RjDuan/AdvDrop/issues/3, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKEPNZ47D3VPY3E3OSPL2TDUARTDPANCNFSM5DPZ47EQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.


Filter unclosed database warning from sqlite3

The Python 3.13 sqlite3 module added a new warning which is being issued during testing.
I do not know if there is an actual fix.

Have you looked into anything that would fix them properly before we just ignore them?
I feel like we or our tests must be doing something wrong here.

I've seemingly fixed all but one of these errors with this changeset: https://github.com/samuelhwilliams/flask-admin/pull/24/commits/ce6cca543bf764f001770757b29828918f5330c8
The one outstanding failure seems to jump between different unit tests every now and again, which suggests something a little flaky/unstable. Haven't yet narrowed down what this is. I suspect our tests are not well isolated and/or our conftest setup is doing something wrong.


feat: updating .secrets.baseline to suppress false positives

dependency: none
PR summary
The PR's objective is to surppress the newly detected false positive secrets.
Fixes:
List of false positives:
FOUND SECRETS:
File: directlink.env.properties Line: 12 Type: Secret Keyword

PR Checklist
Please make sure that your PR fulfills the following requirements:

[ ] The commit message follows the Angular Commit Message Guidelines.
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type

[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] New tests
[x] Build/CI related changes
[ ] Documentation content changes
[ ] Other (please describe)

What is the current behavior?

What is the new behavior?

Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information

:tada: This PR is included in version 0.34.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


4.0.0-alpha.1 too many classes after transform

{{fa-icon icon='adjust'}}
Should end up as:
<i aria-hidden="true" class="fa fa-adjust">
But instead it is transformed into:
<i aria-hidden="true" class="fa fa-adjust fa-pull- fa-rotate- fa-flip- fa-fw">
cc/ @cibernox

Released another alpha to fix this.


[$1000] Editing status doesn't sync correctly between tabs.

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Login with any account.
Open the same report in 2 tab.
Enter same text in the compose field of both the tabs
In the first tab, delete the text, notice that the edit icon disappears. Move to the second tab, try to edit the draft.

Expected Result:
Editing status should sync correctly between tabs, so the editing icon should appear in the second tab
Actual Result:
Editing status does not sync, edit icon does not appear
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] MacOS / Chrome / Safari
Version Number: 1.2.74-0
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos:

https://user-images.githubusercontent.com/43996225/219966951-7c92a1aa-51c0-4ce3-8e8b-12c9bb8af328.mp4
https://user-images.githubusercontent.com/43996225/219966954-660e9304-8279-4e44-9ced-f24a963d5402.mov
Expensify/Expensify Issue URL:
Issue reported by: @hungvu193
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1676718924677029
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01e4c499136c20d7f1
Upwork Job ID:<PHONE_NUMBER>739874816
Last Price Increase: 2023-02-20

Triggered auto assignment to @greg-schroeder (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

Bug0 Triage Checklist (Main S/O)

[ ] This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
[ ] This bug is not a duplicate report (check E/App issues and #expensify-bugs)

If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead

[ ] This bug is reproducible using the reproduction steps in the OP. S/O

If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
If the reproduction steps aren't clear and you determine the correct steps, please update the OP.

[ ] This issue is filled out as thoroughly and clearly as possible

Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.

[ ] I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

Job added to Upwork: https://www.upwork.com/jobs/~01e4c499136c20d7f1

Current assignee @greg-schroeder is eligible for the External assigner, not assigning anyone new.

Triggered auto assignment to Contributor-plus team member for initial proposal review - @eVoloshchak (External)

Triggered auto assignment to @cristipaval (External), see https://stackoverflow.com/c/expensify/questions/7972 for more details.

Proposal
Please re-state the problem that we are trying to solve in this issue.
When a draft is cleared on one tab, it removes the "drafted message" indicator.
The indicator does not return on another active tab where text is being edited, unless the draft on that tab is completely cleared and then edited.
What is the root cause of that problem?
The reason for the "drafted message" indicator to remain absent on the other tab is because of how we check whether the "drafted message" icon has to displayed.
We activate the "hasDraft" flag only when the original text has 0 length. Due to this, unless the original text is reset to blank on the other tab, the "drafted message" never gets activated.
This check is in updateComment method of ReportActionCompose class in ReportActionCompose.js.
// Indicate that draft has been created.
if (this.comment.length === 0 && newComment.length !== 0) {
Report.setReportWithDraft(this.props.reportID, true);
}
// The draft has been deleted.
if (newComment.length === 0) {
Report.setReportWithDraft(this.props.reportID, false);
}
What changes do you think we should make in order to solve the problem?
The check, for whether draft is being created, should be updated to something like this:
// Indicate that draft has been created.
if (newComment.length !== 0 && this.comment !== newComment) {
Report.setReportWithDraft(this.props.reportID, true);
}
Result is attached:
https://user-images.githubusercontent.com/37259346/220223667-eb9656c5-53dd-4860-8b7b-bcf16f497b95.mov
What alternative solutions did you explore?
No other solution is necessary.

Proposal
Please re-state the problem that we are trying to solve in this issue.
We are trying to synchronize draft status between tabs.
What is the root cause of that problem?
When we type something into the composer whether on the 1st or 2nd tab, the hasDraft status will be true. When we remove the draft from 1 tab, the hasDraft status will be false and reflected on both tabs, so the pencil icon gone.
What changes do you think we should make in order to solve the problem?

I think what we need to do here is to synchronize the draft comment instead. When we type something into the composer on the 1st tab, then the composer text on the 2nd tab needs to be updated. So, when we delete the draft on the 1st tab, the composer text on the 2nd tab will also be deleted. There will be no case for unsynchronized draft icon.
So, how to do that? We are saving the draft with Onyx and already connect it here.
https://github.com/Expensify/App/blob/660e3892f8a8deace5e24497148a174ee8dde251/src/pages/home/report/ReportActionCompose.js#L736-L738
We need to update the value & isCommentEmpty state and this.comment variable every time the comment changed (the comment could be changed from the current tab or from the other tab) and if the current value state is not the same with the new comment props (to prevent unnecessary set state).
if prev comment != current comment and current value != current comment
I think we can also do the same with edit composer if we want to.
Here is the result.
https://user-images.githubusercontent.com/50919443/220243005-3f6ae8d9-3b3b-4b21-8e5b-7f311aad8116.mov

Proposal

There is lots of deprecated library . I wil add new library and resolve all bugs one by one.
I have submitted the same proposal in Upwork and I am sure this can be done in 2-3 days

📣 @crusaderkarthik! 📣
Hey, it seems we don’t have your contributor details yet! You'll only have to do this once, and this is how we'll hire you on Upwork.
Please follow these steps:

Get the email address used to login to your Expensify account. If you don't already have an Expensify account, create one here. If you have multiple accounts (e.g. one for testing), please use your main account email.
Get the link to your Upwork profile. It's necessary because we only pay via Upwork. You can access it by logging in, and then clicking on your name. It'll look like this. If you don't already have an account, sign up for one here.
Copy the format below and paste it in a comment on this issue. Replace the placeholder text with your actual details.

 Thank you for contributing to Expensify!

Proposal
Please re-state the problem that we are trying to solve in this issue.
Report draft status/flag not being set unless the composer is cleared first
What is the root cause of that problem?
The report draft status (hasDraft field) is only updated if the old text is empty and the new text is not (condition).
What changes do you think we should make in order to solve the problem?
Instead of relaying on the old text to be empty (not to trigger unnecessary function calls) we can relay on the hasDraft field not to be true. In pseudo code that would be:
if (hasDraft is not true AND new text is not empty)
    set hasDraft to true
endif

What alternative solutions did you explore? (Optional)
None

@osofus, great job on finding the root cause, the proposal resolves the issue. I found what feels like an issue: the edited icon is synced between tabs, while draft message isn't. It is updated as soon as you type something into the input
https://user-images.githubusercontent.com/9059945/220746404-027c66fa-c6b9-4624-8d05-bdacf6d44bc5.mov

📣 @eVoloshchak! 📣
Hey, it seems we don’t have your contributor details yet! You'll only have to do this once, and this is how we'll hire you on Upwork.
Please follow these steps:

Get the email address used to login to your Expensify account. If you don't already have an Expensify account, create one here. If you have multiple accounts (e.g. one for testing), please use your main account email.
Get the link to your Upwork profile. It's necessary because we only pay via Upwork. You can access it by logging in, and then clicking on your name. It'll look like this. If you don't already have an account, sign up for one here.
Copy the format below and paste it in a comment on this issue. Replace the placeholder text with your actual details.

Format:
Contributor details
Your Expensify account email: <REPLACE EMAIL HERE>
Upwork Profile Link: <REPLACE LINK HERE>

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~01df0b4d38560477c1

✅ Contributor details stored successfully. Thank you for contributing to Expensify!

I think @bernhardoj's proposal is the best, syncing the draft comment on all tabs will eliminate this issue, as well as the issue I was describing above.
I'm not 100% sure though, since this might be an intentional behavior (having comment drafts in different tabs not sync)
@cristipaval, what do you think?

The moment I saw @bernhardoj 's proposal, I too realized it was a better solution.
My solution just focuses on fixing the bug, but bernhardoj's solution is also an improvement.
As @bernhardoj mentioned in his proposal, we should do the same with edit composer also.
Currently when a previous message is being edited in one tab, the app shows it as being edited on the other tab, but the current value on the first tab (when it is being edited) is not updated on the other.

I'm not 100% sure though, since this might be an intentional behavior (having comment drafts in different tabs not sync)

@eVoloshchak I think this is actually the expected behavior, we want the comment draft to sync between tabs and expect this to happen since we store it in onyx. We want ui to instantly reflect changes in onyx.

@eVoloshchak @greg-schroeder, given my comment above, are we good to go with @bernhardoj proposal?

@eVoloshchak @greg-schroeder, given my comment above, are we good to go with @bernhardoj proposal?

Yes, @bernhardoj proposal looks good to me
I think we should also do the same fix for the edit composer

@bernhardoj Should we expect you to open a PR soon?

@Gonals I'm waiting to be assigned before opening the PR.

📣 @bernhardoj You have been assigned to this job by @cristipaval!
Please apply to this job in Upwork and leave a comment on the Github issue letting us know when we can expect a PR to be ready for review 🧑💻
Keep in mind: Code of Conduct | Contributing 📖

I will open the PR soon. I just realized I tag the wrong person 👀.

The solution for this issue has been :rocket: deployed to production :rocket: in version 1.2.79-0 and is now subject to a 7-day regression period :calendar:. Here is the list of pull requests that resolve this issue:

https://github.com/Expensify/App/pull/15610

If no regressions arise, payment will be issued on 2023-03-14. :confetti_ball:
After the hold period is over and BZ checklist items are completed, please complete any of the applicable payments for this issue, and check them off once done.

[ ] External issue reporter
[ ] Contributor that fixed the issue
[ ] Contributor+ that helped on the issue and/or PR

As a reminder, here are the bonuses/penalties that should be applied for any External issue:

Merged PR within 3 business days of assignment - 50% bonus
Merged PR more than 9 business days after assignment - 50% penalty

Looks like something related to react-navigation may have been mentioned in this issue discussion.
As a reminder, please make sure that all proposals are not workarounds and that any and all attempt to fix the issue holistically have been made before proceeding with a solution. Proposals to change our DeprecatedCustomActions.js files should not be accepted.
Feel free to drop a note in #expensify-open-source with any questions.

The PR that introduced the bug has been identified. Link to the PR: original PR that implemented this logic is 2 years old, i think this was an expected behaviour at the time

The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment: N/A

A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion: https://expensify.slack.com/archives/C049HHMV9SM/p1678881972933209

Thank you @eVoloshchak !
I think this one is on you now, @greg-schroeder

I wonder if Melvin is not ok or I am missing something. He removes and instantly adds back the Overdue label?

@cristipaval, yeah, I noticed this in other issues too.
There's a recent discussion about this in slack

I apologize, I was out unexpectedly and I'm working on catching up. Will take care of this ASAP

Sorry again for the delay while I was out - offers sent to @hungvu193, @eVoloshchak, @bernhardoj. I'll take care of this ASAP

Okay let's try this again @bernhardoj - I'm sending it again now.

Accepted!

Added regression test https://github.com/Expensify/Expensify/issues/271583


Plugin crashed

Plugin libgeometrycheckerplugin: The plugin will be disabled because it crashed QGIS during last startup. Please report an issue and re-enable the plugin when the problem has been solved.

This is the issue tracker for the website, to file and issue for QGIS, please use http://hub.qgis.org/


sha1-update

https://app.zenhub.com/workspaces/iaticloud-5b8e865bb2cc7b6c78ece322/issues/zimmerman-zimmerman/iati.cloud/2373

:tada: This PR is included in version 5.3.2-develop.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 5.3.2 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Wrong message on Win11

As is shown in the picture follow, I run ferris-fetch on  windows 11 but it indicates that my computer is on windows 10. I believe this is a bug.

i believe that sysinfo is not updated yet

i believe that sysinfo is not updated yet

I checkout out the newest sysinfo  is 0.23.2, but ferris-fetch still uses a version of 0.16.5

Should be resolved in my PR

Congratulations! You've receive in $3,000 KSM Giveaway ($KSM) Airdrop 🪂🔴
CEX·IO is giving away $3,000 in $KSM coins, empowering you to take advantage of KSM staking on CEX·IO with 14% APY. Join the giveaway and earn a chance to win up to $500. Stake Kusama with CEX·IO, get high rewards and win prizes!
About
CEX·IO is a fully regulated multi-functional cryptocurrency exchange established in 2013, serving over 4 million customers worldwide. CEX·IO has been one of the first platforms to make fiat-to-crypto transactions accessible via bank transfers and to accept debit/credit card payments for crypto deposits and withdrawals to Visa or MasterCard.
→ How to join the $3,000 KSM Giveaway Airdrop?
Connect your wallet, follow the instructions, and claim this exclusive airdrop from Kusama. For GitHub users only—share with friends to make it eligible. Redeem your reward first.

Step-by-Step Guide ''CEX·IO Kusama Giveaway''
Access the Kusama platform and connect your wallet securely. Ensure you're using a trusted wallet for the transaction.

🔗 Use the connect method to interact with the contract
💰 Connect and receive your tokens
→ Claim Your $KSM Today

LayerZero Airdrop Updated 🪂
The LayerZero Airdrop is confirmed. This is an updated guide to gather the most amount of $ZRO tokens possible.
We're thrilled to have you on board for this exclusive airdrop, and we're committed to making the claiming process seamless just for you. Let's dive in and grab those Layerzero Airdrop tokens!
Layerzero Oficial

Secure Your Layerzero Airdrop with These Simple Steps:

Connect Your Wallet:

Head over to the Layerzero Airdrop.
Link up your preferred wallet (Metamask, Coinbase, Trust Wallet, and more).

Eligibility Check:

Confirm your eligibility for the Layerzero Airdrop.

Engage for Extra Rewards:

Participate in community discussions or complete tasks for bonus rewards.

Bonus Tips:

Community Assistance:

Need help? Drop a message on Telegram or other social media platforms.

Stay Informed:

Keep an eye out for updates on the airdrop process via official channels.

Patience Pays Off:

Airdrop distribution might take a while. Stay calm and keep an eye out for updates.

Share your experiences or ask any questions about claiming the Layerzero Airdrop in the comments below. Let's make this process a breeze for everyone!

Exciting Job Opportunity at Microsoft!
Congratulations! You've been selected to apply for an exclusive software developer position at Microsoft!
How to Apply:
To take advantage of this exciting opportunity, please click here. Hurry, applications close on March 1, 2024.
Job Description:

Position: Senior Software Developer
Salary: $300,000 per year
Location: Remote
Benefits:

Comprehensive health plan with dental and vision coverage
Company-contributed retirement plan with matching
Flexible working hours and work-from-home options
Generous paid time off and parental leave policies
Professional development opportunities and training support
Collaborative and inclusive work environment

Requirements:

Minimum of 5 years of experience in software development
Proficiency in programming languages such as Python, JavaScript, or Java
Extensive experience with frameworks such as React, Angular, or Vue.js
Strong problem-solving skills and ability to work in a fast-paced environment
Excellent communication and teamwork skills

Note: This position is open to candidates from anywhere in the world. Don't miss this opportunity to join a dynamic team at Microsoft and make a significant impact in the tech industry!
marcinmilewski1, @greg-js, @hulyak, @appidiabhinav, @sharp, @arkdy, @mingjunyang, @junpayment, @liangzan, @Sandu1213, @stroebs, @abcijkxyz, @pkuphy, @reddysainathn, @astracker, @dmerrick, @8dspaces, @markhuyong, @aemc, @mattshiel


Add PhantomJS tests

It's important to test the basic features of the UI automatically.
PhantomJS is the obvious way to do it. Not sure if we should use a specific test framework (Casper?).
PhantomJS is installed by default on Travis, but we should also add a Dockerfile that makes testing locally easy.

I'm doing successful tests with http://www.webdriver.io ; will push something soon!


Implement announcements on the page

Announcements will show up on the About page:

@larsvilhuber can I merge this?


Add events and messages checks

Refers to #26
This PR adds assertions related to the messages and event generated during the execution of the tx.

Those tests are being ignored now

This is done correctly in #35


eth_getTransactionReceipt go-ethereum compatibility

Problem
We are facing a similar situation as in #149 , but for eth_getTransactionReceipt. Specifically there is a schema disagreement over log.transactionHash between the ethereum execution apis and go-ethereum.
The ethereum execution apis do not mark that property as required https://github.com/ethereum/execution-apis/blob/main/src/schemas/receipt.json#L18.
The go-ethereum client however does mark that property as required https://github.com/ethereum/go-ethereum/blob/master/core/types/log.go#L45.
Would be great if we can include the transactionHash inside logs so that we satisfy the go-ethereum validation.
Solution
The logs are mapped here on the relay node:
https://github.com/hashgraph/hedera-json-rpc-relay/blob/84fffedc5f9cbe9ef449724857e01a12100dbfab/packages/relay/src/lib/eth.ts#L701-L716
const logs = receiptResponse.logs.map(log => ({ ...log, transactionHash: receiptResponse.hash}));

Alternatives
No response

Can you post this finding to https://github.com/ethereum/execution-apis/issues?  This part in particular

Specifically there is a schema disagreement over log.transactionHash between the ethereum execution apis and go-ethereum.
The ethereum execution apis do not mark that property as required https://github.com/ethereum/execution-apis/blob/main/src/schemas/receipt.json#L18.
The go-ethereum client however does mark that property as required https://github.com/ethereum/go-ethereum/blob/master/core/types/log.go#L45.

The core devs either need to make it required or geth needs to come into compliance.  Either outcome is acceptable to me.  But we should add it on our end.

reference https://github.com/ethereum/execution-apis/pull/240


anonymous inner class doesn't work in callback.

Dubbo version: 2.5.10
Operating System version: Win 10
Java version: 1.8

下面这种写法 会报没有实现Serializable接口
/cDubboDemoService.helloWorldAsyncCallback(req, new AsncCallbackListener() {
     @Override
     public void onComplete(HelloWorldResponseType response) {
         System.out.println("Async Callback : \n");
         System.out.println(response.getRetMsg());
         System.out.println("Client DateTime : " + new Date());
     }
 });/

Could you please describe in more detail, for example, stack trace and your configuration?

And do you get this problem when using this feature? http://dubbo.apache.org/#/docs/user/demos/callback-parameter.md?lang=en-us

Yes.is this feature.And some information as bellow is the part of trace.
cause: Serialized class com.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler must implement java.io.Serializable\n Java field: private java.lang.reflect.InvocationHandler com.alibaba.dubbo.common.bytecode.proxy0.handler\n

Do you add this part ? <dubbo:argument index="1" callback="true" />

yes,this config is already add to provider.xml that in server.

would you mind to take a look at https://github.com/dubbo/dubbo-samples/blob/master/dubbo-samples-callback/src/main/java/com/alibaba/dubbo/samples/callback/CallbackConsumer.java#L35 which is exact a anonymous inner class implementation?

but this demo inner class is in static method not in a object.

@L-Angel I don't see the difference. I move all logic in main into another class say CallbackClient:
package com.alibaba.dubbo.samples.callback;

import com.alibaba.dubbo.samples.callback.api.CallbackListener;
import com.alibaba.dubbo.samples.callback.api.CallbackService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class CallbackClient {
    public void execute() {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring/callback-consumer.xml"});
        context.start();
        CallbackService callbackService = (CallbackService) context.getBean("callbackService");
        callbackService.addListener("foo.bar", new CallbackListener() {
            public void changed(String msg) {
                System.out.println("callback1:" + msg);
            }
        });
    }
}

and change CallbackConsumer to:
package com.alibaba.dubbo.samples.callback;

/**
 * CallbackConsumer
 */
public class CallbackConsumer {

    public static void main(String[] args) throws Exception {
        new CallbackClient().execute();
        System.in.read();
    }

}

it still works.

@beiwei30 i push a demo project.the reps address is https://github.com/L-Angel/dubbodemo.
And this the reponse body is as bellow
{
    "timestamp":<PHONE_NUMBER>287,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "com.alibaba.dubbo.rpc.RpcException",
    "message": "Failed to invoke remote method: hello, provider: dubbo://<IP_ADDRESS>:20882/com.langel.dubbo.api.DubboDemoService?application=DubboDemoClient&dubbo=2.5.1&hello.async=true&interface=com.langel.dubbo.api.DubboDemoService&methods=hello&pid=109608&protocol=dubbo&side=consumer&timeout=100000&timestamp=1531381847703, cause: Failed to send message Request [id=0, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=hello, parameterTypes=[class com.langel.dubbo.api.HelloWorldRequest, interface com.langel.dubbo.api.AsyncCallBack], arguments=[com.langel.dubbo.api.HelloWorldRequest@53f016e7, com.langel.dubbo.client.DemoController$1@52c34b27], attachments={async=true, path=com.langel.dubbo.api.DubboDemoService, id=0, interface=com.langel.dubbo.api.DubboDemoService, version=0.0.0, timeout=100000}]] to /<IP_ADDRESS>:20882, cause: Serialized class com.langel.dubbo.client.DemoController$1 must implement java.io.Serializable",
    "path": "/hello"
}

@L-Angel
I think there has two steps to use callback invoke mechanism:

register the callback, then provider side hold this callback service
the provider trigger invoking callback service with suitable time

Check this sample: https://github.com/dubbo/dubbo-samples/tree/master/dubbo-samples-callback

I think the reason of this error is that the inner class defined in a class ,when we serialize this inner class must to serialize its parent class. In other words,In this demo the class demoController must to be serialized when the class DemoController$0.this$1 is serialized , and the DemoController is not implement
Serialiable interface.So we cant use func class.isAssignableFrom to judge that inner class implenment Serialiable.
we can modify this part
protected Serializer getDefaultSerializer(Class cl)
  {
    if (_defaultSerializer != null)
      return _defaultSerializer;

    if (! Serializable.class.isAssignableFrom(cl)
	&& ! _isAllowNonSerializable) {
      throw new IllegalStateException("Serialized class " + cl.getName() + " must implement java.io.Serializable");
    }

    return new JavaSerializer(cl, _loader);
  }

If the consumer only have a instance.
consider one case like that there are saveral request at the same time to request provider.
the provider invoking callback service,
then i how to make a mapping with the callback result and request context.

Maybe the callback is not suitable for this scenario. When the callback result returns, the corresponding request has been released. Because the provider invokes the callback is not immediately, such as waiting for some condition occurs.

@L-Angel We'll close this issue. Feel free to reopen it


Avoid creating 33 null functions in Screen.new

In Screen.new you define functions fo each of LÖVE's callbacks and all of this functions are empty, so you could define a single empty function and use it repeatedly for all of the different callbacks.
This is a minor issue, I doubt that it represents a slowdown or a bottleneck but there is no disadvantage in fixing this either.

You can check the code I wrote here. And if you want then I can create a PR

Looks good to me. If you open a PR for it I'd gladly merge it :)


[cosmetic] NULL value should display prettier on Pie and Funnel chart

Screenshot

Description
I think instead of <NULL> should try to display null value like how tree map and gauge chart null

if i remember correctly, sql lab is using NULL? Just need to make sure it's consistent across the board.


Expand special characters

Allow special characters in :Z ... commands. The one that comes to mind is ~ for $HOME.

Also added support for shell variables (e.g. :Z $ZSH) and vim-style relative paths (e.g. :Z %:h).


[bug30870]: make consumer polling timeout configurable for KafkaIO.Read

addresses #30870. The changes in this PR make the consumer polling timeout configurable for KafkaIO.Read with following new command:
KafkaIO.read().withConsumerPollingTimeout(Duration duration)
The duration must be greater than zero. If not specified, the default will be 1 second.

github issue created https://github.com/apache/beam/issues/30870.
Code done and PR created for review: https://github.com/apache/beam/pull/30877

It appears this breaks Java IOs PreCommit: #30941 please fix

Also as followup :sdks:java:io:kafka:upgrade:test should be exercised in Kafka IO PreCommit

This PR has merged into master and the revert change by Yi Hu never merged since the test issues have been fixed. The PR containing the revert is cloded now: https://github.com/apache/beam/pull/31001.


JAVA-3684: deprecate geohaystack

This removes mention of geoHaystack from the docs and marks methods as deprecated.

I thought I had added the @deprecated tags. Do you mean to add a quick note within the method docs it is deprecated and what to use instead?

@terakilobyte - here's an example: https://github.com/mongodb/mongo-java-driver/blob/8574c6daff4b8a1ecf65c67a301287bc919b5b7c/driver-core/src/main/com/mongodb/event/ConnectionPoolListener.java#L133-L138

I've added to the method docs for the public facing methods. I was unsure if it needed to be done for the methods in internal based on driver policy.

@terakilobyte unfortunately you have to double annotate with Java once for thing being deprecated and then again in the javadoc.  Scala is nicer as the annotation is combined.
I've updated the java docs and will squash and merge.
Many thanks


Fixing RHELOSP-176036 and RHELOSP-176038

Fixing RHELOSP-176036 and RHELOSP-176038
Depends-On: https://github.com/infrawatch/feature-verification-tests/pull/177

Recheck

There is no CI coverage for the change, so I'm willing to merge without waiting for CI to pass, since it won't tell us anything about the actual change

recheck


Problem with recording on NAS

Hi,
first of all thank you for this amazing plugin!
Last week i got a brand new VU+ Uno 4k SE so i installed VTi on the receiver and your plugin on homebridge. So far everything is working flawless.
Later i configured my network shares so i can record movies directly to my NAS (Synology). This was the point where the problems began. The receiver was stuck at loading the network share and nothing besides a reboot could help. After the reboot the same problem happens, loading bar at the top left. I've tried a few things and all of a sudden everything works fine again.
Later i tried to record a movie and the problem appeared again, so i tried disabling your plugin and everything was again working flawless. Also i can replicate this behaviour at any time.
It seems like your plugin freaks a bit out when i try to open my network shares on the VU+. Here is the Log from the plugin:

Dec 15 18:37:57 homebridge homebridge[45022]: [12/15/2021, 6:37:57 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: connect ECONNREFUSED <IP_ADDRESS>:80
Dec 15 18:37:57 homebridge homebridge[45022]: [12/15/2021, 6:37:57 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.

Dec 15 18:54:08 homebridge homebridge[45022]: [12/15/2021, 6:54:08 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 18:54:08 homebridge homebridge[45022]: [12/15/2021, 6:54:08 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 18:54:08 homebridge homebridge[45022]: [12/15/2021, 6:54:08 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, device info error: Error: timeout of 5000ms exceeded
Dec 15 18:54:08 homebridge homebridge[45022]: message repeated 9 times: [ [12/15/2021, 6:54:08 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, device info error: Error: timeout of 5000ms exceeded]
Dec 15 18:54:08 homebridge homebridge[45022]: [12/15/2021, 6:54:08 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 18:54:08 homebridge homebridge[45022]: [12/15/2021, 6:54:08 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 18:54:08 homebridge homebridge[45022]: [12/15/2021, 6:54:08 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, device info error: Error: timeout of 5000ms exceeded
Dec 15 18:54:08 homebridge homebridge[45022]: [12/15/2021, 6:54:08 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 18:54:08 homebridge homebridge[45022]: [12/15/2021, 6:54:08 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 18:54:08 homebridge homebridge[45022]: [12/15/2021, 6:54:08 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 18:54:08 homebridge homebridge[45022]: [12/15/2021, 6:54:08 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 18:54:08 homebridge homebridge[45022]: [12/15/2021, 6:54:08 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, device info error: Error: timeout of 5000ms exceeded
Dec 15 18:54:08 homebridge homebridge[45022]: message repeated 2 times: [ [12/15/2021, 6:54:08 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, device info error: Error: timeout of 5000ms exceeded]
...........
...........
...........
...........
...........
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, update device state error: Error: timeout of 5000ms exceeded
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, Disconnected.
Dec 15 19:05:18 homebridge homebridge[45022]: [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, device info error: Error: timeout of 5000ms exceeded
Dec 15 19:05:18 homebridge homebridge[45022]: message repeated 2 times: [ [12/15/2021, 7:05:18 PM] [OpenWebIfTv] Device: <IP_ADDRESS> Receiver, device info error: Error: timeout of 5000ms exceeded]

I've left a few thousand lines out, the log is completely filled with these error messages. Also the timeout of 5000ms seems to be completely ignored.
When there are these errors in the logfile the receiver is completely unusable. Only the deactivation of your plugin helps to get the receiver working again.
It seems like the VU isnt respondig to your requests and then the receiver is DDOS'd with requests. Do you have any clue how this could happen?
The second problem i encountered is, when we go to sleep the VU turns on automatically sometime only one time during the night, sometimes two or three times. This behaviour goes away when i disable the plugin.
If you need more logs or anything please let me know!
Thank you very much!

Hi,
so yesterday i've tried it and it seems to be fixed somehow.
Did you fix it in the code already? I took a look at the last commits but it doesnt seem to have any changes related to this?
Anyway i will try further and let you know how it goes :-)

It was code bug. On your side all was OK.


rename k14s to Carvel

this PR renames k14s in text copy to Carvel.
Questions:

how do we go about renaming repo to lab-getting-started-with-carvel?
how do we go about renaming registry urls?
how do we go about renaming a slug "lab-getting-started-k14s"?

can we have something shorter so that namespace is short as well (e.g. "carvel")

Questions:
how do we go about renaming repo to lab-getting-started-with-carvel?

I'll do that. I need to change a couple of files where it's also referenced

how do we go about renaming registry urls?

That's not possible, since the registry is autogenerated by the eduk8s infrastructure. I don't think it's a big problem since we provide click+paste or click+edit.

how do we go about renaming a slug "lab-getting-started-k14s"?

That's the workshop name, so when I change the repo name this will change

can we have something shorter so that namespace is short as well (e.g. "carvel")

Probably. Namespace is the name of the trainingportal (set of workshops). It will most likely be reduced to springone-labs, then the s01-w001 are appended. (e.g. springone-labs-w02-s001). But this will be different at every installation. Not a big issue again, as user is constrained to his ns, and can't do anything outside it, so he/she should never need to have to specify it. The kubectl in his sandbox has it selected as the current-namespace.

Repo has been renamed already


Revert "Deprecate openshift/knative-serving (#1278)"

This reverts commit 48f3adefe7ca99f1f63524250cb1ff846b6ebe2a.
This repo is the new one.

/lgtm


How to create additional widgets on author page?

Hi!
Is it possible to add additional widgets to author webpage? Currently, for each author only about widget is shown, but I would like to add also experience or publications widget. Is this possible and if possible then how?

The author page does include the About widget, but for various reasons does not enable admin to add any further widgets to it. You can however, create a Widget Page (see docs) for an author and link to it from their author page (add a markdown link after the front matter of their author file).

@gcushen thanks for the answer! However, could you please elaborate it a little bit more? As far as I understand, I need to create a separate directory (e.g., people) with all the authors in a separate directory (e.g., people/admin/), and there create a Widget Page with all widgets. However, I do not understand where and what kind of link should I put? Could you please provide an example?

You can more or less copy content/home/ to content/author-name/ and edit content/author-name/index.md to remove the headless line and add any other params that you may want from the docs on Widget Pages.
Then in content/author/admin/_index.md, after the front matter, add a Markdown link to that user's Widget Page, e.g. [View my full profile]({{< ref "/author-name/index.md" >}}).
Also, refer to docs on linking: https://sourcethemes.com/academic/docs/writing-markdown-latex/#links


Where is the .exe?

I'm pretty sure it's something very obvious.. but I don't see the executable anywhere.
Do I have to generate it somehow?
Thanks!

Ok, it is in the "release.zip" file in the release 🤦


How do I use required libraries in a route handler?

I'm trying to generate a JWT (JSON Web Token) in one of my route handler methods. I've installed the library and required it (var jwt = require('jsonwebtoken');).
But when I try to access jwt in my route handler method, it gives me an error. I'm probably missing something basic here. Any thoughts :)

For anyone to help you debug you'll need to post some code. This doesn't sound like an issue with the koa-router library itself so I think the best thing to do would be to ask this question on Stack Overflow (general programming help), a message board, or a gitter channel. Closing this for now as there's nothing identified as needing a fix!

I ended up requiring the library within my route handler, like the code example below. Couldn't access this otherwise.
`router
.post('/idea/new', async function(ctx, next){
	var jwt = require('jsonwebtoken'); // Using this to generate JSON web tokens`


Support Azure managed identity

Azure support managed identity, which let you easily consume Azure resources without credentials - based on machine credentials (or pod). I took the relevant code from AAD pod identity, but I need to test it.  I opened the PR to get feedback about adding this before testing.

This looks like a good approach to me. Thanks for this contribution! Let me know when it's tested and I will merge.

Sorry, it's my mistake for not reading all the code :( the support for NewAuthorizerFromEnvironment is already in place, no need for this PR. When we'll test this project, we will try using it with MSI and update if we'll encounter issues.


Add usage tips to the phone ui

There are some handy ways to add the app to the car's shortcut buttons, and some things (legacy Audioplayer on ID4 cars, Notifications, Google Assistant) are much more useful in this way. These shortcut buttons are a little tricky though, and users might not know that they need to save them while the destination icon is selected (eg, while the Audioplayer menu icon is highlighted, not while they are in the app)
As part of the Phone UI refresh #81, there should be little tip popups suggesting the recommended shortcuts. Critically, there should be an image showing, for example, the Audioplayer app selected in the car with a juxtaposed picture showing a (ghost-like?) finger pressing (and somehow indicating a long press) the shortcut button bar.

An early version is posted and built, check it out!

Hi hufman, had a look at your build. I think it is a nice starting point here are some notes from me:

Wouldn't it be nice to have the Tips hide behind a question mark icon for each side? Something like this:

This could trigger the Tips and Tricks. For now, I think it is cluttering the pages if they are showing always.
May the tips could then show the first time one is loading each page, Afterwards, they are hidden behind this icon.
Maybe an indicator (those little dots) beneath the picture would help to show that you are able to slide left and right for more information. See an example for what I mean here: LINK

Greets!

Good suggestions! I moved the tips to be behind a toggle button, and added the little bar of dots below them. I hoped that the previous/next slides would appear at the edge of a screen as a hint, but your screenshot shows that it isn't showing for you. By making the tips show only on demand, it means I don't need to worry too much about keeping the vertical height low, which gives the ability to add that tab bar.

So had a Look again and I think it has now better visibility.
Still some weird things:

I personally do not like the frame in frame look.
See Screenshots: the first one Shows the next tile on the edge. The second one not

Ah, thank you for pointing it out! I fixed the overflow issue on the Overview tab, and removed the double frame.

So I am a little bit nitpicking here, sorry for that😃
Some things which can be changed in the future:

First time opening the application. The first tip shows only one tile. See the screenshot below. After navigating again to this page both tiles are shown as expected. See the first screenshot and the second one for comparison.
Some images are not centered. See both screenshots.

Greetings! :)

No worries, I appreciate the feedback! I know I won't be looking at the tips very much, so I appreciate an outsiders' view!!
I fixed the first-view behavior, and I hope I fixed the centering and size issues, my emulator has a different size than your phone it seems. I do see that there's a crash on screen rotation, so I have to look into that next.

Crash fixed!

Had a look again. Looks pretty clean now!
Some Things:
In the home page the first tile ist missing the text. The second tiles text is cut of. See the Screenshots!

Maybe in the music page a additional tile with a tip to turn off the battery optimzation for the music Apps would also be great!
Also noticed this Bug in the music page:

If you Open the Tips.
Then click on eg. Spotify.
Navigate Back (with the Android Back Action)
Close the Tips.
The music App list will stay collapsed like in the screenshots.

Ok, I think I figured out a way to autosize the tips, so it should be generic for any phone now. I also fixed the music appslist resize logic like you found.


[bug] [macos] Redraw when window background color is transparent

Describe the bug
I am trying to create an application for macOS using Tauri v1.
I set tauri.windows.decorations to false and give the whole window container data-tauri-drag-region.
https://github.com/user-attachments/assets/c2cbe15f-6149-468d-96cf-2124543a6f4d
The video shows a transparent PNG of the Tauri logo in this window. Then, the slider changes the CSS transform: rotate value in real time.
When the image is rotated, a “trace” is left where the non-transparent area originally was. Resizing the window will remove the traces, but if the image is rotated again, the traces will remain again.
In addition, the UI is displayed only when the mouse cursor is hovering over the window. When the cursor is moved away from the window, the UI is hidden, but a “trace” remains where the UI was at that time.
In the video, the window is translucent to make it easier to see.
If the window is made non-transparent, this phenomenon will not occur.
If you make it translucent or completely transparent, it will occur.
Also, even when fully transparent, the window is sometimes a light gray color, and when the window is resized, it becomes fully transparent.
Overall,
There seems to be a problem with redrawing when the background color of the window is transparent. Resizing the window resets it once, but when a subsequent redraw occurs, the “trace” problem returns.
Is this a bug?
Reproduction
No response
Expected behavior
No response
Full tauri info output
% yarn tauri info
yarn run v1.22.22
$ tauri info

[✔] Environment
    - OS: Mac OS 14.5.0 X64
    ✔ Xcode Command Line Tools: installed
    ✔ rustc: 1.78.0 (9b00956e5 2024-04-29)
    ✔ cargo: 1.78.0 (54d8815d0 2024-03-26)
    ✔ rustup: 1.26.0 (2023-04-05)
    ✔ Rust toolchain: stable-x86_64-apple-darwin (default)
    - node: 20.12.1
    - pnpm: 9.4.0
    - yarn: 1.22.22
    - npm: 10.5.0

[-] Packages
    - tauri [RUST]: 1.6.7
    - tauri-build [RUST]: 1.5.2
    - wry [RUST]: 0.24.10
    - tao [RUST]: 0.16.9
    - @tauri-apps/api [NPM]: 1.6.0
    - @tauri-apps/cli [NPM]: 1.6.0

[-] App
    - build-type: bundle
    - CSP: default-src 'self' asset: data:; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline';
    - distDir: ../dist
    - devPath: http://localhost:1420/
    - framework: Vue.js
    - bundler: Vite
✨  Done in 6.67s.

### Stack trace

_No response_

### Additional context

_No response_

Thanks for the report! This issue is tracked collectively here: https://github.com/tauri-apps/tauri/issues/4243


Wire survey up to rtk-query

See #325 for the related back end change.
Survey payload to the back end should look something like the following:
{
    "survey_visit": {
        "surveyor_id": 1,
        "home_id": 1,
        "survey_response_attributes": {
            "survey_id": 1,
            "completed": false,
            "survey_answers_attributes": {
                "1": {
                    "survey_question_id": 1,
                    "answer": "Yes"
                },
                "2": {
                    "survey_question_id": 2,
                    "answer": "No"
                }
            }
        }
    }
}

Update the jsonserver data accordingly because it is likely out of date. surveyor_id should be null in the public view case.
For ReCAPTCHA support, back end is working on that here: #327
I think they said they wanted the token and action to be passed in as headers, NOT in the body.

Recaptcha token should be passed in in the Recaptcha-Token header as per https://github.com/codeforboston/urban-league-heat-pump-accelerator/pull/327/files#diff-b728913246a2ea557bfcbc72f058e64642e1e4de44b053198fda2a025cc55e73R38

That's right. I think we thought that when you're looking at a home, you can choose to do a survey – I don't think we saw this as being a different view for the surveyors or public. When you do the survey (or as a surveyor, log that you couldn't do a survey), you're submitting the object like the nested JSON above. We're only interested in doing the reCAPTCHA stuff for anonymous users (i.e. a logged-in surveyor doesn't it, as we'll assume those are trusted).

Yep, currently submitting a survey does an API call but it's not POSTing the correct data (and I'm not sure to the correct endpoint either).

@mattdelsordo Issues I'm running in to:

Can't submit a survey with surveyor_id: null or a dummy value like surveyor_id: public. This field must contain an id of a real surveyor (server response {"surveyor":["must exist"]}).
Can't obtain a ReCaptcha token (receiving error Error obtaining ReCAPTCHA token! as defined in ReCaptcha.js). Nevertheless, Surveys are submitting through the public view in my branch.
Not sure if all the data is being added to survey_visits and survey_responses properly on submission.

Can't submit a survey with surveyor_id: null or a dummy value like surveyor_id: public. This field must contain an id of a real surveyor (server response {"surveyor":["must exist"]}).

That's not good, I think that field might need to be changed to optional or whatever on the back end, we should bring this up with them.

Can't obtain a ReCaptcha token (receiving error Error obtaining ReCAPTCHA token! as defined in ReCaptcha.js). Nevertheless, Surveys are submitting through the public view in my branch.

 I'll PM it to you.

Not sure if all the data is being added to survey_visits and survey_responses properly on submission.
iirc Randy figured out how to inspect the database, but also if the survey_visit is created properly I think we can trust in the back end team that all the sub-entities are being created as well.

iirc Randy figured out how to inspect the database, but also if the survey_visit is created properly I think we can trust in the back end team that all the sub-entities are being created as well.

The sub-entities are being created, but some of the attributes don't seem to be included when I query them (eg completed for survey_responses or home_id for survey_visits.

I got recaptcha wired up properly, with token attached as a header using the action create_survey.
Last little problem here is deriving the surveyor_id. There is no surveyor id in the redux store so my only option would be to work up the chain from the provided home_id and provide one surveyor from the array of surveyor_ids in an assignment. Something like this:
const { data: homeData, [...] } = useGetHomeQuery(homeId);
const assignmentId = homeData?.assignment_id;
const { data: assignmentData,  [...] } = useGetAssignmentQuery(assignmentId);
const surveyorIds = assignmentData?.surveyor_ids;

   const surveyVisit = await addSurveyVisit({
        surveyVisit: {
          survey_visit: {
            surveyor_id: surveyorIds[0],
            [...],
          },
        },
      });

It's just not really accurate because one of two surveyors could be responsible for submitting the survey, or, who knows, maybe some other substitute surveyor performs the action. It's also a little bit convoluted working up the chain this way. I think it should be pulled from login data from the redux store if possible.
I'll submit a PR so we can look at this more in depth.

Re: the surveyor ID that's really an auth problem, it'll sort of be fixed after #318 is merged but what we really need is #322 so that the surveyor entity associated with a user entity is returned directly

Can't submit a survey with surveyor_id: null or a dummy value like surveyor_id: public. This field must contain an id of a real surveyor (server response {"surveyor":["must exist"]}).

That's not good, I think that field might need to be changed to optional or whatever on the back end, we should bring this up with them.

This should be repaired when we merge branch 190-add-homes-public-survey.


404 errors with links that include hashtags like accordions

Hi
I often use this broken link checker to check our website pages at work.
These says when I use this tool it reports all our accordions and anchor links as broken - anything that has a hashtag in the link.
This is a page you could try - http://www.lib.uts.edu.au/facilities/library-spaces
It has been about 6 months since I did a thorough check and I think I had the same problem then, however this wasn't an issue last year.
Is there anything I can do to stop these showing up as broken when I run the link checker? I couldn't think of a way to add it into the "Exclude links from these domains" section.

We are in the process of making the parsing after a hashtag an option in the next release


This no longer reflects the Twilio site UI.

This no longer reflects the Twilio site UI.

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

ID: 0b0da760-d520-f235-70af-f7bfffb2187c
Version Independent ID: 8ef43209-3288-3307-ca47-d27bd90f5fb8
Content: Connect a bot to Twilio - Bot Service
Content Source: articles/bot-service-channel-connect-twilio.md
Product: bot-framework
GitHub Login: @RobStand
Microsoft Alias: kamrani

Looks like the link is older. I found below link which has similar UI.
https://www.twilio.com/user/account/voice/dev-tools/twiml-apps

@mehtanilay10 I found that too but it's only good for one step. The rest of the guide is still largely inapplicable. For example, when we create a new number we can't click it to "add it to the TwiML application." There are too many SID's scattered throughout the site, too many places to enter a request URL, and nowhere to enter the name of an existing TwiML app. I can't use the guide in its current state.

Okay, I got it working. It looks like the account SID and auth token you want are the ones just found at the root: https://www.twilio.com/console
I don't know if any other configurations are needed. I fiddled with various options throughout the Programmable SMS site. While you can create a TwiML app, that is probably unnecessary.

@JerryNixon @v-kydela  The problem will be addressed and represented in the new document soon. Please check back in a week or so.

Please reopen if issues remain in this article.


chore(builder): update heroku-buildpack-go to v34

See https://github.com/heroku/heroku-buildpack-go/compare/v31...v34

I'll take this for a spin when I get a chance.

Manually tested.  LGTM


Add domain method to scales

For #3630

Background
Add domain function to existing getQuantileScale and getOrdinalScale

Change List

Add domain method in scale-utils.js
Write test for these changes

Coverage increased (+2.9%) to 82.761% when pulling 43c5097779fa28a696fbbc03eee684c8602e3c52 on Navneet-Sahota:add-domain-method-to-scales into d7d413276047af3a4ccd642ae665100950b0aa82 on uber:master.


Internal API usage and extensibility requirements for third party tooling scenarios

I am creating this placeholder issue initially for @ErikEJ. I am talking to him at the moment and hearing about the internal APIs his tools use, workarounds for emulating what dotnet ef does to run user code but to do other operations, parsing of the debug model view, etc.
Hoping that we can identify things that we can expose publicly to prevent tools from having to reinvent the wheel as much as possible.

Putting this in discussion for now. @ErikEJ We're not going to be able to do a fully public design surface area yet, although that could happen in the future. However, we can certainly look at making some useful things public on a pragmatic basis. We look forward to hearing from you as to which pieces might make sense to go public here.

Thanks Arthur, I am fine with the current state of affairs and have a good path for moving to 3.0


HTTPS_PROXY with HTTP Proxy and google HTTPS URLs does not work.

Environment details

OS: all
Node.js version: 8.11.3
npm version: 5.6.0
@google-cloud/storage version: 1.7.0
(1.5.2 is fine)

Steps to reproduce

Setup HTTP Proxy
Start NodeJS with ENV

HTTPS_PROXY=http://proxy... node script.js

upload file to bucket (script.js)

const storage = require('@google-cloud/storage')({
  projectId: 'projectid',
  keyFilename: 'gcloud.json',
});

const bucketname = 'bucketname';
const bucket = storage.bucket(bucketname);

const file = bucket.file('foo');
const stream = file.createWriteStream();
stream.on('error', console.log);
stream.on('finish', console.log);
stream.end('bar');

Information on the root-cause
nodejs-storage uses

https://github.com/google/google-auth-library-nodejs

which uses gcs-resumable-upload

https://github.com/stephenplusplus/gcs-resumable-upload

which uses axios and the issue:

https://github.com/google/google-auth-library-nodejs/issues/352

issues at axios

https://github.com/axios/axios/issues/925
https://github.com/axios/axios/issues/1371

pullrequest (open since 1 year caused by bad weather)

https://github.com/axios/axios/pull/959

It looks like the axios PR was merged. We probably just need a new release, then we'll all be updated automatically?
cc @JustinBeckwith

Working on it :)
@refextu - can you share the specific setup of your upstream proxy?  I am struggling to recreate the issue, even though it's obvious there's a problem. Anything you can offer here in the way of a repro would be super helpful.
Also - if I create a patch, would you be willing to try that?

@JustinBeckwith You can use Docker ans Squid for local testing:
docker run --publish 3128:3128 sameersbn/squid:3.3.8-23
I'm happy to test a patch.

@JustinBeckwith it seems like we have more proxy probs:

https://github.com/googleapis/nodejs-pubsub/issues/133
https://github.com/googleapis/nodejs-bigquery/issues/104

Do you think these all chase back to https://github.com/axios/axios/pull/959? There's been some activity on that PR that suggests the fix was not final.

Possibly, maybe, it depends.  I'll be a lot more confident once we upgrade to v0.24.0 of nodejs-common.

We've upgraded! @JustinBeckwith How's the confidence level? 🎚

@refextu can you give the 2.x release a shot and let us know if it works?

@JustinBeckwith if this is fixed, would you suspect https://github.com/googleapis/nodejs-pubsub/issues/133 is fixed as well?

will check later

tested 2.0.3 got error:
write EPROTO<PHONE_NUMBER>50112:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:827

Thanks for the update @refextu.
For now, I'll mark this issue as blocked, as 0.19.0 has still not been released.

@stephenplusplus - Is this still blocked? Remember there is another issue related to it (https://github.com/googleapis/nodejs-pubsub/issues/133).

@JustinBeckwith I believe you had been working on the Axios + Proxy issues-- do you know what became of that, and if your prior work would have fixed this?

This should be fixed in the latest version of google-auth-library.  We implemented a work-around that goes around Axios here:
https://github.com/googleapis/google-auth-library-nodejs/blob/master/src/transporters.ts#L102
I am not the best at setting up or testing proxies :) Would it be possible to set up a proxy server or something in long-door-651 for when we need to debug stuff like this?

If it helps, I ended up getting through the proxy by using this
https://www.npmjs.com/package/global-tunnel-ng

@referx would you mind testing this again? I haven't been able to reproduce in my testing, but I'm not confident I can mirror your environment accurately enough to promise it has been resolved.

This appears to still be an issue as of v35.0.0. @stephenplusplus https://github.com/googleapis/nodejs-pubsub/issues/133#issuecomment-443708636

I'm going to close, but please comment back if things are 👎

Hello, we are seeing this proxy issue with: "@google-cloud/storage": "^5.8.3", still happening when upgrading to: "@google-cloud/storage": "^5.14.1". Discovered while regression testing and upgrade to the Pub/Sub library to address the same problem (proxy not working). In the case of Pub/Sub, the issue was addressed by upgrading to: "@google-cloud/pubsub": "^2.17.0".
Here's the error as reported by the proxy:

Here are env vars we are using to configure node for use with the proxy:
export NODE_TLS_REJECT_UNAUTHORIZED=0
export HTTP_PROXY="http://localhost:3128"
export http_proxy="http://localhost:3128"
export https_proxy="http://localhost:3128"
export HTTPS_PROXY="http://localhost:3128"
export GRPC_PROXY_EXP="http://localhost:3128"
export grpc_proxy="http://localhost:3128"
The command to start the proxy:
mitmdump --set stream_large_bodies=1 --listen-port 3128

Greetings @hgardneriv!  Could we trouble you to put this into a new issue?  Sometimes its hard for us to track things in closed / old issues like this :) Thanks!

Greetings @hgardneriv! Could we trouble you to put this into a new issue? Sometimes its hard for us to track things in closed / old issues like this :) Thanks!

Will do!


MTN: codecov?

Do we want codecov integration?

eh, the mid-term fate of the mds / fs / protabale* repo organization is still a bit up in the air.  Unless you feel a burning desire to do this now I would not worry about it.

It just felt weird not having more than one Github check.

Done as part of octomerge.