Beta Test 4beta3 V4 candidate available

Please test:
http://bwssystems.com/files/ha-bridge-4beta3.2.jar
All items in the issues labeled for milestone V4.0.0 are in this release, click her eto see: https://github.com/bwssytems/ha-bridge/milestone/28
Urls now are created with specifiic information per call. All devices have the multi command construct:
[{"item":<a String that is quoted or another JSON object>,"type":"<atype>"."count":X."delay":X."filterIPs":"<comma separated list of IP addresses that are valid>"."httpVerb":"<GET,PUT,POST>","httpBody":"<body info>","httpHeaders":[{"name":"header name","value":"header value"},{"name":"another header","value":"another value"}],"contentType":"<http content type i.e application/json>"},{"item":<another item>,"type":"<aType>"}]

Here are the fields that can be put into the call item:
String or JsonElement item; Required
Integer count;
Integer delay;
String type; Requried
String filterIPs;
String httpVerb;
String httpBody;
String httpHeaders;
String contentType;
For the type field, it should be one of these (it is the first value in the array:
public class DeviceMapTypes {

	public final static String[] CUSTOM_DEVICE = { "custom", "Custom"};
	public final static String[] VERA_DEVICE = { "veraDevice", "Vera Device"};
	public final static String[] VERA_SCENE = { "veraScene", "Vera Scene"};
	public final static String[] HARMONY_ACTIVITY = { "harmonyActivity", "Harmony Activity"};
	public final static String[] HARMONY_BUTTON = { "harmonyButton", "Harmony Button"};
	public final static String[] NEST_HOMEAWAY = { "nestHomeAway", "Nest Home Status"};
	public final static String[] NEST_THERMO_SET = { "nestThermoSet", "Nest Thermostat"};
	public final static String[] HUE_DEVICE = { "hueDevice", "Hue Device"};
	public final static String[] HAL_DEVICE = { "halDevice", "HAL Device"};
	public final static String[] HAL_BUTTON = { "halButton", "HAL Button"};
	public final static String[] HAL_HOME = { "halHome", "HAL Home Status"};
	public final static String[] HAL_THERMO_SET = { "halThermoSet", "HAL Thermostat"};
	public final static String[] MQTT_MESSAGE = { "mqttMessage", "MQTT Message"};
	public final static String[] EXEC_DEVICE_COMPAT = { "exec", "Execute Script/Program"};
	public final static String[] CMD_DEVICE = { "cmdDevice", "Execute Command/Script/Program"};
	public final static String[] HASS_DEVICE = { "hassDevice", "HomeAssistant Device"};
	public final static String[] TCP_DEVICE = { "tcpDevice", "TCP Device"};
	public final static String[] TCP_DEVICE_COMPAT = { "TCP", "TCP Device"};
	public final static String[] UDP_DEVICE = { "udpDevice", "UDP Device"};
	public final static String[] UDP_DEVICE_COMPAT = { "UDP", "UDP Device"};
	public final static String[] HTTP_DEVICE = { "httpDevice", "HTTP Device"};
}

Filter Ip example:
Turn on Lights in Bedroom 1 (http://api.call.here/1) - Restricted to Echo 1 (<IP_ADDRESS>)
Turn on Lights in Bedroom 2 (http://api.call.here/2) - Restricted to Echo 2 (<IP_ADDRESS>)
Turn on Lights in Bedroom 3 (http://api.call.here/3) - Restricted to Echo 3 (<IP_ADDRESS>)

Device: "Lights"
On URL: [{"item":"http://api.call.here/1", "httpVerb":"POST", "httpBody":"value1=1&value2=2","type":"httpDevice","filterIPs":"<IP_ADDRESS>"},{"item":"http://api.call.here/2", "httpVerb":"POST", "httpBody":"value1=1&value2=2","type":"httpDevice","filterIPs":"<IP_ADDRESS>"},{"item":"http://api.call.here/3", "httpVerb":"POST", "httpBody":"value1=1&value2=2","type":"httpDevice","filterIPs":"<IP_ADDRESS>"}]

The new editing allows you to generate a URL in one tab and keep adding to that url by swithing tabs before you add the device.
For Example:

go to vera devices tab, generate your first device in the list
do not add the device!
got another tab and generate another device.
you will see that it appended the new device!
Voila!

You can do this to an existing device by editing it and then going to another tab.

Already updated jar to 4beta3.1

@bwssytems Looks like the 'bugs' I reported have been fixed.  I like the full width page, and the hidden legacy fields.
BTW, you should promote the new easy to use multiple device adding capability as a way to make "rooms", which is what many are after with the Philips HUE v2 app that can not create rooms on the ha-bridge.  I even have requests to add a rooms feature to my PHP driven ha-bridge control page.

BTW I still have to beat on the Harmony Hub tabs for testing.

Small typo noticed when turning on an activity (spelling of executed):
Request Exceuted: success {"/lights/16/state/on":true}

@audiofreak9 The multi command was the way to do that for rooms and now everything is included in doing that.
@aerickson Thanks for testing! I switched to a new Spark webserver version and it is doing different things now for URLs.  Damn that nest... I thought my new code would take care of that.

@aerickson Do you have spaces turned on in you nest? It is bombing out as there are no rooms i believe. Also, could you turn on debug for the spark webserver, I cannot get mine to do the /(null) issue.

Updated jar to 4beta3.2 Should fix the nest issue and the new editor is debugged and the new display in each of the type tabs have a new configured items display

@bwssytems Using 4beta3.2

Add or Update device still requires the "Map Type (Legacy)" drop-down to be populated, otherwise java errors.  Even when "Type" is set for each of the On/Dim/Off Items.  Console error returns same "read/null" error as my previous posts.

Update Console Error:
angular.js:14328TypeError: Cannot read property '0' of null     at m.$scope.editDevice (app.js:2164)     at fn (eval at compile (angular.js:15156), <anonymous>:4:162)     at e (angular.js:26744)     at m.$eval (angular.js:17972)     at m.$apply (angular.js:18072)     at HTMLButtonElement.<anonymous> (angular.js:26749)     at HTMLButtonElement.dispatch (jquery-1.11.3.min.js:4)     at HTMLButtonElement.r.handle (jquery-1.11.3.min.js:4)
Add Console Error:
TypeError: Cannot read property '0' of null     at m.$scope.editDevice (app.js:2164)     at fn (eval at compile (angular.min.js:1), <anonymous>:4:161)     at e (angular.js:26744)     at m.$eval (angular.js:17972)     at m.$apply (angular.js:18072)     at HTMLButtonElement.<anonymous> (angular.js:26749)     at HTMLButtonElement.dispatch (jquery-1.11.3.min.js:4)     at HTMLButtonElement.r.handle (jquery-1.11.3.min.js:4)

When Target is left blank no Target is populated, aka no "default" Target defined?

When the "Clear Device" button is clicked the "Map Type (Legacy)" drop-down is not cleared.

Harmony Activities Generate and Devices Build works perfectly.

Did you see the second Harmony Skill released today for Alexa?  It uses the "Alexa, tell Harmony to raise the volume" or "Alexa, tell Harmony to pause" or "Alexa, tell Harmony to play", etc...

@bwssytems Using 4beta3.2

When editing a device, if you Delete one of the listed On, Dim or Off Item entries using the "Del" button ALL listed Item entries are removed from view, not just the one in the row for which you click the "Del" button.

If you then click "Update Bridge Device" with all of the On, Dim or Off Item entries deleted, that On, Dim or Off Item still has an Item Target input set to "[]" empty brackets, rather than just "" - fully empty.

@audiofreak9 Thanks for all that testing. This editor I hope is better for going forward, but a lot of details to test and also keeping backwards compatibility for upgrades.

@bwssytems I have to agree this editor is far and away better.  Lots of logic to keep legacy working I'm sure!

@bwssytems Enabling Spaces fixed the Nest integration. :)
OK. It only starts happening once I click something in the web interface. How do I turn on debug output for Spark? Adding -Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG didn't seem to give any additional output.
Thanks!

I just updated and have not spent any time in the new editor but can confirm the issue I found with bad hex values is indeed fixed! Thanks for tracking that down and getting it fixed.

How does one throw brightness math into the dim multi constructs?

While my echo dot still talks with the betas, none of the hue apps (gen 1,  all for hue, etc.) on my phone can find it. I have to go back to release, find it, then go back to beta before I  can control ha-bridge from my phone.
Anyone else seeing this?

Hi.
Just flagging a possible issue.
I am running Beta 4Beta3.2 and running TCP commands but they are throwing up the following error:
01-12-2017 07:48:02.792	WARN	Error creating URI http request: tcp://<IP_ADDRESS>:2101/09cn04800CA^ with message: Illegal character in path at index 34: tcp://<IP_ADDRESS>:2101/09cn04800CA^	com.bwssystems.HABridge.plugins.http.HTTPHandler
I'm Presuming its the "^ " that's doing it but this character is needed to run the command.
Reverted back to 3.5.1 and the same command worked fine.
Thanks guys.

Correction, I used to be able to have apps talk to ha-bridge after finding in release and switching back to beta. Now the second I switch back the connection is lost.

@audiofreak9 As far as the target device, it will be blank if it is not filled in. It is not needed. The other items I am fixing.
@pr3sidentspence I will need to try some hue apps to see if they work. Just wondering why you want to use the hue app?
@peadard What is the config of your TCP device for map type or device type. Those are not getting defined into the TCP call,
@aerickson Debugging is set up in the Logs tab now. I deleted that debugging ref in the readme for this release

@bwssytems the device type is set to Custom in V3.5.1. I just checked the Beta and it is set to custom in there too

@peadard I'll need to add logic for custom as the previous default handler did TCP/UDP/HTTP/HTTPS based on the URI start.... The new one defaults to HTTP or HTTPS based on the URI start

@peadard also when building new devices the tire is now set in the item being called in the on/dim/off areas

@bwssytems Ah I see. thanks for the info

Oh that's pretty simple, the echo dot is in the living room, with the x10
stuff, the Philips hue bulbs in the bedroom. We need to be able to turn off
the living room from the bedroom. We have three kids 2-7 years old; yelling
"Alexa!..." down the hallway isn't an option at night.
On Thu, Jan 12, 2017 at 10:51 AM BWS Systems<EMAIL_ADDRESS>wrote:

@audiofreak9 https://github.com/audiofreak9 As far as the target
device, it will be blank if it is not filled in. It is not needed. The
other items I am fixing.
@pr3sidentspence https://github.com/pr3sidentspence I will need to try
some hue apps to see if they work. Just wondering why you want to use the
hue app?
@peadard https://github.com/peadard What is the config of your TCP
device for map type or device type. Those are not getting defined into the
TCP call,
@aerickson https://github.com/aerickson Debugging is set up in the Logs
tab now. I deleted that debugging ref in the readme for this release
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/bwssytems/ha-bridge/issues/355#issuecomment-272217101,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AArbCdVTO8X-r7jnkZ6L6btIgged501kks5rRlosgaJpZM4Len76
.

@bwssytems

I set all of the spark* loggers to debug and only saw one additional message that doesn't seem that helpful (see below).

Aside: Setting loglevel to TRACE doesn't seem to stick (others like info, debug, etc work though).

2017-01-12 23:15:24,376 [qtp275777514-16] INFO  spark.http.matching.MatcherFilter - The requested route [/(null)] has not been mapped in Spark for Accept: [null]
2017-01-12 23:15:51,724 [qtp275777514-13] INFO  spark.http.matching.MatcherFilter - The requested route [/(null)] has not been mapped in Spark for Accept: [null]
2017-01-12 23:16:11,347 [qtp275777514-19] DEBUG spark.Request - matchedPart: :all = false
2017-01-12 23:16:11,731 [qtp275777514-15] INFO  spark.http.matching.MatcherFilter - The requested route [/(null)] has not been mapped in Spark for Accept: [null]
2017-01-12 23:16:14,328 [qtp275777514-13] INFO  spark.http.matching.MatcherFilter - The requested route [/(null)] has not been mapped in Spark for Accept: [null]
2017-01-12 23:16:34,337 [qtp275777514-15] INFO  spark.http.matching.MatcherFilter - The requested route [/(null)] has not been mapped in Spark for Accept: [null]

@aerickson Hmm. That is weird that it doesn't log more than that in debug. We need to see what IP is calling and the format of the message (GET,PUT,POST)...

Starting with a fresh config and db:
2017-01-14 16:51:02,115 [qtp1596909284-21] INFO  spark.http.matching.MatcherFilter - The requested route [/(null)] has not been mapped in Spark for Accept: [null]
This keeps getting logged although the browser is not making any requests.
One the Bridge Control tab i get the following error when i try to setup my Harmony and Hue hubs:
TypeError: Cannot read property 'devices' of undefined
    at b.$scope.addHarmonytoSettings (app.js:841)
    at fn (eval at compile (angular.js:15156), <anonymous>:4:368)
    at e (angular.js:26744)
    at b.$eval (angular.js:17972)
    at b.$apply (angular.js:18072)
    at HTMLButtonElement.<anonymous> (angular.js:26749)
    at HTMLButtonElement.dispatch (jquery-1.11.3.min.js:4)
    at HTMLButtonElement.r.handle (jquery-1.11.3.min.js:4)

@aerickson @janvennemann I may revert back to a previous release of Spark webserver as not really getting any benefit and seems to cause issues that I cannot find.
@janvennemann Thanks for finding that error. The device.db error is just informational to tell you it did not find a device.db because on startup.

It seems like once i edit a generated device from a Harmony Activity it stops working.
Steps to reproduce the behavior

Create a new device from a Harmony Activy via the Generate Bridge Device button. Don't change anything here.
Go to the "Brdige Devices" tab and test the device is working.
Click the Edit/Copy button, don't change anything and press Update Bridge Device (i guess it is not intended that the form values disappear after updating?)

Actual behavior
The device does not respond anymore. Pressing one of the Test buttons in the Brdige Devices tab result in the following error:
PUT http://localhost/api/test/lights/5/state 500 (Server Error)
angular.js:14328 TypeError: Cannot read property 'message' of undefined
    at Object.displayWarn (http://localhost/scripts/app.js:77:54)
    at http://localhost/scripts/app.js:729:11
    at http://localhost/js/angular.min.js:133:460
    at m.$eval (http://localhost/js/angular.min.js:147:313)
    at m.$digest (http://localhost/js/angular.min.js:144:421)
    at m.$apply (http://localhost/js/angular.min.js:148:78)
    at l (http://localhost/js/angular.min.js:101:89)
    at XMLHttpRequest.t.onload (http://localhost/js/angular.min.js:106:489) Possibly unhandled rejection: {}

No other error is being logged.
Expected behavior
Be able to edit a device and use it afterwards

Thanks for this software!
I am wondering, I need to get some smart switches for my tract lighting in kitchen & dining room. I tried x10 but there l they are isolated. I might still go that route, but i'd need to buy some new hardware. And replacing 11 bulbs with hue is prohibitively expensive.
It's there a brand of modern smart switch that works with ha-bridge?

@pr3sidentspence
Email me so we don't hijack this beta thread<EMAIL_ADDRESS>

i smart bulbs (such as those from Cree and GE Link), as long as they communicate on the same Zigbee standard as Hue.   https://www.reddit.com/r/Hue/comments/41z3s5/guide_compatible_hue_lights_wip/?st=ixxnuyoh&sh=8f35bf30

@Matt8119 Caveat to your answer, a real Philips Hue bridge would also be required, as the ha-bridge does not control Zigbee devices on it's own.

Updated the beta with fixes for the issues since last update.

I should mention I do have a real hue. Also Google onhub, but they haven't
turned on the ZigBee antenna yet (if they ever do).
Audiofreak9 and I are taking this to email.
On Sat, Jan 14, 2017 at 3:41 PM BWS Systems<EMAIL_ADDRESS>wrote:

Updated the beta with fixes for the issues since last update.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/bwssytems/ha-bridge/issues/355#issuecomment-272655240,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AArbCXJeje1F6zMOtcElPwmBESYip3XAks5rSUD8gaJpZM4Len76
.

@bwssytems It looked like the 3.3 beta fixed the error I was seeing, but it's still there (but with a stack trace).
2017-01-14 17:56:49,718 [main] INFO  com.bwssystems.HABridge.upnp.UpnpListener - UPNP Discovery Listener starting....                                   |
2017-01-14 17:56:49,719 [main] INFO  com.bwssystems.HABridge.upnp.UpnpListener - UPNP Discovery Listener running and ready....                          |
2017-01-14 18:07:17,793 [qtp1663610702-13] ERROR spark.webserver.MatcherFilter -                                                                        |
com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: empty String                                                                      |
        at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:249)                                                                     |
        at com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:239)                                                                     |
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:116)                                     |
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:216)                               |
        at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)                                      |
        at com.google.gson.internal.bind.ArrayTypeAdapter.read(ArrayTypeAdapter.java:72)                                                                |
        at com.google.gson.Gson.fromJson(Gson.java:879)                                                                                |
        at com.google.gson.Gson.fromJson(Gson.java:844)                                                                                |
        at com.google.gson.Gson.fromJson(Gson.java:793)                                                                                |
        at com.google.gson.Gson.fromJson(Gson.java:765)                                                                                |
        at com.bwssystems.HABridge.hue.HueMulator.changeState(HueMulator.java:750)                                                                      |
        at com.bwssystems.HABridge.hue.HueMulator.lambda$21(HueMulator.java:260)                                                                        |
        at spark.RouteImpl$1.handle(RouteImpl.java:58)                                                                                |
        at spark.webserver.MatcherFilter.doFilter(MatcherFilter.java:162)                                                                               |
        at spark.webserver.JettyHandler.doHandle(JettyHandler.java:61)                                                                                |
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:189)                                                             |
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)                                                                |
        at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)                                                                     |
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)                                                              |
        at org.eclipse.jetty.server.Server.handle(Server.java:517)                                                                                |
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:302)                                                                            |
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)                                                                  |
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:245)                                                  |
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)                                                                             |
        at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)                                                              |
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)                                   |
        at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)                                             |
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)                                                             |
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)                                                              |
        at java.lang.Thread.run(Thread.java:745)

Updated the beta to 4beta3.4
Fixed issue with Harmony Activity
@aerickson Added debug to the url item decoding to see what is happening for you.

I'm having loads of problems getting my Echoes to control custom actions that used to work fine, running 3.5.1, so I thought I'd try this beta and start from scratch. When trying to add Hue bridge and Harmony Hub addresses, I get an error from Angular (this is from the Hue bridge part of the form, the same error happens on the Harmony Hub part, and I guess the other parts of the form):
Error: undefined is not an object (evaluating '$scope.bridge.settings.hueaddress.devices')
addHuetoSettings@http://habridge/scripts/app.js:865:39
fn
e@http://habridge/js/angular.min.js:282:196
$apply@http://habridge/js/angular.min.js:148:22
http://habridge/js/angular.min.js:282:253
dispatch@http://habridge/js/jquery-1.11.3.min.js:4:8554
handle@http://habridge/js/jquery-1.11.3.min.js:4:5257

Thanks for the excellent software!

@rys Found that issue, fixed for next beta. Thanks!

Updated to beta to 4beta3.5
@rys This fixes your issue.

Per my last post on issue#131,(thanks for the fast response BTW)  I took the plunge and decided to test this last beta, if I understood correctly the implementation for how the ip filtering is done changed significantly, i am assuming this implementation is in the beta (correct me if im wrong).
Ive gone ahead and re created a device called "lights" which link to two Vera dimmers on different rooms, each with its own echo. I gone ahead and configured the IP filters.
The behavior however is the same as reported by taddat on dec1st and the same behavior I was experiencing on 3.5.1b  i.e the on off commands ping pong between different rooms which in theory one echo should not be able to control.
Looking at the logs I do see the bridge is filtering but seeing the IP address of the echo in another room and therefore the command goes to the wrong echo.
Perhaps im getting ahead of myself,  is the filtering done on the actual call to the echo in 4beta3.5 ?
I went ahead and created the device from scratch and rediscovered devices on the alexa side.
What am I missing? let me know what logs to post if required.

@bwssytems I haven't had the MatchFilter error since I started running beta3.4.
Here's the only error I've seen (I think regarding my PS4 not being plugged in when harmony tried to turn the activity off or something).
Jan 16, 2017 6:07:57 PM org.jivesoftware.smack.XMPPConnection callConnectionClosedOnErrorListener
WARNING: Connection closed with error
net.whistlingfish.harmony.protocol.HarmonyProtocolException: Got error response [505]: Bluetooth device not reachable
        at net.whistlingfish.harmony.protocol.OAReplyProvider.parseIQ(OAReplyProvider.java:59)
        at org.jivesoftware.smack.util.PacketParserUtils.parseIQ(PacketParserUtils.java:463)
        at org.jivesoftware.smack.tcp.PacketReader.parsePackets(PacketReader.java:170)
        at org.jivesoftware.smack.tcp.PacketReader.access$000(PacketReader.java:47)
        at org.jivesoftware.smack.tcp.PacketReader$1.run(PacketReader.java:81)

Thanks!

@funkyac So, you are seeing the filtering happening with your config? I assume debug is on. Could you send my your item config with the filterIPs statement and the log?
@aerickson So, it seems the Harmony Hub took an error and reported it back, Did the ha-bridge survive that error?

@bwssytems, I only had the HABridge.hue.HueMulator logs up to debug level, let me know any additional logs I should set to debug happy to re-test. hopefully im not doing something silly in the config which im missing.
So all of these logs are of commands requested in the same Room (room1) but I can confirm the same ping pong behavior from the other room, I just didn't get the logs.
Room1 Echo IP <IP_ADDRESS>  vera dimmer device ID 94.
Room 2 Echo IP <IP_ADDRESS> vera dimmer device ID 103.
All these commands were issued in sequence within a few secs of each other.
Room 1 echo request to "turn on lights" you see the HA bridge thinks the request is coming from .32 not .89 result was the other room lights were turned on.
**hue state change requested: a5YpP6IByAavZhUmqgGxVCO9KicCXHSGzo6VxyYQ from <IP_ADDRESS> body: {"on": true}
Decode Json for url items: [{"item":"http://<IP_ADDRESS>:3480/data_request?id=action&output_format=json&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=1&DeviceNum=94","type":"veraDevice","filterIPs":"<IP_ADDRESS>"},{"item":"http://<IP_ADDRESS>:3480/data_request?id=action&output_format=json&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=1&DeviceNum=103","type":"veraDevice","filterIPs":"<IP_ADDRESS>"}]
filter for requester address not present in list: <IP_ADDRESS> with request ip of: <IP_ADDRESS>
hue light requested:<PHONE_NUMBER> for user: a5YpP6IByAavZhUmqgGxVCO9KicCXHSGzo6VxyYQ from <IP_ADDRESS>
found device named: Lights**
Room1 request "turn lights off" this time the IP of the requesting Echo is correct however nothing happens as the lights in that room are already off.
> hue state change requested: a5YpP6IByAavZhUmqgGxVCO9KicCXHSGzo6VxyYQ from <IP_ADDRESS> body: {"on": false}
>
> Decode Json for url items: [{"item":"http://<IP_ADDRESS>:3480/data_request?id=action&output_format=json&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0&DeviceNum=94","type":"veraDevice","filterIPs":"<IP_ADDRESS>"},{"item":"http://<IP_ADDRESS>:3480/data_request?id=action&output_format=json&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0&DeviceNum=103","type":"veraDevice","filterIPs":"<IP_ADDRESS>"}]
>
> filter for requester address not present in list: <IP_ADDRESS> with request ip of: <IP_ADDRESS>
>
> hue light requested:<PHONE_NUMBER> for user: a5YpP6IByAavZhUmqgGxVCO9KicCXHSGzo6VxyYQ from <IP_ADDRESS>
>
> found device named: Lights

Exact same command from Room1 "turn lights off" you can see it ping pongs back to .32 which it thinks is the requesting echo and issues the off command in the wrong room so the lights eventually go out in that room.
hue state change requested: a5YpP6IByAavZhUmqgGxVCO9KicCXHSGzo6VxyYQ from <IP_ADDRESS> body: {"on": false}
Decode Json for url items: [{"item":"http://<IP_ADDRESS>:3480/data_request?id=action&output_format=json&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0&DeviceNum=94","type":"veraDevice","filterIPs":"<IP_ADDRESS>"},{"item":"http://<IP_ADDRESS>:3480/data_request?id=action&output_format=json&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0&DeviceNum=103","type":"veraDevice","filterIPs":"<IP_ADDRESS>"}]
filter for requester address not present in list: <IP_ADDRESS> with request ip of: <IP_ADDRESS>
hue light requested:<PHONE_NUMBER> for user: a5YpP6IByAavZhUmqgGxVCO9KicCXHSGzo6VxyYQ from <IP_ADDRESS>
found device named: Lights
AS expected the next command issued from the same room got filtered to  .89.... next to .32.... next to 89 etc .

@bwssytems Yeah, it kept running just fine.

@funkyac So, now that really is bad news for this feature. It looks like the echos are being hive minds no matter which echo gets the request. It seems like they are round robining the reply from Amazon to the echo's in the list..... bad bad bad amazon.. I wonder if Google Homes work in this scenario?

Well the echo making the request must be the one getting the response as well. I wonder how this is addressed so that only the requester gets the response if such is the case.

@rafale77 I will assume that the echo is stateless and that is why they can send back the call to any echo that is in the account. I will assume that if you have 2 separate accounts, that it may separate them, that is conjecture of course.

Amazon's take:
https://www.amazon.com/gp/help/customer/display.html?nodeId=202013740
Using Multiple Alexa Devices

Alexa voice service works together with all of your Alexa-enabled devices. Some content and settings are shared across devices registered to your account.

Amazon Alexa devices are controlled with your voice or through the Alexa app. If you have more than one device using the same wake word, Alexa responds intelligently from the Echo you're closest to with ESP (Echo Spatial Perception), and performs the requested task. You don't need to say the wake word before your request on Amazon Tap, Fire tablets, and Fire TV devices.

To interact with a single Echo, Echo Dot, or Amazon Fire TV device, you can use the compatible Alexa Voice Remote (sold separately for Echo devices) or you can change the wake word.

Note: You cannot connect multiple Alexa devices to each other and play the same requested audio at the same time.

If you'd like, you can give each Alexa device a distinct name. To change your device name, go to Manage Your Content and Devices

Shared Content and Common Settings

If you have more than one Alexa device registered to your account, some of your content and settings are shared between the devices. In the Settings menu of the Alexa app, all of the content under the Account section is the same for all your Alexa devices, including:

Music and media
Household profiles
Smart home devices
Flash Briefing
Shopping and To-do lists
Some content is not common between devices on the same account, including:

Alarms and timers
Sounds
Bluetooth connections
Note: At this time, you cannot customize which content is available on specific devices. For example, music, skills, shopping lists are available on all Alexa devices registered to the same account as the content.

And another take, multiple homes and multiple echoes....
https://www.reddit.com/r/amazonecho/comments/494mx7/two_echos_two_houses_one_prime_account/

@bwssystems. Yup def tops my list of the worst news I've heard so far in 2017. Having 6 echos in the house i think my lights command/ tv commands based on room have gone out the window(unless I create unique accounts and setup my 70+ vera devices across the accounts... I think it's a pass... will have to stick with the specific name per room which REALLY misses the point on "ease of use"  of the technology.
here is to hoping they with change implementation in the future.
thanks for the efforts... so far beta seems to work well on everything else I have been able to test including harmony hub for me.

@funkyac Yep, totally agree. So many companies just don't get Home Automation and the ones that do aren't going to make any money....lol I do here that many requests have gone to Amazon to change the handling per echo as people with multiple homes are stuck and the multi room is very annoying.  Hopefully they listen.
Anyone have multiple Google Homes that are working?

Yes,  I have multiple Google Home's but I have not tried the ha-bridge beta yet. Hopefully will have time this weekend. The Homes do have the concept of rooms so I was hoping this would be built in natively but its not there yet.

Alright, I think the last beta is up at #371. Closing this task.


feat: update python version in Dockerfile

This is an attempt to see if upgrading python will have a positive effect on the cryptography package.

Thank you!


refactor/sidebar component

Changes

I noticed that the Sidebar was a little too long/big of a component so here's a quick and simple refactor
This is primarily an extraction of components into smaller and simpler pieces

ℹ Repository information
The repository has:

[ ] At least three issues with the good first issue, or other labels specified in firstissue.json (see labels and the end).
Link:
[ ] At least 10 contributors.
[ ] At least 1000 stars.
[ ] Detailed setup instructions for the project.
Link:
[ ] CONTRIBUTING.md
[ ] Actively maintained (last updated less than 1 months ago).

This refactor is intended to be very simple. The idea was to extract, from the Sidebar, separate components so the Sidebar component would be more readable, and easier to add features to. Despite this refactor being less intense, there were a few things I wanted to call out that could have been done but I ultimately opted not to (and stuff I just wanted to note). Again, my decisions are completely up for discussion, and other opinions (esp deferring ones) are very much welcome. Nonetheless, here are a few quick notes:

Combining the Pickers into a single SidebarPicker component - We could totally do this. I decided not to because I just didn’t feel like it was absolutely necessary. It seemed readable and clear without it. But it is definitely something I noticed, and if there’s a desire to make that component, I have no problem doing it.
Link Components - There are a few of these. The thinking there was to separate them out because I could see a future where they’d be replaced by actual Buttons, and become more complex. I was aiming to prepare them for that sort of thing. Not a big fan that those files are small, but it’s readable and ready for the next stage, so 🤷♂
showMoreTopics - I’d like to rename this variable because I think it could be clearer but I also couldn’t think of a name with more clarity, so I left it alone. And it’s more of a small nit than anything else.


🐛Bug: VSCode not picking up melt attribute in monorepo

Describe the bug
I don't know if this is a bug or a docs issue.
I have SvelteKit installed in a monorepo workspace, and I have melt-ui building and working in the app. But the VSCode editor reports the following error for each occurrence of the melt attribute:
"Object literal may only specify known properties, and '"melt"' does not exist in type 'HTMLProps<"button", HTMLAttributes>'."
Any suggestions for how I might get VSCode to recognize the presence of this attribute in a monorepo workspace?
To get VSCode to recognize TailwindCSS classes in a monorepo workspace, I had to configure the absolute path to tailwind.config.js in postcss.config.js, but I'm don't see an analogous thing to do for melt-ui.
Screenshots

Desktop (please complete the following information):

OS: macOS 12.3.1
Chrome 114.0.5735.198

Additional context
"@melt-ui/pp": "^0.0.4",

Hi @jtlapp! Please ensure that your version of @melt-ui/svelte is on version 0.22.0 or higher. The melt attribute was introduced as part of that release.

That was it! My monorepo was using an older version, while my experiment in a regular repo was using the new version. Explains why one worked and the other didn't. Thank you!
This is soooo very nice!!!

For other folks who end up here trying to get melt-ui working in a monorepo, here is what I had to do to be able to melt-ui in component workspaces.
Each component workspace package.json includes these dependencies:
// package.json
{
  // ...
  "devDependencies": {
    // ...
    "svelte": "^4.0.0",
    "tsconfig": "workspace:*"
  },
  "dependencies": {
    // ...
    "@melt-ui/svelte": "^0.22.2"
  }

I also needed the component workspace's tsconfig.json to extend the applications .svelte-kit/tsconfig.json. You can't just copy this file to a shared location because its includes and excludes keys will refer to the wrong directory. You could simply copy the file to each component workspace, but then you'll be manually synching them -- and you may not know when SvelteKit updates it (but I don't know if it ever does).
So I instead created a symbolic link to the app's .svelte-kit/tsconfig.json from each components workspace and extended that. Here's my component workspace tsconfig.json:
// tsconfig.json
{
  "extends": ["./tsconfig.svelte-kit.json", "tsconfig/tsconfig.svelte.json"],
  "compilerOptions": {
    "paths": { "@/*": ["./src/*"] }
  }
}

I'm extending two tsconfig files. The local tsconfig.svelte-kit-json is a symbolic link to the app's .svelte-kit/tsconfig.json, and tsconfig/tsconfig.svelte.json is a reference to a configuration file in my tsconfig workspace that sets my preferred type enforcement rules.
I'll update this post if I learn of a better way.


Identical files between "constraint" and "motion-subspace"

Hello,
While debugging some feature, I realized that the following files were identical :

include/pinocchio/multibody/constraint-base.hpp and include/pinocchio/multibody/joint-motion-subspace-base.hpp
include/pinocchio/multibody/constraint-generic.hpp and include/pinocchio/multibody/joint-motion-subspace-generic.hpp
include/pinocchio/serialization/joints-constraint.hpp and include/pinocchio/serialization/joints-motion-subspace.hpp

Is it intentional ?
I am guessing it is oversight of the renaming from "constraint" to "motion subspace" because the "constraint" files are used nowhere now.
Should the "constraint" files be removed ?

Yes, they should have been removed before the release of Pinocchio 3, but we have forgotten to do it.
constraint name choice was not good. We can then remove these files.
Thanks a lot @EtienneAr for raising this issue.


Static methods may fail in laravel/laravel 5.5.12

Empty laravel 5.5.12
$ vendor/bin/phpstan analyse --autoload-file=_ide_helper.php --level=0 -- app/
phpstan tells me:
 ------ ------------------------------------------------------------------------------------
  Line   app/Providers/RouteServiceProvider.php
 ------ ------------------------------------------------------------------------------------
  54     Call to an undefined static method Illuminate\Support\Facades\Route::middleware().
  68     Call to an undefined static method Illuminate\Support\Facades\Route::prefix().
 ------ ------------------------------------------------------------------------------------

 ------ --------------------------------------------------------
  Line   app/Http/Controllers/Auth/RegisterController.php
 ------ --------------------------------------------------------
  65     Call to an undefined static method App\User::create().
 ------ --------------------------------------------------------

Please advise. How to deal with statically called methods?
*I think it is __callStatic()

Phpstan is not supported.

Please reconsider your answer as middleware() is actually a Facede and it is not included in _ide_helper.php


API side rework

new clean api project
added help api - swagger
fixed bugs to the core project

@mynkow  please review

@SayliS please target .net 4.5 in all projects


Use MinHeap data structure to store a large number of EndpointInfos

When backend's LoadBalancingMode is set to LeastRequests, LoadBalancer needs to find an endpoint with the lowest ConcurrencyCounter value. Currently, endpoints are stored in a list and search is done through a simple linear enumeration having O(n) complexity. This approach works well for a small collection (e.g. < 20), but gets ineffective for large once. Therefore, it's proposed to switch to  Min Heap data structure instead of list when endpoint count get big enough.
We could introduce a new abstraction for endpoint collection (e.g. IEndpointCollection : IReadOnlyList<EndpointInfo>) exposing GetLeastLoadedEndpoint method with at least two implementations: ListEndpointCollection and MinHeapEndpointCollection. Further, in the end of probing iteration if the current BackendConfig.Mode = LeastRequests and endpoint count is big enough, BackendProber will command IEndpointManager to change the underlying collection holding endpoints to new MinHeapEndpointCollection, or to ListEndpointCollection otherwise.
The worst case here is mode changing to LeastRequests from something else just after BackendProber updated the endpoint list, so ListEndpointCollection would have to use a linear search to find the target item. However, it will be the same as it is currently.
Further, to increase performance heap can be updated not on each ConcurrencyCounter change, but on events fired by a heuristic based on that counter tracked in ProxyInvokerMiddleware. In example, it can happen when any of ConcurrencyCounters has got changed more than 10%.

LeastRequests is generally not as useful or simple as it first appears:

There is a cost to maintaining the list of what is least used, that has to account for all requests, or have an O(n) lookup cost.
That doesn't account for load that may be coming from other instances of the proxy, or other sources.

Using algorithms like randomly pick 2 backends then choose the lowest load perform better and provide better balancing of load across the back ends.

There is a cost to maintaining the list of what is least used, that has to account for all requests, or have an O(n) lookup cost.

O(n) lookup cost is only for a simple list. I made this proposal because MinHeap works faster:

Get the least used endpoint - O(1)
Update endpoint's concurrent request counter - O(logn)

That doesn't account for load that may be coming from other instances of the proxy, or other sources.

But as far as I see, to choose the lowest loaded endpoint  in this case, we must also know the total number of active requests. Thus, it would be the same accounting problem as with the LeastRequests, if there is another instance of proxy sending requests to the endpoint.
Or, am I missing something here?

Triage: Not required for 1.0. We can revisit if we have people hitting the limits ...


progress bar

how to implement progress bar

Hi,
Unfortunately there is no ability to track conversion progress at the moment. So, the best solution would show infinite progress, until request ends.


Add support for IDL messages

Description
MCAP recording only handles .msg files for schema records data.
The current mcap spec only has ros2msg as a schema encoding: https://github.com/foxglove/mcap/blob/main/docs/specification/appendix.md#ros2msg
Related Issues
https://github.com/foxglove/mcap/issues/496
Completion Criteria
If I author an IDL file in my ROS codebase I should be able to have that recorded in my mcap file.

ros2idl is now present in the spec, and IDL message schemas are recorded by the rosbag2_storage_mcap plugin v0.3.0.


Reading and writing CSV

Feature Request
By supporting CSV reading and output, it provides testing, backup and other applications.

start


Ref will undefined when come back from route change

this my project: https://github.com/lyquocnam/vue-bus
i ok when click count button, but when change to About and return Hello, click count again, it will show undefined.

This is a usage question, please post it on forum.vuejs.org


inference strangeness - 4

interface A { x: number; }
interface B { y: number; }
interface C { z: number; }

function fn<a, b, c>(one: a & c, two: b & c): c {
	return undefined;
}
let one: A & C;
let two: B & C;
let result = fn(one, two); // <-- expected type C, actual {}

Our inference algorithm makes no inferences when the target is a union or intersection involving more than one type parameter because it is not clear how the source type should be "carved up" into more than one target type. There may be cases such as your example where you could perhaps argue for a certain pattern of "carving", but I just don't see how you meaningfully solve it for the general case. Did you have a particular algorithm in mind?

Here are some of my naive thoughts. Let's consider a straightforward situation:
interface A { x: number; w: string; }
interface B { y: number; w: string; }
interface C { z: number; }
function fn<a, b, c>(one: a & c, two: string, three: b & c) : c {};
let result = fn(<A & C> undefined, 'hey', <B & C> undefined);

Need to deduce c.

Get all unresolved bare types from the original signature that mention the type in question c: a & c, b & c
Get all constituent types from 1: a, b, c
Try to resolve (instantiate?) types from step 1 using all available information from the current context, so signatures and properties are known as much as possible: a & c - '{x : number; z: number}, b & c-{y: number; z: number; }`
Out of what we got at step 3 try to find an intersection (common denominator) type: { z: number; w: string; }
If there is a non-empty type it can be used as an answer, but chances are it might be more elaborate than we expect (w property).
Narrow the type from step 5 to the widest type out of the constituent types from step 2 that participate in types from step 1.

How is this for a start?


Issue #16090: Split input_shapes horizontally in utils.vis_utils.plot_model

From Issue #16090
Split input_shapes horizontally and not vertically in keras.utils.vis_utils.plot_model when show_shapes=True
Currently, the plot_model function with show_shapes=True returns a table like this:

With my contribution, the table will show the last cell, the one with input shapes, splitted horizontally so that the input shape is on  top of the output shape, making it fit with the previus cell (input:/output:)
Here's an example of the execution with the fix:

Thanks for the PR! How does it look like in horizontal orientation? (rankdir="LR")

Thanks for the PR! How does it look like in horizontal orientation? (rankdir="LR")

Hi, the horizontal version in the current version looks like this:

And in my Pull Request it looks like this:

As you can see, the cell with the input and outpiut shapes matches the previous cell in horizontal mode as well.


feat(useQuery): make refetchInterval accept a function

so that we can have intervals dependent on current data / error

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Optimize router

Hi,
This PR attempts to optimize the router by pre-compiling pattern.
What did I do?

Call getPattern at insert phase. And cache them.
Do loop only for patterns.
Skip regexp capturing. I think the pattern for path meaning "accept current component or not".

Breaking change
I think /users/:id{[0-9]+} used to match /users/abc123xyz, but with this change, it will match /^[0-9]+$/ strictly.
Benchmark
With this PR, I got the following results.
hono x 413,513 ops/sec ±4.13% (71 runs sampled)
itty-router x 70,685 ops/sec ±3.19% (86 runs sampled)
sunder x 124,893 ops/sec ±3.05% (85 runs sampled)
worktop x 76,740 ops/sec ±4.47% (77 runs sampled)
Fastest is hono

More
I have another idea about improving the performance of the router, and I hope to make another PR about it in the few days.

merge master && apply prettier.

Hi @usualoma
This is cool! Benchmark results on my PC are here:
Before:
hono x 734,434 ops/sec ±3.99% (69 runs sampled)
itty-router x 161,362 ops/sec ±3.66% (90 runs sampled)
sunder x 301,725 ops/sec ±5.08% (75 runs sampled)
worktop x 212,848 ops/sec ±4.18% (85 runs sampled)
Fastest is hono

After:
hono x 779,197 ops/sec ±6.55% (78 runs sampled)
itty-router x 161,813 ops/sec ±3.87% (87 runs sampled)
sunder x 334,096 ops/sec ±1.33% (93 runs sampled)
worktop x 212,661 ops/sec ±4.40% (81 runs sampled)
Fastest is hono

Really ultrafast! Thank you, I'll merge it.


isFixed and delta not giving expected results

I'm playing around with the examples, trying to learn Matter.js better.
I added engine.timing.isFixed = true; and engine.timing.delta = 1000 / 2; to the slingshot example. I expected this to produce a deterministic simulation with a very slow frame rate (2 fps), but it just seems to run as normal. Have I done something wrong, or have I misunderstood these options?
https://gist.github.com/WhiteHotLoveTiger/397436fbc1ae0bf97e83
Sorry if this isn't the right place to ask this sort of thing.

These properties were moved to Matter.Runner, see the docs. Note that Matter.Engine.run = Matter.Runner.run which returns a Matter.Runner instance that you can use.

Thanks! I'll give this a try soon.


FLOPs of ShiftNet-A, B, C?

The parameters of ShiftNet is given in the original paper, but FLOPs is not. Could you provide the FLOPs of ShiftNet-A, B, C? I'll cite your paper :)

I know this is late but thought I'd respond for posterity. I've asked a collaborator for the relevant codebase/checkpoints and will update with a link in the README if I get a hold of them!


Filter templates: permissions for fp_hists

ZTF is finally back on sky, and with it comes the first errors 😉.
Last week I added the missing bits of config needed for the filters that use fp_hists to run as expected. Only now that this is added, did I notice that the method that builds the filters (by adding these extra first steps from the config on top of every pipelines) needed me to hardcode something for the fp_hists.
This makes me think that using the config for these "base filters" is completely useless if we then need to hardcode things in the code itself. Maybe I can make it a little smarter than it is in a following PR, that can recognize filtering stages that use the programid and automagically enforce the permissions there or smth.
Ideally, we would want similar templating behaviors running on queries from the API to enforce data access permissions even through penquins (which is not the case right now, and we rely on the few users that have acces to it to do so. But that number is growing).

Also, this makes me think that we need a robust test for that filter templates method that doesn't exist right now.


[FR] AV1 & x264

This is such a good wrapper for ffmpeg that it is a shame to limit it to only x265. While it is my encoder of choice, I still need x264 for videos I want to be playable on Discord. And then there's AV1, which is browser-compatible (except for electron, for now) and is already better than x265 in terms of compression rate (compression speed not so much).
I'd really like to see it expanded.

Hey @ImportTaste funny you should say, I've already begun integrating x264 support. It's been backlogged by a few other projects, but should be completed soon.
As for AV1, not sure when I'll get around to that. I don't use it much, but I'll make a point to look at it soon.

is the x264-dev branch ready for testing, or is it still in the preliminary phase?

Thanks!

Amazing work! Thanks.


One Domain multiple services

I have two services on the domain app.company.com, "Website" and "API".
The API Service should receiver traffic for this path only
app.company.com/v2/*
The Website should receive traffic on this paths:
app.company.com/*
app.company.com/v2/token
app.company.com/v2/webhook

I tried to create a setup with traefik some time ago but failed, as traefik can't support such use cases. However it was fairly easy to create a setup for nginx, but its all manual  and not automated in any way.  So I was wondering if such an setup would be possible with DFP.
I created a small compose file, that will print out if the right service was called.

  version: '3.5'
  services:

#---#
  proxy:
    image: vfarcic/docker-flow-proxy
    ports:
      - 80:80
      - 443:443
    environment:
      - LISTENER_ADDRESS=swarm-listener
      - MODE=swarm
      - SERVICE_NAME=proxy_proxy
    deploy:
      mode: global
      # replicas: 1
      placement:
        constraints: [node.role == worker]

  swarm-listener:
    image: vfarcic/docker-flow-swarm-listener
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DF_NOTIFY_CREATE_SERVICE_URL=http://proxy_proxy:8080/v1/docker-flow-proxy/reconfigure
      - DF_NOTIFY_REMOVE_SERVICE_URL=http://proxy_proxy:8080/v1/docker-flow-proxy/remove
    deploy:
      placement:
        constraints: [node.role == manager]
#---#
    service_web:
      image: vad1mo/hello-world-service
      hostname: web
      deploy:
        labels:
          - com.df.servicePath=/,/v2/token,/v2/webhooks/events
          - com.df.notify=true
          - com.df.distribute=true
          - com.df.port=5050
          - com.df.serviceDomain=docker.for.mac.localhost
#---#
    service_api:
      image: vad1mo/hello-world-service
      hostname: api
      deploy:
        labels:
          - com.df.servicePath=/2/
          - com.df.notify=true
          - com.df.distribute=true
          - com.df.port=5050
          - com.df.serviceDomain=docker.for.mac.localhost

  networks:
    default:
      name: proxy

so, after 2(19) days, I was able to setup the service:
So this is my config:
Frontend
app.domain.com

com.df.servicePath=/,/v2/token,/v2/webhooks

Backend
app.domain.com

com.df.servicePath=/v2/

Everything in /*, /v2/token /v2/webhooks should go to the frontend.
Everything to /v2/* should go to the backend except /v2/token /v2/webhooks
However with the current setup everything /v2/ related goes to backend and /v2/token /v2/webhooks are ignored

You're right. HAProxy evaluates ACLs from top to bottom. They are alphabetically ordered in the config using aclName or, if empty, serviceName. The exception are services that have / in the path. Since it's catch-all path, it's placed at the bottom. As a result, the backend is evaluated before the frontend and all requests with a path that starts with /v2/ are forwarded to it.
The problem is that all the ACL in a single servicePath are together. The config for the frontend looks something like:
    acl url_my-service1234_0 path_beg / path_beg /v2/token path_beg /v2/webhooks
    use_backend acl-1-be1234_0 if url_my-service1234_0

Splitting it into a separate entry will be a risky change and it'll take time to do it and it would cover a use-case that is rarely used.
Can you confirm that you:

cannot change the paths of your services so that, for example, frontend responds to something more unique?
cannot be more specific with the backend so that it's not only /v2?
cannot use sub-domains?
your frontend services cannot use relative paths (in that case rewrites would do the trick)?

I got it now, I didn't want to change the application. However I was able to create better rules thanks to servicePathExclude.
UI:
         - com.df.servicePath=/ (default)
API:
        - com.df.servicePath=/v2/
        - com.df.servicePathExclude=/v2/token,/v2/webhooks/events

@Vad1mo Did you had to modify your backend to work on /v2/? I mean it is working with /v2/ endpoint or the proxy is doing that job and your backend is only /


Error: The template is not valid.

Behaviour
Steps to reproduce this issue

Set secrets in repository
Copy paste example
run-it

Expected behaviour

The workflow performs the job successfully

Actual behaviour

Workflow crashes on error

Error: The template is not valid. .github/workflows/ecr-login.yaml (Line: 26, Col: 19): Unexpected value ''

name: Build using Amazon ECR Container

on:
  workflow_dispatch:

jobs:
  login:
    runs-on: self-hosted
    outputs:
      token: ${{ steps.ecr.outputs.token }}
    steps:
      -
        name: Get token to login to Amazon ECR
        uses<EMAIL_ADDRESS>        with:
          registry: XXX.dkr.ecr.YYY.amazonaws.com
          username: ${{ secrets.AWS_ACCESS_KEY_ID }}
          password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
  build:
    runs-on: self-hosted
    needs: login
    container:
      image: XXX.dkr.ecr.YYY.amazonaws.com/ZZZ:UUU
      credentials:
        username: AWS
        password: ${{ needs.login.outputs.token }}
    steps:
    - name: Check out code
      uses: actions/checkout@v2

I think a line went missing and that's what makes it don't work:
 steps:
      - id: ecr
        name: Get token to login to Amazon ECR


Modified composition mode event handlers to provide better support fo…

Most browsers follow the spec for compositionend in a reasonable way that conforms to the spec, that is, the data field of the compositionend event contains the result of the composition. Firefox on Android, however, fires four events in sequence if you select a suggestion for a partially-typed word: compositionend (data is the partial the user typed), beforeinput (data is the partial the user typed), compositionend (data is the remaining letters in the complete word), and beforeinput (data is the remaining letters in the complete word). As a workaround for nonconforming behaviour like this, this patch changes the handling of events so that a variable textInputData is built from the concatenation of the data members of the beforeinput events fired during composition. During resolution, if this string has been built, it is used as the definitive source for the characters that have been typed. Otherwise, the data member from the first compositionend event fired during composition is used as the definitive source for the characters that have been typed.
I've tested this on Firefox and Chrome under Android 5.x, Safari on the iOS simulator, Chrome and Firefox under iOS, and IE11 under Windows 10. On desktop, I've tested it with both English and Japanese keyboard layouts. I'm reasonably confident that this change will improve support for mobile browser IMEs without breaking compatibility for any other existing supported IME, but I'm very interested in hearing any input that you have wrt these changes.
I acknowledge that I have received permission from Zugata Inc, the company for which I developed these changes under company time, to submit this pull request.

Specifically, these changes should fix the issues described in #1107, #1079, and possibly #1128, as all of these are likely issues stemming from the differing (and arguably, non-spec compliant) sets of events generated by various combinations of OS, browser, and IME. The included test cases simulate a few different input combinations I've noticed during testing, as well as cases listed in the comments of draftEditorCompositionHandler.

@flarnie Review this pls

@njjewers I tried to pull in your PR. But since it's been sitting here for so long it no longer works consistently. Any chance you could rebase it?


i want to listen and download this song let me do it....

Please use a descriptive title and describe what you want in the first comment. We can neither help you or respond meaningfully otherwise


Add reboot message at end of setup-static-ip.sh

Otherwise, the changes will not take effect.

Fixed in https://github.com/DavesCodeMusings/nucloud/commit/61498d8d84422473c1fd89f4bb3f1019aed24954


Don't compare runner connetion token at restart need check

Fixes #143

Please watch out for https://github.com/summerwind/actions-runner-controller/pull/226 and wish I don't break anything merging that into this change 😉


Add country bbox's

Generated using: https://gist.github.com/olafveerman/1496a45735f9a79ff2d76584e1cc7621
Any use in committing the above script to the repo. In /tools for example?

I don't think so. It's not like we'll be generating this very often


add ability to change and inject oreg_url and resolve multiple images

Image resolve part is needed for HCP layer to work with private and testing images. This is because AKS is ignoring oreg_url as such.
This works fine with RHEL builds, but I have doubts about CI testing:
when OREG_URL=registry.svc.ci.openshift.org/ci-pr-images/prtest-89730d6-17-${component}:${version}
Images get these names. I need to add logic to modify image names for this too, but I don't think we required all images and all of them will be available with the same name. For CI we might need to modify just subset of images.
MasterEtcdImage: "registry.svc.ci.openshift.org/ci-pr-images/etcd:v3.10"
MasterAPIImage: "registry.svc.ci.openshift.org/ci-pr-images/ose-control-plane:v3.10"
MasterControllersImage: "registry.svc.ci.openshift.org/ci-pr-images/ose-control-plane:v3.10"
NodeImage: "registry.svc.ci.openshift.org/ci-pr-images/ose-node:v3.10"

All of this is going in the right direction, but as you say it's too intrusive.  I've reworked it at #98.


Give file objects a string value

Useful for when a string type is required e.g. when combining multiple objects (string + file)
Fixes #1673

I'm opening a PR for this since I note that originally @skurfer had earmarked it to fix. The fix I implemented is essentially what I said in this comment.
I'm not sure of the consequences of giving file objects a 'string type' from the start, so I think it's worth @skurfer running with this build for a while.
P.S If you can download a debug version from here without having to build yourself ;-)
https://github.com/quicksilver/Quicksilver/actions/runs/2483657221

The impact of this probably varies from user to user. Basically, anyone that has an action that applies to text higher up on the list than Open (or whatever they want as the default for files) could get an unpleasant surprise. Easily fixed, but not sure if people would know that. It’s probably worth it to make this change, though.

So I've been thinking about this more recently, and this would fix the issue for File Objects, but not other objects types that don't have a string type still wouldn't work (in the issue above you mentioned tags).
Here's what I propose:
Change -[QSObject stringValue] to add:
id handler = [self handlerForType:[self primaryType] selector:@selector(stringValueForObject:)];
if (handler) {
stringValue = [handler stringValueForObject:self];
}

That way, any object handler (including plugins) can decide what to return for the 'string value' for a given object type on a case by case basis. This is arguably clearer than having plugin devs remember to set [obj setObject:myString forType:QSTextType] on every object.
I'm working on implementing this to see how it runs

It doesn't seem like this is going anywhere, some I'm going to close for now -- can reopen at any time.


MYRIAD-172  We are double counting cpu and memory resources for execu…

…tor, since it is added into task resources and Executor. Changing base values for task resources from executor ones to zero

That's not quite right.  The reason for the 4th variable is a place holder for resources used by the executor in case it used resources from the frameworkRole (instead of the default role).  This needs to be fixed in TaskUtils.getScalarResources.  Otherwise, Myriad can over subscribe the frameworkRole resulting in TASK_ERROR.
I've got a pretty good idea how to fix this, but if you'd like to continue working it I'm OK with that.  Wouldn't hurt for a second pair of eyes on that.

@DarinJ Is this something you'd like to get fixed before RC1 ? I'd like to either wait or prepare RC1 based on that.

@smarella @yufeldman I've got just finished a patch, I'll do a PR in 5 minutes if you can look over it.  It's two lines :).


doc: update packages in requirements.txt

Update to latest versions of:

requests
sphinx
breathe

Coverage decreased (-0.007%) to 68.446% when pulling 45243c73fce423c2966190f88b8f62da0c924ae0 on rrojo/upgrade-python-requirements into 5dc0be39f52429ed028e01f7d481b7bd0d6da704 on master.


Add Envy Code R

After making all changes to the cask:

[X] brew cask audit --download {{cask_file}} is error-free.
[X] brew cask style --fix {{cask_file}} reports no offenses.
[X] The commit message includes the cask’s name and version.

Additionally, if adding a new cask:

[X] Named the cask according to the token reference.
[X] brew cask install {{cask_file}} worked successfully.
[X] brew cask uninstall {{cask_file}} worked successfully.
[X] Checked there are no open pull requests for the same cask.
[X] Checked the cask was not already refused in closed issues.
[X] Checked the cask is submitted to the correct repo.

This cask was added with #333 but removed with #369. Although the author at #369 said that it's ok to include, it wasn't included back, so here goes :)

Thank you for your contribution.


Add keyword spacing lint rule

Adds rule to enforce spacing before and after keywords which is a common best readability practice in JavaScript. Makes sure that this:
if(foo){
    // ...
}else{
    // ...
}

Is written as:
if (foo) {
    // ...
} else {
    // ...
}

Hattip to @melissaroman-eb for finding this style inconsistency in a recent diff I posted.

🎉 LGTM!

@kwelch-eb @BenAtEventbrite is it up to me to merge this?

Yeah, we [typically] work PRs like diffs, once you have acceptance you land.


Redirect 404 to search page

🚀 Deployed on https://62eae0bcfab945136a528e11--cozy-fox-0defec.netlify.app


Database crud

This is the first pull-request that adds the new Database functionalities to the dev branch for further testing.
This includes:

Complete rework of API #10
Full new implementation of the Server functionality in Rust
Rust gRPC infrastructure #9
All Database CRUD routines #6 #7
Tests and Test infrastructure #14
Basic config handling #12

All changes are in preparation for the first release of the new version and prior to proper end-to-end tests.

Codecov Report

:exclamation: No coverage uploaded for pull request base (dev@d85d05a). Click here to learn what that means.
Patch has no changes to coverable lines.

:exclamation: Current head 4ca847b differs from pull request most recent head 3e415db. Consider uploading reports for the commit 3e415db to get more accurate results

Additional details and impacted files
@@          Coverage Diff           @@
##             dev      #23   +/-   ##
======================================
  Coverage       ?   13.22%
======================================
  Files          ?       25
  Lines          ?     3630
  Branches       ?        0
======================================
  Hits           ?      480
  Misses         ?     3150
  Partials       ?        0

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Forbidden page is accessible

The following page, which is supposed to be forbidden to teachers is available to them:
http://localhost:3000/#!/courses/create

The view is accessible, but the user CANNOT do anything.
The solution is : modify the
 tag and add a second section.

... THE VIEW ....

... NOT AUTHORIZED ...


Query results in indefinitely pending promise when encountering JSON-RPC error

While investigating issues around integration of PAPI and chopsticks (https://github.com/AcalaNetwork/chopsticks/issues/801) we also realised that queries can fail to reject when the chopstick client answers with a JSON-RPC error. The following code resulted in a promise that hangs indefinitely:
import { createClient } from "polkadot-api"
import { getWsProvider } from "polkadot-api/ws-provider/web"
import { withPolkadotSdkCompat } from "polkadot-api/polkadot-sdk-compat"

const client = createClient(
    withPolkadotSdkCompat(getWsProvider('ws://localhost:8000/'))
)
const dotApi = client.getTypedApi(dot);
const accountInfo = await dotApi.query.System.Account.getValue(
    '16JGzEsi8gcySKjpmxHVrkLTHdFHodRepEz8n244gNZpr9J'
);

Logging of RPC messages over the wire showed the following:
{"jsonrpc":"2.0","id":"__INTERNAL_ID","method":"rpc_methods","params":[]}

-{"id":null,"jsonrpc":"2.0","error":{"code":-32600,"message":"Invalid JSON Request"}}

Thank you for bringing this to our attention. You've identified an issue with Chopsticks, which currently does not fully comply with the JSON-RPC specification as it only accepts numbers in its id field.
That said, we're committed to contributing to Chopsticks to make it library agnostic (as of today its API is tightly coupled to some PJS implementation details). We’ll prioritize this task as much as possible because we believe that Chopsticks is one of the more valuable tools in our ecosystem. While I can't give a precise timeline at this moment, our goal is to address this issue before the end of Q3 2024.
Also, check this out 🙏

Hi @josepot, thanks again for working on bringing chopsticks forward by making it tool-agnostic, but there is a misunderstanding regarding the issue here. While the underlying issue that brought this to light is of course that chopsticks rejects requests that it should be handling, the fact that papi does not reject the query promise upon requests that have (conclusively) failed seems problematic to me and suggests issues with how papi manages JSON-RPC requests or, potentially, how the underlying rxjs event streams are 'promisified' (these are wild guesses, of course).
To summarise, if papi encounters issues which mean that a state query cannot be completed, I expect to be notified via a promise rejection, instead of it silently failing with the result that the promise remains permanently unresolved - which then requires me to add a secondary timeout to these requests, something that I really shouldn't have to handle on this level.

The issue with PAPI not rejecting the query promise upon failed requests appears to stem from how the server (Chopsticks) is handling JSON-RPC responses. Specifically, Chopsticks is sending a response with a different id than the one associated with the original request, which is a violation of the JSON-RPC specification.
To clarify, if the client had received a correctly formatted error response, such as:
{"id":"__INTERNAL_ID","jsonrpc":"2.0","error":{"code":-32600,"message":"Invalid JSON Request"}}

the promise would correctly reject as expected.
However, the client is receiving various types of messages from the server, including both notifications and responses. According to the JSON-RPC spec, the client needs to correlate the id of the request with the id of the response. Since the server is responding with an unrelated id (e.g., id: null), PAPI can't recognize that the query has failed.
In short, this isn't an issue with PAPI itself, as PAPI is sending a valid request. The problem lies with the server's non-compliant response.

Ah that makes sense. That's indeed quite the fringe edge case, which we hopefully don't see too often.


Spells missing to the list of exception for duration

Description of the bug
Edict of invulnerability isn't in the list. Being in the top 3 most pozerful spells in the game it s q bit of q problem.
thanks!
Steps To Reproduce
show buffs to add to exception list. type name, dont find
Expected Behavior
No response
Log Files
No response
Save File
No response
Screenshots
No response
Settings
No response
Toybox Version
1.5.4c
Operating System
No response
What game are you using Toybox on?
Pathfinder Wrath of the Righteous
Game Version
No response
Anything else?
No response


Add the deployed website link to the repository

will add the deployed website link to the repository
Iam a GSSOC'24 Contributor can you please assign this to me

added by @Muskansahuincredible
thanks for opening an issue, you can open and work on another issue, this is completed


Quantization and impact on the inputs

Hi,
I have trouble finding a recent document explaining how quantization is done. Is it still done using a uniform symmetric quantization ?
I am asking this question because it occurs to me that if quantization is symmetric, it becomes important to train a network with an input symmetric around zero. I am usually training my DNN with inputs rescaled between 0 and 1 and, if i am correct, by doing so, there is 1 bit that I never use when I quantize my inputs. Could you confirm ?
Thanks in advance for your help

hi @Laadr it is uniform symmetric quantization. The detailed is in https://github.com/Xilinx/Vitis-AI/blob/master/Vitis-AI-Quantizer/vai_q_tensorflow/tensorflow/contrib/decent_q/kernels/fix_neuron_ops.h

Thanks for your answer

@Laadr I do not know if you mean strictly symmetric like [-127, 127].  the number of  step range[-128, 127] in this quantize tool

Hi @xieyi4650, my point was rather to understand if it still makes sense to train a DNN with the inputs rescaled between 0 to 1. From your answer, I see that it does not and that it is better to have an input symmetric around 0 (between -1 and 1 for example).
As a complementary question, I am wondering if you plan to add options for the quantize tool or it is not your focus for now. I read for example that using more bits for the quantization of input activations and outputs activations of the network can help to improve the results. I would be interested in testing that.

Hi @Laadr ,  Yes, it is better to use symmetric input.  If you use (0,1) as input, this results half bits unused(-128, -1) like output of relu.
We are planning to do this, but there is no exact time for implementation.


gl_engine: Use advance tessellate algorithm

This PR change changed the tessellate function in GlGeometry to use the new algroithm to break polygon into triangles.
The algorithm is based on my previouse PR #1342 . It can handle Concave Polygon and Even-odd fill rule.
Some example rendering result

FillRule
Tiger SVG
Custom Transform

This is a big patch, I tried to split the code, but the tessellator can not be split anymore. And this may make the review more difficult :joy:
The tessellator not handle anti-alias for now, and I will add aa process in the future

@RuiwenTang btw, please add yourself here https://github.com/thorvg/thorvg/blob/main/AUTHORS

@RuiwenTang LinkedList might need a redesign of its interface. I can't see any unnecessary parameters in the functions, such as 'head' or 'tail'. right now it's ok, let's move on. thanks.

@RuiwenTang fyi, I think this kind of interface is more intuitive and easy to access.
template typename T
struct ListNode
{
   T* prev, next;
}

struct List
{
   T* head, tail
   List(T* item)
   insert(T* item, T* prev, T* next)
   append(T* item)
   remove(T* item)
}

@RuiwenTang fyi, I think this kind of interface is more intuitive and easy to access.
template (typename T)
struct ListNode
{
   T* prev, next;
}

template (typename T)
struct List
{
   T* head, tail;
   List(T* item)
   insert(T* item, T* prev, T* next)
   append(T* item)
   remove(T* item)
   ...
}

I agree with this. But I wish the to make the ListNode more generic and can be inserted into multiple list like the Double linked list in Linux kernel. For example:
template <T>
struct ListNode {
  // list a
  T* a_list_prev;
  T* a_list_next;
  // list b
  T* b_list_prev;
  T* b_list_next;
};

@RuiwenTang If you really intened that usage, you can try this:
struct  UserData {
  ListNode list[2];
}

or
template<T, N>
struct ListNode
{
   T* prev[N]
   T* next[N]
}

However, I believe there is a misunderstanding regarding the double-linked list. The Linux Kernel implements an "inlist" style container that doesn't store data in the List Node itself. That approach is necessary due to the lack of template utilization in linux kernel. Regardless, the functionality remains identical. However, my suggestion is even simpler for our purposes, as we are not constructing data structures and algorithms for general usage beyond thorvg (not for users).


Align all tsconfigs and vscode-ws-jsonrpc provides sem/cjs

Added typesVersions to monaco-languageclient and vscode-ws-jsonrpc, so exports can be properly imported with TS:
I did not understand why the "exports" lead to import problems in typescript (node example) until I found this:
https://github.com/teppeis/typescript-subpath-exports-workaround
vscode-ws-jsonrpc gets a 1.0.1 release once this is merged.
and it makes sense to release a 2.0.2 of monaco-languageclient, because of the  typesVersions. Do you have other things that should be fixed as well?

Do you have other things that should be fixed as well?

I admit I didn't experience any issue

Shall I remove the AMD and CJS build from monaco-languageclient with this PR as well. We only keep monaco-converter and monaco-converter/cjs for BW-compatibility reasons, then?

Shall I remove the AMD and CJS build from monaco-languageclient with this PR as well. We only keep monaco-converter and monaco-converter/cjs for BW-compatibility reasons, then?

Yep! I wonder why anything else than ESM would be useful in 2022. And then I noticed vscode-languageclient is still in CJS only :disappointed:

@CGNonofr I update the CHANGELOGs (sorry for the dash changes).
Do you think the BREAKING CHANGE section is now better (in both packages)?


 I need to move windows around by grabbing the title bar and dragging the window.
With all the buttons and file name fields and "Undo" and Username, and upload and download and search and "menu" and other buttons, there is no where to grab the windows to move the window.
I need to move all of that crap that is in the title bar (with the exception of the Window Title, Minimize, Restore, Maximize, and Close buttons) back to menus BELOW the Title Bar so that I can EASILY grab the title bar of the windows to move them around my desktop.

"Snapping" a window isn't a viable alternative.  By the way, the ONLY device I have EVER used "snapping" more than 3 to 5 times was on my Surface Pro, when using it as a tablet.
There must be some way to return the Title Bar back to when it was CLEAN, UNCLUTTERED, and was a great handle for moving the window - I just need to know how to return the Title Bars to the CLEAN, UNCLUTTERED format.
Thanks!

WinUI can't be used to modify other existing applications that you don't have the source code for.


Remove ROS1 melodic from CI

This will be EoL at the end of this month.
https://wiki.ros.org/Distributions

We can remove it now.


Made Sidebar and Color palette view responsive on mobile

Partly fixes #409

I had to combine both the color palette view and sidebar fixes so I could have a better view of how everything will be positioned in the end. 🙂

INCREDIBLE! 🚀


Fine Tuning on Custom Dataset

Thank you very much for sharing this great work!
I was wondering if there are any instructions on how to prepare custom data to be used for fine-tuning Bros. I understand there are preprocessing codes for FUNSD, but if there are summarized instructions, it will be greatly helpful.

Input data preprocess
https://github.com/clovaai/bros/blob/55c52d0872ed61fb7586b70618f45dcb0354f1b2/preprocess/funsd_spade/preprocess.py#L74-L86

The data must have 4 point quadrangle coordinates. If you have a rectangle coordinate, transform it into (8,) shape.
Tokenize transcription(GT or output of OCR) using bert tokenizer. https://github.com/clovaai/bros/blob/55c52d0872ed61fb7586b70618f45dcb0354f1b2/preprocess/funsd_spade/preprocess.py#L31

For KIE task, please refer to the code block below.
https://github.com/clovaai/bros/blob/55c52d0872ed61fb7586b70618f45dcb0354f1b2/preprocess/funsd_spade/preprocess.py#L96-L116

Thank you!
For now I am interested in token classification task. To clarify, let's say for each document I have:

a list of words
a list of bounding boxes corresponding to those words
and a list of labels for each box

Which type of preprocessing should I do? For FUNSD I see there are two types funsd and funsd_spade.
I ran both preprocessing and see that parse will be different in the processed files. I appreciate if you can tell me conceptually the reason for this difference.

Simply,

funsd: for BIO-tagging decoder
funsd_spade: for SPADE style decoder

Since BIO-tagging approach is common, I recommend using this method first.


Package approval docs no longer visible

Hiya,
It looks like since the package writing docs went up a level into the generic MakeCode docs the link to the micro:bit approval process got dropped.
It used to be https://makecode.microbit.org/packages/approval but now https://makecode.microbit.org/packages/build-your-own links to https://makecode.com/packages/getting-started which has a generic approval page.
Could we rectify this so MBF approval doc is still visible please?

@ganicke can you please help here?

Brought back approval with a build package doc.
Added in: https://github.com/Microsoft/pxt-microbit/pull/560


Error on compile

include\easy-mysql.inc(1116) : error 001: expected token: "-string end-", but found "-identifier-"
include\easy-mysql.inc(1169) : error 001: expected token: "-string end-", but found "-identifier-"
Line 1116 - handle = SQL::CreateTable(table, (isnull(column_where)) ? "InnoDB" : column_where, (isnull(column_where2)) ? "latin5" : column_where2, connectionHandle);
Line 1169 - handle = SQL::CreateTable(table, (isnull(column_where)) ? "InnoDB" : column_where, (isnull(column_where2)) ? "latin5" : column_where2, connectionHandle);

@Walter-Correa Did you try v3.8?

@Walter-Correa Did you try v3.8?

Is not in releases

@Walter-Correa Did you try v3.8?

But 3.8 is not in releases list.

@Walter-Correa Did you try v3.8?

But 3.8 is not in releases list.

You're right, now you can look.

@Walter-Correa Did you try v3.8?

But 3.8 is not in releases list.

You're right, now you can look.

Thank you. Your include is the best, keep it up!

@Walter-Correa Did you try v3.8?

But 3.8 is not in releases list.

You're right, now you can look.

Thank you. Your include is the best, keep it up!

Thanks for your comment.

include\easy-mysql.inc(1020) : error 017: undefined symbol "handle"
include\easy-mysql.inc(1018) : warning 203: symbol is never used: "connectionhandle"

1020

Sorry, updated.


better move focus to right if possible when removing focus, rather than to left

The more often used tabbed application, Chrome (as well as Edge), uses the strategy to move the focus to right when removing focus.
That is: a b c d => a c d, when b removed
While, currently we: a b c d => a c d, when b removed

Seems like a good and just fix to me.

Should we close this one because of #767 ?

Yes we should, I guess the "the" in that PR broke github's auto-linking.


Add new "Privacy Sandbox" menu item

Description
Add a new top-level "Privacy Sandbox" menu item in the sidebar and embed https://privacysandbox.com/  on the landing page.
Relevant Technical Choices

Testing Instructions

Additional Information:

Screenshot/Screencast

Fixes #149

@amovar18 Can you please fix the failing test.

@sayedtaqui Test has been fixed


Stick footer

Right now, the footer is not stick to the bottom of the page.
I have to make it sticked to the bottom.

http://getbootstrap.com/examples/sticky-footer/


Installing previous version action is not working for renamed extensions

Ref https://github.com/microsoft/vscode/issues/76211
From @EricJizbaMSFT
As I side note, I tried to install the old version directly from VS Code (instead of from a vsix), but no luck.

@kesane-msft It happens because the properties of old extension (with old name) are not available when querying from marketplace. Are they get deleted when extension gets renamed?

@sandy081 yes. During the rename, we basically just change the latest version of the extension.

Sorry if I am not clear -
I run the query with new name and in the query I request for all versions.
In the result, I get all versions of the extension but only those versions with new name has properties, remaining has missing properties.

@sandy081 - that's because we don't migrate the properties for the older versions.

@kesane-msft Is it possible to also migrate the properties? We heavily rely on properties to know the metadata of the extension.

@sandy081 fair ask. I have logged a bug on our side to make these changes.


Add Instructions on opening port 5432 on ubuntu

get into sudo vim /etc/postgresql/12/main/postgresql.conf
Uncomment, and change the value to '*', this will allow Postgres connections from anyone.
listen_addresses = '*'

Save and exit the file. Next, modify pg_hba.conf to also allow connections from everyone. Open the file with your preferred editor:
sudo vim /etc/postgresql/12/main/pg_hba.conf

Modify this section:
# IPv4 local connections:
host    all             all             <IP_ADDRESS>/32            md5

To this:
# IPv4 local connections:
host    all             all             <IP_ADDRESS>/0            md5

https://www.digitalocean.com/community/questions/remote-access-to-postgresql-with-pgadmin
open the firewall
sudo ufw allow 5432/tcp

https://stackoverflow.com/a/51597485/9708266

read up on security re: opening connections to anyone -- is there a best practice other than <IP_ADDRESS>/0?

don't modify -- just add the IPv4 line
also add the IPv6 protocol

add this in instructions:
╭─ ~ ─────────────────────────────── database_admin@ip-172-31-37-99 13:02:36 ─╮
╰─❯ sudo service postgresql restart                                          ─╯
╭─ ~ ─────────────────────────────── database_admin@ip-172-31-37-99 13:03:31 ─╮
╰─❯ sudo systemctl restart nginx


[CI] Split Integration tests out of first phase of pipeline

I took a look at the time taken by each stage in the Jenkins pipeline and what comprises the 6 hour CI build time. CPU Integration tests took 60 minutes of the 100 minutes of Build: CPU. By adding python3: CPU with just those Integration tests, it lines up with python3: GPU and python3: i386 which both take a similar amount of time and takes roughly 60 minutes off the overall run time.
Numbers copied from sample successful run (final time approx: 358 minutes):

Phase
ID
Job
Minutes
Start

0
0
Sanity
3
0

1
0
BUILD: arm
2
3

1
1
BUILD: i386
33
3

1
2
BUILD: CPU
100
3

1
3
BUILD: GPU
25
3

1
4
BUILD: QEMU
6
3

1
5
BUILD: WASM
2
3

2
0
java: GPU
1
103

2
1
python3: GPU
66
103

2
2
python3: arm
22
103

2
3
python3: i386
70
103

3
0
docs: GPU
3
173

3
1
frontend: CPU
40
173

3
2
frontend: GPU
185
173

3
3
topi: GPU
110
173

Numbers predicted after change (final time approx: 293 minutes):

Phase
ID
Job
Minutes
Start

0
0
Sanity
3
0

1
0
BUILD: arm
2
3

1
1
BUILD: i386
33
3

1
2
BUILD: CPU
35
3

1
3
BUILD: GPU
25
3

1
4
BUILD: QEMU
6
3

1
5
BUILD: WASM
2
3

2
0
java: GPU
1
38

2
1
python3: GPU
66
38

2
2
python3: arm
22
38

2
3
python3: i386
70
38

2
4
python3: CPU
60
38

3
0
docs: GPU
3
108

3
1
frontend: CPU
40
108

3
2
frontend: GPU
185
108

3
3
topi: GPU
110
108

@tqchen can you comment on why we have integration tests in the first part? IIRC it was originally due to scarcity of GPU nodes but now perhaps we don't need to worry so much. wdyt? i agree with @Mousius assessment that the CPU is the long pole in the first phase, and switching to xdist will only make that more obvious.

Thanks for taking a look @areusch / @tqchen - could someone trigger the staging job so we can see if I've managed to get the incantation right? :smile_cat:

This is building, https://ci.tlcpack.ai/blue/organizations/jenkins/tvm/detail/ci-docker-staging/160/pipeline only merge after this has gone green.

Had to re-push due to a flakey unit test on the PR build, docker-staging build is here now:
https://ci.tlcpack.ai/blue/organizations/jenkins/tvm/detail/ci-docker-staging/161/pipeline

In bias for action, I am going to merge this one feel free to follow up if other things need to happen.


mygui: add withOgre argument

Things done

[ ] Tested using sandboxing (nix-build --option build-use-chroot true or nix.useChroot on NixOS)
Built on platform(s)

[ ] NixOS
[ ] OS X
[ ] Linux

[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[n/a] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

Added a withOgre argument according to #14587 so it doesn't depend on Ogre (and indirectly on nvidia-cg-toolkit, which is nonfree)
Compiling openmw with {withOgre = false} worked (it didn't recompile, just repeated the result from the previous commit which used overrideDerivation). Building with withOgre = true (the default) wasn't done yet, but this one is supposed to be exactly the same as before.

After some testing I found out this:

Currently MyGUI doesn't even build because its tools are broken (Boost is not linked properly).
Demos are built but not installed, and therefore useless.
MyGUI has OpenGL rendering engine in addition to Ogre (and dummy) one; mesa would certainly be in user's store when using MyGUI (because OpenGL) -- therefore we can safely add it as a dependency so the library would be (hopefully) more useful.
I don't know how useful plugins are, but they are installed at least -- let's include them.

I've pushed my changes to https://github.com/abbradar/nixpkgs/commit/421380c1a10827d09d60797b1949abb28546568e -- what do you think?

I've pushed this and also made it to not use Ogre by default, since OpenMW needs it that way and the other package using it is broken. Thanks!

https://github.com/MyGUI/mygui/blob/master/CMakeLists.txt#L107 has the description of the cmake flags, including a default false for installing demos and tools. Maybe that's why you say demos are built but not installed?
Also, I don't understand, is this or stuntrally (the other package) that is broken right now?

stunt-rally -- see https://github.com/NixOS/nixpkgs/commit/1365492424828c02b8e0626eb3ee9ef4335bc6e5. I don't see much gain in having demos installed by default anyway -- most users won't need them and those who need would usually be more interested in source code. Let's keep it this way unless someone asks for them.

I've also filed https://github.com/NixOS/nixpkgs/pull/14611 to drop nvidia-cg dependency by default -- it seems our applications build fine without it.


Added support for faster front-end (client) builds with webpack dev server

What is in this PR?
As indicated in #161, clients builds are slow mostly because of some heavy dependencies (like @fluentui). However, the primary reason why it's slow is that incremental client builds are not exactly "incremental" (this issue is very similar to slow SPFx "serve" builds as well). Every time we change a client file (for example modify a tab's TS code), gulp spins up the webpack process from scratch (webpack:client). Webpack has a built-in watch mode, which is a lot more efficient than running it "from scratch". You can combine it with webpack-dev-serve and receive live reloading as well.
How it works
Instead of running webpack:client on every client file change, I replaced it with a webpack-dev-server, which automatically watches for client file changes. Dev server is launched as a child process (using nodejs fork) and automatically restarted on .env change (like it was before). Now every time you run any -serve command, it will spin up a webpack-dev-server for client builds with live reload enabled (even for ngrok or codespaces). However, it's important to run it with --debug since only in this mode it serves development builds (otherwise it will minify js which is slow.). Now incremental client builds take ~1s instead of 10-15s for the raw scaffolded configurable tab project.
Additionally, I changed the default ts-loader to be transpile-only and added fork-ts-checker-webpack-plugin which performs type-checks in a separate child process (it also adds an additional 30-50% performance boost on the initial run).
Lastly, for --debug mode I changed the ESLint plugin to lint only changed files (lintDirtyModulesOnly) because it also has an impact on performance.
To conclude, if you need maximum performance for the serve, always use --debug parameter.
Solves #161

Thanks a bunch. We discussed exactly this a couple of days ago, so very very timely. For the real applications I've been building with the generator, I've always switched out to use the fork-ts-checker-webpack-plugin. It's been on my backlog for a very long time to incorporate that - so thanks for doing this!
I'll review this ASAP so we can get a preview out there, and get feedback.

Manually merged into preview branch (51133fbe799b526d1089a29069646a6e5a5ecdfa). Will close when merged to master


e2eSoft.e2eSoftiVCam version <IP_ADDRESS>

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.0 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Hey, please see my comments above.
Also, you need to rename the following folders and files via Github Desktop to match the suggested changes:
Folder: e2eSoftiVCam -> iVCam
Folder: <IP_ADDRESS> -> 6.2.2
File: e2eSoft.e2eSoftiVCam.installer.yaml -> e2eSoft.iVCam.installer.yaml
File: e2eSoft.e2eSoftiVCam.locale.en-US.yaml -> e2eSoft.iVCam.locale.en-US.yaml
File: e2eSoft.e2eSoftiVCam.yaml -> e2eSoft.iVCam.yaml

I have committed the changes you have suggested using the website - are you saying that I need to download the GitHub desktop application to do it properly? sorry, this is my first time. thanks for your help.

I have committed the changes you have suggested using the website - are you saying that I need to download the GitHub desktop application to do it properly? sorry, this is my first time. thanks for your help.

Hey there, that is correct. The easiest way to rename folders and files in a PR, would be via GitHub Desktop. You are not able to do that via the GitHub website.

You can also close this PR and open up another one with the suggested changes. However, it is very useful to learn certain things regarding GitHub, especially if you plan on adding more applications to winget, among other things. So my suggestion would be to see if you are able to change it via GitHub Desktop and commit it to this PR.

Perfect, love to see it. Now you need to wait for it to go through the 7 automated checks, followed by a manual review from an Administrator or Community Moderator.
Also, you should probably change title of the PR to match the new PackageIdentifier and PackageVersion. You can do that via the GitHub website:

I THINK I DID IT?!? lol, thanks for the encouragement. The funny thing is, I originally had it formatted correctly just by using common sense and logic but wingetcreate spat out some errors when I tried to submit it. so I ran it again and just left it with suggestions wingetcreate gave me. I think the problem was something to do with tokens... I had created one as per the instructions of the tutorial I was watching and the removal of said token seemed to fix the issue. anyway, i think I've got the hang of it now :)

@xxPYROxxJONESxx if you think it's a bug in the Windows Package Manifest Creator, feel free to 👍 the bug if it has already been reported, or create a new one.


Why is PhGetTokenElevationType re-checked? can it change?

I wonder why is PhGetTokenElevationType called when updating process items, can the elevationType os a process change at run time?
Same question for PhGetTokenUser a few 10 lines further up in procprv.c the user a process is assigned to shouldn't change at run time, so why re query this values, it would be enough to do that once when a new processItem is added, or am I missing something?
Since we are at it...
if we have processExtension we have the field JobObjectId which when the process is assigned to a job is != 0 hence we only need to query the processes Job Data if that value is not 0.
just a few thoughts to improve on CPU usage....

shouldn't change at run time, so why re query this values, it would be enough to do that once when a new processItem is added, or am I missing something?

https://stackoverflow.com/questions/5141997/is-there-a-way-to-set-a-token-for-another-process/13066468#13066468

From the stackoverflow question

Yes, you can, using the undocumented NtSetInformationProcess function, however once the process has started running the process token is locked and can no longer be modified. You must therefore start the process with the CREATE_SUSPENDED creation flag, set the process token, then resume the process using ResumeThread().

So its almost as I thought just with a catch 22... the trick with CREATE_SUSPENDED
Hence the best course of action would be to have a flag process started which gets set to true once the process has been seen in any other sate than suspended.
Or has > 1 thread, or can I CREATE_SUSPENDED and than inject a thread into it resulting in a still suspended process with a changeable token and two threads inside?
Anyhow...
Once we see the flag has been triggered, we can stop re querying these token Information.
Also whats with using JobObjectId top or flop?

@DavidXanatos
As dmex said, it is possible to alter a primary token on early stages of process' life. Sandboxie, for example, does it with all processes running under its supervision. By re-querying tokens, we make sure that program can't trick PH show outdated low-privileged tokens while they use highly-privileged ones.

Or has > 1 thread, or can I CREATE_SUSPENDED and than inject a thread into it resulting in a still suspended process with a changeable token and two threads inside?

Creating the second thread also locks the primary token. Though, Windows Internals states that it happens unless the process is a POSIX subsystem process.

Can the ElevationType of a process change at run time?

In fact, yes. Elevation type is not a property of a token itself — it's more a property of a token's logon session. When we say that a token has a linked token we mean that its logon session has a linked logon session, so querying linked token duplicates a token of a linked logon session.
If you have SeCreateTokenPrivilege, you can manually link logon sessions using NtSetInformationToken with TokenLinkedToken information class. It changes elevation type of both logon sessions and so of all tokens that reference them. That's how UAC sets elevation type internally and why we should not cache it.

I see...
So there is nothing about a token that can be safely cached even after the process started
PhGetTokenUser, PhGetTokenOwner, PhGetTokenPrimaryGroup, PhGetTokenSessionId, PTOKEN_APPCONTAINER_INFORMATION
???

Not really. You can cache almost everything, but after doing so, you need to query
TOKEN_STATISTICS to monitor Modified ID, and be ready to invalidate the cache if it changes. If you also want to cover the case when the whole token gets replaced, use a pair of Token ID + Modified ID to identify it.
On Windows 7 it will cover everything except session ID, elevation type, and token flags (from TOKEN_ACCESS_INFORMATION). On later versions, it may also include some newer information classes.