devicetree: allow interating devicetree nodes with identical zephyr,device-type properties

This PR add a base zephyr,device-type property for indicating the Zephyr-specific type of device represented by a given binding. Knowing the type of device will allow iterating through a devicetree nodes with the same type at build-time, an often requested feature.
As examples, the base ADC controller and base GPIO controller devicetree bindings have been updated to make use of this new property. If this is accepted, all devicetree base bindings should have this added.
Apart from the tests cases, the list of hardcoded compatibles in the ADC shell module has been replaced with a one-liner, iterating all ADC controller devicetree nodes. This not only saves us having to update this list, but it also makes the ADC shell work with out-of-tree ADC controller bindings/drivers.
This functionality can be used many places in the tree.

@gmarull Yeah, I know that this does have a slight hacky feel to it. Thanks for looking through it.
It was an idea I had while working in a different issue, and I couldn't really let it go without giving it a try.
I'd be interested in hearing other opinions too.

The last time I proposed something similar, namely adding an api property to the devicetree, it was argued that the API is not a hardware property. I know this PR only mentions device class, but I'm guessing we expect the API to match the device type as well? In any case, I pointed to the deprecated device_type property (according to DT spec v0.4) as an argument for having the type in the devicetree, which was not exactly met with open arms :D (very much no to that).
I like the approach of the macros like SENSOR_DEVICE_DT_DEFINE which is quite simple, and I may want to do the same for RTCs (to be able to automatically get time using standard time functions like mktime, although zephyr,rtc = &rtc may be better for that).
RTCs are actually a good example of where the API does not match the device type, given that some RTCs in-tree can implement either the counter API or the RTC API depending on if CONFIG_COUNTER=y or CONFIG_RTC=y, in this case, the sensor type macro will more accurately tag the device as an RTC or counter than the zephyr,devicetype property. I know its an outlier, but it's notable.
That said, how about the required properties used for gpio-controller and interrupt-controller? These seem to be able to be used in place of the zephyr,devicetype? should we add this to ADCs, like adc-controller?

If we need to iterate over devices based on their class, what I think we need are device class specific instantiation macros, so that we can store devices in multiple lists (using iterable sections).

The device specific class macro idea sounds like a lot of work for someone creating their own drivers classes out of tree, they need to edit/add linker files (so basically have to fork zephyr), add device instance macros that presumably would need to reference some unique ID - and how would that ID remain unique? If they then updated to the next zephyr release which adds e.g. 2 extra driver classes in tree, they'd then have a collision? Or would there be no IDs at all and just names, but then how would you iterate over all devices (ignoring types)?

That said, how about the required properties used for gpio-controller and interrupt-controller? These seem to be able to be used in place of the zephyr,devicetype? should we add this to ADCs, like adc-controller?

This was actually my initial approach, as I already use the gpio-controller property to iterate all GPIO controller nodes in the GPIO hogs driver:
https://github.com/zephyrproject-rtos/zephyr/blob/574e641297b1d97bb43d0cb0ba985a058fe53e66/drivers/gpio/gpio_hogs.c#L38

The device specific class macro idea sounds like a lot of work for someone creating their own drivers classes out of tree, they need to edit/add linker files (so basically have to fork zephyr)

I share that concern. While I agree that the introduced zephyr,device-type property doesn't really describe hardware (although it kind of does, similar to the gpio-controller property), the approach here supports out-of-tree driver classes without anything else needed than three lines in an out-of-tree YAML file.
By using default and const in base bindings, the property will only be part of the generated zephyr.dts and should never have to appear in user-written DTS files, which somewhat encapsulates this.

This proposal looks like a re-introduction of device_type that has been deprecated.
The compatible construction has the same functionality: create an umbrella compatible and use this to walk. The device_type would just replicate this construct with a lot of source for discussion: what device_types will be allowed, should multiple device types be supported, ...

Rebased on main.

Will it be possible to define two types for a single node? gpio-controllers can also be interrupt-controllers, which is possible with the dts properties gpio-controller and interrupt-controller See intc-gpio test binding and BCM11130 linux binding for example :)
I'm guessing zephyr,type will refer to the zephyr API used for the device, so a gpio/intc node would get the zephyr device type gpio-controller?

Will it be possible to define two types for a single node? gpio-controllers can also be interrupt-controllers, which is possible with the dts properties gpio-controller and interrupt-controller See intc-gpio test binding and BCM11130 linux binding for example :)

We could extend this to support a string-array of device types, but since - in Zephyr - each devicetree node, at least currently, maps to only one device type, I don't see a need for it yet.
If this is needed in the future, the APIs can stay the same, only the implementation and the property type needs to be updated.

I'm guessing zephyr,type will refer to the zephyr API used for the device, so a gpio/intc node would get the zephyr device type gpio-controller?

Exactly. A GPIO controller supporting pin interrupts is still a GPIO controller in this regard.

What do you think of this solution?
https://github.com/zephyrproject-rtos/zephyr/blob/45205f865e18decbb9568c4691686dc679cbe961/include/zephyr/drivers/sensor.h#L1317-L1324
It seems to solve a similar issue, at least for the shell case.

What do you think of this solution?
https://github.com/zephyrproject-rtos/zephyr/blob/45205f865e18decbb9568c4691686dc679cbe961/include/zephyr/drivers/sensor.h#L1317-L1324

The "sensor info" solution has a run-time cost of added flash usage. The solution in this PR has no runtime cost.

@henrikbrixandersen @bjarki-trackunit have you considered generating some array with a list of devices by API type based on the API struct name instead? Ultimately what we really want is all devices that implement a certain API, maybe we could have a script that goes through all the objects looking for device structures, group them by the api struct name that they implement and generate some source from it. Then one would not have to set the type manually as a free string.

@pdgendt I was thinking just normal arrays for this one, that way they'd get discarded automatically if not used, I'd imagine most of the time they won't
It sounds a bit complex though, first one would have to generate the extern for the array pointer and size based on all defined api types, then build the object, then generate the file with the array list and size and build that as well, then link.

@pdgendt actually yeah I think your suggestion makes sense, the API struct are in rodata right now right? There's nothing special to them? So one could think about putting them in sections by type and then iterate over them, it'd be a bit simpler than what I was thinking. The drawback is that then you actually want the struct device so you'd have to scan the device list to find which one correspond to the API pointer but that should not be a big deal (what I had in mind was to resolve that at build time and to a list of struct device pointers).

@pdgendt actually yeah I think your suggestion makes sense, the API struct are in rodata right now right? There's nothing special to them? So one could think about putting them in sections by type and then iterate over them, it'd be a bit simpler than what I was thinking. The drawback is that then you actually want the struct device so you'd have to scan the device list to find which one correspond to the API pointer but that should not be a big deal (what I had in mind was to resolve that at build time and to a list of struct device pointers).

Yeah, there would be some runtime overhead to iterate the devices instead of the APIs, but there won't be additional ROM overhead.
I think it could coexist with what is proposed in this PR, but maybe it's undesired to have both.

An additional benefit of using the linker sections, is that you can add type checking in the API calls.
static inline int z_impl_spi_transceive(const struct device *dev,
					const struct spi_config *config,
					const struct spi_buf_set *tx_bufs,
					const struct spi_buf_set *rx_bufs)
{
	const struct spi_driver_api *api =
		(const struct spi_driver_api *)dev->api;
	int ret;
	STRUCT_SECTION_START_EXTERN(spi_driver_api);
	STRUCT_SECTION_END_EXTERN(spi_driver_api);

	__ASSERT_NO_MSG(STRUCT_SECTION_START(spi_driver_api) <= api);
	__ASSERT_NO_MSG(api < STRUCT_SECTION_END(spi_driver_api));
	/* Optionally add a runtime check */

	ret = api->transceive(dev, config, tx_bufs, rx_bufs);
	spi_transceive_stats(dev, ret, tx_bufs, rx_bufs);

	return ret;
}

An additional benefit of using the linker sections, is that you can add type checking in the API calls

I was just thinking the same :-)  also I think you could use
__ASSERT_NO_MSG(IN_RANGE(api, STRUCT_SECTION_START(spi_driver_api), STRUCT_SECTION_END(spi_driver_api));

in that snippet, may even make sense to have a macro for that in iterable_sections.h.

@pdgendt, @fabiobaltieri, the creation of linker-sections or run-time access is already supported by the build system.
When a compatible describing the device-type is added to the dts-node it is possible to just add the linker sections based upon #define DT_DRV_COMPAT xxx and DT_INST_FOREACH_STATUS_OKAY or in the driver code validate the existence of the "device-type compatible" and add it to allow run-time validation.
IMO this is why the device-type has been deprecated in devicetree as it is easily replaced by a compatible.

I made an attempt at making sorting by devicetype at build time using macros like dts a while back #58112 It's a bit more complicated as we are generating headers at different build stages, but the underlying idea was the same :)

When a compatible describing the device-type is added to the dts-node it is possible to just add the linker sections based upon #define DT_DRV_COMPAT xxx and DT_INST_FOREACH_STATUS_OKAY or in the driver code validate the existence of the "device-type compatible" and add it to allow run-time validation.

This would create an additional array/structure, whereas placing the existing API structs into a linker section has no additional ROM overhead.

When a compatible describing the device-type is added to the dts-node it is possible to just add the linker sections based upon #define DT_DRV_COMPAT xxx and DT_INST_FOREACH_STATUS_OKAY or in the driver code validate the existence of the "device-type compatible" and add it to allow run-time validation.

This would create an additional array/structure, whereas placing the existing API structs into a linker section has no additional ROM overhead.

Adding them directly into a linker section could also be done, the compatible is describing the name of the linker section, a "registration" to this linker section is possible with a construct like the one utilized in registering static settings in the settings subsystem.

@Laczen just to be clear: your suggestion is to use multiple compatibles, basically adding one for the device type, and then iterate over those, right?

@Laczen just to be clear: your suggestion is to use multiple compatibles, basically adding one for the device type, and then iterate over those, right?

Yes, use a compatible to describe the device-type.
It is then possible to drive the creation of the linker section based upon DT_HAS_XXX_ENABLED and have the driver register to the appropiate linker section (the node has the  xxx-compatible). I don't think any iteration is needed.

Yeah my point is that it would  be nice to use the api struct information instead, that way the system would just work.

Yeah my point is that it would be nice to use the api struct information instead rather than specifying it manually, that way the system would just work.

Using the api struct information could be done by modifying the DEVICE_DT_INST_DEFINE() macro, not registering a pointer but instead the api. This will take some macrobatics to support compile optimizations to reduce the api struct (some routines maybe missing depending on compile options). This would require quite some work.
Modifying DEVICE_DT_INST_DEFINE() to take a specific linker section (for storing the pointer to the devices api struct) should be quite simple and this would also allow checking if the dev belongs to a specific type (as suggested by @pdgendt). Maybe we can even just sort the devices based upon the specified compatible and retrieve the start and end of these devices types automatically. It would not be as optimal as directly registering the api structure but it are just a number of pointers to the api structs.

It's great you have all sorts of ideas how this could be done in different ways. I urge you to create PRs implementing this functionality as alternatives to this.
The suggestion about having a common device type be part of the compatibles list is not as easy as it sounds, though. All DTS(I) files would need to be modified for this solution, whereas the solution implemented here only requires three lines added to each base devicetree binding file.

It's great you have all sorts of ideas how this could be done in different ways. I urge you to create PRs implementing this functionality as alternatives to this. This PR has been open for three months now without anybody stepping up with another proposed solution that does incur a run-time overhead in one way or another (ROM usage, CPU cycles, ...).

I think this PR is a nice addition, it solves the problem of listing devices at compile time, whereas the linker idea is useful for runtime checks.

It's great you have all sorts of ideas how this could be done in different ways. I urge you to create PRs implementing this functionality as alternatives to this. This PR has been open for three months now without anybody stepping up with another proposed solution that does incur a run-time overhead in one way or another (ROM usage, CPU cycles, ...).
The suggestion about having a common device type be part of the compatibles list is not as easy as it sounds, though. All DTS(I) files would need to be modified for this solution, whereas the solution implemented here only requires three lines added to each base devicetree binding file.

@henrikbrixandersen, all ideas that have been formulated where about extending the proposal. And these extensions could be done based upon a device-type or a compatible.
Regarding the use of compatibles versus device-type: The devicetree in linux used to have something like a device-type, but it has been deprecated so I find it strange that zephyr would need it. In zephyr we are already "grouping" items based upon compatibles, e.g. "fixed-partitions", "soc-nv-flash", so why take a different approach for devices ?
Regarding the need to modify all (DTS)I files or not, this is correct, the PR needs less work in (DTS)I files.

I like the idea, it very much reminds me of PCI classes for devices, which kinda represents subsystems that will use the device in the end.
Regarding the DTS usage: I think that the is the right place, even though it seems to be software configuration I do not think it actually is; notice that with PCI you could ask device for a class it serves, so basically you would ask it what subsystem it will be attached to - that is the same thing - but here DTS is what we have and we want to know at compile time.
Yes, you could probably do that with _HAS_ Kconfigs, but these should be reserved for advertisement that device driver is available rather then the device, we already what devices we have from tree (if it is status "okay").
As far as I also understand: this is very automatic; once you derive your device binding from specific class it automatically advertises itself as a device of a given class. This is nice.
I think that this is nicely done and addresses the issue correctly; I would prefer "device-class" over "device-type", but I can live with the later.
Anyway, I like how this is done.

I think that this is nicely done and addresses the issue correctly; I would prefer "device-class" over "device-type", but I can live with the later.

I started out with zephyr,device-class actually, and I wouldn't be opposed to reverting back to that.


Blurry image

When you crop an image in editor  it becames blurry in preview

That's on purpose. To keep the cropping UI faster & snappierer


FileLoadException on IServiceCollection.AddReact()

Hi guys,
I've encountered an issue when adding React to a project. If I try to do services.AddReact() in the ConfigureServices method in the Startup class it throws a FileLoadExeption with the following details:
  Could not load file or assembly 'React, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=9aed67b161f7db78' or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044)

Does someone know why this happens and how I can resolve it?
I'm running CLR-x86-beta6 in Visual Studio 2015.
Thanks!

That's a good question. Do you have repro steps?

Just create an empty application with ASP.NET 5, add React following these steps.
Note: The services.UseRequestServices() doesn't work, I think it's depricated?
If you try to run the application it comes up with the error :(

Those instructions are based on very old versions of ASP.NET 5. Have you contacted them to ask if they have newer versions that are compatible with newer betas of ASP.NET 5.

There seems to be an update on NuGet but I can't download it in VS, it only states that version 1.5.3 (and lower) is available...

Bumping this because I just got another report of it (also see https://github.com/reactjs/React.NET/issues/153). The exception looks like the following:

System.IO.FileLoadException was unhandled by user code
FileName=React, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=9aed67b161f7db78
FusionLog=""
HResult=-2146234300
Message=Could not load file or assembly 'React, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=9aed67b161f7db78' or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044)
Source=React.AspNet
StackTrace:
at React.AspNet.ReactServiceCollectionExtensions.AddReact(IServiceCollection services)

The strange thing is that the "React" assembly is strong-named. React.AspNet has a dependency on React.Core which contains React.dll, and I've verified that the latest version does indeed have the correct strong name.
I haven't been able to replicate the issue myself, everything works as expected for me :worried:
Any ideas what's going on here?

Those instructions are based on very old versions of ASP.NET 5. Have you contacted them to ask if they have newer versions that are compatible with newer betas of ASP.NET 5.

The latest version of ReactJS.NET was built against beta6, I'll release an update for beta7 soon. The instructions were outdated but I updated them a while ago.

If you could provide a sample application that has the error that would be great. Can one of your users provide that info?

The two people that have reported it so far are @TomGroeneboer (who originally reported this issue) and @jongalloway (who reported it earlier today).
@jongalloway  are you able to provide a sample app that exhibits the issue?

Repro is here: https://github.com/jongalloway/react-js-net-repro
All I did was:

File / New / MVC 6 (beta7)
Follow the steps here http://reactjs.net/getting-started/aspnet5.html
Run

Ahh, I see. The issue is that your web project is called "React", but the core ReactJS.NET assembly is also called "React" :laughing:  I think the assembly loader gets confused and tries to load your site's assembly rather than the ReactJS.NET assembly. This fails because the assembly React.AspNet referenced at build time was strongly-named, and the strong name doesn't match. If I rename your project from "React" to "Reactizzle", I don't get the strong typing error any more (I do get a different unrelated error, which is because the latest release of ReactJS.NET was build against beta6 rather than beta7).
I tried the same thing with ASP.NET 4.5 + MVC 5, and the error is the one I would have expected: "Could not load file or assembly 'React, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=9aed67b161f7db78' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. " In this case the assembly bind log shows more details that help to debug the issue:
LOG: Attempting download of new URL file:///c:/users/danlo/documents/visual studio 2015/Projects/ReactBug/React/bin/React.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Minor Version

We had the same problems a long time ago in signalr, then we called it Microsoft.AspNet.SignalR

@davidfowl - It may be an edge case, but can the loader guard against this somehow (a referenced assembly having the same name as the site itself)?

We don't look at strong names when loading assemblies. We could probably fail if 2 things have the same name in the graph but it's not something we're going to do in the short term.

Hi Guys,
this is still not working on my end, freshly installed vs2015, running beta7, empty new solution, mvc6 project, followed the instructions here http://reactjs.net/getting-started/aspnet5.html, run the project and getting the same error.... the error does not occur when cloning the git repo to my local disk, building it and then opening and running the mvc6 demo inside vs2015.... what config thingy am i missing here?

@jjkopmels Can you please provide a full stack trace of the exception?

@Daniel15 sure:
System.IO.FileNotFoundException was unhandled by user code
FileName=Microsoft.Framework.Runtime.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
FusionLog==== Pre-bind state information ===
LOG: DisplayName = Microsoft.Framework.Runtime.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
(Fully-specified)
LOG: Appbase = file:///C:/Users/jan/.dnx/runtimes/dnx-clr-win-x<IP_ADDRESS>-beta7/bin
LOG: Initial PrivatePath = NULL
Calling assembly : (Unknown).
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\Users\jan\documents\visual studio 2015\Projects\testert\src\testert\wwwroot\Web.config
LOG: Using host configuration file: C:\Users\jan\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Users/jan/.dnx/runtimes/dnx-clr-win-x<IP_ADDRESS>-beta7/bin/Microsoft.Framework.Runtime.Abstractions.DLL.
LOG: Attempting download of new URL file:///C:/Users/jan/.dnx/runtimes/dnx-clr-win-x<IP_ADDRESS>-beta7/bin/Microsoft.Framework.Runtime.Abstractions/Microsoft.Framework.Runtime.Abstractions.DLL.
LOG: Attempting download of new URL file:///C:/Users/jan/.dnx/runtimes/dnx-clr-win-x<IP_ADDRESS>-beta7/bin/Microsoft.Framework.Runtime.Abstractions.EXE.
LOG: Attempting download of new URL file:///C:/Users/jan/.dnx/runtimes/dnx-clr-win-x<IP_ADDRESS>-beta7/bin/Microsoft.Framework.Runtime.Abstractions/Microsoft.Framework.Runtime.Abstractions.EXE.
HResult=-2147024894
Message=Could not load file or assembly 'Microsoft.Framework.Runtime.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
Source=React.AspNet
StackTrace:
at React.AspNet.ReactBuilderExtensions.UseReact(IApplicationBuilder app, Action`1 configure, JsxFileOptions fileOptions)
at testert.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) in C:\Users\jan\Documents\Visual Studio 2015\Projects\testert\src\testert\Startup.cs:line 112
InnerException:

@jjkopmels That's a different error, it's because the current release version of ReactJS.NET  only supports beta 6. The version in the repo supports beta 7 but you need to build it yourself at the moment. I'll post a beta 7 update soon.

I just uploaded ReactJS.NET 1.5.5 which supports beta 7 :)

Turned out I added reference (normal) while should be COMReference instead in project file. Very strange problem.
Find out the latest word revealed by God for humankind guidance ! Read Quran now http://quran.com/25


Fix VMS build [1.1.1 only]

The restructuring of inclusion directories meant the descrip.mms template needed an adjustment.
Furthermore, the VMS entropy gatherer had a couple of small issues.

My VMS builds with this patch applied went through smoothly, test 'n all


Custom Plugin Error: Uncaught TypeError: Cannot read property 'split' of null

Hi,
Want to start out by saying thanks for the library. It's really useful. I was recently attempting to upgrade to latest and ran into #120. Based on that I cloned the repo, ran the build command and used commit 12797a58567ae866c6e8bd0c8f44f0388569e131 in my project. When doing that getAnnotations works, and the initial interactions work as expected, but when I click on an existing annotation I get this error:
SVG.js:6 Uncaught TypeError: Cannot read property 'split' of null
    at u (SVG.js:6)
    at wu (Formatting.js:42)
    at new i (EditableRect.js:77)
    at i.createEditableShape (RubberbandRectTool.js:64)
    at n.selectShape (AnnotationLayer.js:332)
    at AnnotationLayer.js:306
    at i.emit (index.js:36)
    at ToolsRegistry.js:48
    at i.emit (index.js:36)
    at RubberbandRectTool.js:53

I thought maybe there was an error with my plugin, so I tested the HelloWorldPlugin at public/examples/editor-plugin:
npm run-script build
cd public/examples/editor-plugin
cp ../../640px-Hallstatt.jpg .
cp ../../../dist/annotorious.min.* .
npm i http-server
http-server

I then navigate to the page, add an annotation box with a color. Save, then click that annotation, the widget fails to load and the error above is shown in the console.
This appears related to selectShape in AnnotationLayer.js line 329 and how SVG.js expects the parent node to have a class, but the parent node is a bare <g> element.
<g>
    <rect class="a9s-outer" x="414" y="110" width="226" height="251">
    </rect>
    <rect class="a9s-inner" x="414" y="110" width="226" height="251">
    </rect>
</g>

Full svg element from the page:
<svg class="a9s-annotationlayer" viewBox="0 0 640 361">
    <g>
        <g style="pointer-events: none; display: none;">
            <path fill-rule="evenodd" d="M0 0 h640 v361 h-640 z M268.0933532714844<PHONE_NUMBER>6767578 h2 v2 h-2 z"
                  class="a9s-selection-mask"></path>
            <g class="a9s-selection">
                <rect class="a9s-outer" x="268.0933532714844" y="109.86066436767578" width="2" height="2"></rect>
                <rect class="a9s-inner" x="268.0933532714844" y="109.86066436767578" width="2" height="2"></rect>
            </g>
        </g>
        <g>
            <path fill-rule="evenodd"
                  d="M0 0 h640 v361 h-640 z M138.07476806640625 45.355316162109375 h223.75291442871094 v265.07665634155273 h-223.75291442871094 z"
                  class="a9s-selection-mask"></path>
            <g class="a9s-annotation editable selected">
                <g>
                    <rect class="a9s-outer" x="138.07476806640625" y="45.355316162109375" width="223.75291442871094"
                          height="265.07665634155273"></rect>
                    <rect class="a9s-inner" x="138.07476806640625" y="45.355316162109375" width="223.75291442871094"
                          height="265.07665634155273"></rect>
                </g>
                <g class="a9s-handle" transform-origin="138.07476806640625px 45.355316162109375px">
                    <g transform-origin="138.07476806640625px 45.355316162109375px">
                        <circle cx="138.07476806640625" cy="45.355316162109375" r="7" class="a9s-handle-outer"></circle>
                        <circle cx="138.07476806640625" cy="45.355316162109375" r="6" class="a9s-handle-inner"></circle>
                    </g>
                </g>
                <g class="a9s-handle" transform-origin="361.8276824951172px 45.355316162109375px">
                    <g transform-origin="361.8276824951172px 45.355316162109375px">
                        <circle cx="361.8276824951172" cy="45.355316162109375" r="7" class="a9s-handle-outer"></circle>
                        <circle cx="361.8276824951172" cy="45.355316162109375" r="6" class="a9s-handle-inner"></circle>
                    </g>
                </g>
                <g class="a9s-handle" transform-origin="361.8276824951172px<PHONE_NUMBER>036621px">
                    <g transform-origin="361.8276824951172px<PHONE_NUMBER>036621px">
                        <circle cx="361.8276824951172" cy="310.4319725036621" r="7" class="a9s-handle-outer"></circle>
                        <circle cx="361.8276824951172" cy="310.4319725036621" r="6" class="a9s-handle-inner"></circle>
                    </g>
                </g>
                <g class="a9s-handle" transform-origin="138.07476806640625px<PHONE_NUMBER>036621px">
                    <g transform-origin="138.07476806640625px<PHONE_NUMBER>036621px">
                        <circle cx="138.07476806640625" cy="310.4319725036621" r="7" class="a9s-handle-outer"></circle>
                        <circle cx="138.07476806640625" cy="310.4319725036621" r="6" class="a9s-handle-inner"></circle>
                    </g>
                </g>
            </g>
        </g>
    </g>
</svg>

Looking through some of the history I thought that this may be related to mentions of a previous version as mentioned in #112.
I wanted to first check if this is expected behavior, if so how can I help update the editor-plugin example to work with the current version? If this isn't the intended behavior (shape.parentNode.removeChild(shape); failing on lookup when the parent element is bare/missing the class attribute) is there anything I can help update to fix this?

Hi, sorry for this. It's, quite frankly, simply where I left off last weekend (before having to leave for my COVID vaccination ;-) The latest state in the main branch is currently broken. You analysed everything correctly. It happens when a CSS is supposed to get added to the SVG shape, and there's no class attribute present yet.
I need to rethink the last changes to the formatter framework a little bit. But in any case: no changes are needed to the plugins - this will be fixed once I figured out how to proceed exactly (next weekend...)
If you need the fix to #120 before the official release of the next version, this commit should be safe to use:
458f032f68985f9612a473c4af9f5835ca003950

@rsimon thanks! I'll test things out with that commit. Let me know if I can help out testing updates or anything once you figure out how you want to proceed.

@rsimon running into this on 458f032f68985f9612a473c4af9f5835ca003950
# rm annotorious.min.*
# cd ../../../
# git checkout 458f032f68985f9612a473c4af9f5835ca003950
# git status
HEAD detached at 458f032
# rm -r dist/
# rm -rf node_modules/
# npm install
# npm run-script build
# cd public/examples/editor-plugin
# cp ../../../dist/annotorious.min.* .
# http-server

Select the annotation:

Anything stand out that I'm doing wrong at that checkout?

I just added a fix which should solve the issue you are seeing. The formatter framework is still a bit of a work in progress (hopefully only until the end of this weekend.) But that should no longer interfere with existing plugins. At least not unless they inject additional DOM elements into the annotation like the Shape Labels Plugin does.

Thanks @rsimon! The hello-world plugin is looking great again 😃 . I'll test this with my custom plugin this evening (UTC -4). Thanks for the update. Really appreciate it.


UMAP reduces 10 PCs into 2 dimensional summary data?

Hi, guys:
Previously I have been using PCA software to derive 10 PCs from a genotype dataset (usually with tens of thousands of independent SNPs). Some other people derive more PCS. For example, the UK Biobank genotype data comes with 40 PCs.
I am now puzzled with a basic (and probably naive) question: does UMAP work like PCA software that begin with a genotype data with tens of thousands of indepdentent SNPs, or UMAP begin with a numeric dataset such as the 40 PCs coming with the UK Biobank data. The PENGUIN example dataset have 4 columns of numerical values. I don't see much value to reduce the dimension from 4 to 2.
Since the plots in the UMAP online documentation are all shown in 2-D scatter-plot, does this mean that UMAP only output 2-D data? For PCA, we can ask the software to output any number of dimensions, such as 10 PCs or 40 PCs.
Thank you very much & best regards,
Jie

Hi Jie:

Reducing the dimensionality before applying UMAP is unnecessary and not recommended. Avoid doing PCA to reduce the dimensionality if you can.
The value of reducing the penguin dataset to two dimensions is so you can visualize it simply (which is, I suspect, the use case for the vast majority of users of UMAP).
If you want to reduce the dimensionality to a different output dimensionality, set the n_components parameter to a value other than 2 (e.g. 10 or 40).

Thanks, James!

The above is an Figure 1 from this paper https://journals.plos.org/plosgenetics/article?id=10.1371/journal.pgen.1008432.  The plot D of this Figure has the best stratification capacity, and it is "on the first 15 principal components." The Figure 2 and Figure 3 of this paper are also based on the top N PCs, not based on raw genotype data. So, it seems a reasonble approach that people run PCA first and then run UMAP on top of top PCs.
I understand that PCA and UMAP have differences in terms of methods and computational requirements. But simply from the perspective of analysis output, they are basically the same, correct? That is, both can reduce a high dimensional data (such as tens of thousands of SNPs) into very low dimension (10 PCs or 2 UMAPs). For example, we could either run a second PCA or a new UMAP, after we first used PCA to generate 10-PCs, correct?
Finally, I am trying to follow the documentation at https://umap-learn.readthedocs.io/en/latest/basic_usage.html, I use Ubuntu Linux coming with Windows 10.  But I encoutered two errors:

"%matplotlib inline" gives an error message of "SyntaxError: invalid syntax".

"sns.pairplot(penguins, hue='species_short')" only gave an text output of "<seaborn.axisgrid.PairGrid object at 0x7f4bbfe30a00>", instead of displaying a Figure.

Can you please kindly let me know how to resolve this?
Thank you & best regadrs,
jie

So, it seems a reasonble approach that people run PCA first and then run UMAP on top of top PCs.

Sorry for causing confusion. Let's distinguish between two cases:

Do you have to use principal component data as input to UMAP? No.
Can you use principal component data as input to UMAP? Yes.

I'm not saying "don't run PCA on your RNA sequencing data": there are all sorts of reasons why you might want to and one of the results may be that if you choose to visualize that data, the resulting UMAP will look better.
I am saying "you are not obliged to run PCA on your RNA sequencing data before attempting to visualize it with UMAP".

For example, we could either run a second PCA or a new UMAP, after we first used PCA to generate 10-PCs, correct?

You could. I don't know if PCA followed by PCA is a great idea though.

Finally, I am trying to follow the documentation at https://umap-learn.readthedocs.io/en/latest/basic_usage.html, I use Ubuntu Linux coming with Windows 10. But I encoutered two errors:

"%matplotlib inline" gives an error message of "SyntaxError: invalid syntax".

"sns.pairplot(penguins, hue='species_short')" only gave an text output of "<seaborn.axisgrid.PairGrid object at 0x7f4bbfe30a00>", instead of displaying a Figure.

Can you please kindly let me know how to resolve this?

Probably, you aren't running that in a Python notebook. Visit https://jupyter.org/ to learn more.

Dear James:
Thank you very much!
For your last comment "P_robably, you aren't running that in a Python notebook. Visit https://jupyter.org/ to learn more", do you mean that I should install Jupyter notebook (https://jupyter.org/install.html)?
Can I install this to Windows 10 directly, or I have to install it into the Windows 10 Ubuntu Linux sub-system?
Sorry, if this is a naive question and is wasting your time. I tried to only ask intelligent and necessary questions, after I did my due diligence first but still could not find the answer.
Best regards,
Jie

do you mean that I should install Jupyter notebook (https://jupyter.org/install.html)?

yes.

Can I install this to Windows 10 directly, or I have to install it into the Windows 10 Ubuntu Linux sub-system?

if you installed UMAP and its dependencies on the Windows 10 Linux sub-system, then also install Jupyter lab/notebook there (e.g. using pip).

Dear James:
Thanks! Previously, I usually user Windows 10 only for Office type of software, while Linux for data processing type of computational tasks.
If I install Jupyter lab and UMAP and python dependencies on Linux sub-system, I am afraid that I still won't be able to generate a plot from the Linux system, even when I run Jupyter on top of Linux.  Take R for example, in Windows version R, I type "plot(cars$speed)" and I will get a plot. However, in Linux, after I type "R" to run R on top of Linux and then type "plot(cars$speed)", it will generate nothing. I have to use "png()" to save that to a plot and then open it in Windows.
So, LInux does not output a plot directly from a command line. That is my question. I shall do more research into this myself, since this is not really a UMAP question :- )
Best regards,
Jie

If I install Jupyter lab and UMAP and python dependencies on Linux sub-system, I am afraid that I still won't be able to generate a plot from the Linux system, even when I run Jupyter on top of Linux.

I wouldn't worry: Jupyter runs in a web browser window. When I run it from the Windows subsystem for Linux command line, it opens a new tab in my browser running on Windows itself.

Great. Try it out now :- )

Dear James:
Please see my screenshot below. After I typed the command for installing and running jupyter, somehow I got an powershell.exe window, where I could not type anything.

When I open up a new Linux shell and type the same python commands for UMAP, I got the same two errors as mentioned previously.
Best regards,
Jie

It works for me on the latest version of Windows 10/WSL. Maybe you don't have a default Windows browser defined? Anyway, I would experiment with getting things working with pip rather than conda (e.g. do pip install jupyterlab). Then when you run jupyter-lab, you should eventually get a message in your Linux terminal which tells you to paste a URL that looks like: http://localhost:8888/lab?token=<some-long-token-here>.
Anyway, at this point your problem is with getting your notebook environments running, and I don't know much about that.

Anyway, at this point your problem is with getting your notebook environments running, and I don't know much about that.

In that case, @jlmelville, maybe it was more helpful to show how a regular seaborn plot can be made in regular python environment, rather than telling the user to install something you're not comfortable helping with 😉
I'm not a Python user (I use Jupyter with R), so I cannot help with that specific plot issue, but making such plots should be easy without Jupyter notebooks...


Can't sign in again after performing sign out

To Reproduce

sign out from a device
try to sign in again, MFA is enabled, receive an MFA SMS message
type in the verification code and confirm sign in
get error "Make sure that a valid challenge response is passed for confirmSignIn"

Can you share your code that detects the MFA challenge and then sends the MFA? It would also be helpful to see your (appropriately redacted) amplifyconfiguration.json file to see how your User Pool is configured.

code on MFA

 func signIn(username: String) {
    Amplify.Auth.signIn(username: username, password: "123123123")
        .resultPublisher
        .receive(on: DispatchQueue.main)
        .sink { [self] in
            if case let .failure(authError) = $0 {
                assertionFailure()
                inFocusPrompt = ("xmark.octagon.fill", authError.errorDescription)
                DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
                    inFocusPrompt = nil
                }
            }
        }
        receiveValue: { [self] result in
            switch result.nextStep {
            case .done:
                Amplify.Auth.fetchAuthSession()
                    .resultPublisher
                    .receive(on: DispatchQueue.main)
                    .sink { _ in
                    } receiveValue: { [self] (session) in
                        let identityProvider = session as! AuthCognitoIdentityProvider
                        authIdentityId = try! identityProvider.getIdentityId().get()
                        whatHappensAfterSignIn()
                    }.store(in: &cancellables)
            default:
                break
            }
        }.store(in: &cancellables)
}

func confirmSignIn(smsCode: String) {
    Amplify.Auth.confirmSignIn(challengeResponse: smsCode)
        .resultPublisher
        .receive(on: DispatchQueue.main)
        .sink { [self] in
            if case let .failure(authError) = $0 {
                assertionFailure()
                inFocusPrompt = ("xmark.octagon.fill", authError.errorDescription)
                DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
                    inFocusPrompt = nil
                }
            }
        }
        receiveValue: { [self] signInResult in
            Amplify.Auth.fetchAuthSession()
                .resultPublisher
                .receive(on: DispatchQueue.main)
                .sink { _ in
                } receiveValue: { [self] (session) in
                    let identityProvider = session as! AuthCognitoIdentityProvider
                    authIdentityId = try! identityProvider.getIdentityId().get()
                    whatHappensAfterSignIn()
                }.store(in: &cancellables)
        }.store(in: &cancellables)
}

amplifyconfiguration.json

{
"UserAgent": "aws-amplify-cli/2.0",
"Version": "1.0",
"api": {
"plugins": {
"awsAPIPlugin": {
"FRIENDSCAFE": {
"endpointType": "GraphQL",
"endpoint": "https://mksrmmcyuvcsnfc7f57cow545i.appsync-api.ap-northeast-1.amazonaws.com/graphql",
"region": "ap-northeast-1",
"authorizationType": "AMAZON_COGNITO_USER_POOLS"
}
}
}
},
"auth": {
"plugins": {
"awsCognitoAuthPlugin": {
"UserAgent": "aws-amplify/cli",
"Version": "0.1.0",
"IdentityManager": {
"Default": {}
},
"AppSync": {
"Default": {
"ApiUrl": "https://mksrmmcyuvcsnfc7f57cow545i.appsync-api.ap-northeast-1.amazonaws.com/graphql",
"Region": "ap-northeast-1",
"AuthMode": "AMAZON_COGNITO_USER_POOLS",
"ClientDatabasePrefix": "FRIENDSCAFE_AMAZON_COGNITO_USER_POOLS"
},
"FRIENDSCAFE_AWS_IAM": {
"ApiUrl": "https://mksrmmcyuvcsnfc7f57cow545i.appsync-api.ap-northeast-1.amazonaws.com/graphql",
"Region": "ap-northeast-1",
"AuthMode": "AWS_IAM",
"ClientDatabasePrefix": "FRIENDSCAFE_AWS_IAM"
}
},
"CredentialsProvider": {
"CognitoIdentity": {
"Default": {
"PoolId": "ap-northeast-1:f4658ead-3eb6-487d-8d63-534490cc0e58",
"Region": "ap-northeast-1"
}
}
},
"CognitoUserPool": {
"Default": {
"PoolId": "ap-northeast-1_AXmyeE3n0",
"AppClientId": "11ep0thbqptl3gk5v221da831k",
"Region": "ap-northeast-1"
}
},
"Auth": {
"Default": {
"authenticationFlowType": "USER_SRP_AUTH"
}
},
"S3TransferUtility": {
"Default": {
"Bucket": "friends-cafe231147-prod",
"Region": "ap-northeast-1"
}
}
}
}
},
"storage": {
"plugins": {
"awsS3StoragePlugin": {
"bucket": "friends-cafe231147-prod",
"region": "ap-northeast-1",
"defaultAccessLevel": "guest"
}
}
}
}

@palpatim let me know if you need more information

i also discovered the users that i deleted from Admin UI still exists on Cognito user pools

i found the problem
it's a bug in my programm 😂
Auth is fine
it was very subtle so i never noticed it
thanks for the attention @palpatim


excon adapter: new defaults to empty hash

Excon Adapter should default to an empty hash to allow Excon::Connection.new.
See:
https://github.com/excon/excon/blob/c92f240e0e90fc01beac4c52bbdbe2ed06b55263/lib/excon/connection.rb#L52

Yes, that makes sense. Thank you!


Export all data at once, instead of iterating through each page

I have a big table with 10K rows and 10 cols. The page size is 10 rows.
When using the exporter, it iterates page by page and takes forever to generate the excel file. Is there a way to just call the exporter with this.datasource.filteredData to avoid looping and getting the export fast? Thanks

For huge datasets, you can also consider doing the export server side or else you can inject the appropriate exporter service and call the export method yourself. That way however you won't be able to benefit what cdkExporterDirective provides, like column hiding, being able to export the data as it's shown in html table.
constructor (public exporterService: XlsxExporterService)
...
this.exporterService.export(filteredData);

The exporterService works. Thank you for your quick response Halit!
El dom., 26 jul. 2020 a las 12:54, Halit Talha TÜRE (<
<EMAIL_ADDRESS>escribió:

Closed #76
https://github.com/HalitTalha/ng-material-extensions/issues/76.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/HalitTalha/ng-material-extensions/issues/76#event-3587233381,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACW63OB2DSPYO7PVLYQ6KF3R5RNS7ANCNFSM4PIB2L2A
.

As recommended I am using the this.exporterService.export approach instead of iterating through the pages.
The export is working fine but somehow the export() cannot extract the table headers. So the resulting csv does not have a header row.
Is there a way to provide the headers for the export?

As recommended I am using the this.exporterService.export approach instead of iterating through the pages.
The export is working fine but somehow the export() cannot extract the table headers. So the resulting csv does not have a header row.
Is there a way to provide the headers for the export?

ExporterService.export simply exports whatever you provide as your data. You can add your header row as the first object in your array.

As recommended I am using the this.exporterService.export approach instead of iterating through the pages.
The export is working fine but somehow the export() cannot extract the table headers. So the resulting csv does not have a header row.
Is there a way to provide the headers for the export?

ExporterService.export simply exports whatever you provide as your data. You can add your header row as the first object in your array.

Thank you a lot for your reply! Working like charm! Thanks a lot!!


protect when context.stack.tail.head is undefined

PayPal hit a problem with just @eq in a template blowing up because context.stack.tail.head.select was failing with trying to read select from undefined. Adding an extra check to protect that makes the PayPal app run OK now.
An abstracted version of the template with the problem is:
{>"layouts/master" /}

elided material

{<body}
    {@eq key=access_type value="MODIFY"}

  elided material

elided material

    {:else}

 elided material

    {/eq}
{/body}

So Seshu emailed me about this last week, but he didn't follow up on finding out the root cause... ;)
I don't want to merge this until I figure out why there's a null head, because as far as I can see that shouldn't happen, and I don't want to patch over a larger bug.
Do you know why your template is creating a context with a null on the stack? I tried to repro it with the template Seshu sent me, but could not.

(Also, nit: it looks like your spacing is off on the line-- if that's just the GitHub diff being weird never mind)

Let me dig a bit. It's all wrapped up in kraken's manipulation of dust templates so that may be a factor

I fixed the spacing. Some investigation shows the template works fine with plain old dust helpers 1..6.2 but fails when run in the Kraken-wrapped dust environment. I don't know why yet but it is not a widespread issue except for Kraken users I guess.

I'm not 100% against pulling this in, but this is really a canary of a problem somewhere upstream of Dust.
It should not be possible for that null to exist, and I'm always a fan of keeping code as small as possible.
I'll spin up a Kraken instance and see if I can track down the root cause, to be 100% satisfied that we aren't wallpapering a problem.

+1 - Ran into the same error. Fixed it manually by adding a seperate check agains 'context.stack.tail.head' as well:
function isSelect(context) {
  return context.stack.tail && context.stack.tail.head &&
         typeof context.stack.tail.head.__select__ !== "undefined";
}

Otherwise I get an
Internal server error

The URL /... had the following error TypeError: Cannot read property '__select__' of undefined.

My setup is rather simple - newest KrakenJS, DustJS & Helpers. Nothing fancy. This is the point where it fails.
{@eq key=nav value="testing"}
  ...
{:else}
  ...
{/eq}

This is looking to be a problem with Kraken. I'll definitely try to make
time to install it this week.
On Sun, Apr 12, 2015, 3:05 PM j-lenoch<EMAIL_ADDRESS>wrote:

+1 - Ran into the same error. Fixed it manually by adding a seperate check
agains 'context.stack.tail.head' as well:
function isSelect(context) {
return context.stack.tail && context.stack.tail.head &&
typeof context.stack.tail.head.select !== "undefined";
}
Otherwise I get an
Internal server error
The URL /... had the following error TypeError: Cannot read property 'select' of undefined.
My setup is rather simple - newest KrakenJS, DustJS & Helpers. Nothing
fancy. This is the point where it fails.
{@eq key=nav value="testing"}
...
{:else}
...
{/eq}
—
Reply to this email directly or view it on GitHub
https://github.com/linkedin/dustjs-helpers/pull/128#issuecomment-92141489
.

OK, I'm glad we didn't merge this immediately, as it would have hidden a deeper issue with dust.makeBase. Let's get this in and cut a 1.6.3 just for it. I'll fix the commit so it doesn't bust the build.

Squashed your commit into #131.

Just to postmortem, the issue is that dust.makeBase creates a Stack full of undefined, and Adaro is one of the smallish number of Dust consumers that uses this API, so we were seeing it there first.
https://github.com/linkedin/dustjs/pull/631
Thanks for the patience while we unravelled the root cause instead of papering over it.


Option to specify a commit author

With git commit, there is an argument to specify an author just for the next commit using --author=J. Doe<EMAIL_ADDRESS>This could be useful for determining if a commit was made manually or with the Obsidian Git plugin.

I will probably add a text field to pass custom args to the commit command. This should solve #237 better as well.


⚠ Bofrost.es has degraded performance

In 2d79f1d, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1630 ms

Resolved: Bofrost.es performance has improved in e898d4c after 6 minutes.


How get the update time of redis value

🍉

You should use Redis docs / stackoverflow for questions like this. Perhaps https://redis.io/commands/ttl will help


Investigate new WDL 1.0 Java Parser

Currently we use WDL4S, though it is deprecated.
Should investigate if the new parser works. Pros - in java and a single file
https://github.com/openwdl/wdl/tree/master/versions/1.0/parsers/java/java8
┆Issue is synchronized with this Jira Story
┆Issue Type: Story
┆Fix Versions: Dockstore 1.7
┆Issue Number: DOCK-555

@garyluu In the meantime, does this mean that every script written with WDL 1.0 will not work in dockstore, or will some WDL 1.0 features parse correctly?  In particular, I'm eager to be able to use the parameter_meta blocks for optional localization.

In the meantime, we've relaxed on the WDL 1.0 validation.  How well parsing works will depend on a case to case basis depending on the specific WDL descriptor.  You can let us know which specific workflow it is and we'll see if there's something that can be done before we get a real WDL 1.0 parsing implemented.

Thanks!  I will see how it goes and report back.

womtool investigation/impressions

simply download JAR and use
doesn't seem to work with pre WDL 1.0 (at least the most recent release) -> looks like support for draft-3 was dropped in v35

Features include:

validate
generate inputs
parse (create AST)
graph (create a DOT graph, another visualisation option)

@garyluu I was able to import a simple WDL 1.0 script with a few structs into Dockstore.  It complained about unrecognized syntax but let me do it.  My goal here was to get around Firecloud's WDL validation (Firecloud uses a Cromwell version that supports WDL 1.0 and theoretically the only obstacle is its version of womtool.  It was speculated that Firecloud might not validate a WDL from Dockstore).  This workaround did not succeed, so I won't have any requests from Dockstore for now.

Based on discussion with Jeff Gentry and others, WOMtool seems like the best bet.
There are individual parsers that WOMtool calls out to that we could use ourselves, however we would need to write code to determine the version of the WDL file and call out to the proper parser. Adam Nichols recommends that we use WOMtool because it automatically chooses the correct parser to user.
WOMtool is available at https://broadinstitute.jfrog.io/broadinstitute/libs-release/org/broadinstitute/womtool_2.12/


navbar_alerts: Use handlebars instead of HTML template.

This PR follows the simple approach of replacing the navbar alerts HTML template(navbar_alerts.html)  with the Handlebars architecture as suggested by Tim here.
Testing plan:
Tested locally by enabling each alert.
GIFs or screenshots:

@Riken-Shah this feels a lot cleaner.  Comparing with #18717, I think that one has the better approach, in that some of my comments here are basically to do that -- I think the thing that really threw me off with the original PR is having these 7 components all living in the same file.
I think a good filename naming scheme might be:
 static/templates/navbar_bankruptcy_alert.hbs           | 20 ++++++++++
 static/templates/navbar_configure_email_alert.hbs      |  9 +++++
 static/templates/navbar_insecure_desktop_app_alert.hbs |  9 +++++
 static/templates/navbar_notification_alert.hbs         | 18 +++++++++
 static/templates/navbar_profile_incomplete_alert.hbs   | 11 ++++++
 static/templates/navbar_server_needs_upgrade_alert.hbs | 13 +++++++

=>
# No change in name, just moving to a subdirectory for readability.
static/templates/navbar_alerts/bankruptcy.hbs
static/templates/navbar_alerts/navbar_alert_wrapper.hbs
static/templates/navbar_alerts/profile_incomplete.hbs
static/templates/navbar_alerts/insecure_desktop_app.hbs
static/templates/navbar_alerts/server_needs_upgrade.hbs
# The following have a small rename for the alert that could reasonably be done as follow-up commits,
# since we probably want to rename the panel in the process.
static/templates/navbar_alerts/configure_outgoing_email.hbs
static/templates/navbar_alerts/desktop_notifications.hbs

Closing this since we decided to go with #18717.


Chess: Move C8 to C6

Please do not change the title. Just click "Submit new issue".

@MGBoulware88 done! Successfully played move c8c6 for current game.
Thanks for playing!


How to use Habitat simulator to get the stage SDF voxel?

First thanks for your great job! I notice that you use Habitat to get the stage SDF, i am curious how to use Habitat to calculate the SDF? Is there maybe a reference?

First thanks for your great job! I'm a rookie of habitat-sim. Is there any code that explain how to "added a key event to the habitat-sim viewer that runs the above fn" you referred above? or is there a tutorial somewhere demonstraing this operation?


Question: SelectedItemChanged in TreeView

There is no SelectedItemChanged event in the TreeView, the WinForm one has this event. What is the alternative for it in UWP.
I need this event to give a summary of all the items selected by the user, plz suggest someway to achieve this.

I've never used TreeView as I'm waiting for it to stabilize some more. However, TreeViewItem derives from SelectorItem and even ListViewItem. This means it has an IsSelected dependency property. You could hookup a callback to this property and handle it manually. This is easiest if you are also manually adding items to the TreeView already.
This should be feature request too. There are a lot of events standard in other repeater/selection controls that seem to be missing.

No, I am not adding the items manually. I am using data binding. Given the TreeView does not even give the list of items, how can I hook a callback?

You might want to take a look at the second reply from Nico Zhu here:
https://stackoverflow.com/questions/56766785/uwp-get-selected-nodes-from-treeview-control
If you create your own view model class with an IsSelected property you can bind it in the data template of the TreeViewItem. Then your model itself will be reporting this information and you could hook up an to it.

We recently noticed this oversight as well. @kaiguo did you have another bug tracking this or should we turn this into it?

@jevansaks Yeah we have #322. Should we just close this one and use the other one to track?

Yes, I'll mark this as dupe.

how would I do this with SelectedItemsChanged? i'm trying to keep track of selected items. right now I'm doing it from a Tapped event on the treeview and have to loop through the entire treeview and figure out what is checked in my treeview and what is checked in my model that the nodes are bound to. if I bind to IsSelected it only works for single selection not multiple selection


Generated source code from ABI should not add extension on List if not needed

Describe the bug
Generator always add extension on List<Felt> in generated source code which triggers analyze unused_element info.
To Reproduce
Steps to reproduce the behavior:

Generate source code for  test/integration/execute.abi.json ABI
Run dart analyze
In dart analyze output, unused_element warning occurs.

   info • test/integration/execute.g.dart:46:14 • The declaration 'toCallData' isn't referenced. Try removing the
          declaration of 'toCallData'. • unused_element
   info • test/integration/execute.g.dart:53:14 • The declaration 'fromCallData' isn't referenced. Try removing the
          declaration of 'fromCallData'. • unused_element

Expected behavior
Generated source code should not have extension on List<Felt> if not needed.

Fixed with PR #102


Additional snippets for variables

Changes
Just some additional snippets for variables.
Checklist

[x] have tested my change
[ ] updated relevant documentation
[ ] Remove any/all console.logs I added
[ ] eslint is not complaining
[ ] have added myself to the contributors' list in the README
[ ] for feature PRs: PR only includes one feature enhancement.

@Wright400 or @chrjorgensen - I am looking for feedback on this one mostly. Do we want to invest more time into add useful snippets into this extension, or shall we leave this to the user?

@worksofliam The snippets in this PR make sense & should be merged. Maybe a good compromise for now is to open a discussion thread on the vscode-ibmi repo to see if anyone in the community has added their own snippets and would want to share? That would give us a feel for how much everyone uses them or relies on the ones provided.


uninstall issue

i'm running osx 10.11.4.
Bug reports:
I tried updating brew but got this error
zeus:~ Nix$ brew update
warning: unable to unlink CONTRIBUTING.md: Permission denied
warning: unable to unlink SUPPORTERS.md: Permission denied
fatal: cannot create directory at '.github': Permission denied
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master

then i tried uninstalling
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
but got
-e:114: undefined method `start_with?' for "/*":String (NoMethodError)
	from -e:114

now launching "brew" throws a big error.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError)
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Library/brew.rb:15:in `<main>'

You don't seem to have followed these steps from the issue template, that was there when you first posted but you removed since (you're seeing permission issues, right?):

[ ] Ran brew doctor, fixed as many issues as possible and retried your prior step?
[ ] If you're seeing permission errors tried running sudo chown -R $(whoami) $(brew --prefix)?

The error from the uninstall script is somewhat surprising. I don't think it came to the point where it was actually able to remove anything. What is the output of which ruby and ruby --version?
I think because of the permission errors, you now have a Homebrew installation in a somewhat mixed up state, where some files were updated and some were not. Please try the following:
sudo chown -R $(whoami) /usr/local
cd /usr/local && git reset --hard origin/master
brew update

Please post the output of those commands, particularly if you're still seeing error messages.

Closing for a lack of response/information; happy to reopen once there's some activity here.

hello,
Thanks very much for your answer. I followed your instructions and it seems to be ok again.
zeus:~ Nix$ brew /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require': cannot load such file -- mach (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require' 	from /usr/local/Library/Homebrew/extend/pathname.rb:2:in <top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require' 	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require'
from /usr/local/Library/Homebrew/global.rb:3:in <top (required)>' 	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require' 	from /usr/local/Library/brew.rb:15:in '
`
zeus:~ Nix$ brew doctor /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require': cannot load such file -- mach (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require' 	from /usr/local/Library/Homebrew/extend/pathname.rb:2:in <top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require' 	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require'
from /usr/local/Library/Homebrew/global.rb:3:in <top (required)>' 	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require' 	from /usr/local/Library/brew.rb:15:in '
`
zeus:~ Nix$ which ruby /usr/local/bin/ruby zeus:~ Nix$ ruby --version ruby 1.8.4 (2005-12-24) [i686-darwin8.9.1]
no permission errors seen running this.
zeus:~ Nix$ sudo chown -R $(whoami) /usr/local zeus:~ Nix$
finally
`eus:~ Nix$ cd /usr/local && git reset --hard origin/master
HEAD is now at 53c5089 CoreTap#install: fix clone target setting
zeus:local Nix$
zeus:local Nix$ brew update
warning: no common commits
remote: Counting objects: 469, done.
remote: Compressing objects: 100% (426/426), done.
remote: Total 469 (delta 27), reused 276 (delta 17), pack-reused 0
Receiving objects: 100% (469/469), 766.45 KiB | 381 KiB/s, done.
Resolving deltas: 100% (27/27), done.
From https://github.com/Homebrew/brew

53c5089...12686ad master     -> origin/master  (forced update)
HEAD is now at 12686ad cmd/fetch: fix typo in doco
==> Homebrew has enabled anonymous aggregate user behaviour analytics
Read the analytics documentation (and how to opt-out) here:
https://git.io/brew-analytics
==> Tapping homebrew/core
Cloning into '/usr/local/Library/Taps/homebrew/homebrew-core'...
remote: Counting objects: 3696, done.
remote: Compressing objects: 100% (3584/3584), done.
remote: Total 3696 (delta 14), reused 627 (delta 1), pack-reused 0
Receiving objects: 100% (3696/3696), 2.84 MiB | 1.66 MiB/s, done.
Resolving deltas: 100% (14/14), done.
Checking connectivity... done.
Tapped 3572 formulae (3,722 files, 8.8M)
Already up-to-date.
`

now brew doctor works again.
`zeus:local Nix$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!
Warning: "config" scripts exist outside your system or Homebrew directories.
./configure scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
/Applications/MAMP/bin/php/php5.6.10/bin/php-config
Warning: Unbrewed dylibs were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.
Unexpected dylibs:
/usr/local/lib/libbeid.2.7.4.dylib
/usr/local/lib/libbeidcardlayer.4.0.7.dylib
/usr/local/lib/libbeidcommon.1.0.0.dylib
/usr/local/lib/libbeidcommon.4.0.7.dylib
/usr/local/lib/libbeiddialogsQT.4.0.7.dylib
/usr/local/lib/libbeidgui.1.5.0.dylib
/usr/local/lib/libbeidlibjni.2.7.2.dylib
/usr/local/lib/libbeidlibopensc.2.2.0.dylib
/usr/local/lib/libbeidlibopenscinternal.2.2.0.dylib
/usr/local/lib/libbeidpkcs<IP_ADDRESS>.dylib
/usr/local/lib/libbeidpkcs<IP_ADDRESS>.dylib
/usr/local/lib/libbeidpkcs<IP_ADDRESS>.dylib
/usr/local/lib/libicudata.48.1.1.dylib
/usr/local/lib/libMagick++-6.Q16.3.dylib
/usr/local/lib/libMagickCore-6.Q16.2.dylib
/usr/local/lib/libMagickWand-6.Q16.2.dylib
/usr/local/lib/libqt-mt.3.3.8.dylib
/usr/local/lib/libxerces-c-3.1.dylib
Warning: Unbrewed header files were found in /usr/local/include.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.
Unexpected .la files:
/usr/local/lib/libMagick++-6.Q16.la
/usr/local/lib/libMagickCore-6.Q16.la
/usr/local/lib/libMagickWand-6.Q16.la
Warning: Unbrewed .pc files were found in /usr/local/lib/pkgconfig.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.
Unexpected .pc files:
/usr/local/lib/pkgconfig/ImageMagick++-6.Q16.pc
/usr/local/lib/pkgconfig/ImageMagick++.pc
/usr/local/lib/pkgconfig/ImageMagick-6.Q16.pc
/usr/local/lib/pkgconfig/ImageMagick.pc
/usr/local/lib/pkgconfig/Magick++-6.Q16.pc
/usr/local/lib/pkgconfig/Magick++.pc
/usr/local/lib/pkgconfig/MagickCore-6.Q16.pc
/usr/local/lib/pkgconfig/MagickCore.pc
/usr/local/lib/pkgconfig/MagickWand-6.Q16.pc
/usr/local/lib/pkgconfig/MagickWand.pc
/usr/local/lib/pkgconfig/Wand-6.Q16.pc
/usr/local/lib/pkgconfig/Wand.pc
Warning: Unbrewed static libraries were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.
Unexpected static libraries:
/usr/local/lib/liblua.a
/usr/local/lib/libMagick++-6.Q16.a
/usr/local/lib/libMagickCore-6.Q16.a
/usr/local/lib/libMagickWand-6.Q16.a
Warning: Your Xcode (7.3) is outdated
Please update to Xcode 7.3.1.
Xcode can be updated from the App Store.
Warning: Broken symlinks were found. Remove them with brew prune:
/usr/local/lib/libbeidapplayer.4.0.dylib
/usr/local/lib/libbeidapplayer.4.dylib
/usr/local/lib/libbeidapplayer.dylib
/usr/local/lib/libbeidlib.4.0.dylib
/usr/local/lib/libbeidlib.4.dylib
/usr/local/lib/libbeidlib.dylib
/usr/local/lib/libbeidlibJava_Wrapper.4.0.dylib
/usr/local/lib/libbeidlibJava_Wrapper.4.dylib
/usr/local/lib/libbeidlibJava_Wrapper.dylib`

@Sajaki Good to hear back from you and that things worked out. 😺


GDScript auto-completion crashes editor when trying to complete after invalid code (ClassName.find_node("test").)

Godot version
v3.6.beta2.official [68c507f59]
System information
w10 64
Issue description
Godot crashes when I use find_node in the wrong way.
SCRIPT ERROR: Parse error: Non-static function "find_node" can only be called from an instance.
https://github.com/godotengine/godot/assets/19652075/d6d1fa53-e813-4e8f-a4b8-b4606452b663
Steps to reproduce
In the video
Minimal reproduction project
I'm not sure I can reproduce this or that it is necessary to do so.

Please add the errors as text, not everyone can watch the video and it's only very briefly visible

Ok!.

The error is correct and expected, what's a bug is the crash which happens when typing the dot after Batonnes.find_node( "Controles" ). - as seen in the video the editor crashes, it shouldn't.

Oh my bad missed that from the video

I can reproduce the crash in 3.6-beta2, but not in 4.0+, which also doesn't raise an error for this syntax in the editor (but raises one at runtime).
MRP: Test3x_GDScriptAutocompleteCrash.zip
Backtrace from cebaa3f763ef05a4ee189f5ac13fb023d365eeaf:
SCRIPT ERROR: Parse Error: Non-static function "find_node" can only be called from an instance.
          at: GDScript::reload (res://Node2D.gd:12)

Thread 1 "godot-3.x" received signal SIGSEGV, Segmentation fault.
0x00000000035f696a in Node::find_node (this=0x8d2d580, p_mask=..., p_recursive=true, p_owned=true) at scene/main/node.cpp:1500
1500                    if (p_owned && !cptr[i]->data.owner) {

(gdb) bt
#0  0x00000000035f696a in Node::find_node (this=0x8d2d580, p_mask=..., p_recursive=true, p_owned=true) at scene/main/node.cpp:1500
#1  0x000000000361d18d in MethodBind3RC<Node*, String const&, bool, bool>::call (this=0x7d7d280, p_object=0x8d2d580, p_args=0x1230a0d0, p_arg_count=1, r_error=...) at ./core/method_bind.gen.inc:2849
#2  0x0000000001984b04 in _guess_expression_type (p_context=..., p_expression=0x127b1180, r_type=...) at modules/gdscript/gdscript_editor.cpp:886
#3  0x0000000001991a51 in GDScriptLanguage::complete_code (this=0x7d81f30, p_code=..., p_path=..., p_owner=0x1046e450, r_options=0x7fffffffb718, r_forced=@0x7fffffffb70f: false, r_call_hint=...)
    at modules/gdscript/gdscript_editor.cpp:2669
#4  0x0000000003061706 in ScriptTextEditor::_code_complete_script (this=0x1226bb90, p_code=..., r_options=0x7fffffffb718, r_force=@0x7fffffffb70f: false) at editor/plugins/script_text_editor.cpp:820
#5  0x00000000030615fa in ScriptTextEditor::_code_complete_scripts (p_ud=0x1226bb90, p_code=..., r_options=0x7fffffffb718, r_force=@0x7fffffffb70f: false) at editor/plugins/script_text_editor.cpp:808
#6  0x00000000033e35f8 in CodeTextEditor::_complete_request (this=0x11fff5b0) at editor/code_editor.cpp:834
#7  0x000000000192867c in MethodBind0::call (this=0xea19bf0, p_object=0x11fff5b0, p_args=0x7fffffffba60, p_arg_count=0, r_error=...) at ./core/method_bind.gen.inc:59
#8  0x000000000460bd64 in Object::call (this=0x11fff5b0, p_method=..., p_args=0x7fffffffba60, p_argcount=0, r_error=...) at core/object.cpp:918
#9  0x000000000460dc1d in Object::emit_signal (this=0x12277cd0, p_name=..., p_args=0x7fffffffba60, p_argcount=0) at core/object.cpp:1230
#10 0x000000000460e2df in Object::emit_signal (this=0x12277cd0, p_name=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=..., p_arg6=..., p_arg7=..., p_arg8=...) at core/object.cpp:1285
#11 0x000000000385ef71 in TextEdit::query_code_comple (this=0x12277cd0) at scene/gui/text_edit.cpp:7033
#12 0x00000000033e355e in CodeTextEditor::_code_complete_timer_timeout (this=0x11fff5b0) at editor/code_editor.cpp:825
#13 0x000000000192867c in MethodBind0::call (this=0xea19af0, p_object=0x11fff5b0, p_args=0x7fffffffc100, p_arg_count=0, r_error=...) at ./core/method_bind.gen.inc:59
#14 0x000000000460bd64 in Object::call (this=0x11fff5b0, p_method=..., p_args=0x7fffffffc100, p_argcount=0, r_error=...) at core/object.cpp:918
#15 0x000000000460dc1d in Object::emit_signal (this=0x11d725e0, p_name=..., p_args=0x7fffffffc100, p_argcount=0) at core/object.cpp:1230
#16 0x000000000460e2df in Object::emit_signal (this=0x11d725e0, p_name=..., p_arg1=..., p_arg2=..., p_arg3=..., p_arg4=..., p_arg5=..., p_arg6=..., p_arg7=..., p_arg8=...) at core/object.cpp:1285
#17 0x000000000364ad74 in Timer::_notification (this=0x11d725e0, p_what=25) at scene/main/timer.cpp:61
#18 0x000000000364d5c8 in Timer::_notificationv (this=0x11d725e0, p_notification=25, p_reversed=false) at scene/main/timer.h:37
#19 0x000000000460be81 in Object::notification (this=0x11d725e0, p_notification=25, p_reversed=false) at core/object.cpp:927
#20 0x000000000362a79e in SceneTree::_notify_group_pause (this=0x701c9b0, p_group=..., p_notification=25) at scene/main/scene_tree.cpp:1139
#21 0x0000000003627fff in SceneTree::idle (this=0x701c9b0, p_time=0.0069444445) at scene/main/scene_tree.cpp:635
#22 0x00000000018a6fa7 in Main::iteration () at main/main.cpp:2361
#23 0x00000000018692a8 in OS_X11::run (this=0x7fffffffcc50) at platform/x11/os_x11.cpp:4047
#24 0x0000000001854cc2 in main (argc=2, argv=0x7fffffffd608) at platform/x11/godot_x11.cpp:59

So despite the correct error that find_node can't be called on a non-instance, the auto-completion code still triggers that call anyway to guess the return type, so it crashes.

find_node is being called on Script which is a resource, not a node, hence the crash I think.
This traces back to baseptr pointing to this Script and not a node in _guess_expression_type.


Update project settings

I have updated the project formate to iOS 10
and the problem solved

Fixing #3 bug


Migrate gen_objcdoc.sh to python

It is easier to maintain python scripts compared to bash scripts. This migration will require a few iterations in recipes to deprecate the bash script.
Script location:
https://source.corp.google.com/github/flutter/engine/tools/gen_objcdoc.sh?q=tools%2Fgen_objcdoc.sh&ct=os

Dart scripts would be even better. :-)


[future] decouple from K8s API maybe :)

There are two ways to do this proxy:

all in memory
using KPNGs GRPC data model, where the backends dont have k2s as functionality but rather, only run a standalone backend that recieves KPNG objects as inputs.

the latter has the advantage of totally deocupling us from k8s API , making it much more lightweight.
Theres (obvious) pros and cons to these approaches.
This issue tracks them, and allows us a place to debate them.

Do we have a plan for how to tell the backend where to connect to in order to get updates?
For a production clusters I image we'd want to run the KPNG component that watches the api-server as a K8s service for HA and if we do that we'd also need to potentially figure out how to program routes on the node the KPNG backends can connect to the watcher.
I'm certainly not opposed to decoupling the watcher and backend for Windows but we'd need to robust way to bootstrap everything first.

Folks are building dev tooling to make this repo easy to contribute to .... still relevant

Keep this going


Internal Server Error

Hello, I am trying to handle POST requests. I have probably done something wrong but I can not debug the Error. I receive "Internal Server Error" but there is no other info. I can not detect any log file. Any help, suggestion?

hi! can you post details of the config you are using and the request that is failing, please.


Include wheel in requirements.txt

I noticed while building the package in a virtual environment that this package was needed by the following step in the install script:
bash ./bazel-bin/tensorboard/tools/build_pip_package.sh ../python/dist/
Otherwise, the following error occurred:
error: invalid command 'bdist_wheel'

@lou-k Great! Thanks for your contribution.


Mnt reorg

Mostly house-keeping.

pushed a spelling fix and a path fix I had failed to commit.

self-merging on @cryos 's review so I can start other work off of the main branch.


fix(relayer): func WaitConfirmations should not wait forever for ethereum.NotFound

WaitConfirmations used in processor should not wait forever for ethereum.NotFound. It will cause the processor stuck.

@xiaodino we don't need this, we have a context cancel via timeout when this function is called. This should be unmerged


removed duplicated examples

Removed the duplicated service/pod-with-graceful-termination.yaml example from page https://kubernetes.io/docs/tutorials/services/pods-and-endpoint-termination-flow/.
Added service/explore-graceful-termination-nginx.yaml codenew shortcode to cover the Service example.
Demonstrated kubectl apply command to deploy Pod and service.

closes #40224

/remove-lifecycle stale

Taking LGTM from https://github.com/kubernetes/website/pull/40230#pullrequestreview-1567848211
/lgtm
/approve


Master

find-my-iphone version incremented

Let's wait till user agree that 0.2.9 is fixing the one issue.
Idea for stable repo is: after users that use "Latest" (so npm version) tell that new version works and do not introduce new problems then update stable repo for all users

Do you have confirmation from users?


Merge in commits from master

List of commits:

82f319d

Adding Code of Conduct
Slightly modified version of Contributors Covenant.

65c7706

Fixed RVM segment for usernames with dashes
Having a username with a dash, such as mine, d-side, currently results in
RVM segment displaying the wrong thing, e. g. side/.rvm/rubies/ruby. This
fixes the issue.

f81ecc1

set GO_ICON manually in test

a6887eb

update test

99c9ba9

add Gopher icon to go_version segment

You beat me to it ;)


Start

Hi, I test v1.7.0.
I download .m4a stream with yt-dlp and start button and stop, retry and queued start button again and message is "already downloaded". And not continue.
With youtube-dl-gui v0.4 with youtube-dl does not happen.
Thanks!

@gitdarktable Can share the logs or the steps for reproduction the behaviour?

Hi,
stop and resume ok with youtube-dl, and error with yt-dlp. Not resume partial file downloaded previously
Thanks!


Key randomly becoming null: Unhandled Exception: type 'Null' is not a subtype of type 'String' in type cast

Steps to Reproduce
Add a “Plant” object to any Hive box using the object id as the key, then Hot Restart.
 It does not give any errors, the problem occurs on the “id” parameter, and when omitted, it works flawlessly.
Errors still reproduces even using a hard-coded identifier value, e.g.:  final String identifier = 'a1b2-c3d4'
Version

Platform: iOS, Android;
Flutter version: 3.3.7
Hive version: 2.2.3

#1027 related

As you may see, some of @HiveField(foo) are not in the ascending order (matching the order of the definition of values), but placed in the position (line of code) I thought it should be, as some of them were added later. So, that's why, even though values are ranging from 0 to 13, they aren't sorted “correctly”.
After rearranging it (see code below), and running the generator, the problem simply went away. The changes on the generate file were just the order (rearrangement of the lines of code), the code itself still the same. fields[foo] still matches the corresponding parameter/value as it should and were. Must say as well that, “id” remained unchanged, that is, still the same as before (same line and code).
Won't “call” it closed as I am not sure if it is the solution, and even though it is, shouldn't be, as the order of values shouldn't cause that type of error.
Is someone able to reproduce and confirm it?
P.S.: I've tried deleting all boxes, changing Hive version to the prerelease 3.0.0-dev one (which had to fork Hive repo and change Hive Generator pubspec to match the Hive version), using different emulators, using different physical devices and changed from my implementation of TimeOfDay to the Hive built-in one.
Unless you have specified another path, you should find them at C:\Users\{yourName}\Documents\


MethodBrowser blank icons under high DPI scaling override mode

Describe the bug
When running Dolphin under high DPI scaling override mode and scaled by "Application", the icon column will show black rectangle for blank icons.
To Reproduce
Steps to reproduce the behavior:

Open Dolphin "Properties" dialog
Select "Compatibility" tab
Click "Change high DPI settings"
Enable "Override high DPI scaling behavior"
Select "Application"
Run Dolphin and browser any class, see the method browser

Expected behavior
The icon column should show nothing for blank icons.
Screenshots

Please complete the following information):

OS: Windows 10
Dolphin: 7.1

Additional context
If I change Icon blank to Icon null in MethodBrowser class>>resource_Class_browser_method_list, it will work properly.

Sorry, but this is a bit of a "it hurts when I do that" bug report. We could make the change, but it is rather pointless since Dolphin does not support high DPI scaling and there will be (and are) all sorts of other problems with telling the OS that it does. It doesn't make sense to change the setting.

OK, I'm not familiar with high DPI scaling, just try a bit.
Anyway, just for record, I put following lines in startup script, the result seems not quite bad:
Icon class compile: '
blank
	^self null
'.

SmalltalkSystem current defaultFont: (Font name: 'Segoe UI' pointSize: 9.5).

If you set the DPI compatibility mode to Application you are telling Windows that the application is capable of scaling things itself to maintain approximately the same physical size, and to make any other adjustments to optimize appearance. For example let's say we have a toolbar that is notionally using 16x16 buttons. These look reasonable at old school 96dpi, but will be far too small at 200dpi.  Ideally an application is aware of this, and takes the DPI into account. If running at 200dpi it might choose to switch to larger 32x32 toolbar buttons. Or at 150dpi it might use 20x20 or 24x24, but scale down the 32x32 icons instead of scaling up the 16x16 icons, as the appearance should be better. Similarly fonts need to be scaled to maintain an appropriate point size that takes account of physical DPI and the magnification in display settings. DPI can vary in multi-monitor setups, and apps should ideally respond to this dynamically, even as one moves a window between monitors. Of course Dolphin does none of this - see #308.
If you specify Application scaling for Dolphin, then if you have a 4k+ monitor (and it is not very large), then you will definitely notice that the toolbars are too small, and the icons used in lists and trees are too small. You will also notice that the fonts are too large (which seems contradictory, but is because of some scaling code that does exist for other reasons that does the wrong thing), which is I guess why you have scaled it down.
One thing worth trying if your objective is to reduce the text fuzziness apparent when using system scaling, is to try enabling GDI Scaling:

Set the HDPI compatibility mode to "System (Enhanced)"
Turn off use of DirectWrite drawing in smalltalk editors, i.e. SmalltalkWorkspace useDirectWrite: false

This is superficially very attractive as it results is nice crisp text with few apparent disadvantages. Yes the focus rectangles are overheavy, and some Windows controls don't scale (e.g. radio/check buttons), but it looks massively better. Unfortunately there is a big issue with the Scintilla editor that is referred to in #308, as it suffers from the kerning errors described in the MSDN article.
I did try running like this for a while, but the caret positioning errors just got too annoying, and I prefer code in proportional fonts so the workaround of using a non-proportional font for the code windows doesn't work for me. The commentary in #308 suggests this might be a Windows bug, but I don't think it is. The problem is described in the MSDN article:

Kerning and clipping with imprecisely scaled fonts
As we mentioned above, many fonts are not precisely scaled. For example, 20pt font is not exactly twice the height and width of 10pt fonts. The GDI Scaling is done using the size of the 100% scaled applications. Any difference in scale will impact how the characters look next to each other (too close or too far apart) or how they fit into the objects within the app.

This is less of an issue for the display of text than it is with the editor because it results in the caret position being miscalculated.
A mid-way position is to leave Scintilla using DirectWrite drawing (so it is not affected by GDI scaling), but then the fuzzy text is juxtaposed with the crisp text elsewhere, and looks worse. Also the auto-completion prompt (which uses GDI, as it is, AFAIK, a Window control) looks particularly bad.
It is possible that the blank icon needs some adjustment to make it display properly. The scaling algorithm is messing it up. I'll reopen the bug to look at that.

Sorry, I forgot to mention that I'm using a 2k laptop with 125% scaling, icons are small but still acceptable.
Thanks very much for your elaborated explanation, very enlightening!
I scaled down the font size to work around some wrapped text, e.g. "Instance" in the screenshot.
Will have a try with GDI Scaling, but "Application" mode with those little tweaks seems good enough for me.


[Dashboard]  Automation of steps

Describe the Issue
Automate steps after first deployment.
Additional Context
To be refined after deployment
Acceptance Criteria

[ ] Automate migration from Forge to Assembly
[ ] Identify other steps to automate

To be refined after deployment

Ticket needs to be broken down into smaller tasks.
Warren/Prabhu to add content

No longer needed - broken down into smaller tickets


No transparency when window not focused

When my Firefox window is not focused, there is no transparency anymore. I have set the userChrome.Linux.Transparency.High.Enabled and userChrome.Toolbar.Transparency.Medium.Enabled in about:config

Do you find this behavior undesirable?

Unfortunately yes, is there a way to allow a window to still have the transparency even if the window is not focused. By changing the CSS or anything ?

In this line you need to remove , :-moz-window-inactive

Thanks a lot ! It works pretty well now.
By the way awesome theme


keybase mac app fail to start after a restore of macos

keybase fail to start after I restore macos
I have tried to reinstall keybase to see that helps:
We were unable to load KBFS (Fuse kext). This may be due to a limitation in MacOS where there aren't any device slots available. Device slots can be taken up by apps such as VMWare, VirtualBox, anti-virus programs, VPN programs and Intel HAXM.
my log id: 1f496993f280ad6a8afd861c

after upgrade to mac os 10.14 (Mojave) is this issue fixed


Get ACRA crash reporting system working again

Summary:
We used to have ACRA crash reports. Then we didn't. Then we fixed that. But now we don't have them again. These reports are very useful because they allow users to add comments to tell us what they were doing at the time of the crash
Steps to reproduce:
Generate a crash. If ACRA reports were working, there would be an option to report the crash (not just close or reopen app).
Device and Android version:
Several different ones, including API 21 and API 24
Commons app version:
Current master
Would you like to work on the issue?
Preferably not

Is this the same or different from: https://github.com/commons-app/apps-android-commons/issues/1882 ?

The same! Thanks for pointing it out. :)


problem when use Float32Array in object's property

Problem
Problem happen when use Float32Array in object's property.
indicate minimum jest test below
import { encode, decode } from "@msgpack/msgpack";

test("issue", () => {
  const f32 = new Float32Array([1.1, 1.2, 1.3]);
  const uint8 = new Uint8Array(f32.buffer);
  expect(new Float32Array(uint8.buffer)).toEqual(f32); //success

  const data = encode({ audio: uint8 });
  const { audio } = decode(data) as { audio: Uint8Array };

  expect(uint8).toEqual(audio); //success

  expect(uint8.buffer).toEqual(audio.buffer); //success

  const fail = new Float32Array(audio.buffer);
  expect(fail).toEqual(f32); //fail

  const success = new Float32Array(new Uint8Array(Object.values(audio)).buffer);
  expect(success).toEqual(f32); //success
});

this test fail in
 const fail = new Float32Array(audio.buffer);
 expect(fail).toEqual(f32); //fail

Enviroment
Node.js : 11.15.0
TypeScript : 3.5.2
Test Framework : Jest

This is the expected behavior of typed arrays.
First of all, the way to chang a typed array class is not new Float32Array(u8array.buffer), but you have to provide the range (offset, length) of the buffer:
const u8array: Uint8Array;
const f32array = new Float32Array(u8array.buffer, u8array.byteOffset, u8array.byteLength);

This is because TypedArray's buffer is a pointer to a slice of an ArrayBuffer. Thus, u8array and f32array shares the same buffer: ArrayBuffer.

I have been doing some work on an extension that handles TypedArrays natively and also aligns them at encoding time, rather than doing a copy when decoding.
const floatArray = new Float32Array([1, 2, 3, 4, 5]);
const encoded = encode({ floatArray }, { extensionCodec });
assert.deepStrictEqual(decode(encoded, { extensionCodec }), { floatArray });

Here's a readme describing how my extension works. And in this example you can see the encoding/decoding of different TypedArrays with no boilerplate.
However, in order to align during encoding I had to implement my own "plugin" system which works slightly differently to the existing extensions. This happens here. Basically the "plugin" just calls the encoder's private methods, instead of returning a blob which is then encoded as an ext.
This means my code has to write the ext header itself, but it makes the whole process more efficient and straightforward.
If I'd used a regular extension, it would require some tricky logic to "guess" which type of ext the encoder was going to use for the typed array data and adjust the alignment accordingly. It would also involve an intermediate copy (from TypedArray to ExtData, then from ExtData to the encoding buffer).
I'm not sure if this is of interest to you @gfx - I ask because I'm wondering whether something like my plugin system would ever make it into upstream, or whether I should maintain a fork or try harder to work with the existing extension system. I'm going to experiment with using my fork in some upcoming work and see how I feel about it.
I don't know whether it seems like I'm trying way too hard to optimise things, or if the idea of aligning data within the payload is a portability concern. Obviously this is really focused on JS-to-JS use cases, but other languages could read the memory into typed array primitives too I'm sure, and get the performance boost of alignment-without-copying.

@crabmusket  Thanks for the interesting report. Can you file an independent issue? Yours is definitely not related to the original issue.

@gfx done!


koord-runtime-proxy: regard empty string for CpusetCpus and CpusetMem…

…… (#484)
Signed-off-by: honpey<EMAIL_ADDRESS>Ⅰ. Describe what this PR does

Ⅱ. Does this pull request fix one issue?

Ⅲ. Describe how to verify it
Ⅳ. Special notes for reviews
V. Checklist

[ ] I have written necessary docs and comments
[ ] I have added necessary unit tests and integration tests
[ ] All checks passed in make test

/lgtm
/approve


Correction of the statement on premium circuits

There was something that IMO isn't correct (all expressroute circuits must be in the same geopolitical region... it's vnets we're talking about and there's an exception if the circuit is a premium one).
Let me know if that makes sense!

Hi @omartin2010, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (omartin). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;

@omartin2010 : Thanks for your contribution to the Azure documentation! The author, @ganesr, has been notified to review your proposed change.

#sign-off

@omartin2010 : Thanks for your contribution to the Azure documentation! The author, @ganesr, has been notified to review your proposed change.

#sign-off


[Autocomplete] Autocomplete component expose 'groupedOptions'

The useAutocomplete() hook exposes groupedOptions, which allows you to access the filtered options to display based on the user's current input.
It would be useful to be able to access this with the Autocomplete component too. Autocomplete currently provides no way to access the list of options which are currently rendered to the user - the only approach is to manually inspect the DOM to try to work out which options are listed.

[x] I have searched the issues of this repository and believe that this is not a duplicate.

Motivation
My use case is simple:

We have an Autocomplete component instance.
My client has asked to be able to press Enter to add all the currently visible dropdown options into the selection.

This is currently impossible, as we have no way of knowing which options are actually visible. Our options are to implement our own DOM inspection system, which would need to be fired onInputChange, as the user types, or to switch to the useAutocomplete() hook. This would be a disproportionate amount of work requiring reimplementation of the Autocomplete UI.
Requested Change
A prop on Autocomplete such as onOptionsChange(). This would be a function which Autocomplete would call with the current options list whenever the visible filtered options change. The provided value should be the same as the groupedOptions provided by useAutocomplete().

You can solve this issue by providing your own filter method and by controlling the input value. Once the user press Enter, then you can apply the filter on the input value and your options.


Bump scim2 version

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/6953427427

PR builder completed
Link: https://github.com/wso2/product-is/actions/runs/6953427427
Status: success


dBeaver should use rowid in Oracle

I have a table with no unique key. I am trying to manually remove duplicate rows. After SELECTing rows, I can mark rows to delete, but when I press Save, dbeaver tells me that since my table does not have a unique key, he would use all columns to filter the rows to be deleted, which of course would not suit my needs. So I edited my SELECT to include the ROWID pseudo-column, but now I get an error dialog telling me "(my_table_name) has no unique key", and when I press OK, I get a second error dialog saying "No unique identifier defined". I saw in this forum that dbeaver knows about rowid pseudo-columns, so I think that it should use this in my situation. If I explicitly select rowid, dbeaver would use it to delete or update rows. If I don't explicitly select the rowid pseudo-column, dbeaver could silently retrieve it (but without displaying it) and use it to perform operations.
(Oracle XE 11g / Windows 10 / dBeaver )

Currently DBeaver supports ROWID columns only in table editor, it is not used in custom queries.

OK.

RowId processing will be changed in the next version. Not only for Oracle but also for DB2 and PostgreSQL.

Excellent !
Off topic: I just saw above that I modified the milestone. I did not know I had such powers!