buildDotnetModule: cannot build projects using blazor webassembly

Describe the bug
dotnet-build-hook.sh and dotnet-install-hook.sh both set either -p:SelfContained=[true|false] or --[no-]self-contained based on the value of selfContainedBuild passed to buildDotnetModule. However, when attempting to package applications such as Iceshrimp.NET, which make use of Blazor WASM for their frontend, this flag causes build failures with the following error:
/build/nuget.TrS7Ah/fallback/microsoft.net.sdk.webassembly.pack/8.0.10/build/Microsoft.NET.Sdk.WebAssembly.Browser.targets(228,5): error WASM0005: Unable to resolve WebAssembly runtime pack version [/build/source/Iceshrimp.Frontend/Iceshrimp.Frontend.csproj]

Building directly (outside of nix) with dotnet build Iceshrimp.Backend/Iceshrimp.Backend.csproj --configuration Release --runtime linux-x64 -p:SelfContained=false causes the build to fail, however removing the -p:SelfContained=false flag allows the build to succeed. I also found the same issue described elsewhere, with the same fix: https://stackoverflow.com/a/78294977
Steps To Reproduce
Attempt to build the following package on nixpkgs master or unstable:
{ lib
, makeSetupHook
, buildDotnetModule
, fetchFromGitea

, dotnetCorePackages
}:

buildDotnetModule {
  pname = "iceshrimp.net";
  version = "2024.1-beta3.patch1";
  src = fetchFromGitea {
    domain = "iceshrimp.dev";
    owner = "iceshrimp";
    repo = "Iceshrimp.NET";
    rev = "90a6b06410ab2fe7d7b5e738c9b95795cc09b382";
    hash = "sha256-XPVO9mLrnpiQPAy8LT35SVd3+RC9IenS8vCdQqoupJw=";
  };

  nugetDeps = ./deps.nix;
  projectFile = "Iceshrimp.Backend/Iceshrimp.Backend.csproj";

  nativeBuildInputs = [];
  dotnetBuildFlags = [];
  useAppHost = false;

  dotnet-sdk = dotnetCorePackages.sdk_8_0;
  dotnet-runtime = dotnetCorePackages.aspnetcore_8_0;
}

(deps.nix)
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/yphhsvcxk51pm1chg4nirr1jyg1xfzzc-source
source root is source
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: configureNuget
@nix { "action": "setPhase", "phase": "configureNuget" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "configurePhase" }
Executing dotnetConfigureHook
  Determining projects to restore...
  Restored /build/source/Iceshrimp.Parsing/Iceshrimp.Parsing.fsproj (in 345 ms).
  Restored /build/source/Iceshrimp.Shared/Iceshrimp.Shared.csproj (in 345 ms).
  Restored /build/source/Iceshrimp.Frontend/Iceshrimp.Frontend.csproj (in 550 ms).
  Restored /build/source/Iceshrimp.Backend/Iceshrimp.Backend.csproj (in 1.2 sec).
Finished dotnetConfigureHook
Running phase: buildPhase
@nix { "action": "setPhase", "phase": "buildPhase" }
Executing dotnetBuildHook
  Iceshrimp.Shared -> /build/source/Iceshrimp.Shared/bin/Release/net8.0/Iceshrimp.Shared.dll
  Iceshrimp.Parsing -> /build/source/Iceshrimp.Parsing/bin/Release/net8.0/Iceshrimp.Parsing.dll
/build/nuget.TrS7Ah/fallback/microsoft.net.sdk.webassembly.pack/8.0.10/build/Microsoft.NET.Sdk.WebAssembly.Browser.targets(228,5): error WASM0005: Unable to resolve WebAssembly runtime pack version [/build/source/Iceshrimp.Frontend/Iceshrimp.Frontend.csproj]

Build FAILED.

/build/nuget.TrS7Ah/fallback/microsoft.net.sdk.webassembly.pack/8.0.10/build/Microsoft.NET.Sdk.WebAssembly.Browser.targets(228,5): error WASM0005: Unable to resolve WebAssembly runtime pack version [/build/source/Iceshrimp.Frontend/Iceshrimp.Frontend.csproj]
    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:10.12

Applying the following patch to nixpkgs master allows the build to succeed, though I am not sure how to test if this breaks other packages (which is why I made an issue first):
diff --git a/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-build-hook.sh b/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-build-hook.sh
index 08dbc41d01..2a52cf3005 100644
--- a/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-build-hook.sh
+++ b/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-build-hook.sh
@@ -29,8 +29,6 @@ dotnetBuildHook() {

     if [[ -n ${dotnetSelfContainedBuild-} ]]; then
         dotnetBuildFlagsArray+=("-p:SelfContained=true")
-    else
-        dotnetBuildFlagsArray+=("-p:SelfContained=false")
     fi

     if [[ -n ${dotnetUseAppHost-} ]]; then
diff --git a/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-install-hook.sh b/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-install-hook.sh
index 7b008a26d1..e3dd8e8eb6 100644
--- a/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-install-hook.sh
+++ b/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-install-hook.sh
@@ -23,7 +23,6 @@ dotnetInstallHook() {
     if [[ -n ${dotnetSelfContainedBuild-} ]]; then
         dotnetInstallFlagsArray+=("--self-contained")
     else
-        dotnetInstallFlagsArray+=("--no-self-contained")
         # https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/trim-self-contained
         # Trimming is only available for self-contained build, so force disable it here
         dotnetInstallFlagsArray+=("-p:PublishTrimmed=false")

Expected behavior
A way to not pass the -p:SelfContained= and --[no-]self-contained to dotnet build and dotnet publish, as even setting the value to false still appears to trigger different behaviour.
Notify maintainers

@corngood (I think?)
Metadata
Not sure if this is useful, but:
fetching path input 'path:/nix/store/lsy6c2f9alj2gkjj36h754kk63x6701l-source'
 - system: `"x86_64-linux"`
 - host os: `Linux 6.6.58, NixOS, 24.11 (Vicuna), 24.11.20241023.2768c7d`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Lix, like Nix) 2.91.1
System type: x86_64-linux
Additional system types: i686-linux, x86_64-v1-linux, x86_64-v2-linux, x86_64-v3-linux
Features: gc, signed-caches
System configuration file: /etc/nix/nix.conf
User configuration files: /home/ash/.config/nix/nix.conf:/nix/store/n7zrz0bpqqspxbvxyci1zhx7ynh5wmkn-plasma-workspace-6.2.2/etc/xdg/nix/nix.conf:/nix/store/riqaqhx77vmv0n1jfvsnik9f4rfyxgyi-kglobalacceld-6.2.2/etc/xdg/nix/nix.conf:/nix/store/f9gcaixyi3ycrf33qdwdz9vvhl88hmx7-baloo-6.7.0/etc/xdg/nix/nix.conf:/home/ash/.config/kdedefaults/nix/nix.conf:/nix/store/n7zrz0bpqqspxbvxyci1zhx7ynh5wmkn-plasma-workspace-6.2.2/etc/xdg/nix/nix.conf:/nix/store/riqaqhx77vmv0n1jfvsnik9f4rfyxgyi-kglobalacceld-6.2.2/etc/xdg/nix/nix.conf:/nix/store/f9gcaixyi3ycrf33qdwdz9vvhl88hmx7-baloo-6.7.0/etc/xdg/nix/nix.conf:/nix/store/n7zrz0bpqqspxbvxyci1zhx7ynh5wmkn-plasma-workspace-6.2.2/etc/xdg/nix/nix.conf:/nix/store/riqaqhx77vmv0n1jfvsnik9f4rfyxgyi-kglobalacceld-6.2.2/etc/xdg/nix/nix.conf:/nix/store/f9gcaixyi3ycrf33qdwdz9vvhl88hmx7-baloo-6.7.0/etc/xdg/nix/nix.conf:/home/ash/.config/kdedefaults/nix/nix.conf:/etc/xdg/nix/nix.conf:/home/ash/.local/share/flatpak/exports/etc/xdg/nix/nix.conf:/var/lib/flatpak/exports/etc/xdg/nix/nix.conf:/home/ash/.nix-profile/etc/xdg/nix/nix.conf:/nix/profile/etc/xdg/nix/nix.conf:/home/ash/.local/state/nix/profile/etc/xdg/nix/nix.conf:/etc/profiles/per-user/ash/etc/xdg/nix/nix.conf:/nix/var/nix/profiles/default/etc/xdg/nix/nix.conf:/run/current-system/sw/etc/xdg/nix/nix.conf
Store directory: /nix/store
State directory: /nix/var/nix
Data directory: /nix/store/8d722ax42hlc588vkxiw8g94qn50iajp-lix-2.91.1/share`
 - nixpkgs: `/nix/store/lsy6c2f9alj2gkjj36h754kk63x6701l-source`

Add a :+1: reaction to issues you find important.

Any chance dotnetFlags = "-p:SelfContained="; fixes this?
I can make a change to to allow selfContainedBuild = null; to remove the property.  That should be safe.

Yeah I've tested -p:SelfContained=, and it still interprets it as the property being set (presumably to false)
Having selfContainedBuild = null; feels like a reasonable solution to me


file extension, if not explicitly specified, should allow any file to be selected.

platforms：windows
Describe the bug
Prior to 1.2.0,  if no file extension is set, any file can be selected.
After 1.2.0, if no file extension is set, no file can be selected.

As I remember I fixed this at line https://github.com/Wavesonics/compose-multiplatform-file-picker/blob/6830ff5a8ac611017b6f420aef6f9fb07bb46a59/mpfilepicker/src/jvmMain/kotlin/com/darkrockstudios/libraries/mpfilepicker/FileChooser.kt#L60
@Wavesonics it is released, right?

is 2.0 fixed?
2.0 publish failed, Maven Central Repository latest version still is 1.2.0  https://central.sonatype.com/artifact/com.darkrockstudios/mpfilepicker-desktop/1.2.0/versions

@tangshimin can you check it with 2.0.2 version? it is released

@tangshimin can you check it with 2.0.2 version? it is released

I tested v2.0.2 and it did fix the bug. thank you!

This doesn't seem to work properly on Android for me.
If I don't specify and file types it just shows this and no hamburger menu is present:

This doesn't seem to work properly on Android for me (latest version).
FilePicker(showFilePicker) { file ->
    showFilePicker = false
    Napier.e("File: $file")
}

If I don't specify any file types it just shows this and no hamburger menu is present:


 Always get caught up in getting tools and frameworks to work properly, and then the output isn't what I want for this or that reason.
Issue of the day: Babel transformation loses track os jsdoc.
But thankfully this won't be difficult to resolve!
I read that it's not a goal of Babel to preserve doc since transformed code is not considered source. That's fine. But users (me) will need the doc when using the code in other projects.
Babel was chosen because to supply source that would run on many browsers. But it's a personal project, so who cares about that now. That's an end user concern anyhow.
We still don't want test files in the downloaded package if we can help it. If push comes to shove, we'll just run some command to delete the files in the publish workflow.

[ ] Drop Babel
[ ] Move tests to a dedicated directory that mirrors src
[ ] Ensure tests pass and are not included in downloaded package

Hmm so I've done this in v1.0.2, but in testing there's still no jsdoc coming through. 🤔


fix(conf) overcome penlight's 'list_delim' setting

Penlight's parsing would infer some settings as tables because of their
format, and our config parser would then contain tables values instead
of strings, which would make tests such as value == "on" obsolete and
would not correctly infer our booleans.

add list_delim placeholder for config parsing
move trailing comment removal earlier in the check_and_infer function
add tests for dnsmasq = off and custom_plugins file parsing

lgtm

from_file_conf, err = pl_config.read(s, {
      smart = false,
      list_delim = "_blank_" -- mandatory but we want to ignore it
    })

_blank_: Is only used to ignore this feature(list_delim), should not be used in the configuration file
Do I understand this correctly? @thibaultcha

@WALL-E yes, the parser requires that value in its options, but it should never be used.


Methods for Custom Native Authentication

At the moment i am not aware of an option where you could create a custom native Login/Register/Authentication etc. with Azure Active Directory B2C.
But for the consistent experience it is necessary to be able to fully create the authentication UI in xamarin forms(or any other plattform).
Cognito implemented this by offering functions to call to register/login/authenticate etc.
For Azure Active Directory B2C it would be cool if you could deactivate the WebUI for the Userflows and just call some Method in code.
Auth.SignInAsync(customLoginPage);
or
Auth.CustomRegisterInAsync(string email, string name, string password);
Alternative: Just use Cognito and wait till its an authentication option
Also the complete experience with creating a new Azure Active Directory B2C is really tedious for Developers who don´t have experience with Azure and could be streamlined with a default option which initializes everything according to a standard config.

I need this to make AppCenter's Auth a good solution for my project. For users, getting sent to a website to sign up/in for a mobile app is not a good experience. Because Auth fuels a lot of the other functionality of AppCenter, this might be a blocker for me for using AppCenter altogether.
Since the B2C web pages can be fully customized (albeit with HTML/CSS/JS), if they could be wrapped in a webview so it can be made to look native that might also be workable, though the latency for showing the page is an issue. A fully native solution would be way better.

Sorry @SOliasS, this has fallen through the cracks I believe @amchew can help you out.

Hey @SOliasS, thanks for sharing your use case, I contacted you via email to schedule some time to speak on Mon to understand more.
@Jjagg would love to learn more as well. Would you be free to chat next week? Email me at amchew [at] microsoft [dot] com if you're keen!

Hey both, thanks for responding to me, and looking forward to chatting with you next week!

Hey @amchew! Any update on this?

Hey @jjagg, apologies for the late reply, and not at all - you should continue to ping me! :)
I just proposed a work item to create an SDK method that will accept any AAD B2C user flows or custom policies, and you'll be able to pass the "signin with ROPC" policy to App Center for your user scenario (to sign users into the app natively) to work. The work item is currently in "ready for work" on our backlog, and should get picked up soon. Will continue to keep you updated.

@amchew do i understand that right?
"signing with ROPC" will enable us to create user flows directly in the App, with completely native UI?

Thanks @amchew!
It's nice to have a native UI, but there are some security concerns with ROPC and it seems to be discouraged for new applications:

From the OAuth2 spec:

The resource owner password credentials grant type is often used for
legacy or migration reasons.  It reduces the overall risk of storing
usernames and passwords by the client but does not eliminate the need
to expose highly privileged credentials to the client.

This grant type carries a higher risk than other grant types because
it maintains the password anti-pattern this protocol seeks to avoid.
The client could abuse the password, or the password could
unintentionally be disclosed to an attacker (e.g., via log files or
other records kept by the client).

Additionally, because the resource owner does not have control over
the authorization process (the resource owner's involvement ends when
it hands over its credentials to the client), the client can obtain
access tokens with a broader scope than desired by the resource
owner.  The authorization server should consider the scope and
lifetime of access tokens issued via this grant type.

The authorization server and client SHOULD minimize use of this grant
type and utilize other grant types whenever possible.

Blog: Why the Resource Owner Password Credentials Grant Type is not Authentication nor Suitable for Modern Applications

Therefore I would still be interested in a method of customizing the browser view for the sign up and sign in flow. Something like Xamarin.Auth's GetUI to retrieve the native web view object so it can be casted and customized for the target platform. It seems to me like that would take way less effort to implement for the team as well. With the B2C web page customization and mobile app client control over the webview we can stick with the more secure flows while having control over the look-and-feel (as the platform allows for web view customization).

"signing with ROPC" will enable us to create user flows directly in the App, with completely native UI?

@SOliasS yes, this is correct.

@Jjagg Sure ROPC is not the most desirable authentication for security reasons(as you have to trust the developers that they are able to keep your info save), but it's a basic feature that the user expects, as many don't want to connect their accounts with/or just don't have a supported account.
Also the implementation here is always with the ad b2c azure component in the background.
Which includes the basic security features,(so no saving user data unencrypted on public servers etc.).
As there will be support for Custom policies you should be able to customize the Webview to you liking(even for specific operating systems). You are also already able to completely the default screens, but you would have to host the Webpages.
The only thing that might be missing(as i interpret), is that you can't open the Webpages(if you are using the AD b2c web login or the login for custom Identiyprovider like google) in the Application Webview. But as these Webviews aren't always the best implementations of a browser, so i personally think there might be some problems(Feature support/Security) when trying to use them for theses tasks.

I don't think it's a bad thing that ROPC will be supported, but it would be nice to additionally be able to customize the webview on the app side for the Sign in/up flow.

But as these Webviews aren't always the best implementations of a browser, so i personally think there might be some problems(Feature support/Security) when trying to use them for theses tasks.

Using webviews takes managing user credentials out of the hands of the client application. That is good for security. The blog post I linked in my previous comment lists additional benefits, with regards to security as well as UX (e.g. tokens shared with browser, password manager integration).

With webviews i thinking of something like:
https://docs.microsoft.com/de-de/xamarin/xamarin-forms/user-interface/webview?tabs=windows
Which is as far as i know an implementation of a "Webrowser"  which is developed by Xamarin.
On Android it's based on Chromium, on iOS i don't know.
But it's only a basic implantation and therefor might not include all CSS features or HTML5 security implementations.
Which could possibly introduce problems to the process which wouldn't happen on a normal browser.
In addition you could customize the implementation and potentially introduce vulnerability into the browser.
Also i don't see how  "tokens shared with browser" would be possible with this implementation.
But honestly i haven't used the included Webview too much and i'm no security expert ;)

Under the hood Xamarin's webview uses implementations provided by the operating system. On Android it uses WebChromeClient, on iOS it uses WkWebView. Those are full browsers.
However I want to be able to use the system webview, meaning Chrome Custom Tabs on Android and SFSafariViewController on iOS. Those are essentially embeddable versions of a Chrome or Safari tab. The client app can't tell what goes down inside those views. They share cookies and website data with Chrome and Safari. It's possible to customize how those views are shown in your app, but you can't touch the content. Xamarin.Auth shows exactly what I want, it exposes the native UI object that's created for a sign in/up flow: https://github.com/xamarin/Xamarin.Auth/wiki/Details#2-creatingpreparing-ui.

@Jjagg ok, i wasn't aware that this was possible...
This would definitely be nice for the Web Part...

@amchew any updates?

#1621 Auth is dead


Create analyzer and codefix to replace '&&' by 'and'

Using C# 9 feature and, we should have a rule that finds && and replaces it by and

The logical and pattern serves another purpose than the logical and operator.
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/patterns#logical-patterns


Configuration Help

I am trying to setup my configuration file to run using the flow normal LED function with a fan curve based off of /gpu/0/temperature/1.  The config file is using the sensor method only because I was attempting to get the config to work correctly based off of the existing samples you have.  My goal is to have the fans under this config marked as Bottom Fans.
I did have a question though I am going to be installing 2 200mm Ring Trios in a few days once they arrive.  Am I able to have separate configs coming from one controller using the different Port IDs or do I need to install at least 1 other controller to separate functionality.  For instance could I use them in Port 4 and 5 below instead of installing a whole new controller.
The primary issue I am having is a timeout error that is occurring when trying to have TT Controller initialize.   Path 'Profiles[0]', line 3, position 8. ---> System.ArgumentException: Could not cast or convert from System.String to TTController.Service.Config.ProfileConfig.
   at Newtonsoft.Json.Utilities.ConvertUtils.EnsureTypeAssignable(Object value, Type initialType, Type targetType)
   at Newtonsoft.Json.Utilities.ConvertUtils.ConvertOrCast(Object initialValue, CultureInfo culture, Type targetType)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
   --- End of inner exception stack trace ---
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at TTController.Service.Managers.ConfigManager.LoadOrCreateConfig()
2020-05-22 11:56:35.9805|FATAL|TTController.Service.Managers.ConfigManager|Failed to load the config!
2020-05-22 11:56:35.9805|FATAL|TTController.Service.TTService|System.Exception: Service failed to start!
   at TTController.Service.TTService.OnStart(String[] args)
2020-05-22 11:56:35.9970|INFO|TTController.Service.TTService|================================================================
2020-05-22 11:56:35.9970|INFO|TTController.Service.TTService|Finalizing...
2020-05-22 11:56:35.9970|INFO|TTController.Service.Managers.ConfigManager|Disposing Config Manager...
2020-05-22 11:56:35.9970|INFO|TTController.Service.TTService|Finalizing done!
2020-05-22 11:56:36.0115|INFO|TTController.Service.TTService|================================================================

Am I able to have separate configs coming from one controller using the different Port IDs or do I need to install at least 1 other controller to separate functionality.

You need to use a separate controller because Riing Trio only works on Riing Trio controller. You cant connect it to older controllers.
This should be the fixed config:
{
  "Profiles": [
    {
      "Name": "1",
      "Ports": [
        [9802, 8101, 1],
        [9802, 8101, 2],
        [9802, 8101, 3]
      ],
      "SpeedControllers": [
        {
          "Type": "PwmSpeedController",
          "Config": {
            "CurvePoints": [
              [30, 30],
              [45, 50],
              [55, 60],
              [65, 75],
              [75, 100]
            ],
            "Sensors": ["/gpu/0/temperature/1"],
            "Trigger": {
              "Type": "AlwaysTrigger"
            }
          }
        }
      ],
      "Effects": [
        {
          "Type": "FlowEffect",
          "Config": {
            "FillStep": 0.05,
            "HueStep": 30,
            "Saturation": 1.0,
            "Brightness": 1.0,
            "Trigger": {
              "Type": "AlwaysTrigger"
            }
          }
        }
      ]
    }
  ],
  "PortConfigs": [
    {
      "Ports": [
      	[9802, 8101, 1],
      	[9802, 8101, 2],
        [9802, 8101, 3]
      ],
      "Config": {
        "Name": "Bottom Fans",
        "LedRotation": [3],
        "LedReverse": [false]
      }
    }
  ],
  "SensorConfigs": [
    {
      "Sensors": [
        "/gpu/0/temperature/1",
        "/lpc/nct6795d/temperature/1",
        "/lpc/nct6795d/temperature/2",
        "/lpc/nct6795d/temperature/3",
        "/lpc/nct6795d/temperature/5",
        "/amdcpu/0/temperature/2",
        "/amdcpu/0/temperature/3",
        "/gpu/0/temperature/0",
        "/gpu/0/temperature/6",
        "/gpu/0/temperature/2"
      ],
      "Config": {
        "Offset": "-3",
        "CriticalValue": 85
      }
    }
  ]
}

Ok so I need to hookup the second controller and what alterations to the
config will I have to make to get it to takeover the controls for the ring
trio fans?
On Fri, May 22, 2020 at 2:56 PM MoshiMoshi0<EMAIL_ADDRESS>wrote:

Am I able to have separate configs coming from one controller using the
different Port IDs or do I need to install at least 1 other controller to
separate functionality.
You need to use a separate controller because Riing Trio only works on
Riing Trio controller. You cant connect it to older controllers.
This should be the fixed config:
{
"Profiles": [
{
"Name": "1",
"Ports": [
[9802, 8101, 1],
[9802, 8101, 2],
[9802, 8101, 3]
],
"SpeedControllers": [
{
"Type": "PwmSpeedController",
"Config": {
"CurvePoints": [
[30, 30],
[45, 50],
[55, 60],
[65, 75],
[75, 100]
],
"Sensors": ["/gpu/0/temperature/1"],
"Trigger": {
"Type": "AlwaysTrigger"
}
}
}
],
"Effects": [
{
"Type": "FlowEffect",
"Config": {
"FillStep": 0.05,
"HueStep": 30,
"Saturation": 1.0,
"Brightness": 1.0,
"Trigger": {
"Type": "AlwaysTrigger"
}
}
}
]
}
],
"PortConfigs": [
{
"Ports": [
[9802, 8101, 1],
[9802, 8101, 2],
[9802, 8101, 3]
],
"Config": {
"Name": "Bottom Fans",
"LedRotation": [3],
"LedReverse": [false]
}
}
],
"SensorConfigs": [
{
"Sensors": [
"/gpu/0/temperature/1",
"/lpc/nct6795d/temperature/1",
"/lpc/nct6795d/temperature/2",
"/lpc/nct6795d/temperature/3",
"/lpc/nct6795d/temperature/5",
"/amdcpu/0/temperature/2",
"/amdcpu/0/temperature/3",
"/gpu/0/temperature/0",
"/gpu/0/temperature/6",
"/gpu/0/temperature/2"
],
"Config": {
"Offset": "-3",
"CriticalValue": 85
}
}
]
}
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/MoshiMoshi0/TTController/issues/48#issuecomment-632859230,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APV3IX6GNVHOKQZIPNSWGKDRS3DENANCNFSM4NH7CVYA
.

You will have to add correct port identifiers to the profile and also add a new port config that specifies "RiingTrio" as the device type for those port identifiers.

Ok I tried to do what you described above and I just want to make sure that
I am inputting it correctly into the config file.   I have included a
pasted copy of what I have done to add the Riing Trios so far.  Thanks for
your help.
{
"Profiles": [
{
"Name": "1",
"Ports": [
[9802, 8101, 1],
[9802, 8101, 2],
[9802, 8101, 3],
],
"SpeedControllers": [
{
"Type": "PwmSpeedController",
"Config": {
"CurvePoints": [
[30, 40],
[50, 50],
[70, 60],
[80, 100]
],
"Sensors": ["/gpu/0/temperature/0"],
"Trigger": {
"Type": "AlwaysTrigger"
}
}
}
{
"Name": "2",
"Ports": [
[9802, 8502, 1],
[9802, 8502, 2],
[9802, 8502, 3],
[9802, 8502, 4],
],
"SpeedControllers": [
{
"Type": "PwmSpeedController",
"Config": {
"CurvePoints": [
[30, 30],
[50, 45],
[60, 50],
[80, 100]
],
"Sensors": ["/amdcpu/0/temperature/2"],
"Trigger": {
"Type": "AlwaysTrigger"
}
}
}
],
"Effects": [
{
"Type": "SpectrumEffect",
"Config": {
"Saturation": 1.0,
"Brightness": 1.0,
"HueStep": 1.0,
"Trigger": {
"Type": "AlwaysTrigger"
}
}
}
]
}
],
"PortConfigs": [
{
"Ports": [
[9802, 8101, 1],
[9802, 8101, 2],
[9802, 8101, 3]
],
"Config": {
"Name": "Bottom Fans",
"LedRotation": [3],
"LedReverse": [true]
}
}
{
"Ports": [
[9802, 8502, 1],
[9802, 8502, 2],
[9802, 8502, 3],
[9802, 8502, 4]
],
"Config": {
"Name": "Top Fans",
"DeviceType": "RiingTrio",
"LedCountHandling": "Lerp",
"LedRotation": [3, 3],
"LedReverse": [true, false]
}
}
],
"SensorConfigs": [
{
"Sensors": [
"/gpu/0/temperature/1",
"/lpc/nct6795d/temperature/1",
"/lpc/nct6795d/temperature/2",
"/lpc/nct6795d/temperature/3",
"/lpc/nct6795d/temperature/5",
"/amdcpu/0/temperature/2",
"/amdcpu/0/temperature/3",
"/gpu/0/temperature/0",
"/gpu/0/temperature/6",
"/gpu/0/temperature/2"
],
"Config": {
"Offset": "-3",
"CriticalValue": 90
}
}
]
}
To assist I copied over my system information below:
Info
»
»        OS: Windows 10 Home 1909
[18362.1.amd64fre.19h1_release.190318-1202]
»        Build:
0.10.0-alpha+Branch.master.Sha.a826afd7df70a522c78f4785f357baa124b6a937
»
Controllers
»
»  Name: Riing Plus
»        VendorId: 9802
»        ProductId: 8101
»        Ports:
»                1:
»                        Data: [PortId: 1, Speed: 40, Rpm: 734, Unknown:
255]
»                        Identifier: [9802, 8101, 1]
»                2:
»                        Data: [PortId: 2, Speed: 40, Rpm: 766, Unknown:
255]
»                        Identifier: [9802, 8101, 2]
»                3:
»                        Data: [PortId: 3, Speed: 40, Rpm: 728, Unknown:
255]
»                        Identifier: [9802, 8101, 3]
»                4:
»                        Data: [PortId: 4, Speed: 60, Rpm: 0, Unknown: 255]
»                        Identifier: [9802, 8101, 4]
»                5:
»                        Data: [PortId: 5, Speed: 60, Rpm: 0, Unknown: 255]
»                        Identifier: [9802, 8101, 5]
»        Available effect types: Flow_Extreme, Flow_Fast, Flow_Normal,
Flow_Slow, Spectrum_Extreme, Spectrum_Fast, Spectrum_Normal, Spectrum_Slow,
Ripple_Extreme, Ripple_Fast, Ripple_Normal, Ripple_Slow, Blink_Extreme,
Blink_Fast, Blink_Normal, Blink_Slow, Pulse_Extreme, Pulse_Fast,
Pulse_Normal, Pulse_Slow, Wave_Extreme, Wave_Fast, Wave_Normal, Wave_Slow,
PerLed, Full
»  Name: Riing Trio
»        VendorId: 9802
»        ProductId: 8502
»        Ports:
»                1:
»                        Data: [PortId: 1, Speed: 60, Rpm: 747, Unknown:
255]
»                        Identifier: [9802, 8502, 1]
»                2:
»                        Data: [PortId: 2, Speed: 60, Rpm: 0, Unknown: 255]
»                        Identifier: [9802, 8502, 2]
»                3:
»                        Data: [PortId: 3, Speed: 60, Rpm: 0, Unknown: 255]
»                        Identifier: [9802, 8502, 3]
»                4:
»                        Data: [PortId: 4, Speed: 60, Rpm: 743, Unknown:
255]
»                        Identifier: [9802, 8502, 4]
»                5:
»                        Data: [PortId: 5, Speed: 60, Rpm: 0, Unknown: 255]
»                        Identifier: [9802, 8502, 5]
»        Available effect types: PerLed
»
Sensors
»
»  Nuvoton NCT6795D:
»        Temperature:
»                Temperature #1 (/lpc/nct6795d/temperature/1): 28.0 °C
»                Temperature #2 (/lpc/nct6795d/temperature/2): 32.0 °C
»                Temperature #3 (/lpc/nct6795d/temperature/3): 33.5 °C
»                Temperature #5 (/lpc/nct6795d/temperature/5): 41.5 °C
»                Temperature #6 (/lpc/nct6795d/temperature/6): -2.0 °C
»
»  AMD Ryzen 7 3800X:
»        Temperature:
»                Core (Tctl/Tdie) (/amdcpu/0/temperature/2): 36.0 °C
»                CCD1 (Tdie) (/amdcpu/0/temperature/3): 40.8 °C
»
»  AMD Radeon RX 5700 XT:
»        Temperature:
»                GPU Core (/gpu/0/temperature/0): 29.0 °C
»                GPU Hot Spot (/gpu/0/temperature/6): 29.0 °C
»                GPU VR VDDC (/gpu/0/temperature/2): 27.0 °C
»                GPU Memory (/gpu/0/temperature/1): 32.0 °C
»
»  Samsung SSD 970 EVO Plus 250GB:
»        Temperature:
»                Temperature (/nvme/1/temperature/0): 43.0 °C
»                Temperature 1 (/nvme/1/temperature/6): 43.0 °C
»                Temperature 2 (/nvme/1/temperature/7): 45.0 °C
»
»  ST2000LX001-1RG174:
»        Temperature:
»                Temperature (/hdd/0/temperature/0): 24.0 °C
Again thanks for your help.
On Sat, May 23, 2020 at 10:59 AM MoshiMoshi0<EMAIL_ADDRESS>wrote:

You will have to add correct port identifiers to the profile and also add
a new port config https://moshimoshi0.github.io/TTController/config/port
that specifies "RiingTrio" as the device type
https://moshimoshi0.github.io/TTController/config/port#devicetype for
those port identifiers.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/MoshiMoshi0/TTController/issues/48#issuecomment-633070826,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APV3IXZNPXBZSTLDYTHY6Z3RS7QGVANCNFSM4NH7CVYA
.

The config was missing some commas but it seems ok.
{
  "Profiles": [
    {
      "Name": "1",
      "Ports": [
        [9802, 8101, 1],
        [9802, 8101, 2],
        [9802, 8101, 3]
      ],
      "SpeedControllers": [
        {
          "Type": "PwmSpeedController",
          "Config": {
            "CurvePoints": [
              [30, 40],
              [50, 50],
              [70, 60],
              [80, 100]
            ],
            "Sensors": ["/gpu/0/temperature/0"],
            "Trigger": {
              "Type": "AlwaysTrigger"
            }
          }
        }
      ]
    },
    {
      "Name": "2",
      "Ports": [
        [9802, 8502, 1],
        [9802, 8502, 2],
        [9802, 8502, 3],
        [9802, 8502, 4]
      ],
      "SpeedControllers": [
        {
          "Type": "PwmSpeedController",
          "Config": {
            "CurvePoints": [
              [30, 30],
              [50, 45],
              [60, 50],
              [80, 100]
            ],
            "Sensors": ["/amdcpu/0/temperature/2"],
            "Trigger": {
              "Type": "AlwaysTrigger"
            }
          }
        }
      ],
      "Effects": [
        {
          "Type": "SpectrumEffect",
          "Config": {
            "Saturation": 1.0,
            "Brightness": 1.0,
            "HueStep": 1.0,
            "Trigger": {
              "Type": "AlwaysTrigger"
            }
          }
        }
      ]
    }
  ],
  "PortConfigs": [
    {
      "Ports": [
        [9802, 8101, 1],
        [9802, 8101, 2],
        [9802, 8101, 3]
      ],
      "Config": {
        "Name": "Bottom Fans",
        "LedRotation": [3],
        "LedReverse": [true]
      }
    },
    {
      "Ports": [
        [9802, 8502, 1],
        [9802, 8502, 2],
        [9802, 8502, 3],
        [9802, 8502, 4]
      ],
      "Config": {
        "Name": "Top Fans",
        "DeviceType": "RiingTrio",
        "LedCountHandling": "Lerp",
        "LedRotation": [3, 3],
        "LedReverse": [true, false]
      }
    }
  ],
  "SensorConfigs": [
    {
      "Sensors": [
        "/gpu/0/temperature/1",
        "/lpc/nct6795d/temperature/1",
        "/lpc/nct6795d/temperature/2",
        "/lpc/nct6795d/temperature/3",
        "/lpc/nct6795d/temperature/5",
        "/amdcpu/0/temperature/2",
        "/amdcpu/0/temperature/3",
        "/gpu/0/temperature/0",
        "/gpu/0/temperature/6",
        "/gpu/0/temperature/2"
      ],
      "Config": {
        "Offset": "-3",
        "CriticalValue": 90
      }
    }
  ]
}

So when I tried to run it it only ran the control over the RiingTrios and
not the Plus's.  I thought maybe the Plus's were missing their devicetype
identifier was the issue, but then it failed to run either function.  I
adjusted what my fans are monitoring for speed control on the RiingTrios
and believe I got that all right and set, but I still can't get both fans
to correspond correctly to one another.  I'm not sure what else to do.
I've tried adjusting different things and I either get a timeout error or
only one set of fans to follow the commands.  I've attached the program
line below.
{
"Profiles": [
{
"Name": "1",
"Ports": [
[9802, 8101, 1],
[9802, 8101, 2],
[9802, 8101, 3]
],
"SpeedControllers": [
{
"Type": "PwmSpeedController",
"Config": {
"CurvePoints": [
[30, 40],
[50, 50],
[70, 60],
[80, 100]
],
"Sensors": ["/gpu/0/temperature/0"],
"Trigger": {
"Type": "AlwaysTrigger"
}
}
}
]
},
{
"Name": "2",
"Ports": [
[9802, 8502, 1],
[9802, 8502, 2],
[9802, 8502, 3],
[9802, 8502, 4]
],
"SpeedControllers": [
{
"Type": "CopySpeedController",
"Config": {
"Target": [9802, 8101, 1]
}
}
],
"Effects": [
{
"Type": "WaveEffect",
"Config": {
"TickInterval": 2,
"PerLed": [
[255, 0, 0],
[0, 255, 0],
[0, 0, 255]
]
"Type": "AlwaysTrigger"
}
}
}
]
}
],
"PortConfigs": [
{
"Ports": [
[9802, 8101, 1],
[9802, 8101, 2],
[9802, 8101, 3]
],
"Config": {
"Name": "Bottom Fans",
"LedRotation": [3],
"LedReverse": [true]
}
},
{
"Ports": [
[9802, 8502, 1],
[9802, 8502, 2],
[9802, 8502, 3],
[9802, 8502, 4]
],
"Config": {
"Name": "Top Fans",
"DeviceType": "RiingTrio",
"LedCountHandling": "Lerp",
"LedRotation": [3, 3],
"LedReverse": [true, false]
}
}
],
"SensorConfigs": [
{
"Sensors": [
"/gpu/0/temperature/1",
"/lpc/nct6795d/temperature/1",
"/lpc/nct6795d/temperature/2",
"/lpc/nct6795d/temperature/3",
"/lpc/nct6795d/temperature/5",
"/amdcpu/0/temperature/2",
"/amdcpu/0/temperature/3",
"/gpu/0/temperature/0",
"/gpu/0/temperature/6",
"/gpu/0/temperature/2"
],
"Config": {
"Offset": "-3",
"CriticalValue": 90
}
}
]
}
On Tue, May 26, 2020 at 4:42 AM MoshiMoshi0<EMAIL_ADDRESS>wrote:

The config was missing some commas but it seems ok.
{
"Profiles": [
{
"Name": "1",
"Ports": [
[9802, 8101, 1],
[9802, 8101, 2],
[9802, 8101, 3]
],
"SpeedControllers": [
{
"Type": "PwmSpeedController",
"Config": {
"CurvePoints": [
[30, 40],
[50, 50],
[70, 60],
[80, 100]
],
"Sensors": ["/gpu/0/temperature/0"],
"Trigger": {
"Type": "AlwaysTrigger"
}
}
}
]
},
{
"Name": "2",
"Ports": [
[9802, 8502, 1],
[9802, 8502, 2],
[9802, 8502, 3],
[9802, 8502, 4]
],
"SpeedControllers": [
{
"Type": "PwmSpeedController",
"Config": {
"CurvePoints": [
[30, 30],
[50, 45],
[60, 50],
[80, 100]
],
"Sensors": ["/amdcpu/0/temperature/2"],
"Trigger": {
"Type": "AlwaysTrigger"
}
}
}
],
"Effects": [
{
"Type": "SpectrumEffect",
"Config": {
"Saturation": 1.0,
"Brightness": 1.0,
"HueStep": 1.0,
"Trigger": {
"Type": "AlwaysTrigger"
}
}
}
]
}
],
"PortConfigs": [
{
"Ports": [
[9802, 8101, 1],
[9802, 8101, 2],
[9802, 8101, 3]
],
"Config": {
"Name": "Bottom Fans",
"LedRotation": [3],
"LedReverse": [true]
}
},
{
"Ports": [
[9802, 8502, 1],
[9802, 8502, 2],
[9802, 8502, 3],
[9802, 8502, 4]
],
"Config": {
"Name": "Top Fans",
"DeviceType": "RiingTrio",
"LedCountHandling": "Lerp",
"LedRotation": [3, 3],
"LedReverse": [true, false]
}
}
],
"SensorConfigs": [
{
"Sensors": [
"/gpu/0/temperature/1",
"/lpc/nct6795d/temperature/1",
"/lpc/nct6795d/temperature/2",
"/lpc/nct6795d/temperature/3",
"/lpc/nct6795d/temperature/5",
"/amdcpu/0/temperature/2",
"/amdcpu/0/temperature/3",
"/gpu/0/temperature/0",
"/gpu/0/temperature/6",
"/gpu/0/temperature/2"
],
"Config": {
"Offset": "-3",
"CriticalValue": 90
}
}
]
}
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/MoshiMoshi0/TTController/issues/48#issuecomment-633891740,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APV3IX63RJLQWUBDNDWSZODRTN6G5ANCNFSM4NH7CVYA
.

Your configuration has small errors. You can use this to check if the JSON is valid or not.
Also each effect and speed controller HAS to have a trigger in its config.
{
  "Profiles": [
    {
      "Name": "1",
      "Ports": [
        [9802, 8101, 1],
        [9802, 8101, 2],
        [9802, 8101, 3]
      ],
      "SpeedControllers": [
        {
          "Type": "PwmSpeedController",
          "Config": {
            "CurvePoints": [
              [30, 40],
              [50, 50],
              [70, 60],
              [80, 100]
            ],
            "Sensors": ["/gpu/0/temperature/0"],
            "Trigger": {
              "Type": "AlwaysTrigger"
            }
          }
        }
      ]
    },
    {
      "Name": "2",
      "Ports": [
        [9802, 8502, 1],
        [9802, 8502, 4]
      ],
      "SpeedControllers": [
        {
          "Type": "CopySpeedController",
          "Config": {
            "Target": [9802, 8101, 1],
            "Trigger": {
              "Type": "AlwaysTrigger"
            }
          }
        }
      ],
      "Effects": [
        {
          "Type": "WaveEffect",
          "Config": {
            "TickInterval": 2,
            "PerLed": [
                [255, 0, 0],
                [0, 255, 0],
                [0, 0, 255]
             ],
             "Trigger": {
              "Type": "AlwaysTrigger"
            }
          }
        }
      ]
    }
  ],
  "PortConfigs": [
    {
      "Ports": [
        [9802, 8101, 1],
        [9802, 8101, 2],
        [9802, 8101, 3]
      ],
      "Config": {
        "Name": "Bottom Fans",
        "LedRotation": [3],
        "LedReverse": [true]
      }
    },
    {
      "Ports": [
        [9802, 8502, 1],
        [9802, 8502, 2],
        [9802, 8502, 3],
        [9802, 8502, 4]
      ],
      "Config": {
        "Name": "Top Fans",
        "DeviceType": "RiingTrio",
        "LedCountHandling": "Lerp",
        "LedRotation": [3, 3],
        "LedReverse": [true, false]
      }
    }
  ],
  "SensorConfigs": [
    {
      "Sensors": [
        "/gpu/0/temperature/1",
        "/lpc/nct6795d/temperature/1",
        "/lpc/nct6795d/temperature/2",
        "/lpc/nct6795d/temperature/3",
        "/lpc/nct6795d/temperature/5",
        "/amdcpu/0/temperature/2",
        "/amdcpu/0/temperature/3",
        "/gpu/0/temperature/0",
        "/gpu/0/temperature/6",
        "/gpu/0/temperature/2"
      ],
      "Config": {
        "Offset": "-3",
        "CriticalValue": 90
      }
    }
  ]
}

Is everything working? I would like to close this issue.

Sorry yep got it all worked out thanks for that JSON file site.  It
actually helps me with some other stuff I was working on too.
On Mon, Jun 1, 2020, 9:23 AM MoshiMoshi0<EMAIL_ADDRESS>wrote:

Is everything working? I would like to close this issue.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/MoshiMoshi0/TTController/issues/48#issuecomment-636858353,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APV3IXYYV34G5RJR65YJRG3RUOTTZANCNFSM4NH7CVYA
.


APR hokusai deployment

Configure hokusai templates for staging and production stacks

For staging:

run hokusai build && hokusai push staging to build and create the staging image tag
run hokusai stack up staging

For production:

Delete the apr service and deployment in kubernetes production
run hokusai build && hokusai push production to build and create the production image tag
run hokusai stack up production
switch DNS for apr.artsy.net to the new apr service ELB (get the DNS name with kubectl describe service apr)
cd terraform && terraform apply to delete the old ELB

@ashkan18 let's roll this out tomorrow AM

http://apr-staging.artsy.net/ is up!


Add CREATE DATABASE test

It seems CreateDatabase parsing was never actually done

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

25 of 25 (100.0%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.3%) to 90.668%

Totals

Change from base Build<PHONE_NUMBER>:
0.3%

Covered Lines:
7598

Relevant Lines:
8380

💛  - Coveralls

@alamb FYI i think this is good now.

Thanks @matthewmturner


Add Contribute index page for Indonesian localization

This PR kickstarts the index page for #18336
Requesting for proofreading.
/assign @irvifa
/assign @girikuncoro

Everything looks good, just need to fix 1 minor typo and you are good to go. Thanks a lot for doing this, and welcome back from holiday!

Thanks a lot!
/lgtm
/approve


Case(1): Add a changed line

Adds a changed line

Successfully created backport PR #152 for case1-backport-target.


[move-prover] Introduce invariants in the mvir parser.

This adds ast and parser for invariants in mvir structs and resources, with a syntax as such:
resource T {
  i: u64,
  invariant i > 0
}

There is also a (more experimental) modifier which can be added to an invariant:
resource T {
  i: u64,
  invariant {update} old(i) < i
}

We moreover add "synthetic" (ghost) variables for use in specifications:
synthetic sum_of_T_i: u128;
resource T {
  i: u64,
  invariant {update} sum_of_T_i == old(sum_of_T_i) - old(i) + i,
  invariant {unpack} sum_of_T_i == old(sum_of_T_i) - old(i),
  invariant {pack}   sum_of_T_i == old(sum_of_T_i) + i,
}

These features in the MVIR parser allows us to experiment with the design which will eventually be  in the source language once we've moved the spec language to there. They should be considered experimental for now.
Motivation
We need invariants and specification variables for global specs.
Have you read the Contributing Guidelines on pull requests?
(Write your answer here.)
Test Plan
Added a parser test.
Related PRs
NA

We should probably use a different word than "invariant", since that will be used for module invariants and loop invariants.  But I don't have a better suggestion for now, so let's get it in there and experiment.

Agreed, that is something to think about. However, the use of "invariant" on data structures is a major use case. Loop invariants are pro

The semantics of "old" may be a bit subtle (or maybe just different in different places).  I've found myself using it to mean the pre-state of a function (for ensures conditions), the pre-state of an entire transaction (for module invariants).  Here, I think it means the pre-state of an instruction.  That's fine, but we'll need to document it clearly and not get confused ourselves.

@bors-libra r=DavidLDill

:pushpin: Commit a8d522f has been approved by DavidLDill

:hourglass: Testing commit a8d522fd1ba4aa496c658502ee9c8f8518fc51b2 with merge 9b31fa5f93e48e29a1d2c4aad8cc46403f039fbb...

:sunny: Test successful - checks-circle_commit_workflow
Approved by: DavidLDill
Pushing 9b31fa5f93e48e29a1d2c4aad8cc46403f039fbb to master...


text/template: Funcs accepts names with '-' but won't allow calling them

I've given a valid function but with a name containing '-'. Attempting to call it from a template:
panic: template: index.html:64: unexpected bad character U+002D '-' in command

I agree that we should reject uncallable Funcs.

I am confused now. How did you get a panic? The parser correctly returns an error for a template that attempts to invoke such a function.
I'm starting to wonder if the original CL (tweaked) is all that's required.


List recipes in order of difficulty

For example, push-simple should definitely be ordered before push-clients.

:+1:
Also categories for offline, performance, push

Filed #92.


Investigate unexpected change with (Monad (Either e))

Original reporter: sol@
see: https://github.com/ghc/haddock/commit/47e6c8e77a4b8edbb1e4869ba5a0f76ee71ad8bb

is this issue still live? looks sort of rotted to me...

is this issue still live? looks sort of rotted to me...

Me too. Closing.


StaticTest is flappy

Every once in a while I get
======================================================================
FAIL: testStatic1 (jobTree.test.staticDeclaration.staticTest.StaticTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/hannes/workspace/bd2k/jobTree/src/jobTree/test/staticDeclaration/staticTest.py", line 45, in testStatic1
    self.assertEquals(open(outFile, 'r').readline(), "ABCDE")
AssertionError: '' != 'ABCDE'

It is possible that this only happens when this test is run after a failed run of this very same test.

Hmm, I can't reproduce this.

Let me see if I can still repro this.

Can't repro anymore. CLosing.


Set language via AJAX

Fix #10725
Edit: putting this in 1.13 milestone as gitea.com's logs are full of search engines using ?Lang=lang

Codecov Report

Merging #12785 into master will decrease coverage by 0.03%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master   #12785      +/-   ##
==========================================
- Coverage   43.26%   43.22%   -0.04%
==========================================
  Files         650      650
  Lines       72041    72048       +7
==========================================
- Hits        31166    31145      -21
- Misses      35829    35857      +28
  Partials     5046     5046

Impacted Files
Coverage Δ

models/repo_mirror.go
2.38% <0.00%> (-11.91%)
:arrow_down:

services/pull/check.go
47.69% <0.00%> (-5.39%)
:arrow_down:

modules/cron/tasks_basic.go
87.35% <0.00%> (-3.45%)
:arrow_down:

services/pull/temp_repo.go
26.59% <0.00%> (-3.20%)
:arrow_down:

models/unit.go
46.57% <0.00%> (-2.74%)
:arrow_down:

services/pull/patch.go
66.37% <0.00%> (-2.59%)
:arrow_down:

modules/process/manager.go
72.50% <0.00%> (-2.50%)
:arrow_down:

modules/queue/unique_queue_disk_channel.go
53.84% <0.00%> (-1.54%)
:arrow_down:

services/mirror/mirror.go
18.58% <0.00%> (-1.36%)
:arrow_down:

modules/log/event.go
57.54% <0.00%> (-0.95%)
:arrow_down:

... and 6 more

Continue to review full report at Codecov.

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


Create GitHub action to test new code before merging

Background on the problem the feature will solve/improved user experience
Add GitHub Actions to test and build new code pushed to a branch or committed to a pull request. Code that passes all the steps in the GitHub action can be merged in the repository.
Describe the solution you'd like
A GitHub action runs whenever code is committed to any branch or PR is made to the main branch.

[ ] services folder

Refer to a similar action that was implemented for the UI folder.
Each action will

[ ] install dependencies (yarn install)
[ ] build for production (yarn build)
[ ] run all tests (yarn run test:unit)
[ ] linting with prettier (yarn run lint)

Tasks

[ ] Ensure install, build and lint steps run locally on your system
[ ] Read more about GitHub actions
[ ] You can read more JavaScript build actions here.
[ ] Commit and push your GitHub action code.
[ ] Go to the Actions tab to see if it worked.

Acceptance Criteria
GitHub action runs for every new code commit and PR.
FYI @demilolu @davidnixon

Go for it @gibrankasif!
FYI @demilolu @davidnixon @GeraldMit


Telegram notification

Docker Qnap nas.
When configuring the Telegram bot it always gives the same error, I have other dockers that notify by telegram bot and I don't have any problem.

https://github.com/caronc/apprise/issues/1188

please dont past 5000 pixel wide screenshots, please just paste the text of the error
please close the apprise issue you created, do not spam other projects until more information can be figured out!
you have a DNS issue in the container, does the app fetch other pages OK?


Install HttpRunner with curl command

Install HttpRunner with one curl command, as poetry does.
$ curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python

$ bash -c "$(curl -ksSL https://httprunner.com/script/install.sh)"


Need a concise way to trigger a refresh for a ClusterExternalSecret

Describe the solution you'd like
Trigger a refresh of all external secrets managed by a ClusterExternalSecret
What is the added value?
Secret refreshing will make internal secrets up to date with cluster external secrets
Give us examples of the outcome
kubectl annotate ces my-es force-sync=$(date +%s) --overwrite would trigger a refresh of all secrets managed by that ces.
Observations (Constraints, Context, etc):
This can be worked around by iterating over the namespaces that the ClusterExternalSecret manages but it is awkward, for example:
NAMESPACES=$(kubectl get ns -l global-secrets=true | tail -n+2 | awk '{print $1}'); for NAMESPACE in $NAMESPACES; do kubectl annotate es my-secret -n $NAMESPACE  force-sync=$(date +%s) --overwrite ; done

Thanks in advance!

I think the issue is that CreateOrUpdate won't trigger an update if the resource didn't change at all (see here)
I think that if we make the generated ES to inherit CES annotations and labels, that should already do the trick (plus implement a nice small feature :laughing:)

@ADustyOldMuffin @gusfcarvalho thanks for your replies! Refresh on an interval would not meet our use case since we are looking for functionality similar to that in our workaround, in which we know we just changed the value of the upstream AWS secret and we want to force all the external secrets to pick up the change immediately.
If the generated ES inherited the CES annotations and were updated immediately when these changed on the CES then that would work for us.

@moolen  I think this is still very much relevant. Can we please re-open the issue? Unless it was implemented and I missed it.
Also, may I suggest to not automatically mark issues as Stale unless they are awaiting feedback from the Author or, if not possible, perhaps at least skip the ones labeled with kind/feature?
This prevents the need to continuously remove Stale over time, and there shouldn't be a need to close an issue if the required information is there and there is an intent to act upon it.

Hey @jemag good suggestions, will take a look at it! :pray:
The metadata.labels aren't copied from the CES to the ES as of now.
However, one would be able to trigger reconciliation of a ES through a CES when using spec.target.template.metadata - the spec is copied over from the CES to the ExternalSecret, hence this works in this particular case.


adding check for sold out classes; fixes #233

:raised_hands: nice, @minamarkham!!!

hey @minamarkham ...I'm looking at the logic and I think we need to swap the logic in the if statements:
typeof course.yes_rsvp_count !== "undefined " && course.yes_rsvp_count >= course.rsvp_limit
should be
typeof course.rsvp_limit !== "undefined " && course.yes_rsvp_count >= course.rsvp_limit
since the yes_rsvp_count is always available (basically a head count) while not every event has to have a posted limit (rsvp_limit). So then it reads "if there is a rsvp limit and the "yes" count is greater than it, then show SOLD OUT" kinda thing.
Make sense?

SO glad you're taking a stab at this! Thank you thank you thank youuuu

hah way to take FOREVER on that fix ;) nice! :+1:

@kstack7 :laughing:
FYI I used Austin and Philly to test for full classes.

Perfect. I think the logic is sound so we'll push it to tinker a bit more :) That's what staging is for anyways! Thanks again :)

https://girl-develop-it-staging.herokuapp.com/chapters/philadelphia :)

https://girl-develop-it-staging.herokuapp.com/chapters/austin <-- without the map

Perfecto! Looks solid to me...


HTML (DOxygen or THTML?)

@GRIFFINCollaboration/analysis_users
This is a poll to choose which documentation you would like to see.

+1

Use +1 for DOxygen and -1 for THTML

+1

+1
----- Original Message -----
From: "SmithJK"<EMAIL_ADDRESS>To: "GRIFFINCollaboration/GRSISort"<EMAIL_ADDRESS>Sent: Wednesday, November 4, 2015 5:19:09 PM
Subject: Re: [GRSISort] HTML (DOxygen or THTML?) (#582)
+1

Reply to this email directly or view it on GitHub:
https://github.com/GRIFFINCollaboration/GRSISort/issues/582#issuecomment-153887259

I'm trying to figure out how to embed this. There is a better app for polling but apparently it only works on chrome...

+1

+1

Alright, I don't think there are even enough people left to really swing it the other way. Plus I think I generated ROOT-plus-GRSI documentation that is nicer looking than the ROOT docs. It can also be created much more easily if you have dOxygen on your computer. I can tell people to install this as part of the installation procedure, and then we can open up a local copy in a browser on a --help call. Next time I get some free time, I will post these new docs and we can then decide how to tweak them.


Hang on exit randomly

Storage Explorer Version: 1.9.0
Build Number: 20190701.8
Platform/OS: Fedora
Architecture: x64
Regression From:  none
Bug Description

StorageExplorer hangs on exit.
the windows are gone but it still don't exit from command line.
Steps to Reproduce

Open it
Close it

nothing special when i use it.
actually it's a new PC and it's first time i open StorageExplorer.
and i did not login to a storage account, nor did i do anything to it.
Expected Experience

It's expect to exit to bash on exit.
Actual Experience
sometimes the window closed but command line doesn't return to bash. i have to Ctrl C to interrupt it after a few minutes.
Additional Context
Fresh install of Fedora.
Installed dotnet-sdk-{2.1,2.2} from copr @dotnet-sig/dotnet and az cli and libgnome-keyring
cli output:
A dialog has already been registered with namespace 'Azure.Storage.AdlsGen2.managePermissions'
A dialog has already been registered with namespace 'AzCopy.Dialog.RetryTransfers'
A dialog has already been registered with namespace 'AzCopy.Dialog.UploadBlobs'

Related? #1607

@jeffguorg I'm currently investigating. Out of curiosity, how long did you wait before entering Ctrl+C in the command line? Also, keep an eye on your process list. How many StorageExplorer processes are open? Are any of them in the Zombie status when you close Storage Explorer? Do they go away if you wait 1-2 minutes?

Hi, i reproduced this issue today.

i launched the app with a hand written desktop file:

% cat ~/.local/share/applications/storage-explorer.desktop
[Desktop Entry]
Encoding=UTF-8
Type=Application
Terminal=false
Exec=/home/my_name/.local/share/StorageExplorer-linux-x64/StorageExplorer
Name=StorageExplorer
Categories=Network;Application;

exit from StorageExplorer and launch it again
it stuck at slash dialog forever.

and here is some more info from my terminal
% ps aux | grep Stora
my_name   5813  0.0  0.0 215744   888 pts/0    S+   17:52   0:00 grep --color=auto Storage
my_name  18654  0.1  0.4 1269828 141580 tty2   Sl+  14:52   0:19 /home/my_name/.local/share/StorageExplorer-linux-x64/StorageExplorer
my_name  18658  0.0  0.1<PHONE_NUMBER>4 tty2     S+   14:52   0:00 /home/my_name/.local/share/StorageExplorer-linux-x64/StorageExplorer --type=zygote --no-sandbox
my_name  18700  0.0  0.1<PHONE_NUMBER>4 ?        Ssl  14:52   0:00 /home/my_name/.local/share/StorageExplorer-linux-x64/StorageExplorer ./node_modules/microsoft-servicehub/host/HubController.js 138a3edda2

% ps axjf
...
 8102 18654  7985  7985 tty2      7985 Sl+   1000   0:19              |   \_ /home/my_name/.local/share/StorageExplorer-linux-x64/StorageExplorer
18654 18658  7985  7985 tty2      7985 S+    1000   0:00              |   |   \_ /home/my_name/.local/share/StorageExplorer-linux-x64/StorageExplorer --type=zygote --no-sandbox
18654 18700 18700 18700 ?           -1 Ssl   1000   0:00              |   |   \_ /home/my_name/.local/share/StorageExplorer-linux-x64/StorageExplorer ./node_modules/microsoft-servicehub/host/HubController.js 138a3edda2
18700 18729 18700 18700 ?           -1 SLl   1000   0:02              |   |       \_ dotnet ./ServiceHub.Host.CLR.x64.dll coreClr.x64$IdentityHost 198c6d7f03
...

pid=8102 is my gnome-shell.
and i don't think there is zombie process in the background.
it has been half an hour before i comment on this issue, and none of these process disappeared. and there is a socket file at /run/user/1000/StorageExplorer-1.9.0-main.sock. didn't find any log
it looks similar to #1607, but i'm not 100% sure they're the same

@jeffguorg I believe the root cause is the same, because Storage Explorer can't restart properly if processes from the previous instance are still running. That's because, like the command line, it's waiting for the previous process to finish, which it never does.
I'm a bit surprised you didn't find any zombie processes, though. What I'm seeing on my machine is the child processes terminate, but remain in the zombie state, which means the parent process isn't reaping them properly. My suspicions are currently aimed at two components: the Activity Log, and the job queue manager. Both use setInterval to periodically do some maintenance work.
Do you have AzCopy turned on? If so, try turning it off, launch Storage Explorer, then close it again without doing anything else. Do you still get lingering processes?

I think I've found the heart of the issue. In Node, setInterval creates a timer object rather than a number. These timer objects, by default, block the process from exiting, because they keep putting callbacks on the event loop. Since the Storage Explorer parent process is waiting for all child processes to exit, it'll never properly exit.
The fix here is to use the unref method on the timer object. This tells Node that the timer's callbacks in the event loop should not block the process from exiting.


cleanup

.eslintrc is deprectated, moved to .eslintrc.yaml although in retrospect I guess you might prefer .eslintrc.json?

add some rules around usage of const, quotation marks, and strict mode

Updated stuffs.

Wow. Eslint can do EVERYTHING!


Codefresh - Continuous Delivery and Collaboration Platform for Docker uses

How can I add Codefresh to that list?
www.codefresh.io
Thanks

It's easy, just create a pull request with required changes. See examples here: https://github.com/ligurio/Continuous-Integration-services/pulls?q=is%3Apr+is%3Aclosed


Implement vendoring

Part of https://github.com/bjorn3/rustc_codegen_cranelift/issues/1290
./y.rs vendor will vendor everything that needs to be fetched from the internet into download/. After vendoring you shouldn't use ./y.rs prepare.

@jyn514 will this work for integration with rust's CI? The vendored directory will be separate from the main one. It is 395MB compared to rust's 602MB. Gzip compressed it is 54MB compared to rust's 81MB. Vendoring just cg_clif takes 208MB or 135MB when removing the jit feature. The total package is 355MB when removing the jit feature. Part of this size difference between jit and no jit comes from region and libloading still depending on winapi rather than windows-sys.

./y.rs vendor will need to run after https://github.com/rust-lang/rust/blob/af669c26846f85fd15e34a6f03d5d2f237444c17/src/bootstrap/dist.rs#L995

Hmm, I'm confused how vendoring is related to x.py test? Making it possible to build cg_clif from a source tarball seems useful, but I'm not sure why it would be necessary for gettting tests working.

The vendored directory will be separate from the main one.

What's the reason for that? Will it shrink the size at all if we combine them?

Hmm, I'm confused how vendoring is related to x.py test? Making it possible to build cg_clif from a source tarball seems useful, but I'm not sure why it would be necessary for gettting tests working.

My plan was to enable the testing by default, which means it would also run for source tarballs. If you think I should rather only run it on rust's CI, but not by default when using ./x.py test, I guess that is fine too. It may just confuse people when CI fails despite it working locally.

What's the reason for that? Will it shrink the size at all if we combine them?

Because a second cargo vendor call seems to remove crates vendored by the previous call, thus requiring a single cargo vendor call for both the main rust workspace and cg_clif. Merging both should save at least 208MB, although that can likely also be saved by removing the vendor call of cg_clif itself from x.py and instead using the version vendored here when building the cranelift backend from x.py as opposed to cg_clif's y.rs.

My plan was to enable the testing by default, which means it would also run for source tarballs. If you think I should rather only run it on rust's CI, but not by default when using ./x.py test, I guess that is fine too. It may just confuse people when CI fails despite it working locally.

Got it - that seems like a good goal 👍

Because a second cargo vendor call seems to remove crates vendored by the previous call, thus requiring a single cargo vendor call for both the main rust workspace and cg_clif. Merging both should save at least 208MB, although that can likely also be saved by removing the vendor call of cg_clif itself from x.py and instead using the version vendored here when building the cranelift backend from x.py as opposed to cg_clif's y.rs.

Ahhh right, I've run into that bug too :(
It sounds like cg_clif itself doesn't need vendoring and it's just for the benefit of the rust source tarballs, right? In that case, could we move the vendoring to x.py, around https://github.com/rust-lang/rust/blob/af669c26846f85fd15e34a6f03d5d2f237444c17/src/bootstrap/dist.rs#L976-L985 ? That should combine both into a single vendor/ directory, hopefully without breaking anything for your repository.

It sounds like cg_clif itself doesn't need vendoring and it's just for the benefit of the rust source tarballs, right?

Indeed

In that case, could we move the vendoring to x.py, around https://github.com/rust-lang/rust/blob/af669c26846f85fd15e34a6f03d5d2f237444c17/src/bootstrap/dist.rs#L976-L985 ? That should combine both into a single vendor/ directory, hopefully without breaking anything for your repository.

The part of ./y.rs vendor which is also performed by ./y.rs prepare (downloading several git repos) is not something I did like to see duplicated as it would be way too easy for the copies to get out of sync. The cargo vendor invocation could be moved there I guess by first running ./y.rs prepare and then searching the produced downloads/ dir for all directories with a Cargo.toml file to determine what workspaces need to be vendored. (Combined with downloads/sysroot/sysroot_src/library/core/tests as that one is a separate workspace due to me not being able to figure out how to make cargo test -p core work.)

The cargo vendor invocation could be moved there I guess by first running ./y.rs prepare and then searching the produced downloads/ dir for all directories with a Cargo.toml file to determine what workspaces need to be vendored.

If that's not too much extra work, I think that would be my preference, seems nice to save the space since we store release artifacts indefinitely. That said, we can always fix it later, I don't mind merging this for now if the new code is a hassle.

I think it wouldn't be too much of a hassle. I will cherry-pick the TOCTOU commit directly to the master branch (there were a couple of other occurences) and close this PR.


Issue when parsing model

A few BSP files contains models that generates wrong faces when parsed.
This is a small file that can reproduce the issue:
wrong.zip
This is how model *2 is supposed to look:

This is how model *2 geometry look when parsed with Decay-Library. Looks like it is getting indices from other models and also missing a few indices from model *2 itself:

Model *2 is just the orange column

This issue is caused when you itereate thru your edges list in Tree.cpp
You are using a 16-bits index value where some models can have up to 65535 edges
I've implemented a quick BSP parser myself and managed to reproduce the same issue as yours


ModuleNotFoundError: No module named 'psbody'

ModuleNotFoundError: No module named 'psbody'
please remove psbody as Mesh lib, this lib is outdated and not support macOS, very hard to install.

Thanks for your sugesstion. I will update it later. Based on https://github.com/MPI-IS/mesh, I have install this package on macOS without any other tricks.

@SeanChenxy
I suggest you install on more decent macOS M1. No way to install, also , this lib installed on ubuntu also cubersome. I will avoid use such outdated lib if I were u.


fix: adapt min_ios_version_supported

Summary:
Adapt to the minimum version of iOS and fix unnecessary, incorrect code and comments.
Changelog:
[IOS] [FIXED] - adapt min_ios_version_supported.

This PR is missing test plan, and it's not clear to me what's the motivation of the change (issue to be fixed, or after some discussion), as well as if the fix covers all areas (for example, minimum version supported is 13.4. Source).

Discussed with more people and the changes are needed as we should be ready to do this. Re-open the PR and try to merge.
It would be great if there's more context in the PR (and test plan) to help me and future contributors understand better. Thanks for the work!


[BUG] Flickering large progress display on Alacritty

Describe the bug
I have a progress bar that sometimes has up to 20 items, and it flickers kind of annoyingly.
I made a representative example that flickers:
from rich.progress import (
    Progress,
    TimeElapsedColumn,
    SpinnerColumn,
    TimeRemainingColumn,
    TransferSpeedColumn,
    BarColumn,
    DownloadColumn,
)
from rich.console import Console
import time

def gen_stream():
    for i in range(20):
        msg = {"bar": i, "total": 1, "completed": 0}
        yield msg
    for i in range(20_000):
        cycle = int(i / 20)
        bar_num = i % 20
        msg = {"bar": bar_num, "total": 1000, "completed": cycle}
        yield msg

def main():
    console = Console(record=True)
    bars = {}

    with Progress(
        SpinnerColumn(),
        BarColumn(),
        DownloadColumn(),
        TransferSpeedColumn(),
        TimeElapsedColumn(),
        TimeRemainingColumn(),
        console=console,
        transient=True,
    ) as progress:

        for msg in gen_stream():
            bar = msg["bar"]
            if bar not in bars:
                bars[bar] = progress.add_task("bar1", start=False, total=1)
            else:
                to_update = {}
                task_id = bars[bar]
                task = progress._tasks[task_id]
                if not task.started:
                    progress.start_task(bars[bar])
                if task.total == 1:
                    to_update["total"] = msg["total"]
                to_update["completed"] = msg["completed"]

                progress.update(task_id, **to_update)
            time.sleep(0.01)

if __name__ == "__main__":
    main()

Platform

Mac OSX with Alacritty
What platform (Win/Linux/Mac) are you running on? What terminal software are you using?
Mac OSX with Alacritty as a terminal, however I've had the same issue on a Linux box as well.  NOTE: It seems to perform fine on iterm
I may ask you to copy and paste the output of the following commands. It may save some time if you do it now.
If you're using Rich in a terminal:
poetry run python -m rich.diagnose
╭───────────────────────── <class 'rich.console.Console'> ─────────────────────────╮
│ A high level console interface.                                                  │
│                                                                                │
│ ╭──────────────────────────────────────────────────────────────────────────────╮ │
│ │ <console width=205 ColorSystem.TRUECOLOR>                                    │ │
│ ╰──────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                │
│     color_system = 'truecolor'                                                   │
│         encoding = 'utf-8'                                                       │
│             file = <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'> │
│           height = 53                                                            │
│    is_alt_screen = False                                                         │
│ is_dumb_terminal = False                                                         │
│   is_interactive = True                                                          │
│       is_jupyter = False                                                         │
│      is_terminal = True                                                          │
│   legacy_windows = False                                                         │
│         no_color = False                                                         │
│          options = ConsoleOptions(                                               │
│                        size=ConsoleDimensions(width=205, height=53),             │
│                        legacy_windows=False,                                     │
│                        min_width=1,                                              │
│                        max_width=205,                                            │
│                        is_terminal=True,                                         │
│                        encoding='utf-8',                                         │
│                        max_height=53,                                            │
│                        justify=None,                                             │
│                        overflow=None,                                            │
│                        no_wrap=False,                                            │
│                        highlight=None,                                           │
│                        markup=None,                                              │
│                        height=None                                               │
│                    )                                                             │
│            quiet = False                                                         │
│           record = False                                                         │
│         safe_box = True                                                          │
│             size = ConsoleDimensions(width=205, height=53)                       │
│        soft_wrap = False                                                         │
│           stderr = False                                                         │
│            style = None                                                          │
│         tab_size = 8                                                             │
│            width = 205                                                           │
╰──────────────────────────────────────────────────────────────────────────────────╯

poetry show rich
 poetry show rich
name         : rich
version      : 10.16.2
description  : Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal

dependencies
 - colorama >=0.4.0,<0.5.0
 - commonmark >=0.9.0,<0.10.0
 - pygments >=2.6.0,<3.0.0
 - typing-extensions >=3.7.4,<5.0

I tried it again with a bit of a higher load (30 progress bars) and it does flicker a bit on iterm as well, I don't know if this is a bug or not, I'm assuming it has to do with how much of and how often the buffer is getting redrawn.  So I'm wondering if there is a way I can make this more efficient, i.e. redraw less of the buffer per call, or have the buffer rendered less often.

Some flicker is to be expected, if the terminal refreshes screen in the middle of an update. But I don't see any flicker here, on iTerm or Alacritty.
I'd start by updating Rich, you have an old version. If it still flickers, we might have to figure out what differs between our systems.

Let me know

Okay I did update it and it still flickers, but I noticed something interesting.  I usually use TMUX, and I didn't think to mention that.  When I try outside of TMUX the flickering is quite noticeably less.
I'm also curious about this:

Some flicker is to be expected, if the terminal refreshes screen in the middle of an update

By update do you mean  call to progress.update()? Is there any way I can optimize my code to prevent this from happening?

.md
Get Outlook for Androidhttps://aka.ms/AAb9ysg

From: Mubashir Mumtaz @.>
Sent: Friday, April 1, 2022 9:48:14 PM
To: Textualize/rich @.>; Textualize/rich @.>
Cc: Comment @.>
Subject: Re: [Textualize/rich] [BUG] Flickering large progress display on Alacritty (Issue #2139)
Ill try to do my best
Get Outlook for Androidhttps://aka.ms/AAb9ysg

From: Nathan Richman @.>
Sent: Friday, April 1, 2022 9:46:41 PM
To: Textualize/rich @.>
Cc: mmu094 @.>; Comment @.>
Subject: Re: [Textualize/rich] [BUG] Flickering large progress display on Alacritty (Issue #2139)
Okay I did update it and it still flickers, but I noticed something interesting. I usually use TMUX, and I didn't think to mention that. When I try outside of TMUX the flickering is quite noticeably less.
I'm also curious about this:
Some flicker is to be expected, if the terminal refreshes screen in the middle of an update
By update do you mean call to progress.update()? Is there any way I can optimize my code to prevent this from happening?
—
Reply to this email directly, view it on GitHubhttps://github.com/Textualize/rich/issues/2139#issuecomment-1086104298, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AX2N6YGLENP5NZEMPBVSNK3VC4OOTANCNFSM5SGJC3VA.
You are receiving this because you commented.Message ID: @.***>

By update do you mean call to progress.update()? Is there any way I can optimize my code to prevent this from happening?

No, what I meant was when the terminal updates the screen to show a single frame with partial update from the app. Some terminals handle this better than others.
I think your flickering can be explained by TMUX. I have had reports of this before.
You can experiment with refresh_per_second which defaults to 10, but could be easily reduced.

Okay thanks, I think this can be closed then

Great 👍
Get Outlook for Androidhttps://aka.ms/AAb9ysg

From: github-actions[bot] @.>
Sent: Friday, April 1, 2022 10:27:53 PM
To: Textualize/rich @.>
Cc: mmu094 @.>; Comment @.>
Subject: Re: [Textualize/rich] [BUG] Flickering large progress display on Alacritty (Issue #2139)
Did I solve your problem?
Why not buy the devs a coffeehttps://ko-fi.com/textualize to say thanks?
—
Reply to this email directly, view it on GitHubhttps://github.com/Textualize/rich/issues/2139#issuecomment-1086136977, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AX2N6YERY6Z2OMEJ7HBXKBDVC4TJDANCNFSM5SGJC3VA.
You are receiving this because you commented.Message ID: @.***>

I'm experiencing a similar issue – wild flickering in the iTerm if the hyperlink output is used. Not only that, CPU usage of iTerm2 jumps to 70-80%. Setting refresh_per_second to 5 seconds helped a bit when only a few progress bars are shown, but has no effect on flickering with, say, 20 progress bars active

Adding rails!!
Get Outlook for Androidhttps://aka.ms/AAb9ysg

From: Sergey Polzunov @.>
Sent: Monday, October 17, 2022 3:59:51 PM
To: Textualize/rich @.>
Cc: mmu094 @.>; Comment @.>
Subject: Re: [Textualize/rich] [BUG] Flickering large progress display on Alacritty (Issue #2139)
I'm experiencing a similar issue – wild flickering in the iTerm if the hyperlink output is used. Not only that, CPU usage of iTerm2 jumps to 70-80%. Setting refresh_per_second to 5 seconds helped a bit when only a few progress bars are shown, but has no effect on flickering with, say, 20 progress bars active
—
Reply to this email directly, view it on GitHubhttps://github.com/Textualize/rich/issues/2139#issuecomment-1280678187, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AX2N6YFVUFJGRXM6Y5I3W4LWDUWSPANCNFSM5SGJC3VA.
You are receiving this because you commented.Message ID: @.***>


Dbcp connection leaks when msm is enabled

From<EMAIL_ADDRESS>on February 28, 2014 19:00:31
What steps will reproduce the problem?
1.We use dbcp connection pooling. MaxCon = 100. Max http sessions per node = 1k. Tomcat worker threads = 500. There are 5 tomcat nodes
2.With msm enabled, under load all 500 worker threads keep waiting for dbcp connection. This crashes tomcat and makes it unresponsive.
3.When we disable msm, tomcat responds pretty well and doesn't exhaust.

What is the expected output? What do you see instead?

Need to understand if there are any known issues with msm, dbcp and Spring Txs.

What version of the product are you using? On what operating system?
1.7 msm version

Please provide any additional information below.

Let me know what details you need.

Thanks for this lovely project
Original issue: http://code.google.com/p/memcached-session-manager/issues/detail?id=198

From martin.grotzke on February 28, 2014 10:12:37
Can you please provide a sample app that allows me to reproduce the issue?

From<EMAIL_ADDRESS>on February 28, 2014 23:46:31
Hi Martin,
This is reproducible only in production. We are trying to recreate this situation in qa.  Our average session size is 400kb and we use Java serialization.
Is there any performance benchmark done for msm using Java serialization?

From martin.grotzke on March 01, 2014 04:09:13
Not sure if this is what you're asking for: https://code.google.com/p/memcached-session-manager/wiki/SerializationStrategyBenchmark

An avg session size of 400k sounds fairly large, perhaps you're serializing unexpected stuff? Although in this case you should experience problems in simple failover tests in any environment and not only in production.

From martin.grotzke on March 27, 2014 13:14:01
Is there anything I can do to help, or shall we close this issue?

From<EMAIL_ADDRESS>on March 27, 2014 14:54:58
Martin, please close the case. It was a coding issue at our end.
Thanks again for prompt support.

From martin.grotzke on March 27, 2014 15:52:51
Ok
Status: Invalid


Fixes 2.5.1 GH crash

Description
Fixes GH crash reported on the forum: https://speckle.community/t/grasshopper-with-speckle-connection-crashes/2795
This was caused by the GH build not properly renaming the dll to gha,  causing it to either be missing, or not override the existing one.

If it didn't override the existing one, it would cause a crash.
If it was named dll instead of gha, Speckle would not be loaded.

Type of change

Bug fix (non-breaking change which fixes an issue)

How has this been tested?

Manual Tests (please write what did you do?)

Tested both mac and rhino builds to ensure files where compiled correctly and connectors ran as expected.
Docs

No updates needed

Mac CI fails due to partial outage on Github Package Registry (used to install mono). Merging in as i've checked locally.


Icon not visible in Yosemite's "dark menu bar"

Yosemite has introduced the "dark menu bar and Dock", which leads to the tomighty icon no longer being visible. Only if you click on the area where you think it might be, it's visible (see screenshot).
Can we modify the existing icon, or put another one based on the OS's settings?

+1

+1 :+1:

:+1:

+1

Workaround - if anyone else needs this:

If you haven't already, quit Tomighty (don't know if this is necessary, but I didn't want to modify the contents of the app with it still running).
Open a Finder window and go to Applications > Tomighty(.app), secondary-click and choose "Show package contents"
Inside the Tomighty.app package, navigate to Contents > Resources.
Back up the file 'status-normal.tiff' by renaming it something like '__status-normal.tiff'
Copy status-white.tiff and call it status-normal.tiff.
Start up Tomighty again and ta-da!

Next up, I might see if I can edit all the icons to recreate them for my retina display :)

:+1:
m9n, nice approach!

@m9n This works great, thank you.

it works. Thanks.

@m9n thanks. works.

+1 and thanks for the workaround, @m9n!

it worked, thank you very much!, @m9n

Closing this as a duplicate of:
https://github.com/tomighty/tomighty-osx/issues/21
The fix for this is due in 1.1.


Vehicle start time/end time

Hi guys,
I am using Capacitated Vehicle Routing Problem with Time Windows model. In our case drivers (vehicles) are working with shifts, so I need to set vehicle availability time. Is there a way to do this?
Thanks!

minStartTime = 123
maxStartTime = 244
You can store these minStartTime and maxStartTime in a list for different vehicles
    for vehicle_id in range(numOfVehicles):
        index = routing.Start(vehicle_id)
        timeDimension.CumulVar(index).SetRange(minStartTime, maxStartTime])
        routing.AddToAssignment(timeDimension.SlackVar(index))

For end time, you can add a dimension:
maxTime = 600  # minutes
routing.AddDimension(timeEvaluator, 0, maxTime, True, "MAXTIME")

see: https://developers.google.com/optimization/routing/cvrptw#time_window_constraints

Thank you 270ajay!  It really helped me

Hi,
I set the vehicle end time using Set Range method-
long index = routing.End(vehicle_id);
time_dimension.CumulVar(index).SetRange(start, end);
But it was taking approximately 2 hr to give the results.Then I followed the above approach using dimension to set the vehicle end time -
routing.AddDimension(timeEvaluator, 0, maxTime, True, "MAXTIME")
and performance improved a lot .From 2 hr, it give me results in 15 min.
I just want to know the difference between the two .Why there is such huge difference in both approaches.
Thanks.


feat(tier4_control_launch): declare param path argument

Signed-off-by: Takayuki Murooka<EMAIL_ADDRESS>Description
set tier4_control_launch_param_path in control.launch.xml

Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.

After all checkboxes are checked, anyone who has write access can merge the PR.

I've verified this PR works well with planning simulator


bug: undo/redo many times may cause "Uncaught RangeError: Array buffer allocation failed" error

environment
version
v1.0.0-alpha.17.7
description
reason
deep copy buffer spend too much memory, it will cause browser fail
solution
update engine version

github/Wonder-Technology/Wonder-Editor#10
#4

refer to Wonder-Technology/Wonder-Editor#10

fixed in wonder.js->v1.0.0-alpha.18.3


Add record + export dataset feature

Thanks for adding the ticket! If you want, I can pick it up after your record + export ADF feature is merged.

@mcopejans Ok, no problem.


Join to searchable model with nested associations not including tables

In Foreman, we hit an issue in the following scenario:

host has many reports, reports belong to a host
hostgroup has_many hosts, hosts belong to a hostgroup
host has search definition: scoped_search :in => :hostgroup,   :on => :name,    :complete_value => true,  :rename => :hostgroup

We then want to list reports for hosts that match a certain hostgroup, so:
Report.where(:reports => {:host_id => Host.search_for('hostgroup = One') })

This is equivalent to:
Report.where(:reports => {:host_id => Host.joins('hostgroup').where('hostgroups.name = "Foo"') })

But the resulting joined SQL query doesn't include the hostgroups table, so throws an error:
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: hostgroups.name: SELECT "reports".* FROM "reports" WHERE "reports"."host_id" IN (SELECT "hosts"."id" FROM "hosts" WHERE (("hostgroups"."name" = 'One')))

It seems the right way to do this in Rails is:
Report.joins('host' => ['hostgroup']).where('hostgroups.name = "One"')

(http://guides.rubyonrails.org/active_record_querying.html#eager-loading-multiple-associations)
I've sort of managed to work around it by calling ScopedSearch::QueryBuilder.build_query directly and then generating an AR query with the right sequence as shown above, but it would be good to have some help building join queries in scoped_search itself - if this is the case, and I'm not missing something blindingly obvious.
In our case the scoped search queries could be querying a variety of objects associated to host depending on user configuration, so hardcoding this isn't an option.  As a workaround, it's possible to make an inefficient query with IDs, but this was very slow with large numbers of hosts.
Here's a small application and unit test demonstrating it: https://github.com/domcleal/ss_join_search_issue (scoped_search 3.2.0, Rails 4.2.0, sqlite 3.8.8, Ruby 2.0.0).

I think this is caused by the Rails 4 changes to the .includes method behaviour. The :includes values generated by the query builder should be :eager_loaded or :joinsed instead.

Diving even deeper into this, looks like the issue may actually be in Rails ignoring .includes(:relation).references(:relation) inside an inner query for a where clause. However, I wonder why a LEFT JOIN is generated in this case instead of an INNER JOIN - since if we are searching on attributes of a related table, it makes no sense including rows which have no relation to it.


Provide accessor to the span implementation

This is needed if the SDK needs to cast to its underlying type.
Part of https://github.com/open-telemetry/opentelemetry-go/issues/93
@nilebox

This is needed when attempting to add an OpenCensus span to the OpenTelemetry context using otel.ContextWithSpan(context.Context, otel.Span)  In order to do that, we need to be able to get the underlying Span implementation.  The full implemnetation would look something like:
// This is the OpenCensus FromContext function, implemented using opentelemetry's SpanFromContext
func (o *otelTracer) FromContext(ctx context.Context) *octrace.Span {
	otSpan := otel.SpanFromContext(ctx)
	return // convert the opentelemetry span into the OC span implementation
}

// This is the OpenCensus NewContext function, implemented using opentelemetry's ContextWithSpan
func (o *otelTracer) NewContext(parent context.Context, s *octrace.Span) context.Context {
        // Below, I need to call s.Internal() in order to have an interface I can cast to my internal type.
        // For example, my internal type could wrap an opentelemetry Span, which I could use in ContextWithSpan
	if myspan, ok := s.Internal().(*myspanimplementation); ok {
		return otel.ContextWithSpan(parent, // get an opentelemetry Span from myspan)
	}
	// The user must have created the octrace Span using a different tracer, and we don't know how to store it.
	return parent
}


Feature: install dependencies alongside Qt libraries on demand

Hi, there.
Background
I'm using Qt for MinGW. From my observations, the current official Qt online installer (4.1.1-0-202105251051) will automatically install the corresponding version of MinGW tool when the user wants to install Qt for MinGW, even if that MinGW tool is not checked (selected) in the tree of "Developer and Designer Tools".
The dependency relationship is described in the Updates.xml file (Qt 6.1.2 on Windows):
<Updates>
  <PackageUpdate>
    <Name>qt.qt6.612.win64_mingw81</Name>
    ...
    <Dependencies>qt.tools.qtcreator, qt.tools.win64_mingw810, qt.qt6.612.doc, qt.qt6.612.examples</Dependencies>
    ...

Requested features
I think it would be great if aqtinstall had the following abilities (sorted by importance):

Installing Qt libraries with dependencies.
Configuring related files (such as the qtenv2.bat file for MinGW on Windows. See https://github.com/miurahr/aqtinstall/pull/279#issuecomment-884687570).
Filtering dependencies:

Filtering names by using pattern matching or regular expressions.
Filtering versions with semantic versioning.

Based on the post in https://github.com/miurahr/aqtinstall/issues/299#issuecomment-884694093 .

I think this is a graph traversal problem. Each <PackageUpdate> that you install contains a list of dependencies in the <Dependencies> xml tag. You need to find the Updates.xml file that contains each of the PackageUpdates in this list and recursively install each PackageUpdate for your architecture.
If you imagine the dependencies as a graph, where each <PackageUpdate> is a node, and each item in the <Dependencies> tag is an edge to another node, you could visit every node that the starting node is connected to and install every item in <DownloadableArchives> that you encounter along the way.
I think that the hard part here is following the edges. If you start at qt.qt6.620.clang_64 from https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/qt6_620/Updates.xml, your dependencies are "qt.tools.qtcreator, qt.qt6.620.doc, qt.qt6.620.examples". None of these PackageUpdates exist in the same Updates.xml file as qt.qt6.620.clang_64; you need some way to translate the name qt.tools.qtcreator into the url https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/tools_qtcreator/Updates.xml.
I have written some code that attempts to solve the edge problem here: https://gist.github.com/ddalcino/0998f62fc87b4265a410dbf0555bbc99. It depends on some code in ci/generate_combinations.py, so I have been running it within the ci folder. The download_all_xmls() function downloads every Updates.xml file in the repository; this prevents a fresh download every time you want to read an Updates.xml file. The pkg_name_to_folder() function attempts to figure out the path to an Updates.xml folder, based on a PackageUpdate name (like qt.qt6.620.clang_64) and a couple of contextual clues that do not exist in the name, like the folder extension. I think that some of these clues are necessary. The check_folder_names() function attempts to test the pkg_name_to_folder() function by running it on every PackageUpdate name in the Updates.xml files. For this to work, pkg_name_to_folder() must return the right path every time.
My pkg_name_to_folder() function is fairly ugly, but it works for the subset of Updates.xml files I have tested it on. There are a couple of outlier PackageUpdate names in the preview and early access folders that I couldn't figure out; hopefully we will not need these.
Hope this helps.

Whoa, I think aqtinstall will eventually become a package manager. XD

Whoa, I think aqtinstall will eventually become a package manager. XD

Do you know why aqt  was given its name with reverence of apt - another package tool？

Here is article of Graph traversal

wikiepdia - graph traversal
medium - graph traversal in python

Here is an experimental implementation of graph parsing of set of Update.xml database.
https://github.com/miurahr/aqtxmlparser
Please see a test case to traverse dependency.

@pytest.mark.parametrize(
    ("target,in_file,expect_depend"),
    [
        ("qt.qt5.5140.qtcharts.win32_mingw73", "windows-5140-update.xml", "qt.tools.win32_mingw730"),
    ],
)
def test_get_module_to_package(target: str, in_file: str, expect_depend: str):
    xml = (Path(__file__).parent / "data" / in_file).read_text("utf-8")
    update_xml = xmlparser.Updates.fromstring(xml)
    module = target.split(".")[-2]
    #
    packages = update_xml.dfs(target)
    module_to_package = xmlparser.ModuleToPackage({module: packages})
    assert module_to_package.has_package(target)
    assert module_to_package.has_package(expect_depend)

Now start integration on #533

Now feature is merged.


Add a stubbed out second frontend

This replaces #720.  We discussed landing a much smaller second frontend initially until there was a clearer decision on what we'd want to share.
@victorporof this is in much less risk of bitrotting, so lmk if you want to reduce duplication in build system here before landing, or if we should do it later.  I think one piece of low hanging fruit would be to have each webpack config file export dev and prod configs (so 1 file instead of 3).

Coverage increased (+0.2%) to 40.133% when pulling 30def985d53623c35ab53508a4d721960a853bf2 on bgrins:alt-frontend into 91e2716b0f6cba4d054253948e39bac60b4019fb on mozilla:master.

Can fix anything whenever, I'm ok with followups.


i can't lime test html5.

Describe your bug here.
saetar5gyr5yhseryhrtgbrtyhg  bh bhrth
Command Prompt/Terminal logs (if existing)
source/WeekData.hx:11: characters 8-19 : You cannot access the sys package while targeting js (for sys.io.File)
source/editors/WeekEditorState.hx:34: characters 8-16 : ... referenced here
source/editors/MasterEditorMenu.hx:119: characters 37-52 : ... referenced here

Are you modding a build from source or with Lua?
Source
What is your build target?
HTML5
Did you edit anything in this build? If so, mention or summarize your changes.
I edited Achievements, AchievementsMenuState and Discord.

Here's some guidance: https://github.com/Starmapo/FNF-PsychEngine-Extra/issues/11#issuecomment-1093299756


feaLib: support string input

Untested. Closes #443.
r? @brawer

Looks good, but it breaks the Travis build; mind fixing that?

Ping?

Sorry I have many things to work on these days. Should be fixed now.

Thank you!


Bug Fix #174: "Add-AzureAccount window poped up behind VS"

#174
@AndreSayreMSFT @HuanhuanSunMSFT @bmoore-msft @Microsoft/poshtools
Add-AzureAccount pops its own window for authentication, there is nothing we can pipe back to VS to operate in this case, so we have to put remote host process window(invisible) on top so that the new window from the process can be presented on top of VS.
In order to obtain the invisible window handle, you have to visible it first and then hide it. MSDN: https://msdn.microsoft.com/en-us/library/system.diagnostics.process.mainwindowhandle(v=vs.110).aspx

Looks good!


recent topics: Improve navigation for PgUp/PgDn etc.

Our Recent Topics feature has completely intuitive navigation for the up and down arrows.
We should extend this paradigm to work for for PgUp, PgDn, Home, and End.
See https://chat.zulip.org/#narrow/stream/137-feedback/topic/recent.20topics.20navigation/near/1328790 for more details.

@zulipbot claim

I believe this was fixed in https://github.com/zulip/zulip/issues/23078.