Add WebRTC IP policy default and flag patches, add licenses to credits, remove/replace Bromite patches

This is a continuation of #1750 and includes two patches from the Hexavalent project which set the default WebRTC IP handling policy and allows the user to change the policy in the settings.  A new sub directory has been created for these patches.  I tested using the same sites and everything seems to function as intended.
Fixes #1725

hm I'm not completely sure if we comply with the BSD-3-Clause-Clear license here:
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.

I'm not sure if just specifying which license the patches are distributed under is actually enough, maybe we could add a new directory for full license files and reference them in the patches using the SPDX identifier?

I've included the licence file in the directory for now.  We could do another PR to create a top-level licence directory with subdirectories for each project's licences since we don't currently include any others either.

That last commit creates the new directory with subdirectories for each project.  I've included the license files for each, but it looks like debian and iridium both only include the upstream chromium license.  Let me know if you know if there's a better replacement.
I'm not a lawyer so hopefully this is the best way to handle this.
I considered moving the ungoogled-chromium license into the directory as well, but I know github and some other software defaults to the top-level license file so I left it as-is.

Should we do anything else (in the future) with respect to licenses?

I think this is pretty much all that we can do

I've updated the patches for 99 and added a patch to include the licenses in the credits.  Everything seems to work as intended on my end.

Just a FYI. I've asked @Eloston to glance through the changes in this PR.

Updated for 100.0.4896.60

I've added the change for Bromite's link and rebased over the .75 update.

@Eloston Please let us know how to go forward with this PR.

is it ready to be merged?

Hexavalent seems to be no longer active :(

it's always sad to see a project die...
Hexavalent updated its patches to v102.x so updating the patches could be required.

I've been running with the default policy changed for most of the year and haven't yet run into any situations that required me to change the setting on the fly.  Unless there's some good reasons to keep the current patches, I think the best plan is to remove both the hexavalent and bromite patches and introduce our own that sets the default to DisableNonProxiedUdp and allows changing the setting via flag/switch.  This would make it conform to how the other changes we've added operate and reduce the maintenance burden.

I've pushed a new set of changes rebased over the latest changes:

Remove Bromite patches and replace the field trial patch with a new one
Add licenses to credits
Add a patch to set the default webrtc-ip-handling-policy to DisableNonProxiedUdp
Add a flag for webrtc-ip-handling-policy

The webrtc-ip-handling-policy switch already exists in upstream Chromium so only the flag needed to be added. I'll probably integrate the flag into #1687 when I get some time to work on it again.

Remove Bromite patches and replace the field trial patch with a new one

Why? did I miss something?

The PR has been stagnant since April without a solution to the licensing issues, so I took option 2 and removed the patches.
I'm open to suggestions for an alternative solution if you have any.

Also related but I didn't want to comment on a closed issue: There was a question raised here for me that I forgot about: https://github.com/ungoogled-software/ungoogled-chromium/pull/1750#issuecomment-984305670
I don't recall the original intent, but I probably disabled this ages ago because I thought it was unnecessary to have. Web browsing has changed a bit since then, so I think it's better to re-enable it as long as we have reasonable solutions for all the privacy issues (e.g. is local IP obfuscation the only major issue with mDNS?)

I made a build with mDNS enabled and with its patch removed.  There were no issues building or running, and I don't see any new requests in wireshark or the logs.  Maybe some later changes solved the original issue.  I can make a separate PR later for that as well.

Is there any possibility to keep those bromite patches? We may (probably) contact Carl and ask directly for permission to use or something like that.

people have reported websites breaking due to them

Ain't those flags disabled by default? That is exactly why one cannot have both: perfect privacy and perfect functionality. Having the ability to choose is a worthy thing IMO. I noticed that at some point Whats App was doing some fingerprinting in their web-version and indeed it was breaking the session upon each access (tab reopen, browser restart). Fortunately they abandoned this behavior very soon. Moral is… Well, there is no moral :)

Since this PR has outgrown its critical mass and stalled irreversibly, I propose we merge only WebRTC-related changes (and maybe the replacement patch for field trials) and discuss the rest separately and with all the due thoroughness!

That's fine with me, though I actually just finished updating the patchset for the latest version a little over half an hour ago.  I'll push the changes anyways once my build finishes and I get some time make sure everything is in order.
The main blocker for this is the GPL licensing.  Every resource I have gone through states that we would have to re-license the entire project under a GPL-compatible license if we want to include those patches.  I was hoping that we could figure out an alternative, but I haven't been able to find any usable solutions online.

Well since I had replaced some of the patches with my own they no longer need to be grouped in with the licensing stuff.  I think it would be a good idea to break some of those patches out from this PR now.  A lot has changed since this started and it might make things easier to sort out if they are separate.

One idea I had to deal with the licensing would be to create a new repo for GPL-compatible patches.  We could update the scripts to check an external directory to include extra patches.  add-ungoogled-flag-headers.patch would make it easy to include extra flags in that situation.  This would allow each repo to have their own licensing.  The resulting binary would still be governed by the GPL if that repo is used, but we are already compliant due to having all the source publicly available under a permissive license.  It would just mean that anyone wanting to make proprietary builds wouldn't be able to include that repo.
Granted, I'm a layman when it comes to legal stuff so I'm not sure if that is a good solution.

That's fine with me, though I actually just finished updating the patchset for the latest version a little over half an hour ago.

OK. Change of plans!
I took the initiative and did some "archeological excavations" and bored myself to near-death by reading License texts and looked through tons of PRs and issues (@Ahrotahn sorry, this took me so long to finish).
I apologise in advance for the lengthy message that I ended up with.
Origins
In a galaxy far away 2018 Carl submitted a PR https://github.com/ungoogled-software/ungoogled-chromium/pull/377 with the first Bromite patch named resources/patches/bromite/BRM045_Add-fingerprinting-mitigation-for-getClientRects-getBoundingClientRect.patch. At that time UC was already licensed under BSD, so that means that knowingly or not, but Carl submitted that patch into the BSD licensed project without specifically stating the license, hence this patch must be covered by the BSD license. Which allowed Eloston to modify this patch and adapt it for UC.
One could do the three-way comparison of the patches:

Carl's original submission: resources/patches/bromite/BRM045_Add-fingerprinting-mitigation-for-getClientRects-getBoundingClientRect.patch
Modified version that was committed by Eloston: /resources/patches/ungoogled-chromium/fingerprinting-flag-client-rects-noise.patch
Present day version: /patches/extra/bromite/fingerprinting-flags-client-rects-and-measuretext.patch

With respect to this particular patch there is no license violations whatsoever.
Every other later Bromite patch was committed by Eloston directly presumably by copying it from GPL-licensed Bromite tree into the BSD licensed UC tree. This fact deserves further investigation. I could not find any rigid proof of those patches being available under BSD license short of the following passing mention: https://github.com/ungoogled-software/ungoogled-chromium/issues/1078#issuecomment-648317691

I think we have discussed the license for the current Bromite patches in UG already (need to find the issue/PR)

Please note that neither the issue/PR were mentioned nor I could find one. Could be they discussed that offline or out-of-band.
I could find the original proposal from Carl https://github.com/ungoogled-software/ungoogled-chromium/issues/429 (emphasis mine):

I am opening this […] to offer a better alternative […].
Please see these patches that I developed for Bromite
[…]

Overall in that issue Carl and Eloston were deeply involved in discussing technical details, but not even a passing mention of the licensing terms.
So to conclude I would consider fingerprinting-flags-client-rects-and-measuretext.patch as a modified/derivative work of a BSD-licensed (specifically for UC) patch from Carl. Other Bromite patches are taken verbatim(?) and are covered by the GPL with the possibility of Carl granting explicit permission to treat them under BSD license for UC project in the past.
Bromite's GPL
Carl mentioned a number of times why he choose GPL for Bromite. Also I found many occasions where he was very generous and willing to share his work for other projects to use. He was also very kind of immediately providing me with a list of patches which might be of interest for UC. He is however very strict about authorship https://github.com/ungoogled-software/ungoogled-chromium/commit/71f59c2556bb7d4fe442fa77eaee3f5227ce3cfc#comments which is very understandable. On the issue I will link further down he even hinted the possibility of re-licensing Bromite patches of his authorship into BSD specifically for UC.
Starting point
While researching I found a good starting point: https://github.com/ungoogled-software/ungoogled-chromium/issues/1078. Turns out this issue was already discussed once. I kindly ask everyone interested to glance through that issue for a refresher before continuing.
Now, first of all I'd like to mention that I totally disagree with Carl's  statement in "I do not see them as separate work" (I'll tackle this later). Also I disagree with former me in " […] those patches, they are not like code, they never link or compile into resulting binary, we kinda utilise them during build and they are never included in chromium by themselves […]".
So lets move on.
To begin with, lets assume there could be a project consisting of many works each being covered by its own license. Chromium being the obvious example.
Ungoogled-Chromium
Lets handle Ungoogled-Chromium in that perspective. Assume it being licensed under BSD, but it also could have some independent components with own licensing terms. Indeed we can succeed in applying ungoogled-chromium modifications completely excluding Bromite or Inox patches (or both!). Which allows me to state that we have a BSD licensed work in most folders (utils, docs and so on) and we may have any number of separate works in patches.
Now lets try including GPL work as part of an aggregate combined with Ungoogled-Chromium.
The GPL
Upon first inclusion of a GPL code into our aggregate we start Conveying Verbatim Copies which is covered by chapter 4 of the GPL. This allows us to distribute the source code, but we should also keep license notices[^1]. We should improve our license notice presentation for borrowed patches actually.
Looks good so far.
Now lets modify this GPL work as we usually do routinely update to corerspond to new Chromium sources. This is covered by the next chapter. We can do the same as previously stated[^2].
There is only one difference this time: "You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy" and one could argue that we should relicense UC to comply, but that is not the case. Like I've mentioned, this becomes an aggregate[^3] of independent works, which does not require relicensing as a whole. In other words, the whole work is the Bromite patch in question or the collection of them[^4].
That being said it turns out that every repository under https://github.com/ungoogled-software is completely compliant with respect to GPL licensed parts.
But it gets very interesting if we consider the resulting Chromium codebase after GPL patches are applied. This is no longer an aggregate as they are "combined with it such as to form a larger program".
So lets advance to binary distribution. This is predictably the following chapter.
Per se we cannot compile patches to object code, which means we have no way of distributing in non-binary form. That's it! So Long, and Thanks for All the Fish :)
Jokes aside, we do as a matter of fact provide binaries. This looks like this: There are BSD licensed tools (UC) which make use of GPL-licensed and modified works (Bromite patches for instance); this aggregate is lawfully and publicly distributed. Then someone takes this aggregate and with the help of it (using it as a tool of sorts) creates a modified Chromium codebase that has GPL-licensed patches applied, which makes in turn this modified Chromium codebase to be in need of being GPL-licensed. And this is the grey area: whether it is possible to relicense a collection of MIT/BSD/Apache sources into GPL. I would guess that this is OK since there is already a GPL code in Chromium:

One could argue that someone distributing this modified GPL-containing Chromium should also distribute the "Corresponding Source" and with that all the UC codebase and should arguably turn it into GPL[^6]. From the definition of the Corresponding Source[^5] follows that it is "the source code needed to generate, install, and (for an executable work) run the object code", but that is essentially Chromium's build system + patch utility. Chromium sources are already available and the sources of the patch utility are covered by this exception: "However, it does not include […] general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work". One could consider UC a "convenience script", not part of "Corresponding Source" since it is essentially patch utility that is embedding the GPL code into Chromium sources for further compilation. But all in all it is still beneficial in public interest that all the sources of this convenience script are publicly available and licensed under BSD.
Bottom line (personal interpretation)
Considering that all sources of UC are anyway publicly available and are compatible with GPL license, there are no GPL violation be it source form, or binary. There is however one thing that we could improve: license notice presentation and license delineation between UC's BSD code and any other borrowed code covered by other licenses. I think it would be sufficient to make direct statement in borrowed patches of their license, no need to split the repo. Also I think it would be an excellent idea to use the already existing Chromium code infrastructure to make specific mention of the licenses of all the borrowed patches.
There is also a possibility (mentioned above) that Carl will allow UC to use Bromite patches of his authorship under BSD license within UC repository. Of-course this is not prohibited by the GPL[^7].
It could be that the statement "we can succeed in applying ungoogled-chromium modifications completely excluding Bromite or Inox patches (or both!)" is not entirely true and if that's the case, we have yet another point for improvement.
[^1]: You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
[^2]:You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.

b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7.  This requirement modifies the requirement in section 4 to
"keep intact all notices".

c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy.  This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged.  This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.

d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.

[^3]:A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
[^4]:BTW this is probably the misunderstanding that led me to disagree with Carl above. If he meant a collection of Bromite patches as a whole work, then it is totally agreeable.
[^5]:The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
[^6]:You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License
[^7]:This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.

Wow I didn't realize what you meant previously, I didn't mean to make things difficult.
So much of the language for the GPL is based around a code-to-binary pipeline. For example an aggregate, as described on gnu.org, only considers the output of GPL code and not the input. The aggregate is fine as long as the binaries are separate. Chromium is able to use Speech Dispatcher since the included code is only to link with the separate system library. They wouldn't be able to statically build with that library without relicensing everything under the GPL. But our situation is different.

Per se we cannot compile patches to object code, which means we have no way of distributing in non-binary form. That's it! So Long, and Thanks for All the Fish :)

This is the crucial component that has been making things difficult. There doesn't seem to be a consensus on how licensing patches works. They aren't, on their own, able to produce binaries. Their output is only modified code. There is even more ambiguity when it comes to licensing the removal of code.
I'll edit the link in once I find it in my history, but I had found a reference online where RMS considered patches to be a derivative work of the code it modifies. If the code were licensed under the GPL, then the patch modifying that code would also have to be licensed under a GPL-compatible one. This, to me, implies that the original codebase would retain its license. So BSD code wouldn't need to be relicensed under the GPL due to applying a GPL-licensed patch like I had thought.
The other stumbling block that you mentioned is whether or not a patch is considered it's own, standalone 'work'. If a patch can be considered a derivative work then I think that might be the case. That would mean that we should be able to have a mixture of differently-licensed patches so long as the licenses are included.
So we could either separate the patches into folders with a LICENSE file or include the license as a comment at the top of each patch. I'll spend some time later updating things to include one of those options instead of removing the patches.

So much of the language for the GPL is based around a code-to-binary pipeline. For example an aggregate, as described on gnu.org, only considers the output of GPL code and not the input. The aggregate is fine as long as the binaries are separate.

You're referring to a FAQ, which might be considering one of the most common cases, just one of them, not necessarily invalidating other cases. I was referring to license text itself. The term “aggregate” is defined within chapter "5. Conveying Modified Source Versions.", which gives me the impression of it [aggregate] being able to emerge even in source-form, which fits us perfectly!

Chromium is able to use Speech Dispatcher since the included code is only to link with the separate system library. They wouldn't be able to statically build with that library without relicensing everything under the GPL. But our situation is different.

I also wanted to touch this thing, but somehow forgot about that, thanks for reminding! Like I've stated above, UC in its source form as an aggregate of differently-licensed works has nothing to do with GPL propagation. This issue arises to someone who uses UG and produces a GPL-containing Chromium codebase. Since we provide binaries, we have to deal with it too. Myself included: I also "convey" binaries.
In that respect we have following possibilities:

It is impossible for anyone to distribute GPL-containing Chromium in binary form because it would be unfeasible to try and modify GPL code to be present in dynamically loading library to satisfy GPL limitations due to their intrusiveness. It would be also unenforceable to relicense all the Chromium code into GPL since anyone could use the same code under the original license (BSD/MIT and so on). This has one peculiar consequence: even Bromite would be in violation of GPL if they distribute binaries. W.r.t. UC this would simply require some mechanism to skip applying GPL patches if the resulting binary is to be distributed. This does not apply if building for oneself, GPL has a clause for that: "To “propagate” a work means […], except executing it on a computer or modifying a private copy."
If there would be no disagreement between BSD-licensed Chromium and GPL code inside the binary representation, then there would be no problem distributing the resulting binary, provided that we comply with GPL, meaning we release the source code, we release instructions on how to build this code and retain license notices (more-or-less what we already do).

That would mean that we should be able to have a mixture of differently-licensed patches so long as the licenses are included.
So we could either separate the patches into folders with a LICENSE file or include the license as a comment at the top of each patch. I'll spend some time later updating things to include one of those options instead of removing the patches.

That's what I was trying to convey and prove, hope it worked.

I'll edit the link in once I find it in my history, but I had found a reference online where RMS considered patches to be a derivative work of the code it modifies.

Please do! It could be insightful if it has a reasonable grounding.

@csagan5 have you ever evaluated the GPL Linking Exception or Classpath Exception?
The GPL Linking Exception allows developers to use certain code, called library code, in commercial projects,
without the application of GPL to the resulting software. Linking, in this case, is the process of
connecting the main code with a library code. If a library is released under GPL with a
linking exception, said library can be used to create software to which GPL does not apply.

...Classpath Exception...
…the copyright holders of this library give you permission to link this library with independent modules …
and to copy and distribute the resulting executable under terms of your choice, provided that you also meet,
for each linked independent module, the terms and conditions of the license of that module.

That at least means there shouldn't be any problems with the current patchset. Though in that case having a LICENSE file per directory would be complicated since the current patches and new patches (if they can be added) would have different licenses.
I've recently learned about REUSE where a top-level directory is made containing each of the licenses and each file would include a pair of lines with the copyright info and a link to the respective license.  That might make managing this easier. If that seems like a good solution I'll spend some time setting that up.

The copyright holders will need to be added along with the license.  We are allowed to make the copyright for groups: "The ungoogled-chromium Authors", "The Iridium Authors", and so on.  I'd be interested if y'all prefer that implementation or if we should list everyone that worked each file individually.
@csagan5 Were you the sole author for the Bromite patches when they were submitted?  Would you prefer to be listed individually or would "The Bromite Authors" be sufficient?
Also the copyright year is optional.  I think we shouldn't include the year in order to reduce the number of future changes needed, but I'd be interested in your thoughts regarding that.

The copyright holders will need to be added along with the license. We are allowed to make the copyright for groups: "The ungoogled-chromium Authors", "The Iridium Authors", and so on. I'd be interested if y'all prefer that implementation or if we should list everyone that worked each file individually.

Is it a requirement of REUSE you've mentioned? Could you please elaborate on that? I take the need for noting the authors as granted, why would someone doubt that? Or am I misunderstanding something?

Also the copyright year is optional. I think we shouldn't include the year in order to reduce the number of future changes needed, but I'd be interested in your thoughts regarding that.

Totally agree!

Yes, the only two things that need to be added is a line for the license and a line for each copyright holder.
For our situation the copyright holder should be the same as the author, but it's done that way because there can be situations were an author is employed to write code and the copyright holder for that code would be the employer instead of the author.

Some of those patches were additionally modified by Eloston. Does it contribute to authorship?

@Ahrotahn would it be possible as proposed earlier to extract WebRTC-related changes into separate PR in order to merge them faster merge them at last? That would be a valuable addition to ungoogled-chromium.

Sure, I'll start sorting things out this week if all goes well.


Raspberry Boot issue

Description
I'm trying to install Flatcar on a Raspberry Pi 4B with 4GB RAM, booting from a USB drive. I'm following the instructions from https://www.flatcar.org/docs/latest/installing/bare-metal/raspberry-pi/, and I can see it starting to boot. Seeing the large Raspberry on the screen and, after 1 or 2 seconds, I'm seeing the boot menu: Flatcar default, Flatcar USR-A and Flatcar-USR-B. Then, after a couple of seconds, it boots Flatcar default where I see:
EFI stub: Booting Linux Kernel...
EFI stub: Using DTB from configuration table
EFI stub: Exiting boot services...
Then the screen goes black, and a blinking underscore cursor appears. After a few seconds, I see the drive LED flashing for a few seconds, then nothing more
Impact
Raspberry PI doesn't boot Flatcar
Environment and steps to reproduce

Executing install steps exactly as defined in the documentation
Connecting the drive to the raspberry Pi
Power on the Raspberry Pi

Expected behavior
Have the Raspberry booting up
Additional information
I'm using the latest pftf/RPi4 (v1.35). But tried a couple of them, including v1.28 which was used at the time of writing

I have tried the same tutorial but with a Raspberry Pi 5 8GB. The UEFI is used from https://github.com/worproject/rpi5-uefi
The Disk is a SSD with a USB3 to SATA Adaptor.
The output is exactly the same as yours.
Selecting Flatcar USR-A or B has the same output.

Hello,
I have tried to reproduce the bug on a Raspberry PI 400 (which should be very similar if not same) using the latest stable Flatcar release and the docs from https://www.flatcar.org/docs/latest/installing/bare-metal/raspberry-pi/, but I could not reproduce the issue.
My workflow:

Boot latest x64 Raspbian from USB stick 1 and update eeprom. Shutdown the Raspberry. The imaging was done using another x64 computer, Ubuntu 22.04, downloading latest Raspbian image and use dd for imaging.
Create the USB stick 2 image using the how-to https://www.flatcar.org/docs/latest/installing/bare-metal/raspberry-pi/ flatcar-install -d /dev/sda -C stable -B arm64-usr -o '' -i config.json. The imaging was done using another x64 computer, Ubuntu 22.04.
Detach USB stick 1 and attach USB stick 2
Boot Flatcar: saw the Raspberry logo, the boot menu: Flatcar default, Flatcar USR-A and Flatcar-USR-B. Then it booted Flatcar, the screen goes black, and a blinking underscore cursor appears in the top-left part of the screen. After a few minutes, the Flatcar login console appears.

There is a config.json bug where the auto-login does not work and a soft power off / power on is required to make auto login work. This is an issue with how the grub.cfg changes are performed and maybe needs a fix in the config.json from the documentation?
Thank you.


multiple notes (named appropriately) instead of multiple sections in one note?

would it be possible for this to link multiple notes instead?
If I had notes named like this:
John 1.1
John 1.2
John 1.3
John 1.4
It would be great to quote [[John 1.2::John 1.3]] to see the content of notes 2 and 3.

That’s probably doable, but not a super simple change. I’m leveraging the built-in hover preview functionality with this, which only supports showing content from a single note. However, I may end up modifying this plugin to use a custom popover implementation to be more flexible, and if that happens then I could support this use case.

I am also interested in the same functionality. Particularly if all the linked notes had the same header in them, do you think it would be possible to link to the range of notes, and only that specified header?
For example, with notes named like:
John 1.1
John 1.2
John 1.3
John 1.4
And each having the same level heading:
Original Text
Could the original text header be linked across the multiple files into the custom preview?
Thanks for the great work!

Thanks for the request! If I end up moving forward with a custom preview then I'll keep this functionality in mind.


Chained batch feature broken

batch() method with no parameter returns undefined instead of a batch object for chaining.

I think this is a multiparty issue : juliangruber/multilevel#46.

fixed in 2.0.0


Calibration Idea

wonder if it's be possible to do an automatic Calibration i mean for peoples don't know how to like me ,
the the past i did the celebration and in steam when starting the vr i see the motion controller not in the position and it's like a big mess , it's will be great to do it or alternative that the tool will guide as in the installation what to do

Depends on what you're trying to calibrate, camera, trackers or controllers.
First you calibrate the controller sensors, then the cameras so they only identify a specific tracking orb colour and finally use the calibration mat to calibrate the size of the virtual environment and the fixed camera poses.
Given everyone's lighting environment would be different and subject to change, there's really no way around it. This is especially so when you want to fine tune the size of the tracked bulb. I found in my case I only really get the best results when I've fine tuned each camera individually.
You could achieve 2/3 automated calibrations.
With a computer vision/AI algorithm a program could auto calibrate the camera until the most optimal orb is in view using fuzzy logic and heuristic rules. Actually it sounds like it'd be better suited to an overly inefficient but fun genetic algorithm.
For the calibration mat it'd really only be a matter of owning 5 move controllers, placing each one on the mats points and having the service cycle each bulb on/off in sequence while it recorded it's relative position. This sounds like a good Arduino/Raspberry Pi project running a controller client app 5 RGB LEDs and 5 ping pong balls.....

I guess there could be a semi-automated workspace calibration mode when the user had two controllers available and held them end-to-end (bottom-to-bottom, not bulb-to-bulb) and moved them around the workspace.
The automated colour-calibration has crossed my mind before. It's a good idea, and it would probably work well. Pull requests are welcome.


No selection of datapoint-IDs possible, blank screen only

Hi,
with 1.6.1 I get a blank page if trying to select a datapoint ID from the list of datapoints with influxdb. (In my case v2)
To reproduce:

add a new datasource
try to select a data from the list of influxdb-enabled datapoints in the field ID

Than complete blank (white) screen, no datasources-IDs available :-(
Was working before (last used around 3 days ago). No changes made to database, only some new points added/enabled.
I can cut_n_paste the datapoint representation into the ID field, that works.
Display of echarts with manually added datasource-ID works!
cu
Harvey

I can confirm this, I have the same problem

reverting to 1.5.4 :::: THIS IS WORKING !

https://www.iobroker.net/#de/documentation/faq/_040_contibution.md?fehlerindergrafischeoberflchemelden

Bitte 1.7.0 testen. Wird in latest heute Nachmittag.

siehe https://github.com/ioBroker/ioBroker.echarts/issues/469

seit 1.7.1 ok


Performance benchmark result of adjoint Jacobian in #562

Issue description
Here is a concrete benchmark result for #562, where I found the hybrid Python-C++ code (~40 LOC of the Python code) in that PR to be ~2x faster than the full C++ code for adjoint Jacobian. I think this means that there could be a room for improvement for the C++ implementation.
I'm raising this issue because I had spent time figuring out about speeding up the adjoint code. I think it would be a missed opportunity if this were not examined. A review of this issue would be appreciated!
# First method (Hybrid Python-C++)
Elapsed prepare final version 0.2567005157470703
elapsed grad final version 0.2276167869567871
first last -6.487318906392218e-05 -3.165823172952863e-06
Elapsed python 0.5076043605804443

# Second method (Builtin C++ Adjoint Jacobian)
elapsed prepare diagonal observable 0.29276108741760254
Elapsed diagonal observable grad only 0.4546031951904297
first last -6.487318906392219e-05 -3.165823172952862e-06
Elapsed diagonal observable sparse 0.8442294597625732

The elapsed times to consider are the "elapsed grad final version" and "Elapsed diagonal observable grad only".
Code to reproduce the benchmark result.
import time

from pennylane import numpy as np
from pennylane_lightning.lightning_gpu.lightning_gpu import L2Loss

import pennylane as qml

np.random.seed(0)
num_wires = 22
complex_type = np.complex128
real_type = np.float64

target_probs = np.random.rand(2**num_wires).astype(real_type)
target_probs /= np.sum(target_probs)

params = np.random.rand(2 * num_wires, requires_grad=True).astype(real_type)

dev_gpu = qml.device("lightning.gpu", wires=num_wires, c_dtype=complex_type)

# First method (Hybrid Python-C++)
def grad_fn_python(params):
    with qml.tape.QuantumTape() as tape:
        _ = [qml.RX(params[i], wires=i) for i in range(num_wires)]
        _ += [qml.CZ(wires=(i, i + 1)) for i in range(num_wires - 1)]
        _ += [qml.RX(params[i + num_wires], wires=i) for i in range(num_wires)]
        L2Loss(target_probs)
    out = dev_gpu.adjoint_jacobian(tape)
    return out

tic = time.time()
g = grad_fn_python(params)
toc = time.time()
print("first last", g[0], g[-1])
print("Elapsed python", toc - tic)

# Second method (Builtin C++ Adjoint Jacobian)
def common_h(h):
    @qml.qnode(dev_gpu, diff_method="adjoint")
    def c(params):
        _ = [qml.RX(params[i], wires=i) for i in range(num_wires)]
        _ += [qml.CZ(wires=(i, i + 1)) for i in range(num_wires - 1)]
        _ += [qml.RX(params[i + num_wires], wires=i) for i in range(num_wires)]
        return qml.expval(h)

    return c

def get_prob(x):
    return np.abs(x) ** 2

dev_gpu_for_eval = qml.device("lightning.gpu", wires=num_wires, c_dtype=complex_type)

@qml.qnode(dev_gpu_for_eval, diff_method="finite-diff")
def circuit_gpu(params):
    # define your quantum circuit here
    _ = [qml.RX(params[i], wires=i) for i in range(num_wires)]
    _ += [qml.CZ(wires=(i, i + 1)) for i in range(num_wires - 1)]
    _ += [qml.RX(params[i + num_wires], wires=i) for i in range(num_wires)]
    return qml.state()

def adjoint_l2_sparse(params):
    from scipy.sparse import diags

    wires = range(num_wires)
    ket = circuit_gpu(params)
    tic = time.time()
    obs = -2 * (target_probs - get_prob(ket))
    hmat = diags(obs, format="csr")
    # Note: Since the L2 loss function is a completely diagonal operator, we can express it as a sparse Hamiltonian.
    h = qml.SparseHamiltonian(hmat, wires)
    print("elapsed prepare diagonal observable", time.time() - tic)

    c = common_h(h)
    tic = time.time()
    out = qml.grad(c)(params)
    print("Elapsed diagonal observable grad only", time.time() - tic)
    return out

print()
tic = time.time()
g = adjoint_l2_sparse(params)
toc = time.time()
print("first last", g[0], g[-1])
print("Elapsed diagonal observable sparse", toc - tic)

Thanks @rht. This is useful info and squeezing the most performance out of the lightning suite is a top priority!
For the 0.35 release (end of Feb), we're planning to move towards lightning.gpu tapping into our new JVP pipeline by default. At that point, I'd be curious to compare these numbers again. We'll keep you posted as we make progress on this.


Add ansible code for 'routed lans' setup

Very good script to play with wireguard.
One thing I'm trying to set up, is to make this script to forward various lans (either from server or from peers) to the whole vpn lan.
This is called 'routed lans' from openvpn perspective. https://community.openvpn.net/openvpn/wiki/RoutedLans
Will inspect how to make this possible in wireguard/ansible and come with a pull request for it if I make it.
Thanks for great script!

I'm glad you like it.
Something like this could probably be done by adding the commands which set up the routes into post_up


update_forward_refs fail to resolve ForwardRef of Mapping key field

Checks

[x] I added a descriptive title to this issue
[x] I have searched (google, github) for similar issues and couldn't find anything
[x] I have read and followed the docs and still think this is a bug

Bug
Output of python -c "import pydantic.utils; print(pydantic.utils.version_info())":
             pydantic version: 1.8.2
            pydantic compiled: False
                 install path: /Users/yuriikarabas/my-projects/pydantic/pydantic
               python version: 3.9.0 (v3.9.0:9cf6752276, Oct  5 2020, 11:29:23)  [Clang 6.0 (clang-600.0.57)]
                     platform: macOS-10.16-x86_64-i386-64bit
     optional deps. installed: ['devtools', 'dotenv', 'email-validator', 'typing-extensions']

Code bellow:
from typing import Dict

from pydantic import BaseModel

class Model(BaseModel):
    a: Dict["HashableModel", "int"]

class HashableModel(BaseModel):
    pass

Model.update_forward_refs()

obj = Model(a={"a": 1})

Will produce:
pydantic.errors.ConfigError: field "key_a" not yet prepared so type is still a ForwardRef, you might need to call Model.update_forward_refs().

This is fixed on main and will be included in V2, you can try it now on the alpha release.


fix: error thrown during account restore, wrong depth

Try out this version of the Hiro Wallet - download extension builds.

wip
Glad I added the depth checks because I was checking wrong addresses during account restore. Though can't replicate the error thrown 🤔

Fixed elsewhere


Configure devices name in the webpage

Hi, all.
Is it possible to have a function, that user can configure the devices name by theirself use the webpage instead of change the code than compile and flash.

Hi,
the first thing you could do is change the device name in the Alexa app.
For changing the name while the program is running I can add the EspalexaDevice::setName() function. Will do in the next few hours. You'd still need to add the program logic for user configuration though. If you wanted to deploy Espalexa on a larger scope than for hobbyist use, you'd have some sort of code for storing WiFi name and password from the user. Now you could also store their desired device name(s) and apply them.
That said, Espalexa is a library designed to connect your own program to Alexa. It is neither meant nor useful to use it stand-alone and the examples are only meant to convey how to use the library.

@Aircoookie
OK, thanks. I have done this


System.PullRequest.PullRequestId is not populated when manually run a pipeline

System.PullRequest.PullRequestId is populated with correct value only when Pull Request is created or "/azp run"
I would like to get the System.PullRequest.PullRequestId variable with the correct value set no matter what measures I trigger to run a pipeline.
Is it possible?

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

ID: 11d3469c-83c2-c2f6-41d0-08f82c330bbc
Version Independent ID: a373c48d-6395-3002-d2d8-bbc1fea2e48e
Content: Predefined variables - Azure Pipelines
Content Source: docs/pipelines/build/variables.md
Product: devops
Technology: devops-cicd-build
GitHub Login: @juliakm
Microsoft Alias: jukullam

@haroldrandom Thank you for the question.
Unfortunately our support options are limited in this forum to documentation examples only.
Please use Report a problem or Suggest a feature in the Azure DevOps community where the product team can better address this issue.
Or, for additional support options, refer to:

Azure DevOps Support
Azure DevOps on StackOverflow

@juliakm

I am closing this issue now.  You are welcome to @ mention me for any followup.
We hope to hear from you again.


Wikipedia bot crashes when the query contains multiple word delimit by underscore.

The bot is under contrib_bots/bots.  Some error handling is needed.

@tommyip I edited your description to have a bit more context for someone not familiar with what this is (just the path to the file).  It's good practice to include that sort of detail since it's generally fast to enter and can save a lot of time for someone picking up the project.

@tommyip could you give an example to what breaks the bot?

Works:
multiple word
Crash:
multiple_word

Has this issue been solved
When i tried to test it the wikipedia bot doesn't crash when the query contains multiple words separated by underscore

@wizsid11 you are right, multiple words with underscore doesn't make the bot crash. When no results are found, like:

mutliple_case
(note the typo above)
hitd gfkl sss
In such cases Indexerror occurs, as the query was being accessed before checking its existence.


Use current operator SDK-style metrics setup

Instead of starting our own HTTP listener, use the server provided by
the operator library.
The current operator SDK produces service and service monitor
templates for use with Kubebuilder. We still need to support setting
up metrics without Kubebuilder, so we still take care of creating the
metrics service and service monitor; however, instead of using the old
SDK-inspired code, which needs obsolete SDK packages, use the metrics
setup code we have for our own managed applications. The major
difference between the two is that the old SDK-inspired code set the
service's owner reference appropriately, whereas the new code doesn't;
but the Kubebuilder-based setup also does not set the owner
reference, so this doesn't seem too bad.
The Kubebuilder-based setup also supports an authenticating proxy,
which this doesn't; using this also requires adding permissions for
Prometheus, and should be handled as a separate change.
Signed-off-by: Stephen Kitt<EMAIL_ADDRESS>

E2E (globalnet, 1.24, lighthouse) timed out at 30m, re-running.
   • Checking the firewall configuration to determine if intra-cluster VXLAN traffic is allowed  ...

  Error: The operation was canceled.


Mechanisms for requesting resources before they are provided

Are there good use cases for this?
If so, it could be achieved in a few ways.

requestResource returns a promise which is only fulfilled once a resource is provided and a value available.
provideResource triggers a resourceProvided event with new resource name sent as data.

Wrong repo.


make findfirst and findlast return nothing

Part of #51.

Codecov Report

Merging #57 into master will increase coverage by 1.82%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #57      +/-   ##
==========================================
+ Coverage   95.07%   96.89%   +1.82%
==========================================
  Files           7        7
  Lines         690      934     +244
==========================================
+ Hits          656      905     +249
+ Misses         34       29       -5

Impacted Files
Coverage Δ

src/xpath.jl
93.61% <100%> (+12.22%)
:arrow_up:

src/node.jl
99.51% <0%> (+0.3%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 339a389...6684209. Read the comment docs.


[fix][sys] unable to search sites

Coverage decreased (-10.0%) to 66.559% when pulling 24a028b533dcb10ba6b570cc965b755ce155c5cf on fix/sys-site-search into f6b9f8ff14904b21d593b9301ca7020e56f09afc on master.

Coverage decreased (-10.0%) to 66.559% when pulling 24a028b533dcb10ba6b570cc965b755ce155c5cf on fix/sys-site-search into f6b9f8ff14904b21d593b9301ca7020e56f09afc on master.


Bug Report – Issue with Go-to-Definition and Back feature causing incorrect cursor positioning

Type: Bug
Description:
After using the Go-to-Definition and Back feature in VS Code, the cursor positioning for j, k, and arrow keys (with vim plugin) is inaccurate and sometimes jumps to the beginning of the file. This bug occurs after a certain amount of usage and it is unclear whether it is a problem with the vim plugin or VS Code itself. I have tried installing an older version of the vim plugin, but the issue persists.
Steps to reproduce:

Open a file in VS Code with vim plugin installed
Use the Go-to-Definition and Back feature multiple times
Use j, k, or arrow keys to move the cursor and observe the positioning

Expected result:
The cursor moves according to the intended commands without jumping to the beginning of the file.
Actual result:
The cursor jumps to the beginning of the file or has incorrect positioning.
Workaround:
Currently, restarting VS Code resolves the issue temporarily.
VS Code version: Code 1.76.2 (Universal) (ee2b180d582a7f601fa6ecfdad8d9fd269ab1884, 2023-03-14T17:54:09.061Z)
OS version: Darwin x64 20.6.0
Modes:
Sandboxed: No

System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-4258U CPU @ 2.40GHz (4 x 2400)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmetal: disabled_offmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: disabled_off

Load (avg)
4, 4, 4

Memory (System)
8.00GB (0.13GB free)

Process Argv
--crash-reporter-id 5066f93d-78bc-4ec9-ab1e-d7dcbb27893c

Screen Reader
no

VM
0%

Extensions (19)

Extension
Author (truncated)
Version

vscode-database
baj
2.2.3

gitlens
eam
13.4.0

copilot
Git
1.78.9758

copilot-labs
Git
0.12.791

go
gol
0.38.0

gop
gop
0.7.8

vscode-power-mode
hoo
3.0.2

vscode-language-pack-zh-hans
MS-
1.76.2023030809

remote-containers
ms-
0.282.0

remote-ssh
ms-
0.98.0

remote-ssh-edit
ms-
0.84.0

remote-wsl
ms-
0.76.1

vscode-remote-extensionpack
ms-
0.24.0

cpptools
ms-
1.14.4

sqltools
mtx
0.27.1

sqltools-driver-mysql
mtx
0.5.1

platformio-ide
pla
3.1.1

vim
vsc
1.24.3

markdown-all-in-one
yzh
3.5.0

(1 theme extensions excluded)

A/B Experiments
vsliv368cf:30146710
vsreu685:30147344
python383cf:30185419
vspor879:30202332
vspor708:30202333
vspor363:30204092
vslsvsres303:30308271
pythonvspyl392:30443607
vserr242cf:30382550
pythontb:30283811
vsjup518:30340749
pythonptprofiler:30281270
vshan820:30294714
vstes263:30335439
vscoreces:30445986
pythondataviewer:30285071
vscod805:30301674
binariesv615:30325510
bridge0708:30335490
bridge0723:30353136
cmake_vspar411:30581797
vsaa593cf:30376535
pythonvs932:30410667
cppdebug:30492333
vsclangdf:30486550
c4g48928:30535728
dsvsc012cf:30540253
pynewext54:30681850
azure-dev_surveyonecf:30548226
pyindex848:30662994
nodejswelcome1cf:30587006
282f8724:30602487
pyind779:30671433
f6dab269:30613381
pythonsymbol12:30671437
a9j8j154:30646983
pythonb192:30669360
azdwalk:30687957
pythonms35cf:30686773

@coolbit-in Please check that this isn't an issue with the vim-extension. So, please try built-in navigation commands and if those work please file an issue against vim

Thank you. I have tried many ways to avoid this problem, but in the end, I
had to stop using the system's 'go to definition' and 'back' and instead
use(or remap) the vim-extension's 'gd' and 'ctrl+o' for navigation. It
seems to be working fine now, and it appears to be an issue of the
vim-extension.
Johannes Rieken @.***> 于2023年3月20日周一 15:50写道：

@coolbit-in https://github.com/coolbit-in Please check that this isn't
an issue with the vim-extension. So, please try built-in navigation
commands and if those work please file an issue against vim
—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/vscode/issues/177598#issuecomment-1475762742,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAJZDUSGMI2PYKYIU25DCKDW5AD4TANCNFSM6AAAAAAWAATPZM
.
You are receiving this because you were mentioned.Message ID:
@.***>


Add installation instructions for vim-plug

I used vim-plug to install this plugin. It's much easier to use a plugin manager, lowers the barrier for entry :)

HI, sorry for the delay. I've made the changes.


How to specify the port on which docker container should start in LambdaBackend

Hello, I am using moto version 4.1.4. I am trying to run Lambda function with docker image mlupin/docker-lambda. When I call invoke on mocked lambda_client the container begins to start up, but immediately shuts down with error: "listen tcp :9001: bind: address already in use". For sure this address is already in use, and I want this container to start on another port. But I have not found any option to specify it.
I looked inside this function:
https://github.com/getmoto/moto/blob/0e58d3996bbcc2cd9743303d40e3ead425a6d266/moto/awslambda/models.py#L706
No port passing.
Am i missing something?

It looks like mLupin provides two environment variables that you can use to configure the port:
DOCKER_LAMBDA_API_PORT and DOCKER_LAMBDA_RUNTIME_PORT
See https://hub.docker.com/r/mlupin/docker-lambda#environment-variables
Does that help?

Well, I solved the problem by changing MOTO_DOCKER_NETWORK_MODE from host to bridge. Container starts and works properly, but I don't know on what port :) DOCKER_LAMBDA_RUNTIME_PORT set to 6000, but it does not affect container's port, as I set this port on other running container.
Anyway, initial problem is solved.

Happy to hear that solves it.
I'll close this ticket then, but let us know if you run into any other issues.


Ignore incompatibly annotated var args from Kotlin code.

See #720 for a detailed explanation.
Long story short:

kotlinc will add @org.jetbrains.annotations.NotNull as a declaration annotation for any argument that is non-null, which we pick up from jars when running with AcknowledgeRestrictiveAnnotations=true.
Unfortunately, it will mark code such as open fun w(vararg args: Any?) as having @NotNull args (meaning the array itself).
This is indistinguishable at the bytecode level from Java code such as  w(@NotNull Object... args), which we believe should be interpreted as marking the elements of args as being @NotNull.
This PR hacks RestrictiveAnnotationHandler to skip @org.jetbrains.annotations.NotNull on var args only.

Additionally, our basic handling of var args is pretty broken. I went over our test cases and commented where I think our current behavior is different from the desired behavior as documented in #720 and #674. Foregoing fixing it for now, as I am worried about the breaking change and I think we want to avoid changing that before 0.10.9.

Pull Request Test Coverage Report for Build #1041

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.009%) to 93.024%

Totals

Change from base Build #1040:
0.009%

Covered Lines:
5281

Relevant Lines:
5677

💛  - Coveralls


Repeat after search does not work

Maybe I misunderstand the documentation:

Pressing <enter> (opts.special_keys.repeat) after invoking any of Leap's motions searches with the previous input.

So I would expect I can do something like this:

sab to highlight all ab
x to jump to the ab labelled with x
<enter> to repeat the search for ab

But this does not work. Enter simply behaves as normal.
Here's my config:
require'leap'.set_default_keymaps()
require'leap'.setup {

  case_insensitive = true,
  safe_labels = {},
  labels = {
    "f", "j", "d", "k", "a", "l", "ö", "r", "t", "u", "e", "i", "v", "h", "c", ",", "n",
    "w", "o", "x", "y", ",", "q", "p", "t", "b", "z", ".", "-", "+", "ä"
  },

  special_keys = {
    repeat_search = '<enter>',
    next_match    = '<enter>',
    prev_match    = '<tab>',
    next_group    = '<space>',
    prev_group    = '<tab>',
    eol           = '<space>',
  },
}

What I meant by "after invoking" is s/S<enter>. If you're interested in it, here is a hack to use <enter> and, for example, <shift-enter> like ; and , (so that they can start a repeated motion in themselves, and also continue traversing afterwards, if pressing them again):
    function set_leap_repeat_keys(repeat_key, revert_key)
      local spec_keys = require('leap').opts.special_keys

      local function switch_next_prev()
        local temp = spec_keys['next_match']
        spec_keys['next_match'] = spec_keys['prev_match']
        -- Note: I'm thinking about removing `repeat_search`, and merging it with `next_match`.
        spec_keys['repeat_search'] = spec_keys['prev_match']
        spec_keys['prev_match'] = temp
      end

      spec_keys['repeat_search'] = repeat_key
      spec_keys['next_match'] = repeat_key
      spec_keys['prev_match'] = revert_key

      vim.keymap.set({'n', 'x', 'o'}, repeat_key,
                     '<Plug>(leap-forward)' .. repeat_key)

      vim.keymap.set({'n', 'x', 'o'}, revert_key, function ()
        vim.g.reverse_leap = true
        return ('<Plug>(leap-backward)' .. revert_key)
      end, { expr = true })

      vim.api.nvim_create_augroup('LeapCustom', {})

      vim.api.nvim_create_autocmd('User',
      { pattern = 'LeapEnter', group = 'LeapCustom',
        callback = function ()
          if vim.g.reverse_leap then
            switch_next_prev()
          end
        end, })

      vim.api.nvim_create_autocmd('User',
      { pattern = 'LeapLeave', group = 'LeapCustom',
        callback = function ()
          if vim.g.reverse_leap then
            switch_next_prev()
            vim.g.reverse_leap = nil
          end
        end, })
    end

    -- Use it like:
    set_leap_repeat_keys('<cr>', '<s-cr>')

What I meant by "after invoking" is s/S. Thanks for raising this, I might reword that part to be less ambiguous.

Ah, right, now I see. I think the wording is actually fine. But you could add the same sequence description that you have on other places (s|S char1 char2? (<space>|<tab>)* label?). In this case s|S <enter> (<enter>)* should do it.


Documentation Cleanup

Should link Hoogle, Hayoo, Wiki.
Also one good library reference for stdlibs -- probably platform module docs or at least base docs?
Should eliminate new/old book division, and ensure all books are linking latest versions.
Should probably link more course materials/videos directly.

Why do you think that the separation of old/new books is bad? Having read (or at least skimmed through both Programming in Haskell and Haskell - The Craft of Functional Programming I have to say that they both felt a little dated, at least compared to LYAH and RWH. That's not to say that they are bad books, but I probably wouldn't recommend them to a beginner.
Maybe removing the separation but adding a release date or something of that sort would be the best solution?

Well as a comment explained on reddit, the old/new isn't really true because of new editions of books :-)
"What I was irritated by was the "blessed" top section which included Real World Haskell (2007) and Learn You A Haskell (2011) and the not blessed "older" section which included Hutton's book (2007) and Simon Thompson's (2011)."
That post suggested Hudak's classic HSoE, which is indeed old. The Haskell School of Music, by Hudak, though not final, is much more recent and perhaps we could also link that:
http://haskell.cs.yale.edu/?post_type=publication&p=112

now in pull request #83


building example claims missing implementations

After cloning the flutter-quill example and trying to build examples/lib/main.dart, I get
Launching lib/main.dart on Chrome in debug mode...
Waiting for connection from debug service on Chrome...
../lib/src/widgets/raw_editor.dart:100:7: Error: The non-abstract class 'RawEditorState' is missing implementations for these members:

TextSelectionDelegate.copySelection
TextSelectionDelegate.cutSelection
TextSelectionDelegate.pasteText
TextSelectionDelegate.selectAll
Try to either
provide an implementation,
inherit an implementation from a superclass or mixin,
mark the class as abstract, or
provide a 'noSuchMethod' implementation.

Where would these supposedly implementations be?

Please Submit a PR


Whether the container will be destroyed

Is your feature request related to a problem? Please describe.
Containers are created every scan.
When there are a lot of files to be scanned, containers are frequently created and deleted.
I think this is a waste of time.
Describe the solution you'd like
Can I keep the malice-av container like a c/s server to avoid frequent container creation?
Is this feasible?
Will scanning files destroy the container?

The initial idea was you are scanning dangerous malware so you would want to throw away the container after every scan. I'm not sure this is true but I had heard that VirusTotals scanners are all VMs the get reverted after a scan to prevent infection. With Docker the containers are all sharing a kernel so if the malware can attack the antivirus and infect the kernel then re-creating the container doesn't offer any extra protection, but it is still better than nothing.

But I agree, if your main concern is speed then keeping the containers around longer would be better. I've designed each AV engine to be stand alone which means you can run them as little micro-services and submit to them via http post. You would have to write an engine to automate submission and storing the results.

I will also add that when have have time to start my complete overhaul of the official Malice engine... some day.

Thank you for your reply, I will probably keep these containers running all the time, and then open a service to send malicious files to them。
Emm,where do you plan to modify?


notebook: fix tests on darwin, 6.1.3 -> 6.1.4

Motivation for this change
The last commit c379aa9f8e4d1d43b7cd1d549a49b8f09286fe91 removed two excluded tests on darwin. Unfortunately they still fail on darwin:
File "/nix/store/hzvpbjbpschymag875hjzpsy2vrvrd9l-python3.8-tornado-6.0.4/lib/python3.8/site-packages/tornado/web.py", line 1703, in _execute
    result = await result
  File "/nix/store/hzvpbjbpschymag875hjzpsy2vrvrd9l-python3.8-tornado-6.0.4/lib/python3.8/site-packages/tornado/gen.py", line 209, in wrapper
    yielded = next(result)
  File "/private/tmp/nix-build-python3.8-notebook-6.1.4.drv-0/notebook-6.1.4/notebook/services/contents/handlers.py", line 237, in delete
    yield maybe_future(cm.delete(path))
  File "/private/tmp/nix-build-python3.8-notebook-6.1.4.drv-0/notebook-6.1.4/notebook/services/contents/manager.py", line 279, in delete
    self.delete_file(path)
  File "/private/tmp/nix-build-python3.8-notebook-6.1.4.drv-0/notebook-6.1.4/notebook/services/contents/filemanager.py", line 546, in delete_file
    send2trash(os_path)
  File "/nix/store/jf45dbr7f1z7n01k1snqljlfbqw21sm8-python3.8-Send2Trash-1.5.0/lib/python3.8/site-packages/send2trash/plat_osx.py", line 48, in send2trash
    check_op_result(op_result)
  File "/nix/store/jf45dbr7f1z7n01k1snqljlfbqw21sm8-python3.8-Send2Trash-1.5.0/lib/python3.8/site-packages/send2trash/plat_osx.py", line 37, in check_op_result
    raise OSError(msg)
OSError: Insufficient access privileges for operation

I don't know what is causing it. It looks like nix cannot delete a file in /private/tmp on darwin due to permission issues. These permission issues seem to pop up since MacOs 10.15 Catalina.
@NixOS/nixos-release-managers For now I just excluded the tests again but if anyone has a better idea I am open for suggestions.
ZHF: #97479
System info
- system: `"x86_64-darwin"`
 - host os: `Darwin 19.6.0, macOS 10.15.6`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.3.6`
 - channels(tricktron): `""`
 - channels(root): `"nixpkgs-20.03pre197736.91d5b3f07d2"`
 - nixpkgs: `/Users/tricktron/github/my-forks/nixpkgs`

Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[x] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@jonringer What is the difference between pytestCheckHook and just pytest?

Fixes the build for me on macos 10.14

@jonringer What is the difference between pytestCheckHook and just pytest?

https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks/python.section.md#using-pytestcheckhook

@jonringer Thanks for the link.

@worldofpeace I fixed the editorconfig test


Error putting S3 policy: MalformedPolicy: Missing required field Principal cannot be empty!

Getting this error trying to create a static web site.
Error: Error putting S3 policy: MalformedPolicy: Missing required field Principal cannot be empty!
 	status code: 400, request id: [redacted], host id: [redacted]

   with module.mainsite.module.main_static_site.module.s3_logs_bucket.aws_s3_bucket_policy.logs_access_policy,
   on .terraform/modules/mainsite.main_static_site.s3_logs_bucket/main.tf line 70, in resource "aws_s3_bucket_policy" "logs_access_policy":
   70: resource "aws_s3_bucket_policy" "logs_access_policy" {

This is the terraform code taht produces this issue:
module "main_static_site" {
  source  = "cn-terraform/s3-static-website/aws"
  version = "0.0.17"
  name_prefix=var.deployment_name
  website_domain_name=var.main_site_domain_name
  create_route53_hosted_zone = false
  route53_hosted_zone_id = aws_route53_zone.main.zone_id
  providers = {
    aws.main = aws
    aws.acm_provider = aws
  }
}

Where the following applies:
* var.main_deployment_name = "production"
* var.main_site_domain_name = "mydomain.com"

I'm creating a hosted zone manually and passing it in.

The line in the associated module shows this on line 70:

```hcl
resource "aws_s3_bucket_policy" "logs_access_policy" {
  bucket = aws_s3_bucket.logs.id
  policy = data.aws_iam_policy_document.logs_access_policy_document.json
}

I'm not sure which field is missing, but this is the result from AWS. Is there a known workaround for this?

Also my Terraform version
Terraform v1.2.3
on linux_amd64

Your version of Terraform is out of date! The latest version
is 1.2.6. You can update by downloading from https://www.terraform.io/downloads.html

I'm going to try updating Terraform, as well.

Seems like this would be a better place for the issue.
https://github.com/cn-terraform/terraform-aws-logs-s3-bucket/issues/4


Can't load or assign any presets from library

Can't load into the scene or assign to selected any Material preset in blender 2.79 release
on centos 7 with Renderman 21.5

This is caused by the hyphen in the addon filename. I unzipped the addon, renamed the internal folder rendermanforblender_21_5 getting rid of the hyphen, and rezipped it. I made sure the zipfile didnt have a hyphen either for good measure, and then removed and readded the modified addon. It fixed my problem on both windows and linux. I'd recommend removing the hyphen from the release zip files to clear this up.

Thank jzazbert, that fixed it for me.

Yup, this renaming solution works jzazbert! Thanks.


Account for empty yaml file in update-yaml.py

If reading a yaml file with no entries, yaml.safe_read() produces a
NoneType object. This commit fixes the issue by re-ordering to ensure
we convert to NoneType before the code to handle NoneType is executed.
Connects #950
Co-Authored-By<EMAIL_ADDRESS>(cherry picked from commit a945a31550509078c867914114554fe7a29e2381)

RPC-AIO-Liberty-Upgrade-PR: Fail

recheck_upgrade

RPC-AIO-Liberty-Upgrade-PR: Fail

recheck_upgrade

👍

RPC-AIO-Liberty-Upgrade-PR: Fail

recheck_upgrade
10:32:08 NOTIFIED: [horizon_extensions | Restart apache2] ******************************
10:32:11 changed: [jrpcaioiad-13a_horizon_container-1d8c3eb8]
10:32:29 failed: [jrpcaioiad-13a_horizon_container-8e2a735a] => {"failed": true}
10:32:29 msg: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
10:32:29 (98)Address already in use: AH00072: make_sock: could not bind to address <IP_ADDRESS>:80
10:32:29 no listening sockets available, shutting down
10:32:29 AH00015: Unable to open logs
10:32:29

RPC-AIO-Liberty-Upgrade-PR: Fail

recheck_upgrade -- start mysql issue

RPC-AIO-Liberty-Upgrade-PR: Fail

recheck_upgrade

RPC-AIO-Liberty-Upgrade-PR: Fail

👍


why don't you use dhash

it will safe if you can directly provide hash data to a bot and set on trigger when massage a wild Pokemon appears it will extract hash and matches it within a database.

Tried it but couldn't make it to work , maybe if you think you can help and contribute feel free to dm me


decouple ignite nodes deployment from other runtimes

As per https://github.com/srl-labs/containerlab/pull/482/files#r664336872 that PR uses a sequential deployment of nodes if it happens that any of the nodes requires ignite runtime
The proposal is to deploy ignite nodes sequentially, whereas the rest of the nodes will still benefit from the concurrent deployment

I can work on that.

done in #508


Support config params for XT5 and light fixes

feat: Support configs for XT5

Network indicator [LED]
Vibration [XToggleNum]
On/Off/Preview sound and light effects [XT5Select]
On/Off state indicator (color and position) [XT5LightStatusLight]

Also, two fixes:

fix: Fix XT5Light warning [(<class 'custom_components.sonoff.light.XT5Light'>) does not set supported color modes, this will stop working in Home Assistant Core 2025.3
fix: Fix XLightL1 incomplete statement

Hi,
I tried to make the new entities as much reusable as possible, but sure, it can be modified to fit better with the repository. If you give me some clues, I can try to work on it

Specs description are very different.


fix cursor's displayTime

fix cursor's displayTime

Coverage increased (+1.0%) to 69.394% when pulling 1a837067e152bef904c80351451630f84ecb5be4 on zhang19940101:master into 97d94b6ff247d5ab5b44307f8fa31fcc2a1273fa on katspaugh:master.


Fix regexp for cases when templateUrl line is ending by space character

Seems like previous regexep didn't parse templateUrl line which ending by space character. resolve #50

Codecov Report

Merging #52 into master will not impact coverage.

@@           Coverage Diff           @@
##           master      #52   +/-   ##
=======================================
  Coverage   96.42%   96.42%
=======================================
  Files           1        1
  Lines          28       28
  Branches        5        5
=======================================
  Hits           27       27
  Misses          1        1

Impacted Files
Coverage Δ

index.js
96.42% <100%> (ø)
:white_check_mark:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update dc5de16...473be96. Read the comment docs.

Thank you for tests also. Much appreciated. Am surprised how many different test cases we are coming across.

@TheLarkInn Why no move to AST?


Change to commons-lang dependency to commons-lang3 to be consistent with Spark

Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

[ ] Make sure the PR title is formatted like:
[BEAM-<Jira issue #>] Description of pull request
[x] Make sure tests pass via mvn clean verify. (Even better, enable
Travis-CI on your fork and ensure the whole test matrix passes).
[ ] Replace <Jira issue #> in the title with the actual Jira issue
number, if there is one.
[ ] If this contribution is large, please file an Apache
Individual Contributor License Agreement.

R: @aviemzur

LGTM. Need to make sure that if we change commons-lang3 version in Beam parent in the future it will be done with care so that this doesn't break Spark in cluster mode.

https://builds.apache.org/view/Beam/job/beam_PreCommit_Java_MavenInstall/10091/

Build passed ok so self-merging it.


Global component for Drag and drop and delete option for the blocs of a section

[ ] We need a global component that will include the Grad and drop option and the Delete option for any section that has blocs, container that can be added, this should be there systematically in this case.
The icons must be the same as the one we are using for the Sections

Acceptance testing

[ ] Any section including containers, blocs must have for each blocs the component that includes option to drag and drop or delete the bloc or the container
[ ] Of course Regarding what I have configured in my section it should reflect on the site

This is a duplicate of issue https://github.com/Geeks-Solutions/nuxt-sections/issues/34


aync / await

I've been thinking about it all morning, and I think that there's a way to map async / await semantics onto  new Duktape.Thread().resume() /  Duktape.Thread.yield(). They have similar error-throwing behavior, and don't have the weird .next() interface that generators have.

You need one additional piece of puzzle compared to generators: Promise.  An async function returns a promise; await basically just says, "when this promise is fulfilled, resume(me)".  So it's kind of like a yield and a (deferred) resume at the same time.

@wmhilton You're right, Duktape threads map closely to GeneratorFunctions. The plan forward is to see if Duktape Threads could be made a superset of GeneratorFunctions, and then figure out what to do with Promises, async, and await. Ideally as much as Duktape customness would go away, but still the free nature of Duktape coroutines would be preserved at least for code desiring that.

@fatcerberus Good catch - for some reason I thought Duktape had Promises already. If one calls an async function without using await then it does return a Promise. And I suppose that would be a highly desirable implementation detail, if only because Promises can be composed/nested elegantly. (Although I've had trouble composing the error handling elegantly.)
I've read the thread on generators... I'm still thinking it might be easier to implement the other way around: make Promises + async/await first class constructs, and then implement GeneratorFunctions's yield using async/await. But I could be smoking crack! I need to do some more experimenting with Duktape.Thread first. I'm still extremely new to duktape.
By the way @svaarala ... how do you do it?! The incredible documentation, the number of features... this is such a huge project!

It's actually already possible to polyfill generator functions using Duktape threads, see: https://github.com/svaarala/duktape/issues/1101#issuecomment-264230874
There are a few minor differences in Duktape behavior compared to real ES generators that make this polyfill not 100%, but it comes pretty close.

@wmhilton Hmm, honestly I'd need to experiment a bit to be able to tell what approach works best. Working through GeneratorFunction would make sense from an incremental development point of view, but native Promise support (as opposed to using a library) is also on the wish list of many users so maybe Promises could come first.

By the way @svaarala ... how do you do it?! The incredible documentation, the number of features... this is such a huge project!

Thank you :) I'm just very stubborn ;)

I'm still thinking it might be easier to implement the other way around: make Promises + async/await first class constructs, and then implement GeneratorFunctions's yield using async/await.

That would be putting the cart before the horse IMO.  async/await is described in many sources as being built on top of generators and Promise, so those are the lower-level constructs.  async/await only seems like a lower-level abstraction because the syntax very deftly hides the underlying complexity.

async/await is described in many sources as being built on top of generators and Promise

Just because generators landed in ECMAScript first doesn't necessarily make them a prerequisite. The spec itself uses the phrase "directly building upon control flow structures parallel to those of generators, and using promises for the return type" which I interpret as Promises are absolutely necessary but not generators. Generators aren't ever mentioned again in the spec after that. :)
I know the current Babel implementation implements async/await by translating it into generator primitives, but I think the opposite - implement generators using async/await primitives - is possible. I'm not clear-headed enough to sketch out a proof yet... just more of a gut intuition.

async/await only seems like a lower-level abstraction because the syntax very deftly hides the underlying complexity.

Well, I will find out eventually 😁

I know the current Babel implementation implements async/await by translating it into generator primitives,

As does TypeScript (when using --downlevelIteration, without it TS won't transpile them at all).  IMO this seems like the more sane way to go about it, since await conceptually does:
await some_promise;
// in other words:
// some_promise.then(resumeThisGenerator);
// yield;

This way of thinking about async/await also feels like a natural way to go about implementing it to me, but perhaps you're right after all.  Like you say we'll find out eventually. :)
I guess when it comes down to it, both generators and async/await are special cases of coroutines.  So in fact these are sibling concepts, rather than one being a subtype of the other.
I'll have to think about this some more myself, async/await is a feature I'd really love to see in Duktape, right up there with arrow functions.

@svaarala Thinking about this now, assuming a Promise polyfill is provided, could one emulate await by:
// await prom;
prom.then(Duktape.Thread.resume.bind(null, thisThread));
Duktape.Thread.yield();

Or would that cause unforeseen issues (i.e. resuming a thread from the job queue).

There's not much chatter here. Is async/await support planned for an upcoming version?

@svaarala Any update?


Explorer styling

Description
NOT FOR MERGING
Linked issue
Re-skinning the explorer, will be rolled into the target branche's PR against release/1.3.0
Front page:

Still need to fix the logo

Epoch view

Slot view

Need to fix the summary view at the bottom

@rvl could you have a glance over this when you get a minute. Some of it will have to be backed out (localhost == testnet for example) and I've lost some of the original styling somehow (the logo) but it's proven fairly easy to make these big changes.

@boothead Is this PR still relevant?


Changes to Add new office page

When admin tries to add a new office, now it only requires a name.
This PR also removes the validation on Office to have at least one OfficeJurisdiction.
To prevent staff creating applications and then not being able to progress through application details, the Start now button only appears when there is at least 1 jurisdiction. Otherwise there's a message to contact a manager.

Looks OK

Looks fine, :+1:


dev(narugo): fix bug about sourceforge

Codecov Report
Patch and project coverage have no change.

Comparison is base (7a4db63) 98.08% compared to head (89540ed) 98.08%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@           Coverage Diff           @@
##             main       #5   +/-   ##
=======================================
  Coverage   98.08%   98.08%
=======================================
  Files          20       20
  Lines         834      834
=======================================
  Hits          818      818
  Misses         16       16

Flag
Coverage Δ

unittests
98.08% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

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


no catalogue available

there is no catalogue page available on clicking the button
would like to add one
please assign under gssoc'24

Hi @kairveeehh, Due to Mongo DB connection time, catalogue takes approx 30-50 sec of time to appear. Try refreshing the page and check again after the specified time. By the way thanks for the note. If you can reduce the time, let me know here. ( I think concept of pipelining will be used )


Question: encrypting a file before storing it in the db

Hi,
I'd like to know if the following scenario is manageable with CollectionFS.
I'd like to let the user upload a file. The file should be encrypted with AES256 before being written to mongo.
Of course, that same file should be decrypted before being passed back to the client when downloading it.
Is this achievable with CollectionFS? Can you point me to a similar example, if any?
Thanks in advance!

I realize this is an old thread, but does the transform work on the client yet?  Was there any plan to do it?  I've been working on an encryption library for all things Meteor.  The focus is on encrypting client-side prior to uploading.  If I read the docs correctly, this is not currently supported using built-in CollectionFS hooks?


remove dup def for _log funs, fixing #1768

Summary:
Remove duplicate definition of propto=false version of _log user-defined functions when there is a forward declaration.
Intended Effect:
Allow recursive density definitions.
How to Verify:
There is a new model test that passes now and didn't pass before.
Side Effects:
None.
Documentation:
Behavior now matches existing doc.
Reviewer Suggestions:
Anyone.

Thanks!


Sort docker and git credentials

Proposed Changes

If build uses secret that has multiple annotations then they are sorted alphabetically
Reduces random picking of key.

/assign @ImJasonH
Let me know if I addressed your concern correctly.

@ImJasonH  : Addressed your comments


Add session for Fable.

Hello @MangelMaxime,
Thanks again for agreeing to have a session on Fable with us.
This would be the information listed on the public website.
If you like to see anything changed, don't hesitate to speak up.
Let us know when we can publish this.
Cheers!

Looks great to me.
Great prose 👍

Great prose 👍

Thanks, Jippity and I are quite the team 😊


Feature/new images

I thought staging was running on an Intel linux virtual machine. Changing the docker compose file for Apple silicon development macs could complicate things.

Data truncation/ and reloading to Minio servers works with new images after making a change to user.yaml file

LGTM!


Consider publishing pre-releases

Hi!
I see a few things queuing up at #642 and I'm particularly interested in #637 while we integrate @segment/analytics-next.
I've cloned the repo to test it locally but it would be really helpful to have nightly/alpha/beta/rc tagged versions published to the npm registry before final release, so we don't need to clone & build to start testing new features.
Regardless, thanks for all the efforts.

Thanks for the suggestion, we are tracking this internally.