No Private Repo's Results In 500 Error

If you try and go through the on boarding flow, without the ability to create any private repo's on your GitHub.com account, then you get an 500 internal server error.
I'm thinking perhaps this should be changed to give the user a more friendly message?
This is the error from the console:
Octokit::UnprocessableEntity - POST https://api.github.com/user/repos: 422 - Please upgrade your plan to create a new private repository. // See: https://github.com/pricing:

Thanks for reporting, yes definitely something we'll have to handle 👍 To start using fastlane.ci, can you upgrade your account and give it another shot?

We encrypt all the important bits using the key from FASTLANE_CI_ENCRYPTION_KEY RSA256-CBC (using SHA256 digest) BUT I like to rotate my keys so I'm ok with keeping my config repo public.
So like @KrauseFx mentioned, I still think people shouldn't make it public if they can help it. While RSA256 is supposedly unbreakable, and we're using the SHA256 digest on the key, it could still, theoretically contain a backdoor/bug that makes brute forcing possible.

Sorry about the late reply on this. So its kind of more annoying because its attempting to create a private repo under the bot account. Thing is, I think for most people the bot account won't have any private repo's, as chances are they're not paying a subscription on that account. I guess things might be a little different if using an organisation account though 🤔
Perhaps it would be good to give an option to specify an already created repo. This way, I would be able to create a private repo under my account and give my bot account collaborator access to it?

Oh wow, that's a great point, the bot account will never have a paid GitHub plan. Ok so how about this: we don't ever create a repo for the user, but instead tell the user to create one, grant access to the bot, and provide the URL? We verify that's it's a GitHub URL (for now) and go from there

I think thats a good solution @KrauseFx 👍

The credentials that we're using in the configuration repository service are the clone user's credentials: [1], [2].
I just went through the onboarding to verify. It did create the repository in the clone user's account, however it failed due to #607.
What I think is causing this to fail is that the bot user account doesn't have access to the private configuration repository, thus when it tries to clone it, it can't find the repo.
This is a regression, because when I initially wrote this part of onboarding it would both create and clone the repo using the clone user's API token.

So, I think to summarize what we can do is the following:

Create the repo if it doesn't exist, using the user's credentials
Use https://developer.github.com/v3/repos/collaborators/#add-user-as-a-collaborator to grant the bot account access
Clone the repo using the bot account

We want to use the bot account for as much of this stuff as possible.

Maybe I'm too late for the discussion about this (and ignore the message if it is), but I kind of like the idea of auto-creating the (I'm in the case that there's no ci-config repo in the user's account yet) repo using the following logic:

Insert repo name.
Choose for either private or public repo (a combo box).
Try to create it.

If success, great, go ahead.
If failed with Octokit::UnprocessableEntity, ask for fallback to public repo.
If failed for other reason, rescue properly.


Allow Shortcodes in Copyright Footer

Feature Description
It would be great if we can also use shortcodes, specifically for displaying the current year.
Problem/Solution
Right now, you have to "hard code" the year (or I am not able to figure out how to make shortcodes work).
Alternatives Considered
As a workaround, I copied/modified the footer.html to use the shortcode to display the current year.
Additional Context
Since printing the current year is a common scenario, it would be nice if the theme would allow such thing out of the box or provide an option to display the current year automatically.

Hi, I think we could put shortcodes in the copyright footer.
e.g. layouts/shortcodes/year.html:
{{- time.Now.Year -}}

use this shortcode in i18n/en.yaml
copyright: "© {{`{{% year %}}`}} Your Project"


new objects added via produce are not frozen

I am playing around with immer.js. I have added new object to draft in produce function. After receiving new state whole object is frozen except newly added child.
const nextState = produce({items: {}}, draftState => {
    draftState.items['test'] = { id: t, name: 'ITEM-NEW', value: 0 };
  });

Object.isFrozen(nextState.items.test) // false

Or
const nextState = produce({items: [] }, draftState => {
    draftState.items.push({ id: t, name: 'ITEM-NEW', value: 0 });
  });

Object.isFrozen(nextState.items[0]) // false

But
Object.isFrozen(nextState.items) // true

I think it should be frozen or?

@vytautas-pranskunas- it does not seem like @mweststrate intends for this. See test at https://github.com/immerjs/immer/blob/a7a8cfab2e5b0ab0466cca51a003abb18bd68b01/tests/frozen.js#L110
I am still very new to Immer, so not sure as to why this is intended (likely performance issues, or the fact that the produce function might reference a closure when you add the new item to the draft and you might not want that referenced object to suddenly become frozen. Either way, this seems to be intended.

I see freeze benefits because less exp devs cannot change it directly same
like immutablejs. If i add new object and it is not frozen then it can be
changed directly not via immer. So where us immutability?
On Sat, May 11, 2019, 10:02 AM Pieter Venter<EMAIL_ADDRESS>wrote:

@vytautas-pranskunas- https://github.com/vytautas-pranskunas- it does
not seem like @mweststrate https://github.com/mweststrate intends for
this. See test at
https://github.com/immerjs/immer/blob/a7a8cfab2e5b0ab0466cca51a003abb18bd68b01/__tests__/frozen.js#L110
I am still very new to Immer, so not sure as to why this is intended
(likely performance issues, or the fact that the produce function might
reference a closure when you add the new item to the draft and you might
not want that referenced object to suddenly become frozen. Either way, this
seems to be intended.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/immerjs/immer/issues/363#issuecomment-491489910, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AA54ZF2QW2OOXTGMTIGAI73PUZ4QRANCNFSM4HMHKW3Q
.

I understand, but remember there is no guarantee that it is a new object. It could be referencing something from the parent scope. I suggest you call Object.freeze(newObj) before adding it to the draft. At least until @mweststrate or @aleclarson had time to respond

I know i can do thus but first thing this is costly operation and for prod
is not required... Second thing i am doing generic thing and users should
not be aware of object.freez 😉
On Sat, May 11, 2019, 1:01 PM Pieter Venter<EMAIL_ADDRESS>wrote:

I understand, but remember there is no guarantee that it is a new object.
It could be referencing something from the parent scope. I suggest you call
Object.freeze(newObj) before adding it to the draft. At least until
@mweststrate https://github.com/mweststrate or @aleclarson
https://github.com/aleclarson had time to respond
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/immerjs/immer/issues/363#issuecomment-491501410, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AA54ZF3JTKSALUA3XRGUH3TPU2RRHANCNFSM4HMHKW3Q
.

Duplicate of #260
For a workaround, see here: https://github.com/immerjs/immer/issues/260#issuecomment-443708874

Ok so then explain me benefit of using immer versus plain object
manipulation? Is that immer creates new object on each manioulation?
On Sat, May 11, 2019, 1:57 PM Alec Larson<EMAIL_ADDRESS>wrote:

Duplicate of #260 https://github.com/immerjs/immer/issues/260
For a workaround, see here: #260 (comment)
https://github.com/immerjs/immer/issues/260#issuecomment-443708874
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/immerjs/immer/issues/363#issuecomment-491504893, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AA54ZFZ27GHKBFDCQPTWXP3PU2YDNANCNFSM4HMHKW3Q
.

The point of this library is to make writing "updates" to immutable data structures easy. The point is not to make the data itself immutable (although it does make stuff mutated by users immutable, in dev mode, as convenience for devs). if your goal is to make the data structures themselves immutable, you can use a library like deep-freeze, either on the entire tree, or just on the data passed in to producers, or create your own produce that calls immer produce first, and then applies deepFreeze to the result.

Then perf comparison of immutableJs is not totally correct because
deepFreee will have perf impact and immutableJs does not freezing objects
but does not allow you to muttate any data without creating new state.
2019-05-13, pr, 09:54 Michel Weststrate<EMAIL_ADDRESS>rašė:

The point of this library is to make writing "updates" to immutable data
structures easy. The point is not to make the data itself immutable
(although it does make stuff mutated by users immutable, in dev mode, as
convenience for devs). if your goal is to make the data structures
themselves immutable, you can use a library like deep-freeze, either on the
entire tree, or just on the data passed in to producers, or create your own
produce that calls immer produce first, and then applies deepFreeze to
the result.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/immerjs/immer/issues/363#issuecomment-491715009, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AA54ZFZZO4PE6LEJBV5YJNLPVENCLANCNFSM4HMHKW3Q
.

--
Pagarbiai,
Vytautas Pranskunas


[Feature request]: Keep buttons away from the overflow menu in old layout UI

If some or all of the - Share, Clip, Save, Download and Thanks buttons are enabled/not hidden via AdashimaaTube, have those buttons kept visible on screen at all times rather than some of the buttons being demoted to the 3 dot overflow menu.
This might not work with the new layout UI due to lack of space, but with the old layout UI there is plenty of room for the buttons to be placed to the left of screen.
That might mean the like/dislike icon statistics would have to be shifted slightly but this could easily be accommodated to make the buttons fit.
What the old layout UI currently looks like -

My [Feature Request] for the old layout UI to look like -

Additional context
It's especially annoying when IMO the most useful button of all, (the 'Save' button),  is inserted into the 3 dot overflow menu.
The 3 dot overflow menu can still be kept in tact as apart of the UI but should only hold  the 'Report' & 'Show Transcript' buttons.

Everything will work perfectly if Return YouTube Dislike fix the old description panel.

temporary fix
ytd-watch-metadata #subscribe-button {
     display: none;
}

ytd-watch-metadata[flex-menu-enabled] #actions-inner.ytd-watch-metadata {
     width: 100% i;
}

temporary fix
ytd-watch-metadata #subscribe-button {
     display: none;
}

ytd-watch-metadata[flex-menu-enabled] #actions-inner.ytd-watch-metadata {
     width: 100% i;
}

From my testing this coding seems to restore the buttons in their rightful place underneath the player, most importantly it helps with bringing the 'Save' button out and away from the overflow menu. Thank you!


Add quirk for Schneider Electric 1GANG/SHUTTER/1 (MEG5113-0300)

Proposed change
Add a quirk for Schneider Electric 1GANG/SHUTTER/1 (MEG5113-0300) to

correct the lift percentage (which is inverted).
add some manufacturer-specific features.

Additional information
This PR is based on @axellebot’s work in #1705. As the latter is incomplete, I have removed the code of which I don’t know whether it works.
I have successfully tested the quirk with a real device connected to Home Assistant via ZHA.
Checklist

[x] The changes are tested and work correctly
[x] pre-commit checks pass / the code has been formatted using Black
[x] Tests have been added to verify that the new code works

Thanks for the positive review, @TheJulianJES!
Fair enough, I’ve removed the README. Is there maybe a better place to put it? I suppose @axellebot’s idea behind the file was to have something similar to Zigbee2MQTT’s devices DB, just for zigpy. I thought about a wiki, but zha-device-handlers doesn’t have one.
Regarding home-assistant/core#108238: I can certainly test my device with/without the quirk once this has landed in a HA release. I doubt, though, that the new inversion logic will help here, as it mostly seems to be based on reversing the motor direction. I had tested that manually before implementing the quirk, and it just resulted in a swapping of the up/down push buttons – interestingly both on the wall and in the HA GUI. The opened/closed states in HA were still wrong.

I think device / vendor things is the best place in the Wiki https://github.com/zigpy/zigpy/wiki.

I thought about a wiki, but zha-device-handlers doesn’t have one.

I think putting quirks-related stuff in a quirks wiki would be good.

Also, to structure it like the rest of our repo, I'd get rid of the devices and clusters folders/package.
Just have zhaquirks/schneiderelectric and put the shared code/clusters/constants in __init__.py.
The shutters.py can go into that folder/package too.

Should I maybe just create an initial structure for a zigpy/zha-device-handlers wiki?

Yup, I think that's fine.

Should I maybe just create an initial structure for a zigpy/zha-device-handlers wiki?

Yup, I think that's fine.

Ok, I’ve created a wiki home page and added a Schneider-specific page with the deleted “README” (mostly as in a4d596c8e70fb951478c935ca93d3b48789d16da).

@TheJulianJES, as promised, I’ve tested HA 2024.2.0 (and hence home-assistant/core#108238) with and without the quirk from this PR:

Without the quirk, the lift percentage is still inverted (just like before).
The quirk continues to fix this (just like before).
I can see the new invert switch in the GUI (with and without the quirk), however, it behaves like I described in a previous comment (and which is not useful for this Schneider Electric device).


ISPN-13699 WildFly OpenSSL 2.2.0.Final

https://issues.redhat.com/browse/ISPN-13699

CI doesn't look too happy, Tristan:
https://ci.infinispan.org/job/Infinispan/job/PR-9877/2/testReport/junit/org.infinispan.server.router.integration/SinglePortTest/shouldUpgradeThroughALPN/

I've fixed the poms to directly reference the specific natives


Keras-Tensorflow not accurate / not working properly

The Keras-Tensorflow model for detecting malicious URLs is highly inaccurate (~20%) and shows a flat curve or no change over time.
Either the code implementation isn't correctly suited to the dataset or the model construction isn't correct

Fixed with 10ec071


Problem with Webpack 5.0

Hello everyone. I have some problem when  i updating from webpack 4 to 5 version. When i build project  i have error in the console.

Error in line code.

the same issue for me.
Some more details:
result.resource is undefined.
It can be accessed at result.createData.resource but then the following:
Uncaught exception: Error: NormalModuleFactory.afterResolve is no longer a waterfall hook, but a bailing hook instead. Do not return the passed object, but modify it instead. Returning false will ignore the request and results in no module created.

@sergeu90 ic, it's true. thanks.

@NekR Hello. Are we planning to upgrade to webpack 5?

Can anyone have experience writing a plugin for webpack? Maybe anyone fork and rewrite this library

The last release was done about two years ago. I don't believe that we find any help here.

Does it mean the plugin is dead?

https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin

@gowrav-scienaptic  Can you explain? Is it alternative plugin?

@sergeu90, Yes it's an alternative for offline-plugin. You can read the details on how to integrate here.

We are using offline-plugin and attempting to upgrade to Webpack 5. Should we wait for this issue to be resolved or is this no longer maintained?

@timminata plugin author doesn't reply over two years. Unfortunately, the answer is yes.

@timminata Thanks. I migrated to workbox.

Hello guys !
Our team needs offline-plugin to work with Webpack 5, so we worked on a fix here : https://github.com/NekR/offline-plugin/pull/498
Enjoy :)
LCDP,

Hello again guys !
Our team forked and worked on a relase candidate that work with Webpack 5, it's available here => https://www.npmjs.com/package/@lcdp/offline-plugin
Any feedback are welcome, we need you to improve the compatibility with webpack 5 !


Regex rewrites using capture groups

Describe the feature request
Given that Envoy seems to already support regex rewrites, it would be excellent if this could be used on VirtualServices to rewrite prefixes, URIs, etc.
Describe alternatives you've considered
Current workaround is to have a gateway with nginx doing the rewrites, but it defeats the purpose of having an ingress gateway/gateway resource.
Additional context
This was previously requested here: https://github.com/istio/istio/issues/15857 but closed because Envoy didn't support rewrites like this at that moment.
This was implemented here: https://github.com/envoyproxy/envoy/pull/10050

anyone?

I upvote it.
I noticed the code sets a PrefixRewrite here https://github.com/istio/istio/blob/master/pilot/pkg/networking/core/v1alpha3/route/route.go#L422
But now there's also a RegexWrite available (https://github.com/envoyproxy/go-control-plane/blob/master/envoy/api/v2/route/route_components.pb.go#L1136).
May be the HTTPRewrite could have something similar to 'StringMethod method' (as in HTTPMatchRequest), in which we could specify regex or prefix.

This seems like a reasonable addition to the API, and should be fairly easy to implement. StringMethod may cause issue since there is no exact and it would require deprecating the existing field. We could also just add a uriRegex or something else.

@howardjohn would like to take a look into fixing this issue.
Assigning this issue to myself.

Greetings, colleagues, @abhide  , I am very interested in the progress on this task.
Have the features been included in the product development plans?

@abhide I am interested in this feature, please let me know if i can help in anyway to speed this up..

@praveenbingo I have a PR in review to add the attributes to virtualService CRD: https://github.com/istio/api/pull/1566

another issue was opened referencing this problem:
https://github.com/istio/istio/issues/25246
it would be amazing if we could get this.

How is this problem handled? I want to achieve access to /api/abc to /abc, it seems impossible?Can RegexRewrites work?

You can do that with prefix rewrite
On Thu, Nov 26, 2020 at 4:07 AM dotbalo<EMAIL_ADDRESS>wrote:

How is this problem handled? I want to achieve access to /api/abc to /abc,
it seems impossible?Can RegexRewrites work?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/22290#issuecomment-734261186, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEYGXPMPJX7E6BFBBNYLDTSRZAIPANCNFSM4LOTLVOQ
.

Is there istio Milestone version when this will be released ?

I am not actively working on this GH issue. Will un-assign myself so that someone can pick it up.

I am not actively working on this GH issue. Will un-assign myself so that someone can pick it up.

Need this feature. Can I try to complete it?

Need this feature. Can I try to complete it?

@istio/wg-policies-and-telemetry-maintainers This is a common request, as is rewriting the HTTP path based on a regex.  I don't think Envoy includes support for such rewrites.  This might make a good example of using Wasm.  I created a filter to do this and it is very simple.  The non-boilerplate is just:
FilterHeadersStatus RegexpRepl::onRequestHeaders(uint32_t header_count, bool end_of_stream) {
  // TODO modify the request headers using the EnvoyFilter configuration instead of hard-coding
  char const *key = ":path";
  char const *pattern = "banana/([0-9]*)";
  char const *replaceWith = "status/$1";

  WasmDataPtr wdpGhmv = getRequestHeader(key);
  std::string sValue = wdpGhmv->toString();

  std::regex re(pattern);
  std::string result = std::regex_replace(sValue, re, replaceWith);
  WasmResult wrRrh = replaceRequestHeader(key, result);
  if (wrRrh == WasmResult::Ok) {
    logWarn("context_id:" + strId_ + " RegexpRepl::onRequestHeaders() replaced " + sValue + " with " + result);
  } else {
    logWarn("context_id:" + strId_ + " RegexpRepl::onRequestHeaders() replaceRequestHeader() FAILED.  wrRrh is " + toString(wrRrh));
  }

  return FilterHeadersStatus::Continue;
}

I tested it with httpbin.  Requests for httpbin:8000/banana/418 were processed as httpbin:8000/banana/418.
What do you think about me making a sample or blog about this for Istio?
If people find the performance of doing this with WASM reasonable, we could talk about smoother experience for users who want path rewrites without learning the EnvoyFilter API.

I do think having single wasm examples is useful but afaik this is supported in envoy already (https://github.com/istio/api/pull/1854)

@istio/wg-policies-and-telemetry-maintainers This is a common request, as is rewriting the HTTP path based on a regex. I don't think Envoy includes support for such rewrites. This might make a good example of using Wasm. I created a filter to do this and it is very simple. The non-boilerplate is just:
FilterHeadersStatus RegexpRepl::onRequestHeaders(uint32_t header_count, bool end_of_stream) {
  // TODO modify the request headers using the EnvoyFilter configuration instead of hard-coding
  char const *key = ":path";
  char const *pattern = "banana/([0-9]*)";
  char const *replaceWith = "status/$1";

  WasmDataPtr wdpGhmv = getRequestHeader(key);
  std::string sValue = wdpGhmv->toString();

  std::regex re(pattern);
  std::string result = std::regex_replace(sValue, re, replaceWith);
  WasmResult wrRrh = replaceRequestHeader(key, result);
  if (wrRrh == WasmResult::Ok) {
    logWarn("context_id:" + strId_ + " RegexpRepl::onRequestHeaders() replaced " + sValue + " with " + result);
  } else {
    logWarn("context_id:" + strId_ + " RegexpRepl::onRequestHeaders() replaceRequestHeader() FAILED.  wrRrh is " + toString(wrRrh));
  }

  return FilterHeadersStatus::Continue;
}

I tested it with httpbin. Requests for httpbin:8000/banana/418 were processed as httpbin:8000/banana/418.
What do you think about me making a sample or blog about this for Istio?
If people find the performance of doing this with WASM reasonable, we could talk about smoother experience for users who want path rewrites without learning the EnvoyFilter API.

In gateway, we really care about the performance of WASM, which need more benchmark test report.

I do think having single wasm examples is useful but afaik this is supported in envoy already (istio/api#1854)

This is great!  I was unaware of https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route_components.proto#route-routeaction .  It looks like it could do what is desired!
I would be even happier with a non-WASM EnvoyFilter sample to do this.  So I tried to write one.  I created a regex EnvoyFilter based on the VIRTUAL_HOST sample samples/bookinfo/policy/productpage_envoy_ratelimit.yaml.
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: no-banana
spec:
  configPatches:
    - applyTo: VIRTUAL_HOST
      match:
        routeConfiguration:
          portNumber: 8000
          vhost:
            name: "httpbin.default.svc.cluster.local:8000"
      patch:
        operation: MERGE
        value:
          # See https://www.envoyproxy.io/docs/envoy/latest/api-v2/type/matcher/regex.proto#envoy-api-msg-type-matcher-regexmatchandsubstitute
          regex_rewrite:
            pattern:
              google_re2: "banana/([0-9]*)"
              regex: "banana/([0-9]*)"
            substitution: "status/$1"
  workloadSelector:
    labels:
      app: httpbin

Unfortunately, the above example doesn't work!  No effect on the Envoy /config_dump.  The variations I tried made the sidecar go stale.  Anything obviously wrong with the above?

If it goes stale it likely is NACKed. Check logs of istiod or proxy for the
error?
On Fri, Feb 5, 2021 at 8:12 AM Ed Snible<EMAIL_ADDRESS>wrote:

I do think having single wasm examples is useful but afaik this is
supported in envoy already (istio/api#1854
https://github.com/istio/api/pull/1854)
This is great! I was unaware of
https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route_components.proto#route-routeaction
. It looks like it could do what is desired!
I would be even happier with a non-WASM EnvoyFilter sample to do this. So
I tried to write one. I created a regex EnvoyFilter based on the
VIRTUAL_HOST sample
samples/bookinfo/policy/productpage_envoy_ratelimit.yaml.
apiVersion: networking.istio.io/v1alpha3kind: EnvoyFiltermetadata:
name: no-bananaspec:
configPatches:
- applyTo: VIRTUAL_HOST
match:
routeConfiguration:
portNumber: 8000
vhost:
name: "httpbin.default.svc.cluster.local:8000"
patch:
operation: MERGE
value:
# See https://www.envoyproxy.io/docs/envoy/latest/api-v2/type/matcher/regex.proto#envoy-api-msg-type-matcher-regexmatchandsubstitute
regex_rewrite:
pattern:
google_re2: "banana/([0-9])"
regex: "banana/([0-9])"
substitution: "status/$1"
workloadSelector:
labels:
app: httpbin
Unfortunately, the above example doesn't work! No effect on the Envoy
/config_dump. The variations I tried made the sidecar go stale. Anything
obviously wrong with the above?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/22290#issuecomment-774128996, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEYGXJGBTJJIWOJSLR7F5DS5QKFPANCNFSM4LOTLVOQ
.

If it goes stale it likely is NACKed. Check logs of istiod or proxy for the error?

I did.  No logs from istiod, Envoy said type.googleapis.com/envoy.config.route.v3.RouteConfiguration rejected: Proto constraint validation failed (RouteConfigurationValidationError.VirtualHosts[i]: ["embedded message failed validation"] | caused by VirtualHostValidationError.Domains: ["value must contain at least " '\x01' " item(s)"]): name: "8000"
That message didn't come from the EnvoyFilter I posted.  I tried variations with ADD instead of MERGE, and typed_config with type_url: type.googleapis.com/envoy.type.matcher.RegexMatchAndSubstitute.  I will keep experimenting.  (I am confused why the WASM examples use typed_config, but the rate limit example doesn't use a typed config for config.route.v3.RateLimit).

Anything without typed_config is probably wrong and only works on older v2
XDS proxies
On Fri, Feb 5, 2021 at 8:42 AM Ed Snible<EMAIL_ADDRESS>wrote:

If it goes stale it likely is NACKed. Check logs of istiod or proxy for
the error?
I did. No logs from istiod, Envoy said
type.googleapis.com/envoy.config.route.v3.RouteConfiguration rejected:
Proto constraint validation failed
(RouteConfigurationValidationError.VirtualHosts[i]: ["embedded message
failed validation"] | caused by VirtualHostValidationError.Domains: ["value
must contain at least " '\x01' " item(s)"]): name: "8000"
That message didn't come from the EnvoyFilter I posted. I tried variations
with ADD instead of MERGE, and typed_config with type_url:
type.googleapis.com/envoy.type.matcher.RegexMatchAndSubstitute. I will
keep experimenting. (I am confused why the WASM examples use typed_config,
but the rate limit example doesn't use a typed config for
config.route.v3.RateLimit).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/22290#issuecomment-774146664, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEYGXIKP4JFRHX2V5CINRLS5QNWTANCNFSM4LOTLVOQ
.

OK, I have created a working EnvoyFilter, that doesn't use WASM, that does regex rewrites:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: no-banana
spec:
  configPatches:
    - applyTo: HTTP_ROUTE
      match:
        routeConfiguration:
          vhost:
            name: "inbound|http|8000"
      patch:
        operation: MERGE
        value:
          route:
            # See https://www.envoyproxy.io/docs/envoy/latest/api-v2/type/matcher/regex.proto#envoy-api-msg-type-matcher-regexmatchandsubstitute
            regex_rewrite:
              pattern:
                 google_re2:
                   max_program_size: 100
                 regex: "^/banana/([0-9]*)$"
              # Use two backslashes in a file, four in the shell
              substitution: "/status/\\1"
  workloadSelector:
    labels:
      app: httpbin

To test:
kubectl apply -f samples/httpbin/httpbin.yaml
// then create a file with the above YAML in it, and apply, then
kubectl exec -ti deploy/httpbin -c istio-proxy -- curl -v http://httpbin.default:8000/banana/418

Thanks to @howardjohn for patiently explaining why I needed to use applyTo: HTTP_ROUTE.  I also got stuck at first applying this to the outbound, not to "inbound|http|8000".  I also got stuck with the fact that google_re2 is required, but it contains only an optional member, but that member is also required!
Agreed this solution is clunky but it works in a pinch, and lets us experiment with adding this as a regular feature.

@esnible great EnvoyFilter，but could this type EnvoyFilter Support rewriting multiple paths?

@esnible great EnvoyFilter，but could this type EnvoyFilter Support rewriting multiple paths?

Wasm filters are extremely powerful and can do anything to the PATH.  You could easily implement a filter either with your own, compiled-in list of match conditions, or you could pass in some kind of JSON list to configure your filter.
I also suspect you could take the existing example and install N Envoy filters, one for each condition.  That isn't the most efficient thing but I suspect it would work.  I haven't tried it.

@esnible Thank you. A filter must be support rewriting multiple paths.
But install N Envoy filters, one for each condition, can't work. It will use the last Envoy filters.

@howardjohn Does istio plan to support regex rewrites as a regular feature?

Any hints on when is this going to be picked up @howardjohn ?

Upvote!

I just found that Gloo have regexRewrite feature and based on their example (https://docs.solo.io/gloo-edge/latest/guides/traffic_management/request_processing/regex_rewrite/) it seems that it allows to use capture groups in rewrites. I'm not 100% sure, but I assume that they are using envoy regexRewrite feature.
Anyway it would be cool to have regexpRewrite support in Istio even without capture groups, cause it could help with stripping regex prefixes from request path

/reopen

@abhide what's the status on this ?

I would really like to have solution for regex capture groups in the vs configuration.
This is very important for a lot of us, how can we help get some solution to this problem into the product?

Based on what I've read about the Gateway API and given 1.12 was released recently, I wouldn't expect to see this until at least 1.13
@howardjohn does that make any sense?

I don't mind if it's later, I would just like confirmation that it's planned. and not doomed to go stale.

@howardjohn any idea why we can't merge this PR? This is causing such headaches for us.

It seems some tests are failing:
https://github.com/istio/api/pull/1854

The path rewrite and redirect features has already be merged in gateway-api https://github.com/kubernetes-sigs/gateway-api/pull/731.
But the path regex rewrite api doesn't be included in. Istio will not add path regex rewrite feature until gateway api add this. Someone who need this api in istio should discuss gateway api like this pr https://github.com/kubernetes-sigs/gateway-api/pull/731 which will be more useful.

@SpecialYang Thanks for responding.
The PR you linked (kubernetes-sigs/gateway-api#731) has a lot of discussion around regex rewrite and capture groups. The PR was approved and merged... But it only talks about regex as a "future extension".
I've added a comment in the issue: https://github.com/kubernetes-sigs/gateway-api/issues/726 but maybe someone at istio can comment in as well to help move this solution forward? @howardjohn ?

Now that kubernetes-sigs/gateway-api/issues/726 is merged, is there any chance of some progression of this ticket?

wow. not a lot of movement on this ticket. Can someone comment as to whether this is still an active issue?

It is still an active issue.

Has anybody managed to use an EnvoyFilter with RouteAction as a workaround ?
I can't find any example on the web to do that.

@jallaix I've been trying to do just that for 3 days but for a redirect. This comment has a good overview of writing an EnvoyFilter with a route action:
https://github.com/istio/istio/issues/22290#issuecomment-774260856
However, it seems to apply when the request has been routed and is inbound to the final destination sidecar already. I need to rewrite the URI by adding a prefix to the existing path and then redirect, but I can't figure out how to do that.

I've created my own filter for path rewriting using Lua here. Lua makes it very flexible to do just about anything you want, except change the :authority pseudo-header. Still can't find out how to do host rewrite, but this may help someone doing path re-writes BEFORE the gateway performs routing:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: regex-path-rewrite
  namespace: istio-ingress
spec:
  configPatches:
  - applyTo: HTTP_FILTER
    match:
      context: GATEWAY
      listener:
        filterChain:
          filter:
            name: envoy.filters.network.http_connection_manager
            subFilter:
              name: 'envoy.filters.http.router'
        portNumber: 443
    patch:
      operation: INSERT_BEFORE
      value:
        name: envoy.lua
        typed_config:
          '@type': 'type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua'
          inlineCode: |
            function envoy_on_request(request_handle)
              local path = request_handle:headers():get(":path")
              local tenant_name, workload_name, workload_path = string.match(path, "/t/([a-z0-9-]+)/([a-z0-9-]+)(.*)")
              local new_path = workload_name .. "/" .. workload_path
              if (tenant_name ~= nil and workload_name ~= nil) then
                request_handle:headers():replace(":path", new_path)
              end
            end

In addition to @ajpauwels solution for global rewrites (link) it is also possible to rewrite routes for one route after the gateway.
The following example will regex match routes with -\d{4}$ and prefix a locale if needed. Notice that VirtualService matches and Envoy rewrites. I believe Lua uses RE2 flavor of Regex. Just use a online Lua compiler to test if your regex matches correctly.
Credits: https://stackoverflow.com/a/69637003
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: echo
  namespace: testing
spec:
  hosts: ["*"]
  gateways:
    - istio-ingress/default-gateway
  http:
    - name: rewrite-testing # only for this
      match:
        - uri:
            regex: "^.+-[0-9]{4}$" # check before rewrite
      route:
        - destination:
            host: echo.testing.svc.cluster.local
            port:
              number: 8080
    - name: keep-as-is
      match:
        - uri:
            prefix: /stuff
      route:
        - destination:
            host: echo.testing.svc.cluster.local
            port:
              number: 8080
---
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: regex-path-rewrite-one-route
  namespace: istio-ingress # namespace of gateway you are targetting
spec:
  configPatches:
  # Patch that creates "global" lua filter that does nothing useful
  - applyTo: HTTP_FILTER
    match:
      listener:
        filterChain:
          filter:
            name: envoy.filters.network.http_connection_manager
            subFilter:
              name: envoy.filters.http.router
    patch:
      operation: INSERT_BEFORE
      value:
        name: envoy.lua
        typed_config:
          '@type': type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
          inlineCode: |
            function envoy_on_request(request_handle)
              -- Empty lua function
            end
  # Filter for http route that overrides previous "global" filter lua source code for one route
  - applyTo: HTTP_ROUTE
    match:
      context: GATEWAY
      routeConfiguration:
        vhost:
          route:
            # Corresponds to http[0].name in VirtualService
            name: rewrite-testing
    patch:
      operation: MERGE
      value:
        name: envoy.lua
        typed_per_filter_config:
          envoy.filters.http.lua:
            '@type': type.googleapis.com/envoy.extensions.filters.http.lua.v3.LuaPerRoute
            source_code:
              inline_string: |
                function envoy_on_request(request_handle)
                  local old_path = request_handle:headers():get(":path")
                  local is_product_section = string.match(old_path,"-%d%d%d%d$")

                  if is_product_section ~= nil
                  then
                    if string.sub(old_path,1,7) ~= "/de_DE/"
                    and string.sub(old_path,1,7) ~= "/en_US/"
                    then
                        local new_path = "/en_US" .. old_path
                        request_handle:headers():replace(":path", new_path)
                    end
                  end
                end

In addition to @ajpauwels solution for global rewrites (link) it is also possible to rewrite routes for one route after the gateway. The following example will regex match routes with -\d{4}$ and prefix a locale if needed. Notice that VirtualService matches and Envoy rewrites. I believe Lua uses RE2 flavor of Regex. Just use a online Lua compiler to test if your regex matches correctly. Credits: https://stackoverflow.com/a/69637003
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: echo
  namespace: testing
spec:
  hosts: ["*"]
  gateways:
    - istio-ingress/default-gateway
  http:
    - name: rewrite-testing # only for this
      match:
        - uri:
            regex: "^.+-[0-9]{4}$" # check before rewrite
      route:
        - destination:
            host: echo.testing.svc.cluster.local
            port:
              number: 8080
    - name: keep-as-is
      match:
        - uri:
            prefix: /stuff
      route:
        - destination:
            host: echo.testing.svc.cluster.local
            port:
              number: 8080
---
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: regex-path-rewrite-one-route
  namespace: istio-ingress # namespace of gateway you are targetting
spec:
  configPatches:
  # Patch that creates "global" lua filter that does nothing useful
  - applyTo: HTTP_FILTER
    match:
      listener:
        filterChain:
          filter:
            name: envoy.filters.network.http_connection_manager
            subFilter:
              name: envoy.filters.http.router
    patch:
      operation: INSERT_BEFORE
      value:
        name: envoy.lua
        typed_config:
          '@type': type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
          inlineCode: |
            function envoy_on_request(request_handle)
              -- Empty lua function
            end
  # Filter for http route that overrides previous "global" filter lua source code for one route
  - applyTo: HTTP_ROUTE
    match:
      context: GATEWAY
      routeConfiguration:
        vhost:
          route:
            # Corresponds to http[0].name in VirtualService
            name: rewrite-testing
    patch:
      operation: MERGE
      value:
        name: envoy.lua
        typed_per_filter_config:
          envoy.filters.http.lua:
            '@type': type.googleapis.com/envoy.extensions.filters.http.lua.v3.LuaPerRoute
            source_code:
              inline_string: |
                function envoy_on_request(request_handle)
                  local old_path = request_handle:headers():get(":path")
                  local is_product_section = string.match(old_path,"-%d%d%d%d$")

                  if is_product_section ~= nil
                  then
                    if string.sub(old_path,1,7) ~= "/de_DE/"
                    and string.sub(old_path,1,7) ~= "/en_US/"
                    then
                        local new_path = "/en_US" .. old_path
                        request_handle:headers():replace(":path", new_path)
                    end
                  end
                end

I tried this and it looks like after rewriting the path the gateway can't route the request because the new path doesn't match any pattern in the VirtualService specs

Hi @amne
Sry for the late response! Here is what you need to create the rewrite you are looking for:
kubectl create ns testing
kubectl label ns testing istio-injection=enabled
# My Deno echo server for debugging; Use something else if paranoid
kubectl create deploy echo --image litvinav/echo -n testing
kubectl create svc clusterip echo --tcp 8080:8080 -n testing

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: echo
  namespace: testing
spec:
  selector:
    matchLabels:
      app: echo
  action: ALLOW
  rules:
    - from:
        - source:
            principals: ['cluster.local/ns/istio-ingress/sa/istio-ingress'] # make sure SA is right
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: echo
  namespace: testing
spec:
  gateways:
  # your_gateway_namespace/name_of_your_gateway
  - istio-ingress/default-gateway
  hosts:
  # your hostname
  - example.com
  http:
  - match:
    - uri:
        # assuming your user id is uuid-v4
        regex: /v1/users/[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}/stats
    # Not sure why but i had to match this path twice for it to work
    - uri:
        regex: /v1/stats/[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}
    name: rewrite-testing
    route:
    - destination:
        host: echo.testing.svc.cluster.local
        port:
          number: 8080
---
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: echo-filter
  namespace: istio-ingress
spec:
  # in case you have multiple Gateways
  workloadSelector:
    labels:
      app: istio-ingress
  configPatches:
  - applyTo: HTTP_FILTER
    match:
      listener:
        filterChain:
          filter:
            name: envoy.filters.network.http_connection_manager
            subFilter:
              name: envoy.filters.http.router
    patch:
      operation: INSERT_BEFORE
      value:
        name: envoy.lua
        typed_config:
          '@type': type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
          inlineCode: |
            function envoy_on_request(request_handle)
              -- Empty lua function
            end
  - applyTo: HTTP_ROUTE
    match:
      context: GATEWAY
      routeConfiguration:
        vhost:
          route:
            name: rewrite-testing
    patch:
      operation: MERGE
      value:
        name: envoy.lua
        typed_per_filter_config:
          envoy.filters.http.lua:
            '@type': type.googleapis.com/envoy.extensions.filters.http.lua.v3.LuaPerRoute
            source_code:
              inline_string: |
                function envoy_on_request(request_handle)
                  old_path = request_handle:headers():get(":path")
                  new_path = "/v1/stats/" .. string.sub(old_path, 11, 46)
                  request_handle:headers():replace(":path", new_path)
                end

Now if you call https://hostname/v1/users/C73BCDCC-2669-4Bf6-81d3-E4AE73FB11FD/stats you should see the following output in the echo server:
{
  "body": null,
  "headers": {
      //...SNIP...
   },
  "url": "http://hostname/v1/stats/C73BCDCC-2669-4Bf6-81d3-E4AE73FB11FD"
}

Not sure why but i had to match the path twice for it to work in the VirtualService.
I thought so far that only the pre rewrite match is needed here. Maybe someone familiar with the source code and/or from the Istio team knows why? Removing one of the uri regex's from the match will not reroute this code on Istio 1.17.1 installed via a helm chart.
And a happy belated easter 😉

Hello @mlitvinav ,
Thanks for getting back with a solution. I now realize my my initial comment was all over the place as I already had it working exactly like you suggested.
Here are more details on why the routing happens again after changing the path header: https://github.com/envoyproxy/envoy/issues/8719
In the end I used the idea of "tagging" the request with an x-route-name header so I can easily match it after rewriting the URL.
...
  http:
  - name: public_stats_route
    match:
    - uri:
        regex: /stats/([0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12})
      method:
        regex: (GET)
    - headers:
        x-route-name:
          exact: public_stats_route
...

...
    - applyTo: HTTP_ROUTE
      match:
        context: GATEWAY
        routeConfiguration:
          vhost:
            route:
              name: "public_stats_route"
      patch:
        operation: MERGE
        value:
          typed_per_filter_config:
            envoy.filters.http.lua:
              "@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.LuaPerRoute"
              source_code:
                inline_string: |
                    function envoy_on_request(request_handle)
                      local uuid_pattern="%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x"
                      local path = request_handle:headers():get(":path")
                      local account_id = string.match(path, "/stats/(" .. uuid_pattern .. ")")
                      request_handle:logDebug("account_id = " .. account_id)
                      if account_id ~= nil then
                        local new_path = "/api/v1/users/" .. account_id .. "/stats"
                        request_handle:headers():replace(":path", new_path)
                        request_handle:headers():add("x-route-name", "public_stats_route")
                      end
                    end
...

Once istio brings regex rewriting config support I can ditch the lua filters and have simple yaml files again.


Fix: Category no longer valid shows up

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/43767
PROPOSAL: https://github.com/Expensify/App/issues/43767#issuecomment-2172793069
Tests

Precondition:
"Members must categorize all expenses" in Categories is enabled.

Submit an expense with category.
Go to transaction thread.
Click Amount.
Change amount and save it.
There will be no violation under Category after changing amount because Category is already selected.

[x] Verify that no errors appear in the JS console

Offline tests

QA Steps

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/Expensify/App/assets/170341821/d6a350b8-e9f7-43ee-8478-f197c3e3946d

Android: mWeb Chrome

https://github.com/Expensify/App/assets/170341821/221aee63-4f11-4df1-9959-4e474919ee93

iOS: Native

https://github.com/Expensify/App/assets/170341821/199a76d8-d8df-400d-a517-2f0e70322d68

iOS: mWeb Safari

https://github.com/Expensify/App/assets/170341821/778310ea-4612-4e65-b4a2-5ee5696a701f

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/170341821/d04b9784-dfd0-4ea0-b93e-5d817918fbee

MacOS: Desktop

https://github.com/Expensify/App/assets/170341821/65ed32a5-c259-42c1-b81f-913ae6164c67

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to production by https://github.com/jasperhuangg in version: 9.0.3-7 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/Julesssss in version: 9.0.5-13 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Feature request: Django-style middleware

(Sorry if you don't want feature requests in this form.)
https://docs.djangoproject.com/en/2.1/topics/http/middleware/
IMO, Django-style middleware would make for a very nice addition to responder. Specifically, the way to easily write a function middleware that, like a context manager, wraps the request-response logic, makes for very readable and consistent handling. You know from the form of the code directly what happens in a middleware on an exception, or a normal request, and so on.

I think you can do that now by just writing a decorator!


Deplyoment on Qualcomm platform

@mynameistechno @TiRune  thanks for the wonderful work . Can we deploy this on the qualcomm platform ? if so all the platforms or specific version
THanks in advance

Please see AIMET for more information on deployment on Qualcomm platforms
https://github.com/quic/aimet
FFNet models are also available in the model zoo in AIMET


Improve system and sector generation, resolves #49

Description

Implements a parallelized K means algorithm for splitting the generated systems into clusters which are each assigned an unique faction and name.

Alternate Designs
Tried implementing multiple BFS, however this had to high running time.
K means will however run in linear time, and can be trivially parallized.
Benefits
Much faster sector generation (5sec instead of +1min for 100 000 systems)
Possible Drawbacks
N/A
Applicable Issues
#49

Codecov Report

Merging #50 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #50   +/-   ##
=======================================
  Coverage   94.94%   94.94%
=======================================
  Files           3        3
  Lines          99       99
=======================================
  Hits           94       94
  Misses          5        5

Continue to review full report at Codecov.

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


Add ability to pre-load scripts for all ipynb notebooks

Today one could preloads scripts for an ipynb file if the controller is selected (or pre-selected when opening a notebook that was previously opened in VS Code).
However if someone opens a new ipynb notebook that was shared (i.e. opening an existing ipynb file or the first time in vscode), then VS Code will not associate any controller, as a result the pre-load scripts for kernel will not load.
The downside of this is, outputs can contains HTML that expect require.js to be available and if tha'ts not available, the output will not load. This applies to plots from popular packages such as plotly.
This will be a blocker to viewing notebooks on github.dev or even locally.
I can't think of a great usecase for such a feature request for other notebooks, this is very specific to the requirements of outputs in ipynb.
Alternatives

Register a custom HTML renderer for HTML (which is rendered using built in renderer). Today we alraedy have custom renderers for images, and might have to do the same for aplication/javascript as well, see here https://github.com/microsoft/vscode-jupyter/issues/6054 (that's a seprate conversation, but thought I'd mention the fact that we have the need to create out own renderers for some of these simple mime types)

The downside with this is, anyone viewing HTML output in any other notebook would end up being rendered by Jupyter renderer (not the best, we've had plenty of issues where such renderers cause issues, bugs or incorrect rendering of outputs of other notebooks (one of them tracked here https://github.com/microsoft/vscode/issues/125876).
@mjbvz @rebornix /cc

@mjbvz Do we have an update on this issue? Noticed you referenced this issue in another PR, hence the question.

@DonJayamanne What if we added a special type of notebookRenderer  that is automatically loaded before any other renderers are invoked? This would be a static contribution in the package.json
Need to come up with a proposal of what the contribution point would look like. Perhaps we can build on the extensible markdown renderers proposal, so you could write something like:
  "contributes": {
    "notebookRenderer": [
      {
        "id": "addGlobals",
        "entrypoint": "./notebook-out/index.js",
        "dependsOn": "*" // Always activate before any other output renderer
      }
    ],

Actually it need to be the reverse: a renderer wants to declare that other renderers have an implicit dependency on it. Probably should be more like:
 "contributes": {
    "notebookRenderer": [
      {
         "type": "preload",
        "id": "addGlobals",
        "path":"./notebook-out/index.js",
      }
   ]
}

@mjbvz Sorry i missed this.
Thanks for looking into this, I can't think of a use case for this other than for jupyter notebooks.
With this proposal, doesn't this mean this script will get loaded regardless of the mime type?

If yes, this seems very similar to notebook controller pre-loads
Hence why not combine the two? This way anyone can register pre-loads for notebooks (& we have a common API)

Thinking about this a bit more: are there other use cases for this API? It sounds the problem with require is jupyter specific
If that's the case, let's just bring back the logic that injects requirejs  for ipynb files


Is next-i18next compatible with static rendering?

I got this error when building for Next.js and using getStaticProps() along with next-i18next:

Error occurred prerendering page "/404". Read more: https://err.sh/next.js/prerender-error

Maybe next-i18next module is not compatible with Static Rendering?

Hi @j4nos – this package is certainly compatible with static rendering. Please do post on StackOverflow for further help. Good luck!

This seems to happen when you add a custom _error page with getInitialProps.
I believe this is a limitation of Next.js custom error component as it doesn't support getServerProps or getStaticProps.

My recommendation is to remove _error.
Then create a 400 and 500 page using getStaticProps.


[ucp] Improve/modularize the UCP HRM docs

Proposed changes
This separates out the use cases into three audiences:
administrators who configure UCP and HRM, users who use the web UI, and
users who use the Docker CLI or API. The CLI reference also provides a
guide to the label syntax and the full set of features.
cc @joaofnfernandes. I'm sure there's way more improvements but want you to take a look. We should also investigate an update to the reference architecture.
Unreleased project version (optional)
Related issues (optional)
Resolves #1732.

Let's coordinate a review to the reference architecture once we merge this. It will make that review easier because we know this is the source of truth and others can reuse it.


add create a resource using a SP

Docs Build status updates of commit 86f2cb9:
:clock10: Full build: the average full build time is 8 min(s) 57 sec(s), this is based on the last 901 build(s) for this repository.

Docs Build status updates of commit 86f2cb9:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-conceptual/create-an-azure-service-principal-azure-cli.md
:white_check_mark:Succeeded
View (azure-cli-latest) View (azure-cli-2017-03-09-profile) View (azure-cli-2018-03-01-hybrid)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Merging pull request with @diberry 's edits.


[Suggestion] return the underlying fetch Promise in trackEvent/trackView

Currently, the trackEvent and trackView functions fire off the collect fetch request, but there's no way for the client to track its progress. As a suggestion, the library could return the underlying fetch Promise, so it could be await-ed by the client code.
I'd find this useful, for example, if I want to track a click on an a tag with a href attribute. In the current situation, if I add a custom @click handler and call { umTrackEvent(..); window.location.href = ...}, I can't think of a clean way to guarantee that the event has been sent before the browser loads the new page and aborts the tracking request (of course, one can use a setTimeout, but that's not pretty).

Hey, @valsinats42, this is now available in the latest version :+1: .

Awesome, I'll integrate it in my codebase right now, thank you! :)


ListTile takes taps when onTap is null but onLongPress is defined

If you have a ListTile and give onLongPress a function, but leave onTap blank, or even explicitly set it to null, ListTile still will take taps.
This might seem fine at first, but when in ListTile is in a ListView wrapped with a GestureDetector for the purposes of removing the keyboard when tapped, it allows the useless onTap to go through. This results in poor UX and I cannot think of a reason why ListTile should show the tap animation if there is no action there.
The workaround is to give each ListTile an onTap callback that removes focus from the keyboard, but this creates UI jank by showing the onTap splash when removing the keyboard.
Cheers
Luke

This issue still exist, when you have onTap as null and onLongPress function is given in ListTile. Whenever you tap a list item, it shows the splash effect on every ta even tho onTap is null
Code Sample
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp(
    items: List<String>.generate(10000, (i) => "Item $i"),
  ));
}

class MyApp extends StatelessWidget {
  final List<String> items;

  MyApp({Key key, @required this.items}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    final title = 'Long List';

    return MaterialApp(
      title: title,
      home: Scaffold(
        appBar: AppBar(
          title: Text(title),
        ),
        body: ListView.builder(
          itemCount: items.length,
          itemBuilder: (context, index) {
            return ListTile(
              onTap: null,
              onLongPress: () {
                print('onLongPress');
              },
              title: Text('${items[index]}'),
            );
          },
        ),
      ),
    );
  }
}

flutter doctor -v
[✓] Flutter (Channel stable, v1.12.13+hotfix.9, on Mac OS X 10.15.4 19E266,
    locale en-GB)
    • Flutter version 1.12.13+hotfix.9 at /Users/taha/Code/flutter_stable
    • Framework revision f139b11009 (3 days ago), 2020-03-30 13:57:30 -0700
    • Engine revision af51afceb8
    • Dart version 2.7.2

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/taha/Code/sdk
    • Android NDK location not configured (optional; useful for native profiling
      support)
    • Platform android-29, build-tools 29.0.3
    • ANDROID_HOME = /Users/taha/Code/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_212-release-1586-b4-5784211)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.4)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.4, Build version 11E146
    • CocoaPods version 1.9.1

[✓] Android Studio (version 3.6)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 44.0.2
    • Dart plugin version 192.7761
    • Java version OpenJDK Runtime Environment (build
      1.8.0_212-release-1586-b4-5784211)

[✓] VS Code (version 1.43.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.8.1

[✓] Connected device (1 available)
    • SM M305F • 32003c30dc19668f • android-arm64 • Android 10 (API 29)

• No issues found!

flutter doctor -v
[✓] Flutter (Channel stable, 1.22.5, on macOS 11.1 20C69 darwin-x64, locale en-GB)
    • Flutter version 1.22.5 at /Users/tahatesser/Code/flutter_stable
    • Framework revision<PHONE_NUMBER> (3 weeks ago), 2020-12-10 11:54:40 -0800
    • Engine revision ae90085a84
    • Dart version 2.10.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Volumes/Extreme/sdk
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Volumes/Extreme/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.3, Build version 12C33
    • CocoaPods version 1.10.0

[!] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.52.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.18.0

[✓] Connected device (2 available)
    • Taha’s iPad (mobile) • 00008020-000255113EE8402E            • ios • iOS 14.3
    • iPhone 12 (mobile)   • 12D8FF8E-2815-436E-9951-B8A6A42E4ACF • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)

! Doctor found issues in 1 category.

[✓] Flutter (Channel master, 1.26.0-2.0.pre.145, on macOS 11.1 20C69 darwin-x64, locale en-GB)
    • Flutter version 1.26.0-2.0.pre.145 at /Users/tahatesser/Code/flutter_master
    • Framework revision 38fe7e2b1c (9 hours ago), 2020-12-28 21:39:03 -0500
    • Engine revision 892034dc6a
    • Dart version 2.12.0 (build 2.12.0-179.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Volumes/Extreme/sdk
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Volumes/Extreme/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Volumes/Extreme/Xcode.app/Contents/Developer
    • Xcode 12.3, Build version 12C33
    • CocoaPods version 1.10.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.52.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.18.0

[✓] Connected device (4 available)
    • Taha’s iPad (mobile) • 00008020-000255113EE8402E            • ios            • iOS 14.3
    • iPhone 12 (mobile)   • 12D8FF8E-2815-436E-9951-B8A6A42E4ACF • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)      • macos                                • darwin-x64     • macOS 11.1 20C69 darwin-x64
    • Chrome (web)         • chrome                               • web-javascript • Google Chrome 87.0.4280.88

• No issues found!

Since ListTile uses inkwell internally, for splash, even if it has onLongPress, splash should also have a reaction.

Since ListTile uses inkwell internally, for splash, even if it has onLongPress, splash should also have a reaction.

The question is if a regular tap should show a splash when there is no onTap handler, but only an onLongPress handler. I would say no, but I'm not sure if there is a spec for this somewhere. Whether it has to do with ListTile or InkWell is secondary to this issue.

The question is if a regular tap should show a splash when there is no onTap handler, but only an onLongPress handler. I would say no, but I'm not sure if there is a spec for this somewhere. Whether it has to do with ListTile or InkWell is secondary to this issue.

If just a tap shouldn't have splash, then a long press should have splash?

If just a tap shouldn't have splash, then a long press should have splash?

Sounds like something needs to be rethought / reworked, then.

Sounds like something needs to be rethought / reworked, then.

I don't think you should use it that way.
https://material.io/design/interaction/gestures.html#types-of-gestures

I don't think you should use it that way.
https://material.io/design/interaction/gestures.html#types-of-gestures

This is what I found

A tap allows users to perform actions and interact with elements.
Long presses can reveal additional modes and features, but are not easily discoverable.

Sounds like we should have an assert on InkWell that doesn't allow you to have an onLongPress without an onTap.

This is what I found

A tap allows users to perform actions and interact with elements.
Long presses can reveal additional modes and features, but are not easily discoverable.

Sounds like we should have an assert on InkWell that doesn't allow you to have an onLongPress without an onTap.

I don't think so, you can customize splashFactory and implement different interaction animations.
So there should be no need for assert.

I don't think so, you can customize splashFactory and implement different interaction animations.
So there should be no need for assert.

Then we should hide splashes onTap if no onTap handler is present.

Then we should hide splashes onTap if no onTap handler is present.

I think it's more responsible because splash starts tap down, and even if you customize Splash Factory, it still starts tap down, but you can make a special curve to make sure the interaction animation is delayed.

I think it's more responsible because splash starts tap down, and even if you customize Splash Factory, it still starts tap down, but you can make a special curve to make sure the interaction animation is delayed.

There's two steps to the default splash. The background grows and then the splash itself. You could disable the onTap splash but leave the background effect.

There's two steps to the default splash. The background grows and then the splash itself. You could disable the onTap splash but leave the background effect.

If you want to disable highlightColor, unfortunately you can currently only set it to transparent and there is no other way.
I don't think I need to disable splash, splash is in the material design specification, both tap and long press are supposed to be there, and it is not recommended to use long press alone.

If you want to disable highlightColor, unfortunately you can currently only set it to transparent and there is no other way.
I don't think I need to disable splash, splash is in the material design specification, both tap and long press are supposed to be there, and it is not recommended to use long press alone.

Then we should probably put an assert on that says you can't have an onLongPress handler without an onTap handler.

Then we should probably put an assert on that says you can't have an onLongPress handler without an onTap handler.

The splashes are still shown when tapping the ListTile.
Labeling for further insight from the team.

updated sample
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp(
    items: List<String>.generate(10000, (i) => "Item $i"),
  ));
}

class MyApp extends StatelessWidget {
  final List<String> items;

  const MyApp({Key? key, required this.items}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    const title = 'Long List';

    return MaterialApp(
      title: title,
      home: Scaffold(
        appBar: AppBar(
          title: const Text(title),
        ),
        body: ListView.builder(
          itemCount: items.length,
          itemBuilder: (context, index) {
            return ListTile(
              onTap: null,
              onLongPress: () {
                print('onLongPress');
              },
              title: Text(items[index]),
            );
          },
        ),
      ),
    );
  }
}

flutter doctor -v
[✓] Flutter (Channel stable, 3.3.9, on macOS 13.0.1 22A400 darwin-arm, locale en-GB)
    • Flutter version 3.3.9 on channel stable at /Users/nexus/dev/sdks/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b8f7f1f986 (2 days ago), 2022-11-23 06:43:51 +0900
    • Engine revision 8f2221fbef
    • Dart version 2.18.5
    • DevTools version 2.15.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9123335/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14B47b
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio
    • Android Studio at /Applications/Android Studio Preview.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] Android Studio (version 2021.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[!] Android Studio
    • Android Studio at /Applications/Android Studio Preview 2.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] Android Studio (version 2021.3)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9123335/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] Android Studio (version 2021.3)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9014738/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] VS Code (version 1.73.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.52.0

[✓] Connected device (5 available)
    • M2007J20CG (mobile)    • 5dd3be00                             • android-arm64  • Android 12 (API 31)
    • Nexus (mobile)         • 00008020-001875E83A38002E            • ios            • iOS 16.1.1 20B101
    • iPhone 14 Pro (mobile) • 4F72110C-F38B-4CF9-93C4-4D6042148D28 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-16-1 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64   • macOS 13.0.1 22A400 darwin-arm
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 107.0.5304.110

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 2 categories.

[!] Flutter (Channel master, 3.6.0-7.0.pre.45, on macOS 13.0.1 22A400 darwin-arm64, locale en-GB)
    • Flutter version 3.6.0-7.0.pre.45 on channel master at /Users/nexus/dev/sdks/flutters
    ! Warning: `flutter` on your path resolves to /Users/nexus/dev/sdks/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutters. Consider adding /Users/nexus/dev/sdks/flutters/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/nexus/dev/sdks/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutters. Consider adding /Users/nexus/dev/sdks/flutters/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision d0352f55db (11 hours ago), 2022-11-23 20:01:26 -0500
    • Engine revision 9b2895724c
    • Dart version 2.19.0 (build 2.19.0-424.0.dev)
    • DevTools version 2.19.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9123335/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14B47b
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio
    • Android Studio at /Applications/Android Studio Preview.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] Android Studio (version 2021.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[!] Android Studio
    • Android Studio at /Applications/Android Studio Preview 2.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] Android Studio (version 2021.3)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9123335/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] Android Studio (version 2021.3)
    • Android Studio at /Users/nexus/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9014738/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] VS Code (version 1.73.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.52.0

[✓] Connected device (5 available)
    • M2007J20CG (mobile)    • 5dd3be00                             • android-arm64  • Android 12 (API 31)
    • Nexus (mobile)         • 00008020-001875E83A38002E            • ios            • iOS 16.1.1 20B101
    • iPhone 14 Pro (mobile) • 4F72110C-F38B-4CF9-93C4-4D6042148D28 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-16-1 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64   • macOS 13.0.1 22A400 darwin-arm64
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 107.0.5304.110

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 3 categories.


thrift_proxy: Fix payload_to_metadata filter which might fail on multiple rules on same node

Commit Message:
We found a bug in test MultipleRulesOnMultiStruct that we might fail to match the payload
if we have multiple rules and the first rule doesn't match the method/service.
Also wrote a minimum test MultipleRulesInSamePathFirstRuleUnmatched to verify the fix.
Additional Description:
Risk Level: low
Testing: unit
Docs Changes:
Release Notes:
Platform Specific Features:

/retest

/retest

/retest

thanks Stephen.
This is on the same head with https://github.com/envoyproxy/envoy/pull/26386 so probably just busy ci. And I got green check on my first commit and just upstream-merge commits after that.

ci pass 🚀


[WIP] Rethrowing protocol conformances

Proposal:
https://github.com/DougGregor/swift-evolution/blob/rethrows-protocol-conformances/proposals/NNNN-rethrows-protocol-conformances.md
Discussion:
https://forums.swift.org/t/pitch-rethrowing-protocol-conformances/42373
This adds a new feature in which protocol conformance can contribute to rethrowing in addition to the existing closure rethrowing contribution. A function may rethrow in the regards of a parameter or generic that has a conformance witness of a function that is throwing or not when the protocol declaration is marked with @rethrows and a member of that protocol declaration is a requirement marked with rethrows.

@DougGregor I think this is nearing the state that we discussed previously of functionality, if we could get an initial review to ensure things are what we expect I will remove the WIP and start getting CI testing on this.


feat: animate tab indicator position and size on native and web

I tried to make least invasive implementation and just basically extended the logic that was already there. Should work on all platforms including web. Feel free to get inspired for your implementation #6868 (which is very similar in base approach) or if you want, I can extend this one with your suggestions
https://github.com/user-attachments/assets/b14b4db7-9827-40b5-b87e-477c295a49ab

oh nice, thanks for the PR! mine is a bit more extensive because i'm also synchronizing it to the ongoing gesture so i think i'd go with the approach in my PR. there's probably many other opportunities to contribute similar polish though.

for the web, we could do something — i'm explicitly forked the file to make it easier to play with. i'm personally in favor of avoiding Reanimated on the web as much as possible, but if we can do something nice with CSS, i'm down.

ok, understood, thanks for the great work on Bluesky 👍


Use innerText rather than textContent for label queries.

What:
Using label.innerText rather than label.textContent

Why:
An example dom:

Options
<select>
    <option>Option 1</option>
    <option>Option 2</option>
</select>

textContent returns incorrect result for label text
Options

    Option 1
    Option 2

but innerText returns correct result "Options".
But I can not be simulate with jest tests also label.innerText || label.textContent used because jsdom does not support innerText https://github.com/jsdom/jsdom/issues/1245

How:

Checklist:

[ ] Documentation
[ ] Tests
[x] Ready to be merged
[ ] Added myself to contributors table

What needs to happen to get this merged? I would love to be able to use getByText to select an element whose text is split within several child nodes.

What needs to happen to get this merged? I would love to be able to use getByText to select an element whose text is split within several child nodes.

Not sure. It sounds like there a ton of layout edge cases causing innerText not to be practical in JSDOM. I don't know if working around/semi-polyfilling the behavior is a good idea if it deviates from the spec.

I think I misunderstood the purpose of this PR. I'm after being able to query for an element with text split over multiple children, e.g:

Hi there

getByText('Hi there')

I'll look into it and raise an issue/PR

Ok, so in investigating this, I realized there's a flaw in the original assumption:

but innerText returns correct result "Options".

That is not correct. This is what I've learned:
labelNode.innerText
"Options
Option 1
Option 2"

labelNode.textContent
"
Options

    Option 1
    Option 2
"

So, our current implementation is great because when running this code with getNodeText (without changes), we have:
getNodeText(labelNode)
"
Options

"

Which is correct I believe. So I'll go ahead and make that fix and we should be good to go.

:tada: This issue has been resolved in version 3.18.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

Is this change why I suddenly have failing tests with getByLabelText for labels with nested spans? Just started happening today on a new machine with a fresh yarn install.

Ah yes, it might be. I think there's a solution to this. I'll have to work on it tomorrow. Could you make a new issue?

Ah yes, it might be. I think there's a solution to this. I'll have to work on it tomorrow. Could you make a new issue?

I did: #230


feat: Added test and documentation for Kubernetes 1.26

Setting up Kubernetes 1.26 as de default for the E2E test. Added the limit version for unit test to Kubernetes 1.26 instead of 1.25 The documentation now points 1.26 as the default version
Closes #1237
Signed-off-by: Jonathan Gonzalez V<EMAIL_ADDRESS>

/test

/test test_level=4 log_level=debug depth=main

In the last run, the upgrade failure had failed on one of the 1.26 matrix branches.
I tried to repro locally but could not.
For peace of mind I fired a test of Upgrade with a main coverage.
https://github.com/cloudnative-pg/cloudnative-pg/actions/runs/3882981046
All branches green, including the two 1.26 branches.
Moving this forward

Clusters on 1.26 will cause the operator to print error messages but continue running. This is because of a bug unrelated to 1.26 that is outlined in #1317

/ok-to-merge


Problem with parameters use_bias=True and bias_initializer=None

Please go to Stack Overflow for help and support:
https://stackoverflow.com/questions/tagged/tensorflow
If you open a GitHub issue, here is our policy:

It must be a bug or a feature request.
The form below must be filled out.
It shouldn't be a TensorBoard issue. Those go here.

Here's why we have that policy: TensorFlow developers respond to issues. We want to focus on work that benefits the whole community, e.g., fixing bugs and adding features. Support only helps individuals. GitHub also notifies thousands of people when issues are filed. We want them to see you communicating an interesting problem, rather than being redirected to Stack Overflow.

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): Yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Linux Ubuntu 16.04.3 LTS
TensorFlow installed from (source or binary): pip install
TensorFlow version (use command below): tensorflow (1.3.0)
Python version: Python 3.5
Bazel version (if compiling from source):
CUDA/cuDNN version:
GPU model and memory:
Exact command to reproduce:

You can collect some of this information using our environment capture script:
https://github.com/tensorflow/tensorflow/tree/master/tools/tf_env_collect.sh
You can obtain the TensorFlow version with
python -c "import tensorflow as tf; print(tf.GIT_VERSION, tf.VERSION)"
Describe the problem
Something weird is happening when I'm using both the parameter use_bias and bias_initializer like this:
import numpy as np
import tensorflow as tf
tf.reset_default_graph()
inp = np.ones((1, 2, 2, 1))
inputs_ = tf.constant(inp, dtype=tf.float32)
n_filters = 1
conv2d_tp = tf.layers.conv2d_transpose(inputs_, n_filters, [3, 3],
                                       kernel_initializer=tf.ones_initializer(),
                                       use_bias=True,
                                       bias_initializer=None,
                                       strides=(1, 1),
                                       padding='same')

with tf.Session() as sess:
    tf.global_variables_initializer().run()
    out = sess.run(conv2d_tp)
    print(out)

And I got output like this(may differ at different runtime):
[[[[ 3.28321671]
[ 3.28321671]]
[[ 3.28321671]
[ 3.28321671]]]]
As far as I'm concerned, the output element should all be integers, not floating numbers. I know setting the use_bias to True doesn't agree with setting bias_initializer to None in the first place since it's contradictory. But bad things happen when we ignore the use_bias and use the default value, at the same time setting the bias_initializer to None.
Source code / logs
The source code above should be enough to reproduce the output.

@fchollet this seems like at best a documentation bug. The doc says "bias_initializer: An initializer for the bias vector. If None, then no bias will be applied." However it looks as if setting the initializer to None pipes all the way down to the lowest level get_variable which uses random_uniform as the default initializer for floats.

I agree with @michaelisard that document should be revised: If None, the default initializer passed in the variable scope will be used.
https://github.com/tensorflow/tensorflow/blob/562045bb93743b09f2652924fdf300fc28fca3db/tensorflow/python/layers/convolutional.py#L144-L153

The expected behavior is that the absence or presence of a bias is controlled by use_bias (boolean). None passed to an initializer defaults to the current global default for initializers (glorot uniform). Please feel free to open a PR to improve the docs.


bug: numbers like "404" are separating to "4-4"

related to #24 this I believe is due to this line https://github.com/lovell/limax/blob/master/lib/limax.js#L54-L56
expected result is 404, however I get 4-4
I think I will need to revert to using speakingurl 😦

Hello, I added the following test cases that pass for me when run locally.
assert.strictEqual(
  slug('404', { separateNumbers: true }),
  '404'
);
assert.strictEqual(
  slug('404', { separateNumbers: false }),
  '404'
);
assert.strictEqual(
  slug('状态404页面未找到', { separateNumbers: true }),
  'zhuang4-tai4-404-ye4-mian4-wei4-zhao3-dao4'
);
assert.strictEqual(
  slug('状态404页面未找到', { separateNumbers: false }),
  'zhuang4-tai4-404-ye4-mian4-wei4-zhao3-dao4'
);

Are you able to provide more information on the failing case such as any other options used?

The test cases from the comment above are now in the unit tests.
https://github.com/lovell/limax/blob/02f7748913f7883dfef67ff256eea34021de5829/test/unit.js#L66-L82


gpu_operator_run_gpu-burn: improve and store pod description

This role failed in a recent test because the Pod was in Pending state at the end of the retry counter,
but not enough information were captured to understand what happened.
2021-05-06 09:20:06,352 p=5502 u=psap-ci-runner n=ansible | roles/gpu_operator_run_gpu-burn/tasks/main.yml:46
2021-05-06 09:20:06,352 p=5502 u=psap-ci-runner n=ansible | TASK: gpu_operator_run_gpu-burn : Wait for GPU burn Pods to complete
2021-05-06 09:20:06,352 p=5502 u=psap-ci-runner n=ansible | ----- FAILED ----
2021-05-06 09:20:06,353 p=5502 u=psap-ci-runner n=ansible | msg: All items completed
2021-05-06 09:20:06,353 p=5502 u=psap-ci-runner n=ansible |
2021-05-06 09:20:06,353 p=5502 u=psap-ci-runner n=ansible | LOOP #0: item = ip-10-0-152-212
2021-05-06 09:20:06,353 p=5502 u=psap-ci-runner n=ansible |
2021-05-06 09:20:06,353 p=5502 u=psap-ci-runner n=ansible | <command> oc get pod/gpu-burn-ip-10-0-152-212 -n default -o custom-columns=:.status.phase --no-headers
2021-05-06 09:20:06,353 p=5502 u=psap-ci-runner n=ansible |
2021-05-06 09:20:06,353 p=5502 u=psap-ci-runner n=ansible | <stdout> Pending
2021-05-06 09:20:06,353 p=5502 u=psap-ci-runner n=ansible | ----- FAILED ----

This PR captures the description of GPU Burn pods, and merges the wait&check tasks.

/test gpu-operator-e2e
/approve


Add survey.questionTitleTemplate property

By default the question title rendered as: "{no}. {requiredText} {tittle}".
The default value of survey.questionTitleTemplate is empty string, the default template is used.
The template could be set to : "{no}) {title} ({requireText})", the example of tittle rendering:
"2) My Title (*)".

Committed the implementation. An example is required.

Example


Cleaned up color sensing code

I cleaned up the subsystem a bit

@hyperliskdev  please test this out and let me know what you think

Im thinking we can use Test mode?
https://docs.wpilib.org/en/latest/docs/software/wpilib-tools/smartdashboard/test-mode-and-live-window/enabling-test-mode.html


feat(emulator): bump from version 1.5.9 to 1.5.11

We should update sage as well

We're getting the following error in our test suite with this update which is reported in this issue: https://github.com/GoogleCloudPlatform/cloud-spanner-emulator/issues/130. Let's wait with bumping version until they've fixed that (planned for end of Q4-2023).
rpc error: code = Unimplemented desc = Foreign key referential action ON DELETE NO ACTION is not supported.