Merge internal and external route namespace, drop *External methods & <LinkToExternal>

Sparked from https://github.com/ember-engines/ember-engines/issues/587#issuecomment-575540217.

So we've been working with our own EngineRouterService for over a year now, and only really hit one issue:
The existing eco-system does not play well with transitionToExternal, replaceWithExternal and the other *External methods. I would propose to drop them everywhere and instead merge the internal and external namespaces, asserting that an external route cannot have the same name as an internal route.
An isExternal(routeName: string): boolean could be added.

What I mean is that the whole addon eco-system uses the standard transitionTo and replaceWith method names. Addons that e.g. use the core RouterService have no notion of external routes and would need to be updated to support linking to external routes from inside an engine.
I only see little value in having the *External variants in the first place. Yes, they make it more explicit whether you are linking out of the engine at the callsite, but is this worth the incompatibility?
Instead, what if external and internal routes would be merged and would have to use shared unique names? i.e. if you pass in an external route as foo, you can't have an internal route named foo.
IMO this would remove a lot of existing maintenance burden. For instance, we could drop <LinkToExternal> in favor of just <LinkTo>, once it uses the RouterService under the hood.

What?
I propose to drop transitionToExternal & replaceWithExternal as well as <LinkToExternal>. Instead, the external and internal route namespaces would be merged.
Name collisions are not allowed, meaning that names used in externalRoutes cannot be used as internal route names in buildRoutes.
What does it look like?
Consider this fairly standard engine:
// blog-engine/addon/engine.ts
export default class BlogEngine extends Engine {
  modulePrefix = modulePrefix;
  Resolver = Resolver;

  dependencies = {
    externalRoutes: ['home']
  };
}

// blog-engine/addon/routes.ts
import buildRoutes from 'ember-engines/routes';

export default buildRoutes(function() {
  this.route('posts', function() {
    this.route('post', { path: ':post_id' });
  });
});

// demo-app/app/app.ts
export default class DemoApplication extends Application {
  modulePrefix = config.modulePrefix;
  podModulePrefix = config.podModulePrefix;
  Resolver = Resolver;

  engines = {
    blogEngine: {
      dependencies: {
        externalRoutes: { home: 'index' }
      }
    }
  };
}

// demo-app/app/router.ts
export default class DemoRouter extends Router {
  location = config.locationType;
  rootURL = config.routerRootURL;
}

DemoRouter.map(function() {
  this.route('index'); // explicit for demo clarity
  this.mount('blog-engine', { path: 'blog' })
});

Before
Currently, you would link to the respective routes like so:
// demo-engine/addon/posts/index.ts
export default class PostsIndexRoute extends Route {
  async beforeModel() {
    const latestPost = await this.store.queryRecord('post', { sort: '-date' });
    if (latestPost) {
      this.replaceWith('posts.post', latestPost.id);
    } else {
      this.replaceWithExternal('home');
    }
  }
}

{{! demo-engine/addon/posts/post/template.hbs }}
<EMAIL_ADDRESS>
<EMAIL_ADDRESS>

More posts by {{@model.post.author.name}}:

    {{#each @model.otherPostsByAuthor as |post|}}

        <LinkTo @route="posts.post" @model={{post.id}}>{{post.title}}</LinkTo>

    {{/each}}

  <LinkToExternal @route="home">
    Back to the homepage.
  </LinkToExternal>

After
With the proposed changes, this would become:
// demo-engine/addon/posts/index.ts
export default class PostsIndexRoute extends Route {
  async beforeModel() {
    const latestPost = await this.store.queryRecord('post', { sort: '-date' });
    if (latestPost) {
      this.replaceWith('posts.post', latestPost.id);
    } else {
-      this.replaceWithExternal('home');
+      this.replaceWith('home');
    }
  }
}

{{! demo-engine/addon/posts/post/template.hbs }}
<EMAIL_ADDRESS>
<EMAIL_ADDRESS>

More posts by {{@model.post.author.name}}:

    {{#each @model.otherPostsByAuthor as |post|}}

        <LinkTo @route="posts.post" @model={{post.id}}>{{post.title}}</LinkTo>

    {{/each}}

-  <LinkToExternal @route="home">
-    Back to the homepage.
-  </LinkToExternal>
+  <LinkTo @route="home">
+    Back to the homepage.
+  </LinkTo>

Why?
The majority of the Ember addon eco-system has no notion of the *External flavors of methods and components. Keeping the *External flavors would make it harder for users to adopt ember-engines, as they need their addons to support it first. Oftentimes this means shipping extra unnecessary code and added complexity.
Especially with the RouterService becoming more center-stage lately, this is becoming an issue. #587 seeks to implement an EngineRouterService. Using it in production for over a year now, we found that the *External flavors add no substantial value / clarity and instead make integrating the service with (third-party) addons much harder.
How?

#587 An EngineRouteService is added.

It has the same interface as the core RouterService.
However, it can only access internal routes and defined external routes.
An isExternal(routeName: string): boolean method may be added.

The *External flavors are deprecated and just forward to their standard counter-parts. This allows for a soft migration.
An assertion is added to ensure that routes declared in externalRoutes cannot be used in buildRoutes.
Since <LinkTo>, Route#transitionTo / Controller#transitionToRoute and Route#replaceWith / Controller#replaceWithRoute don't yet use the RouterService under the hood, they continue to be patched inside Engines, so that they use the EngineRouterService.

Unresolved questions

Why was *External added in the first place? Was it only to give a visual clue at the call sites?
RFC 122 "Engine Linking"
Is it acceptable to lose this visual clue?
Are there any hazards?
What are your opinions on this?

I'm fairly new to Ember Engine's, so maybe my assumptions are wrong, but it appears that one benefit of this would be removing the confusion & ambiguity around how to transition to an external link. Currently, transitionToExternal exists on the route, but is not easily available on the controller.
This leads to use of the route-action to trigger transitions when in a specific route. In fact the official guides show it being used in the actions hash on the route.
By removing transitionToExternal and bringing the router service to engines, it becomes much clearer that the proper way to transition a route is to inject the router service and perform the transition in a controller or component - just like any other transition.

Original RFC 122 "Engine Linking" for reference that @villander linked in a different thread. Thanks!

So I just read through the RFC and can't really find a definitive reason, why the *External methods and <LinkToExternal> were added.

Following I quote all the parts that touch on it:

[...] introducing a new Engine configuration option, externalRoutes, and an associated helper, {{link-to-external}}, as the methodology for linking outside of an Engine.

Engines bring with them the tremendous benefits of encapsulation and code isolation, but there are use cases where it is desirable to break those boundaries by linking into an external context, such as a consuming Application or sibling Engine.

One common example would be linking to the "home page" of an application. Even if your Engine is totally unaware of its parent, there are still times where it would be reasonable to direct them to the "home" route of their parent context.

In designing a solution to this problem, we wanted to make sure it:

preserves isolation by default,
does not dramatically affect the learning curve,
is flexible enough to account for a multitude of use cases, and
allows consumers to determine the destination of the links

These constraints and initial feedback led to the development of using {{link-to-external}} with an externalRoutes configuration.

Developing in isolated contexts means we can't assume knowledge of the global context in which our code is mounted. This means that we might not be able to use an absolute path for constructing a {{link-to}} or other linking mechanism. Instead, links should be constructed relative to their context's boundary (e.g., the mounting point for a routable engine) by default.

Using the external routes will take advantage of new "external routing" APIs, such as {{link-to-external}} and transitionToExternal. These will be equivalent to the non-external APIs in every way except that the valid route names to use will be those from the externalRoutes declaration.

By keeping the concept of external linking separate from internal (or, normal) linking, we help keep the learning curve down by not muddying the two concepts. Instead, developers will learn how normal linking works and then as they begin to work with Engines they can learn about the concepts of external linking. In fact, these APIs should likely only be available within the context of an Engine.

One alternative approach here is to introduce an external-route helper that could be used with existing routing APIs, something like:
{{#link-to (external-route "blog")}}Blog{{/link-to}}

This would allow us to avoid needing to introduce multiple new routing APIs. However, since {{link-to}} will be scoped to the Engine by default, we will likely need to introduce some way of differentiating between external links and internal links. Two options in this regard are to use special characters in the string, which is brittle, or represent routes as non-strings. There are several drawbacks to both of these approaches:

any existing routing APIs will still need to change internally (to account for external vs. internal routes),
it potentially adds an element of polymorphism into those APIs,
the way to define routes has now diverged into two different forms, and
it is somewhat magical which risks addons having to work with private APIs to mimic the behavior

For those reasons, and keeping a clear separation of concerns, we think it makes more sense to simply introduce new, separate interfaces.

I think in summary the reasons for adding *External methods & <LinkToExternal> are:

thought to positively impact the learning curve / experience, not "muddying two concepts"
the implementation of a joined <LinkTo> was though to be overly complex

All other criteria, like ensuring isolation and encapsulation, are still fulfilled, even when merging the namespaces. Essentially, merging the namespaces would conceptually make the externalRoutes behave just like externalServices does!
@trentmwillis I would love to hear your opinion on this as well!

I honestly do not remember what the thinking was at the time. It's been years since that RFC and several years since I've used Ember, so I'm sure y'all are more informed at this point than I am 😅

I think you just saw the RFC updated losing the discussion @buschtoens
@trentmwillis I saw your reasons at the time in the RFC closed - https://github.com/ember-engines/ember-engines/pull/75
@dfreeman put it very well, even your suggestion @buschtoens  - https://github.com/emberjs/rfcs/pull/122#issuecomment-187245591
I totally agree with your decision @trentmwillis and at that point, we reacted well when there was no RouteService implemented but only a merged RFC - https://github.com/emberjs/rfcs/pull/122#issuecomment-187439938
In my opinion, the *External variants continue explicit at the point of invocation, and a logical extension of existing functionality making our engines isolated and clear what's external and internal

The majority of the Ember addon eco-system has no notion of the *External flavors of methods and components. Keeping the *External flavors would make it harder for users to adopt ember-engines, as they need their addons to support it first. Oftentimes this means shipping extra unnecessary code and added complexity.

It's just about document a teach about external-route. That's was never the large new API to be learned, because we always keep the same representation for routes, but doing it clearly.

All other criteria, like ensuring isolation and encapsulation, are still fulfilled, even when merging the namespaces. Essentially, merging the namespaces would conceptually make the externalRoutes behave just like externalServices does!

This approach is non-obvious when reading a route name whether it's internal or external. Also, it's a different thing because externalServices doesn't link engines, but just reuse a singleton from the parent adding the risk of break coupling and violation of our isolation. like our Engines Guides already says:

Currently, Services are the sanctioned way of passing state and data between the host and the Engine. Since Services are singletons and only passed from host-to-child, there is little risk of coupling and violation of isolation.

So making the thinks coupling will break more the reason for ember engines: do things isolated and decoupled.

I think there are valuable signals gained from the two semantics. LinkTo is locally linking routes and LinkToExternal links routes that are explicitly external. It would be hard to disambiguate what context is being applied when we consolidate to one.
Take the following scenario:
engine 1 -> profile
-> routes search
engine 2 -> search
-> routes index

in the context of profile

<LinkTo @route="search">

Do I link to the local route in profile or do I link to the search.index route or do I link to profile.search as that is local?

Do I link to the local route in profile or do I link to the search.index route or do I link to profile.search as that is local?

I see 3 big trade-offs:

non-obvious what engine and route we're linking
non-obvious when reading a route name whether it's internal or external
non-obvious to know where the route is defined as well (routes.js or engine.js)

It's just about document a teach about external-route. That's was never the large new API to be learned, because we always keep the same representation for routes, but doing it clearly.

@villander I don't understand what you mean with the above, can you please explain?

This approach is non-obvious when reading a route name whether it's internal or external. Also, it's a different thing because externalServices doesn't link engines, but just reuse a singleton from the parent adding the risk of break coupling and violation of our isolation. like our Engines Guides already says:

Currently, Services are the sanctioned way of passing state and data between the host and the Engine. Since Services are singletons and only passed from host-to-child, there is little risk of coupling and violation of isolation.

So making the thinks coupling will break more the reason for ember engines: do things isolated and decoupled.

I disagree with this. First of all, routes are singletons, too. Furthermore, routes, as opposed to services, don't even pass any state into the engine.

I see 3 big trade-offs:

non-obvious what engine and route we're linking
non-obvious when reading a route name whether it's internal or external
non-obvious to know where the route is defined as well (routes.js or engine.js)

This is not true. You can statically tell where a route is coming from. If and only if it's defined in externalRoutes, it's an external route. Otherwise it must be engine-internal. Just like with services already.

True, just when reading the route name at the call site, it is not clear, whether it is an external or internal route. However, you can easily tell, by looking at externalRoutes. Just like with services already.
Furthermore, I would argue that it does not matter, since you cannot accidentally clobber an external route with an internal one or vice-versa, because of this assertion:

An assertion is added to ensure that routes declared in externalRoutes cannot be used in buildRoutes.

I don't think that this is an issue. Just like with services already, where you have two places a service may be coming from (externalServices or the addon/services directory).

I think there are valuable signals gained from the two semantics. LinkTo is locally linking routes and LinkToExternal links routes that are explicitly external. It would be hard to disambiguate what context is being applied when we consolidate to one.

@gabrielcsapo You could make the exact same case for services. At the injection site there is no way to tell whether the service is coming from the engine or was passed into it as an external service.

Take the following scenario:
engine 1 -> profile
-> routes search
engine 2 -> search
-> routes index

in the context of profile

<LinkTo @route="search">

Do I link to the local route in profile or do I link to the search.index route or do I link to profile.search as that is local?

So just that I understand you right, your scenario is the following:
// engines/profile/addon/routes.js
import buildRoutes from 'ember-engines/routes';

export default buildRoutes(function() {
  this.route('search');
});

{{! engines/profile/addon/index/template.hbs }}

<LinkTo @route="search">Search</LinkTo>

// engines/search/addon/routes.js
import buildRoutes from 'ember-engines/routes';

export default buildRoutes(function() {
  // This route is implicit, so the comment is just here for clarity.
  // this.route('index');
});

// host-app/router.js
import EmberRouter from '@ember/routing/router';
import config from './config/environment';

export default class Router extends EmberRouter {
  location = config.locationType;
  rootURL = config.routerRootURL;
}

Router.map(function () {
  this.mount('profile');
  this.mount('search');
});

With this setup, it's absolutely clear, that search refers to the engine-internal search route, as no externalRoutes have been setup.
Assuming you did setup search as an external route in the profile engine, you would immediately get an assertion error, as per my original comment:

An assertion is added to ensure that routes declared in externalRoutes cannot be used in buildRoutes.

@villander I don't understand what you mean with the above, can you please explain?

@buschtoens I'm saying that it's not a large new API to ember-engines users learn, was just a new concept about external-route added by Engines. And it was well done.

I disagree with this. First of all, routes are singletons, too. Furthermore, routes, as opposed to services, don't even pass any state into the engine.

I totally disagree, Routes are Singleton, but you don't share all state such as doing by services, the host app just pass the specific routes to link, but never the state of the singleton/router or RouteService how is done sharing services. We can do a big mess with externalServices.

This is not true. You can statically tell where a route is coming from. If and only if it's defined in externalRoutes, it's an external route. Otherwise it must be engine-internal. Just like with services already.

It's continue non-obvious, It's not about call a route define in externalRoutes, but about semantic and isolation. Doesn't make sense define isolation just for entry point externalRoutes, but we need a clear API.

True, just when reading the route name at the call site, it is not clear, whether it is an external or internal route. However, you can easily tell, by looking at externalRoutes. Just like with services already.

Same thing, look externalRoutes doesn't resolve our problems about isolation and semantic.

I don't think that this is an issue. Just like with services already, where you have two places a service may be coming from (externalServices or the addon/services directory).

@gabrielcsapo You could make the exact same case for services. At the injection site there is no way to tell whether the service is coming from the engine or was passed into it as an external service.

Yes, like a said before routes and services are different things and the current implementation to services brings a lot of risks for purpose of ember-engines, and I don't think we should follow the same direction to routes turning engines more confuse than today.

Just some thoughts after reading the above, although don't attach too much weight, I'm relatively new to Engines...
One of the problems of that I see with the use of <LinkToExternal /> etc is that they are optional, and that optionality doesn't just apply to use between projects, but also between developers on an single project - which leads to inconsistency in a codebase.
As soon as <LinkTo/> is used once in a codebase to link to an external engine, all of the above DX based in favour of keeping *ToExternal are undermined because none of the uses of <LinkTo/> in the described codebase can be trusted to be internal links only. Absence of evidence is not evidence of absence.
So, I suppose that if it's eventually decided that *ToExternal is the best course of action. We should also consider *enforcing it's use, so it's DX benefits are concrete.
However, that likely won't be possible, because of the eco system, which knows nothing about *ToExternal 😞
Which it seems leads to a potential conclusion that, no matter the best intentions of having *ToExternal are, the fact it's an optional tool undermines the need for it's existence?

One of the problems of that I see with the use of  etc is that they are optional, and that optionality doesn't just apply to use between projects, but also between developers on an single project - which leads to inconsistency in a codebase.

They are required to link Engines in another Engine or host app. Maybe you won't link your engines, what can happen with ` if you don't need it at the moment.

However, that likely won't be possible, because of the eco system, which knows nothing about *ToExternal 😞

Which it seems leads to a potential conclusion that, no matter the best intentions of having *ToExternal are, the fact it's an optional tool undermines the need for it's existence?

Surely! It's a trade-off of having a new API, requires new parallel constructs to support engines in addons that deal with routes like this one.
https://github.com/BBVAEngineering/ember-route-helpers#transition-to-external-destination-query-params-foobar
What we need is to make Ember Engines better known in the ember ecosystem to mitigate this trade-off and the idea that engines is not clear or instable, because this project was "forgotten" for a time.

Personally I am still not convinced by the arguments brought forth, that merging the namespaces is dangerous, considering that it would be impossible to clobber external routes with internal routes or vice versa.
To me it all boils down to this trade-off: being more explicit at the call site vs. having to update the full Ember ecosystem.
I think the latter one is a huge effort, that is simply not worth it, while the former one holds little value.
Anyhow, this is not the hill I want to die on, so I'd like to propose another alternative compromise solution. It's basically one of the alternatives that was suggested in the original RFC: Instead of having *External flavors of all methods, components, helpers, etc. that deal with routes, just have one single utility function (and accompanying helper) to mark a route name as external, e.g.:
<LinkTo @route={{external-route "home"}}>Back to Home</LinkTo>

import { externalRoute } from '@ember/routing';
import { inject as service } from '@ember/services';

class Foo {
  @service router;

  backToHome() {
    this.router.transitionTo(externalRoute('home'));
  }
}

This is the best of both worlds:

At the call site it's still unambiguously clear that an external route is referenced.
All *External flavours are removed, meaning that the wider ecosystem does not necessarily need to be aware of any engine specifics.

There's only one major downside: It's less ergonomic.
An unresolved question to me would be: what exactly does externalRoute() return?
An opaque value? This might break addons that try to parse the string. Though this should be discouraged anyway.
The actual global route name? This would break isolation.
A "tagged" string, basically like htmlSafe()? Could also still break addons trying to parse it.
Again, I still believe the best solution is merging the namespaces as described in my original post, but I would happily accept this compromise solution as well.
I'm interested in hearing your opinions.

It already proposed in the RFC discussion, I'll just copy/paste here the reasons already described.

Introduce (external-route)/externalRoute to return a wrapper object denoting a route that isn't local to an engine (similar to htmlSafe strings in templating)

Pros

Composable – works anywhere you're ultimately feeding a route name into a transition, regardless of whether it's part of Ember proper, other 3rd party code, or your own app logic

Cons:

Pretty magical, and it requires new developers to grok the concept of an external route as a concrete reified thing

Also, add this introduces a new way of representing a route, as an object instead of just as a string. This affords us some flexibility but also means any route-handling functionality will now need to be polymorphic, which leads to more complex code and (potentially) performance issues.

An unresolved question to me would be: what exactly does externalRoute() return?

return a wrapper object denoting a route

Again, I still believe the best solution is merging the namespaces as described in my original post

I still have sure that it continues breaking the isolation and making the things unclear for the reasons already mentioned above. I don't think it's a great option.

PSA for anyone subscribed to this issue: @SergeAstapov has submitted RFC 819 "Public router service", which makes the RouterService available to engines in accordance with the changes proposed in this issue.


Nag for deprecation of access to conventions

Nag for deprecation of access to conventions: Convention, HasConvention and Project.getConvention().
Registering conventions doesn't nag yet. Mostly because of KGP still registering conventions for backwards compatibility reasons.
See https://youtrack.jetbrains.com/issue/KT-52976
This is not about "convention mapping".
This is not about "convention plugins".

Supersedes https://github.com/gradle/gradle/pull/23707
Follows https://github.com/gradle/gradle/pull/24199
Follows https://github.com/gradle/gradle/pull/24266
Follows https://github.com/gradle/gradle/pull/24207
Will be followed by https://github.com/gradle/gradle/issues/24232

@bot-gradle test PRF, ACTR, AST, APT

I've triggered the following builds for you:

PullRequestFeedback build
AllCrossVersionTestsReadyForRelease build
AllSmokeTestsPullRequestFeedback build
AllPerformanceTestsReadyForRelease build

@bot-gradle test AST

I've triggered the following builds for you:

AllSmokeTestsPullRequestFeedback build

@bot-gradle test and merge

I've triggered a build for you.


Request.Scheme is still http even though using HttpOverrides

We sometimes want Request.Scheme should be https behind front-end load balancer (nginx, haproxy and so on). In this situation, the front-end serves with https, terminates SSL then load-balances with http. In this situation, the backend ASP.NET Core web server listens to only http request. However, we want Request,Scheme should be https to create a redirect URL for Identity such as Azure AD B2C, Open ID Connect and so on. For this purpose, the front-end load balancer adds X-Forwarded-Proto with https.
I expect Microsoft.AspNetCore.HttpOverrides set Request.Scheme to https when X-Forwarded-Proto is https.
https://www.nuget.org/packages/Microsoft.AspNetCore.HttpOverrides/
Though I configure HttpOverrides as follows, I still get Request.Scheme is https in a Controller class.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    //not enough
    app.UseForwardedHeaders(new ForwardedHeadersOptions
    {
        ForwardedHeaders = ForwardedHeaders.XForwardedProto
     });
    //...
}

To workaround this, I can get Request.Scheme is https by adding below codes.
    app.Use((context, next) =>
     {
        if (context.Request.Headers.TryGetValue(XForwardedPathBase, out StringValues pathBase))
        {
            context.Request.PathBase = new PathString(pathBase);
        }

        if (context.Request.Headers.TryGetValue(XForwardedProto, out StringValues proto))
        {
            context.Request.Protocol = proto;
        }
         return next();
    });

I found this workaround from https://github.com/aspnet/Docs/issues/2384#issuecomment-286146843
Also, I wonder whether it's a HttpOverrides librars's issue or not. If this is not a right place. could tell me the right place?

Which version of HttpOverrides are you using? A default setting was relaxed in 2.0 and it address many of the issues people have here.
Also, please share the request headers as received by the application. That will help us determine why the forwarded headers were not applied.

Yes, the version is 2.0.0.
    <PackageReference Include="Microsoft.AspNetCore.HttpOverrides">
      <Version>2.0.0</Version>
    </PackageReference>

Here are the all headers
Accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding=gzip, deflate, br
Accept-Language=ja,en-US;q=0.8,en;q=0.6
Cookie=__utma=144897195.1338814121.1504445461.1504445461.1504530945.2; __utmz=144897195.1504530945.2.2.utmcsr=google\|utmccn=(organic)\|utmcmd=organic\|utmctr=(not%20provided)
Host=repro.<IP_ADDRESS>.nip.io
Referer=https://repro.<IP_ADDRESS>.nip.io/
User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
Upgrade-Insecure-Requests=1
X-Forwarded-Host=repro.<IP_ADDRESS>.nip.io
X-Forwarded-Port=443
Forwarded=for=<IP_ADDRESS>;host=repro.<IP_ADDRESS>.nip.io;proto=https
X-Forwarded-For=<IP_ADDRESS>
X-Original-Proto=http
Scheme: https

Were those headers enumerated within your controller? Or are they from a network trace between nginx and kestrel? The presence of the "X-Original-Proto=http" header implies the "X-Forwarded-For" header was successfully processed and removed.
There are several parts of your explanation that don't make sense. "I still get Request.Scheme is https in a Controller class." was that a typo? I thought https was what you wanted?
Setting Request.Protocol to https also doesn't make sense, Protocol is the HTTP version, e.g. HTTP/1.1.

There are several parts of your explanation that don't make sense. "I still get Request.Scheme is https in a Controller class." was that a typo? I thought https was what you wanted?
Yes, that was typo. I have fixed my comment.

Setting Request.Protocol to https also doesn't make sense, Protocol is the HTTP version, e.g. HTTP/1.1.
The workaround code was originated by another person. I'll test it again later.

I may miss-understood the situation.  I have found the httpoverrides works correctly as follows.
https://github.com/tanaka-takayoshi/httpoverrides-test/tree/httpoverrides-only
It seems another thing may affect my original issue. This issue can be closed at this time, and I'll reopen if I find the root cause.


AuthV2: Change working (admin set user perms)

admin add "prodct (type)", no "member"

Hi @kiblik, if we name it this way, it would be consistent to change the corresponding menus in view_product_details.html and view_product_type.html to "Add user". Would you mind changing this as well?


Renderer: Disable alpha by default.

We were creating transparent webgl context and forcing the browser do extra compositing work.

Been experiencing a lot of IE11 timeouts lately :/ bet it's memory related...


chore: Make dev deploy easier with skaffold

Ref to the skaffold doc to install skaffold. Then try skaffold dev [-d=harbor.smartx.com/your-project].

Codecov Report

Merging #289 (29c354a) into main (258912a) will increase coverage by 0.36%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #289      +/-   ##
==========================================
+ Coverage   62.60%   62.97%   +0.36%
==========================================
  Files          41       41
  Lines        7036     7036
==========================================
+ Hits         4405     4431      +26
+ Misses       2255     2237      -18
+ Partials      376      368       -8

Impacted Files
Coverage Δ

pkg/controller/policy/cache/rule.go
94.70% <0.00%> (-3.32%)
:arrow_down:

pkg/agent/datapath/multiBridgeDatapath.go
65.72% <0.00%> (+0.56%)
:arrow_up:

pkg/controller/policy/cache/group.go
78.83% <0.00%> (+0.72%)
:arrow_up:

plugin/tower/pkg/controller/policy/controller.go
83.28% <0.00%> (+1.36%)
:arrow_up:

plugin/tower/pkg/controller/global/controller.go
86.27% <0.00%> (+1.47%)
:arrow_up:

pkg/controller/group/group_controller.go
74.62% <0.00%> (+1.85%)
:arrow_up:

plugin/tower/pkg/controller/endpoint/controller.go
80.76% <0.00%> (+1.92%)
:arrow_up:


Support vento templating within content files (html or markdown files)

Thank you very much for vento! It is so ‘simple’, sane and modern compared to other template languages. I am converting almost a dozen web projects to vento (from Nunjucks or Liquid).

I would like to use vento in content files, i.e. .md and .html files.
A simple use case would be an iterator in a blog.html file:
{{ for item of pages }}
…
{{ /for }}

Basically it works as expected. Yet vento throws an error if a content file contains

a curly brace or (e.g. if a file contains JS)
a backtick (e.g. if a file contains a markdown code block).

Would it be possible to only call vento within {{}}? (Nunjucks does not break for the same use case.)
Thank you very much.

Vento should be called only within {{ and }} tags. Can I see a example of a breaking code?

Thanks for your reply!
This works (as a excerpt from an HTML or markdown file):
const result = await env.runString("
Test
");

But this fails:
const result = await env.runString("
Test
");

Ok, I'll take a look.
Thanks!

v0.7.2 was released, including a fix for this issue.

v0.7.2 was released, including a fix for this issue.

Wow, thank you very much. Everything is working as expected.


Add boolean filters

Closes #645

Test on Surge:
http://madly-recess.surge.sh/opensphere/
Tests to Verify:

Add Kube Master server to data sources
1a. Click Add Data > Manage Servers > Paste https://kubemaster-trunk-1.udev.six3/ogc/wmsServer and click OK > Change Name to "Kube Master" > Set Feature Server to https://kubemaster-trunk-1.udev.six3/ogc/wfsServer
Show Twitter data layer (Blue Marble will disappear)
Select and load data in part of the blob that looks like Japan
3a. Write down the number of features loaded
Add Filter > Name: "Hide Truncated" > Expression: TRUNCATED "is false"
4a. Apply the filter and write down the number of features loaded
4b. Double-click some features to verify TRUNCATED is false
Edit the Filter > Name: "Show Truncated ONLY" > Expression: TRUNCATED "is true"
5a. Verify the number of features loaded is the difference between the numbers in 3a and 4a
5b. Double-click some features to verify TRUNCATED is true


Output logs

This PR makes it possibles for nodes to receive the logs of other nodes.
This makes it possible to see logs within the plotting window for example as shown in the example.
This is aim at potentially simplify debugging when using hot-reloading features or even in a further future auto-debugger.

Commenting on dora/logs/<node_id>, I think that this might create some hidden connections between node that can later be hard to manage. I would prefer if they were only one way of creating links between nodes. Maybe we can name the output: captured_logs or stdout?
Sure thing if you want to do the implementation

Commenting on dora/logs/<node_id>, I think that this might create some hidden connections between node that can later be hard to manage. I would prefer if they were only one way of creating links between nodes.

Good point! How about we introduce a capture_logs_to: output_name config key, which allows users to specify the output that they want to use for logs? This way, we have all outputs still listed under the outputs key without a "magic" output name.

Apart from the syntax that we want to use, there is a second challenge. Right now we capture the output per node, not per operator. So the operator logs would also contain the outputs of other operators on that node.
Ideally we would split the output properly, but this is difficult sind stdout is set per process. Maybe we can make the dora runtime print special separator messages before and after calling into an operator, which the daemon could then use to split the split the output by operator... I'll look into it.

Okay! I think that this can also be useful for Opentelemetry logs in the future to tag log at the operator level as well.
Shall we maybe merge a first version at custom nodes level first?
We can then prioritize operator level in the future?

Shall we maybe merge a first version at custom nodes level first?

Sure, I'm fine with that.

How about we introduce a capture_logs_to: output_name config key, which allows users to specify the output that they want to use for logs? This way, we have all outputs still listed under the outputs key without a "magic" output name.

I opened a draft PR at https://github.com/dora-rs/dora/pull/392 to add a new send_stdout_as: <output_name> to custom nodes.
I decided for stdout instead of log in the name because I would like to implement a custom logger for dora at some point. For Rust code, this would mean that we provide set a custom log logger, which gives us more context than the normal println (e.g. proper start/end for multi-line messages, log level, source location, etc). For Python, we could provide a dora.log function that should be used instead of calling print. This function would also accept an optional log level (info, warn, err, etc.). Using this approach, we could easily assign log messages to operators, even in runtimes with multiple operators. What do you think, @haixuanTao?

Sure! I think we can separate stdout and log.
FYI, for python, we can do something in the likes of tracing_for_pyo3_logging https://docs.rs/tracing-for-pyo3-logging/latest/src/tracing_for_pyo3_logging/lib.rs.html#1-63

FYI, for python, we can do something in the likes of tracing_for_pyo3_logging https://docs.rs/tracing-for-pyo3-logging/latest/src/tracing_for_pyo3_logging/lib.rs.html#1-63

Ah, that's nice!

Relevant: https://docs.rs/pyo3-opentelemetry/0.2.0/src/pyo3_opentelemetry/lib.rs.html#16-186

Maybe we can also create a features feature flag configuration input for nodes in a similar way that Cargo.toml has feature flags for crates and stdout or logs can be one of them. In the future we can make it configurable to put more configuration flags.

Or as an environment variable as well for the specific node

So, I think that we can merge this. I have added the possibility to send_stdout_as for operators and added warnings that we do not split stdout between operators.


ol.control.Control - Positioning at bottom

Hi,
I'm trying to place an ol.control.Control element on my map at the bottom and horizontally centered on the map.
What I have so far is my example at https://codepen.io/gott18/pen/JjvBrKO.
However, in the CSS part, if I add position: unset; it is possible to center my Control, but in this case I cannot use the bottom: 10px; attribute to place it. If I remove the position: unset; I can put the Control at the bottom, but centering does not work.
Could someone give me a hint on how to place the Control correctly, please?
Furthermore, in the HTML part of the example I could add the <div> for my Control either inside the map's div or outside. Is there a best practice?
Thanks a lot in advance.

.mycontrol {
  bottom: 10px;
  left: calc(50% - 150px);
  margin-right: auto;
  margin-left: auto;
  width: 300px;
  height: 100px;
  border: 2px solid green;
}

would work.  Normal practice is for the control to create its own div, which will be positioned inside the map then unless target is specified.


ollama free GPU memory itself

Hello, nice work.  Below is my problem:
if no request to ollama for a few minutes, it will free GPU memory， when a new request comes, it will load the model and response, so this will about 5 seconds.  How to make  ollama hold the GPU memory

See https://github.com/ollama/ollama/blob/main/docs/faq.md#how-do-i-keep-a-model-loaded-in-memory-or-make-it-unload-immediately for instructions on using keep_alive


Option to add 2 buttons which with different actions.

I want to convert this carousel/slider to something with 2 buttons whose actions will be different.
1 will slide all visible items and other will slide one by one.
for example:  http://take.ms/7JU4z

Fun, but customaf. Check out beforeChange and log the slick obj.
Closing: Support request


JobEvent: Adds pipeline_id

Adds the pipeline_id field to Gitlab CI Webhook Events (JobEvent):
https://docs.gitlab.com/ee/user/project/integrations/webhooks.html#job-events

Thanks @dm03514! LGTM!


Improve tests

Display test name before testing (with -v)
Update CI to use -v instead of -m
Try to fix random issue on tests of hdf5tree by using mkstemp instead of NamedTemporaryFile + closing h5file from the model

Looks good.


[WIP] Service autoscaling for ecsworkshop cdk

Work in progress - service autoscaling for ecsworkshop cdk

Added autoscaling logic to cdk.
Intentionally have it commented out as during the ecsworkshop, it will be uncommented to show how to enable service autoscaling.


build docs with sphinx 5.3

What does this PR do?

last release build fails so rebuild with sphinx 5.3
ref: https://github.com/Lightning-AI/lightning/actions/runs/5619864030

Before submitting

Was this discussed/agreed via a GitHub issue? (not for typos and docs)
[x] Did you read the contributor guideline, Pull Request section?
[x] Did you make sure your PR does only one thing, instead of bundling different changes together?
Did you make sure to update the documentation with your changes? (if necessary)
Did you write any new necessary tests? (not for typos and docs)
[x] Did you verify new and existing tests pass locally with your changes?
Did you list all the breaking changes introduced by this pull request?
Did you update the CHANGELOG? (not for typos, docs, test updates, or minor internal changes/refactors)

PR review
Anyone in the community is welcome to review the PR.
Before you start reviewing, make sure you have read the review guidelines. In short, see the following bullet-list:

Reviewer checklist

[x] Is this pull request ready for review? (if not, please submit in draft mode)
[x] Check that all items from Before submitting are resolved
[x] Make sure the title is self-explanatory and the description concisely explains the PR
[x] Add labels and milestones (and optionally projects) to the PR so it can be classified

cc @borda @tchaton

failing IPU base build is dropped in #18207


Added finnish locale

Thank you for contributing to Dashy! So that your PR can be handled effectively, please populate the following fields (delete sections that are not applicable)
Category:

One of: Other (please specify) - Added finnish locale

Overview

Added finnish language locale

Issue Number (if applicable) #00
New Vars (if applicable)

N/A

Screenshot (if applicable)

N/A

Code Quality Checklist (Please complete)

[x] All changes are backwards compatible
[x] All lint checks and tests are passing
[x] There are no (new) build warnings or errors
[ ] (If a new config option is added) Attribute is outlined in the schema and documented
[ ] (If a new dependency is added) Package is essential, and has been checked out for security or performance
[ ] Bumps version, if new feature added

Bump :)

Hi @yesBad !
Thank you for your input and review. Finnish is not my first language although I speak it. I used my head where I could and looked up some words I didn't know online. Apparently this wasn't up to par for a native speaker regarding choice of words etc.
It makes me kind of sad though that you jump to conclusions when I'm trying to contribute to a piece of OSS that I enjoy.
I was also hoping that I could provide a foundation where a native speaker would catch improper grammar/spelling and update them in a PR. Just like I did when I updated the Swedish locale 1-2 years ago.
I'll let a family member with better Finnish proficency go through this. Thanks once again for your review 😊

Hi @yesBad !
Thank you for your input and review. Finnish is not my first language although I speak it. I used my head where I could and looked up some words I didn't know online. Apparently this wasn't up to par for a native speaker regarding choice of words etc.
It makes me kind of sad though that you jump to conclusions when I'm trying to contribute to a piece of OSS that I enjoy.

Sorry about that, just a lot of Finnish translations seem to be done with some AI/Translate API nowdays sadly. 👍
Goodluck with the PR.

np bro 😊


Support Uptane as a way to update Zephyr software

Introduction
Right now, Zephyr updates seem to mostly be using the SWupdate tool.  We'd like to include an alternative tool, Uptane, which provides a much stronger set of security properties that help it resist even nation-state actors.
Problem description
SWupdate does not provide revocation, delegations, roles, or similar mechanisms to account for situations where the signing key and/or repository are compromised.
Proposed change
I'd like to help the Uptane project, specifically, the Aktualizr implementation which is included in AGL, etc. be an option for interested users.
Detailed RFC
For details about the security model, etc, please see the Uptane website.  Essentially, right now, if a key or server is compromised, there is a serious risk to all Zephyr users.  Adopting a different architecture will mitigate much of this risk.
Proposed change (Detailed)
I'll have to have someone from our team take a look at how to package this all up and get things smoothly into Zephyr.  I'm curious to talk first to explore if this is of interest before working to do this effort.
Dependencies
I'm not sure.  Will need to consult with others.  Just starting the process here first.   Overall the codebase is used and maintained by Toradex, which runs Zephyr on some of their boards.
Concerns and Unresolved Questions
Need to have further discussions with the community about any concerns from their end.
Alternatives
I am also speaking with the folks at SWupdate about possibly adding the security model from Uptane (or similar) to their tool.  I would be happy to see that effort progress also or possibly instead of this.

@kestewart asked for my .02, so sharing the wealth :) Generally I think it's a great thing to provide more options for device management & OTA. So thoughts that come to mind:

What aspects can be generalized/re-used by other subsystem like DFU
What are the target class of the devices? The typical Zephyr MCU device is rather constrained and I think the aktualizr client typically runs on a Linux-class device.
Zephyr's C++ support is functional but limited. C modules are generally preferred in tree.

FWIW, at Golioth we use our own mechanism for OTA and IETF SUIT but I would be excited to see any improvements to this part of Zephyr!

Hi, I agree with @beriberikix. aktualizr client will not just fit on Zephyr, unless you are intending to pull an specific part. I'm also interested to understand what are the intended targets and how it relates with other components like boot loader.
From the C++ thing, don't take for granted that any C++ feature is available and take in mind we support multiple toolchains.
That's said, it will be fantastic to have it. I'll take a closer look in the client to give more feedback.

You mention that Zephyr OTA is currently mostly done using SWupdate. I am not aware of a Zephyr port of SWupdate, could you please post a reference to this?


Invoking commands via CommandInfo objects fails in pwsh 7

Steps to reproduce
pwsh -noprofile
& (Get-Command Write-Host) "text"

Expected behavior
The text is written to host by calling the Write-Host cmdlet via the CommandInfo object (as it is working in Windows PowerShell, and I'm pretty sure older versions of pwsh as well).
text

Actual behavior
ArgumentNullException: Value cannot be null. (Parameter 'key')

Error details from Get-Error -Last 1:
Exception             :
    Type       : System.ArgumentNullException
    Message    : Value cannot be null. (Parameter 'key')
    ParamName  : key
    TargetSite :
        Name          : ThrowKeyNullException
        DeclaringType : System.Collections.Concurrent.ConcurrentDictionary`2[TKey,TValue]
        MemberType    : Method
        Module        : System.Collections.Concurrent.dll
    StackTrace :
   at System.Collections.Concurrent.ConcurrentDictionary`2.ThrowKeyNullException()
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at System.Management.Automation.CommandProcessor.ConstructInstance(Type type)
   at System.Management.Automation.CommandProcessor.Init(CmdletInfo cmdletInformation)
    Source     : System.Collections.Concurrent
    HResult    : -2147467261
CategoryInfo          : NotSpecified: (:) [], ArgumentNullException
FullyQualifiedErrorId : System.ArgumentNullException
InvocationInfo        :
    ScriptLineNumber : 1
    OffsetInLine     : 1
    HistoryId        : -1
    Line             : & (gcm w*st) a
    PositionMessage  : At line:1 char:1
                       + & (gcm w*st) a
                       + ~~~~~~~~~~~~~~
    CommandOrigin    : Internal
ScriptStackTrace      : at <ScriptBlock>, <No file>: line 1

Environment data
Reproduces both in a clean 7.0.1 install as well as the most recent preview release (7.1-preview3). Also reproduces under 7.3.0-preview4 and 7.2.4.
Name                           Value
----                           -----
PSVersion                      7.0.1
PSEdition                      Core
GitCommitId                    7.0.1
OS                             Microsoft Windows 10.0.17763
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

Name                           Value
----                           -----
PSVersion                      7.1.0-preview.3
PSEdition                      Core
GitCommitId                    7.1.0-preview.3
OS                             Darwin 19.4.0 Darwin Kernel Version 19.4.0: Wed Mar  4 22:28:40 PST 2020; root:xnu-6153…
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

Name                           Value
----                           -----
PSVersion                      7.2.4
PSEdition                      Core
GitCommitId                    7.2.4
OS                             Darwin 21.4.0 Darwin Kernel Version 21.4.0: Fri Mar 18 00:45:05 PDT 2022; root:xnu-8020.101…
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

Code golf script works in my PS 7.1-preview.3 instance
 &(gcm w*st)'hi'

Very strange. I'm seeing this in:

macOS Catalina
Windows 10 VM on said macOS machine
A completely separate laptop.

PS C:\Users\LukeB> $PSversiontable
Name                           Value

PSVersion                      7.0.1
PSEdition                      Core
GitCommitId                    7.0.1
OS                             Microsoft Windows 10.0.19635
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0
PS C:\Users\LukeB> &(gcm w*st)'hi'
ArgumentNullException: Value cannot be null. (Parameter 'key')
PS C:\Users\LukeB>
PowerShell 7.1.0-preview.3
Copyright (c) Microsoft Corporation.
https://aka.ms/powershell
Type 'help' to get help.
PS C:\Users\LukeB> $PSversiontable
Name                           Value

PSVersion                      7.1.0-preview.3
PSEdition                      Core
GitCommitId                    7.1.0-preview.3
OS                             Microsoft Windows 10.0.19635
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0
PS C:\Users\LukeB> &(gcm w*st)'hi'
ArgumentNullException: Value cannot be null. (Parameter 'key')
PS C:\Users\LukeB>

Gotcha. So it's related to loading the assembly.
If you load pwsh (ideally with -noprofile to preclude write-host etc use on load) and then try the repro you'll get an error.
Until you actually call Write-Host directly (or I assume any other cmdlet defined in that same assembly) it will fail. As soon as one of the cmdlets in that module is called directly, it starts working again.
So it seems like there needs to be a check for if the module is loaded & to load it if need be.

Gotcha. So it's related to loading the assembly.

Ah!

So it seems like there needs to be a check for if the module is loaded & to load it if need be.

Agreed

I suspect this may have regressed when #10784 was added, since I seem to recall there having to be some workarounds made in that for similar things (retrieving proper commandinfo objects when the module has yet to be loaded).
I suspect this code path simply isn't accounting for the possibility that a more complete CommandInfo object could be returned before the module is loaded.

Is this still an issue @vexx32 ? I cannot seem to reproduce it on PS 7.2.4

PowerShell 7.3.0-preview.4
PS C:\Users\LukeB>  &(gcm w*st)'hi'
ArgumentNullException: Value cannot be null. (Parameter 'key')
PS C:\Users\LukeB>

@StevenBucher98  I just checked 7.2.4 as well, still happening. I will note that if you're not running it in a fresh session with no profile loaded, there's a good chance you'll miss it, because profiles tend to trigger autoloading of commands, and there's a good chance you've already loaded the assembly containing the Write-Host command.
I'm pretty sure this is going to be the case for any command that is provided by an assembly and not a PowerShell script that you try to invoke this way without triggering the module loading beforehand in some fashion. I think tab completion is even enough to trigger the module loading on its own, too?
That said, this is definitely still a bug and we should absolutely still fix it.

I cannot reproduce this in 7.4, marking as resolved fixed unless anyone else reports differently.


test(sdk): Auth code flow BDD test

Codecov Report
Patch coverage: 25.00% and project coverage change: -0.10 :warning:

Comparison is base (69ac92e) 89.78% compared to head (2941da9) 89.69%.

:exclamation: Current head 2941da9 differs from pull request most recent head 8b33fcc. Consider uploading reports for the commit 8b33fcc to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #436      +/-   ##
==========================================
- Coverage   89.78%   89.69%   -0.10%
==========================================
  Files          79       79
  Lines        2947     2950       +3
==========================================
  Hits         2646     2646
- Misses        199      202       +3
  Partials      102      102

Impacted Files
Coverage Δ

cmd/wallet-sdk-gomobile/display/opts.go
85.00% <0.00%> (-15.00%)
:arrow_down:

pkg/openid4ci/clientconfig.go
100.00% <ø> (ø)

cmd/wallet-sdk-gomobile/display/resolve.go
80.64% <100.00%> (ø)

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


Feat/dennis/landing

Made a basic landing page, still a WIP

That looks amazing @Dennull!! I'm just going to hold off of reviewing this until #40 gets merged in. After that you can rebase and push your branch on top of main and we'll give it a review!

That looks amazing @Dennull!! I'm just going to hold off of reviewing this until #40 gets merged in. After that you can rebase and push your branch on top of main and we'll give it a review!


maxfun=8000 for cobyla in t_large.c

Hi @jschueller ,
Is there a particular reason for setting maxfun=8000 for cobyla in t_large.c, but not others? Will it be OK if we simply use the same maxfun as other solvers in t_large.c?
BTW, would you mind if this file is renamed to stress.c?
Thanks.
Zaikun

yes, I set it to 8000 so it doesnt exceed the CI 6h time limit

With https://github.com/equipez/github_actions_scripts/blob/de1b45b9fd667a9fe42cd7d5ecec4318f60d9117/check_success_timeout, it does not matter if the job takes more than 6 hours. It will be canceled and marked as a success.
I guess the job will run slower on GitHub Actions due to the limitation of the hardware.

I made the above-mentioned changes in https://github.com/libprima/prima/commit/eb5707c152b52f1b8061d89968d27786e994d831. I hope this is fine with you. We can still make changes if you would like.
BTW, I modified the value of maxfun in the C examples, in order to show to the user that it is sensible to set maxfun to a multiple of n.
In addition, I removed the initialization of nf in the C examples, as it will be set by the solver anyway. I hope this is not considered bad practice in C.
Tell me if any of the above points is problematic to you. Otherwise, you may close this issue.
Thank you.

its fine

In addition, I removed the initialization of nf in the C examples, as it will be set by the solver anyway. I hope this is not considered bad practice in C.

Indeed, I was wrong here. It was not initialization but declaration. Corrected.


Request: Provide option to show today's total time as the main time display in task bar

Similar to #2504
I think it'd be great to have an option to invert the displayed time so that it shows today's current time in the task bar/ mac menu bar and the current session time on mouse over.
As another person who sets daily time as a goal, I think this would be largely helpful.

On mac:
Today's total is visible when hovering on the menubar icon
Current timer can be enabled in menubar with setting Show timer on menu bar
On Windows
Today's total is visible when hovering on the tray icon (added with #2504)
Current timer is not visible in a way that it is on mac, but you can use minitimer for smaller window that shows currently running timer.


searchbar can't enter chinese characters at ios

Ionic version:  (check one with "x")
[ ] 1.x (For Ionic 1.x issues, please use https://github.com/driftyco/ionic-v1)
[ ] 2.x
[ x ] 3.x
I'm submitting a ...  (check one with "x")
[ x ] bug report
[ ] feature request
[ ] support request => Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or http://ionicworldwide.herokuapp.com/
Current behavior:

when i use seachbar at ios,it can't enter Chinese characters
Related code:
insert any relevant code here
![65823092352236116](https://cloud.githubusercontent.com/assets/23051171/26291027/15f9ae0a-3ede-11e7-90f3-6f7d4629f3bd.jpg)

Other information:

Ionic info: (run ionic info from a terminal/cmd prompt and paste output below):
insert the output from ionic info here

Me, too. Japanese same

Hello, thanks for opening an issue with us. I am going to close this as a duplicate of https://github.com/driftyco/ionic/issues/11566.


[ign-math6] Workflow updates

Add labeler workflow
Add triage workflow
Add Ubuntu CI workflow with Codecov upload
Update badges
Port CODEOWNERS
This needs https://github.com/ignition-tooling/ubuntu-bionic-ci-action/pull/4 for the examples compilation to work.

Codecov Report

:exclamation: No coverage uploaded for pull request base (ign-math6@c272642). Click here to learn what that means.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             ign-math6     #117   +/-   ##
============================================
  Coverage             ?   99.50%
============================================
  Files                ?       59
  Lines                ?     5658
  Branches             ?        0
============================================
  Hits                 ?     5630
  Misses               ?       28
  Partials             ?        0

Continue to review full report at Codecov.

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


⚠Important⚠ - Sign up registration code is not written properly/broken

I just tired deploying ChatbotUI to Vercel and I have followed the instructions.
However, when I tried to signup, it would reload the page (with no prompt, even though i enabled it through the code) and it would send me the confirmation email. It all seemed normal, until when I clicked on the confirmation url.
It would take my back to the root of the site and then I pressed "Start Chatting", it would go straight to the dashboard UI without the onboarding. The dashboard UI won't function, you can't type anything and can't view your profile, and I'm pretty sure that's because I haven't done the onboarding and even though I confirmed my email, I am still not a "user" in the "profile" table.
This needs to be fixed ASAP and I will try to look into it more.
@mckaywrigley
Thanks :)

I'm experiencing the same issue.

Yeah this is a huge issue @mckaywrigley can you please look into it more.
Thankyou!

Do you have groq_api_key in a column of your Profile table?

Yes, i do.

I had this problem, my workaround was to delete the api setup page.

Oh yeah I recall this a while back I just manually created a user in the database.

Same here

@spammenotinoz if you remove the api setup page, it still doesn't work

I had this problem, my workaround was to remove the api setup page.

Oh yeah I recall this a while back I just manually created a user in the database.

Yeah i guess that works but it's just easier and more simpler to signup on the website, plus other people could  use it as well.

I noticed the official ChatBotUI signup works perfectly fine?
@mckaywrigley could you please share with us if you have made any changes to the official ChatBotUI so that the signup works? Thanks.


exploitdb: 2021-09-22 -> 2021-09-25

Motivation for this change
Update to latest upstream release 2021-09-25
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 139512 run on x86_64-linux 1

1 package built:

exploitdb


Replaced defines with const variables.

This commit replaces defines with const variables
Also, adds vim swap files in .gitignore

Coverage remained the same at 93.548% when pulling 283e693c4ee58dc52ff653dc2eec6391a80f83f8 on amit-cliqz:cleanup into dd5f8e86a4f771199414a1aedcb372115ef98ffb on KeyviDev:master.


orbdir has no parameters but is called with a vector refNorm

In orbdir.ks the function expects no parameters.
However in etaAN and etaDN, the function is called with refNorm.
How do you use those functions for time to AN/DN for equatorial orbit or any other orbit (like that of a target orbitable)?

Thanks, I'll look into it.
I'd guess that refNorm is meant to be passed optionally in line 4 instead of V(0,1,0) (the equatorial normal vector).

What do you mean you'd guess? Didn't you write this? Maybe you should add more comments to your code, and especially the interface (function parameters) your code offers.

I mean, that is most likely what I meant back then.
Not 100% sure, because I haven't really played KSP for some years and I need a better PC to run the latest versions and properly test the library :(


Exchange routes

Closes #1681 and #2446. Unblocks #2824 and #3245.

How does https://github.com/gratipay/gratipay.com/commit/b6d7f65efc4237a393a3d53b6eab1d5989dbb3a0 solve #1681?
From #2443 -

Even if we start logging additional information about exchanges it won't fix the past receipts (#1681). If we want to fix those we'll have to do lots of Balanced API queries to retrieve the information.

We don't seem to be doing anything about previous exchanges here - shouldn't we be linking all of them to the respective route(s)?

b6d7f65efc4237a393a3d53b6eab1d5989dbb3a0 solves #1681 in that we won't be showing the wrong credit card anymore. However you're right, I haven't written a script to backfill the route column, so we won't be showing the right credit card either. The issue for that is #2779.

Rebased on master and added a couple of small commits.

Is "Exchange Routes" a term we're exposing in the UI? Or is that just internal?

Or is that just internal?

Internal, as far as I've seen.

Okay. I bring it up because "exchange" in a financial context often means "foreign exchange," so I'm not sure it's the best user-facing term to use.

I guess I'm the only person who's reviewed this - It is a big change and probably deserves more eyeballs on it, but I'm merging this in coz it's a blocker.

One thing I just noticed - we haven't modified record-an-exchange.spt.

Reticketed as #3295

branch.py done. I had to modify it a little:
@@ -1,3 +1,7 @@
+from __future__ import print_function
+
+import traceback
+
 import balanced

 from gratipay import wireup
@@ -56,8 +60,16 @@ with db.get_cursor() as cursor:
             print("processing participant %i/%i" % (i, total))
         customer = customer_from_href(p.balanced_customer_href)
         if p.last_bill_result != None:
-            card = customer.cards.one()
-            insert_exchange_route(p.id, 'balanced-cc', card.href, p.last_bill_result)
+            try:
+                card = customer.cards.one()
+                insert_exchange_route(p.id, 'balanced-cc', card.href, p.last_bill_result)
+            except Exception as e:
+                print('cc', p.id, p.last_bill_result)
+                traceback.print_exc()
         if p.last_ach_result != None:
-            ba = customer.bank_accounts.one()
-            insert_exchange_route(p.id, 'balanced-ba', ba.href, p.last_ach_result)
+            try:
+                ba = customer.bank_accounts.one()
+                insert_exchange_route(p.id, 'balanced-ba', ba.href, p.last_ach_result)
+            except Exception as e:
+                print('ba', p.id, p.last_ach_result)
+                traceback.print_exc()

There were 54 exceptions, all NoResultFound.

Heroku deployment done.
I'm going to run the second part of branch.sql now, and #3249 too. Since gratipay/postgres.py#43 still isn't merged there will be a small downtime.

Final step: updated schema.sql in 99205511fc92c347bbb2b2c894b2838e53596a01.

!m @Changaco @rohitpaulk IRC


Check if target pools are shutting down for active delegator accounts

Task description
Upon startup of the app, we should check whether any of the active delegator accounts have target pools in shutdown cool down.
If any of the pools are in shutdown cool down, we should display a notification letting the user know about this. The alert will only have one button called "Remind me next time I open the wallet", which also means that the notification will be shown untill the target pool has closed, or if the user changes target pools.
The notification can be seen in Flow 8 in Figma.

It seems that this is not implemented in 3.0.0 (42)

3.0.0 (48)
The notification was there up until the pool was shutdown.


Fix test snap & lint config

Pull Request Test Coverage Report for Build 1853

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 89.901%

Totals

Change from base Build 1848:
0.0%

Covered Lines:
950

Relevant Lines:
1005

💛  - Coveralls


fix: tools management

What type of PR is this?

fix OSSF Score

What this PR does / why we need it:
Today the tools are managed by a dedicated go.mod file .
The problem is that scorecard consider tools as dependencies of the project and each vulnerability of those tools decrease the score of the project.
This store tool and its version in a txt file to be then go installed in tools/bin.
It also adds an actions/cache so it is cached to not download it to much time.
Which issue(s) this PR fixes:
Fixes most of the dependabot vulnerabilities

@phlax , what do you think ?

@mmorel-35 thanks for working on it, and eliminating the false positives to bump up the scorecard score
can you try out the approach suggested by @zirain to collapse it all under one file - tools.mk ?

Hi ! I’ve merged install of the tools in tools.mk.
I don’t kown if there is a more elegant way to do this. I’m interested in any way to make this more simple.
Dependabot is not able to handle go modules outside of a go.mod file . I don’t know how it would be possible to use a bot to update those dependencies.
@arkodg , @zirain , @phlax ,
Any suggestion ?

hey @mmorel-35 if dependabot cannot handle updates outside go.mod, imo we should stick with the orig go.mod approach, there's a big benefit of auto updating these tools that are used in the CI workflow
maybe we need to manually bump those tool dependencies for now

/retest

kindly ping @arkodg

ah yah, please give me a day or two to try it out manually, else we can merge this PR

looks like manually bumping the packages helped, this is no longer needed, thanks @mmorel-35 for trying this out


[BUG] Disguise Health

If I Disguise as Spy as some sort of class , the Health is not quite on the picture. I'm not sure if this is my fault, my resolution is 1920 x 1080 16:9  (Dont use Customize Health).

Edit: Screenshot from whole Screen just when ya need it or whatever

I'll take a look, I believe it's due to all of the TargetID changes I made recently

Will be fixed in the next commit

I may get rid of the team colored bar just because it makes the TargetID cross customization extra funky. I don't think there's really any way for me to fix the off-center issue when using the cross customization though, sadly:

Fixed in https://github.com/rbjaxter/budhud/commit/eefa9ce

Thats The Same Issue


1.0.0-M3: calling prototype on null object

I compile my project under 0.6.22, no error. Switch to 1.0.0-M3, error. Errors occur in the browse once the code vs compilation: Uncaught TypeError: Cannot read property 'prototype' of null
This is placeholder issue until I can figure out under what conditions this occurs.

As such, this issue is not actionable. It is not even developed enough to know whether it is an issue in Scala.js or in your own code (there are intended breaking changes in 1.x, see the release notes).
Therefore, I am closing this.


BinanceClient.GetCandleSticks missing Start/End Times

The API working fantastic, but there are a few optional calls that I would like to utilize from the factory GetKline API call. The factory API call for GetKline allows you to specify the start and end time of a request, which would be a great feature to be added into the code as an optional parameter.
Thanks!

Functionality added in new version! please update the nuget package to the last version (v1.3.0).

Awesome, thank you!


Unhandled Exception: Invalid argument(s) in CachedVideoPlayerPlusController.initialize

Hello,
Thank you for your hard work in developing the cached_video_player_plus package. I have been using it in my project and appreciate its features and functionality.
However, I encountered an issue with version 3.0.0 of the cached_video_player_plus package. When I try to initialize the CachedVideoPlayerPlusController, the following error occurs:
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Invalid argument(s): Illegal argument in isolate message: object is unsendable - Library:'dart:async' Class: _Future@4048458 (see restrictions listed at `SendPort.send()` documentation for more information)
 <- queue in Instance of 'GetStorage' (from package:get_storage/src/storage_impl.dart)
 <- Instance of 'CachedVideoPlayerPlusController' (from package:cached_video_player_plus/cached_video_player_plus.dart)
 <- field this in CachedVideoPlayerPlusController.initialize.<anonymous closure> (from package:cached_video_player_plus/cached_video_player_plus.dart)
 <- resultPort in Instance of '_RemoteRunner<FileInfo?>' (from dart:isolate)

#0      Isolate._spawnFunction (dart:isolate-patch/isolate_patch.dart:398:25)
#1      Isolate.spawn (dart:isolate-patch/isolate_patch.dart:378:7)
#2      Isolate.run (dart:isolate:285:15)
#3      CachedVideoPlayerPlusController.initialize (package:cached_video_player_plus/cached_video_player_plus.da<…>
Lost connection to device.

This issue occurs when I run the example package on both iOS and Android devices. I am using Flutter 3.22.0 and Dart 3.4.0.
I would greatly appreciate it if you could look into this matter and provide a solution.
Thank you.

@naipaka Thanks for brining this issue to my attention. I can reproduce this issue on from the example app. I don't know how this got slipped, but I'll fix this ASAP.

@naipaka I have retracted v3.0.0 and published v3.0.1 which would fix this issue.

@OutdatedGuy
Thank you for your prompt response! It has been confirmed that both the example package and the application using the package are working properly.


Get Same Device ID String

I got Same Device ID String in my different device, one is ios7.0.4, one is ios8.3, Why?

I got same issue with iOS version 7.x and above.
iOS 7 and above versions devices – are always returning a MAC address of 02:00:00:00:00:00

It no longer works on iOS7 and above

ok, got it


Precompile assets

Before:

stylesheet and javascript files were referenced from haml, but not precompiled into our appliance.
This causes asset metadata errors (500) and missing asset errors (404).
Newer versions of sprockets gem are more pedantic and raise exceptions for these errors.
This is needed for #5896 (and rails5 upgrade)

After:
Added any assets referenced by javascript_include_tag and stylesheet_link_tag to our precompiled assets list
/cc @dclarizio @skateman @himdel @Fryguy @matthewd
/cc @epwinchell FYI

#5799


Add related to topic "WhatsApp"

Please confirm this pull request meets the following requirements:

[x] I followed the contributing guidelines: https://github.com/github/explore/blob/main/CONTRIBUTING.md.
[x] I am not the sole author or employee of a company who created the topic or collection I am changing.

Which change are you proposing?

[x] Suggesting edits to an existing topic or collection
[ ] Curating a new topic or collection
[ ] Something that does not neatly fit into the binary options above

Editing an existing topic or collection
I'm suggesting these edits to an existing topic or collection:

[ ] Image (and my file is *.png, square, dimensions 288x288, size <= 75 kB)
[x] Content (and my changes are in index.md)

Other instant messaging apps

Curating a new topic or collection

[ ] I've formatted my changes as a new folder directory, named for the topic or collection as it appears in the URL on GitHub (e.g. https://github.com/topics/[NAME] or https://github.com/collections/[NAME])
[ ] My folder contains a *.png image (if applicable) and index.md
[ ] All required fields in my index.md conform to the Style Guide and API docs: https://github.com/github/explore/tree/main/docs

Please replace this line with an explanation of why you think this topic or collection should be curated.

Something that does not neatly fit into the binary options above

[ ] My suggested edits are not about an existing topic or collection, or at least not a single one
[ ] My suggested edits are not about curating a new topic or collection, or at least not a single one
[ ] My suggested edits conform to the Style Guide and API docs: https://github.com/github/explore/tree/main/docs

Please replace this line with an explanation of your proposed changes.

Please note: we will close your PR without comment if you do not check the boxes above and provide ALL requested information.


Wrong documentation example for labels and compose 3

This issue relates to https://docs.traefik.io/configuration/backends/docker/#labels-overriding-default-behaviour
There's a configuration example :
version: "3"
services:
  whoami:
    deploy:
      labels:
        traefik.docker.network: traefik

The format for labels is key=value, and not key:value. This works when I deploy a stack :
version: "3"
services:
  whoami:
    deploy:
      labels:
        traefik.docker.network=traefik

Every time someone does not respect the issue's template, a little bunny dies.

<details>

![southpark - estrella kill rabbit](https://user-images.githubusercontent.com/5674651/27143914-3cea7896-5130-11e7-81f8-02d8ac2da7a7.gif)
![southpark - estrella kill rabbit2](https://user-images.githubusercontent.com/5674651/27143924-49104c72-5130-11e7-82ae-ccedbd5dfa1c.gif)

</details>
<br>

Please edit your issue description to respect the [issue template](https://raw.githubusercontent.com/containous/traefik/master/.github/ISSUE_TEMPLATE.md) as much as possible.

Please, with all respect for the time and effort you put into making this product : have you read the issue description?
It's a documentation correction, and it's simple. There's a : character which needs to be replaced with an = character.
I've made a little modification to the issue, but I am not going to take the time to follow the template as 90% of the details in that template would be meaningless for this issue.

@sbrattla
version: "3"
services:
  whoami:
    deploy:
      labels:
        traefik.docker.network: traefik

This is a valid syntax please refer to docker documentation
I will close this issue because I think the question is answered

@mmatur all good then. I just had a complaint from Docker when I had multiple colons as in
traefik.frontend.rule:Host:www.example.com
But I won't argue with the documentation (y)

@sbrattla You should try with a space like that
traefik.frontend.rule: Host:www.example.com


Update GAS version and reformat reference cluster file.

This PR includes the following updates:

Upgrades the Genomic Service Address by updating the container version.

Refines the format of reference_cluster.tsv (rclusters) used by GAS CALL to require only id and address columns. This change involved updates to both the append_clusters and cluster_file modules.

Updates and modifies associated tests and test data to align with these changes.

Note: Five tests are currently failing due to an adjustment needed in the GAS program: ISSUE12; PR14
PR checklist

[x] This comment contains a description of changes (with reason).
[x] If you've fixed a bug or added code that should be tested, add tests!
[x] Make sure your code lints (nf-core lint).
[x] Ensure the test suite passes (nextflow run . -profile test,docker --outdir <OUTDIR>).
[x] Check for unexpected warnings in debug mode (nextflow run . -profile debug,test,docker --outdir <OUTDIR>).
[x] CHANGELOG.md is updated.

Once a new version of GAS is released, the container directive will need to be updated in the gas/call module. The tests should run as expected and pass CI testing unless there are also changes in the buildNewick function in GAS. In which case the expected_tree.nwk file in the test/data/clusters file will also need to be updated.


Doesn't serve static files with non english characters in file name.

I have a few mp3 files that i gotta serve, but they have non english characters in their names.
Eg: könyv-hangok.mp3
Can anyone help?

A common pratice is to rename files on the server by a hash to avoid this problem. Use a sanitize function when upload file or run a script to rename all files ;)
see you

A common pratice is to rename files on the server by a hash to avoid this problem. Use a sanitize function when upload file or run a script to rename all files ;)
see you

yeah, this is what i've went with, thanks! Im closing the issue.


[Feat] add lineOpacity prop to scatterplot layer

Feature
It would be nice to be able to adjust fill opacity and line opacity separately. In Geojson layer e.g. I can achieve this by passing _sublayerProps to override opacity of polygon stroke and line string layer. But for point layer, there is currrently no way to control them separately. Here this PR
Background
related kepler.gl issue: Separately adjust opacity of stroke and fill

Coverage decreased (-0.004%) to 80.56% when pulling dcb7bc6ad51e490fa602b9380f6291986fd77cc9 on scatterplot-line-opacity into d569e25c445a6b5cadb63514ebd31ac782279529 on master.

Many core layers have both getLineColor and getFillColor. It's hard to justify why only ScatterplotLayer gets two opacity props.

Agreed it's not fair for just point layer to have it, I would suggest all core layers that offer stroke and fill styling should have it. because:

👯 😄

Would you add it to all core layers then? :)
We also need to update the documentation.


npm package broken

I believe the 0.4.9 and 0.5.0 releases are broken because your package.json main key points to ./build/image-gallery which was removed when you bumped to 0.4.9

please use 0.5.0, 0.4.9 is broken.

I added .npmignore in v0.5.0 so the build files will be included.

I've also unpublished v0.4.9 as it is completely broken

Got it. Fwiw, if you had bumped to 0.4.10 instead of rolling to 0.5.0 it
would have allowed anyone who was allowing bumps on the point release to
automatically update.
On Fri, Nov 13, 2015 at 6:15 PM Xiao Lin<EMAIL_ADDRESS>wrote:

I've also unpublished v0.4.9 as it is completely broken
—
Reply to this email directly or view it on GitHub
https://github.com/linxtion/react-image-gallery/issues/21#issuecomment-156609873
.

That's very true. Totally did a panic count :)


Configed with IdentityServer, but can't load and redirect on IOS.

I have configed with IdentityServer on IOS,
static NSString *const kIssuer = @"https://demo.identityserver.io";
static NSString *const kRedirectURI = @"io.identityserver.demo:/oauthredirect";
And SFSafariViewcontroller had loaded html and to login,then there is no someing in html.
It can't  redirect .
How can i config it ?

Did you add the following to your app's Info.plist file?
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>io.identityserver.demo</string>
        </array>
    </dict>
</array>

Hi,
I just have conifged it  in AppAuth-iOS example.
Loading nothing ,and no redirect!


support request

Hi, I am looking for replicate this project to connect to the voltronic vmIII device. I have an error compiling the firmware... Can I ask for support?

Apologies for the delay.
VM III devices has RS232 port and may be connected in the same way, we need to figure out which version protocol they follow.

Thanks for the reply. I solved the problem a while ago and everything works fine.
adding the configuration adopted after countless experiments in case may be useful to others with the same problem.
device=/dev/ttyUSB0
run_interval=1000
amperage_factor=1.0
watt_factor=1.01
qpiri=99
qpiws=40
qmod=5
qpigs=110
"server": "<IP_ADDRESS>",
"port": "1883",
"topic": "OpenHab",
"devicename": "Inverter",
"manufacturer": "Voltronic",
"model": "VMIII",
"serial": "92932104102590",
"ver": "30",
"username": "pin32",
"password": "xxxxxx",

@amishv Hello! I have (looks like) the same class device. These devices are sold under the brand name "Sila" here.
There are many brands (Combi, Stark, Expert, Sila, UMA, Bineos, MPP Solar, etc), but they looks similar and have same parameters.
My question is: i have connected my solar inverter via usb port (my device have both RS and USB) directly to my HA server. I need to get some data in my Home Assistant. Is there an integration, that brings this connectivity?
Thanks.


Add a mode to prevent polling the master state.

If we poll the master's /state endpoint on large clusters, we can
degrade master performance. Since the /state endpoint is used to
generate per-agent resource metrics, and we can already get those
by running the exporter on each agent, add a new flag that can
disable the collection of these metrics.
This is equivalent to the fix in #69

@gkleiman @philipnrmn This PR adds a flag with the same functionality as in #69. I'd prefer to make this change independently of the other changes in the #69 branch.


Cannot find GLFW header or .lib

Describe the bug
Targets using GLFW seem to have an issue finding the headers or static libraries for GLFW. Other projects I tried didn't seem to have this issue. Intellisense/autocomplete seems to think the headers are available (they show up in the list of suggestions) but the compiler can't seem to find them. I don't know enough about portfiles to see anything wrong with glfw's.
Environment

OS: Windows 10 20H2
Compiler: MSVC 19.28.29336

To Reproduce
The most basic example project fails, just create vcpkg.json, CMakeLists.txt, and main.cpp:
vcpkg.json:
{
	"name": "glfw-example",
	"version-string": "",
	"dependencies": [
		"glfw3"
	]
}

CMakeLists.txt:
project(glfw_example)
add_executable(glfw_example main.cpp)
target_link_libraries(glfw_example glfw)

main.cpp:
#include <GLFW/glfw3.h>    // fatal error C1083: Cannot open include file: 'GLFW/glfw3.h': No such file or directory

int main(int argc, char** argv)
{
	return 0;
}

Expected behavior
The example project shown above should compile and link successfully.
Failure logs
>------ Build All started: Project: glfw_install_error, Configuration: x64-Debug (default) ------
  [1/2, 0.145s]Building CXX object CMakeFiles\glfw_example.dir\main.cpp.obj
  FAILED: CMakeFiles/glfw_example.dir/main.cpp.obj
  C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1428~1.293\bin\Hostx64\x64\cl.exe  /nologo /TP   /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 /showIncludes /FoCMakeFiles\glfw_example.dir\main.cpp.obj /FdCMakeFiles\glfw_example.dir\ /FS -c ..\..\..\main.cpp
C:\Users\matt\Downloads\glfw_install_error\main.cpp(1): fatal error C1083: Cannot open include file: 'GLFW/glfw3.h': No such file or directory
  ninja: build stopped: subcommand failed.

Build All failed.

After manually adding target_include_directories(glfw_example SYSTEM PRIVATE "C:\\Users\\matt\\Downloads\\glfw_install_error\\out\\build\\x64-Debug (default)\\vcpkg_installed\\x64-windows\\include"):
>------ Build All started: Project: glfw_install_error, Configuration: x64-Debug (default) ------
  [1/2, 0.177s]Building CXX object CMakeFiles\glfw_example.dir\main.obj
  [2/2, 0.238s]Linking CXX executable glfw_example.exe
  FAILED: glfw_example.exe
  cmd.exe /C "cd . && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_exe --intdir=CMakeFiles\glfw_example.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\mt.exe --manifests  -- C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1428~1.293\bin\Hostx64\x64\link.exe /nologo CMakeFiles\glfw_example.dir\main.obj  /out:glfw_example.exe /implib:glfw_example.lib /pdb:glfw_example.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console  glfw.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cmd.exe /C "cd /D "C:\Users\matt\Downloads\glfw_install_error\out\build\x64-Debug (default)" && C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -executionpolicy Bypass -file D:/vcpkg/scripts/buildsystems/msbuild/applocal.ps1 -targetBinary "C:/Users/matt/Downloads/glfw_install_error/out/build/x64-Debug (default)/glfw_example.exe" -installedDir "C:/Users/matt/Downloads/glfw_install_error/out/build/x64-Debug (default)/vcpkg_installed/x64-windows/debug/bin" -OutVariable out""
  LINK Pass 1: command "C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1428~1.293\bin\Hostx64\x64\link.exe /nologo CMakeFiles\glfw_example.dir\main.obj /out:glfw_example.exe /implib:glfw_example.lib /pdb:glfw_example.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console glfw.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\glfw_example.dir/intermediate.manifest CMakeFiles\glfw_example.dir/manifest.res" failed (exit code 1104) with the following output:
C:\Users\matt\Downloads\glfw_install_error\out\build\x64-Debug (default)\LINK : fatal error LNK1104: cannot open file 'glfw.lib'
  ninja: build stopped: subcommand failed.

Build All failed.

Additional context
It should be noted that while i see vcpkg_installed/x64-windows/include/GLFW/glfw3.h, the lib file is actually vcpkg_installed/x64-windows/lib/glfw3dll.lib (glfw3dll.lib when it is trying to link against glfw.lib)

Oops. Surprised it got that far without find_package.

Oops. Surprised it got that far without find_package.


[feature] Added over-accessible resources and over-permissioned principals

Note: I think maybe we might rename "over-permissioned" to "over-capable"
Description
This change adds two new risks queries:

over-accessible-resources
over-permissioned-principals

These similar commands process resource access summary reports and principal access summary reports respectively. Each uses three specialty flags:

A list of strings called services
An int max-admin
Another int max-rwd

These queries will filter and report resources or principals that match the service qualifier, and violate the specified admin or read-write-delete limit.
k9 query risks over-accessible-resources \
    --customer_id C10001 \
    --account<PHONE_NUMBER>53 \
    --analysis-date 2022-06-14 \
    --format json \
    --service S3 \
    --max-admin 1 \
        | jq '.[].resource_arn'

k9 query risks over-permissioned-principals \
    --customer_id C10001 \
    --account<PHONE_NUMBER>53 \
    --analysis-date 2022-06-14 \
    --format json \
    --service S3 \
    --max-admin 2 \
        | jq '.[].principal_arn'

How Has This Been Tested?

Manually tested. But the code is testable.
How are existing users impacted? What migration steps/scripts do we need?
Checklist:
I have:

[ ] updated the documentation and/or roadmap (if required)
[ ] read the CONTRIBUTION guide
[ ] signed-off my commits with git commit -s
[ ] added unit tests

We need to define what we want the read+write+delete query to actually measure. We should get on a call.

We need to define what we want the read+write+delete query to actually measure. We should get on a call.

The idea is to identify (critical) data resources that are overly accessible, usually as a result of an un/misconfigured resource policy and over-permissioned principals (via Customer managed policies like S3ReadOnlyAccess)
The questions I have asked in audit are:

Which S3 buckets are readable by more than ~10 principals?
Which S3 buckets are modifiable via write or delete by more than ~5 principals?

and "Which resources contain valuable data?"
Of course, the number 10 is arbitrary and represents a heuristic that people might vary for different data classifications: Restricted, Confidential, Internal, Public
So we might want to support separate flags: --max-read, --max-write, --max-delete so that analysts can analyze with their individual thresholds.

Yeah the biggest question is how do we sum / segment. Especially on the
principal query.
On Sun, Aug 7, 2022 at 9:08 AM Stephen Kuenzli @.***>
wrote:

We need to define what we want the read+write+delete query to actually
measure. We should get on a call.
The idea is to identify (critical) data resources that are overly
accessible, usually as a result of an un/misconfigured resource policy and
over-permissioned principals (via Customer managed policies like
S3ReadOnlyAccess)
The questions I have asked in audit are:

Which S3 buckets are readable by more than ~10 principals?
Which S3 buckets are modifiable via write or delete by more than ~5
principals?

and "Which resources contain valuable data?"
Of course, the number 10 is arbitrary and represents a heuristic that
people might vary for different data classifications: Restricted,
Confidential, Internal, Public
So we might want to support separate flags: --max-read, --max-write,
--max-delete so that analysts can analyze with their individual
thresholds.
—
Reply to this email directly, view it on GitHub
https://github.com/k9securityio/k9-cli/pull/12#issuecomment-1207416487,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAI4WA57LFUAK4X7ROLPPZLVX67L7ANCNFSM55UVZOEA
.
You are receiving this because you authored the thread.Message ID:
@.***>

First, the questions are asked individually:
How many principals can read from more than 10 buckets?
Which buckets are readable by more than 10 principals?
Output the ARNs / names.
Then analyst can pivot over to the principal access or resource access query for more details.  I suppose this command could also have a --show-details flag shortcuts that process and prints the relevant data.

Then we should break the flag up.
On Sun, Aug 7, 2022 at 9:27 AM Stephen Kuenzli @.***>
wrote:

First, the questions are asked individually:
How many principals can read from more than 10 buckets?
Which buckets are readable by more than 10 principals?
Output the ARNs / names.
Then analyst can pivot over to the principal access or resource access
query for more details. I suppose this command could also have a
--show-details flag shortcuts that process and prints the relevant data.
—
Reply to this email directly, view it on GitHub
https://github.com/k9securityio/k9-cli/pull/12#issuecomment-1207420718,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAI4WA4UAI5BSHSRNVHOVHDVX7BU5ANCNFSM55UVZOEA
.
You are receiving this because you authored the thread.Message ID:
@.***>

Yes, I think we should break the rwd flag up.

This most recent change broke them up. Let me know what you think and I'll refactor a bit for cleanliness.

./bin/k9-darwin64 query risks over-permissioned-principals --help
Show over-permissioned principal risks

Usage:
  k9-cli query risks over-permissioned-principals [flags]

Flags:
  -h, --help              help for over-permissioned-principals
      --max-admin int     The maximum number of resources to which a principal may have administrative access. (default 5)
      --max-delete int    The maximum number of resources to which a principal may have DELETE access. (default 5)
      --max-read int      The maximum number of resources to which a principal may have READ access. (default 5)
      --max-write int     The maximum number of resources to which a principal may have WRITE access. (default 5)
      --service strings   A list of service names to evaluate

Global Flags:
      --account string         AWS account ID for analysis (required)
      --analysis-date string   Use snapshot from the specified date in YYYY-MM-DD (required)
      --config string          config file (default is $HOME/.k9-cli.yaml)
      --customer_id string     K9 customer ID for analysis (required)
      --format string          Output format as one of: [ json | csv | tap | pdf ] (default "json")
      --report-home string     a directory where a K9 report database has been downloaded (default ".")
  -v, --verbose                enable verbose reporting on STDERR

./bin/k9-darwin64 query risks over-accessible-resources --help
Show over accessible resource risks

Usage:
  k9-cli query risks over-accessible-resources [flags]

Aliases:
  over-accessible-resources, accessible

Flags:
  -h, --help              help for over-accessible-resources
      --max-admin int     The maximum number of principals with ADMIN access to a resource. (default 5)
      --max-delete int    The maximum number of principals with DELETE to a resource. (default 5)
      --max-read int      The maximum number of principals with READ to a resource. (default 5)
      --max-write int     The maximum number of principals with WRITE to a resource. (default 5)
      --service strings   A list of service names to evaluate

Global Flags:
      --account string         AWS account ID for analysis (required)
      --analysis-date string   Use snapshot from the specified date in YYYY-MM-DD (required)
      --config string          config file (default is $HOME/.k9-cli.yaml)
      --customer_id string     K9 customer ID for analysis (required)
      --format string          Output format as one of: [ json | csv | tap | pdf ] (default "json")
      --report-home string     a directory where a K9 report database has been downloaded (default ".")
  -v, --verbose                enable verbose reporting on STDERR


Panic on firmware information

Relevant code: https://github.com/esp-rs/esp-idf-svc/blob/730fa3642d7042735de924c3d6ce71eafb8dc615/src/ota.rs#L33-L35
esp-idf-svc panics if the firmware version of esp_app_desc_t.version (and other related fields) is longer than 24 chars.
The upper limit (24 chars) is defined by embedded_svc.
esp-idf-svc takes the version provided by esp-idf and tries to convert it into heapless::String::<24> panicking if the version is any longer.
In our project the version used by esp-idf-svc is the output of git describe which is quite big (e.g. v0.3.0-146-gd33fb261-dirty) and leads to a uncontrollable panic.
I think, at least the unwrap should be replaced by an except to give the developer any idea of what went wrong or in the better case be handled (in what ever way, e.g. truncate, Result/Option)
esp-idf app version description: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/misc_system_api.html#app-version

to set the correct firmware name i would suggest, you are using the app_desc makro we provide. That way you get a version controlled information and build time information, all set via your usual Cargo.toml

@Vollbrecht thanks i will try that for now