[ChangelogLinker] improve regexes for guessing the type of change

original regexes contained a few issues (like not matching "delete")
regexes now have common structure
matching whole words only
matching past tenses and present participles

I've noticed an issue in 139f0b8111b81f6e104b71a6c20af7ed10548610, when the new cases were inserted into a wrong place - before the question mark instead of behind it. It started matching "droppe" and stopped matching "delete".
I would suggest using word boundaries (\b), otherwise it would match even a part of a word (and that would mean the past tenses were redundant - eg. drop always matches "dropped").
Also, I would suggest adding present participles as they often appear in PR titles in my experience.
See the original regex for matching removals in action at https://regex101.com/r/uLeG8b/1/ and the suggested one at https://regex101.com/r/uLeG8b/2.

The regexes can be shortened by grouping words with the same suffixes like so:
private const CHANGED_PATTERN = '#\b((chang|improv|renam|decoupl)(e|es|ed|ing)|(bump|(dis)?allow|return)(s|ed|ing)?|now)\b#i';
private const REMOVED_PATTERN = '#\b((remov|delet)(e|es|ed|ing)|drop(s|ped|ping)?)\b#i';

But it may be a bit harder to read, that's why I decided for the longer form.

Hi @PetrHeinz,
thanks for nice and clear PR!
No need to go in such detail in the description.
Could you add tests to make sure this won't happen again and propper words are matched? It helps when regexs are not readable.

Hi @TomasVotruba,
I don't actually have it installed, I was able to do this solely via Github's web UI and test the regexes by themselves via regex101, that's why I didn't bother with tests.
I've tried to add an exhaustive set of all keywords used which required a bit of logic in the provider, hope it's ok. I've also added the 3 phrases from https://regex101.com/r/uLeG8b/2 that were mistreated in https://regex101.com/r/uLeG8b/1. Thanks for having the test class ready to be extended :+1:

There are some fixable coding standards violations, even though the suggested formatting is harder to read imo.
I cannot run the autofix without installing the project locally - can you wrap it up instead of me, please? Thx

Thanks for beautiful extensive tests! I love those messages :D
I can take it from here, no problem.
I'll merge it till Friday


mobile: Fix the Cronvoy error mapping logic and add tests

EnvoyFinalStreamIntel.getResponseFlags() is set from the StreamInfo's response flags as a bitmap. It's possible that multiple filters set their own response flags, so there can end up being more than one response flag in StreamInfo. The previous logic of checking equality instead of checking in the bitmap was incorrect, so this commit fixes it and adds tests for the mapEnvoyMobileErrorToNetError method.

/assign @fredyw

cc @RenjieTang


Start page - text position customisation

Is your feature request related to a problem? Please describe.

Feedback text doesn't not need to sit above the start button as it's a distraction for users.

Describe the solution you'd like

Ability to put text below the 'start' button on a start page
In this case, this copy specifically:

'Feedback on this service

If you have feedback specifically about this digital service, the FCDO welcomes your views.

Email<EMAIL_ADDRESS>
Describe alternatives you've considered

none

Additional context
Screenshot below
![move feedabck text below start button](https://user-images.githubusercontent.com/40992965/142860194-276ea953-7abe-4e6e-b250-b8401ef126a9.png

)

related to #468

See #468 - I think this has been sufficiently resoled by #1203 now.


Explanation on doc.

Hi @dashersw,
I just need more light be shed on this part of the documentation

Note: By default, every Requester will connect to every Responder it
discovers, regardless of the request type. This means, every Responder should
respond to the exact same set of requests, because Requesters will
load-balance requests between all connected Responders regardless of
their capabilities, i.e, whether or not they can handle a given request.

If you have multiple Responders with varying response handlers, you will
experience lost requests. In cote, this separation between responsibilities is
called segmentation, or partitioning. If you wish to segment your requests in
groups, you can use keys. Check out keys for a detailed guide on how
and when to use segmentation.

Also, could you explain more on key, namespace, and environment? When to use each.
Seems to me that key and environment are interchangeable

Hello!

Think of a responder that can handle messages of type A. Think also that you have another responder that can handle messages of type B. Now if you create a requester, and there are no key / namespace / environment configuration involved in this setup, that requester will connect to both of these responders.  So it will load balance every request between these two, and the first responder will get messages of type both A and B. Since it doesn't know what to do with messages of type B, you will see lost requests.

They are semantically the same. However, there are minor differences. A namespace maps directly to socket.io namespaces, therefore it should be used when there are Sockend components involved. This way, you can expose functionality to the frontend. A key is a component configuration, so has to be set per component instance. An environment is mainly passed in as an environment variable or is given as a general config as in require('cote')({ environment: 'test'}). Think of environments as general as your test or prod environments. Keys could be used in a more granular fashion, for example for each domain in DDD; e.g. payment, catalog, cart.

I hope this helps. Let me know if it's still unclear.

What about respondsTo in responders?
And can components in different environments see each other?

respondsTo is used by the Sockend component to detect which messages a responder could handle, so that it can channel those from the frontend. Other than that, it's mostly used for documentation purposes, like API footprints.
Technically, components in different environments see each other through broadcast / multicast (if they also share the same broadcast / multicast address). But they respect the environment / key / namespace configuration and just ignore each other.

Cool... thanks @dashersw for the help.

Similar to respondsTo in Responders, requests: ['randomRequest'] in Requesters are also used for Sockend Components right?

No, actually requests is only for documentation, it's not used anywhere.

Ok. Noted.


chore: prevent major updates of dev deps

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 29.631%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
3671

Relevant Lines:
13032

💛  - Coveralls


Older version of path-to-regexp in Express package.json causing problems with some paths

Running Express 4.17.1, if you define a route like this:
app.get("/(user|u)", ...)
with the intention of matching either /user or /u, then you get this error when the app.get() first executes to register the route:
  return new RegExp(path, flags);
         ^

SyntaxError: Invalid regular expression: /^\/(?(?:([^\/]+?))|u)\/?$/: Invalid group
    at new RegExp (<anonymous>)
    at pathtoRegexp (D:\code\test\temp\node_modules\express\node_modules\path-to-regexp\index.js:128:10)
    at new Layer (D:\code\test\temp\node_modules\express\lib\router\layer.js:45:17)
    at Function.route (D:\code\test\temp\node_modules\express\lib\router\index.js:494:15)
    at Function.app.<computed> [as get] (D:\code\test\temp\node_modules\express\lib\application.js:481:30)
    at Object.<anonymous> (D:\code\test\temp\temp.js:45:5)

The issue occurs in the path-to-regexp module.  But, it appears to be something that has been fixed in more recent versions of path-to-regexp.  Express 4.17.1 has path-to-regexp: 0.1.7 in its package.json, whereas the latest version of path-to-regexp is 6.2.0.  And, when I manually call path-to-regexp("/(user|u)") in this latest version, it does not cause the problem seen above.  In fact, the code that causes the problem above has been completely rewritten in path-to-regexp as it looks nothing like the older version I step through in Express.

Hello, yes, the 4.x line has the newest version of thay dependency that is not a breaking version. You can test out Express with a more up to date dependency: http://expressjs.com/en/guide/migrating-5.html

You can also, in both versions of Express, pass in a regular expression directly instead of a string that is subject to how path-to-regexp works if that helps at all.

I believe in the version of path-to-regexp in 4.x, you are just required to use a named parameter for that syntax: app.get("/:p(user|u)", ...)

Hello, yes, the 4.x line has the newest version of thay dependency that is not a breaking version. You can test out Express with a more up to date dependency: http://expressjs.com/en/guide/migrating-5.html

When I look at the package.json for the 5.x branch, it's still pointing at the old version of path-to-regexp.  I don't see how that version is going to fix anything.  Shouldn't there be an open issue on this somewhere?

When I look at the package.json for the 5.x branch, it's still pointing at the old version of path-to-regexp. I don't see how that version is going to fix anything. Shouldn't there be an open issue on this somewhere?

I'm not sure why that would be, as the latest 5.x of Express has no direct dependency at all on path-to-regexp, so it shouldn't be in the package.json. What is the version field in the package.json you are looking at?

When I look at the package.json for the 5.x branch, it's still pointing at the old version of path-to-regexp. I don't see how that version is going to fix anything. Shouldn't there be an open issue on this somewhere?

I'm not sure why that would be, as the latest 5.x of Express has no direct dependency at all on path-to-regexp, so it shouldn't be in the package.json. What is the version field in the package.json you are looking at?

I deleted my previous comment because I was looking a alpha.5, not alpha.8.

I deleted my previous comment because I was looking a alpha.5, not alpha.8.

Oh, apologies; I am just replying via email.

Also, apologies, I took a look and apparently the updated router is not in alpha 8. PR #4321 is the change and just needs changes to account for the different functionality in the test suite (it is failing in the PR since that contained breaking changes). I'll take a look in to helping that PR along over the weekend.


[Event Request] codeunit 410 "Update Analysis View" - OnUpdateAnalysisViewEntryOnAfterTempAnalysisViewEntryAssignment

Describe the request
procedure UpdateAnalysisViewEntry(UpdAnalysisViewEntryBuffer: Record "Upd Analysis View Entry Buffer")
....
    TempAnalysisViewEntry."Entry No." := UpdAnalysisViewEntryBuffer.EntryNo;

    OnUpdateAnalysisViewEntryOnAfterTempAnalysisViewEntryAssignment(TempAnalysisViewEntry, AnalysisView, GLEntry, UpdAnalysisViewEntryBuffer);

    if TempAnalysisViewEntry.Find() then begin
    ....
end;

[IntegrationEvent(false, false)]
local procedure OnUpdateAnalysisViewEntryOnAfterTempAnalysisViewEntryAssignment(TempAnalysisViewEntry: Record "Analysis View Entry"; var AnalysisView: Record "Analysis View"; var GLEntry: Record "G/L Entry"; var UpdAnalysisViewEntryBuffer: Record "Upd Analysis View Entry Buffer")
begin
end;

Additional context
G/L Account analysis views has a compri value that is not in the dimensions. Besides that, the budget event is present and this one isn't.Internal work item: AB#493772

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 14883.


You need to create a new tag

For your timestamp fix to actually fix the release you need to create a new tag.

Thanks, @icambridge for info. I updated the role and released the new version


Support generic imports (GenericHost/Options DI)

We've had Generic Host for a while now and I've been looking into using vs-mef as DI instead of the inbox implementation, to integrate better with existing codebases which already are MEF based. I've made good progress mapping the builder abstractions and constructing a dynamic vs-mef catalog from ServiceDescriptors during startup, but when I got to the options infrastructure of .NET Core I'm running into the problem that they adopted generic imports, something vs-mef doesn't support yet.
An example for exports added to the builder is here:
services.TryAdd(ServiceDescriptor.Singleton(typeof(IOptions<>), typeof(UnnamedOptionsManager<>)));
services.TryAdd(ServiceDescriptor.Scoped(typeof(IOptionsSnapshot<>), typeof(OptionsManager<>)));
services.TryAdd(ServiceDescriptor.Singleton(typeof(IOptionsMonitor<>), typeof(OptionsMonitor<>)));
services.TryAdd(ServiceDescriptor.Transient(typeof(IOptionsFactory<>), typeof(OptionsFactory<>)));
services.TryAdd(ServiceDescriptor.Singleton(typeof(IOptionsMonitorCache<>), typeof(OptionsCache<>)));

So .NET is creating generic exports, which is fine, vs-mef supports that. However when we look ad e.g. UnnamedOptionsManager<TOptions> we can see its imports:
public UnnamedOptionsManager(IOptionsFactory<TOptions> factory)

i.e. the import depends on the generic parameter, which is something vs-mef does not support because the TypeRef infrastructure has no strategy to deal with it and just throws.
Conceptually I believe it should be fine if a generic export imports another generic export with a matching parameter? So the question is if there is any desire to have this support added to vs-mef.

It's an interesting idea, but we have no plans to support this at this point. Open generic exports are easier to support because the generic type parameter can be ignored as it doesn't impact the composition graph. Generic imports on the other hand require a different representation in the composition for every anticipated type argument. I suppose supporting it is possible, but it's more difficult.
If I assume that System.ComponentModel.Composition's MEF engine supported this, I'd argue it's easier because they don't keep a static graph -- theirs is dynamic. They only figure out what a MEF part needs when it's activated. And they do it again the next time it's activated. It's why that MEF engine is so slow.
VS-MEF is much faster at runtime because we compute the graph once and reuse it. But that means any dynamic element is unsupported.
I believe a dynamic component wouldn't be necessary to support this, now that I think about it. But I don't see us funding the work anytime in the future unless it became critical for a VS feature.

If I assume that System.ComponentModel.Composition's MEF engine supported this [...]

I actually didn't consider checking System.ComponentModel.Composition but a quick test with mocked exports/imports to replicate the scenario seems to indicate it works there.

I believe a dynamic component wouldn't be necessary to support this, now that I think about it.

I don't believe this is any more dynamic than the existing open generic exports and this is mostly a question how to represent these dependencies. (That doesn't mean its easy, its probably a significant challenge, generics unfortunately aren't trivial.)

[...] we have no plans to support this at this point [...] I don't see us funding the work anytime in the future unless it became critical for a VS feature.

I assume that also means contributions of this kind are currently not desired either, as they likely will cause additional effort required to review and align with design of the library?
This was basically my main question, whether there's any interest in exploring how to add this feature, not necessarily asking you to provide it. I understand that it may be disruptive to the workings of the library and require effort for feedback/communications, so if this kind of high effort contributions are currently not desired I perfectly understand. Just wanted to ask before I invest any work myself, so far I have just identified the problem and no idea how a solution would look like.

I think we'd take the feature if you offered a pull request that met the requirements we have for all our new features. Most importantly:

No backward breaking changes.
Thorough automated tested through the testing framework we already have in place.

I bet we even have a test or two for this feature already, but disabled for the VS-MEF engine. So part of the work would be to look through our VS-MEF disabled tests to see if any apply that should be enabled. That would be easier than writing new tests, though depending on the coverage these offered, additional tests may (probably will) be needed.
Thanks for thinking about it!


Rupture + Stylus + Lost (using cycles)

I have a problem using Rupture and Lost only when i use cycles. Its working if i use @media but when i use rupture its not working correctly. If i use Rupture without cycles its working well. Could be nice to have your own rupture with lost ;)

@maxisix Can you send me the code that causes this error?

Rupture + Stylus + Lost works totally fine for me. The newer version of Lost Grid doesn't even use cycles anymore, it just does it automatically. If you aren't too heavily invested, I recommend just updating to the newest version.

@flip4bytes It kind of uses $cycle still - it just picks the denominator by default.

Closing this as I can't reproduce it. @maxisix Send me code and I'll help you figure it out.

Found the problem it was because of gulp-group-css-media-queries ! :/

Ah I see. Weird. Thanks for letting us know. =)


feat: eraser metrics

What this PR does / why we need it:
Which issue(s) this PR fixes (optional, using fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when the PR gets merged):
Fixes #
Special notes for your reviewer:

Codecov Report

Merging #420 (d9b77d1) into main (e0344df) will decrease coverage by 1.56%.
The diff coverage is 5.79%.

@@            Coverage Diff             @@
##             main     #420      +/-   ##
==========================================
- Coverage   21.41%   19.85%   -1.57%
==========================================
  Files          10       10
  Lines         621      690      +69
==========================================
+ Hits          133      137       +4
- Misses        476      541      +65
  Partials       12       12

Flag
Coverage Δ

unittests
19.85% <5.79%> (-1.57%)
:arrow_down:

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

Impacted Files
Coverage Δ

pkg/eraser/eraser.go
0.00% <0.00%> (ø)

pkg/scanners/trivy/trivy.go
0.00% <0.00%> (ø)

pkg/eraser/helpers.go
70.37% <66.66%> (-0.30%)
:arrow_down:

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

@pmengelbert please review again when you get a chance please

There's a few small changes left, but otherwise LGTM. Should be able to merge this today


New Very Good CLI Release - 0.20.1

Description
Need to create a new release for Very Good CLI to get some bug fixes released.
Requirements

New release is created and tagged in the repo
New release is pushed out via Pub.dev
Confirm that our release documentation is actually up to date and useable. If not make the needed changes.

This seems to have been closed by https://github.com/VeryGoodOpenSource/very_good_cli/issues/1035.


WIP: Add some tests and coverage to CI

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@2b389d3). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #23   +/-   ##
=========================================
  Coverage          ?   16.05%
=========================================
  Files             ?       23
  Lines             ?     1570
  Branches          ?        0
=========================================
  Hits              ?      252
  Misses            ?     1318
  Partials          ?        0

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 2b389d3...f59b1fa. Read the comment docs.

@Martchus fixtures are based on real data, and pretty simple :D
input - what bot gets from various api
output  - excepted results
no need any excessive tests setup/etc because bot itself is simple stateless app which acts basically like filter -> get data from some sources , modify and then forward to target

I'm wondering whether we really need that much fixtures.

Using real data and known valid results would be much faster (and maybe also safer) solution than trying to create a perfect handpicked set of minimal fixtures. Not mentioning the complexity if you want to cover every possible combination of states. On the other, I am not saying it wouldn't be nice to have some "minimal working example".
I think I can live with the proposed changes.

The idea wasn't to craft some artificial fixtures but to strip the production data down to what's really needed. Likely many arrays in that JSON document could be way shorter without losing test coverage.


Add verbosity flag

Current coverage is 83.19%

Merging #54 into master will increase coverage by +0.11% as of 97c2dec

@@            master     #54   diff @@
======================================
  Files            6       6
  Stmts          733     738     +5
  Branches         0       0
  Methods          0       0
======================================
+ Hit            609     614     +5
  Partial          0       0
  Missed         124     124

Review entire Coverage Diff as of 97c2dec

Powered by Codecov. Updated on successful CI builds.


[New Feature]: Removal PRs should skip the Validation Pipeline

Description of the new feature/enhancement
A removal PR is where a manifest version is removed. To contrast with an addition PR, which adds a manifest version.
Example of a removal PR: https://github.com/microsoft/winget-pkgs/pull/138377/files
This would both conserve pipeline resources and also greatly reduce the time that removal PRs spend in pipeline. Removing a PR should skip most checks:

No need to verify URL (static scan).
No need to verify the manifest.
No need to install and verify installer operation and application execution.
No need to install and scan (dynamic scan).

Proposed technical implementation details (optional)

Have some mechanism for detecting removal PRs.

One method is using the plus/minus ("+" or "-") which GitHub prepends to raw diffs:

If all of a file's lines start with minus "-", then the file is being removed.
If all files in the PR are being removed, then it's a removal PR.

Another method is to detect based on PR title. This is easier to implement but much more error-prone.
Other methods might exist. (Possibly in API calls)

Have removal PRs be exempted from pipeline checks which are unnecessary for removal.

No need to verify URL (static scan).
No need to verify the manifest.
No need to install and verify installer operation and application execution.
No need to install and scan (dynamic scan).

If I'm not mistaken, this is the current behavior is it not?
Before we had the Internal-Error-Manifest and the Sequence found no elements errors, removal PRs would only take around 5 minutes to verify and get the Validation-Completed label. I'm assuming none of these complex steps used to take place, has this changed recently?

[Policy] Area-Validation-Pipelines

The validation pipeline could add new workflow specialized for removal PRs. This pipeline only runs when it is removal PRs and used to determine whether add labels like https://github.com/microsoft/winget-pkgs/labels/Last-Version-Remaining


Static Chat Server

https://github.com/Firebottle/Beam-Chat-Overlay/blob/master/chat-overlays/chat/js/main.js#L43
Please use the /chats/{chat} endpoint to choose a chat server.
Our chat servers might change at any time, so connecting via a static url is not good.

Fixed!


no wpa2 key upload when installing from http://jmmcatee.github.io/cracklord/#install

Hello again,
i quick installed from http://jmmcatee.github.io/cracklord/#install using the binaries, but it seams there is no way to upload .hccapx, am i right? Of course i installed hashcat v3 and changed the hashcat3.conf.

I believe this should work actually. Do you not see a check box that says "Use a file to upload hashes"? If you check that box, it will give you a file upload option in the Hashes form section.

There is no Do you not see a check box that says "Use a file to upload hashes"? Field here when installing from http://jmmcatee.github.io/cracklord/#install  :(

installed from  http://jmmcatee.github.io/cracklord/#install
no checkbox shown.

This should be fixed.


Bug 1831

Hello!

Type: bug fix
Link to issue: #1831

In raising this pull request, I confirm the following:

[x] I have checked that another pull request for this purpose does not exist
[x] I wrote some tests for this PR
[ ] I updated the CHANGELOG

Small description of change:
Thanks

@sergeyklay Please help check

Man I wish that I knew how to do all the Z_ stuff.

@dschissler
Can see
https://docs.zephir-lang.com/0.11/en/welcome
and
https://docs.zephir-lang.com/0.11/en/installation
Install
git clone https://github.com/phalcon/php-zephir-parser.git
cd php-zephir-parser
phpize
./configure
make
sudo make install

git clone https://github.com/phalcon/zephir
cd zephir
composer install

@dreamsxin I was making a fluff comment that I want to learn how to write the C some day.  I already do quite a lot of .zep programming.  I'm learning Rust now so I'll come back around to C someday.

You can see http://php.net/manual/en/internals2.ze1.zendapi.php
And Google search.

Thanks, that is a good one.  There is also a good PHP extension in Rust article somewhere.  I think that Rust is a good fit because I can use it for WASM, PHP extensions and it will be growing a lot over the next several years.  I will learn PHP extensions using Rust and then later I should be able to read all of the C code for Zephir and that only the boilerplate will be different.


Expired metadata and invalid port

Trying out resinstack and getting this error
Metadata for targets/riyaz expired
and
 invalid port ":18.06.0-ce-dind" after host
make img/nomad.qcow2
linuxkit build -format qcow2-bios -name nomad -dir img/ components/kernel.yml components/sysctl.yml components/dhcp.yml components/metadata.yml components/emissary.yml components/acpi.yml components/persist-disk.yml components/docker.yml components/nomad/nomad.yml components/nomad/server.yml components/coredns/coredns.yml components/consul/consul.yml
Building LinuxKit image mkimage to generate output formats
Extract kernel image: linuxkit/kernel:4.9.39
WARN[0005] targets metadata is nearing expiry, you should re-sign the role metadata
WARN[0005] targets/justin metadata is nearing expiry, you should re-sign the role metadata
Pull image: docker.io/linuxkit/kernel:4.9.39@sha256:a409547705b00f4dbc6ba09ad67ae3d2c87e5a7a8d8955e310b834b2220b77b0
Add init containers:
Process init image: linuxkit/init:v0.6
WARN[0017] targets metadata is nearing expiry, you should re-sign the role metadata
Pull image: docker.io/linuxkit/init:v0.6@sha256:33054954194d72f8fb1e446dd725a837ed73ccc091b3c0b6a4fdfa32b117f9b8
Process init image: linuxkit/runc:v0.6
ERRO[0024] Metadata for targets/riyaz expired
WARN[0024] Error getting targets/riyaz: targets/riyaz expired at Mon May 25 15:32:34 -0700 2020
WARN[0024] targets/justin metadata is nearing expiry, you should re-sign the role metadata
WARN[0024] targets metadata is nearing expiry, you should re-sign the role metadata
Pull image: docker.io/linuxkit/runc:v0.6@sha256:582dd80f93b457ee9aeec7d67c18f008d2de9a1929fc5b461acbbb9d47d4d2be
Add onboot containers:
  Create OCI config for linuxkit/mkimage:v0.6
ERRO[0030] Metadata for targets/riyaz expired
WARN[0030] Error getting targets/riyaz: targets/riyaz expired at Mon May 25 14:47:53 -0700 2020
WARN[0030] targets/ian metadata is nearing expiry, you should re-sign the role metadata
WARN[0030] targets metadata is nearing expiry, you should re-sign the role metadata
WARN[0030] targets/justin metadata is nearing expiry, you should re-sign the role metadata
Pull image: docker.io/linuxkit/mkimage:v0.6@sha256:34a0c17ba8c9f97b77927b3111f5f35727622141683220ba6b171876e77a7d7f
  Create OCI config for linuxkit/poweroff:afe8f7dd0d47a7991c54519b0f09124cb8c4e300
ERRO[0037] Metadata for targets/riyaz expired
WARN[0037] Error getting targets/riyaz: targets/riyaz expired at Mon May 25 14:57:45 -0700 2020
WARN[0037] targets metadata is nearing expiry, you should re-sign the role metadata
WARN[0037] targets/ian metadata is nearing expiry, you should re-sign the role metadata
Pull image: docker.io/linuxkit/poweroff:afe8f7dd0d47a7991c54519b0f09124cb8c4e300@sha256:6928333dd3cec070d08722b22bc54a754a05959d240c83b1ee0bb0748b6bf652
FATA[0044] Invalid config: extract service image reference: parse "dummy://docker:18.06.0-ce-dind": invalid port ":18.06.0-ce-dind" after host
make: *** [img/nomad.qcow2] Error 1

Interesting.  The metadata warning is a well-known issue in linuxkit and can be safely ignored.  The invalid port warning on the other hand is interesting, and I am not sure why you would be getting that.
I will investigate and wee what I can come up with.

To help debug, can you provide information about your build environment?  OS/version/linuxkit build ref.

Running
OSX 10.14.6
linuxkit version v0.6 (installed with brew)
I changed the image by wrapping it in quotes and it seems to be getting further. Perhaps its a yaml parsing issue?
before
image: consul:1.7.2
after
image: "consul:1.7.2"
---
services:
  - name: consul
    image: "consul:1.7.2"

Interesting.  I built from master and cannot duplicate the issue you have described.

Since you fixed issue #2 this mysteriously isn't an issue anymore.

  Please let me know if it re-occurs.


Add command to toggle interactive window cell comments

Would love it if there was a command to toggle the interactive window cell comments # %%, just like you can toggle comments via cmd+/. We have these other commands but I would like to ask for one to toggle:

when toggling a comment, it can always just add the comment character at the beginning of the line and consistent behavior always makes sense. But if you were to execute a toggle cell comment command on a line with print(1), what would you expect? That it inserts the characters on the beginning of that line and the rest becomes a comment (# %% print(1)), or inserts a line above with # %%

or inserts a line above with # %%?

This one. You'd select a range and hit 'create cell' or something like that.

Ok, that's a bit different from a toggle, but far more straightforward to implement.

Or if you are in a block of text, adding # %% to the nearest line break? Like in this example, if I'm on line 16 I'd expect for the comment to be added at line 13:

I don't think I would. I would want to have to select the other 3 lines. How else do I pick a single line for a cell?

Has anything happened about this? Should I just use a snippet?

I think a snippet would accomplish the same thing as the jupyter.insertCellBelowPosition command. This was just asking for a command both adds and removes a cell marker

yeah I would like that command too, I will follow this thread


Unable to install extensions

I have been using this flake for a while and its been working great, except I cannot seem to install server-sided extensions. Every time I try to install one I get an error of the following form:
Unable to write file '/home/guus/.vscodium-server/extensions/.a88d889b-1e75-4d34-af54-73606f9b151f/package.json' (EntryWriteLocked (FileSystemError): Error: EACCES: permission denied, open '/home/guus/.vscodium-server/extensions/.a88d889b-1e75-4d34-af54-73606f9b151f/package.json')

Did I mess up something while setting up my config? I am using the following config:
services.vscode-server = {
      enable = true;
      installPath = "$HOME/.vscodium-server";
};

I am using VSCodium version 1.88.1

Experiencing the same here. Are you using managing local VSCodium extensions with Nix and have immutable extensions directory enabled?

Yep, you can find my configuration here

I got this, too. Is there any progress?

I do not have this issue with official Vscode and with mutable extensions directory. Feel free to open a PR that fixes this if you can figure out why it happens.

I suspect this issue may not relate to this project. If I enable immutable extensions directory on client side, I noticed:

This issue only happen when you try to install locally installed extensions on remote server. It will not happen if you try to install an extension that is NOT locally installed.
The same symptom could be observed even if remote host is not NixOS.

I guess it could be related to how immutable extensions directory work: ~/.vscode/extensions is being a symlink to /nix/store rather than a real directory. It is possible the locally installed extensions is not properly uploaded to the remote vscode server and causing all these confusing behaviors.
Nevertheless, these are basically my assumptions as I did not look into it throughly with a debugger.

If I enable immutable extensions directory on client side, I noticed:

This issue only happen when you try to install locally installed extensions on remote server. It will not happen if you try to install an extension that is NOT locally installed.
The same symptom could be observed even if remote host is not NixOS.

I tried to observe the filesystem for what is happening when I try to install a locally installed extension, and found that package.json is missing in the uploaded extension causing the error.

My guess is, if immutable extensions directory is enabled, then vscode may have a different uploading behavior because *.vsix would not exist locally. If I have more time I may try to look further into why package.json is not present in the uploaded extension folder.

Personally, to get around this issue, I copied the code that home-manager uses to install extensions with an immutable extensions directory:
{
  config,
  lib,
  pkgs,
  ...
}: let
  extensions = config.services.vscode-server-extensions;
  cfg = config.services.vscode-server;

  extensionDir = cfg.installPath;

  extensionPath = "${extensionDir}/extensions";

  extensionJson = pkgs.vscode-utils.toExtensionJson extensions;
  extensionJsonFile = pkgs.writeTextFile {
    name = "extensions-json";
    destination = "/share/vscode/extensions/extensions.json";
    text = extensionJson;
  };
in {
  options = {
    services.vscode-server-extensions = lib.mkOption {
      type = lib.types.listOf lib.types.package;
      default = [];
    };
  };

  config = lib.mkIf cfg.enable {
    home.file = {
      "${extensionPath}".source = (
        let
          subDir = "share/vscode/extensions";
          combinedExtensionsDrv = pkgs.buildEnv {
            name = "vscode-extensions";
            paths =
              extensions
              ++ lib.singleton extensionJsonFile;
          };
        in "${combinedExtensionsDrv}/${subDir}"
      );
    };
  };
}

This is a bit of a crude solution, as this does mean that I have to specify all of the extensions that I want to twice, once on my client and once on my server, but for my use case, this is perfectly fine.


path segments should be url encoded, closes #476

path segments should be url encoded, please look at the following url
http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding

Greetings!  And thanks for the contribution.  Sadly - this PR has gotten really stale :(  We're taking steps to respond to these in a more timely fashion to prevent this from happening in the future.  Apologies!


Adjust head update

Changed the extra call to client kit update to be in on pre render, not on post render - no point in having an extra update on post render. Also, actually update the transform of the head in onprerender, which should use the latest data available, will make a difference if any data came in between Update and OnPreRender.

Makes sense and feels like a slight improvement -- at least it seemed more noticeable in the palace demo than in the demo scene. Merged.


Trivia - answer's bug

Remove html python stuff in answers
02:10  Snusbot No one could answer the trivia! The answer was "Gilligan\'s Island"
02:13  Snusbot No one could answer the trivia! The answer was ""Big Bertha""

02:17  Snusbot A new question has begun! In the category "stop, thief!", the question/hint/clue is ""
02:18  Snusbot Here's a hint, "2001: A Space ___________"
02:18  Snusbot: swiftapples got the answer right! The answer was 2001: A Space Odyssey FeelsGoodMan

02:18  Snusbot No one could answer the trivia! The answer was "the A\'s"

# EDIT

19:28 TimeoutBanUnban Emsarrev: the Rijksmuseum (in amsterdam)
19:28 TimeoutBanUnban Thedude2k1: Amsterdam
19:28 Snusbot: Emsarrev got the answer right! The answer was the Rijksmuseum (in Amsterdam) FeelsGoodMan

__EDIT__
Trivia from other people, to see how they did it :santa:
https://github.com/nyxsys/python-toys/blob/master/trivia/triviaquestions.py
https://github.com/jgrosswm/jasper_personal/blob/master/jasper/client/modules/Trivia.py

also the full answer is sometimes given away as a hint, if the answer is short

[ ] rework hint "algorithm"
[ ] do str.replace on a bunch of shit (, , )

Reopen

[ ] Remove ...

14:48 Snusbot OMGScoots A new question has begun! In the category "make room",
          the question/hint/clue is "This French room completes the title of a book by
          the Marquis de Sade, "La Philopsophie Dans Le..."" OMGScoots
14:48 Snusbot OpieOP Here's a hint, "...Bo_____" OpieOP

[ ] Remove ( and )

[2016-03-17 14:19:49 UTC]
snusbot: /me OpieOP Here's a hint, "(Walter) Matthau & (Jack_ ______" OpieOP
[2016-03-17 14:20:00 UTC]
snusbot: /me MingLee No one could answer the trivia! The answer was "(Walter) Matthau & (Jack) Lemmon" MingLee

Wtf is this :octopus:
14:54 Snusbot OMGScoots A new question has begun! In the category "the '20s", the question/hint/clue is "=" OMGScoots
14:54 Zetryo: oh madison wiscosin
14:54 Splitcrumbs: =
14:54 Snusbot Splitcrumbs got the answer right! The answer was = FeelsGoodMan

Never ending story with this trivia :facepunch:
01:24 Snusbot: OMGScoots A new question has begun! In the category "search: light", the question/hint/clue is "This type of light can drill holes in diamonds or carry information over long distances" OMGScoots
01:25 Snusbot: OpieOP Here's a hint, "<a href="http://www.j-archive.com/media/200__________________ _________________________" OpieOP
01:25 Snusbot: OpieOP Here's a hint, "<a href="http://www.j-archive.com/media/2004-10-25_J_24a.jpg" ta_______________________" OpieOP
01:25 Snusbot: MingLee No one could answer the trivia! The answer was "laser" MingLee


Add stub for JsonResource

[X] Added or updated tests
[ ] Documented user facing changes

Changes
PHPStan currently encounters issues when using parent::toArray($request) in toArray on a JSON resource:
public function toArray(Request $request)
{
    return parent::toArray($request);
}

Method App\Http\Resources\UserResource::toArray() return type has no value type specified in iterable type array.
Method App\Http\Resources\UserResource::toArray() return type with generic interface Illuminate\Contracts\Support\Arrayable does not specify its types: TKey, TValue

I've added a stub that should improve it.

Breaking changes

We've closed the master branch. Please open a new pull request and target the 2.x branch if you wish to re-open this pull request.


Twitch API Error 410 (gone)

https://gyazo.com/f488f66726e39af3bc11db3e9d2baa01
Please read
https://github.com/Franiac/TwitchLeecher#support--issues
before posting anything!

See #398 and #402

but it dosent say if theres a fix it says its on twitch ends but is there something i can do? sorry for the bother btw

same problem here uwu

@Franiac seems they introduced a change in the endpoint requirements.
It now no longer requires the client id but an oauth.
Request 1:
[GET] https://api.twitch.tv/api/vods/<VIDEO_ID>/access_token

Response 1:
{
    "error": "Bad Request",
    "status": 400,
    "message": "No client id specified"
}

Request 2:
Header: "Client-Id: ....."
[GET] https://api.twitch.tv/api/vods/<VIDEO_ID>/access_token

Response 2:
{
    "error": "Gone",
    "status": 410,
    "message": "this API has been removed."
}

Request 3 a:
Header: "Client-Id: ....."
[GET] https://api.twitch.tv/api/vods/<VIDEO_ID>/access_token?oauth=.....

Request 3 b:
[GET] https://api.twitch.tv/api/vods/<VIDEO_ID>/access_token?oauth=.....

Response 3 a-b:
{
    "token": ".....",
    "sig": ".....",
    "expires_at": "....."
}

Might be they experimented with that a few days ago and turned it off and on again.

@mistercaths In case it was a Twitch problem as mentioned here there is no fix @Franiac could provide.
As it was a temporary thing, it appeared to be a problem on their side. So nothing to do. As it happens repeatedly and because of this it seems very likely that they changed their API and this means that @Franiac could in deed solve the problem by providing an oauth token.
Or better to say, TwitchLeecher has to ask his user for an token.

@Codereaders I don't know if you understand what's going on behind the scenes of TL. Without an access token you cannot do anything (e.g. downloading the VOD .m3u8 playlist). TL does indeed retrieve an auth token from the API and uses it. The Client-ID in the header is mandatory. You cannot connect to a wide range of the API without it.
My inbox is kinda exploding right now but I think patience will solve this issue again. My inbox tells me that the whole world will burn to death without TL being immediately fixed by some kind of an unbelievable wonder, but I think that won't happen 😄
Can anybody really confirm the shutdown schedule for API v5??? I cannot find any statement by Twitch other than v5 is deprecated. v3 was shutdown in September 2019, so I don't think they will torn off v5 anytime soon.

how does everybody like my new "patience" label 😈

@Codereaders AHA... now I get your comment... I think you read the Helix API documentation. There the authentication workflow is different indeed (no need for a CLient-ID). But TL uses API v5. Just want to clarify that.

That's correct, but it seem they changed this endpoint or they are on about to change its behaviour/ requirements. It sometimes behaves as back in the days but also sometimes requires an oauth token. I got a little confused too as it sometimes reacts as back in the days and sometimes not and thought that this was a temporary problem. Inspecting what twitch does on it's website: It seems to always provide the current user's oauth in order to request an access token.

TL does indeed retrieve an auth token from the API and uses it.

As for what I have seen so far: Sometimes yes, sometimes no.
See 'Endpoint behaviour' below, the auth token is no longer being provided reliably anymore.. ;-)

The Client-ID in the header is mandatory.

Yes and no. It is true for the official and documented API endpoints.. At least for those that require the client id based on the api description. It might or might not be true for internal APIs that are not meant to be used by developers.

My inbox is kinda exploding right now but I think patience will solve this issue again. My inbox tells me that the whole world will burn to death without TL being immediately fixed by some kind of an unbelievable wonder, but I think that won't happen smile

Wait, there's no 24/7 availability guaranteed? :D

**Can anybody really confirm the shutdown schedule for API v5???

v5 is deprecated but still live in production.

I cannot find any statement by Twitch other than v5 being deprecated.

Correct. To be honest it's not too much of a hassle to migrate TL from kraken (v5) to helix ("new twitch api").
Endpoint behaviour
Providing nothing but a video id
Does not work and maybe never did(?):
$ curl https://api.twitch.tv/api/vods/505577471/access_token
{"error":"Bad Request","status":400,"message":"No client id specified"}

Providing a video id, a client id
Does not work reliably anymore:
$ curl -H "Client-Id: XXXXXXX" https://api.twitch.tv/api/vods/505577471/access_token

Thursday evening
{"error":"Bad Request","status":410,"message":"this API has been removed."}

Thursday night
{"token": "{\"authorization\":{\"forbidden\":false,\"reason\":\"\"},\"chansub\":{\"restricted_bitrates\":[]},\"device_id\":\"XXXXXXXXXXX\",\"expires\":XXXXXXXXXXX,\"https_required\":false,\"privileged\":false,\"user_id\":XXXXXXXXXXX,\"version\":2,\"vod_id\":505577471}","sig": "XXXXXXXXXXX","expires_at": "XXXXXXXXXXX"}

Friday evening
{"error":"Bad Request","status":410,"message":"this API has been removed."}

Saturday morning
{"token": "{\"authorization\":{\"forbidden\":false,\"reason\":\"\"},\"chansub\":{\"restricted_bitrates\":[]},\"device_id\":\"XXXXXXXXXXX\",\"expires\":XXXXXXXXXXX,\"https_required\":false,\"privileged\":false,\"user_id\":XXXXXXXXXXX,\"version\":2,\"vod_id\":505577471}","sig": "XXXXXXXXXXX","expires_at": "XXXXXXXXXXX"}

Providing a video id, a client id, an oauth token
Works reliably:
curl -H "Client-Id: XXXXXXX" https://api.twitch.tv/api/vods/505577471/access_token?oauth=XXXXXX
{"token": "{\"authorization\":{\"forbidden\":false,\"reason\":\"\"},\"chansub\":{\"restricted_bitrates\":[]},\"device_id\":\"XXXXXXXXXXX\",\"expires\":XXXXXXXXXXX,\"https_required\":false,\"privileged\":false,\"user_id\":XXXXXXXXXXX,\"version\":2,\"vod_id\":505577471}","sig": "XXXXXXXXXXX","expires_at": "XXXXXXXXXXX"}

Providing a video id, an oauth token
Works reliably:
curl https://api.twitch.tv/api/vods/505577471/access_token?oauth=XXXXXX
{"token": "{\"authorization\":{\"forbidden\":false,\"reason\":\"\"},\"chansub\":{\"restricted_bitrates\":[]},\"device_id\":\"XXXXXXXXXXX\",\"expires\":XXXXXXXXXXX,\"https_required\":false,\"privileged\":false,\"user_id\":XXXXXXXXXXX,\"version\":2,\"vod_id\":505577471}","sig": "XXXXXXXXXXX","expires_at": "XXXXXXXXXXX"}

As I predicted, everything seems to be working fine again.
@Codereaders

That's correct, but it seem they changed this endpoint or they are on about to change its behaviour/ requirements

That is very very unlikely. Twitch cannot just change a running API (with the exception of adding stuff). That would be a horror scenario for every tool connected to Twitch including StreamLabs, StreamElements and other big companies. The API versioning is there to introduce breaking changes, but they cannot change a running authentication workflow for the year old v5.  That would be a horror scenario for every tool connected to Twitch including StreamLabs, StreamElements and other big companies.

Once again yes and no: For official APIs (kraken, helix) that are explicitly being provided for third parties your expectation is absolutely correct. But you have to keep in mind that there's a huge difference in APIs that are being provided for third parties and those that are not officially provided for third parties.
APIs that are not meant to be used as third parties, often referenced as "inofficial" or "internal" might change without any notification for anyone at any time. Applications that rely on such APIs might break in case Twitch changes those APIs. As they (the APIs) are not meant to be used by third partys usually there's no support at all.
https://api.twitch.tv/api/ is not an official api endpoint for developers and third parties. It's an api that is meant to be used by Twitch itself, in their apps, on their website etc, but it is not designed to be used by third parties such as streamlabs, TL or what so ever.

The API versioning is there to introduce breaking changes, but they cannot change a running authentication workflow for the year old v5.

That's true for official APIs. As mentioned before, this might not be true for inofficial ones.
In case you are unsure you should have a look at the API Reference. v5 is in the link, but helix is not far from there. The reference lists all API endpoints that are meant to be used by third parties. They are easily to recognize by kraken (in case of v5) or helix (in case of "v6") as a part of the path: https://api.twitch.tv/helix/...., https://api.twitch.tv/kraken/....
If we're talking about kraken there are two exceptions, but they are explicitly being mentioned in the API reference:

Endpoint
Description
Where to find
Comment

https://uploads.twitch.tv/upload/
Upload for videos
Video Upload Guide, Upload Video Part, Complete Video Upload
-

https://api.twitch.tv/v5/channels/
Manipulate status, game, enable/disable channel feed
Update Channel > Example Request with a JSON Object
There are some examples that show kraken in it's path, and one that shows v5  in it's path. That might be an error or an alias.

However, this is not a part of v5 / kraken:
https://api.twitch.tv/api/vods/<numeric_video_id>/access_token?oauth=XXXXXX
        ^^^^^^^^^^^^^^^^^

@Codereaders I know how it all comes together. The thing that I try to express is that I don't even want to discuss changes that are 99% temporary. Sure you can do all the tests and try out all the stuff you did with the client id and the auth tokens and such, but now we know it was all in vain since the problem is gone and noone needs to change anything.
I don't want to sound arrogant or anything, but sometimes you just gotta keep calm and chill 😄
But it's good to know that we have some more "fiddle" people around here who check out stuff when it's really necessary, so I really appreciate that.
Closing this know in the hopes that we don't need to re-open in 3 days.

This has not been fixed - I am having issues downloading vods still and I'm on the newest version. Error 410 (gone). Google pointed me to a reddit thread which then linked here.
I can download vods totally fine in 4K Video Downloader, so this is definitely something that needs updating on your end.

I just wanted to quickly add a comment about people saying "It stopped working, but started working again". This is a common pattern Twitch uses when deprecating an API. They will do scheduled downtime. Here's an example for v3 deprecation. They will start with 15m, then 1 hour, then 6 hours, and so on. This basically is to get apps that rely on these APIs to break and start looking at moving off of the API.
So yeah short term it might start working again, but long term it probably means that they will be killing this endpoint/

I'm getting this error message today. Log is below:
System.Net.WebException: The remote server returned an error: (410) Gone.    at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)    at System.Net.WebClient.DownloadString(Uri address)    at TwitchLeecher.Services.Services.TwitchService.RetrieveVodAuthInfo(String id)    at TwitchLeecher.Gui.ViewModels.SearchResultViewVM.DownloadVideo(String id)
Twitch channel was CriticalRole, if that helps at all.

It seems like it may be gone for good. Anyone know if there's an official replacement? Can the data be fetched from somewhere else? Has anyone reversed engineered how the website does it now?

I am experiencing the same result today.

I am having this issue as well.


[10.0]add translate=true for the cancel reason

Hi @yelizariev , @GabbasovDinar ,
This PR will be useful for us. Is it possible to have a merge?
Regards

Hi @flotho
Yes, we can merge it. Thanks

thanks a lot


Fix balanced string delims around interpolation

Fixes: #211
The previous way of doing this with eval was very clever, but resulted
in trying to eval strings like %{{} which is just doesn't work. I
tried to think of ways we could continue to use this eval pattern
somehow but everything i could think of was more fragile than regular
expressions, so lets use regular expressions.
Because (I assume, please don't tell me this is incorrect) single quoted
and %q strings don't have interpolations we continue to use the original
eval pattern (i tried processing these with regular expressions as well
and they have completely different handling of escapes, so since this
works and is less fragile it can stay.
So we find the characters we need to escape after counting the
backslashes and either insert or remove a backslash as necessary.
Sorry i had to ruin strings again.

This is amazing, thank you!!


Kong 1.4.3 Target DNS_ERROR issue

Summary:
We recently upgraded to kong 1.4.3 version in prod and facing an issue while adding a new upstream target every time. It displays DNS_ERROR for this target for about 30 seconds and turns to Healthy state once the initial health check is completed. We are using private ip based targets and not DNS based.
Our cluster includes 10 - 15 nodes and serves 60k requests per second. We use PostgreSQL db with kong. We didn't notice any spike in latency or 4xx 5xx trends.
What could be the reason for this?
Why does dns_error occur for private ip based targets?
Note: This only happens for the upstreams which scales up and down frequently and not for all of them.
Steps To Reproduce:

Create an upstream.
Add Target with weight 100 to this upstream.
"DNS_ERROR" will be displayed.
Wait for 30 seconds till the initial health check is completed.
Target will be marked as "Healthy".

Additional Details & Logs:

Kong version 1.4.3

I have this problem, too

ping @locao

@locao Can you look into this and help?

Hi @sujaimca, can you test with the current stable (2.1) and check if the problem persists, please? We've made several improvements in the balancer and lua-resty-dns-client library since 1.4.3.

Closing this due to inactivity. If the problem still exists in the latest Kong release, please reopen the issue so we can continue investigating!


chore(main): release 1.3.0

:robot: I have created a release beep boop
1.3.0 (2024-08-23)
Features

adds release-please action (c33bbf3)

Bug Fixes

some renaming (31b1b3b)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

v1.3.0
:sunflower:


Vectors on SVG renderer not draggable in mobile Safari

I've implemented a draggable circle using a combination of mousedown, mousemove, and mouseup events. Of course, these events don't fire on mobile devices. Is it possible to make a Circle draggable on a mobile device?

Of course, [mousedown, mousemove, mouseup] events don't fire on mobile devices.

Yes they do

@IvanSanchez, does Leaflet fire those events on mobile? I'm using react-leaflet and they are firing on desktop browsers, but not on iOS 9 Safari. I'm trying to narrow down if the issue lies in Leaflet or react-leaflet. Thanks for the help!

@IvanSanchez, I just noticed the needs more info tag and made a CodePen to reproduce using vanilla Leaflet.
The CodePen loads a map and adds a circle. It binds circle.on('mousedown', ...) to show an alert (in my actual code, I'm using a combination of circle.on('mousedown'), map.on('mousemove'), and map.on('mouseup') to make the circle draggable). When clicking the circle in the CodePen on a desktop browser, the alert appears. When tapping the circle in Safari on iOS 9, or while using Chrome's touch emulation, nothing happens.
I'm assuming that, on mobile, the map's zooming/dragging functionality is swallowing the event before it reaches the circle? Is this assumption correct and by design? If so, do you have any recommendations for working around it?

circle does not draggable on mobile device, at least, iOS does not.  if you'd like to make it be draggable, looks like you need to implement a similar CircleDrag like MarkerDrag

OK, so turns out that Safari does indeed fire mousedown events, but not on SVG elements (thanks for the codepen, I was able to test easily in an iPad!!). See also https://patrickhlauke.github.io/touch/ and see the events fired when you tap on a <button>.
So I'm going to say this is a bug in Webkit. You might wanna try to use a Canvas renderer instead, or hack the events by firing synthetic mousedown events, doing something like:
var renderer = L.svg();

L.DomEvent.on(renderer._rootGroup, 'touchstart', function(ev) {
  var synth = L.Util.extend({}, ev);
  synth.type = 'mousedown';
  return this.dispatchEvent(synth);
});

var map = L.map({ renderer: renderer, .... });

It's very hacky, it has to be very specific (only on mobile Safari, only for SVG), and I really cannot think of a clean way to work around this in the leaflet core. @mourner @yohanboniface: any ideas?

Damn, it's not a webkit bug - a minimal leaflet-less test case at https://jsfiddle.net/n3zLrwtf/1/ works as expected.

@kad3nce Have you tried using Leaflet 1.0.0-beta? Event delegation there is revamped and it just might work.

@IvanSanchez thanks a million for all your work on this! I'll give the beta a try tonight and report back.

@IvanSanchez progress! The events fire on mobile when using 1.0.0 beta 2! I implemented the rest of the code to make the circle draggable. Sadly, the map is now dragged along with the circle. Can I call a method on the map in the circle's mousedown handler that will make the map undraggable? I tried event.originalEvent.preventDefault() as well as return false to no avail.
0.7.7 version

Works perfectly on desktop browsers (circle is draggable)
Does not work on mobile (events don't fire for circle)

1.0.0 beta 2 version

Events fire as expected on both desktop and mobile (yay!)
Unexpected behavior: Map is dragged along with the circle

@kad3nce You're not aware of one of the biggest breaking changes in 1.0.0 from 0.7.x: events are now propagated from layers to the map (there is a mousedown on both the layer and the map). This is now expected behaviour.
It should be possible to stop propagation via L.DomEvent.stop, or even disable the map drag handler via map.drag.disable().

Hey @IvanSanchez, map.dragging.disable()/enable() did the trick! Thanks so much for the help.
Best,
-Jedidiah

@kad3nce Nice!
The issue is still there, but it's pretty complicated to fix and there is a workaround for it, so we probably won't worry about fixing it.

@IvanSanchez I didn't notice it before, but there's still one issue with the 1.0.0 Beta 2 CodePen. On mobile, or while using Chrome's emulated touch events, the first time you drag the circle, the map is dragged as well. The second time the circle is dragged, the map is not dragged (as expected). Is there something wrong with my code?
var center = [51.505, -0.09];
var map = L.map('map').setView(center, 13);
var circle = L.circle(center, 1000).addTo(map);

circle.on('mousedown', function (event) {
  //L.DomEvent.stop(event);
  map.dragging.disable();
  let {lat: circleStartingLat, lng: circleStartingLng} = circle._latlng;
  let {lat: mouseStartingLat, lng: mouseStartingLng} = event.latlng;

  map.on('mousemove', event => {
    let {lat: mouseNewLat, lng: mouseNewLng} = event.latlng;
    let latDifference = mouseStartingLat - mouseNewLat;
    let lngDifference = mouseStartingLng - mouseNewLng;

    let center = [circleStartingLat-latDifference, circleStartingLng-lngDifference];
    circle.setLatLng(center);
  });
});

map.on('mouseup', () => {
  map.dragging.enable();
  map.removeEventListener('mousemove');
});

L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);

mousemove should not be fired by touch. Except of case where ii is compatibility event fired along with click.
May be we should consider support of pointer* events.
Or at least touch* (#7044).
Perhaps we should close this issue.


fix(tabs): crashing on chrome under certain conditions

Prevents the tabs from either crashing Chrome (in Angular < 2.3) or throwing an animation error (in Angular >= 2.3). This was happening when the animations get triggered before the element is inserted into the DOM and thus doesn't have a computed transform value.
Fixes #2151.

@andrewseguin can you review this one?


Update scalatest to 3.2.16

About this PR
📦 Updates org.scalatest:scalatest from 3.2.11 to 3.2.16
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scalatest", artifactId = "scalatest" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "org.scalatest", artifactId = "scalatest" }
}]

labels: test-library-update, early-semver-patch, semver-spec-patch, commit-count:1

Codecov Report
Patch and project coverage have no change.

Comparison is base (65acd46) 54.41% compared to head (74777d7) 54.41%.

: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           @@
##           master     #208   +/-   ##
=======================================
  Coverage   54.41%   54.41%
=======================================
  Files           1        1
  Lines          68       68
=======================================
  Hits           37       37
  Misses         31       31

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

Superseded by #220.


Could we defer to flox for GroupBy.first?

Is your feature request related to a problem?
I was wondering why a groupby("foo").first() call was going so slowly — I think we run a python loop for this, rather than calling into flox:
https://github.com/pydata/xarray/blob/b9780e7a32b701736ebcf33d9cb0b380e92c91d5/xarray/core/groupby.py#L1218-L1231
Describe the solution you'd like
Could we call into flox? Numbagg has the routines...
Describe alternatives you've considered
No response
Additional context
No response

Yes , the minor complication is that we should dispatch nanfirst and nanlast but not first, last. The latter. are simply indexing using an indexer we already know, so the reduction approach is overkill.
Closing https://github.com/pydata/xarray/issues/8025 in favor of this one.
Out of curiosity how many groups does your problem have?

Sorry I missed #8025, I thought I searched; I guess first hit lots of unrelated issues and I missed it.

Out of curiosity how many groups does your problem have?

About 15K...

About 15K...

Do you end up using dask for this, or just numbagg? Are these groups randomly distributed along the dimension, or are there patterns to how they are distributed (e.g. are they sequential)?
Just curious...

Do you end up using dask for this, or just numbagg?

I ended up just leaving it running for hours!

Are these groups randomly distributed along the dimension, or are there patterns to how they are distributed (e.g. are they sequential)?

Yes they're largely sequential!