Test analysis accuracy

We should check the performance of the crawler before we do the crawl. @OliverWang13 and @katehausladen will look into that.

As we discussed today, we want to check the performance of our analysis (e.g., that a Do Not Sell link is correctly identified, that the US Privacy String is correctly identified before and after sending the GPC signal, ...). To that end we use a validation set and a test set (we leave out the training set as we are not training an ML classifier but instead have a rule-based analysis approach).
Here is the copy of an analysis document that we used earlier: GPC_Detection_Performance. It still has the sites from the OptMeowt analysis in there. But I think we would need new sites for our test and validation sets. We can change this document as we would like, delete/add columns and values, etc.
@katehausladen, please take a look. If anything is unclear, we can clarify it here or via MS Teams. @OliverWang13, you are already familiar with this document and can also provide explanations.
The first order of business is the selection of which sites to use for the validation and test sets. It should be random but also balanced in the sense that we want to have a good number of sites with Do Not Sell links and US Privacy Strings.

@katehausladen will provide in the readme of this repo links to the new validation and test set documents (and, if necessary, some brief information on how to use them/methodology, possibly in the documents).
@katehausladen and @OliverWang13 will dig a bit deeper into the reasons why the failures occurred, fix them as far as possible, re-run on the validation set to make sure the fixes work, and run on a new validation set (possibly repeat until we have enough confidence to achieve good results in the test set).

The colab notebook and validation set files are here. Importing the validation set files into the colab notebook happens automatically as long as you allow Google to mount drive.

@katehausladen and @OliverWang13, as a reminder, here is the methodology from our previous paper (section 4.2.2):

We obtained ground truth data for the sites in our Validation and Test Sets by performing our analysis method manually. In detail, for each site we performed the following steps:
(1) Visual inspection for a Do Not Sell link scrolling to the end of the site as necessary
(2) Detection of the US Privacy String value by calling the USPAPI from the Firefox Web Console and checking the site’s cookies via the Firefox Network Monitor
(3) Sending a GPC signal to the site
(4) Repeating the second step to detect changes in the US Privacy String, if any
We declared a US Privacy String present on a site if the USPAPI returned a US Privacy String value or we found such in a us_privacy or similarly named cookie. We did not consider a null return value from a USPAPI call as a valid US Privacy String value. As sites are only required to honor GPC for California residents we performed all our analyses while being connected to a VPN with a Los Angeles IP address.

More details are in the methodologies tab in the Google Sheet from the previous validation and testing.
Unless there is a reason to deviate, we should stay close to this original methodology.

I was recalling this methodology earlier as well. The way Kuba and I did it before, we used the earliest version of optmeowt analysis mode where we had to manually start and stop analysis. We were using the extension to send the gpc signal and then comparing our ground truth findings with what the extension found in order to test performance. This methodology was largely developed to measure the performance of analysis mode, and may not scale quite as well for measuring the performance of a crawler. We could use this methodology for finding the ground truth still and then compare it with the findings of the crawler, or create a new methodology. I would personally be alright with using an older version of optmeowt in order to send the gpc signal and find the ground truth, then compare with the findings of the crawler. @katehausladen, do you have any opinions on this or have you been finding the ground truth in any other way?

I would personally be alright with using an older version of optmeowt in order to send the gpc signal and find the ground truth, then compare with the findings of the crawler.

I agree with you; this is how I'd been finding the ground truth.

The way Kuba and I did it before, we used the earliest version of optmeowt analysis mode where we had to manually start and stop analysis. This methodology was largely developed to measure the performance of analysis mode, and may not scale quite as well for measuring the performance of a crawler.

Yes, we no longer have the manual starting and stopping of each analysis for our crawler. Though, the size of our validation and test sets for evaluating the accuracy of the crawler will be about the same as earlier. So, we would not have any issue with scale.

I would personally be alright with using an older version of optmeowt in order to send the gpc signal and find the ground truth, then compare with the findings of the crawler.

Yes, we can do that. We have to be really careful, though, to make sure we are not sending GPC signals when we do not want to. An alternative may be to use Firefox. Brave will not work because GPC cannot be turned off. But we can also use an older version of OptMeowt.
Another point we have to make sure is that we capture for our ground truth both variants how GPC signals can be sent --- via the header and the DOM.
So, the bottom line, @OliverWang13 and @katehausladen, please work out a draft for a testing methodology, and we can finalize it in our next meeting.

Actually, I think using the Firefox settings would be easier than using an earlier version of the extension.
Do we need the DNT header to be sent as well when finding ground truth values? I know this is automatically sent by the analysis extension, but I think we would also need to turn on the privacy.donottrackheader.enabled setting if we needed to send it.

Do we need the DNT header to be sent as well when finding ground truth values? I know this is automatically sent by the analysis extension, but I think we would also need to turn on the privacy.donottrackheader.enabled setting if we needed to send it.

This is a very good and important point. The answer is no. We do not what to send the DNT header (and we do not want to set any opt out cookies or enable other mechanisms that would facilitate our opt out). We want to test the extent to which sites opt people out based on GPC. Thus, we should not use any other opt out mechanism. Otherwise, it is not clear on which basis the opt out occurred.
So, let's make sure that Firefox (or whatever other software we use) does not have turned on DNT etc.

In that case, I think the Firefox settings would be the way to go. In Firefox Nightly, the DNT header is off by default and is not sent when GPC is enabled. Our extension, however, always sends both DNT and GPC headers.

I retested on the validation set from before with slightly longer timeouts. The run can be found with the rest of the validation set data in the drive.
Highlights:
98/100 analyzed (sites not analyzed due to site not loading)
0/98 incorrectly identified USPSs
8/98 incorrectly identified DNSLs, as I mentioned in issue #57.

Before we can address this issue, we first need to settle on our methodologies for identifying (1) whether a site is subject to opt out requirements (#59) and (2) is respecting GPC (#60 ).

At first glance, it looks like 11/80 sites in the validation set from the paper have GPP. Is 11 sites with GPP enough? I would be happy to add an additional 20 sites that we know have GPP. This would mean we have a validation set of 100 sites, 31 of which have GPP.

I would think that 31 GPP sites is enough. So, feel free to go ahead with your plan.
For the validation set we can basically do anything we want. The question is whether we can get that distribution in the test set as well.

What should the ground truth for the urlClassification column be? The urlClassification information is currently stored in the way I described before in issue #59:

I decided to store the urlClassification information in an object: the keys are the tags (i.e. tracking, fingerprinting, full list here), and the values are a list of urls that have this tag. I trimmed the urls so that they don't contain the "https://www." or the path. This is stored in the urlClassification column.
This is what this looks like in practice:

The ground truth for the urlClassification could just be the header domains for each category (i.e. like the data is stored). The challenge with this is that the particular headers aren’t exactly the same every time the site loads. Also, in our larger data analysis, we don’t really care about the individual headers.
We’re really just using the urlClassification information to determine whether the site is subject to the CCPA, so I think it would be better to have a binary subject_to_ccpa column in the ground truths. We would manually look through the network traffic for a 3rd party site that is in the advertising, social, or fingerprinting gen category, and if we find one, record 1. The "working" value would be determined from the urlClassification column in the crawl data (i.e., if the fingerprinting, tracking_ad, tracking_social, any_basic_tracking, or any_social_tracking category has at least one site, then we record 1).

What should the ground truth for the urlClassification column be? ...

I believe we clarified these points in our last meeting. If not, feel free to say otherwise, @katehausladen.

I ran the crawl and compared the values to the ground truths we collected. A lot of the crawl values had changed since we collected the ground truths (i.e., sites with 1--- then returned USPS without dashes, etc). When I manually checked the values of the sites that were different, the values were what the crawler found. For this reason, I decided to redo the ground truths in the following way:

Collect the ground truths for 25 sites (same methodology as before except load each site twice)
Immediately afterwards, run the crawler on the same set of 25 sites
For the sites that failed (reached error page, timed out) or collected incorrect data (because of a human check; there were 6 of these), I installed the extension on my local Nightly browser and manually loaded the sites so that the extension could collect data for them.

This way, we get data for every site and mostly eliminate the chance that the ground truth values have changed.
Comparing those crawl results to the updated ground truths, these are the sites that failed:

Cnn x2 (USPS, GPP)
Bloomberg (USPS)
Business insider x2 (USPS, GPP)
Us news (USPS)
CNbc x2 (GPP, OptanonConsent)
Omaha (GPP)
Adobe (OptanonConsent)
Wired (OptanonConsent)
New Yorker (OptanonConsent)
Whiskey riff (GPP)
Mac rumors (GPP)
That low carb life (GPP)
Celebrity net worth (GPP)
Healthy recipes blog (GPP)
Guiding tech (GPP)
Kitchen fun with my 3 sons (GPP)

Examining why sites failed:

Sites 10-16 are the reason that I loaded the site twice for the ground truth collection. They return something like DBABzw~~BVQqAAAAAgA for the first load before GPC, then add the USPS on the second load (i.e. DBABzw~1YNY~BVQqAAAAAgA). A similar thing happens after the GPC signal is sent; it takes 2 loads for the USPS in the GPP string to update. I’ll look into what the decoded versions actually say.
CNN, Business Insider, US News, CNBC: The extension collected the correct values before the GPC signal was sent. It returned the same values for after GPC was sent, but the values should have changed. Interestingly, CNBC and CNN had other fields that did update correctly after GPC was sent.
Adobe, Wired, New Yorker: Looking manually, the OptanonConsent cookie is sometimes present, sometimes not for these sites. I don’t think this is an issue with our extension.
Omaha: I think the GPP string is different nearly every time I’ve loaded the site. It looks like the changes happen in the TCF sections, so I’ll look to see if the US sections are the same.
Bloomberg: The extension did not find a USPS after GPC when it should’ve.

We can discuss our plan going forward in tomorrow’s meeting.

Thanks, @katehausladen!
What does the "x2" in "Cnn x2" mean?

Just that it failed for 2 different fields

Sites 10-16 all seem to use AdThrive (now Raptive, but the files in the website are still named Adthrive).  Here's the creation of the GPP string in one of Adthrive's files:

As a reminder, all the sites using this implementation follow the same sequence of gpp string values:
1st load before GPC: DBABzw~~BVQqAAAAAgA
2nd load before GPC: DBABzw~1YNY~BVQqAAAAAgA
1st load after GPC: DBABzw~1YNY~BVQqAAAAAgI
2nd load after GPC: DBABzw~1YYY~BVQVAAAAAgI
(note that in the 2 loads after GPC, q -> V is the actual opt out)
I'm not exactly sure what is wrong with the implementation other than that it takes 2 loads to correctly populate the GPP string both before and after GPC.

I did write the code to have the analysis extension load each site twice before and after GPC was sent. This did fix the problem GPP sites discussed above. I’m going to commit the code, but I don’t think we should go forward with this method because

We know this is AdThrive’s implementation
The possibility of sites failing to analyze goes significantly up. This is because the site must load 4 times (without timing out, etc) as opposed to 2 times.
It doesn’t seem like loading the site twice improves the data we collect for the other sites in the validation set. To really be sure about this, I’d have to redo all the ground truths, but I don’t think it’s worth the time given the other observations.

Sites 10-16 all seem to use AdThrive (now Raptive, but the files in the website are still named Adthrive).

Great find!
As discussed, @katehausladen will ask at AdThridve (Raptive).

I redid the validation set ground truths again following the protocol discussed on Tuesday (i.e. check ground truths while selenium is running so that we collect ground truths and working on the same load).
Results:
I was able to collect data in this way for 90/100 sites. There were no incorrect USP string or GPP strings, and there was 1 incorrect OptanonConsent cookie:

I rechecked costco multiple times and got the same result, so I'm not sure why this is incorrect. This isn't an issue with timeouts because I used a 35 second timeout after each load, and our extension would collect the data at the end of the timeout.
The remaining 10/100 were:

human checks detected by regex (6/11). These sites do get data, but we exclude that data because we know it's wrong.
the site failed to load in 35 seconds twice, so data couldn't be collected (4/11). Of these, 2 were some more sophisticated human check that prevents the site from attempting to load at all. The other 2 did try to load, but seemed to get stuck on loading outside scripts. For instance, myspace got stuck on reading something:

I think it is related to the vpn because extending timeouts didn't help, and the sites load just fine in selenium without the vpn on.

I do want to add a few more human check regular expressions, but other than that, I think we should be good to go!

Thanks, @katehausladen!

The remaining 10/100 ... detected by regex (6/11)

Should this be 6/10? I understand that we have 10 failure for the 100 instances.
Do you have some concrete statistics? For example, there were 15 US Privacy Strings in the GPP String, and they were all correctly identified.

Yes, typo, sorry. I fixed it. Not yet; I'll get to that tonight.

The test set is done. Here are the results:
The crawler correctly collected data for all 100 sites.

Methodology:
I crawled 1500 sites and then used panda's df.sample to select 60 sites randomly from the sites that were successfully crawled. Then, I selected 40 sites that were found to have GPP (again using df.sample). These formed the 100-site test set. I had to replace 2 sites in the test set.  The other had a human check error on the second load. I picked replacement sites using df.sample.

Perfect, @katehausladen!
On the methodology:

Did you crawl using a California VPN?
Did you do a crawl of one site and then manually confirmed the results for that site, then moved to the next site, ...?

What is striking to me:

With GPP we only see little opting out after GPC relative to the same situation with the USPS. The OptanonConsent cookie behaves more like the USPS.

Yes, I used a California VPN (Los Angeles).

Did you do a crawl of one site and then manually confirmed the results for that site, then moved to the next site, ...?

I actually just extended the timeouts for long enough so that I could manually collect data while the crawler was collecting data. This way, both the ground truths and working values would be collected on the same load.

With GPP we only see little opting out after GPC relative to the same situation with the USPS. The OptanonConsent cookie behaves more like the USPS.

Yes, I noticed that as well. I'm guessing that the GPP strings that changed after GPC (about 2/3) were just reflecting that they received GPC via the GPC subsection as opposed to actually opting out.

I think it would be interesting to look at the following things once I crawl all 10,000 sites:

the distribution of GPP strings, USP strings, and OptanonConsent cookie among sites (i.e., are sites with GPP more likely to also have USP strings).
are sites with more than one string/cookie opting out via one string/cookie but not another? (i.e. opt out via USP string but not opt out via GPP)

I think it would be interesting to look at the following things once I crawl all 10,000 sites ...

Indeed, these are good points!
I think we are ready to start the full crawl then.


Update formatting for Office 365 SPF

Changed the text in the text box to be consistent with the SPF txt record text boxes for this page.

@nenonix @JohanFreelancer9 - kindly do the copy editor review for this PR. Thanks.

@MSFTTracyP - PR has been copy edited and is ready for final review.
Thank you.
cc: @kenwith


This page needs examples for powershell cmdlets too

This page needs examples for powershell cmdlets too.  It only has legacy command line examples.

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

ID: ed59d472-ac33-5c03-dbb7-0e86e88c7dd8
Version Independent ID: 69e1ad8c-2dd3-cc1b-2b31-996a5d866cc0
Content: Integrate Azure Container Registry with Azure Kubernetes Service - Azure Kubernetes Service
Content Source: articles/aks/cluster-container-registry-integration.md
Service: container-service
GitHub Login: @mlearned
Microsoft Alias: mlearned

Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.

Thank you for the feedback.
The article has been updated to address your feedback.
#please-close


Always specify foreground deletion on uninstall

Turtles extension has to be removed with foreground policy to ensure cleanup of CAPI Operator provisioned resources. This has to be reflected in the docs.

Operator re-naming changes could be taken out of this PR, because we already have https://github.com/rancher/turtles-docs/pull/75/files which does a full clean up + re-organization

Yes lets get #75 in and then rebase this on top (and make any required changes)


Implement conditional resources and modules

Added IfExpressionSyntax to support conditional resources and modules. The things I'm planning to do in separate PRs:

Code completion for IfExpressionSyntax
Decompiling conditional resources and nested deployments

Codecov Report

Merging #1014 (18fd2d1) into main (f2f9111) will increase coverage by 0.44%.
The diff coverage is 88.99%.

@@            Coverage Diff             @@
##             main    #1014      +/-   ##
==========================================
+ Coverage   94.26%   94.70%   +0.44%
==========================================
  Files         328      325       -3
  Lines       15810    15749      -61
  Branches       12        0      -12
==========================================
+ Hits        14903    14915      +12
+ Misses        907      834      -73

Flag
Coverage Δ

dotnet
94.70% <88.99%> (-0.12%)
:arrow_down:

typescript
?

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

Impacted Files
Coverage Δ

src/Bicep.Cli/Program.cs
90.09% <ø> (ø)

src/Bicep.Core/LanguageConstants.cs
98.86% <ø> (ø)

src/Bicep.Core/Semantics/ResourceSymbol.cs
100.00% <ø> (ø)

src/Bicep.LangServer/SemanticTokenVisitor.cs
0.00% <0.00%> (ø)

src/Bicep.Core/Syntax/SyntaxRewriteVisitor.cs
66.39% <12.50%> (-1.99%)
:arrow_down:

src/Bicep.Core/Emit/ExpressionConverter.cs
96.08% <50.00%> (ø)

src/Bicep.Core/Diagnostics/DiagnosticBuilder.cs
100.00% <100.00%> (ø)

src/Bicep.Core/Emit/EmitLimitationCalculator.cs
72.00% <100.00%> (ø)

src/Bicep.Core/Emit/TemplateWriter.cs
97.68% <100.00%> (+0.04%)
:arrow_up:

src/Bicep.Core/Parsing/Parser.cs
94.67% <100.00%> (+0.32%)
:arrow_up:

... and 19 more


v1 chart installation for targeted/provisoned clusters

Added v1 Charts installation scripts for test scenarios surrounding included rancher charts
Includes support for Rancher 2.5x/2.6x for targeted/provisioned clusters for admin/standard users
Charts installed:
monitoring-operator
cluster-monitoring
longhorn
cluster-istio
rancher-logging

Closing in favor of https://github.com/rancher/rancher/pull/38844


Use Weblate translation platform

I am a former translator that can't contribute anymore, seeing as doing so means accepting new terms and conditions.
In the later years Weblate has become the only viable option.
It is copylefted libre software as a platform, and has much better terms as a service https://hosted.weblate.org/legal/terms/
It isn't very hard to import Android projects, and I can help with that.
K-9 Mail currently sits at "There is no activity the last weeks" on TX. I feel a need to do better.
https://github.com/k9mail/k-9/blob/main/app/ui/legacy/src/main/res/values/strings.xml could do with a refresh, but doing so with Transifex on the back-end means losing translations because it doesn't fuzzify strings. Everything in TX is at-least this badly implemented.

@cketti Feel free to add "kingu" to https://hosted.weblate.org/access/tb-android/ if you need some translations generated :)

Adding "kingu" to https://hosted.weblate.org/access/tb-android/#users helps me go over the settings, if anything needs doing there. I can look for stuff and report back.

The K-9 Mail/Thunderbird translations on K-9 Mail/Thunderbird seem to be locked (at least for me: lang=Icelandic, u=sveinki), any ETA on when those will be functional? Are we supposed to continue translating upstream at https://app.transifex.com/k-9/k9mail/ ? There is already some difference between the branches.

We've now switched from Transifex to Weblate. The Weblate project can be found here: https://hosted.weblate.org/projects/tb-android/

Awesome switch!
I subscribed and will be looking forward to translate into French


Fix conceal highlight

This MR improves the highlight of concealed text. Here's an example:

Before
After

Thank you for your contribution 🥰


VS Code has been moved or deleted after update 1.50

Hello, I opened this issue because yesterday right after I closed VS Code it updated and every time it updates there is always some error in opening VS Code, after the update my VS Code wasn't available in my PC, this is what it said.

My VS Code has been moved or deleted, this happens every update,  I tried reinstalling this and it worked fine but this update lets say VERSION: 1.50 has made my VS Code the same way it was 'MOVED OR DELETED'

VSCode Version: 1.50
OS Version: Microsoft Windows [Version 10.0.19041.572] Pro

Steps to Reproduce:

I tried installing and reinstalling
I searched for VS Code in my PC, but couldn't

Does this issue occur when all extensions are disabled?: Doesn't relate to the issue.

/duplicate #47841
As a workaround, please disable Windows background updates by setting update.enableWindowsBackgroundUpdates to false.


Cursor repositioning as I type the code

We have written the `needed
Issue Type: Bug
VS Code has been acting in a wiered manner past 7 days, as the extensions were not working. Today  there was a release due to which I am unable to type CSS Code. The moment I type something it repositions the cursor to the last line in the file. Moreover on pressing the enter key  the code does not start on the new line whereas it gets back to the start of previous line. Kindly provide a fix release as soon as possible.
 Please paste.

If none of your extensions are working, first check the pinned issue about Quick Heal antivirus impacting VS Code.
If that doesn't apply, I suggest the following procedure.
Start by disabling all your extensions. There's a command on the Command Palette (type 'disable' to locate it). If the problem goes away, use the Extensions section to disable all of yours, then re-enable them selectively until the problem returns.

Hi John,
Thanks for the quick response. Will try it and get back.
Cheers!!!
From: John Murray<EMAIL_ADDRESS>Sent: 18 April 2020 17:54
To: microsoft/vscode
Cc: prachi14-techved; Author
Subject: Re: [microsoft/vscode] Cursor repositioning as I type the code (#95593)
If none of your extensions are working, first check the pinned issue about Quick Heal antivirus impacting VS Code.
If that doesn't apply, I suggest the following procedure.
Start by disabling all your extensions. There's a command on the Command Palette (type 'disable' to locate it). If the problem goes away, use the Extensions section to disable all of yours, then re-enable them selectively until the problem returns.
—
You are receiving this because you authored the thread.
Reply to this email directly, view https://github.com/microsoft/vscode/issues/95593#issuecomment-615858138  it on GitHub, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOPL4M4FW6ZDWT4FJPRXKMDRNGLUZANCNFSM4MLJOWKA .Image removed by sender.

Hi,
Thanks a lot for the quick ation on the same. This issue has been closed and no longer persists.
Thanks & Regards,
Prachi Gad | Sr.Associate - UI Development
Contact :022 6132 1000 | Ext : 330
Email<EMAIL_ADDRESS><EMAIL_ADDRESS>"High Quality. On Time. We swear by it!"
Techved Logo
Latest Publication:
https://tinyurl.com/y65d98xc https://tinyurl.com/y65d98xc
See us at:
www.techved.com
https://www.linkedin.com/company/techved-consulting2019 linkedIn
https://www.facebook.com/techvedconsulting/ Facebook
https://twitter.com/techved Twitter
https://www.instagram.com/techved_consulting/ Instagram
From: github-actions[bot]<EMAIL_ADDRESS>Sent: 31 July 2020 16:55
To: microsoft/vscode
Cc: prachi14-techved; Mention
Subject: Re: [microsoft/vscode] Cursor repositioning as I type the code (#95593)
Hey @chrmarti https://github.com/chrmarti , this issue might need further attention.
@prachi14-techved https://github.com/prachi14-techved , you can help us out by closing this issue if the problem no longer exists, or adding more information.
—
You are receiving this because you were mentioned.
Reply to this email directly, view https://github.com/microsoft/vscode/issues/95593#issuecomment-667072567  it on GitHub, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOPL4M6LL2YOJOEJ35FR57LR6KSXFANCNFSM4MLJOWKA .  https://github.com/notifications/beacon/AOPL4M5LE3QRT7W2SDLGDLTR6KSXFA5CNFSM4MLJOWKKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOE7BLQNY.gif


Add this theme to awesome-gitea

@6543 @TylerByte666  Hi mates, I just tell Lunny Xiao about our theme and add it to gitea/awesome-gitea.
Hoping more and more people will know this theme and use as their favorite. : )

Maybe @6543 can approve my PR? The PR needs 2 approval. Thank you so much (｡･ω･)ﾉﾞ

lafriks and Lunny Xiao has already approved it. This issue will be closed.


Can not get return type when util.promisify an function with overloading definations

TypeScript Version:  3.1.0-dev.201xxxxx

Search Terms:
Code
  import util from 'util'

  class Test {
    public test (s: string, callback: (error: Error | null, r: number) => void): void
    public test (s: string, s1: string, callback: (error: Error | null, r: number) => void): void

    public test (
      ...args: any[]
    ): void {
      return
    }
  }

  const t = new Test()
  const func = util.promisify(t.test)
  // const func: (arg1: string) => Promise<{}>

Expected behavior:
func's type should be const func: (arg1: string) => Promise<number>
Actual behavior:
func's type is const func: (arg1: string) => Promise<{}>
Promise<{}> should be Promise<number>
Playground Link:
Related Issues:

What I believe is going on here: The compiler tries the overloads of promisify in order.  When it tries the one-parameter overload, it tries to infer the type arguments from the last call signature of t.test (reference), makes no inference for TResult, defaults it to {}, and finds that t.test is compatible with that overload of promisify even with TResult = {}.
I expect the TypeScript team will consider this behavior a design limitation.  There are some workarounds that might get promisify to give you one of the two overloads you want, such as switching the order of the overloads of Test.test.  But assuming what you really want is to preserve both overloads, your best option is probably to use the "custom promisify" pattern like this.

Thank you very much for explaining this problem so clearly and in detail.
The custom promisify solution looks great, however, what I want to promisify is a stub lib which is auto-generated TS code from gRPC, so I have no chance to modify that source code to add anycustom promisify code.
So it seems that there's no any workaround for me to get the promisified TResult automatically?

You should be able to write a namespace declaration that will merge with the original function definition.  If you can't get it to work, please post your code and I will take a look if I have time.  If you like, you could try to help with https://github.com/grpc/grpc-node/issues/54 to get a better solution.

Thanks for sending me the link from grpc-node, it's just what I want.
I understand that we can write a namespace declaration and merge it with the original function definition.
However, if the grpc protocol buffers definition is changed, the namespace declaration have to be changed manually, I feel that's not what I want.
So I decided to use the callback right now, and keep eyes on the async/await grpc-node issue.
Thanks again for your help!

I took the liberty to ask a StackOverflow question about my last comment.
It seems like with typescript 3.0 it is now possible thanks to spread tupples.
https://stackoverflow.com/questions/51650979/type-infererence-with-overloaded-functions/51654917#51654917
Titian Cernicova-Dragomir gave a nice example on how to use these to make promisify work with any method overload. Go give him a +1
Anyway here's the thing:
export type Callback<T> = (err: Error | null, reply: T) => void;
// prettier-ignore
export type PromisifyOne<T extends any[]> =
    T extends [Callback<infer U>?] ? () => Promise<U> :
    T extends [infer T1, Callback<infer P>?] ? (arg1: T1) => Promise<P> :
    T extends [infer T1, infer T2, Callback<infer U>?] ? (arg1: T1, arg2: T2) => Promise<U> :
    T extends [infer T1, infer T2, infer T3, Callback<infer U>?]? (arg1: T1, arg2: T2, arg3: T3) => Promise<U> :
    T extends [infer T1, infer T2, infer T3, infer T4, Callback<infer U>?] ? (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<U> :
    never;

// prettier-ignore
export type GetOverloadArgs<T> =
    T extends {
        (...o: infer U) : void,
        (...o: infer U2) : void,
        (...o: infer U3) : void,
        (...o: infer U4) : void,
        (...o: infer U5) : void,
        (...o: infer U6) : void,
        (...o: infer U7) : void
    } ? U | U2 | U3 | U4 | U5 | U6 | U7:
    T extends {
        (...o: infer U) : void,
        (...o: infer U2) : void,
        (...o: infer U3) : void,
        (...o: infer U4) : void,
        (...o: infer U5) : void,
        (...o: infer U6) : void,
    } ? U | U2 | U3 | U4 | U5 | U6:
    T extends {
        (...o: infer U) : void,
        (...o: infer U2) : void,
        (...o: infer U3) : void,
        (...o: infer U4) : void,
        (...o: infer U5) : void,
    } ? U | U2 | U3 | U4 | U5:
    T extends {
        (...o: infer U) : void,
        (...o: infer U2) : void,
        (...o: infer U3) : void,
        (...o: infer U4) : void,
    } ? U | U2 | U3 | U4 :
    T extends {
        (...o: infer U) : void,
        (...o: infer U2) : void,
        (...o: infer U3) : void,
    } ? U | U2 | U3 :
    T extends {
        (...o: infer U) : void,
        (...o: infer U2) : void,
    } ? U | U2 :
    T extends {
        (...o: infer U) : void,
    } ? U :
    never;

// prettier-ignore
type UnionToIntersection<U> = (U extends any ? (k: U)=>void : never) extends ((k: infer I)=>void) ? I : never

which you can then uses with
export type Promisify<T> = UnionToIntersection<
    PromisifyOne<GetOverloadArgs<T>>
>;

export type PromisifyAll<T extends {}> = { [J in keyof T]: Promisify<T[J]> };

That's awesome, and it's what I want. Seems TypeScript 3.0 has some cool new features and worth to a upgrade.
I had given him a +1, and what's in my mind right now is:
Could we use some technic to extend the promisify  definition comes with the nose types under this TypeScript 3.0 new feature?
Because it seems not possible to update the @types/node because it's not compatible with old ts version?

You can do the following:
declare module 'util' {
    function promisify<T>(fn: T): Promisify<T>;
}

Thank you so much for your code.
I had just tried and get the following error (with<EMAIL_ADDRESS>[ts] JSDoc types can only be used inside documentation comments.
type Callback<T> = (err: Error | null, reply: T) => void

[ts] A rest parameter must be of an array type.
        (...o: infer U) : void,

Did you get it work in your vscode, and if so, would you like to share a complete defination code so that I could compare it with mine?
Thanks again!

You need to tell vscode to use typescript 3.X.X instead of 2.9.X

Oops, I had set "typescript.tsdk": "./node_modules/typescript/lib" in the .vscode/settings.json but you are right, I have to set it manually.
After switch to TypeScript 3.0, your code work like a charm!
Good job buddy, really appreciate it!

I found another solution before seeing this thread. In the case of grpc generated typescript, the order of the overloaded function is guaranteed to be consistent and the last overloaded function signature is the one get used for infer. So this is working:
export type Promisify<T> = {
  [K in keyof T]: T[K] extends (req: infer U, b: any, c: any, callback: (e: any, r: infer V) => void) => any
    ? (r: U) => Promise<ServiceResponse<V>>
    : never
};

// usage
export type IYourServiceClientStub = Promisify<IYourServiceClient>;


Can't build: struct mg_callbacks callbacks_; isn't defined

Finally after installing a few libraries by hand got compiling the code, but not this, cause this struct is undefined, looks like there is code pending to commit.
Thanks.
In file included from /home/iolalla/gcloud-cpp/src/samples/installed_application.cc:39:0:
/home/iolalla/gcloud-cpp/src/googleapis/client/util/mongoose_webserver.h:166:23: error: field ‘callbacks_’ has inco
mplete type ‘googleapis::client::mg_callbacks’
   struct mg_callbacks callbacks_;
                       ^
/home/iolalla/gcloud-cpp/src/googleapis/client/util/mongoose_webserver.h:166:10: note: forward declaration of ‘stru
ct googleapis::client::mg_callbacks’
   struct mg_callbacks callbacks_;

This is not to build when i was last month
and i seen that webpage of google is not service of cpp client service

You may have to download the older version of mongoose src.
Its available under google/ion

The build is now fixed.  The mongoose samples have been removed.


Smoke tests need to check recently added data deduplication feature

Issue To Be Solved
Currently, the data deduplication feature added by PR #342 is not being checked by smoke tests.
We need to smoke test encoding/decoding to the new compact map format (which deduplicates nested Cadence composite types).
Suggested Solution
Add nested composite types to smoke tests.   Make sure smoke tests include encoding/decoding with compact map format to test data deduplication.

This is closed by #350


Help and feedback links now have settable text

@jmbowman @catong

Codecov Report

Merging #9 into master will not change coverage.
The diff coverage is 100%.

@@          Coverage Diff          @@
##           master     #9   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           1      1
  Lines          18     18
=====================================
  Hits           18     18

Impacted Files
Coverage Δ

edx_theme/__init__.py
100% <100%> (ø)
: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 847ec78...0d197c8. Read the comment docs.

Thanks @nedbat Looks good based on our conversation and my limited knowledge!

@jmbowman ping.

@jmbowman I added default text for the help and Feedback links.
Also, can you take a look at https://github.com/edx/edx-documentation/pull/1544 ?
Thanks.


Does Fuzi let me automate the login process?

I can see that it parses html.

Sure, Fuzi does let you automate the login process by making it easier for you to parse HTML, you just need to implement the login process logic yourself.

do you have an example of this being implemented? I have used python selenium but it pretty much babysits you

No Fuzi does not babysit you, it's just a parser. Think of it as nokogiri in Swift

you can use Alamofire to do the login stuff
see an Ono Implementation:
https://github.com/Alamofire/Alamofire#creating-a-custom-response-serializer


✨ Added feedback_enabled to newsletters table

closes TryGhost/Team#2042

Added ability to enable audience feedback per newsletter (just on BE side).

@lenabaidakova Just one minor point: we only use emoji commits for user-facing changes (ie. features released or bugs fixed). Most users probably don't care about a new column on their DB so we tend to leave them off for migrations. You'll need to amend the commit 🙂

@lenabaidakova Just one minor point: we only use emoji commits for user-facing changes (ie. features released or bugs fixed). Most users probably don't care about a new column on their DB so we tend to leave them off for migrations. You'll need to amend the commit 🙂

Fixed :)


Cleanup use of LocalChannel attributes after subclassing

After #112, let's make sure that attributes userhome and env in LocalChannel_fractal subclass point to appropriate values.

This becomes irrelevant as we switch to the new SLURM backend.


mounting as middleware

trying as;
    var config = require('mongo-express/config.js');
    var middleware = require('mongo-express/middleware.js');
    app.use('/your-mountpath', middleware(config));

getting;
module.js:339
    throw err;
    ^

Error: Cannot find module 'F:\Source\hypetrain\node_modules\mongo-express\src\app.js'
    at Function.Module._resolveFilename (module.js:337:15)
    at Function.Module._load (module.js:287:25)
    at Function.Module.runMain (module.js:457:10)
    at startup (node.js:136:18)
    at node.js:972:3

any ideas?

I've not used Mongo Express as middleware. Did you solve your issue?

Nope not yet.

Here you go:
var mongo_express = require('mongo-express/middleware')
var mongo_express_config = require('../mongo_express_config')

app.use('/admin', mongo_express(mongo_express_config))

Thanks @jontonsoup

This package for MySQL is doing pretty much the same as Mongo-Express. Maybe we can use the same design?

Yep, that is the same method of hooking in middleware as posted above by @jontonsoup  https://github.com/andzdroid/mongo-express/issues/126#issuecomment-156261801

var mongo_express_config = require('./node_modules/mongo-express/config.js')


Update OpenShiftCreator.java

Define mappings between resource "kinds" and associated API endpoints (i.e. OpenShift /oapi, Kubernetes /api).
Resource "kind" string is used as the key into apiMap for retrieving API path (oapi/api) and endpoint path.
Map uses a string array, which can provide for additional path fragments, if needed.
Note: "Template" kind maps to both "processedtemplates" (commented-out for now) and "templates" endpoints. So the desired one is not apparent based on solely the shared "Template" request kind.

Since we don't have the build infrastructure in ci.openshift set up for the plugin yet ;-) I am doing some validation manually.
When I copied/pasted the full contents from OpenShiftCreator.java locally, it did not compile because the import to java.util.Map and HashMap were missing.  I confirmed from the earlier version they were not previously imported, and I don't see that import in the delta.
Please update.
Otherwise:

i circled back and retried the oc create and you are right about POST vs. PUT.
i'm going to fix the imports with my local version, and run a quick test ... I'm still thinking about the removal of the toLowerCase().

Yes. Sorry about the missing imports. I copied/pasted the changes from my working local copy and missed those. I'll fix that.
Note: I have a few tweaks I want to apply to the lists based on Sam's swagger info I received after posting.
Regarding case, according to the specification...
"Resource collections should be all lowercase and plural, whereas kinds are CamelCase and singular."
https://github.com/kubernetes/kubernetes/blob/81b6ac47557359429e519d889d9ad48b5c8a2411/docs/devel/api-conventions.md
However, I don't know if improper case is tolerated or treated as invalid in the API.

My testing of this change uncovered an issue with the recent build env var featurette.  I'll need to correct that blocker and then circle back.

So I've worked around the problem with the build env var substitution stuff.  And yeah, after going through the a couple of runs and looking at the code again, the removal of lower case makes sense now  - with the prior implementation, the valid JSON value had to be converted to lower case for the HTTP URL, and that was done with the toLowerCase call.
Moving forward - the correct case needs to be specified; no fixing of strings, etc. I'm good with a "kind" value of "service" failing.
Now ... there are 2 paths for delivering this fix:

i can push my fix for the build env var substitution stuff, you can merge in the latest, and then push your fix
or i can push the changes that include both our fixes and we cancel / close this pull

I'm fine either way - let me know if you have a preference.  Thanks again.

Cool. In the interest of expediency, I'd say option 2 is probably the most straightforward path. So if you want to lump my changes in with yours, that's fine by me.
Any tweaks to the api lists that I might have (based on the swagger info), I will apply as a new patch. ok?
Thanks

sounds great @warmi01 - we'll go with option 2).  I'll update this PR shortly when the push has occurred.
And yes I'm good with future tweaks to the api list.
And thanks again.

The combined fix originating from this PR has been committed with https://github.com/openshift/jenkins-plugin/commit/e720e3b6022bff59740dc51d7acdf91c53f8dd9d

Hi,
I noticed this morning that release 1.0.3 of the plug-in was available. However, after applying the update to Jenkins and testing my workflow, I am getting the following NullPointerException.  The method name reminded me of your comment below ("problem with the build env var substitution stuff”) and got me wondering — is this related to the problem mentioned below? If so, what was the solution to the problem? All my installed plugins are up-to-date.
Running on master in /var/lib/jenkins/jobs/OpenShift Pipeline Workflow/workspace
[Workflow] node {
[Workflow] step
[Workflow] } //node
[Workflow] Allocate node : End
[Workflow] End of Workflow
java.lang.NullPointerException
at com.openshift.jenkins.plugins.pipeline.OpenShiftCreator.inspectBuildEnvAndOverrideFields(OpenShiftCreator.java:165)
at com.openshift.jenkins.plugins.pipeline.OpenShiftCreator.coreLogic(OpenShiftCreator.java:225)
at com.openshift.jenkins.plugins.pipeline.OpenShiftCreator.perform(OpenShiftCreator.java:267)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:68)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:59)
at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:49)
at hudson.security.ACL.impersonate(ACL.java:213)
at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:47)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Finished: FAILURE
From: Gabe Montero <notifications<EMAIL_ADDRESS>Reply-To: warmi01/jenkins-plugin <reply<EMAIL_ADDRESS>Date: Friday, December 4, 2015 at 12:56 PM
To: warmi01/jenkins-plugin <jenkins-plugin<EMAIL_ADDRESS>Cc: "Ward, Mickey" <Mickey.Ward<EMAIL_ADDRESS>Subject: Re: [jenkins-plugin] Update OpenShiftCreator.java (#1)
So I've worked around the problem with the build env var substitution stuff. And yeah, after going through the a couple of runs and looking at the code again, the removal of lower case makes sense now - with the prior implementation, the valid JSON value had to be converted to lower case for the HTTP URL, and that was done with the toLowerCase call.
Moving forward - the correct case needs to be specified; no fixing of strings, etc. I'm good with a "kind" value of "service" failing.
Now ... there are 2 paths for delivering this fix:

i can push my fix for the build env var substitution stuff, you can merge in the latest, and then push your fix
or i can push the changes that include both our fixes and we cancel / close this pull

I'm fine either way - let me know if you have a preference. Thanks again.
—
Reply to this email directly or view it on GitHubhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_warmi01_jenkins-2Dplugin_pull_1-23issuecomment-2D162035015&d=CwMCaQ&c=_hRq4mqlUmqpqlyQ5hkoDXIVh6I6pxfkkNxQuL0p-Z0&r=Imo7EksF0DJUotj0S7OJDg&m=s5gqCtqwtasz5sxASd4OiX71xpZFVZU5tMigjry6KkA&s=bYuewYV73SAWsxIRlZbWyeVvSVzMWTXvUOtEW4EGAqw&e=.

Aaahh ... yeah, a separate issue from the one I noted earlier, but similar.
I didn't test with the envvar override with the workflow plugin scenario (since we are not pulling in the workflow plugin into the OpenShift Jenkins image into 3.2, at least at this time, it has taken a back seat for the time being).
There is not AbstractBuild object to inspect for, though at second glance itlooks like you can get the EnvVars from the Run object.
A swizzle of the coreLogic / inspectBuildEnvAndOverrideFields to have parameters for both AbstractBuild and Run, passing in a non-null value for one and a null value for the other based on which path we are going down, and then pulling the EnvVars object from whichever is the non-null parameter in coreLogic / inspectBuildEnvAndOverrideFields should suffice.
I can probably take a crack at it on Tuesday.  Or if my description above was clear enough, certainly feel free to start tinkering.

Thanks for the replies. Yes, I see what you mean. I can make a few minor changes to coreLogic/inspectBuildEnvAndOverridFields to leverage either the AbstractBuild or Run parameter object in order to get to the environment.
However, it looks like a similar change will also be needed in Auth.deriveBearerToken for the same reason.
Sound right? Take the same approach there  (both parameters)? Or should all these methods be overloaded with different signatures and share some underlying common code, etc.?
For example..
protected boolean coreLogic(AbstractBuild build, Launcher launcher, TaskListener listener);
protected boolean coreLogic(Run<?, ?> run, Launcher launcher, TaskListener listener);
...

Agreed on the Auth.deriveBearerToken point wrt the env vars.
It may make more sense to pull the env vars in the 2 perform methods and pass it into the coreLogic method (but still pass in the build var for the logging ... I have not found an equivalent in the Run class for that yet).
And yeah, I'd like to make the env var override stuff more common, but as I tried to describe in the comments, there is the tradeoff between the flexibility of dynamically determining the object's fields vs. the inability to get the fields of an extending class.
I should know by mid Tuesday AM if I'll be able to focus on this one (depending on how anxious you are to get this going).

hey @warmi01 - I was able to code something up last night.  I think I should be able to test and push the changes out today.

got an update:  I verified my first iteration of fixes today; then went back and revisited getting reflection to work in a base class.  I got that change working with a single step and am in the process of converting the rest of the steps.  If I don't finish them all up later tonight I should wrap up Wednesday AM.

Cool. Thanks for the update. I am not blocked (with my workaround). So Wednesday sounds fine.

hey @warmi01 - OK .. I've tested / pushed the changes previously discussed here to https://github.com/openshift/jenkins-plugin;  Given the scope of the restructuring with the new base classes, if possible, I'd like to hear how the changes work in your env before creating a version in the jenkins update center.
I'm in no rush if you think you can get to it, but just not in the short term.
thanks.

Wow. Lots of changes. Ok, sure. I'll give it a whirl and do some testing. Keep in mind, we are just starting our use of the plug-in and even Jenkins for our build pipeline. So I can't promise exhaustive testing. But I appreciate how you'd like to get some good sanity testing against all those changes.
I'll let you know how it goes.
Thanks.

Absolutely whatever you can get to would be great.
On Wednesday, December 9, 2015, Mickey Ward<EMAIL_ADDRESS>wrote:

Wow. Lots of changes. Ok, sure. I'll give it a whirl and do some testing.
Keep in mind, we are just starting our use of the plug-in and even Jenkins
for our build pipeline. So I can't promise exhaustive testing. But I
appreciate how you'd like to get some good sanity testing against all those
changes.
I'll let you know how it goes.
Thanks.
—
Reply to this email directly or view it on GitHub
https://github.com/warmi01/jenkins-plugin/pull/1#issuecomment-163441910.

@warmi01 - hey - fyi - between testing from myself, another upstream user, and our QA, I've gone ahead and uploaded version 1.0.4 to the update center.  Aside from the changes from a week or so ago, 1 or 2 minor fixes were also added.

@gabemontero - thanks. sounds good. sorry I haven't found the time to test it yet myself (been sidetracked on other things). looking forward to testing it.
BTW - maybe this ought to be an offline discussion, but I was a little curious/concerned about some of your comments implying this plugin is not (yet) fully intended for workflow use (or maybe I misread). Since the Jenkins team seems to be positioning workflow projects as the way to go (as compared to freestyle, i.e. code-as-config in repo, etc.), we thought this was probably the direction we should head for our pipeline development. Any reason why that might not be the best strategy where openshift-pipeline-plugin is concerned?

I more misspoke then you misread I bet.
Working within the jenkins workflow plugin constructs, and increasing the integration with jenkins workflow as we move forward, are both strategic.  Among other things, the fabric folks here at Red Hat are also calling for this (and we already have some cards on our trello board for further enhancements).
My statement was coming more from the point that I didn't get to do as much with it as I wanted to with this initial iteration.
That said, I've done a fair amount of testing with the support there as documented in the readme.  Assuming that is sufficient for your initial purposes, go for it.  And absolutely open up issues for further enhancements you would like.
@bparees @mfojtik @sspeiche - fyi, more desire for workflow plugin integration

@gabemontero Great! I just wanted to be sure we were on the right track. Thanks.


Release v0.2.4

Fixes:

Use "subarray" instead of "slice" which deprecated

Build:

Bump packages

Codecov Report

Merging #5 (adfd7dc) into main (c339666) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main       #5   +/-   ##
=======================================
  Coverage   89.02%   89.02%
=======================================
  Files           6        6
  Lines          82       82
  Branches        6        6
=======================================
  Hits           73       73
  Misses          9        9

Impacted Files
Coverage Δ

lib/twofa.ts
84.09% <100.00%> (ø)

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 c339666...adfd7dc. Read the comment docs.


How can I run this on Apple M1 Max Macbook?

Operating system
macOS 14.5 (23F79)
Description
docker: Error response from daemon: error gathering device information while adding custom device "/dev/kvm": no such file or directory.

Screenshots (optional)
No response

-e KVM=n
Thanks me later

MacOS and Windows 10 do not support KVM.  See the README and also #317.


Button Icons in Nav Class Not Aligning

When I add an icon to a nav button, a top margin is added for no reason! When I pull it out of the nav, it behaves properly.
Here is a codepen example for my issue
http://codepen.io/anon/pen/ZBoMBP

Fixed in 9fcc379.


Enhance Minimal Mistakes Jekyll to support jekyll-paginate-v2; re:#1240

re: #1240
re: #issuecomment-337258095

Notes:

The minimal-mistakes-jekyll gem has an _includes/paginator.html include which gets included to produce the paging navigation and [lovely] UI. See the theme's _layouts/home.html layout for the calling.

The include refers to site.pagination_path to build the [proper] reference links to navigate between pages.
Note site.pagination_path refers to jekyll-paginate (version 1), not v2.  Ergo, out of box, minimal-mistakes-jekyll gem is not designed to be compatible with jekyll-pagination-v2.
For example, if you try to use pagination outside of root path/URI / breakage will occur with pagination... unless adaptation to _includes/paginator.html has been accommodated.

e.g. ...{{ page.pagination.mypaginator_path | replace: ':cat', page.autopages.display_name | replace: 'page:num', '' | replace: '//', '/' | absolute_url %}}...

The default _config.yml for minimal-mistakes-jekyll theme/gem does not contain configuration for jekyll-paginate-v2, which requires new/additional/different configuration to enable... both in _config.yml and then within the pages where you desire pagination, e.g.:

/index.html

---
...
layout: my_home_layout_pagination_ready
pagination:

enabled
per_page: 2
...

---

I was eventually able to integrate and implement:

minimal-mistakes-jekyll
jekyll-paginate-v2

...along with it's AutoPages feature to generate category, tag, collection pages, etc.

It required addressing the aforementioned aspects however, which meant having the following files and adjusted outside of the minimal-mistakes-jekyll gem theme:

./_layout/home.html
./_layout/archive-taxonomy.html
./_includes/paginator.html
./index.html
./_config.yml (expected)

Would very much like to see jekyll-paginate-v2 integration and capabilities without the need to maintain and manage core theme files within the site/source.  Wonderful theme and offering!  Thank you @mmistakes!

related: https://github.com/jekyll/jekyll/issues/6391

This is what I did to get it to work on https://douglangille.ca with the gem'd theme:
https://github.com/douglangille/douglangille/blob/master/_config.yml
https://github.com/douglangille/douglangille/blob/master/_includes/paginator.html
https://github.com/douglangille/douglangille/blob/master/_layouts/autopage.html
As mentioned elsewhere, moving from jekyll-paginate to jekyll-paginate-v2 will remove the need for jekyll-archives. There will need to be some cleanup in a few places to fix that up. Right now, I have to leave references to jekyll-archives in _config.yml because I'm lazy.
I like @mmistakes' hand-rolled trailpath in paginator.html and I had to hack at it to get it to work with jekyll-paginate-v2. Moving to the new gem's trailpath functionality is ultimately cleaner tho.

If @mmistakes wants to support github-pages then jekyll-paginate-v2 is not really an option since it's not included in the gem yet.

I'd be up for rolling in support for the superior jekyll-paginate-v2 plugin if/when it gets allowed on GitHub Pages. Same for its autopages feature.
I use both on my personal site, but not sure if there is a way to do them now and give the user a choice of falling back to the whitelisted gems. I sort of do that with Jekyll Archives support, but it's kind of messy and makes configuring confusing, especially for those not familiar with Jekyll.

For anyone looking to implement jekyll-paginate-v2 now, coming here to find the links from @douglangille are dead,  there is a compatible version of  _includes/paginator.html here. I found that it offers the same behaviour as the theme's support for the default paginator.
Alternatively please read the blog post by @mmistakes.
@mmistakes you mention that you use jekyll-paginate-v2 on your own site - if your config is better (or more robust, or whatever) than that what I linked to then would you mind sharing a gist that we might use until the theme catches up? (great theme, by the way!!!)

@johnlane I use jekyll-paginate-v2 on my own site but that's a completely different theme from Minimal Mistakes. So the config settings is likely not 1:1. I'm also using the plugins Autopage feature to generate tag archives.

Enhancement

Can we get some insights on this? Paginate V2 is AWESOME and I'm trying to patch MM to adapt it for my site.
If needed, I can provide assistance or even fire up a PR for this.

@iBug I would love to have paginate-v2 support! since I would like to be able to paginate paginate my jekyll archives, but I think that theme-wise we shouldn't drop compatibility with jekyll-paginate. Not everyone wants to build outside gh-pages


Trying to extract dump from Tuya CBU Temp&Humidity sensor

Hello,
I am trying to exatrct dump via UART but i got this error:
root@adrian-huawei-d16:~# bk7231tools read_flash -d /dev/ttyUSB0 temp_tuya_dump.bin
Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/bk7231tools/main.py", line 468, in cli
with closing(connect_device(args.device, args.baudrate, args.timeout, args.debug)) as device:
File "/usr/local/lib/python3.10/dist-packages/bk7231tools/main.py", line 270, in connect_device
s.connect()
File "/usr/local/lib/python3.10/dist-packages/bk7231tools/serial/init.py", line 39, in connect
raise TimeoutError("Timed out attempting to link with chip")
TimeoutError: Timed out attempting to link with chip
adrian@adrian-huawei-d16:~/tuya-cloudcutter$ bk7231tools read_flash -d /dev/ttyUSB0 -s 0 -l 0x200000 dump.bin
Traceback (most recent call last):
File "/home/adrian/.local/lib/python3.10/site-packages/bk7231tools/main.py", line 468, in cli
with closing(connect_device(args.device, args.baudrate, args.timeout, args.debug)) as device:
File "/home/adrian/.local/lib/python3.10/site-packages/bk7231tools/main.py", line 270, in connect_device
s.connect()
File "/home/adrian/.local/lib/python3.10/site-packages/bk7231tools/serial/init.py", line 39, in connect
raise TimeoutError("Timed out attempting to link with chip")
TimeoutError: Timed out attempting to link with chip
Need to put device in flash mode?
This is the device: https://www.aliexpress.com/item/1005004857160939.html?spm=a2g0o.order_list.order_list_main.49.5c461802voyAJ0 with Wi-fi not zigbee

It either isn't in flash mode (reset once read flash command is issued) or the wiring is wrong

Wiring is tx at rx1 and rx is at tx1 from sensor. I will try again today but i think is same problem

If i remember to put in flash mode need to know GPIO 0?

that is for some ESP chips, for Beken it is https://docs.libretuya.ml/docs/platform/beken-72xx/flashing/

my bad, i forget this:
You have 10 seconds to reset the chip (pull CEN to GND, or power-cycle the board) after running the command. The program will then begin dumping.


[Hacktoberfest]: Add Developer Week to the Conferences Section

🆕🐥☝ Beginners Only:
This issue is reserved for people who are new to Open Source. We know that the process of creating a pull request is the biggest barrier for new contributors. This issue is for you 💝
To do:

Add Developer Week to the Conferences Section
See below for link to step-by-step tutorial
Go down to Conferences section - it starts at around line 173
Using the following template, put in the correct info for Developer Week (Search for it on the internet to find the correct details) underneath the last row in the table, ensuring there is still an empty row before the next table.

| [Conference Name](Website Address) | Conference Name or Organising Org | 10 | Description of the Conferences, found on their website |

Add your details in the contributors section at the bottom of the page using the same formatting as the last one

📋 Step by Step
Step-By-Step Tutorial
Remember to observe the Code of Conduct - by which we mean, in short - Be Kind, Be Positive, Be Helpful

Hey I would like to pick this up :)


README: update to include working cut-and-paste examples

A couple changes:

update job/{id} examples to include trailing slashes, to avoid Moved Permanently / 301 redirection
update the examples in the README to be times in the future to avoid the following error:
 Error occured when initializing the job: Schedule time has passed on Job with id of

Enjoy!

Coverage decreased (-0.2%) to 81.083% when pulling 9a1ae790914db34df0d91c823d6fb7e813b67bcc on joeyparsons:master into 3b3bfec18e6d322e50fb5f8bf978aff9e0d2abce on ajvb:master.

Thank you @joeyparsons !

Coverage remained the same at 81.083% when pulling ae93e48aaafd9589aed1e5e3daef986fa01581f9 on joeyparsons:master into 3ebb26fad642ef4351dc3ed4a50fb7dd09455550 on ajvb:master.


[FIR Inapp-Messaging] Bundle resource is missing

Hi,
I already integrated inapp-messaging sdk to xamarin iOS project
I added --argument=-FIRDebugEnabled to Extra mlaunch Arguments
And I saw the log
[Firebase/InAppMessaging][I-IAM900008] A test message with id<PHONE_NUMBER>3417109504 was parsed successfully.
but I cannot display the campaign dialog and it threw the below log
Please help me fix this one
Thanks
I am using Xcode 11.4.1 and visuals studio 8.4.5
2020-05-05 16:28:42.714054+0700 TestInapp.iOS[8038:89197] 6.22.0 - [Firebase/InAppMessagingDisplay][I-FID100007] FIAM Display Resource bundle is missing: not contained within bundle NSBundle <../../Developer/CoreSimulator/Devices/052647AC-100D-4316-BB67-B30262A9FD66/data/Containers/Bundle/Application/7C2CFD4F-63A9-4557-A97B-4D90AE5425E2/TestInapp.iOS.app> (loaded)
2020-05-05 16:28:47.405539+0700 TestInapp.iOS[8038:89141] Resource bundle is missing.

Hi
I have the same error :(
I tested in device too , the same error, but it doesn't display the alert...
I added this line in Firebase.InAppMessaging.InAppMessaging.SharedInstance.Init(); in AppDelegate.FinishedLaunching

6.22.0 - [Firebase/InAppMessaging][I-IAM900008] A test message with id<PHONE_NUMBER>674579968 was parsed successfully.

6.22.0 - [Firebase/InAppMessagingDisplay][I-FID100007] FIAM Display Resource bundle is missing: not contained within bundle NSBundle </Users/jjchiw/Library/Developer/CoreSimulator/Devices/E430A26A-E168-4D29-AE46-015F24353281/data/Containers/Bundle/Application/AA187191-9E59-4651-9143-66B467338DC9

Visual Studio Community 2019 for Mac
Version 8.6 (build 4520)

Xamarin.iOS
Version: <IP_ADDRESS> (Visual Studio Community)

=== Apple Developer Tools ===

Xcode 11.5 (16139)
Build 11E608c

Xamarin.Firebase.iOS.InAppMessaging -- <IP_ADDRESS>

Device

Which gave a hint that there is a mistake while copying file & found out that in Copy pod resource section flag for Run script only when installing was checked. Unchecked it, the app didn't crash for missing bundle

https://github.com/firebase/firebase-ios-sdk/issues/3090

@jjchiw  I already known root cause,
We cannot use the default layout of firebase InAppMessaging to display the message.
I tried to customize the layout , it's ok now
You can refer to this link https://firebase.google.com/docs/in-app-messaging/customize-messages

Hi,
Guys, is there a working In-App Messaging example for XamariniOS somewhere?

Hi,
Guys, is there a working In-App Messaging example for XamariniOS somewhere?

Hello guys,
I am working with Xamarin.iOS framework and added below NuGet Packages for Firebase InApp Messaging.

Added Package to the app
Added Firebase.Core.App.Configure(); in the Appdelegate.cs file.
Set --argument=-FIRDebugEnabled to Extra mlaunch Arguments

not getting instance id message, and  bundle missing error is coming.
6.34.0 - [Firebase/InAppMessagingDisplay][I-FID100007] FIAM Display Resource bundle is missing: not contained within bundle NSBundle </Users/user123/Library/Developer/CoreSimulator/Devices/09C72460-CCAD-4959-B1B2-7CCCDC493C2C/data/Containers/Bundle/Application/98662334-40FC-43DE-954A-E60CBE91D81E/iOSApp.app> (loaded)
There are doc to create custom component for Firebase Inapp Message display, What about Xamarin.iOS. Any help will be appreciated a lot.
Thanks

Hello guys,
I am working with Xamarin.iOS framework and added below NuGet Packages for Firebase InApp Messaging.

Added Package to the app
Added Firebase.Core.App.Configure(); in the Appdelegate.cs file.
Set --argument=-FIRDebugEnabled to Extra mlaunch Arguments

not getting instance id message, and  bundle missing error is coming.
6.34.0 - [Firebase/InAppMessagingDisplay][I-FID100007] FIAM Display Resource bundle is missing: not contained within bundle NSBundle </Users/user123/Library/Developer/CoreSimulator/Devices/09C72460-CCAD-4959-B1B2-7CCCDC493C2C/data/Containers/Bundle/Application/98662334-40FC-43DE-954A-E60CBE91D81E/iOSApp.app> (loaded)
There are doc to create custom component for Firebase Inapp Message display, What about Xamarin.iOS. Any help will be appreciated a lot.
Thanks

@nguyenconghau , Can you please give any example link for Xamarin.iOS to customize the Messaging Display layout ?

@nguyenconghau , Can you please give any example link for Xamarin.iOS to customize the Messaging Display layout ?

@nguyenconghau , Can you please give any example link for Xamarin.iOS to customize the Messaging Display layout ?

@nguyenconghau , Can you please give any example link for Xamarin.iOS to customize the Messaging Display layout ?

Hello, were you able to find a solution?


[ISSUE] The left navbar is not scrollable in any of the SDK documentation pages

Description
The left navbar is not scrollable in any of the SDK documentation pages.
https://databricks-sdk-py.readthedocs.io/en/latest/
Expected behavior
That left nevbar is scrollable.

Can you give a screenshot of the issue? I just navigated through the TOC at 100% zoom on my laptop and didn't see any time that the TOC was clipped.
Note that there is an open issue against the alabaster theme for the underlying Sphinx docsite generation tool we use for this exact problem: https://github.com/sphinx-doc/alabaster/issues/212


unfork spire

now that https://github.com/non/spire/pull/587 was merged

test run: https://scala-ci.typesafe.com/view/scala-2.12.x/job/scala-2.12.x-integrate-community-build/798/consoleFull (404 til Jenkins catches up)

(the failures in the test run are unrelated)


Hackage documentation links are broken

The links in the docs on Hackage seem to be pointing to file://... instead of the relevant package online.

I have this script in my PATH and use it to upload docs, I can't remember where I originally got it from:
#!/bin/bash

# Options / Usage
# put this script in the same directory as your *.cabal file
# it will use the first line of "cabal info ." to determine the package name

# custom options for "cabal haddock" (cabal haddock --help,
#   http://www.haskell.org/haddock/doc/html/invoking.html)
CUSTOM_OPTIONS=(--haddock-options='-q aliased')
# hackage server to upload to (and to search uploaded versions for)
HACKAGESERVER=hackage.haskell.org
# whether to use cabal install (1) or copy docs directly from cabal haddock (0)
#  some user had troubles installing their package (or dependencies)
CABAL_INSTALL=0
# put your credentials into ~/.netrc: (see man netrc)
#   machine $HACKAGESERVER
#   login $USERNAME
#   password $PASSWORD

# nothing to configure below this line

# How it works
#
# It tries to find your package on the given hackage server, and
# uploads the generated -doc.tar.gz.
# It first tries the released version, then the candidate.
#
# To generate the docs it uses "cabal install" to install into a temporary directory,
# with a temporary ghc package db in it.

set -e

status_code() {
    local code=$(curl "http://${HACKAGESERVER}$1" --silent -o /dev/null --write-out %{http_code})
    echo "http://${HACKAGESERVER}$1 $code" >&2
    echo $code
}

tmpdir=$(mktemp -d -u $(pwd)/doc-package-XXXXXXX)
echo Generating docs in $tmpdir
trap 'rm -rf "${tmpdir}"' EXIT

name=$(cabal info . 2>/dev/null | awk '{print $2;exit}')
plain_name="${name%-*}" # strip version number (must not contain a '-', the name itself can)

if [ "200" = "$(status_code /package/${name})" ]; then
    echo "Found released version ${name}"
    targeturl="/package/${name}/docs"
elif [ "200" = "$(status_code /package/${name}/candidate)" ]; then
    echo "Found candidate version ${name}"
    targeturl="/package/${name}/candidate/docs"
else
    echo "Found no uploaded version"
    targeturl=""
fi

prefix="${tmpdir}/prefix"
docdir="${prefix}/share/doc/${name}"
if [ "${CABAL_INSTALL}" = 1 ]; then
    # after cabal install:
    htmldir="${docdir}/html"
else
    # without cabal install:
    htmldir="${tmpdir}/dist/doc/html/${plain_name}"
fi

packagedb="${tmpdir}/package.conf.d"
mkdir -p "${packagedb}"
pkgdocdir="${tmpdir}/${name}-docs"
pkgdocarchive="${tmpdir}/${name}-doc.tar.gz"

cabal configure \
    --builddir="${tmpdir}/dist" \
    --disable-optimization --ghc-option -O0 \
    --docdir="${docdir}" \
    --prefix="${prefix}"

# need separate haddock step, as install doesn't forward --builddir to haddock with
#   cabal install --enable-documentation
# otherwise configure+haddock could be merged into install
#   (prefix cabal haddock options with --haddock- for cabal install)
cabal haddock \
    --builddir="${tmpdir}/dist" \
    --html-location='/package/$pkg/docs' \
    --contents-location='/package/$pkg' \
    --haddock-option='--built-in-themes' \
    --hoogle --html \
    --executables \
    "${CUSTOM_OPTIONS[@]}" \
    --hyperlink-source

if [ "${CABAL_INSTALL}" = 1 ]; then
    cabal install \
        --builddir="${tmpdir}/dist" \
        --docdir="${docdir}" \
        --prefix="${prefix}" \
        --ghc-pkg-option --no-user-package-conf \
        --ghc-pkg-option --package-db="${packagedb}"
fi

cp -a "${htmldir}" "${pkgdocdir}"
(cd "$(dirname ${pkgdocdir})"; tar --format=ustar -czf "${pkgdocarchive}" "$(basename ${pkgdocdir})")
mkdir -p dist/
echo "Copying $(basename ${pkgdocdir}) to dist/"
cp -a "${pkgdocarchive}" dist/

if [ "${targeturl}" != "" ]; then
    echo -n "Upload to http://${HACKAGESERVER}${targeturl} (y/N)? "
    read ack
    if [ "${ack}" = "y" -o "${ack}" = "Y" ]; then
        echo "Uploading..."

    fi
fi

echo Done.


RHEL support?

Without docker, or third party services

The binaries should work on any Linux as is. What exactly on top of this would you think of as "RHEL support"?

An rpm package, ideally. Or a ready to go archive like you offer for both Debian and Docker.

Considering you can use Docker or the binaries already on RHEL I'm not sure there is enough demand for another distro-specific packaging (The deb package is literally never downloaded, users will either use Docker or install from binaries) to justify setting up either of this, so I'd like to leave it up to the community to come up with something like this when it's needed.
If you want to set something up, I'm happy to support you in doing it though.


currentPage not updated on bounce

In a snap = true IScroll, currentPage isn't updated if you release the scroller outside of the scroll boundaries and it uses resetPosition to correctly position the scroller rather than the snap mechanism.
This problem is pretty clear if on the demo:
http://lab.cubiq.org/iscroll5/demos/carousel/
you:

drag so that the third item is visible
drag as far to the right as you can so it bounces back to the first item
flick vertically (say upwards)

The flick uses the current page to work out which one to go to next - since it's vertical it should stay on the same page (the first one), but currentPage.pageX is still set to 2 so that's where it shoots off to.
I'm working around this at the moment by manually setting currentPage on the scrollEnd event.

This is still an issue, please can you fix?

Still an issue for me with iScroll v5.2.0
scrollEnd event fired but currentPage not updated.

Having the same issue with probing the scroll event. event.currentPage is not updating until scrollEnd.


Hare & Tortoise algorithm

Description:
The Hare and Tortoise Algorithm, also known as Floyd's Cycle-Finding Algorithm, is a technique used to detect cycles in a sequence or linked list. It operates using two pointers moving at different speeds: one fast (the hare) and one slow (the tortoise). This approach is efficient and uses constant space.
Checklist:

[x] Contributor in GSSoC-ext
[x] Want to work on it

Additional Information:
Initialization:
Two pointers are initialized:
The tortoise moves one step at a time.
The hare moves two steps at a time.
Movement:
Both pointers start at the beginning of the sequence or linked list.
In each step:
The tortoise moves forward by one node.
The hare moves forward by two nodes.
Cycle Detection:
If there is a cycle, the hare will eventually meet the tortoise within the cycle because it moves faster.
If there is no cycle, the hare will reach the end of the list (i.e., a null reference) without meeting the tortoise.
Return Value:
If the two pointers meet, a cycle exists.
If the hare reaches the end, there is no cycle.

When will be the issue assigned to me


Setting Data Extension properties

The example for adding data extension rows says to use this:
$postDRRow->props = array("Key" => "PHPSDKTEST", "Value" => "ItWorks");

But the source code for ET_DataExtension_Row > post() has this:
foreach ($this->props as $key => $value){
	$fields[]  = array("Name" => $key, "Value" => $value);
}

So it looks like, really, properties should be set like this:
$postDRRow->props = array(
	"MyKey1" => "MyValue1",
	"MyKey2" => "MyValue2"
);

Can you confirm?

I noticed this because when I tried to do it like the example, I got this back:
[status] =>
    [code] => 200
    [message] =>
    [results] => Array
        (
            [0] => stdClass Object
                (
                    [StatusCode] => Error
                    [StatusMessage] => Errors occurred
                    [OrdinalID] => 0
                    [ErrorCode] => 2
                    [NewID] => 0
                    [Object] => stdClass Object
                        (
                            [PartnerKey] =>
                            [ObjectID] =>
                            [CustomerKey] => XYZ
                            [Properties] => stdClass Object
                                (
                                    [Property] => Array
                                        (
                                            [0] => stdClass Object
                                                (
                                                    [Name] => 0
                                                    [Value] => Array
                                                )

                                            [1] => stdClass Object
                                                (
                                                    [Name] => 1
                                                    [Value] => Array
                                                )

You can see the Name is a number and the Value is the string "Array", which of course isn't what we want.
When I change it to my suggestion, it works.

Please use the Dot9 branch of the SDK as it is the most recent.  I tested with this version and it works correctly when using the example in the repo for adding a data extension row.


Gson packed with npc-lib-bukkit, overwriting other versions

As title suggests, there is a version of Gson packed with npc-lib-bukkit version 3.0.0-beta6. I request moving this somewhere else because it shadows other Gson versions that I use in my project. This version does not support static JsonParser#parseString, so it causes lot errors.

Also, is there any update to #120 ?
Thank you.

The gson version is no longer bundled as all requirements for it were replaced. Please try with beta7. (However I'm not sure how a gson version bundled in a plugin can overwrite other gson versions? Or as a depenendency... But then you could just exclude the directory).


Update and kustomize AWS CCM

Which issue(s) this PR fixes:
xref #2998
What type of PR is this?
/kind chore
Special notes for your reviewer:
Does this PR introduce a user-facing change? Then add your Release Note here:

* Update AWS CCM

Documentation:

NONE

/retest


Remove small_open flag

We should remove the small_open boolean and simply use the case of zeta_K==1.0 to serve as the small open economy parameterization.

This issue is resolved by PR #556.


Update to latest Clerk for Garden compatibility

The main branch is here now but running into some errors:

it looks like :index isn’t setting that namespace as the index, but building an index with a single entry
Garden isn't running npm install.

Here’s the output: https://gist.github.com/sritchie/48c22dcbc08d79520ccf5240c54477b4
from https://github.clerk.garden/mentat-collective/jsxgraph.cljs

Fully fixed by #29 !


Pin the gha-setup-swift dependency.

Wrong direction, but this is up-integrating https://github.com/thebrowsercompany/swift-build/pull/118


change topic link

so don't work when we want change his value in option (doesn't save the change)

well it was mb. Cuz i don't use beta version of config.


build(*): updated package versions

This PR updates the firebase-functions to version 3.3.0 & firebase-admin to version 8.8.0 in the following extensions:
[✓] - auth-maichimp-sync
[✓] - delete-user-data
[✓] - firestore-bigquery-export
[✓] - delete-user-data
[✓] - firestore-shorten-urls-bitly
[✓] - firestore-translate-text
[✓] - rtdb-limit-child-nodes
[✓] - storage-resize-images
Notes:

firestore-counter encounters typing errors, and has not been updated.
firestore-send-email did not need its packages updating.

The build is failing with this error:
node_modules/google-auth-library/build/src/auth/googleauth.d.ts(61,9): error TS1086: An accessor cannot be declared in an ambient context.

To ensure lerna builds correctly, I haven't upgraded  firebase-admin to version 8.8.0. Most extensions are already using version 8.0.0. I have upgraded firestore-bigquery-export's firebase-admin package to 8.0.0.


calculate_cost

Hi! The definition of bounding box width and height seems to be reversed in the calculate_cost function. This definition matches what is presented in your paper but does not align with the results from YOLO.

Hi,
Thank you for your comment. The difference in definitions arises because the Computer Vision community defines the x-axis and y-axis differently than the Mathematics community. Therefore, we decided to adhere to the Computer Vision terminology in our work. Nevertheless, the tracker's output is correct as it accurately visualizes the bounding boxes. So, you can use it without any concerns.


chore(package): update ipld-dag-pb to version 0.18.1

Tests were modified to use the public API, so that they don't rely on
the internal representation.
Closes #232.

I wouldn't consider it a break as it relies on internal details and not on the public API. You shouldn't rely on internals.


lua: make sure resetting dynamic metadata wrapper when request info is marked dead

This PR makes sure we reset dynamic metadata wrapper when its parent (request info wrapper) is marked dead.
Risk Level: Low
Testing: Add integration testing
Docs Changes: N/A
Release Notes: N/A
Fixes #4305

I don't think any of the senior maintainers except maybe Matt know the Lua code, so load balancing senior maintainer at random.


added option to single select items

Couldn't this be achieved more easily just by setting allowsMultipleSelection to NO in the PhotoViewController?


feature/connect-checkboxes-to-filters

https://trello.com/c/1n6Lnm59/308-goal-12-frontend-and-search-filtering
Change description
This PR enables filtering from the front-end checkbox components. It also populates the checkboxes with data fetched from the backend (where possible). Some hardcoded data remains until all the relevant API endpoints are merged into the back end.

[ X] Unit tests and other appropriate tests added or updated
[ X] README and other documentation has been updated / added (if needed)
[ X] Commit messages are meaningful and follow good commit message guidelines (e.g. "FS-XXXX: Add margin to nav items preventing overlapping of logo")

pre-commit.ci autofix

pre-commit.ci autofix


Stuck on loading screen

Possibly a missing edge case. I haven't started the 100daysofcode so the loading screen gets stuck

It's because there's no username, yes I have yet to implement that
#41 issue addresses all the input field restrictions I have to add, including this


Unregister waiting for calls

When unregistering - the router should wait until all calls finish before sending the unregistered message.

Closing issue due to inactivity


Add configurable multicast address & update to account for change in upstream OTBR image

Thanks! I will take a look at it tonight.


Support hash parameter in v-link and improve custom handling

It would be nice to be able to use hash with named route pattern.
Currently
In vue-router 0.7.11, in History/html5 mode:

hash is automatically extracted from path given as string and scroll to this hash after route change
(ie. v-link="/page#section" will to to the route /page and scroll to the element with this id (https://github.com/vuejs/vue-router/blob/master/src/index.js#L543-L560)
there is no way to specify an anchor/a hash with the named route pattern (ie. v-link="{name: 'page', params: {}}")

Proposal

Add/handle an optional hash or anchor in v-link named route pattern handling (ie. v-link="{name: 'page', hash: 'section'}")
Add a, optional hash() transition hook called after data hook, if hash value change (same behavior as data hook for hash) :

Vue.component('hash-hook-example', {
  // ... other options
  route: {
    hash (value) {
      console.log(`hash-hook triggered with ${value}`)
    }
  }
})

If the hook is present, it is called. If not, the default behavior (aka. scroll to getElementById(hash)) is executed

+1 on this, would really like to see links that are create by Vue and can scroll to an anchor

@noirbizarre @divmgl Scrolling to hash is implemented in 2.0, as in scrollBehavior (release notes),
As for hash hook, since all transition hooks are deprecated in 2.0, there won't be any new hooks added, just use a watcher on $route.