Import nimble locks

This PR adds the ability to convert nimble lock files to atlas lock files. It's pretty nice!
It also does:

adds replay in addition to rep for clarity
prints status updates for deps after running replay to help users know what it did
when nimble.lock is passed to replay it will use it
package paths in messages are relative to workspace when using color mode

Btw "rep" stands for "replay", "reproduce" and "repeat".

Oh nice! I like it better. ;)


Paper

Thank for your open-source, do you publish a paper related to the open-source program? Thanks

No, I haven't published a paper yet. Thank you for your feedback anyway


adds a test setup.py file

This is a setup.py file that should make the docstring work. It also can be further updated to automatically install the project dependencies. We can remove this file if it does not work

Thanks, looks good. I merged it in. Let's see if it works.
On Wed, Jul 18, 2018 at 4:31 PM ADLeonelli<EMAIL_ADDRESS>wrote:

This is a setup.py file that should make the docstring work. It also can
be further updated to automatically install the project dependencies. We
can remove this file if it does not work
You can view, comment on, or merge this pull request online at:
https://github.com/rinman24/chamber/pull/58
Commit Summary

adds a test setup.py file

File Changes

A setup.py
https://github.com/rinman24/chamber/pull/58/files#diff-0 (19)

Patch Links:

https://github.com/rinman24/chamber/pull/58.patch
https://github.com/rinman24/chamber/pull/58.diff

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/rinman24/chamber/pull/58, or mute the thread
https://github.com/notifications/unsubscribe-auth/AWTqkpJA7OA4L-t2uKnCDRqr3saEDrGwks5uH8VEgaJpZM4VVhb4
.

--
Rich Inman
Department of Mechanical and Aerospace Engineering
University of California, San Diego

Merged in the .rst changes as well.
On Wed, Jul 18, 2018 at 4:35 PM Rich Inman<EMAIL_ADDRESS>wrote:

Thanks, looks good. I merged it in. Let's see if it works.
On Wed, Jul 18, 2018 at 4:31 PM ADLeonelli<EMAIL_ADDRESS>wrote:

This is a setup.py file that should make the docstring work. It also can
be further updated to automatically install the project dependencies. We
can remove this file if it does not work
You can view, comment on, or merge this pull request online at:
https://github.com/rinman24/chamber/pull/58
Commit Summary

adds a test setup.py file

File Changes

A setup.py
https://github.com/rinman24/chamber/pull/58/files#diff-0 (19)

Patch Links:

https://github.com/rinman24/chamber/pull/58.patch
https://github.com/rinman24/chamber/pull/58.diff

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/rinman24/chamber/pull/58, or mute the thread
https://github.com/notifications/unsubscribe-auth/AWTqkpJA7OA4L-t2uKnCDRqr3saEDrGwks5uH8VEgaJpZM4VVhb4
.

--
Rich Inman
Department of Mechanical and Aerospace Engineering
University of California, San Diego

--
Rich Inman
Department of Mechanical and Aerospace Engineering
University of California, San Diego


Update Types.hs copyright notice

All of the PRs you just made should have been consolidated.

newbie here, was helping a collaborator @watashi; can you please guide me with consolidating multiple PRs ?

It looks like you made all of the code changes in browser, but I would recommend making a proper fork.
Update *.hs is also not a descriptive commit message.

I get it. I will keep in mind. Will work out next time.


Create Pages from GraphQL queries

This would Hugo enable to adapt to an API based Headless CMS.
Context:
"Pages from “other data sources”
Currently, in addition to Hugo’s list pages, every URL must be backed by a content file (Markdown, HTML etc.). This covers most use cases, but we need a flexible way to generate pages from other data sources. Think product catalogues and similar."
See http://gohugo.io/news/lets-celebrate-hugos-5th-birthday/

I'm not necessarily opposed to a feature like this, but to me it seems like it would be very difficult to manage the trade-off between power and simplicity. Allowing users to specify a GraphQL query via configuration might be simple enough, but then where do the fetched pages end up in the directory structure? How often does the fetching happen? How would authentication for GraphCMS/Contentful/whatever be handled?
Right now the "Hugo Way" is to make gathering inputs a process that happens outside of Hugo, with the exception of things like readFile and readJSON, both of which are much more specific and limited in scope than what you're calling for.
I'm not saying that a GraphQL implementation is impossible per se. I'm just skeptical that there's enough similarity across GraphQL content backends to make a feature like this generally useful.

In a different mood, what would be super cool would be some kind of API standard for GraphQL content gathering, a standard to which existing GraphQL content providers could be pressured to conform. This would provide a solid "contractual" basis for tools like Hugo, Gatsby, Jekyll, Middleman, and the like to provide their own GraphQL implementations. The standard could cover auth*, directory organization, file metadata, etc.

Gatsby has Source Plugins https://www.gatsbyjs.org/docs/create-source-plugin/ that help integrate with a Headless CMS. See https://hackernoon.com/building-a-static-blog-using-gatsby-and-strapi-8b5acfc82ad8

Hopefully this would fall under https://github.com/gohugoio/hugo/issues/5074

Duplicates #5074 (kind of)


Willl be Service Locator later in package?

Hi,
I have some module that have group of similar services and I want to manipulate with these services by ServiceLocator.
Just for information: Will you have ServiceLocator later or I can make it myself for my needs?

We recommend use DI instead of service locator. See Use DI instead of service locator.
Also we planned make module container for configuration of modules.

@vjik this is different purpose.
I have some folder with 10 services those have same interface.
So I want navigate only by this list of services through service locator.
Does DI allow to do this?  Because I do not need any another services. May be by some tag like it do Symfony?
I want pick each service from service locator to apply internal logic.

I have some folder with 10 services those have same interface.
So I want navigate only by this list of services through service locator.

You can configure in DI each service separately:
[
	Service1::class => [ ... ],
	Service2::class => [ ... ],
	Service3::class => [ ... ],
	...
]

And user concrete service in your classes:
final class MyClass {
	public __construct(Service1 $service) {}
}

Does DI allow to do this? Because I do not need any another services. May be by some tag like it do Symfony?

DI support tags (see https://github.com/yiisoft/di#container-tags)

I understand how to use DI =) But it lightly different:
My directory with n-strategies:
startegies\Strategy1.php
startegies\StrategyN.php

Then my general service for example PatternRecognizer.php with next code:
class PatternRecognizer
{
  public function __copnstruct(StrategyLocator $sl)....

  public function recognize()
 {
   foreach($this->sl as $strategy){
     $strategy->applyTo(string $content);
  }
 }

}

Or another console command class: StrategyCheckCommand that can accept input argument by Strategy alias s-1 or s-n and then find by locator the looking strategy for checking.

So I want navigate only by this list of services through service locator.
Does DI allow to do this? Because I do not need any another services. May be by some tag like it do Symfony?

Try the following way:
class StrategyResolver
{
  public function __construct($strategy1, $strategy2, ...)
  {
    $this->strategies = [
      's1' => $strategy1,
      's2' => $strategy2,
    ];
  }

  public function getStrategy(string $alias)
  {
    return $this->strategies[$alias];
  }
}

But I suggest you to encapsulate your logic into "strategies":
class StrategyResolver
{
  public function __construct($strategy1, $strategy2, ...)
  {
    $this->strategies = [
      $strategy1,
      $strategy2,
    ];
  }

  public function do($context)
  {
    foreach($strategies as $strategy) {
      if ($strategy->satisfied($context)) {
        return $strategy->do($context)
      }
    }

    throw new RuntimeException('No one strategy was satisfied to context');
  }
}

If you don't want to inject all services to work with only one you can make services lazy.
I hope when we add "autotagged" services by interface like the Symfony does, you can make that resolver lighter:
The resolver will be look like this:
class StrategyResolver
{
  public function __construct(StrategyInterface ...$strategies)
  {
    $this->strategies = $strategies
  }

  // ...
}

And the StrategyResolver will be configured like "give me all services with tag StrategyInterface and pass them into constructor".

Also you can add a tag to each service explicitly. Read the doc how to do it now.

In the case, when I will detect matched strategy I should break resolution of strategies and return result, so in fact it can be enough to instantiate only few strategies.
But StrategyResolver will instantiate all the strategies in constructor that will look very huge.
Over all there 10 strategies for the moment and it is not a limit.
So, on my opinion, to use here DI can solve the goal, but it will look not optimized. Thus I made very similar class with ServiceLocator from Yii2 for that case.
But do you find Service Locator pattern in Yii3 not useful in pure view?

But do you find Service Locator pattern in Yii3 not useful in pure view?

Yes. For majority of cases it's not a good idea. Leads to tight coupling so we'll avoid using/mentioning it.
Your case is a bit special so it may make sense since you know what you want to do and why.

I think it's a quite common use case. E.g. implementing command bus without service locator leads to inject whole container that leads to much more coupling

Ability to disable autowiring in container probably will solve the issue

If we touched autowiring, then: Disable autowiring of everything also can help to make some services private in scope of module. It is useful when vendors want to register only certain services or facades of their module and hide for internal usage some exclusive services.

@BoShurik isn't that usually a factory?

@andrew-svirin can't it be solved with composite containers?

@samdark It can be solved with factory but if handler is stateless (it's usually is) we can get benefits when using RR and swoole

I am not familiar with CompositeContainer. Do you have any reference with an example =) ?

@andrew-svirin https://github.com/yiisoft/di#composite-containers

@samdark thanks ) I will try to use this sub container, but I am not sure that it can navigate through each registered service in it.
Anyway if follow the rule "Principle_of_least_astonishment" then here much more fitting Service Locator =)

@samdark
Proposition only.
I made some scratch of service locator - https://github.com/andrew-svirin/yii3-service-locator
ServiceLocator is closed from instantiated by DI by protecting constructor. And added factory instead.
This tool can popularize typical approach for people do not invent a wheel.

@andrew-svirin yes, it could be implemented like that. Still, I don't think it should be part of the framework.


lint: Upgrade sgrep 0.4.9b5 to semgrep 0.5.0

I didn't see this before merging #14834; I think the deletion code is useful (and requires a provision-version major update), but we want to be on the version from there.

Repushed to upgrade 0.5.0-dev.2 to 0.5.0-dev.4.

Merged after resolving the PROVISION_VERSION merge conflict, thanks @andersk!


Debugger fails to launch if project contains 'dotnet' folder

Environment data
dotnet --info output:
.NET Command Line Tools (1.0.1)
Product Information:
Version:            1.0.1
Commit SHA-1 hash:  005db40cd1
Runtime Environment:
OS Name:     Mac OS X
OS Version:  10.12
OS Platform: Darwin
RID:         osx.10.12-x64
Base Path:   /usr/local/share/dotnet/sdk/1.0.1
VS Code version: 1.10.2
C# Extension version: 1.8.0
Steps to reproduce

Create new console project (dotnet new console)
Load into VS, add Launch.json etc.
Launch debugger (F5) ... succeeds
Add a folder named 'dotnet' into the project root
Launch debugger

Expected  behavior
Debugger launches
Actual behavior
Debugger shows an error: "The filename, directory name, or volume label syntax is incorrect."

I am in this code now anyway, I will see if I can fix it real quick.

This will be fixed in 1.9


How to use Context::include_bytes for Images ?

I have an application where the GUI updates new plots on to the screen when a button is pressed. The plot gets saves a .jpeg internally and displays it on the app. I have the following code
ui.add(egui::Image::new("D:/XYZ/hydrostatic/Pics/gap_load_stiff_equal.jpeg")
                                    .max_height(340.0)
                                    .max_width(560.0)
                                    .maintain_aspect_ratio(true)
                                    .rounding(10.0));

In cargo.toml :
egui_extras   = { version = "0.28.1", features = ["all_loaders"] }

When I run the app,  I get this message

I also tried with :
ui.add(egui::Image::from_uri("D:/XYZ/hydrostatic/Pics/gap_load_stiff_equal.jpeg"))

but still the same message.
How to include Context::include_byte or add more byte loaders ?

You need to use egui_extras::install_image_loaders

I have already put this function in my main code. I have a code below that shows the plot image when I press the button
ui.add(egui::Image::new(egui::include_image!("D:/XYZ/hydrostatic/Pics/gap_load_stiff_equal.jpeg"))
                                .max_height(330.0)
                                .max_width(560.0)
                                .maintain_aspect_ratio(true)
                                .rounding(10.0));

The problem here is that :

First time I press the button with some inputs, it shows the plotted image.
But when I press the button with different inputs
-> it saves the new plotted image internally but does not update on the app (the older plot is shown).

The updated image has the same name i.e. overwriting


C# Dev Kit: Format document sometimes adds two blank lines

In the following scenario, when the fix formatting will add a second empty line between line 7 and line 9, making the spacing 2 instead of 1.

Close this as not repro now using the code above.


Ensure auditing code looks for NotPrincipal and other checks for open resources

I use policyuniverse to ensure resources are not open.  Ensure that checks for NotPrincipal... possibly throw some automated reasoning fun in there like Zelkova.

policyuniverse just says anything with a NotPrincical is publicly accessible, so this is sufficient for my needs.  https://github.com/Netflix-Skunkworks/policyuniverse/blob/8459ba2b27f9ef82cb7a54457d308642575f735e/policyuniverse/statement.py#L230


Manual

We need a proper manual, alike the one we have for the other SDKs: https://docs.restate.dev/
The idea is to have it in the rustdocs directly, so folks can explore it together with the API doc.

FYI @gvdongen recording here what we discussed offline

+1

An advanced example would be incredibly helpful, as navigating Python/TypeScript tutorials and adapting them to the Rust SDK can be quite challenging.

@pstemporowski I'll make work of this today

@pstemporowski Here is a first example of multiple services: https://github.com/restatedev/examples/tree/main/tutorials/tour-of-restate-rust
I will rework this now to a Rust SDK tutorial but it should be enough to get you started with the main features.

Oh that's really nice! Thanks

@pstemporowski We added Rust SDK docs as well now:  https://docs.rs/restate-sdk/latest/restate_sdk/


Analytics

I have a analytics statement from Heap. When I tried to past this into the  in _document.js or within any pages, it gets spit out as text on the site.
It gives me a module syntax error. But this is valid Javascript within the

Hi @khrome83 you need to wrap your analytics code inside the dangerouslySetInnerHTML property, otherwise the code will be escaped. The following code for a sample page works for me:
import Head from 'next/head'

export default () =>


[Breaking change]: app.config cannot have a <section name="system.diagnostics" entry

Description
For applications that have an app.config file brought over from .NET Framework applications, the <configuration><configSection> element may contain a <section name="system.diagnostics" entry which is no longer allowed. If present, the entry needs to be removed.
Having the <section name="system.diagnostics" entry causes the following exception:
ConfigurationErrorsException: Section or group name 'system.diagnostics' is already defined. Updates to this may only occur at the configuration level where it is defined.
For example, this app.config file:
<configuration>
 <configSections>
   <section name="system.diagnostics"
            type="System.Diagnostics.SystemDiagnosticsSection,
            System, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
 </configSections>

contains the unnecessary entry.
Area: System.Configuration (app.config files)
Version
.NET 7 RC 1
Previous behavior
Specifying <section name="system.diagnostics" was allowed but was ignored since System.Diagnostics did not yet support the feature that reads from the config file.
.NET Framework, however, does support that feature and requires the section to enable that feature. Thus, this issue only occurs for a config file that was created for a .NET Framework application and is now used for .NET 7+ applications.
New behavior
System.Diagnostics now supports reading from the config file and has an implicit "system.diagnostics" section, so adding that section manually to the app.config causes a duplicate section which throws a ConfigurationErrorsException.
Type of breaking change

[X] Binary incompatible: Existing binaries may encounter a breaking change in behavior, such as failure to load/execute or different run-time behavior.
[ ] Source incompatible: Source code may encounter a breaking change in behavior when targeting the new runtime/component/SDK, such as compile errors or different run-time behavior.

Reason for change
The implementation to support the feature where System.Diagnostics reads from the app.config required adding the implicit section. See https://github.com/dotnet/runtime/issues/23937 for details on the feature request.
Recommended action
The unnecessary  <section name="system.diagnostics" entry should be removed.
Feature area
Other (please put exact area in description textbox)
Affected APIs
No response

Is TraceConfiguration.Register() required to be added to the user's code?

Is TraceConfiguration.Register() required to be added to the user's code?

No, the exception occurs the first time the configuration system is used. So, for example, just this will cause the exception:
int value = Int32.Parse(ConfigurationManager.AppSettings["some setting"]);

Note that I need to update the description here to remove the .NET Framework references since that was not correct -- .NET Framework had a machine.config file with the diagnostics section and did not force the entry in the app.config.

(description updated; ready for review)


fix: symeig depreciated, switched to torch.linalg.eigh.

symeig no longer works with torch>=2.0.0. torch.linalg.eigh is its replacement.

Hi, thanks for pointing this out. The package uses symeig in a couple of places because it runs on GPU, in contrast to torch.linalg.eigh. Since this package is an add-on to BackPACK which now officially supports torch>=2, I think it's a good idea to remove the deprecated symeig calls from this library as well. Could you pull-request into the torch-2 branch and use the same import style (from torch.linalg import eigh)?

Hi Felix,
I updated the remaining cases where torch's symeig was used and switched the branch.
BTW, to me it looks like eigh actually runs on the GPU and is faster on large matrices compared to letting it run on the CPU. It just seems to sync with the CPU at some point, making it slow when using it on many small matrices. Not sure which use case is more important for this package.
Cheers,
Florian

BTW, to me it looks like eigh actually runs on the GPU and is faster on large matrices compared to letting it run on the CPU. It just seems to sync with the CPU at some point, making it slow when using it on many small matrices. Not sure which use case is more important for this package.

Oh, thanks for clarifying this! Seems like I skimmed its documentation too quickly.
I'll merge this soon and publish a new release that works out of the box with torch>=2. Thanks for your contribution!


fix: strip file extensions for exports

When exports happen to include the file extension ( resolved from dirs / explicitly written ), generation is completed without stripping the extension.
This PR reapplies a change made in nuxt/framework#3540

Thanks for PR! Do you mind to also add a unit test to cover this change?


fix: update to eye v10.16.22

fix: update to eye v10.16.22

:tada: This PR is included in version 16.15.23 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release
v16.15.23

Your semantic-release bot :package::rocket:


Fix/improve get_layer method in topology.py

Changes/fixes the following:

Checks using if index is not None instead of if index, since the latter evaluates to False if index 0 is requested.

Returns layer for index requested, previously it still failed on the 'name' assertion even if index was passed in, as a return by index was missing

Uses try/except IndexError to check if layer with requested index can be returned, it's slighly less error prone (and more flexible, since it allows for negative index values) than checking for lengths (e.g. the previous check using if len(self.layers) <= index: doesn't catch the case where len(self.layers)==0 and index==-1)

Also removed some unnecessary conditional code.
(note: previously made this pull request with the wrong account, so deleted and recreated)

Failing test looks unrelated.


Support incoming encrypted mails

The main problem lies in verifying the signature of incoming mails: if we do not already have the public key of the sender, the openpgp package does not (cannot) check the signature and actually does not even save the MessageDetails.Signature attribute. So the logic ReadMessage -> save Signature -> [some time] -> verify Signature against now known public key is not easily possible without again calling ReadMessage.


Positioning content before first tab and at end of tabs (e.g window handling buttons)

This is a great project and great replacement for electron-tabs, but how does one put content before the first tab (e.g a static logo or text) or some buttons on the far right of the tab bar without disturbing the layout/dragging process ?
does anybody know ?

Hey @matthiasg this is a great question. Thanks for asking it here as I’m sure others will appreciate it.
There are a couple of ways to do this. For now I’ll suggest one that I would likely use if I were consuming @adamschwartz/chrome-tabs from another project and wanted to avoid collisions with any future changes to e.g. the DOM structure, etc.
First, note that the outer .chrome-tabs element has a left and right padding on it, and that its child .chrome-tabs-content has position: relative. This is key. This was a very intentional design choice because it means that the JavaScript handling the layout/dragging you referred doesn’t care (and doesn’t need to care) about the the left and right padding you set on .chrome-tabs. To the layout engine of the JS, it’s only the inner .chrome-tabs-content that matters.

What this means is that you can set any left and right padding on the outer element that you wish and everything will still behave correctly.
So one approach would be to wrap chrome-tabs and your nodes inside a positioned element, and then position your nodes absolutely, using z-index if necessary to stack them on top of chrome-tabs while keeping the correct content order.
Something like this:

  <button class="my-button">Button</button>

I hope this helps! Best of luck to you.

@adamschwartz great answer. And perfectly timed, as I would have needed to look into this tomorrow anyway :)


Update Spring to release 5.2.1

GitHub issue resolved: #1640
Briefly describe the changes proposed in this PR:

Upgrade to Spring Framework 5.2.1

Merged in another PR


Make DSTT a link to nds-cards.com.

The nds-cards.com site sells the DSTT and specifically mentions ntrboot compatibility. Why not link to it?
I don't know how to test this! :/

Solves issue #1376.

Changes should only be made to the en_US files. The others will be changed by the translation system.


failed to set environment variable "LANGUAGE" to "zh_CN:en": cannot set env vars on this platform

VSCode SSH Connects to Ubuntu remotely

Even Better TOML Version v0.18.2

Seems like the LSP crashes when setting any env var. I'm on VSCode SSH also

As the error suggests, this was caused by trying to set env vars inside WASM, I've just published a fix.


Automatically close empty "Launching Visual Studio Code" page on Codespace opening

Description
This is a useless page that should not exist, however it's unavoidable:

This is the source code:
// etc

            <editor-forwarder data-codespace-url="vscode://github.codespaces/connect?name=w7q49whjpx&windowId=_blank">

Launching Visual Studio Code

                        You should have received a prompt to open Visual Studio Code. If not, ensure it is
                        installed
                        .

            </editor-forwarder>

The custom element is controlled by:
import {controller} from '@github/catalyst'

@controller
class EditorForwarderElement extends HTMLElement {
  async connectedCallback() {
    this.closeDetailsPopover()
    const codespaceUrl = this.getAttribute('data-codespace-url')
    if (codespaceUrl) window.location.href = encodeURI(codespaceUrl)
  }

  closeDetailsPopover() {
    // Now that we've finished polling we want to close the  popover where we were showing the
    // loading animation to maintain symmetry with the other creation flows.
    const details = document.querySelector<HTMLDetailsElement>('.js-codespaces-details-container')!
    if (details) {
      details.open = false
    }
  }
}

In short, the page loads, downloads a lot of javascript, then does a page redirect.
I think the feature could be a basic:
async function init () {
	await oneEvent(window, 'load');
	await delay(1000);
	history.back();
}

features.add({
	include: [
		() => location.pathname.startsWith('codespaces') && new URLSearchParams(location.search).has('editor')
	],
	init,
})

Ideally:

explicitly do the redirect first to make sure it's as fast as possible and the editor is actually launched

Example URLs
Setup

Open https://github.com/settings/codespaces
Select anything other than "VS Code for web"

Launch

Open https://github.com/refined-github/refined-github
Click on green "Code" button
Select Codespaces
Create and launch one
End up on a URL like https://github.com/codespaces/qw7q49whjpx?editor=vscode

Maybe, even better:
delegate(`[href^="${location.origin}/codespaces/"]', 'click', filterAlteredClicks(({delegateTarget}) => {
	const popup = window.open(delegateTarget.href);
	await delay(1000);
	popup.close();
}), {once: true}); // So the user can retry if it fails


Introduce ConverterRegistryFactory

Hello,
we've faced with performance issue when retrieving many objects. It appears that about 25% of execution time for our query wasted in AbstractTypeAdapter#supports method. And it looks like there are no reasons to call it from ConverterRegistry every time we want to get OutputConverter for the same field of many object.
This pull request adds ability for customizing ConverterRegistry. For example it allows us to add caching in ConverterRegistry. I've tried add Guava cache to registry and it gave 10 times less execution times for simple benchmark. Benchmark results are here: https://github.com/spitty/spqr-converter-repository-test.
Another option to fix performance issue is to add cache in existing ConverterRegistry. But there are several questions to solve about its size, eviction policies and configuration options. Introducing ConverterRegistryFactory looks simpler.

@kaqqao Thank you for quick response.
I add "no converters" case in benchmark. It gives the best numbers:
Benchmark                                         (mode)  (objCount)  Mode  Cnt    Score   Error  Units
SpqrConverterRegistryBenchmark.testMethod       baseline         100  avgt    5    2.947 ± 0.195  ms/op
SpqrConverterRegistryBenchmark.testMethod       baseline        1000  avgt    5   27.017 ± 2.518  ms/op
SpqrConverterRegistryBenchmark.testMethod       baseline       10000  avgt    5  275.344 ± 5.253  ms/op
SpqrConverterRegistryBenchmark.testMethod          cache         100  avgt    5    0.374 ± 0.031  ms/op
SpqrConverterRegistryBenchmark.testMethod          cache        1000  avgt    5    3.265 ± 0.535  ms/op
SpqrConverterRegistryBenchmark.testMethod          cache       10000  avgt    5   36.878 ± 8.855  ms/op
SpqrConverterRegistryBenchmark.testMethod  no_converters         100  avgt    5    0.297 ± 0.032  ms/op
SpqrConverterRegistryBenchmark.testMethod  no_converters        1000  avgt    5    2.993 ± 0.369  ms/op
SpqrConverterRegistryBenchmark.testMethod  no_converters       10000  avgt    5   27.468 ± 1.800  ms/op

I'll try to adopt this advise to our real service and give feedback.

Reopen PR closed by mistake.

I've just released v0.9.9 which avoids the expensive calls at runtime. Any chance you check how this performs for you?

@kaqqao thank you for information. With v0.9.9 I've got these numbers from benchmark https://github.com/spitty/spqr-converter-repository-test:
Benchmark                                         (mode)  (objCount)  Mode  Cnt   Score   Error  Units
SpqrConverterRegistryBenchmark.testMethod       baseline         100  avgt    5   0.948 ± 0.087  ms/op
SpqrConverterRegistryBenchmark.testMethod       baseline        1000  avgt    5   8.727 ± 0.795  ms/op
SpqrConverterRegistryBenchmark.testMethod       baseline       10000  avgt    5  83.951 ± 2.894  ms/op
SpqrConverterRegistryBenchmark.testMethod  no_converters         100  avgt    5   0.550 ± 0.038  ms/op
SpqrConverterRegistryBenchmark.testMethod  no_converters        1000  avgt    5   5.232 ± 0.947  ms/op
SpqrConverterRegistryBenchmark.testMethod  no_converters       10000  avgt    5  49.916 ± 3.452  ms/op

Now default configuration is only 2 times slower than a configuration without converters. This is great!
One thing to note: "no_converters" configuration is slightly faster with v0.9.8 for mentioned synthetic benchmark:
Benchmark                                         (mode)  (objCount)  Mode  Cnt    Score    Error  Units
SpqrConverterRegistryBenchmark.testMethod       baseline         100  avgt    5    2.924 ±  0.276  ms/op
SpqrConverterRegistryBenchmark.testMethod       baseline        1000  avgt    5   28.053 ±  2.241  ms/op
SpqrConverterRegistryBenchmark.testMethod       baseline       10000  avgt    5  270.673 ± 10.745  ms/op
SpqrConverterRegistryBenchmark.testMethod  no_converters         100  avgt    5    0.290 ±  0.013  ms/op
SpqrConverterRegistryBenchmark.testMethod  no_converters        1000  avgt    5    2.285 ±  0.047  ms/op
SpqrConverterRegistryBenchmark.testMethod  no_converters       10000  avgt    5   23.316 ±  1.241  ms/op

This pull request is not relevant for current spqr. Closing it.
Thank you for your help!


🪲 Bug Report - vm18- missing VM name and id

Describe the bug
The query brings back results, but does not show the machine name or id.
To Reproduce
Steps to reproduce the behavior:

execute the RG query

Expected behaviour
The results contain the VM name and id
Screenshots 📷

Additional context
I think the VMs affected belong to AKS, because I don't get any VMs with
Resources
| where type =~ "Microsoft.Compute/virtualMachines"

vm-18 as in the screenshot. I don't have the v2 ID. The issue could be related to Databricks or AKS. Both were in the subscription the script was executed on.

Thank you @ReneHezser, do you have a screenshot that include full AssignmentName, DefinitionName, DefinitionID? The above screenshot includes just part of those. I want to know that information to investigate this issue.

@ReneHezser - I tried to reproduce with VMs, VMSS, AKS (=VMSS). Unfortunately, I couldn't reproduce it so far. So, could you try the following ARG query in the environment and share the result?
Also, if the issue reproduced, please check the policy compliance to find which resources are on this issue.
ARG query:
PolicyResources
| where type =~ "Microsoft.PolicyInsights/policyStates" and properties.resourceType =~ "Microsoft.Compute/virtualMachines" and properties.complianceState =~ "NonCompliant"
| project
    policyDefinitionId = tolower(properties.policyDefinitionId),
    policyAssignmentId = tolower(properties.policyAssignmentId),
    targetResourceId = tolower(properties.resourceId)
// Join the policy definition details
| join kind = leftouter (
    PolicyResources
    | where type =~ "Microsoft.Authorization/policyDefinitions"
    | project policyDefinitionId = tolower(id), policyDefinitionDisplayName = properties.displayName
    )
    on policyDefinitionId
| project policyDefinitionId, policyDefinitionDisplayName, policyAssignmentId, targetResourceId
// Join the policy assignment details
| join kind = leftouter (
    PolicyResources
    | where type =~ "Microsoft.Authorization/policyAssignments"
    | project policyAssignmentId = tolower(id), policyAssignmentDisplayName = properties.displayName
    )
    on policyAssignmentId
| project policyDefinitionId, policyDefinitionDisplayName, policyAssignmentId, policyAssignmentDisplayName, targetResourceId
// Join the target resource details
| join kind = leftouter (
    Resources
    | where type =~ "Microsoft.Compute/virtualMachines"
    | project targetResourceId = tolower(id), targetResourceIdPreservedCase = id, targetResourceName = name, targetResourceTags = tags
    )
    on targetResourceId
| project
    recommendationId = "c42343ae-2712-2843-a285-3437eb0b28a1",
    name = targetResourceName,
    id = targetResourceIdPreservedCase,
    tags = targetResourceTags,
    param1 = strcat("DefinitionName: ", policyDefinitionDisplayName),
    param2 = strcat("DefinitionID: ", policyDefinitionId),
    param3 = strcat("AssignmentName: ", policyAssignmentDisplayName),
    param4 = strcat("AssignmentID: ", policyAssignmentId)

How to check the policy compliance in Azure portal:

Run the above ARG query.

Check the AssignmentName in the param3 column in the query result if the issue reproduced.

Search the assignment name that checked in step 2 in Policy in Azure portal, then click the assignment name in the search result.

Which resources and resource types showing the compliance state?


Contour disapears when cursor is hovered on any of minimize, maximize or close button in titlebar

Description
https://user-images.githubusercontent.com/29328319/144562170-d3f77e9f-9ea7-4d1a-bb7a-2f8924ff9e4b.mp4
Whenever I hover cursor on title-bar button (minimize, maximize or close) contour disappears, and only title-bar is visible, but typing or clicking again in terminal area makes it visible again

Environment

Contour Version or Git commit hash: 0.3.0-unreleased-master-ba12d1a
Operating System (name / distribution / version): Fedora 35 with Gnome
Contour configuration:

# Default Contour Configuration File.

# Word delimiters when selecting word-wise.
word_delimiters: " /\\()\"'-.,:;<>~!@#$%^&*+=[]{}~?|│"

# Default PTY read buffer size.
#
# This is an advance option. Use with care!
# Default: 16384
read_buffer_size: 16384

default_profile: main

# Flag to determine whether to spawn new process or not when creating new terminal
# Default: false
spawn_new_process: false

# Whether or not to reflow the lines on terminal resize events.
# Default: true
reflow_on_resize: true

# Section of experimental features.
# All experimental features are disabled by default and must be explicitely enabled here.
# NOTE: Contour currently has no experimental features behind this configuration wall.
# experimental:
#     # Enables experimental support for feature X/Y/Z
#     feature_xyz: true

# This keyboard modifier can be used to bypass the terminal's mouse protocol,
# which can be used to select screen content even if the an application
# mouse protocol has been activated (Default: Shift).
#
# The same modifier values apply as with input modifiers (see below).
bypass_mouse_protocol_modifier: Shift

# Selects an action to perform when a text selection has been made.
#
# Possible values are:
#
# - None                        Does nothing
# - CopyToClipboard             Copies the selection to the primary clipboard.
# - CopyToSelectionClipboard    Copies the selection to the selection clipboard.
#                               This is not supported on all platforms.
#
# Default: CopyToSelectionClipboard
on_mouse_select: SelectClipboard

# Inline image related default configuration and limits
# -----------------------------------------------------
images:
    # Enable or disable sixel scrolling (SM/RM ?80 default)
    sixel_scrolling: true
    # Configures the maximum number of color registers available when rendering Sixel graphics.
    sixel_register_count: 4096
    # If enabled, the ANSI text cursor is placed at the position of the sixel graphics cursor after
    # image rendering, otherwise (if disabled) the cursor is placed underneath the image.
    sixel_cursor_conformance: true
    # maximum width in pixels of an image to be accepted (0 defaults to system screen pixel width)
    max_width: 0
    # maximum height in pixels of an image to be accepted (0 defaults to system screen pixel height)
    max_height: 0

# Terminal Profiles
# -----------------
#
# Dominates how your terminal visually looks like. You will need at least one terminal profile.
profiles:
    main:
        # You can override the process to be started inside the terminal.
        # If nothing is specified, the users' default login shell will be used.
        # But you may as well log in to a remote host.
        # shell: "ssh ubuntu-vm"
        # shell: "/bin/bash"
        # arguments: ["some", "optional", "arguments", "for", "the", "shell"]

        # Sets initial working directory when spawning a new terminal.
        # A leading ~ is expanded to the user's home directory.
        # Default value is the user's home directory.
        initial_working_directory: "~"

        # When this profile is being *activated*, this flag decides
        # whether or not to put the terminal's screen into fullscreen mode.
        #
        # It is activated during startup as well as when switching from another profile to this one.
        fullscreen: false

        # When this profile is *activated*, this flag decides
        # whether or not to put the window into maximized mode.
        maximized: false

        # Defines the class part of the WM_CLASS property of the window.
        wm_class: "contour"

        # Environment variables to be passed to the shell.
        # environment:
        #     TERM: contour
        #     COLORTERM: truecolor

        # Determines the terminal type that is being advertised.
        # Possible values are:
        #   - VT100
        #   - VT220
        #   - VT240
        #   - VT330
        #   - VT340
        #   - VT320
        #   - VT420
        #   - VT510
        #   - VT520
        #   - VT525
        # Default: VT525
        terminal_id: VT525

        # Determines the initial terminal sice in characters.
        terminal_size:
            columns: 80
            lines: 25

        history:
            # Number of lines to preserve (-1 for infinite).
            limit: 1000
            # Boolean indicating whether or not to scroll down to the bottom on screen updates.
            auto_scroll_on_update: true
            # Number of lines to scroll on ScrollUp & ScrollDown events.
            scroll_multiplier: 5

        # visual scrollbar support
        scrollbar:
            # scroll bar position: Left, Right, Hidden (ignore-case)
            position: right
            # whether or not to hide the scrollbar when in alt-screen.
            hide_in_alt_screen: true

        # Some VT sequences should need access permissions.
        #
        # These can be to:
        # - allow     Allows the given functionality
        # - deny      Denies the given functionality
        # - ask       Asks the user interactively via popup dialog for permission of the given action.
        #
        # Default for all of these entries should be: "ask".
        permissions:
            # Allows changing the font via `OSC 50 ; Pt ST`.
            change_font: ask
            # Allows capturing the screen buffer via `CSI > Pm ; Ps ; Pc ST`.
            # The response can be read from stdin as sequence `OSC 314 ; <screen capture> ST`
            capture_buffer: ask

        # Font related configuration (font face, styles, size, rendering mode).
        font:
            # Initial font size in pixels.
            size: 14

            # DPI scaling factor applied on top of the system configured on (default: 1.0).
            dpi_scale: 1.0

            # Font Locator API
            # Selects an engine to use for locating font files on the system.
            # This is implicitly also responsible for font fallback
            # Possible values are:
            # - fontconfig      : uses fontconfig to select fonts
            # - CoreText        : uses OS/X CoreText to select fonts (currently not implemented).
            # - DirectWrite     : selects DirectWrite engine (Windows only)
            locator: native

            # Text shaping related settings
            text_shaping:
                # Selects which text shaping and font rendering engine to use.
                # Supported values are:
                # - native      : automatically choose the best available on the current platform.
                # - DirectWrite : selects DirectWrite engine (Windows only)
                # - CoreText    : selects CoreText engine (Mac OS/X only)
                # - OpenShaper  : selects OpenShaper (harfbuzz/freetype/fontconfig, avilable on all
                #                 platforms)
                engine: native

            # Uses builtin textures for pixel-perfect box drawing.
            # If disabled, the font's provided box drawing characters
            # will be used (Default: true).
            builtin_box_drawing: true

            # Font render modes tell the font rasterizer engine what rendering technique to use.
            #
            # Modes availabe are:
            # - lcd          Uses a subpixel rendering technique optimized for LCD displays.
            # - light        Uses a subpixel rendering technique in gray-scale.
            # - gray         Uses standard gray-scaled anti-aliasing.
            # - monochrome   Uses pixel-perfect bitmap rendering.
            render_mode: lcd

            # Indicates whether or not to include *only* monospace fonts in the font and
            # font-fallback list (Default: true).
            strict_spacing: true

            # Font family to use for displaying text.
            #
            # A font can be either described in detail as below or as a
            # simple string value (e.g. "monospace" with teh appropriate
            # weight/slant applied automatically).
            regular:
                # Font family defines the font family name, such as:
                # Fira Code", "Courier New", or "monospace" (default).
                family: "JetBrainsMono Nerd Font Mono"

                # Font weight can be one of:
                #   thin, extra_light, light, demilight, book, normal,
                #   medium, demibold, bold, extra_bold, black, extra_black.
                weight: regular

                # Font slant can be one of: normal, italic, oblique.
                slant: normal

                # Set of optional font features to be enabled. This
                # is usually a 4-letter code, such as ss01 or ss02 etc.
                #
                # Please see your font's documentation to find out what it
                # supports.
                #
                # Default: []
                features: []

            # If bold/italic/bold_italic are not explicitely specified, the regular font with
            # the respective weight and slant will be used.
            bold: "JetBrainsMono Nerd Font Mono"
            italic: "JetBrainsMono Nerd Font Mono"
            bold_italic: "JetBrainsMono Nerd Font Mono"

            # This is a special font to be used for displaying unicode symbols
            # that are to be rendered in emoji presentation.
            # Defaults to "emoji".
            emoji: "emoji"

        # Terminal cursor display configuration
        cursor:
            # Supported shapes are:
            #
            # - block         a filled rectangle
            # - rectangle     just the outline of a block
            # - underscore    a line under the text
            # - bar:          the well known i-Beam
            shape: "block"
            # Determins whether or not the cursor will be blinking over time.
            blinking: false
            # Blinking interval (in milliseconds) to use when cursor is blinking.
            blinking_interval: 500
        # Background configuration
        background:
            # Background opacity to use. A value of 1.0 means fully opaque whereas 0.0 means fully
            # transparent. Only values between 0.0 and 1.0 are allowed.
            opacity: 1.0
            # Some platforms can blur the transparent background (currently only Windows 10 is supported).
            blur: false
        # Specifies a colorscheme to use (alternatively the colors can be inlined).
        colors: "selenized_black"

        # Hyperlinks (via OSC-8) can be stylized and colorized on hover.
        hyperlink_decoration:
            normal: dotted
            hover: underline

# Color Profiles
# --------------
#
# Here you can configure your color profiles, wereas a color can be expressed in standard web format,
# with a leading # followed by red/green/blue values, 7 characters in total.
# You may alternatively use 0x as prefix instead of #.
# For example 0x102030 is equal to '#102030'.
color_schemes:
    selenized_black:
          default:
              background: '0x181818'
              foreground: '0xb9b9b9'
          normal:
              black:   '0x252525'
              red:     '0xed4a46'
              green:   '0x70b433'
              yellow:  '0xdbb32d'
              blue:    '0x368aeb'
              magenta: '0xeb6eb7'
              cyan:    '0x3fc5b7'
              white:   '0x777777'
          bright:
              black:   '0x3b3b3b'
              red:     '0xff5e56'
              green:   '0x83c746'
              yellow:  '0xefc541'
              blue:    '0x4f9cfe'
              magenta: '0xff81ca'
              cyan:    '0x56d8c9'
              white:   '0xdedede'

    default:
        # Default colors
        default:
            # Default background color (this can be made transparent, see above).
            background: '#1d1f21'
            # Default foreground text color.
            foreground: '#d5d8d6'

        # Mandates the color of the cursor.
        cursor: '#b0b030'

        # color to pick for hyperlinks decoration, when hovering
        hyperlink_decoration:
            normal: '#f0f000'
            hover: '#ff0000'

        # The text selection color can be customized here.
        # Leaving a value empty will default to the inverse of the content's color values.
        # selection:
        #     foreground: '#c0c0c0'
        #     background: '#a000a0'

        # Normal colors
        normal:
            black:   '#1d1f21'
            red:     '#cc342b'
            green:   '#198844'
            yellow:  '#fba922'
            blue:    '#3971ed'
            magenta: '#a36ac7'
            cyan:    '#3971ed'
            white:   '#c5c8c6'
        # Bright colors
        bright:
            black:   '#969896'
            red:     '#cc342b'
            green:   '#198844'
            yellow:  '#fba922'
            blue:    '#3971ed'
            magenta: '#a36ac7'
            cyan:    '#3971ed'
            white:   '#ffffff'

# Key Bindings
# ------------
#
# In this section you can customize key bindings.
# Each array element in `input_mapping` represents one key binding,
# whereas `mods` represents an array of keyboard modifiers that must be pressed - as well as
# the `key` or `mouse` -  in order to activate the corresponding action,
#
# Additionally one can filter input mappings based on special terminal modes using the `modes` option:
# - Alt       : The terminal is currently in alternate screen buffer, otherwise it is in primary screen buffer.
# - AppCursor : The application key cursor mode is enabled (otherwise it's normal cursor mode).
# - AppKeypad : The application keypad mode is enabled (otherwise it's the numeric keypad mode).
# - Select    : The terminal has currently an active grid cell selection (such as selected text).
#
# You can combine these modes by concatenating them via | and negate a single one
# by prefixing with ~.
#
# The `modes` option defaults to no filter at all (the input mappings always
# match based on modifier and key press / mouse event).
#
# `key` represents keys on your keyboard, and `mouse` represents buttons
# as well as the scroll wheel.
#
# Modifiers:
# - Alt
# - Control
# - Shift
# - Meta (this is the Windows key on Windows OS, and the Command key on OS/X, and Meta on anything else)
#
# Keys can be expressed case-insensitively symbolic:
#   APOSTROPHE, ADD, BACKSLASH, COMMA, DECIMAL, DIVIDE, EQUAL, LEFT_BRACKET,
#   MINUS, MULTIPLY, PERIOD, RIGHT_BRACKET, SEMICOLON, SLASH, SUBTRACT, SPACE
#   Enter, Backspace, Tab, Escape, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
#   DownArrow, LeftArrow, RightArrow, UpArrow, Insert, Delete, Home, End, PageUp, PageDown,
#   Numpad_NumLock, Numpad_Divide, Numpad_Multiply, Numpad_Subtract, Numpad_CapsLock,
#   Numpad_Add, Numpad_Decimal, Numpad_Enter, Numpad_Equal,
#   Numpad_0, Numpad_1, Numpad_2, Numpad_3, Numpad_4,
#   Numpad_5, Numpad_6, Numpad_7, Numpad_8, Numpad_9
# or in case of standard characters, just the character.
#
# Mouse buttons can be one of the following self-explanary ones:
#   Left, Middle, Right, WheelUp, WheelDown
#
# Actions:
# - CancelSelection   Cancels currently active selection, if any.
# - ChangeProfile     Changes the profile to the given profile `name`.
# - ClearHistoryAndReset    Clears the history, performs a terminal hard reset and attempts to force a redraw of the currently running application.
# - CopyPreviousMarkRange   Copies the most recent range that is delimited by vertical line marks into clipboard.
# - CopySelection     Copies the current selection into the clipboard buffer.
# - DecreaseFontSize  Decreases the font size by 1 pixel.
# - DecreaseOpacity   Decreases the default-background opacity by 5%.
# - FollowHyperlink   Follows the hyperlink that is exposed via OSC 8 under the current cursor position.
# - IncreaseFontSize  Increases the font size by 1 pixel.
# - IncreaseOpacity   Increases the default-background opacity by 5%.
# - NewTerminal       Spawns a new terminal at the current terminals current working directory.
# - OpenConfiguration Opens the configuration file.
# - OpenFileManager   Opens the current working directory in a system file manager.
# - PasteClipboard    Pastes clipboard to standard input.
# - PasteSelection    Pastes current selection to standard input.
# - Quit              Quits the application.
# - ReloadConfig      Forces a configuration reload.
# - ResetConfig       Overwrites current configuration with builtin default configuration and loads it. Attention, all your current configuration will be lost due to overwrite!
# - ResetFontSize     Resets font size to what is configured in the config file.
# - ScreenshotVT      Takes a screenshot in form of VT escape sequences.
# - ScrollDown        Scrolls down by the multiplier factor.
# - ScrollMarkDown    Scrolls one mark down (if none present, bottom of the screen)
# - ScrollMarkUp      Scrolls one mark up
# - ScrollOneDown     Scrolls down by exactly one line.
# - ScrollOneUp       Scrolls up by exactly one line.
# - ScrollPageDown    Scrolls a page down.
# - ScrollPageUp      Scrolls a page up.
# - ScrollToBottom    Scrolls to the bottom of the screen buffer.
# - ScrollToTop       Scrolls to the top of the screen buffer.
# - ScrollUp          Scrolls up by the multiplier factor.
# - SendChars         Writes given characters in `chars` member to the applications input.
# - ToggleAllKeyMaps  Disables/enables responding to all keybinds (this keybind will be preserved when disabling all others).
# - ToggleFullScreen  Enables/disables full screen mode.
# - WriteScreen       Writes VT sequence in `chars` member to the screen (bypassing the application).

input_mapping:
    - { mods: [Control],        mouse: Left,        action: FollowHyperlink }
    - { mods: [],               mouse: Middle,      action: PasteSelection }
    - { mods: [],               mouse: WheelDown,   action: ScrollDown }
    - { mods: [],               mouse: WheelUp,     action: ScrollUp }
    - { mods: [Alt],            key: Enter,         action: ToggleFullscreen }
    - { mods: [Alt],            mouse: WheelDown,   action: DecreaseOpacity }
    - { mods: [Alt],            mouse: WheelUp,     action: IncreaseOpacity }
    - { mods: [Control, Alt],   key: S,             action: ScreenshotVT }
    - { mods: [Control, Shift], key: Plus,          action: IncreaseFontSize }
    - { mods: [Control],        key: '0',           action: ResetFontSize }
    - { mods: [Control, Shift], key: Minus,         action: DecreaseFontSize }
    - { mods: [Control, Shift], key: '_',           action: DecreaseFontSize }
    - { mods: [Control, Shift], key: N,             action: NewTerminal }
    - { mods: [Control, Shift], key: C,             action: CopySelection }
    - { mods: [Control, Shift], key: V,             action: PasteClipboard }
    - { mods: [Control],        key: C,             action: CopySelection, mode: 'Select' }
    - { mods: [Control],        key: V,             action: PasteClipboard, mode: 'Select' }
    - { mods: [Control],        key: V,             action: CancelSelection, mode: 'Select' }
    - { mods: [],               key: Escape,        action: CancelSelection, mode: 'Select' }
    - { mods: [Control, Shift], key: Comma,         action: OpenConfiguration }
    - { mods: [Control, Shift], key: W,             action: Quit }
    - { mods: [Control],        mouse: WheelDown,   action: DecreaseFontSize }
    - { mods: [Control],        mouse: WheelUp,     action: IncreaseFontSize }
    - { mods: [Shift],          key: DownArrow,     action: ScrollOneDown }
    - { mods: [Shift],          key: End,           action: ScrollToBottom }
    - { mods: [Shift],          key: Home,          action: ScrollToTop }
    - { mods: [Shift],          key: PageDown,      action: ScrollPageDown }
    - { mods: [Shift],          key: PageUp,        action: ScrollPageUp }
    - { mods: [Shift],          key: UpArrow,       action: ScrollOneUp }
    - { mods: [Shift],          key: '{',           action: ScrollMarkUp,   mode: "~Alt"}
    - { mods: [Shift],          key: '}',           action: ScrollMarkDown, mode: "~Alt"}
    - { mods: [Shift],          mouse: WheelDown,   action: ScrollPageDown }
    - { mods: [Shift],          mouse: WheelUp,     action: ScrollPageUp }
    - { mods: [Control],        key: O,             action: OpenFileManager }
    - { mods: [Alt],            key: f2,            action: OpenConfiguration}

TERM environment variable: contour
Compiler version: g++ (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1)

Steps to Reproduce

Open contour and put cursor on title-bar buttons.

Hey. Many thanks for your report, interest, and most importantly: patience :-)
I am wondering, you are using Wayland as display server, aren't you?
From the application point of view, Contour is simply an OpenGL application, so I have to see if at all I can reproduce this behaviour. It certainly must be fixed, I absolutely agree, but maybe in the meantime you could try some.
What is the value of the environment variable QT_QPA_PLATFORM? And if not set to anything, you could try setting it to xcb before starting Contour.
Contour though also supports setting the platform plugin via CLI arg (not yet as config entry, would make sense, too - now since I'm writing about it here).

Thanks for such quick reply.

I am wondering, you are using Wayland as display server, aren't you?

Yes I am using Wayland display server

What is the value of the environment variable QT_QPA_PLATFORM? And if not set to anything, you could try setting it to xcb before starting Contour.

Thank you for this suggestion, launching contour with contour platform xcb fixes the issue. It also fixed an issue with full screen mode, that I was having.

I still need to fix this for using Wayland via the official display protocol, and probably (for easier use for people that need it) make the platform a config setting. I'm glad it worked out however ;)

Still an issue. Setting QT_QPA_PLATFORM to xcb makes it so that contour will use Xwayland. Why is this closed ?

I do not mind reopening this issue.
So for you however setting the protocol to use to xcb does fix it?
That was there reason why we closed it back then, IIRC.
At Contour we do not do any X11 or Wayland specific calls, it simply used Qt, and history has shown that Wayland kept being problematic whilst perfectly working on X11/Windows/Mac.
We have to see what we can generally do to improve the situation on Wayland side though. I am not sure however if the bug is actually in Contour or not.

I do not mind reopening this issue.
So for you however setting the protocol to use to xcb does fix it?

It does.

That was there reason why we closed it back then, IIRC.

I mean, it's just a workaround at best.

At Contour we do not do any X11 or Wayland specific calls, it simply used Qt, and history has shown that Wayland kept being problematic whilst perfectly working on X11/Windows/Mac. We have to see what we can generally do to improve the situation on Wayland side though. I am not sure however if the bug is actually in Contour or not.

As an example, OBS does use QT and does not have such problem when using Wayland. So I'm guessing the bug is in Contour.

While OBS does indeed use Qt, keep in mind that their source code is riddled with wayland stuff https://github.com/obsproject/obs-studio/search?p=2&q=wayland

@Utkarsh-khambra   can you please check if this bug is still present?

yeah, i also think there's nothing we can do about it, since the frontend is target platform independant. meaning, if at most, it'll be a bug in Qt's wayland plugin (wayland QPA). It is likely that this was addressed already.

It's still present on master in Fedora 38, Gnome 44.2.

Something is missing in contour, because if I disable xcb in my Wayland compositor, contour won't launch and it throws this:
Failed to create wl_display (No such file or directory).
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized.
wl_display - Represents a connection to the compositor and acts as a proxy to the wl_display singleton object. https://wayland.freedesktop.org/docs/html/apb.html#Client-classwl__display

Something is missing in contour, because if I disable xcb in my Wayland compositor, contour won't launch and it throws this:
Failed to create wl_display (No such file or directory).
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized.
wl_display - Represents a connection to the compositor and acts as a proxy to the wl_display singleton object. https://wayland.freedesktop.org/docs/html/apb.html#Client-classwl__display
I guess that wl_display is missing here.

Hey @Aqa-Ib. This sounds like a different issue, however, what Contour version are you running on which distro, and what does your configuration key look like for the key platform_plugin? This key should be pretty much on the top of your configuration file. It should be set to auto, which should work, or to wayland if you want to have it explicitly set to Wayland support (but then it would not run on X11/xcb). If it was set to xcb, this would explain why it won't start up when you disable Xwayland.
However, disabling Xwayland is generally not recommended, because there are too many applications not yet Wayland compatible.
Contour supports Wayland as much as the Qt framework provides support for it, through the QPA (platform) plugin. We do not (yet) do anything special, depending on what platform you are running on (X11, Wayland, MacOS, Windows). If you have further questions, feel free to join our Discord. :)

I am running the flathub version (0.3.12) on archlinux.
I have been playing with the platform_plugin key, tried on auto, wayland and xcb. It does not matter what key I assign to it, it will always only work on the X server, never on Wayland.
If I set the environment variable QT_QPA_PLATFORM to wayland;xcb (meaning that it will try first to run on wayland and if it s not possible, fallback to xcb), then it will run on the X server, even if I set the platform_plugin key to wayland.
If i set the variable QT_QPA_PLATFORM to wayland only (I do not let it fallback to xcb), it will try to execute on wayland, fail, and then try to execute on the X server and fail too, thus failing to start contour.
Thanks for your attention.

I am running the flathub version (0.3.12) on archlinux.
I have been playing with the platform_plugin key, tried on auto, wayland and xcb. It does not matter what key I assign to it, it will always only work on the X server, never on Wayland.
If I set the environment variable QT_QPA_PLATFORM to wayland;xcb (meaning that it will try first to run on wayland and if it s not possible, fallback to xcb), then it will run on the X server, even if I set the platform_plugin key to wayland.
If i set the variable QT_QPA_PLATFORM to wayland only (I do not let it fallback to xcb), it will try to execute on wayland, fail, and then try to execute on the X server and fail too, thus failing to start contour.
Thanks for your attention.

Does it happen for aur package as well?

AUR packages do not run: Fatal: Cannot mix incompatible Qt library (6.5.2) with this library (6.5.3).

AUR packages do not run: Fatal: Cannot mix incompatible Qt library (6.5.2) with this library (6.5.3).

I think that current qt version is 6.5.3 ( https://archlinux.org/packages/extra/x86_64/qt6-base/) so just update with pacman packages

My system is up to date though.

While I do agree that updating one's OS is offtopic, however, you hijacked this issue with your own, which are not related at all...
You basically have issue which can be loosely titled Contour won't start on wayland... Additionally while we do try to have some support for wayland (through QT only), we don't actively support it
@Yaraslaut can you check whether there is some QML thing we need to add for Wayland?

I think that what I posted first is totally related to this issue. I guess that OP problems come from contour being executed under Xwayland. Contour is not able to execute under Wayland, so graphical glitches might appear as OP showed.
Regards.

We will look into it nonetheless, I am just stating how I perceived it.
Main issue here is that we don't have Wayland specific code in the codebase, the support mainly comes from Qt, so we will look into it if there is any way for us to provide a fix.
Additional issue is that none of us use Wayland if I remember correctly, maybe we can check it through some VM

In the recent release of I can't repro this issue anymore.


Data Protection: Exception - "The parameter is incorrect"

I receive a CryptographicException when the AntiForgeryToken is rendered in my MVC view (@Html.AntiForgeryToken). The error doesn't appear on a colleague's machine with identical code.
My setup is:
var cert = GetCert()
 services.AddDataProtection()
                .ProtectKeysWithCertificate(cert.Thumbprint)
                .PersistKeysToRedis(redisConnection, "foo:dpikeys")
                .SetApplicationName("foo.IdentityServer");

The keys are being successfully written to redis. I have  "[ValidateAntiForgeryToken]" attributes on my controller actions.
Exception stack trace:
System.Security.Cryptography.CryptographicException: "The parameter is incorrect"
at System.Security.Cryptography.NCryptNative.DecryptData[T](SafeNCryptKeyHandle key, Byte[] data, T& paddingInfo, AsymmetricPaddingMode paddingMode, NCryptDecryptor`1 decryptor)
at System.Security.Cryptography.NCryptNative.DecryptDataPkcs1(SafeNCryptKeyHandle key, Byte[] data)
  at System.Security.Cryptography.RSACng.Decrypt(Byte[] data, RSAEncryptionPadding padding)
  at System.Security.Cryptography.RSAPKCS1KeyExchangeDeformatter.DecryptKeyExchange(Byte[] rgbIn)
  at System.Security.Cryptography.Xml.EncryptedXml.DecryptEncryptedKey(EncryptedKey encryptedKey)
  at System.Security.Cryptography.Xml.EncryptedXml.GetDecryptionKey(EncryptedData encryptedData, String symmetricAlgorithmUri)
 at System.Security.Cryptography.Xml.EncryptedXml.DecryptDocument()
 at Microsoft.AspNetCore.DataProtection.XmlEncryption.EncryptedXmlDecryptor.Decrypt(XElement encryptedElement)
 at Microsoft.AspNetCore.DataProtection.XmlEncryption.XmlEncryptionExtensions.DecryptElement(XElement element, IActivator activator)
at Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager.Microsoft.AspNetCore.DataProtection.KeyManagement.Internal.IInternalXmlKeyManager.DeserializeDescriptorFromKeyElement(XElement keyElement)
at Microsoft.AspNetCore.DataProtection.KeyManagement.DeferredKey.<>c__DisplayClass1_0.<GetLazyDescriptorDelegate>b__0()
at System.Lazy`1.CreateValue()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Lazy`1.get_Value()
at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyBase.get_Descriptor()
at Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.CngGcmAuthenticatedEncryptorFactory.CreateEncryptorInstance(IKey key)
   at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyBase.CreateEncryptor()
   at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRing.KeyHolder.GetEncryptorInstance(Boolean& isRevoked)
  at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRing.get_DefaultAuthenticatedEncryptor()
  at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Protect(Byte[] plaintext)
   at Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgeryTokenSerializer.Serialize(AntiforgeryToken token)
   at Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery.Serialize(IAntiforgeryFeature antiforgeryFeature)
  at Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery.GetAndStoreTokens(HttpContext httpContext)
  at Microsoft.AspNetCore.Mvc.ViewFeatures.AntiforgeryExtensions.GetHtml(IAntiforgery antiforgery, HttpContext httpContext)
  at Microsoft.AspNetCore.Mvc.ViewFeatures.DefaultHtmlGenerator.GenerateAntiforgery(ViewContext viewContext)
 at Microsoft.AspNetCore.Mvc.TagHelpers.FormTagHelper.Process(TagHelperContext context, TagHelperOutput output)
   at Microsoft.AspNetCore.Razor.TagHelpers.TagHelper.ProcessAsync(TagHelperContext context, TagHelperOutput output)
   at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.<RunAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at AspNetCore._Views_Account_Login_cshtml.<ExecuteAsync>d__27.MoveNext() in
C:\Code\foo\foo.IdentityServer\Views\Account\Login.cshtml:line 0

This looks like a keyring error. Are you sharing keys? Where are they persisted?

I'm using Redis. I'm only running this locally, and I've flushed my Redis Db to see if that would help (it doesn't).

Huh, that is weird. @BrennanConroy can you investigate?

@Pete1138 which version of aspnetcore are you using?

Microsoft.AspNetCore is v2.0.1. My project is targeting .NET v4.6.2.

This is likely an issue with corruption in the encrypted file. We'll look at adding more debug logging info.

I've taken a closer look at this. Based on the stack trace and where the error occurred, I'm not really sure what DataProtection could do differently. The only thing I could think to add to debug logging is the raw contents of the encrypted xml, but that seems risky.

The error doesn't appear on a colleague's machine with identical code.

The error appears to be due to differences in how the X.509 certificates are configured on different machines. In 2.0, it was pretty common to run into errors like when the X.509 cert was not installed into the right location in the Windows cert store. For anyone running into this in the future with 2.1 or above, I would recommended making this change.
X509Certificate2 cert = GetCert();

services.AddDataProtection()
-                .ProtectKeysWithCertificate(cert.Thumbprint)
+                .ProtectKeysWithCertificate(cert)

Closing as I'm not sure there is any action to take here, and I don't have steps to reproduce this. Feel free to continue discussion.

Without steps to reproduce, there isn't much I can do to help. The stack trace shows the error as coming from several layers below the ASP.NET stack which leads me to believe there is a problem with how the certificate was generated or there is a bug deep in the System.Security.Cryptography stack. Try creating a repro by using EncryptedXml APIs directly: https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-decrypt-xml-elements-with-x-509-certificates. That will get you closer to the source of the exception.

Since my coworker installed the latest windows updates it seems to work on his machine. We still have some other machines where it doesn't work. Where should I report a issue with System.Security.Cryptography?

The problem on my colleagues machine was that the certificate was only in the machine store and when decrypting an xml only the user store will be searched...
Strange as I though when using the certificate directly it will not try to load it from the store when decrypting? But the article you linked makes it clear that the certificate must be in the user store.

The code example in this procedure decrypts an XML element using an X.509 certificate from the local certificate store of the current user account.

https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-decrypt-xml-elements-with-x-509-certificates
Maybe this method produces the wrong result or is this the intended bahaivor?
System.Security.Cryptography.Xml.Utils.BuildBagOfCerts

Running on .NET Core 2.2
Below example generates the error.
Note that if you keep the data array under 215, it won't crash, but anything 215 or over crashes
`using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
var certificate = new X509Certificate2(Convert.FromBase64String("MIIDBzCCAe+gAwIBAgIJAPJHcapCIZ+TMA0GCSqGSIb3DQEBBQUAMBoxGDAWBgNVBAMMD3d3dy5leGFtcGxlLmNvbTAeFw0xOTA1MDkxMDE5MThaFw0yOTA1MDYxMDE5MThaMBoxGDAWBgNVBAMMD3d3dy5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANarpMb78bHob2DNjcxMt0JNC9wzOCbxE7QoGaUqwtRPDWxeZS1vdS/C2pmdTA/jByePUKZDZT4DF+bGT5Yz7X+drIbTD6fnQ1vLBRblKrJlh/jUOqRMem5rcVvi51vXymSf5D2q/0ng/EeDtMsbZhI9S/L9N1gAH33LrpuMyFWeoDtYjZDykCB03Ph5A0CmJvhiJx4MyjHLzyTprsiCxa8SNggWMA2HiV7bRB1uabjP9PLYG55DAOFEcr7hd1tBtqxBWALa4AGtAYxTYEoioiYeG2GHjae1fXAxtlvQHW4WiXsAdyJG5vJ8f8xKZWMkdGONiYiPjhiq1SXuUeOW19MCAwEAAaNQME4wHQYDVR0OBBYEFLYsUPqOS2e7AEAipuiGy4Q1/ex9MB8GA1UdIwQYMBaAFLYsUPqOS2e7AEAipuiGy4Q1/ex9MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAATWrl4O8T1gwmxvwj8WAh8I4Wl7RUPHMHEYezyu6b+JSMQEYy2RPOjiOk8gE/CVtbRBL2kCjA0OoKBvP07PvnPGLQDPRJIeYdMjvZIgoyRrB4pz9ERD43rSgDB8/KOuQZ8pwLq8qDdesgRV4rRZWEqbgQoXmMpbSeD3eDFo7s0zd84h+NhgaGZ0lGasdzFV1p3jOMPtAJ4NVc1lUYkDzx+C09KHiwZ8AJAEsKZ+IeQtVP7zKLqpEA7t6d3F6AwSKYPFVhEdolC7EA+1ZPw3oDLjvevR4LcjZGBxKXfyhjWfjMtM813gd/6xlS7AYvwkZ494jDGqnJ32Nz8DQBbIuTo="));
var data = new byte[215];
new Random().NextBytes(data);
using (var rsa = certificate.GetRSAPublicKey())
{
var encryptedMessageData = rsa.Encrypt(data, RSAEncryptionPadding.OaepSHA1);
}
}
}
}
`


fix(parser): remove extra parenthesis when displaying nested operations

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
Checklist

[x] I have written necessary rustdoc comments
[x] I have added necessary unit tests and integration tests
[x] I have added fuzzing tests or opened an issue to track them. (Optional, recommended for new SQL features).
[x] All checks passed in ./risedev check (or alias, ./risedev c)

Documentation
If your pull request contains user-facing changes, please specify the types of the changes, and create a release note. Otherwise, please feel free to remove this section.
Types of user-facing changes
Please keep the types that apply to your changes, and remove those that do not apply.

Installation and deployment
Connector (sources & sinks)
SQL commands, functions, and operators
RisingWave cluster configuration changes
Other (please specify in the release note below)

Release note
Please create a release note for your changes. In the release note, focus on the impact on users, and mention the environment or conditions where the impact may occur.
Refer to a related PR or issue link (optional)
Closes #7635

Realized the fmt implementation for Expr is used to test for precedence.
Better way to check is by directly looking at the AST output. Requires quite a few changes to test, work on it again when I have some bandwidth.

Fails at
select CAST((SMALLINT '240') >> (SMALLINT '27901') & 1  * (SMALLINT '18731') AS BOOLEAN);

Probably #7641
Previously we will generate brackets due to fmt. That's why it is rare to encounter.

Let @xiangjinwu take a look first as he had some comments: https://github.com/risingwavelabs/risingwave/issues/7671#issuecomment-1414983049.


Unable to install 1.40+ on Windows 2012 R2

Prerequisites

[X] Put an X between the brackets on this line if you have done all of the following:

Reproduced the problem in Safe Mode: https://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode
Followed all applicable steps in the debugging guide: https://flight-manual.atom.io/hacking-atom/sections/debugging/
Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages

Description
I am no longer able to install Atom (x64 or x86) on Windows 2012 R2 starting with version 1.40. There was no problem until version 1.39.
Steps to Reproduce

Download Atom 1.40 installer
Start the installer

Expected behavior:
Atom to be installed
Actual behavior:
I get the following error:

And when I close this window, I get the a new one:

Here is the content of Squirrel-Install.log file:
[28/09/19 15:16:19] info: Program: Starting Squirrel Updater: --install .
[28/09/19 15:16:19] info: Program: Starting install, writing to C:\Users\Administrator\AppData\Local\SquirrelTemp
[28/09/19 15:16:19] info: Program: About to install to: C:\Users\Administrator\AppData\Local\atom
[28/09/19 15:16:19] info: CheckForUpdateImpl: Reading RELEASES file from C:\Users\Administrator\AppData\Local\SquirrelTemp
[28/09/19 15:16:19] fatal: Finished with unhandled exception: System.AggregateException: One or more errors occurred. ---> System.MissingMethodException: Method not found: 'System.String System.String.Format(System.IFormatProvider, System.String, System.Object)'.
   at NuGet.SemanticVersion.Parse(String version)
   at Squirrel.VersionExtensions.ToSemanticVersion(String fileName)
   at Squirrel.Utility.<>c.<FindCurrentVersion>b__29_0(ReleaseEntry x)
   at System.Linq.EnumerableSorter`2.ComputeKeys(TElement[] elements, Int32 count)
   at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count)
   at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__0.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at Squirrel.Utility.FindCurrentVersion(IEnumerable`1 localReleases)
   at Squirrel.UpdateManager.CheckForUpdateImpl.determineUpdateInfo(UpdaterIntention intention, IEnumerable`1 localReleases, IEnumerable`1 remoteReleases, Boolean ignoreDeltaUpdates)
   at Squirrel.UpdateManager.CheckForUpdateImpl.<CheckForUpdate>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Squirrel.UpdateManager.<CheckForUpdate>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Squirrel.UpdateManager.<FullInstall>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at Squirrel.Update.Program.<Install>d__4.MoveNext()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at Squirrel.Update.Program.executeCommandLine(String[] args)
   at Squirrel.Update.Program.main(String[] args)
---> (Inner Exception #0) System.MissingMethodException: Method not found: 'System.String System.String.Format(System.IFormatProvider, System.String, System.Object)'.
   at NuGet.SemanticVersion.Parse(String version)
   at Squirrel.VersionExtensions.ToSemanticVersion(String fileName)
   at Squirrel.Utility.<>c.<FindCurrentVersion>b__29_0(ReleaseEntry x)
   at System.Linq.EnumerableSorter`2.ComputeKeys(TElement[] elements, Int32 count)
   at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count)
   at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__0.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at Squirrel.Utility.FindCurrentVersion(IEnumerable`1 localReleases)
   at Squirrel.UpdateManager.CheckForUpdateImpl.determineUpdateInfo(UpdaterIntention intention, IEnumerable`1 localReleases, IEnumerable`1 remoteReleases, Boolean ignoreDeltaUpdates)
   at Squirrel.UpdateManager.CheckForUpdateImpl.<CheckForUpdate>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Squirrel.UpdateManager.<CheckForUpdate>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Squirrel.UpdateManager.<FullInstall>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at Squirrel.Update.Program.<Install>d__4.MoveNext()<---

Reproduces how often:
Always
Versions
1.40.0 and above (x86 and x64)
Additional Information
None

Thanks for the report - haven't seen these particular errors before, not sure if there were changes in 1.40 that caused this?  Don't have Windows 2012 R2 to try out but since the problem is during installation, I'm assuming that running Atom with the atom-x64-windows.zip works fine?

I confirm that Atom works just fine when using zip files (I tested both x86 and x64).

Some .NET prerequisite may have changed regarding Squirrel. Does that make sense?

Thanks for reporting this issue.
Given that this is a problem only in the installer, there is a workaround for installation, and that it is exclusive to an older version of Windows Server, this isn't something that we're going to work on fixing. However, it is something that we would be open to reviewing a well-written pull request for. Because of this, I'm going to close the issue and mark it as help-wanted.
Let us know if you have any questions.

FYI, I am the maintainer of the chocolatey package for atom and it happens that Windows Server 2012 is the platform used to validate all new chocolatey packages. And since version 1.40, no new atom packages could be validated (except for the prerelease ones since they are not tested).


Awaiting a GoRoute.push() is not resolving when the push page gets replaced via pushReplacement

Steps to reproduce
Use the example to

Click on "Push to the Create screen"
Click on "Pop to Home screen"
Observe console, there should be a "After context.push()"
Click on "Push to the Details screen" again
Click on "PushReplacement to Details screen"
Click on "Pop to Home screen"
Observe console, that no log has been printed

Expected results
I would expect that from the chain of push/pushReplacement and pops the awaited initial push will be resolved when were back at it.
Actual results
The awaited initial push is never resolved.
Code sample
Code sample
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

/// This sample app shows an app with two screens.
///
/// The first route '/' is mapped to [HomeScreen], and the second route
/// '/details' is mapped to [DetailsScreen].
///
/// The buttons use context.go() to navigate to each destination. On mobile
/// devices, each destination is deep-linkable and on the web, can be navigated
/// to using the address bar.
void main() => runApp(const MyApp());

/// The route configuration.
final GoRouter _router = GoRouter(
  routes: <RouteBase>[
    GoRoute(
      path: '/',
      builder: (BuildContext context, GoRouterState state) {
        return const HomeScreen();
      },
      routes: <RouteBase>[
        GoRoute(
            path: 'create',
            builder: (BuildContext context, GoRouterState state) {
              return const CreateScreen();
            }),
        GoRoute(
          path: 'details',
          builder: (BuildContext context, GoRouterState state) {
            return const DetailsScreen();
          },
        ),
      ],
    ),
  ],
);

/// The main app.
class MyApp extends StatelessWidget {
  /// Constructs a [MyApp]
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      routerConfig: _router,
    );
  }
}

/// The home screen
class HomeScreen extends StatelessWidget {
  /// Constructs a [HomeScreen]
  const HomeScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Home Screen')),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            await context.push('/create');
            print('After context.push()');
          },
          child: const Text('Push to the Create screen'),
        ),
      ),
    );
  }
}

/// The create screen
class CreateScreen extends StatelessWidget {
  /// Constructs a [CreateScreen]
  const CreateScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Create Screen')),
      body: Center(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () => context.pop(),
              child: const Text('Pop back to Home screen'),
            ),
            const SizedBox(height: 25),
            ElevatedButton(
              onPressed: () => context.pushReplacement('/details'),
              child: const Text('PushReplacement to Details screen'),
            )
          ],
        ),
      ),
    );
  }
}

/// The details screen
class DetailsScreen extends StatelessWidget {
  /// Constructs a [DetailsScreen]
  const DetailsScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Details Screen')),
      body: Center(
        child: ElevatedButton(
          onPressed: () => context.pop(),
          child: const Text('Pop back to Home'),
        ),
      ),
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.16.4, on macOS 14.2.1 23C71 darwin-arm64, locale en-DE)
    • Flutter version 3.16.4 on channel stable at /Users/manuelrauber/fvm/versions/3.16.4
    • Upstream repository<EMAIL_ADDRESS>    • Framework revision 2e9cb0aa71 (4 weeks ago), 2023-12-11 14:35:13 -0700
    • Engine revision 54a7145303
    • Dart version 3.2.3
    • DevTools version 2.28.4

[!] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at /Users/manuelrauber/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.

[✓] Xcode - develop for iOS and macOS (Xcode 15.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15C500b
    • CocoaPods version 1.13.0

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

[✓] Android Studio (version 2023.1)
    • Android Studio at /Users/manuelrauber/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.3.2)
    • IntelliJ at /Users/manuelrauber/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

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

[✓] Connected device (5 available)
[✓] Network resources
    • All expected network resources are available.

Thanks for the report. I also can reproduce this issue.

flutter doctor -v (stable and master)
[✓] Flutter (Channel stable, 3.16.5, on macOS 14.1 23B74 darwin-x64, locale en-VN)
    • Flutter version 3.16.5 on channel stable at /Users/huynq/Documents/GitHub/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 78666c8dc5 (3 weeks ago), 2023-12-19 16:14:14 -0800
    • Engine revision 3f3e560236
    • Dart version 3.2.3
    • DevTools version 2.28.4

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A507
    • CocoaPods version 1.13.0

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

[✓] Android Studio (version 2023.1)
    • Android Studio at /Applications/Android Studio Hedgehog.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • android-studio-dir = /Applications/Android Studio.app/
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 14.1 23B74 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 120.0.6099.129

[✓] Network resources
    • All expected network resources are available.

• No issues found!

[!] Flutter (Channel master, 3.19.0-3.0.pre.23, on macOS 14.1 23B74 darwin-x64, locale en-VN)
    • Flutter version 3.19.0-3.0.pre.23 on channel master at /Users/huynq/Documents/GitHub/flutter_master
    ! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 3bcf779f32 (46 minutes ago), 2024-01-09 21:40:32 -0500
    • Engine revision 32bbf8be8d
    • Dart version 3.4.0 (build 3.4.0-10.0.dev)
    • DevTools version 2.31.0
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A507
    • CocoaPods version 1.14.3

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

[✓] Android Studio (version 2023.1)
    • Android Studio at /Applications/Android Studio Hedgehog.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • android-studio-dir = /Applications/Android Studio.app/
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

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

[✓] Connected device (4 available)
    • RMX2001 (mobile) • EUYTFEUSQSRGDA6D                         • android-arm64  • Android 11 (API 30)
    • iPhone (mobile)  • d9a94afe2b649fef56ba0bfeb052f0f2a7dae95e • ios            • iOS 15.8 19H370
    • macOS (desktop)  • macos                                    • darwin-x64     • macOS 14.1 23B74 darwin-x64
    • Chrome (web)     • chrome                                   • web-javascript • Google Chrome 120.0.6099.216

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

any update? facing same issue.

@huycozy @chunhtai
Our org is willing to take on this fix as long as we know that someone will review and consider our PR.

@huycozy @chunhtai
Our org is willing to take on this fix as long as we know that someone will review and consider our PR.

I don't think this is actually necessary, I can use onExit() to do what we need. I realized awaiting push() is actually meant for waiting for it to be popped off the nav stack, potentially returning a value. This wasn't clear when I started.
However, using go_router 14 we still cannot verify the fix (we were on 13) as we depend on some code that looks like this:
while(router.canPop()) {
  router.pop();
}

and it seems that canPop() no longer respects the routing change from pop() when it should, in go_router 14?

Actually I'm reading further and may have been wrong - the docs suggest onExit is really only for pop() when a route leaves the stack.
I'll explain what we're doing, we can't be unique.
Since we receive push notifications and universal links which can invoke navigation, we need to provide some sort of synchronization around navigation in general. So, I created a custom router singleton that uses go_router under the hood with the addition of a simple lock based on Completer.
I guess we need something like onEnter that gets called when a route pushes and animations complete. With that I could synchronize on completion of both push/replace/etc and pop operations. Does this sound correct?

Are there any updates on this issue? It seems that related PRs aren't merged.


Connect button doesn't do anything at certain time

Prerequisites

[ x] Put an X between the brackets on this line if you have done all of the following:

Checked that your issue isn't already filed: https://github.com/icetee/remote-ftp/issues

Description
[Remote FTP stops connecting every night at around 8 PM local time. I have tried uninstalling and re-installing the package. I have updated the atom but the issue remains.]
Steps to Reproduce

[Re-installed Remote FTP]
[Updated ATOM]
[Created a new FTP user account]

Expected behavior: [Expecting the connect button to connect to server at any time]
Actual behavior: [Doesn't connect every night at certain time]
Reproduces how often: [Every night at around 8 PM local time]
Versions
Windows 7 Pro x64
ATOM : 1.27.1 x64
Remote FTP: 2.2.0
You can get this information from copy and pasting the output of atom --version from the command line. Also, please include the OS and what version of the OS you're running.
Additional Information
Any additional information, configuration or data that might be necessary to reproduce the issue.

I think this is a server problem. Try another FTP server.


login_url redirection issue when auth a application

08:08:44 log.1        | NameError (undefined local variable or method `login_url' for #<Doorkeeper::AuthorizationsController:0x007ff27b0e2868>):
08:08:44 log.1        |   config/initializers/doorkeeper.rb:12:in `block (2 levels) in <top (required)>'

the issue is in the file of "config/initializers/doorkeeper.rb:12"
should change from
current_user || redirect_to(login_url)

to
current_user || redirect_to(new_user_session_url)

Good catch, thanks for investigating and describing the correct fix.