trailing slash redirect still necessary

Do you want to request a feature or report a bug?
Possible bug
What did you do?
Launched an instance of https://github.com/thelounge/thelounge behind traefik.
With labels as follows to serve the instance in a subpath
services:
  thelounge:
    ...
    labels:
      - "traefik.frontend.rule=PathPrefixStrip:/irc"
    ...

requests going to domain.com/irc fail to load the required components of the application, while domain.com/irc/ works as expected.
However, using the following, found in an old issue I can't find anymore, seems to work
services:
  thelounge:
    ...
    labels:
      - "traefik.frontend.redirect.regex=^(.*)/irc$$"
      - "traefik.frontend.redirect.replacement=$$1/irc/"
      - "traefik.frontend.rule=PathPrefix:/irc;ReplacePathRegex: ^/irc/(.*) /$$1"
    ...

I believe the whole point of the original pull request was to avoid the above and by default redirect to a trailing slash path.
From the browser these seem to be 2 subsequent requests:
curl 'http://domain.com/irc'
curl 'http://domain.com/js/bundle.js' -H 'Pragma: no-cache' -H 'DNT: 1' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en,it;q=0.9,fr;q=0.8' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.20 Safari/537.36' -H 'Accept: */*' -H 'Cache-Control: no-cache' -H 'Cookie: io=tebKKRp1xd5iFlelAAAB' -H 'Connection: keep-alive' --compressed

Original issue here https://github.com/thelounge/thelounge/issues/3043
What did you expect to see?
App regularly served with trailing slash from subpath
What did you see instead?
App fails to load as original path is stripped from subsequent requests
Output of traefik version: (What version of Traefik are you using?)
Version:      v1.7.9
Codename:     maroilles
Go version:   go1.11.5
Built:        2019-02-11_11:36:32AM
OS/Arch:      linux/amd64

What is your environment & configuration (arguments, toml, provider, platform, ...)?
---
version: '3.7'

networks:
  backend: {}

services:
  thelounge:
    # environment:
    #   - DEBUG=express:*
    command: thelounge -c reverseProxy=true start
    container_name: thelounge
    image: thelounge/thelounge:alpine
    labels:
      # - "traefik.frontend.rule=PathPrefixStrip:/irc"
      # traefik doesn't play well with paths
      - "traefik.frontend.redirect.regex=^(.*)/irc$$"
      - "traefik.frontend.redirect.replacement=$$1/irc/"
      - "traefik.frontend.rule=PathPrefix:/irc;ReplacePathRegex: ^/irc/(.*) /$$1"
    networks:
      - backend
    restart: unless-stopped
    user: "${UID}:${GID}"
    volumes:
      - "${MOUNT}/.thelounge:/var/opt/thelounge" # bind lounge config from the host's file system

  traefik:
    command:
      - --accesslog
      - --api # defaults to port 8080
      - --docker
      - --docker.network=backend
      - --defaultentrypoints=http
    image: traefik:maroilles-alpine
    networks:
      - backend
      - default
    ports:
      - "80:80"     # The HTTP port
      - "443:443"   # The HTTPS port
      - "8080:8080" # The Web UI (enabled by --api)
    restart: unless-stopped
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro" # So that Traefik can listen to the Docker events

If applicable, please paste the log output in DEBUG level (--logLevel=DEBUG switch)
Within the app the following seems to happen with a trailing slash in the original request
thelounge    | Mon, 11 Feb 2019 22:29:21 GMT express:router dispatching GET /
thelounge    | Mon, 11 Feb 2019 22:29:22 GMT express:router query  : /
thelounge    | Mon, 11 Feb 2019 22:29:22 GMT express:router expressInit  : /
thelounge    | Mon, 11 Feb 2019 22:29:22 GMT express:router allRequests  : /
thelounge    | Mon, 11 Feb 2019 22:29:22 GMT express:router index  : /
thelounge    | Mon, 11 Feb 2019 22:29:22 GMT express:router dispatching GET /js/bundle.vendor.js
thelounge    | Mon, 11 Feb 2019 22:29:22 GMT express:router query  : /js/bundle.vendor.js
thelounge    | Mon, 11 Feb 2019 22:29:22 GMT express:router expressInit  : /js/bundle.vendor.js
thelounge    | Mon, 11 Feb 2019 22:29:22 GMT express:router allRequests  : /js/bundle.vendor.js
thelounge    | Mon, 11 Feb 2019 22:29:22 GMT express:router index  : /js/bundle.vendor.js
...

but not without
thelounge    | Mon, 11 Feb 2019 22:38:45 GMT express:router dispatching GET /
thelounge    | Mon, 11 Feb 2019 22:38:45 GMT express:router query  : /
thelounge    | Mon, 11 Feb 2019 22:38:45 GMT express:router expressInit  : /
thelounge    | Mon, 11 Feb 2019 22:38:45 GMT express:router allRequests  : /

Hi @devster31 ,
Have you tried the keepTrailingSlash option (cf doc) ?

Behaviour does not seem to change.
I found the pull request: https://github.com/containous/traefik/pull/1638
I was naively expecting the same behaviour of proxy_pass in nginx, which means that a PathPrefixStrip:/irc returns a 301 to /irc/ and forwards / to the backend.
I tried the following config with the following changes:
---
version: '3.7'

services:
  thelounge:
    ...
    labels:
      - "traefik.frontend.rule=PathPrefixStrip:/irc"
    ...

  traefik:
    command:
      - --accesslog
      - --api # defaults to port 8080
      - --docker
      - --docker.network=backend
      - --defaultentrypoints=http
      - --keeptrailingslash=true
      ...

comparing to the docs you linked, this behaviour in particular > http://foo.com/path/ | true | Path:/path | 404 does not seem to apply.
curl 'http://<IP_ADDRESS>/irc' -v
*   Trying <IP_ADDRESS>...
* TCP_NODELAY set
* Connected to <IP_ADDRESS> (<IP_ADDRESS>) port 80 (#0)
> GET /irc HTTP/1.1
> Host: <IP_ADDRESS>
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Length: 5778
< Content-Security-Policy: block-all-mixed-content; default-src 'none'; form-action 'self'; connect-src 'self' ws: wss:; style-src 'self' https: 'unsafe-inline'; script-src 'self'; worker-src 'self'; child-src 'self'; manifest-src 'self'; font-src 'self' https:; media-src 'self' https:; img-src 'self' data: https://user-images.githubusercontent.com
< Content-Type: text/html; charset=utf-8
< Date: Mon, 25 Feb 2019 19:57:18 GMT
< Etag: W/"1692-jD2pvers7HxluZt7pQf+PFOrv4U"
< Referrer-Policy: no-referrer
< X-Content-Type-Options: nosniff
<
...

requesting /irc/ returns an unbroken page, but it did so even before turning on --keeptrailingslash.
That was the entire purpose of
      - "traefik.frontend.redirect.regex=^(.*)/irc$$"
      - "traefik.frontend.redirect.replacement=$$1/irc/"
      - "traefik.frontend.rule=PathPrefix:/irc;ReplacePathRegex: ^/irc/(.*) /$$1"

I noticed the labels aren't correct, this is not related to k8s, but to docker.
It is also not a question, it seems to be a regression compared to the pull request referred in my previous message.
The expected behaviour, in my view and especially when migrating from something like nginx, is that there is a transparent redirect to a trailing slash URL unless keeptrailingslash=true.
The current behaviour with PathPrefixStrip=/uri seems to not forward a / to the backend:
traefik_1      | <IP_ADDRESS> - - [10/Mar/2019:15:14:49 +0000] "GET /portainer HTTP/2.0" 200 2804 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36" 12 "PathPrefixStrip-portainer-1" "http://<IP_ADDRESS>:9000" 3ms
traefik_1      | <IP_ADDRESS> - - [10/Mar/2019:15:14:49 +0000] "GET /css/app.069dd38e.css HTTP/2.0" 404 19 "https://alioth.ovh/portainer" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36" 13 "backend not found" "/css/app.069dd38e.css" 0ms
traefik_1      | <IP_ADDRESS> - - [10/Mar/2019:15:14:49 +0000] "GET /js/app.261b69fc.js HTTP/2.0" 404 19 "https://alioth.ovh/portainer" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36" 14 "backend not found" "/js/app.261b69fc.js" 0ms
traefik_1      | <IP_ADDRESS> - - [10/Mar/2019:15:14:49 +0000] "GET /images/logo_alt.png HTTP/2.0" 404 19 "https://alioth.ovh/portainer" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36" 15 "backend not found" "/images/logo_alt.png" 0ms

compared to trailing slash:
traefik_1      | <IP_ADDRESS> - - [10/Mar/2019:14:50:26 +0000] "GET /portainer/ HTTP/2.0" 401 21 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36" 345 "Auth for frontend-PathPrefix-portainer-ReplacePathRegex-portainer-1-0" "/" 100ms
traefik_1      | <IP_ADDRESS> - - [10/Mar/2019:15:15:35 +0000] "GET /portainer/api/endpoints HTTP/2.0" 200 50077 "https://alioth.ovh/portainer/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36" 17 "PathPrefixStrip-portainer-1" "http://<IP_ADDRESS>:9000" 15ms
traefik_1      | <IP_ADDRESS> - - [10/Mar/2019:15:15:36 +0000] "GET /portainer/api/endpoint_groups HTTP/2.0" 200 132 "https://alioth.ovh/portainer/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36" 20 "PathPrefixStrip-portainer-1" "http://<IP_ADDRESS>:9000" 2ms
traefik_1      | <IP_ADDRESS> - - [10/Mar/2019:15:15:36 +0000] "GET /portainer/api/endpoints HTTP/2.0" 200 50077 "https://alioth.ovh/portainer/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36" 19 "PathPrefixStrip-portainer-1" "http://<IP_ADDRESS>:9000" 13ms
traefik_1      | <IP_ADDRESS> - - [10/Mar/2019:15:15:36 +0000] "GET /portainer/api/motd HTTP/2.0" 200 1470 "https://alioth.ovh/portainer/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36" 18 "PathPrefixStrip-portainer-1" "http://<IP_ADDRESS>:9000" 787ms

keeptrailingslash acts on the matching, preventing matches in the first case.

Hi! I'm Træfiker :robot: the bot in charge of tidying up the issues.
I have to close this one because of its lack of activity :disappointed:
Feel free to re-open it or join our Slack workspace for more community #support.

Hi @devster31 , thanks for letting us know about the labels, it's fixed.
This behaviour is not considered as a bug, as we expect such redirection to be explicit, contrary to nginx.
We're closing this issue as a duplicate of #563, as the conversation occurred on it.
If you feel the documentation might be updated to explain this, we would be interested to here your proposal.
We understand the user experience concern here: as Traefik v2.0 is upcoming, there will be discussion about this. Feel free to open a new feature request describing the exact use case please.
Thanks a lot!


Add MVP support for callback (#110)

This commit adds support for a callback in config. This allows mocking an API which will asynchronously make another API request as part of its contract.
A callback consists of a delay, a URL, a Content-Type and a Body. After the Delay, a POST request is made to the given URL, with the Content-Type + Body. The same substitutions are supported in the callback body as a response body, so eg. request values/fake data can be part of the API call made.
Limitations for callbacks in this MVP:

Only POST is supported
Custom headers aren't supported (only Content-Type is)
Custom cookies aren't supported

Let me know if any of these are too restrictive, happy to adjust as necessary.
TODO:

[ ] Update README. Figured it'd be best to get some feedback on the code/approach first.

Hey, thanks for your PR.
I'll do a CR as soon as possible.

Awesome, thanks for your patience and all your feedback! :)


Can I skip the video or specify the album (directory)?

Can I skip the video or specify the album (directory)?

What scenario are we taking about?


Follow up on known PostingsForMatchersCache issues

As mentioned by @charleskorn in #546, there are a couple of outstanding issues in PostingsForMatchersCache.PostingsForMatchers that should be followed up on:

Should other kinds of errors also not be cached?
If all waiting calls to PostingsForMatchersCache.PostingsForMatchers() have cancelled their context, should we cancel the context passed to the underlying PostingsForMatchers implementation?

One other thing that needs to be done once those questions are answered: we should upstream the fix in #546 (and any other related changes) to Prometheus.

@aknuds1 I see you've assigned yourself to this issue, but let me know if you need any help.

we should upstream the fix in https://github.com/grafana/mimir-prometheus/pull/546 (and any other related changes) to Prometheus

@charleskorn which changes from #546, considering PostingsForMatchersCache isn't upstream? Sorry if I'm missing the obvious.

I see you've assigned yourself to this issue, but let me know if you need any help.

@charleskorn I unassigned myself, since I figured it's better to leave it free in the backlog, so whoever has the capacity to pick it up can.

we should upstream the fix in https://github.com/grafana/mimir-prometheus/pull/546 (and any other related changes) to Prometheus

@charleskorn which changes from #546, considering PostingsForMatchersCache isn't upstream? Sorry if I'm missing the obvious.

Oh, I misunderstood, I thought this was an upstream feature. In that case, no upstreaming required 🙂

Haven spoken offline with @charleskorn, it might be preferable if I pick this issue up if I have the capacity, given that I possess the most context wrt. making Prometheus support query cancellation.


Fixed code snippet for creating PCollection in Python

Named argument here should be used to pass PipelineOptions object; previous snippet was incomplete

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

R: @aaltay

Hi @RinzlerTron , thanks for reporting this issue. I've gone ahead and opened #10343 to directly fix this in the file where the docs fetch the code sample from.


Include instructions for installing to an existing repo

I've accomplished the process over at https://github.com/open-rpc/spec/pull/12
I used the process outline here:
https://thoughts.t37.net/merging-2-different-git-repositories-without-losing-your-history-de7a06bba804

i think theres a way to add a command to git


Don't skip int verification when using -f flag

When integrating with -f the verification process that shows the user the changes before they confirm is skipped. Seems like it should still happen, no?

That is a good question. Currently when you use the -f or --force switch with integrate it skips two things.

the optionally configured prompt for reassurance

When I think of force as an option, I think of the second point, not so much the first. Especially when it's configurable.

Yeah, I a agree. It is a bit confusing in the current approach.
We should change it.


Follow-up from "element.py: remove call to _source_cached()" -- test_workspace_visible changed to XFAIL

See original issue on GitLab
In GitLab by [Gitlab user @traveltissues] on Oct 7, 2019, 10:30
The following discussion from !1612 should be addressed:

[ ] [Gitlab user @traveltissues] started a discussion:

follow up on this

key is not being set until after committing the workspace to the sourcecache (under the ref workspace/None) meaning that subsequent calls to Element._source_cached() will fail (since the key is not associated with the storage)

In GitLab by [Gitlab user @traveltissues] on Oct 7, 2019, 12:30
changed the description

In GitLab by [Gitlab user @traveltissues] on Oct 7, 2019, 12:30
changed the description

In GitLab by [Gitlab user @traveltissues] on Oct 7, 2019, 14:50
mentioned in merge request !1628

In GitLab by [Gitlab user @traveltissues] on Oct 7, 2019, 14:50
mentioned in merge request !1628

In GitLab by [Gitlab user @marge-bot123] on Oct 8, 2019, 17:33
closed via merge request !1628

In GitLab by [Gitlab user @marge-bot123] on Oct 8, 2019, 17:33
closed via merge request !1628

In GitLab by [Gitlab user @marge-bot123] on Oct 8, 2019, 17:33
mentioned in commit 31b23110443365e1608fd45c3c7242ce4e8b1060

In GitLab by [Gitlab user @marge-bot123] on Oct 8, 2019, 17:33
mentioned in commit 31b23110443365e1608fd45c3c7242ce4e8b1060


Remove Parsers Class

It seems to be a glorified map for the config parsers

a glorified map

Map is a bad type in terms of it being both powerful and fragile wrt changing requirements. Saying Parsers is a glorified map ... is imo exactly missing the point that we want to contain/restrict/manage the collection of parsers and we use Parsers to represent this concept.
Having Parsers represent this concept [even though it is currently an internal only concept] makes the design of the internals stronger and better able to handle future changes to requirements.
Removing Parsers is not an acceptable change for me.

I remain skeptical, but ok


Take what is currently playing on Mac and play on Sonos

Hi I was wondering if it is possible to basically replicate selecting the Sonos as an airplay speaker and playing the current Mac audio to it?  Wanted to say auto move the current movie audio I'm watching on Netflix on my Mac over to my Sonos speakers with the press of a button on my stream deck. Anyway to do this?

Sorry, not something that SoCo-CLI can do.
Might be worth exploring whether macOS Shortcuts might be able to do this.


[SR-13639] Code after return, inconsistent diagnostics and behavior

Previous ID
SR-13639

Radar
rdar://problem/69845495

Original Reporter
@jepers

Type
Bug

Additional Detail from JIRA

Votes
0

Component/s
Compiler

Labels
Bug

Assignee
guitardog (JIRA)

Priority
Medium

md5: 93178b7c4343d2f9fee8e7bba810aecd

Issue Description:
The following program runs and prints a series of numbers, so either the warning is misleading or the behavior is not as intended.
func foo() -> Int {

  return _E.bar

  struct _E { // WARNING: Code after 'return' will never be executed
    private static var count = 0
    static var bar: Int {
      count += (Bool.random() ? foo() : 1)
      return count
    }
  }
}

for _ in 0 ..< 7 { print(foo()) }

Related thread (with more similar examples):
https://forums.swift.org/t/should-this-misleading-warning-be-here/40678

FYI, i think this issue has been resolved since ~swift 5.4


Python script link give a 404 error

Please have we have link fixed

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

ID: 30a20df2-727c-1afd-2b87-836ea1ea4f7a
Version Independent ID: 157fc262-fb1f-f12d-0890-e90119feb444
Content: Create a bot using Bot Framework SDK for Python - Bot Service
Content Source: articles/python/bot-builder-python-quickstart.md
Service: bot-service
GitHub Login: @emgrol
Microsoft Alias: kamrani

Thanks for pointing out the broken link; I'll investigate where it went and update the article.

The article has been updated but is not yet live. Here is the link to the updated template location:
https://github.com/microsoft/BotBuilder-Samples/tree/master/generators/python/app/templates/echo

Closing now that the updated link is live.


added stats column

I think if we can show just the numbers that would be more interesting. iIf thats possible.

I think if we can show just the numbers that would be more interesting
we need to update the stats everytime

otherwise, the idea for putting the links is fine - anyone can check the stats even if they aren't updated in the repo
and if hacktoberfest if already keeping the records, why should we!

Okay It also good. Cause putting the data dynmically is really tricky.

Until we can figure out how to put the data dynamically into markdown let's go with it.


Add mailmaps to element repos

Informations

Qiskit version: master
Python version: n/a
Operating system: n/a

What is the current behavior?
Right now when you run the script used to generate the authors list (and then by extension the bibtex file)  it returns a lot of duplicate names or short names for people. This is because we're not so great about maintaining consistent on the author fields in git commits. Luckily git has a native solution for handling this exact problem, a mailmap file:
https://github.com/git/git/blob/master/Documentation/mailmap.txt
If we add a mailmap file to each repository tracked by the generate_authors script defining the overlap and the preferred output name (and email address) git will automatically return us a cleaner and consistent data set for all future runs of the script.
We should have pushed for doing this as part of #15 and #59 but didn't think of it then. We can use the revision history from those PRs as a starting point.
Steps to reproduce the problem
Run tools/generate_authors.py
What is the expected behavior?
The same just with a better output that doesn't need as much hand tweaking
Suggested solutions
Add mailmap files to all tracked elements.

[x] Qiskit/qiskit (https://github.com/Qiskit/qiskit/pull/340)
[x] Qiskit/qiskit-terra (https://github.com/Qiskit/qiskit-terra/pull/2666)
[ ] Qiskit/qiskit-aer
[x] Qiskit/qiskit-ignis (https://github.com/Qiskit/qiskit-ignis/pull/223)
[ ] Qiskit/qiskit-aqua
[ ] Qiskit/qiskit-chemistry
[ ] Qiskit/qiskit-ibmq-provider
[x] Qiskit/qiskit-jku-provider (https://github.com/Qiskit/qiskit-jku-provider/pull/70)

sounds good

Sympy seems to have a well-tested workflow around this see https://github.com/sympy/sympy/wiki/Adding-Someone-to-AUTHORS and https://github.com/sympy/sympy/wiki/Using-.mailmap

Added the .mailmaps for Ignis and JKU

@atilag @chriseclectic @pistoia @diego-plan9 can you take a look at this for aer, aqua, chemistry, and the ibmq provider. This is currently the only blocker for updating the authors list and bibtex file.

@mtreinish Added in Aer PR #283

is this still need to be open?

This is finished and mailmaps from all the repos are used by the generate_authors.py script. If there are weird names or inaccuracies in the authors list/bibtex we can address those by updating mailmaps in the element repos.


straight-thaw-versions ergonomics improvements: auto-fetch, no decapitation

This PR is kinda a catch-all for the things that I found that were ... not ideal with thawing:

#294 - freezing after thawing is not a no-op
#66 - thawing leaves detached HEADs around
#58 - thawing requires fetching beforehand

I think the attached change solves all of these in a fairly neat way,
and I hope you think so too (and that I didn't miss some subtle
interaction!).
straight-vc-git-check-out-commit now normalizes the local repo when checking out a commit.
straight-thaw-versions now:

Tries to ensure that the commit that we're thawing to is present by checking it's there, and if not, fetching.
Uses a new and revamped check-out-commit function that resets --hard instead of running checkout.

With this change, I managed to thaw and re-freeze the versions (with an updated repro case from #294), and they were stable!
I've also updated the README to not mention having to fetch before a freeze, as freeze does that automatically now.
Hope this is reasonable!

Phew, took me 2 tries to get lints to work out, but I think this should do it!

Thanks so much for the review! I have gone through your suggestions & think I addressed them!
I'd be excited for this to be part of the NEWS - we should probably do this as part of another commit, since I don't yet know when it'll go in (:

Alright - I moved this to the develop branch, made that News entry (dating it May 1; feel free to adjust if you need), and added the normalization logic to the check-out-commit function. That needed an incompatible change to the vc interface: check-out-commit only took the local repo, not the recipe (which is needed to normalize).
I adjusted the interfaces, but didn't do anything else about it - please let me know if there's anything else that I should do about it (:

Updated again (:

\o/ - thanks for the thoughtful reviews! I'm super excited to use this going forward (:


use SmartFragmentStatePagerAdapter which is deployed for caching fragmets

Hi, how can i use getRegisteredFragment method on SmartFragmentStatePagerAdapter deployed viewPager? is it for check caching fragment?

This is an automatically generated message.
<EMAIL_ADDRESS>is no longer with Yahoo! Inc.
Your message will not be forwarded.
If you have a sales inquiry, please email<EMAIL_ADDRESS>and someone will follow up with you shortly.
If you require assistance with a legal matter, please send a message to<EMAIL_ADDRESS>Thank you!

Yes you use it to get out different fragments loaded into the ViewPager and it caches then.

@nesquena it meand befor attach fragment to such a ViewPager i must check attached fragment with  getRegisteredFragment if returned fragment is equal with new activity then no necessary to attach again, is it correct?

Is that correct?
Why closed unanswerd issue?

Sorry, I didn't understand the question. The viewpager generates the fragment children pages for you in the adapter, you use getRegisteredFragment to retrieve them out.

No problem. Could you help me how can i cach it and retrieve cached
fragment? Is it work for phone roration?
On Sep 2, 2016 10:15 PM, "Nathan Esquenazi"<EMAIL_ADDRESS>wrote:

Sorry, I didn't understand the question. The viewpager generates the
fragment children pages for you in the adapter, you use
getRegisteredFragment to retrieve them out.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/codepath/android_guides/issues/194#issuecomment-244441858,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGT571COZJ6-wXmbN4WjqgN9aNY4iLZFks5qmGCzgaJpZM4JX9cr
.

The adapter manages all that for you, no need to do extra caching: http://stackoverflow.com/a/7098081

Thanks


Removed Erroneous SubscriptionID as Required Path Parameter

This checklist is used to make sure that common issues in a pull request are addressed. This will expedite the process of getting your pull request merged and avoid extra work on your part to fix issues discovered during the review process.
PR information

[ x] The title of the PR is clear and informative.
[ x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For information on cleaning up the commits in your pull request, see this page.
[ x] Except for special cases involving multiple contributors, the PR is started from a fork of the main repository, not a branch.
[ x] If applicable, the PR references the bug/issue that it fixes.
[x ] Swagger files are correctly named (e.g. the api-version in the path should match the api-version in the spec).

Quality of Swagger

[ x] I have read the contribution guidelines.
[ x] My spec meets the review criteria:

[ x] The spec conforms to the Swagger 2.0 specification.
[ x] Validation errors from the Linter extension for VS Code have all been fixed for this spec. (Note: for large, previously checked in specs, there will likely be many errors shown. Please contact our team so we can set a timeframe for fixing these errors if your PR is not going to address them).
[ x] The spec follows the patterns described in the Swagger good patterns document unless the service API makes this impossible.
The generated code from this Azure spec is currently failing with the error shown in this ticket:

https://github.com/Azure/autorest/issues/1550
We determined that the problem was that the subscriptionID parameter should not be a required path parameter.  The subscriptionID is already included in the resourceUri parameter, so it was clearly redundant and also causing calls for metricDefinitions to fail.  Only after we removed the "subscriptionId" field as a required parameter in the generated sources, were we able to retrieve metric definitions with the generated code.
The same problem exists on the "metrics" endpoint on api version 2016-09-01.  I will be submitting a PR on that next.

This change is

Hi @solvingJ, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
We will now validate the agreement and then real humans will evaluate your PR.
TTYL, AZPRBOT;

@solvingJ - This has been resolved in this PR https://github.com/Azure/azure-rest-api-specs/pull/749/files


Google maps says play services are outdated

I just updated Google Maps, and now on every start up it tells me that I have to update the Google Play Services. Looks like the version number microG reports is not quite as recent as what Google Maps would like to see?
This is with microG <IP_ADDRESS>20 and Google Maps 10.30.2.

+1

+1
[offtopic]
is there any other way to subscribe to notifications than replying with +1 yet?
[/offtopic]

+1
[offtopic]
is there any other way to subscribe to notifications than replying with +1 yet?
[/offtopic]

Click the Notifications on the right... or if you want everything watch the repository.

[offtopic]
is there any other way to subscribe to notifications than replying with +1 yet?
[/offtopic]

Yes, clicking on the subscribe button on the right.

I am watching the repository, but I don't get emails if I don't reply to the topic ;)

also, there is not subscribe button, but it says "unsubscribe",
even so I'm not getting email notifications for replies for any topic I don't reply to

check your github settings and come to the IRC channel for offtopic.

I think I know what you mean, but I don't want every reply on every thread coming to my email:

Maps 10.26.1 is the latest version that doesn't complain about outdated play services.

no, it isn't,
I installed Maps 10.26.0 and the message was still there


Other Games

Hello, in "Euro Truck 2" it works only with "d3dxFont format".
How can change it?
Tested with this: http://www.unknowncheats.me/forum/d3d-tutorials-and-source/65037-topblast-d3d-menu-base-v1-1-sliders-and-supports-2-different-fonts.html
d3dxFont format works, D3DFont9 not work.

Self Problem! Can you fix it @agrippa1994 ?


Serving CertificateRequest failures should be deleted

I experienced some issue with istio-csr trying to renew its own serving certificate. Upon fetch failure, the CertificateRequest resource is kept and not deleted.

https://github.com/cert-manager/istio-csr/blob/9ee95f1fb8b04103217cb7738bf81ce42069c354/pkg/tls/tls.go#L158

But renewal is happening periodically https://github.com/cert-manager/istio-csr/blob/9ee95f1fb8b04103217cb7738bf81ce42069c354/pkg/tls/tls.go#L112
As a result my cluster had accumulated a lot of stale CertificateRequest resources.
This then caused the actual Cert Manager controllers that watches for the CertificateRequest to be OOMKilled. Resulting further failure of CertificateRequest.

Thanks @saturnism, I'll have a look at fixing this.
/assign


Refactorize windows code

The goal is to refactorize windows code to follow ES7 norm like it has been recently done for macOS :

new folder src/windows
a folder for each feature scan, delete, current-connections and `connect``
unit tests for parsers
logs for unit tests
compliant with prettier and linter

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.


Add support for https

Chemspider supports https, however the api does not give the option to request address is https format. This causes issues if content from chemspider is displayed on an https website. Can this be added?

Good idea. You might be able to do this now by doing something like
cs = ChemSpider(api_url='https://www.chemspider.com')

I will have a go and if it looks fine, I'll switch that to the default behaviour.

Thanks for the quick reply! Unfortunately this doesn't seem to work:

Let me know if you can't look at this and I can have a go at submitting a pull request.


All files are added

Hello Microverse.
This is a small project about Portfolio: setup and mobile-first.
I made this with HTML CSS and Flexbox.
I have done all the requirements such as linter error, gitignore file, test MD file, and a README file with the template given in microverse.

Hi <STUDENT_MENTION>,
While you made a great effort in this project, unfortunately, I cannot proceed to review your code.

Invalid Code Review Request
❌ You submitted a project that has no linter set up. Kindly check the project requirements here
❌ Please use descriptive branch names instead of "feature-branch" (e.g.: refactor-authentication, user-content-cache-key, make-retina-avatars), so that others can see what is being worked on. Check more to learn more about this.
❌ Kindly use Microverse Readme template and make sure all the main sections present in yours and placeholders are replaced with your project and personal data. Please remove all the instructions targeting you. For example: "Describe how a new developer could make use of your project." The only optional section is the FAQ. Please remove the template logo on the top, if you have your own logo you can replace it with this one, otherwise please delete it. This is crucial to have a professional and instructive repository. 👌
Your Code Review Request will be marked as invalid in your Dashboard, so please submit a new one once you are ready 🙏
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.
Please, do not open a new Pull Request for re-reviews. You should use the same Pull Request submitted for the first review, either valid or invalid unless it is requested otherwise.

Invalid Code Review Request does not count into the code reviews limit.

@levy002
Thank you very much.

Thank you very much.
I still have problems, I already have merging pull requests but my project
is still on Submit it's not approved yet, could you tell me why?
On Wed, Jan 18, 2023 at 1:48 AM levy_ukwishaka @.***>
wrote:

@.**** approved this pull request.
Hello @asadmisrani https://github.com/asadmisrani
Your project is complete! There is nothing else to say other than... it's
time to merge it [image: :shipit:]
Congratulations! 🎉
https://camo.githubusercontent.com/40c24648ada128030359495b9504e95985194c3f4bbeabf0485e740ecd253bcc/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f6a4a5143327075565a70544d4f34765573302f67697068792e676966
Status: APPROVED 🔥 🔥 Highlights

Good PR description ✔

Optional suggestions
Every comment with the [OPTIONAL] prefix won't stop the approval of this
PR. However, I strongly recommend you to take them into account as they can
make your code better. Some of them were simply missed by the previous
reviewer and addressing them will really improve your application.
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something
is not 100% clear.
Please, remember to tag me in your question so I can receive the
notification.
As described in the Code reviews limits policy
https://microverse.zendesk.com/hc/en-us/articles/1500004088561 you have a
limited number of reviews per project (check the exact number in your
Dashboard). If you think that the code review was not fair, you can request
a second opinion using this form https://airtable.com/shrQAqnBwek5a0O0s.
—
Reply to this email directly, view it on GitHub
https://github.com/asadmisrani/portfolio.github.io/pull/1#pullrequestreview-1252435003,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AYQGAKELIVNRM4XNLA5MSZLWS4ATVANCNFSM6AAAAAAT6IGCP4
.
You are receiving this because you were mentioned.Message ID:
@.***>


[WIP] Fix Feed Warnings and add blacklisting

initial sketch at trying to remove repeated feed warnings and blacklist feeds.
I think this implementation has still some problems:

[ ] Feeds might be blacklisted on error as we even blacklist on valid but empty responses
This is not trivial to fix and probably needs some trial and error with real feeds. And me going though all the old issues again ...
[ ] We decided to get rid of the warning on restore as well. This PR does not implement that part jet (as I want to do those changes separately to make this easier to review for now.

This should in effect reduce the amount of warnings and at the same time improve the performance by less "doomed to fail" requests. Lets see what the CI says.

CI is green -  that makes me even more nervous ...

can you please rebase? thanks

Ok rebased. For some strange reason it feels slower, maybe wrong.
But at the very least we should do a prerelease to give all the people with "special" NuGet servers a chance to test it...

CI failure is unrelated to this PR and in master as well.


Getting an error trying to include ffmpeg

when I add this line to my build.sbt
javaCppPresetLibs ++= Seq("ffmpeg" -> "2.8.1")
I get this error refreshing the sbt project:
[error] (*:ssExtractDependencies) sbt.ResolveException: unresolved dependency: org.bytedeco.javacpp-presets#ffmpeg;2.8.1-1.2: not found
[error] Total time: 5 s, completed Sep 29, 2016 4:35:35 PMSee complete log in C:\Users\Dave.IntelliJIdea2016.2\system\log\sbt.last.log

Try 3.1.2-1.2 instead

Yep, you'll need to use 3.1.2 instead because version 2.8.1 is tied to an older version of JavaCPP (1.1) and we're on 1.2.x.
Try the following:
javaCppPresetLibs ++= Seq("ffmpeg" -> "3.1.2")
javaCppVersion := "1.2.4" // <- not strictly necessary, a good idea to get the latest version.

Closing now, as I am fairly sure the above solution works. If not please reopen !

Yup, works.
Dave
From: Lloyd<EMAIL_ADDRESS>Sent: Friday, September 30, 2016 10:38 PM
To: bytedeco/sbt-javacv<EMAIL_ADDRESS>Cc: David DeCaprio<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [bytedeco/sbt-javacv] Getting an error trying to include ffmpeg (#9)
Closing now, as I am fairly sure the above solution works. If not please reopen !
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/bytedeco/sbt-javacv/issues/9#issuecomment-250889966 , or mute the thread https://github.com/notifications/unsubscribe-auth/AAzVukawN3puKCA7ulxFdz0a120ss7p4ks5qvdWLgaJpZM4KKgm9 .  https://github.com/notifications/beacon/AAzVut4hSLQfetyvdpCXyLMiRLGmnkM3ks5qvdWLgaJpZM4KKgm9.gif


Customization of element position in App's tree

Hello and thank you for the great component!
Unfortunately, it doesn't feet my needs.
I have such render function of my app:
  render() {
    return (
      <Provider store={store}>
        <ActionSheet ref={component => this._actionSheetRef = component}>
          <View>
            {Router.renderNavigatorView({initialRoute: Router.routes.Home})}
            <Toast ref={toast => setNotificationComponent(toast)}/>
          </View>
        </ActionSheet>
      </Provider>
    );
  }

As you see, I already render <Toast/> component right after the current view. It allows me to not show Toast over the whole app, but only for current view. For example, if you swipe view back, the toast dissapears.
I would really like to use same way with root-siblings (to display modal component for current view only, not for whole app). But it is impossible with custom implementation.

@huston007 did you solve this?

@wulucxy unfortunately no, i didn't do anything with that.

You can create a custom view to meet that needs. As the name implies root-siblings will always insert itself into root level.


ts: Convert emoji.js to TypeScript.

Converted emoji.js to TypeScript by adding relevant type definitions, also modified target option in our tsconfig to 'ES2022' so that types for object methods like hasOwn which is being used in emoji.js are included.

Self-review checklist

[ ] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[ ] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[ ] Each commit is a coherent idea.
[ ] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[ ] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

diff --git a/.eslintrc.json b/.eslintrc.json
index c3cabcdac5..b126a19af3 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -140,6 +140,8 @@
         {
             "files": ["web/src/**"],
             "globals": {
+                "Iterator": true,
+                "IterableIterator": true,
                 "StripeCheckout": false
             }
         },

Adding Iterator and IterableIterator to .eslintrc.json should fix the issue.

Yep that fixed it thanks @PIG208 !

This seems to be

typescript-eslint/typescript-eslint#6782

Ideally, we don’t want to have to manually list all the ES2022 globals. Until that fix is merged, try using target: "ESNext" instead.

@andersk That worked too so changed "ES2022" -> "ESNext".

Removed unnecessary map export const deactivated_emoji_name_to_code = new Map();, ready for another review now!

Thanks for the work on this @Lalit3716! I posted a bunch of comments, mostly on naming -- I think my main advice is to spend more time thinking about what to call types, and if you're not sure, consider posting in #frontend to get feedback -- names are really important to the readability of code, and a big part of the benefit of moving to TypeScript is having named types for things, so it's definitely well worth our time to try to name things well. Usually there's pretty good hints in the names of the functions etc. that use a given type.

Thanks for the review! Also I will make sure to take my time with naming things in my future work!, will update the PR soon 🙂.

@timabbott This is ready to review.
I have addressed all the review comments and made a prep commit for the suggested refactoring.

This is great, merged, thanks @Lalit3716!


select from $http list

how can I select from an API say parse.com with $http

Hi @tinocosta84,
you need to configure the directive with the proper items-method (https://github.com/guylabs/ion-autocomplete#the-items-method) and then depending on your response JSON object the needed values like items-method-value-key, item-value-key and item-view-value-key. You can also have a look at the running codepen on how to configure it: http://codepen.io/guylabs/pen/GJmwMw
I hope this helps.
Thanks and regards,
Guy

Hi @tinocosta84,
I will close the issue due to inactivity. Please reopen it if there is still an issue.
Thanks and regards,
Guy


Get-CsOnlineUser and Set-CsUser does not handle exceptions correctly in some cases

Using Teams Online PowerShell module, version 4.0.0 in Windows PowerShell 5.1:
Try running this in a new PowerShell session - and write it literally (i.e. do not substitute "x" with anything else, and do not connect prior to running the command):
PS> Try {Get-CsOnlineUser -Identity "x" -ErrorAction Stop} Catch {Write-Host "Caught"}
Caught

The error will be thrown as an exception that you catch.
Then try this:
PS> Connect-MicrosoftTeams
PS> Try {Get-CsOnlineUser -Identity "x" -ErrorAction Stop} Catch {Write-Host "Caught"}
Microsoft.Teams.ConfigAPI.Cmdlets.internal\Get-CsUser : userId was not found
At C:\Program Files\WindowsPowerShell\Modules\MicrosoftTeams\4.0.0\net472\custom\PsExt\Merged_custom_PsExt.ps1:1836 char:13
+             $user = Microsoft.Teams.ConfigAPI.Cmdlets.internal\Get-Cs ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: ({ Identity = x,...et = Extended }:<>f__AnonymousType58`7) [Get-CsUser_Get], Exception
    + FullyQualifiedErrorId : NotFound,Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Cmdlets.GetCsUser_Get

You will get error data back, even if you asked for errors to be handles as exceptions, and exceptions caught:
Finally try this:
PS> Connect-MicrosoftTeams
PS> Get-Module microsoftteams|Remove-Module;Import-Module microsoftteams
PS> Try {Get-CsOnlineUser -Identity "x" -ErrorAction Stop} Catch {Write-Host "Caught"}
Caught

That is actually a workaround(!)
So I think there's a dependency issue when you import the Teams Online module.
Same thing goes with Set-CsUser.

As far as I could determine, this is a back-end issue. the error is thrown by an internal function:
+ CategoryInfo          : InvalidOperation: ({ Identity = x,...et = Extended }:<>f__AnonymousType58`7) [Get-CsUser_Get], Exception

I belive there is a typo in the Name of the f__AnonymousType variable and the apostrophe is breaking that comparison. The Cmdlet Get-csUser_Get does not adhere to the ErrorAction at all. Have noticed this across multiple cmdlets that now throw errors and had opened a ticket a few weeks ago (still pending)
@isrumnon Has this crossed your radar yet?

@DEberhardt not yet, we'll look into this. Thanks for bringing this up

found a few more examples:
Microsoft.Teams.ConfigAPI.Cmdlets.internal\Search-CsUser : AADGraph Request failed with BadRequest. AAD Code  Message .
Parameter name: https://graph.windows.net/f66fae02-5d36-495b-bfe0-78a6ff9f8e6e/users?api-version=1.61-internal&$select=
assignedPlans,cloudMSRtcIsSipEnabled,preferredLanguage,shadowProxyAddresses,displayName,jobTitle,givenName,surname,acco
untEnabled,streetAddress,cloudSipLine,cloudSipProxyAddress,state,userPrincipalName,proxyAddresses,objectId,usageLocatio
n,dirSyncEnabled,UserType,country,department,provisionedPlans,cloudMSRtcOwnerUrn,tenantId,cloudMSRtcServiceAttributes,c
loudMSRtcPolicyAssignments,mailNickname,companyName,postalCode,city&$top=100&$filter=(contains(cloudSipLine,
%27tel%3a%2b862122128153%27))
At \Documents\WindowsPowerShell\Modules\MicrosoftTeams\3.1.0\net472\custom\PsExt\Get-CsUserSearch.ps1:52 char:13
+             Microsoft.Teams.ConfigAPI.Cmdlets.internal\Search-CsUser  ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: ({ PageSize = , ...olicy = False }:<>f__AnonymousType73`9) [Search-CsU
    ser_Search], Exception
    + FullyQualifiedErrorId : BadArgument,Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Cmdlets.SearchCsUser_Search
    Microsoft.Teams.ConfigAPI.Cmdlets.internal\Grant-CsUserPolicy : User does not exist
    At \Documents\WindowsPowerShell\Modules\MicrosoftTeams\3.1.0\net472\custom\PsExt\Grant-CsUserOrTenantPolicy.ps1:61
    char:13
    +             Microsoft.Teams.ConfigAPI.Cmdlets.internal\Grant-CsUserPo ...
    +             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: ({ Identity = Ho...ntUserRequest }:<>f__AnonymousType55`3) [Grant-CsUs
    erPolicy_GrantExpanded], Exception
    + FullyQualifiedErrorId : ClientError,Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Cmdlets.GrantCsUserPolicy_GrantE
    xpanded
Microsoft.Teams.ConfigAPI.Cmdlets.internal\Set-CsUserGenerated :<PHONE_NUMBER>52 is assigned to another user
 At \Documents\WindowsPowerShell\Modules\MicrosoftTeams\3.1.0\net472\custom\PsExt\Set-CsUserModern.ps1:51 char:13
 +             Microsoft.Teams.ConfigAPI.Cmdlets.internal\Set-CsUserGene ...
 +             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 + CategoryInfo          : InvalidOperation: ({ UserId = sip:...onaryOfString }:<>f__AnonymousType86`2) [Set-CsUser
 Generated_Set], Exception
 + FullyQualifiedErrorId : BadArgument,Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Cmdlets.SetCsUserGenerated_Set

Found another one when running the following commands:
$Filter = 'LineURI -like "*{0}*"' -f "12345678901234"
Get-CsOnlineUser -Filter $Filter

Microsoft.Teams.ConfigAPI.Cmdlets.internal\Search-CsUser : AADGraph Request failed with BadRequest. AAD Code  Message .
Parameter name: https://graph.windows.net/f66fae05-5d36-495b-bfa0-78a6ff9a8e6e/users?api-version=1.61-internal&$select=
assignedPlans,cloudMSRtcIsSipEnabled,preferredLanguage,shadowProxyAddresses,displayName,jobTitle,givenName,surname,acco
untEnabled,streetAddress,cloudSipLine,cloudSipProxyAddress,state,userPrincipalName,proxyAddresses,objectId,usageLocatio
n,dirSyncEnabled,UserType,country,department,provisionedPlans,cloudMSRtcOwnerUrn,tenantId,cloudMSRtcServiceAttributes,c
loudMSRtcPolicyAssignments,mailNickname,companyName,postalCode,city&$top=100&$filter=(contains(cloudSipLine,
%27tel%3a%2b862122128202%27))
At \Documents\WindowsPowerShell\Modules\MicrosoftTeams\4.0.0\net472\custom\PsExt\Merged_custom_PsExt.ps1:1941 char:13
+             Microsoft.Teams.ConfigAPI.Cmdlets.internal\Search-CsUser  ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: ({ PageSize = , ...et = Extended }:<>f__AnonymousType80`11) [Search-Cs
   User_Search], Exception
    + FullyQualifiedErrorId : BadArgument,Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Cmdlets.SearchCsUser_Search

This is on v4 btw.
Filter works for "Userprincipalname -eq '...'" but not for "LineUri -like..."
Does MicrosoftTeams now require a connection to AADGraph or is this message misleading me?

It looks like the * at the beginning is creating issues here:
❯ Get-CsOnlineUser -Filter {LineURI -like '123456789*'} -ResultSize 1

AccountEnabled                         : True
...
#This returns a result

❯ Get-CsOnlineUser -Filter {LineURI -like '*234567890'} -ResultSize 1
Microsoft.Teams.ConfigAPI.Cmdlets.internal\Search-CsUser : Specified method is not supported.
At C:\Users\david.eberhardt\OneDrive - Applicable
Ltd\Documents\WindowsPowerShell\Modules\MicrosoftTeams\4.0.0\net472\custom\PsExt\Merged_custom_PsExt.ps1:1941 char:13
+             Microsoft.Teams.ConfigAPI.Cmdlets.internal\Search-CsUser  ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: ({ PageSize = , ...et = Extended }:<>f__AnonymousType80`11) [Search-Cs
   User_Search], Exception
    + FullyQualifiedErrorId : FeatureNotSupported,Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Cmdlets.SearchCsUser_Sea
   rch
#This does not

#using wildcards at the beginning & end results in the error above

notice that Get-CsOnlineUser actually generates a proper exception as expected if you remove and import the module after connecting to Teams (last part of my original description).

I just tried this now and indeed the search behaves differently.
❯ Get-CsOnlineUser -Filter {LineURI -like '*234567890'} -ResultSize 1
# no result - this should have been giving me a result

❯ Get-CsOnlineUser -Filter {LineURI -like '123456789*'} -ResultSize 1
# no result - this is correct as the LineURI starts with 'tel:+'

❯ Get-CsOnlineUser -Filter {LineURI -like 'tel:+1203816310*'} -ResultSize 1

UserAccountControl                     : PasswordNotRequired, NormalAccount
...
# User object returned

❯ Get-CsOnlineUser -Filter {LineURI -like '*234567890*'} -ResultSize 1

UserAccountControl                     : PasswordNotRequired, NormalAccount
...
# User object returned

@DEberhardt , this issue is not about the filter not working as expected, it's about the cmdlet not throwing exceptions properly and adhering to the -erroraction parameter.
So regarding this issue, I don't think that any of your comments are relevant. Yes, they are relevant but for a totally different bug.

Have noticed this too for other commands with 4.0.0
e.g.
Try {
    Grant-CsTenantDialPlan -Identity <UPN> -PolicyName "Idontexist" -ErrorAction Stop
}
Catch {
    Write-Host "Handling ex"
}

The exception is seen on screen and not caught
Microsoft.Teams.ConfigAPI.Cmdlets.internal\Grant-CsUserPolicy : "Idontexist" not found
.....

But it is in the error stream
$error[0]
Microsoft.Teams.ConfigAPI.Cmdlets.internal\Grant-CsUserPolicy : "Idontexist" not found
.....

And also not sent to an error variable, e.g. this doesn't work either
Grant-CsTenantDialPlan -Identity <UPN> -PolicyName "Idontexist" -ErrorVariable errtdp
Write-Host $errtdp

The workaround posted by @donlassini works so possibly something related to the auto-loading of the MicrosoftTeams module rather than explicitly loading it?

Small update to above...
Reloading the MT modules works for Try Catch but sending to an error variable results in a new exception
Grant-CsTenantDialPlan -Identity <UPN> -PolicyName "Idontexist" -ErrorVariable errtdp

Grant-CsTenantDialPlan : A variable that cannot be referenced in restricted language mode or a Data section is being referenced. Variables that can
be referenced include the following: $PSCulture, $PSUICulture, $true, $false, $null.
.....

@poshdude, I just tested, and it's not related to autoimporting the module FYI.
Your observations around the error variables are great! I can produce the same results.

@donlassini  - thanks for that.  Do you notice that re-importing the module as you suggested reverts back to (now) legacy PSRemoting session for MicrosoftTeams?
e.g. if you run Get-PSSession
Get-PSSession

 Id Name            ComputerName    ComputerType    State         ConfigurationName     Availability
 -- ----            ------------    ------------    -----         -----------------     ------------
  1 SfBPowerShel... api.interfac... RemoteMachine   Opened        Microsoft.PowerShell     Available

and you start seeing legacy properties i.e. as I noted above about the Identity property....

@poshdude - another great observation :-)
I examined it, and noticed that that session is not shown until after you run a command, e.g. Get-CsOnlineUser. If you just reimport the module and do nothing, Get-PsSession will give you nothing. I tried waiting for 2 minutes just in case.

@donlassini  - no worries.  I guess just be aware that the connection changes to legacy and the properties returned by commands may not match the properties we are now expecting in the modern v.4.x module.  Incidentally, this seems to work for me without the need to remove and reload the module, so perhaps a better option here for now?
Try {
     Grant-CsTenantDialPlan -Identity <UPN> -PolicyName "Idontexist" -PassThru -ErrorAction Stop | Out-Null
}
Catch {
     Write-Host "Handling ex"
}

Try {
     Grant-CsTenantDialPlan -Identity <UPN> -PolicyName <A policy that does exist> -PassThru -ErrorAction Stop | Out-Null
}
Catch {
     Write-Host "Handling ex"
}

This is tangential, but many CmdLets have been migrated to the AutoRest API now - these do not create a session when called. AFAIK there is no (published) documentation on which CmdLets are behaving a certain way.
From what I could ascertain, the PSSession is now created silently and in the background. It is also cycled automatically.
I am using Get-CsTenant to validate at the moment, as the Command is not using AutoRest
❯ Get-PSsession

 Id Name            ComputerName    ComputerType    State         ConfigurationName     Availability
 -- ----            ------------    ------------    -----         -----------------     ------------
  3 SfBPowerShel... api.interfac... RemoteMachine   Broken        Microsoft.PowerShell          None
 13 SfBPowerShel... api.interfac... RemoteMachine   Broken        Microsoft.PowerShell          None

❯$Tenant = Get-CsTenant -WarningAction SilentlyContinue -ErrorAction Stop -Verbose
VERBOSE: EnabledForFlight: False, AutoRestCommandInfo: False
VERBOSE: Correlation Id: 1bb4f5cb-b692-437f-a3f1-a37551ed95e5
❯if ( $Tenant ) { return $true } else { return $false }
True

❯ Get-PSsession

 Id Name            ComputerName    ComputerType    State         ConfigurationName     Availability
 -- ----            ------------    ------------    -----         -----------------     ------------
  3 SfBPowerShel... api.interfac... RemoteMachine   Broken        Microsoft.PowerShell          None
 15 SfBPowerShel... api.interfac... RemoteMachine   Opened        Microsoft.PowerShell     Available

IMHO, the PS Remoting  appears to be central to the issue.   We see above that commands that utilise PS Remoting work as expected for exception handling (Try, Catch).  By utilising the Verbose switch as above we can see this behaviour.
# Remove any existing PS Session
Get-PSSession | Remove-PSSession

# Lets have some properties where we can observe legacy vs new values
$csolProps = @(
    'Identity',
    'ObjectId',
    'LineURI',
    'OnPremLineURI',
    'OnPremLineUriManuallySet',
    'FeatureTypes'
)

# Run a command with verbose (AutoRest)
Get-CsOnlineUser -Identity <UPN> -Verbose | Select $csolProps
VERBOSE: EnabledForFlight: True, AutoRestCommandInfo: True

Identity                 : fb3491a9-xxxx-xxxx-xxxx-9a4424ca9c89
ObjectId                 :
LineUri                  : tel:+44xxxxxxxx
OnPremLineUri            : tel:+44xxxxxxxx
OnPremLineUriManuallySet :
FeatureTypes             : {AudioConferencing, Teams, PhoneSystem}

# Run a command that should generate an exception we can catch (AutoRest)
Try {
     Grant-CsTenantDialPlan -Identity<EMAIL_ADDRESS>-PolicyName "Idontexist" -ErrorAction Stop -Verbose
}
Catch {
     Write-Host "Handling ex"
}
VERBOSE: EnabledForFlight: True, AutoRestCommandInfo: True
Microsoft.Teams.ConfigAPI.Cmdlets.internal\Grant-CsUserPolicy : "Idontexist" not found
.....
#Exception not caught using AutoRest

# Run the same command with -PassThru (no AutoRest)
Try {
     Grant-CsTenantDialPlan -Identity<EMAIL_ADDRESS>-PolicyName "Idontexist" -PassThru -ErrorAction Stop -Verbose | Out-Null
}
Catch {
     Write-Host "Handling ex"
}
VERBOSE: EnabledForFlight: False, AutoRestCommandInfo: False
.....
Handling ex
#Exception caught

# If we run the previous command again (AutoRest)
Get-CsOnlineUser -Identity <UPN> -Verbose | Select $csolProps
VERBOSE: EnabledForFlight: True, AutoRestCommandInfo: True

Identity                 : fb3491a9-xxxx-xxxx-xxxx-9a4424ca9c89
ObjectId                 :
LineUri                  : tel:+44xxxxxxxx
OnPremLineUri            : tel:+44xxxxxxxx
OnPremLineUriManuallySet :
FeatureTypes             : {AudioConferencing, Teams, PhoneSystem}

# clear PSSession and re-import the MT module
Get-PSSession | Remove-PSSession
Get-Module MicrosoftTeams | Remove-Module
Import-Module MicrosoftTeams

# now run the previous command again ( no AutoRest)
Get-CsOnlineUser -Identity <UPN> -Verbose | Select $csolProps
VERBOSE: EnabledForFlight: False, AutoRestCommandInfo: False
VERBOSE: Correlation Id: d4c8a5d2-9b58-4a2e-9a83-5cecb03dd51e

Identity                 : CN=fb3491a9-xxxx-xxxx-xxxx-9a4424ca9c89,OU=xxxxxxxxxxxxxxxxxx,OU=OCS Tenants,DC=lync0a001,DC=local
ObjectId                 : fb3491a9-xxxx-xxxx-xxxx-9a4424ca9c89
LineUri                  : tel:+44xxxxxxxx
OnPremLineUri            : tel:+44xxxxxxxx
OnPremLineURIManuallySet : False
FeatureTypes             :

# now we also see legacy property values

Re-importing the module seems to globally set all commands to not use AutoRest,  great for exception handling, but does affect the property values being returned which why I mentioned about your mileage varying.

Hi,
Looks good from policies perspective.
# cycle through available grant policy commands and catch exception
$x = foreach ($cmd in  (Get-Module MicrosoftTeams | Select -ExpandProperty ExportedCommands).Keys) {
    If ($cmd -match 'Grant-Cs\w+Policy') {
        $r = @{}
        $r.Command = $cmd
        Try {
            & $cmd -PolicyName "Idont exist" -Identity <UPN> -ErrorAction Stop
            $r.Exception = $null
        }
        catch {
            $r.Exception = ([string]$_ -split "At line")[0]
        }
        [pscustomobject]$r
    }
}

$x | Format-Table -Autosize

4.0.1
Command                                      Exception
-------                                      ---------
Grant-CsApplicationAccessPolicy              [ClientError] : "Idont exist" not found
Grant-CsBroadcastMeetingPolicy               Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsClientPolicy                         Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsCloudMeetingPolicy                   Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsConferencingPolicy                   Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsDialoutPolicy                        [ClientError] : "Idont exist" not found
Grant-CsExternalAccessPolicy                 [ClientError] : "Idont exist" not found
Grant-CsExternalUserCommunicationPolicy      Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsGraphPolicy                          Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsGroupPolicyPackageAssignment         A parameter cannot be found that matches parameter name 'PolicyName'.
Grant-CsHostedVoicemailPolicy                Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsIPPhonePolicy                        Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsMobilityPolicy                       Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsOnlineAudioConferencingRoutingPolicy [ClientError] : "Idont exist" not found
Grant-CsOnlineVoicemailPolicy                [ClientError] : "Idont exist" not found
Grant-CsOnlineVoiceRoutingPolicy             Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsTeamsAppPermissionPolicy             [ClientError] : "Idont exist" not found
Grant-CsTeamsAppSetupPolicy                  [ClientError] : "Idont exist" not found
Grant-CsTeamsAudioConferencingPolicy         [ClientError] : "Idont exist" not found
Grant-CsTeamsCallHoldPolicy                  [ClientError] : "Idont exist" not found
Grant-CsTeamsCallingPolicy                   [ClientError] : "Idont exist" not found
Grant-CsTeamsCallParkPolicy                  [ClientError] : "Idont exist" not found
Grant-CsTeamsChannelsPolicy                  [ClientError] : "Idont exist" not found
Grant-CsTeamsComplianceRecordingPolicy       [ClientError] : "Idont exist" not found
Grant-CsTeamsCortanaPolicy                   [ClientError] : "Idont exist" not found
Grant-CsTeamsEmergencyCallingPolicy          [ClientError] : "Idont exist" not found
Grant-CsTeamsEmergencyCallRoutingPolicy      [ClientError] : "Idont exist" not found
Grant-CsTeamsEnhancedEncryptionPolicy        [ClientError] : "Idont exist" not found
Grant-CsTeamsFeedbackPolicy                  [ClientError] : "Idont exist" not found
Grant-CsTeamsFilesPolicy                     [ClientError] : "Idont exist" not found
Grant-CsTeamsIPPhonePolicy                   [ClientError] : "Idont exist" not found
Grant-CsTeamsMeetingBroadcastPolicy          [ClientError] : "Idont exist" not found
Grant-CsTeamsMeetingPolicy                   [ClientError] : "Idont exist" not found
Grant-CsTeamsMessagingPolicy                 [ClientError] : "Idont exist" not found
Grant-CsTeamsMobilityPolicy                  [ClientError] : "Idont exist" not found
Grant-CsTeamsShiftsPolicy                    [ClientError] : "Idont exist" not found
Grant-CsTeamsSurvivableBranchAppliancePolicy [ClientError] : "Idont exist" not found
Grant-CsTeamsUpdateManagementPolicy          [ClientError] : "Idont exist" not found
Grant-CsTeamsUpgradePolicy                   [ClientError] : "Idont exist" not found
Grant-CsTeamsVdiPolicy                       [ClientError] : "Idont exist" not found
Grant-CsTeamsVideoInteropServicePolicy       [ClientError] : "Idont exist" not found
Grant-CsTeamsWorkLoadPolicy                  [ClientError] : "Idont exist" not found
Grant-CsUserPolicyPackage                    A parameter cannot be found that matches parameter name 'PolicyName'.
Grant-CsVoiceRoutingPolicy                   Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.

4.0.0
A sea of red....

Command                                      Exception
-------                                      ---------
Grant-CsApplicationAccessPolicy
Grant-CsBroadcastMeetingPolicy               Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsClientPolicy                         Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsCloudMeetingPolicy                   Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsConferencingPolicy                   Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsDialoutPolicy
Grant-CsExternalAccessPolicy
Grant-CsExternalUserCommunicationPolicy      Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsGraphPolicy                          Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsGroupPolicyPackageAssignment         A parameter cannot be found that matches parameter name 'PolicyName'.
Grant-CsHostedVoicemailPolicy                Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsIPPhonePolicy                        Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsMobilityPolicy                       Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsOnlineAudioConferencingRoutingPolicy
Grant-CsOnlineVoicemailPolicy
Grant-CsOnlineVoiceRoutingPolicy             Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.
Grant-CsTeamsAppPermissionPolicy
Grant-CsTeamsAppSetupPolicy
Grant-CsTeamsAudioConferencingPolicy
Grant-CsTeamsCallHoldPolicy
Grant-CsTeamsCallingPolicy
Grant-CsTeamsCallParkPolicy
Grant-CsTeamsChannelsPolicy
Grant-CsTeamsComplianceRecordingPolicy
Grant-CsTeamsCortanaPolicy
Grant-CsTeamsEmergencyCallingPolicy
Grant-CsTeamsEmergencyCallRoutingPolicy
Grant-CsTeamsEnhancedEncryptionPolicy
Grant-CsTeamsFeedbackPolicy
Grant-CsTeamsFilesPolicy
Grant-CsTeamsIPPhonePolicy
Grant-CsTeamsMeetingBroadcastPolicy
Grant-CsTeamsMeetingPolicy
Grant-CsTeamsMessagingPolicy
Grant-CsTeamsMobilityPolicy
Grant-CsTeamsShiftsPolicy
Grant-CsTeamsSurvivableBranchAppliancePolicy
Grant-CsTeamsUpdateManagementPolicy
Grant-CsTeamsUpgradePolicy
Grant-CsTeamsVdiPolicy
Grant-CsTeamsVideoInteropServicePolicy
Grant-CsTeamsWorkLoadPolicy
Grant-CsUserPolicyPackage                    A parameter cannot be found that matches parameter name 'PolicyName'.
Grant-CsVoiceRoutingPolicy                   Policy "Idont exist" is not a user policy. You can assign only a user policy to a specific user.

Error variable checks out too
Grant-CsTenantDialPlan -Identity <UPN> -PolicyName "Idontexist" -ErrorVariable errtdp
Grant-CsTenantDialPlan : [ClientError] : "Idontexist" not found
At line:1 char:1
+ Grant-CsTenantDialPlan -Identity <UPN> -Poli ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Grant-CsTenantDialPlan], Exception
    + FullyQualifiedErrorId : System.Exception,Microsoft.Teams.ConfigApi.Cmdlets.GrantCsTenantDialPlan

Write-Host $errtdp
System.Management.Automation.CmdletInvocationException: [ClientError] : "Idontexist" not found ---> System.Exception: [ClientError] : "Idontexist" not found
   at Microsoft.Teams.ConfigApi.Cmdlets.PowershellUtils.ThrowOnErrors(PowerShell powershell)
   at Microsoft.Teams.ConfigApi.Cmdlets.SyncProcessor.ReceiveOutput()
   at Microsoft.Teams.ConfigApi.Cmdlets.TrpsPSCmdlet.ProcessRecord()
   at System.Management.Automation.CommandProcessor.ProcessRecord()
   --- End of inner exception stack trace ---
   at System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input)
   at Microsoft.PowerShell.Executor.ExecuteCommandHelper(Pipeline tempPipeline, Exception& exceptionThrown, ExecutionOptions options) [ClientError] : "Idontexist" not found [ClientError] : "Idontexist" not found [ClientError] : "Idontexist" not found

One last behaviour to query... the commands are now throwing terminating errors i.e. the error can be trapped without specifying -ErrorAction Stop
Try {
     Grant-CsTenantDialPlan -Identity <UPN> -PolicyName "Idontexist"
}
Catch {
     Write-Host "Handling ex"
}
Handling ex

Is this correct? I would expect to use -ErrorAction Stop if I wanted to catch the error or be able to show the error on console and continue running my script. Thanks.
Is this correct?

It does not work for Set-CsPhoneNumberAssignment. I will report that as a new bug since it behaves differently.
But for the curious people, here's my result:
[string]$AlreadyAssignedNumber = "+11111111"
PS> Try {Set-CsPhoneNumberAssignment -Identity $UPN -PhoneNumber $AlreadyAssignedNumber -PhoneNumberType "DirectRouting" -ErrorAction Stop} Catch {Write-Host "Caught!"}

Code       Message
----       -------
BadRequest Telephone Number '+11111111' has already been assigned to another user

@poshdude , I'd say the normal thing to do is for the cmdlet itself to decide if the error is critical enough to be thrown as an exception, or if it's enough to write it to the error stream. I do not know exactly what the developers want, but if we at least can override that action with -ErrorAction, then I'm happy :-)

@donlassini - Set-CsPhoneNumberAssigment command does behave differently by design, its not a bug is my understanding - see Description here https://github.com/MicrosoftDocs/office-docs-powershell/blob/main/teams/teams-ps/teams/Set-CsPhoneNumberAssignment.md.
Agreed on the exception front, just wanting confirmation that it is indeed by design and not an oversight so that I know how to manage bubbling up the exceptions from these commands.
Best Regards

@poshdude , thank you for that. I've closed my ticket then :-)
Not a consistent way of doing it but at least it's documented.


fix: use @supabase/node-fetch

Part of fixing https://github.com/supabase/supabase-js/issues/612

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 2 (50.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 92.14%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/helper.ts
0
1
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
185

Relevant Lines:
196

💛  - Coveralls


Update in depth docs link

Closes #31

@jbusecke I think we need to address https://github.com/2i2c-org/hub-user-image-template/issues/31#issuecomment-2161616541 first 👍

Hi @jbusecke !
Following the comment in https://github.com/2i2c-org/hub-user-image-template/issues/31#issuecomment-2317241972 I have reinstated the hub user image template guide in the 2i2c docs in addition to the docs on using community-maintained images.
I will close the PR – thank you for your contribution!


Converting from epub to asciidoc

Converting my resume from Apple's Pages, I get errors from asciidoctor-epub3.
This is the output I get when I select "Embed Fonts" when exporting from Pages.
asciidoctor-epub3 --trace -v -s jsepub.epub -o jsauto.pdf
Traceback (most recent call last):
        11: from /mnt/myth/john/bin/asciidoctor-epub3:23:in `<main>'
        10: from /mnt/myth/john/bin/asciidoctor-epub3:23:in `load'
         9: from /mnt/myth/john/.gem/ruby/gems/asciidoctor-epub3-1.5.0.alpha.8/bin/asciidoctor-epub3:32:in `<top (required)>'
         8: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/cli/invoker.rb:102:in `invoke!'
         7: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/cli/invoker.rb:102:in `each'
         6: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/cli/invoker.rb:108:in `block in invoke!'
         5: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor.rb:1575:in `convert_file'
         4: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor.rb:1575:in `open'
         3: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor.rb:1575:in `block in convert_file'
         2: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor.rb:1502:in `convert'
         1: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/document.rb:1060:in `convert'
/mnt/myth/john/.gem/ruby/gems/asciidoctor-epub3-1.5.0.alpha.8/lib/asciidoctor-epub3/converter.rb:35:in `convert': Encountered unexpected node in epub3 package converter: embedded (ArgumentError)

This is what I get when I leave "Embed Fonts" off when exporting from pages.
asciidoctor-epub3 --trace -v -s JohnSchmittResume-Sept-2017.epub -o jsauto.pdf
Traceback (most recent call last):
        21: from /mnt/myth/john/bin/asciidoctor-epub3:23:in `<main>'
        20: from /mnt/myth/john/bin/asciidoctor-epub3:23:in `load'
        19: from /mnt/myth/john/.gem/ruby/gems/asciidoctor-epub3-1.5.0.alpha.8/bin/asciidoctor-epub3:32:in `<top (required)>'
        18: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/cli/invoker.rb:102:in `invoke!'
        17: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/cli/invoker.rb:102:in `each'
        16: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/cli/invoker.rb:108:in `block in invoke!'
        15: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor.rb:1575:in `convert_file'
        14: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor.rb:1575:in `open'
        13: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor.rb:1575:in `block in convert_file'
        12: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor.rb:1457:in `convert'
        11: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor.rb:1341:in `load'
        10: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor.rb:1341:in `new'
         9: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/document.rb:463:in `initialize'
         8: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/document.rb:463:in `new'
         7: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/reader.rb:569:in `initialize'
         6: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/reader.rb:65:in `initialize'
         5: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/reader.rb:582:in `prepare_lines'
         4: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/reader.rb:94:in `prepare_lines'
         3: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/helpers.rb:80:in `normalize_lines_array'
         2: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/helpers.rb:80:in `map'
         1: from /usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/helpers.rb:80:in `block in normalize_lines_array'
/usr/share/gems/gems/asciidoctor-<IP_ADDRESS>/lib/asciidoctor/helpers.rb:80:in `rstrip': asciidoctor: FAILED: /mnt/myth/john/resume/JohnSchmittResume-Sept-2017.epub: Failed to load AsciiDoc document - invalid byte sequence in UTF-8 (ArgumentError)

I think you may be misunderstanding the purpose of this converter. This converter is for converting from AsciiDoc to EPUB3. It does not read an EPUB3 file.

Thanks for the explanation.


Update release workflow

What does this PR do?
Change the release workflow to only use one source tag.
Motivation
What inspired you to submit this pull request?
Additional Notes
Anything else we should know when reviewing?

Thanks 🙇


Design RFL platform with Alu Extrusion we have.

Gather the profile type / length of what we have
50 x 100 x 1206 : 12 pcs (Matteo)
50 x 100 x 6000 : 9 pcs (latform base)
50 x 50 x 1500 for gripper

I have moved the assembly by 100mm higher such that there are two layers of aluminium substructures = more space for the screwdriver to move.
https://github.com/gramaziokohler/itj_design_study/commit/d0a29bac2605bbe5746ff2dbf2cf02a7cf241b4b
The assembly probably still needs to be moved one more time right before production to accommodate for alu platofrm construction deviation.


WIP: Try to get languages from librarian bot PR for FTS

This PR is still in progress, but it is a suggestion about how to get the language from open PRs from the librarian bot.
Please let me know what you think.
Pending: tests, refactor.
For https://huggingface.co/datasets/Osumansan/data-poison/commit/22432ba97e6c559891bd82ca084496a7f8a6699f.diff , it was able to identify 'ko' language, but since it is not supported by DuckDB, it assigns 'none' as stemmer.
cc. @davanstrien

the librarian bot is often run after the duckdb index is done no ? not sure it would help a lot vs making things more complex

the librarian bot is often run after the duckdb index is done

But a dataset might also be updated at some point, in this case the librarian bot's PR should be there, am I right?
To me, this doesn't add a lot of complexity, I think it's very nice and reasonable - why not using this "free" opportunity to make the search tool more precise and reliable .
Alternatively, to make it work independently of if there is a librarian bot's PR open, would it make sense to reuse the bot's code and create a new processing step for language detection? It uses fasttext over 1000 rows so shouldn't be computationally intensive.
But I don't know the number of cases it would cover and if it's worth the effort. How many datasets do not have language metadata tag?

Most datasets are quite static, that's why I'm a bit concerned with using the librarian bot info that might not be available.
Having automatic language tags on the viewer side does fix this issue though (ideally with a call to action in the UI to open a PR to fix the language if it did a mistake). And it would help with filtering by language which could end up even more useful than the search improvement itself maybe ?

would it make sense to reuse the bot's code and create a new processing step for language detection?

I also agree it would make more sense to have a processing step using the librarian bot code. Even if we don't use these data on the UI, it would give us an idea about the dataset's language statistics. If we aim to democratize from the data side, how can we measure our goal if we don't have data to help us see the languages we can cover?

would it make sense to reuse the bot's code and create a new processing step for language detection?
This would be very nice, IMO. This came up a bit before, but I think having a UI to suggest metadata was automatically generated, which could then be fixed/accepted as authoritative, could be very cool. This could potentially be extended in the future to add other steps.


fix bug during broker update proxification

Coverage increased (+0.01%) to 90.215% when pulling 8b8d66b808f1d8b14a29e63c5241b68ddc7cb293 on bug-fix into 5bd716319bf02af70e73c9e2b37898f728810f57 on master.


how to show features on marker popup

Here i am adding a marker(lat and long) on the map and need to show the features of shapefile on the popup of it..can anyone help me out
var marker = L.marker([48.74895, -96.37207]).addTo(m);
marker.bindPopup("" + marker.getLatLng()).openPopup();

if that lat long is on the geoJson layer have to show the featues in popup of the marker

same way you'd do it with geojson http://leafletjs.com/examples/geojson.html,
a bind popup in the on each feature
On Wed, Feb 10, 2016 at 4:54 AM Siv-Vad<EMAIL_ADDRESS>wrote:

Here i am adding a marker(lat and long) on the map and need to show the
features of shapefile on the popup of it..can anyone help me out
var marker = L.marker([48.74895, -96.37207]).addTo(m);
marker.bindPopup("" + marker.getLatLng()).openPopup();
if that lat long is on the geoJson layer have to show the featues in popup
of the marker
—
Reply to this email directly or view it on GitHub
https://github.com/calvinmetcalf/leaflet.workspace/issues/1.

But the marker has to get the features from shapefile??.Have to plot the lat and long by using marker.If that lat and long falls on shapefile layer it should show the features in that marker popup when we click on it.

oh I see you want a marker placed by latlon and have it look up the shapefile, that is not easy to do and would require you writing some custom code... but if what you really want is for a user to be able to click on a map and have a popup window show the feature, then you're thinking about it the wrong way and you should put bind popup on the features that you loaded using https://github.com/calvinmetcalf/leaflet.shapefile,

Can you please help me out on getting features on marker popup ??


Adding google maps as dependency breaks listViews scroll behaviuour on iOS

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
All testing is done on iOS device, iPhone 14 pro max iOS 16.4 simulator

Create a flutter app
Add a listview or SingleChildScrollView with enough items so you can scroll -> scrolling in the listview is smooth as spected
Add google_maps_flutter as a dependency to the app. No need to use it. -> scrolling in listviews is not smooth

Expected results
scrolling should be smooth
Actual results
scrolling is not smooth
Code sample
Code sample
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
          body: SingleChildScrollView(
        child: Column(
          children: const [
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
            SizedBox(height: 20),
            Text('SAMPLE TEXT'),
            SizedBox(height: 20),
          ],
        ),
      )),
      title: 'APP',
      debugShowCheckedModeBanner: false,
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.7.12, on macOS 13.3.1 22E261 darwin-arm64, locale en-CO)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[!] Xcode - develop for iOS and macOS (Xcode 14.3)
    ! CocoaPods 1.10.2 out of date (1.11.0 is recommended).
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To upgrade see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.2)
[✓] VS Code (version 1.78.0)
[✓] Connected device (3 available)
[✓] HTTP Host Availability

Hi @Csierram96
TBH this seems weird to me :). But I also try this but can't see the issue.

Demo
https://github.com/flutter/flutter/assets/104349824/82ed59b4-7b73-4ee2-88dd-15989025c92e

Since this looks like a performance issue, I would suggest you check this on a physical device for better results. Also, can you please provide a recorded video for this as well?

Closing as a duplicate of https://github.com/flutter/flutter/issues/94491
See https://github.com/flutter/flutter/issues/93177#issuecomment-984004447


Blob service returns undocumented error AuthorizationPermissionMismatch

Which version of the SDK was used?
0.8.0
Which platform are you using? (ex: Windows, Linux, Debian)
Linux/Ubuntu 18.04 LTS
What problem was encountered?
Using token credential, blobURL.GetProperties returns undocumented ServiceError AuthorizationPermissionMismatch and the error cannot be found on the documentation (both common and blob). However, it does seems an error for SAS credential (link) but it is not the way to authenticate in this case.
===== RESPONSE ERROR (ServiceCode=AuthorizationPermissionMismatch) =====
Description=403 This request is not authorized to perform this operation using this permission., Details: (none)
HEAD https://xxxx.blob.core.windows.net/yy/zz?[REDACTED]
Authorization: REDACTED
User-Agent: [Azure-Storage/0.7 (go1.14.2; linux)]
X-Ms-Client-Request-Id: [REDACTED]
X-Ms-Version: [2018-11-09]
//  --------------------------------------------------------------------------------
RESPONSE Status: 403 This request is not authorized to perform this operation using this permission.
Date: [Thu, 25 Jun 2020 05:03:26 GMT]
Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
X-Ms-Error-Code: [AuthorizationPermissionMismatch]
X-Ms-Request-Id: [REDACTED]
X-Ms-Version: [2018-11-09]
How can we reproduce the problem in the simplest way?

without granting any of permissions like Storage Blob Reader to the storage account
do a GetProperties on any blob

Have you found a mitigation/solution?
We switched to check response code instead.
Can we just add a new ServiceCodeAuthorizationPermissionMismatch of type ServiceCodeType?

@feiyushi
Thanks for reaching out!
This has already been taken care of and we are going to push it in next release.


Document how to change a document

Hello, could you point out in the documentation what is the right way to deal with changes in the structure of the stored document? In particular when there is data already saved in the database.
I am unsure if you need to create a new class or if there is a way to describe the new structure, etc.
Thanks!

You can write a custom serializer/deserializer class with Json.NET, that would solve the issue, and also store a version number with the document that you could use to handle how to transform the document.
We could also add an event before a document is deserialized such that you could change its structure before.

I may not being understanding correctly; is the serializer/deserializer with json.net intended to be used once to adjust the entries in the Document table to the new schema, or are you talking about adjusting the structure when the document is retrieved? (The second part of your comment makes me think about this second option)

When you update your classes, the data which is already stored might be incompatible, and you might lose content. What I suggest is to create your own deserializer logic to tell Json.NET how to read the document and construct the POCO from it.
Example:
https://github.com/OrchardCMS/OrchardCore/blob/dev/src/OrchardCore/OrchardCore.ContentManagement.Abstractions/ContentItem.cs#L9
https://github.com/OrchardCMS/OrchardCore/blob/dev/src/OrchardCore/OrchardCore.ContentManagement.Abstractions/ContentItemConverter.cs

Sounds good. So this is called every time the document is retrieved or saved. And this  is how the document is used in the session: https://github.com/OrchardCMS/OrchardCore/blob/dev/src/OrchardCore/OrchardCore.ContentManagement/DefaultContentManager.cs
correct?

Yes, the conversion is transparent when using the session, that one of the values of yessql.


Need cross-platform Outlook SSO sample

The https://github.com/OfficeDev/PnP-OfficeAddins/tree/main/Samples/auth/Outlook-Add-in-SSO sample requires ASP.NET and cannot run on Mac. Create an Outlook SSO sample that uses Node.js to support cross platform development work.
Created based on customer suggestion: https://github.com/OfficeDev/office-js-docs-pr/issues/2955

Sorry for late reply in the original issue, and thank you for handling it.
I want to add one comment. I wanted to mean it's better for Mac developers to provide .NET Core based sample code instead of .NET Framework app.
If we have that sample, we can utilize learn how to implement it with newer .NET code.

Thanks @vault79 for that detail! Would you be developing the SSO add-in on Visual Studio for Mac and testing in that environment? Thanks!

Thank you for your quick comment @davidchesnut , but let me double check what you mean.
With this project file, I realize that I need following technologies at least.

.NET Framework 4.8
IIS as web server

In my understanding, these 2 technologies can run only on Windows. Therefore Microsoft released .NET Core as cross platform runtime for every developers. Do you mean I can run this .NET 4.8 based sample app if I install Visual Studio for Mac even if these 2 required technologies only supports Windows ? - Sorry for my few knowlege about pure Windows technologies.. so I'm happy if you help me to understand it.

@davidchesnut : Do you have an example for Outlook add-in smillar to Office-Add-in-NodeJS-SSO project? Office-Add-in-NodeJS-SSO only supports word, excel and PPT. I am looking for similar app for outlook. Any. reference will be appreciated.
Thank you in advance.

Hi @priya-cloud, Our current plan is to point folks to the Microsoft identity platform code samples. These samples are great and cover a lot of different platform scenarios. The key is that you need to modify them to use the Office dialog API which you can find lots of info on here: Authenticate and authorize with the Office dialog API. Down the road we're working to provide a template that you could take and apply to these existing samples to modify them to work with Outlook add-ins or Office add-ins.


Usage with gatsby

I have a Gastby site deployed with now. Where should these lines be going: res.setHeader("Cache-Control", "s-maxage=1, stale-while-revalidate");?
Or can I only us this feature with NextJS?
https://github.com/zeit/spr-landing/blob/master/pages/index.js#L178-L181

Answer
You should insert that tag in both a page or an API response. In fact, in anything that you want the behavior described below by the caching mechanism.

Serve the content that you have.
In the background, refresh this content based on the original one.

A break-down for each component:

s-maxage=1:  For how much time content should be considered "fresh".
stale-while-revalidate: If the content is not fresh, serve it anyways but execute a refresh. This will tell the CDN the content should be fetched again but the content is "stale while revalidating".

Is it possible to have a rebuild triggered when using this header with @now/static-build?
The intro post gave me the impression this could be done:

In short, you can begin adding this header to any of your Now deployments, using whatever technology you like (Next.js, Gatsby, Node.js, Go, Rust...), without any rewrites or lock-in.

(https://zeit.co/blog/serverless-pre-rendering)
But it doesn't seem to work for me.
package.json:
{
  "name": "spr-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "now-build": "mkdir ./dist && date > ./dist/index.html"
  },
  "author": "Ash",
  "license": "ISC"
}

now.json:
{
  "version": 2,
  "builds": [
    {
      "src": "package.json",
      "use": "@now/static-build"
    }
  ],
  "routes": [
    {
      "src": "^/(.*).html",
      "headers": {
        "Cache-Control": "public, max-age=1, stale-while-revalidate"
        }
      }
  ]
}

The date never changes, so it seems the build is only triggered on initial deploy.
It's totally possible that I've misunderstood 🙂. But some clarification on how this feature works with static build would be great! Thanks.

It is not about the build, but data. How do you fetch and store data?
This tag introduces a way to serve data while refreshing on the background. Try to look at https://zeit.co/blog/serverless-pre-rendering#cache-control:stale-while-revalidate