[BUG] Authorization Failing: Azure.Identity.LinuxNativeMethods throwing liblibsecret-1.so.0 not found

Library name and version
Azure.Identity 1.6, Azure.Extensiions.AspNetCore.Configuration.Secrets 1.2.2
Describe the bug
When deploying a dockerized linux app service to Azure, the deploy now always fails.
In Program.cs I've tried everything else I can to ensure the that AZURE_CLIENT_ID, AZURE_CLIENT_SECRET and AZURE_TENANT_ID are available as environment varaibles.  (Per https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/identity/Azure.Identity/TROUBLESHOOTING.md#troubleshoot-environmentcredential-authentication-issues
and https://github.com/Azure/azure-sdk-for-net/issues/17052
System.DllNotFoundException: Unable to load shared library 'libsecret-1.so.0' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibsecret-1.so.0: cannot open shared object file: No such file or directory    at Azure.Identity.LinuxNativeMethods.Imports.secret_schema_new
Seems to be just like
SharedTokenCacheCredential authentication fails in Azure.Identity on ubuntu #17052
Expected behavior
Can retrieve app secret using DefaultAzureCredentials , with environment variables set.
Actual behavior
Project is .net 6 latest Release versions of all related nugets, including Azure.Extensions.AspNetCore.Configuration.Secrets, which seems to have done two service release in a row recently.
This all seems to be related to (previous) regression in how Azure secrets are fetched when running in a linux docker containerized app service.
https://docs.microsoft.com/en-us/answers/questions/400036/containerizing-net-core-mvc-fails-with-missing-lib.html
Container startup fails. If I try and run locally in docker I'm able to catch exception:
{Azure.Identity.CredentialUnavailableException: EnvironmentCredential authentication unavailable. Environment variables are not fully configured. See the troubleshooting guide for more information. https://aka.ms/azsdk/net/identity/environmentcredential/troubleshoot
at Azure.Identity.CredentialDiagnosticScope.FailWrapAndThrow(Exception ex, String additionalMessage)
at Azure.Identity.EnvironmentCredential.GetTokenImplAsync(Boolean async, TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted[T](ValueTask`1 task)
at Azure.Identity.EnvironmentCredential.GetToken(TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Identity.DefaultAzureCredential.GetTokenFromSourcesAsync(TokenCredential[] sources, TokenRequestContext requestContext, Boolean async, CancellationToken cancellationToken)}
{Azure.Identity.CredentialUnavailableException: ManagedIdentityCredential authentication unavailable. Multiple attempts failed to obtain a token from the managed identity endpoint.
---> System.AggregateException: Retry failed after 4 tries. Retry settings can be adjusted in ClientOptions.Retry. (Connection refused (<IP_ADDRESS>:80)) (Connection refused (<IP_ADDRESS>:80)) (Connection refused (<IP_ADDRESS>:80)) (Connection refused (<IP_ADDRESS>:80))
---> Azure.RequestFailedException: Connection refused (<IP_ADDRESS>:80)
---> System.Net.Http.HttpRequestException: Connection refused (<IP_ADDRESS>:80)
---> System.Net.Sockets.SocketException (111): Connection refused
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
{Azure.Identity.CredentialUnavailableException: Azure CLI not installed
at Azure.Identity.AzureCliCredential.RequestCliAccessTokenAsync(Boolean async, TokenRequestContext context, CancellationToken cancellationToken)
at Azure.Identity.AzureCliCredential.GetTokenImplAsync(Boolean async, TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Identity.CredentialDiagnosticScope.FailWrapAndThrow(Exception ex, String additionalMessage)
at Azure.Identity.AzureCliCredential.GetTokenImplAsync(Boolean async, TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted[T](ValueTask1 task)    at Azure.Identity.AzureCliCredential.GetToken(TokenRequestContext requestContext, CancellationToken cancellationToken)    at Azure.Identity.DefaultAzureCredential.GetTokenFromSourcesAsync(TokenCredential[] sources, TokenRequestContext requestContext, Boolean async, CancellationToken cancellationToken)} {Azure.Identity.CredentialUnavailableException: PowerShell is not installed.    at Azure.Identity.AzurePowerShellCredential.CheckForErrors(String output)    at Azure.Identity.AzurePowerShellCredential.RequestAzurePowerShellAccessTokenAsync(Boolean async, TokenRequestContext context, CancellationToken cancellationToken)    at Azure.Identity.AzurePowerShellCredential.GetTokenImplAsync(Boolean async, TokenRequestContext requestContext, CancellationToken cancellationToken)    at Azure.Identity.CredentialDiagnosticScope.FailWrapAndThrow(Exception ex, String additionalMessage)    at Azure.Identity.AzurePowerShellCredential.GetTokenImplAsync(Boolean async, TokenRequestContext requestContext, CancellationToken cancellationToken)    at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted[T](ValueTask1 task)
at Azure.Identity.AzurePowerShellCredential.GetToken(TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Identity.DefaultAzureCredential.GetTokenFromSourcesAsync(TokenCredential[] sources, TokenRequestContext requestContext, Boolean async, CancellationToken cancellationToken)}
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Net.Sockets.Socket.g__WaitForConnectWithCancellation|277_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(HttpRequestMessage request)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation1.WaitWithCancellation(CancellationToken cancellationToken)    at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)    at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)    at System.Net.Http.HttpMessageHandlerStage.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)    at System.Net.Http.HttpMessageHandlerStage.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.SocketsHttpHandler.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.HttpMessageInvoker.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.HttpClient.Send(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)    at Azure.Core.Pipeline.HttpClientTransport.ProcessAsync(HttpMessage message, Boolean async)    --- End of inner exception stack trace ---    at Azure.Core.Pipeline.HttpClientTransport.ProcessAsync(HttpMessage message, Boolean async)    at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted(ValueTask task)    at Azure.Core.Pipeline.HttpClientTransport.Process(HttpMessage message)    at Azure.Core.Pipeline.HttpPipelineTransportPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.RequestActivityPolicy.ProcessNextAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)
at Azure.Core.Pipeline.RequestActivityPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.ResponseBodyPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)    at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted(ValueTask task)    at Azure.Core.Pipeline.ResponseBodyPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.LoggingPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.RedirectPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)
at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted(ValueTask task)
at Azure.Core.Pipeline.RedirectPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.RetryPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)
--- End of inner exception stack trace ---
at Azure.Core.Pipeline.RetryPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)    at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted(ValueTask task)    at Azure.Core.Pipeline.RetryPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.HttpPipelineSynchronousPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.HttpPipelineSynchronousPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.HttpPipelineSynchronousPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipeline.Send(HttpMessage message, CancellationToken cancellationToken)
at Azure.Identity.ManagedIdentitySource.AuthenticateAsync(Boolean async, TokenRequestContext context, CancellationToken cancellationToken)
at Azure.Identity.ImdsManagedIdentitySource.AuthenticateAsync(Boolean async, TokenRequestContext context, CancellationToken cancellationToken)
---> (Inner Exception #1) Azure.RequestFailedException: Connection refused (<IP_ADDRESS>:80)
---> System.Net.Http.HttpRequestException: Connection refused (<IP_ADDRESS>:80)
---> System.Net.Sockets.SocketException (111): Connection refused
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Net.Sockets.Socket.g__WaitForConnectWithCancellation|277_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(HttpRequestMessage request)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation1.WaitWithCancellation(CancellationToken cancellationToken)    at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)    at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)    at System.Net.Http.HttpMessageHandlerStage.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)    at System.Net.Http.HttpMessageHandlerStage.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.SocketsHttpHandler.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.HttpMessageInvoker.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.HttpClient.Send(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)    at Azure.Core.Pipeline.HttpClientTransport.ProcessAsync(HttpMessage message, Boolean async)    --- End of inner exception stack trace ---    at Azure.Core.Pipeline.HttpClientTransport.ProcessAsync(HttpMessage message, Boolean async)    at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted(ValueTask task)    at Azure.Core.Pipeline.HttpClientTransport.Process(HttpMessage message)    at Azure.Core.Pipeline.HttpPipelineTransportPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.RequestActivityPolicy.ProcessNextAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)
at Azure.Core.Pipeline.RequestActivityPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.ResponseBodyPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)    at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted(ValueTask task)    at Azure.Core.Pipeline.ResponseBodyPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.LoggingPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.RedirectPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)
at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted(ValueTask task)
at Azure.Core.Pipeline.RedirectPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.RetryPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)<---
---> (Inner Exception #2) Azure.RequestFailedException: Connection refused (<IP_ADDRESS>:80)
---> System.Net.Http.HttpRequestException: Connection refused (<IP_ADDRESS>:80)
---> System.Net.Sockets.SocketException (111): Connection refused
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Net.Sockets.Socket.g__WaitForConnectWithCancellation|277_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(HttpRequestMessage request)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation1.WaitWithCancellation(CancellationToken cancellationToken)    at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)    at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)    at System.Net.Http.HttpMessageHandlerStage.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)    at System.Net.Http.HttpMessageHandlerStage.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.SocketsHttpHandler.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.HttpMessageInvoker.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.HttpClient.Send(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)    at Azure.Core.Pipeline.HttpClientTransport.ProcessAsync(HttpMessage message, Boolean async)    --- End of inner exception stack trace ---    at Azure.Core.Pipeline.HttpClientTransport.ProcessAsync(HttpMessage message, Boolean async)    at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted(ValueTask task)    at Azure.Core.Pipeline.HttpClientTransport.Process(HttpMessage message)    at Azure.Core.Pipeline.HttpPipelineTransportPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.RequestActivityPolicy.ProcessNextAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)
at Azure.Core.Pipeline.RequestActivityPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.ResponseBodyPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)    at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted(ValueTask task)    at Azure.Core.Pipeline.ResponseBodyPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.LoggingPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.RedirectPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)
at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted(ValueTask task)
at Azure.Core.Pipeline.RedirectPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.RetryPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)<---
---> (Inner Exception #3) Azure.RequestFailedException: Connection refused (<IP_ADDRESS>:80)
---> System.Net.Http.HttpRequestException: Connection refused (<IP_ADDRESS>:80)
---> System.Net.Sockets.SocketException (111): Connection refused
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Net.Sockets.Socket.g__WaitForConnectWithCancellation|277_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(HttpRequestMessage request)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation1.WaitWithCancellation(CancellationToken cancellationToken)    at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)    at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)    at System.Net.Http.HttpMessageHandlerStage.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)    at System.Net.Http.HttpMessageHandlerStage.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.SocketsHttpHandler.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.HttpMessageInvoker.Send(HttpRequestMessage request, CancellationToken cancellationToken)    at System.Net.Http.HttpClient.Send(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)    at Azure.Core.Pipeline.HttpClientTransport.ProcessAsync(HttpMessage message, Boolean async)    --- End of inner exception stack trace ---    at Azure.Core.Pipeline.HttpClientTransport.ProcessAsync(HttpMessage message, Boolean async)    at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted(ValueTask task)    at Azure.Core.Pipeline.HttpClientTransport.Process(HttpMessage message)    at Azure.Core.Pipeline.HttpPipelineTransportPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.RequestActivityPolicy.ProcessNextAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)
at Azure.Core.Pipeline.RequestActivityPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.ResponseBodyPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)    at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted(ValueTask task)    at Azure.Core.Pipeline.ResponseBodyPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.LoggingPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)
at Azure.Core.Pipeline.HttpPipelinePolicy.ProcessNext(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.RedirectPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)
at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted(ValueTask task)
at Azure.Core.Pipeline.RedirectPolicy.Process(HttpMessage message, ReadOnlyMemory1 pipeline)    at Azure.Core.Pipeline.RetryPolicy.ProcessAsync(HttpMessage message, ReadOnlyMemory1 pipeline, Boolean async)<---
--- End of inner exception stack trace ---
at Azure.Identity.ImdsManagedIdentitySource.AuthenticateAsync(Boolean async, TokenRequestContext context, CancellationToken cancellationToken)
at Azure.Identity.ManagedIdentityClient.AuthenticateAsync(Boolean async, TokenRequestContext context, CancellationToken cancellationToken)
at Azure.Identity.ManagedIdentityCredential.GetTokenImplAsync(Boolean async, TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Identity.CredentialDiagnosticScope.FailWrapAndThrow(Exception ex, String additionalMessage)
at Azure.Identity.ManagedIdentityCredential.GetTokenImplAsync(Boolean async, TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted[T](ValueTask`1 task)
at Azure.Identity.ManagedIdentityCredential.GetToken(TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Identity.DefaultAzureCredential.GetTokenFromSourcesAsync(TokenCredential[] sources, TokenRequestContext requestContext, Boolean async, CancellationToken cancellationToken)}
{Azure.Identity.CredentialUnavailableException: Operating system Linux <IP_ADDRESS>-microsoft-standard-WSL2 #1 SMP Wed Mar 2 00:30:59 UTC 2022 isn't supported.
at Azure.Identity.VisualStudioCredential.GetTokenProviderPath()
at Azure.Identity.VisualStudioCredential.GetTokenImplAsync(TokenRequestContext requestContext, Boolean async, CancellationToken cancellationToken)
at Azure.Identity.CredentialDiagnosticScope.FailWrapAndThrow(Exception ex, String additionalMessage)
at Azure.Identity.VisualStudioCredential.GetTokenImplAsync(TokenRequestContext requestContext, Boolean async, CancellationToken cancellationToken)
at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted[T](ValueTask`1 task)
at Azure.Identity.VisualStudioCredential.GetToken(TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Identity.DefaultAzureCredential.GetTokenFromSourcesAsync(TokenCredential[] sources, TokenRequestContext requestContext, Boolean async, CancellationToken cancellationToken)}
{Azure.Identity.CredentialUnavailableException: Stored credentials not found. Need to authenticate user in VSCode Azure Account. See the troubleshooting guide for more information. https://aka.ms/azsdk/net/identity/vscodecredential/troubleshoot
---> System.DllNotFoundException: Unable to load shared library 'libsecret-1.so.0' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibsecret-1.so.0: cannot open shared object file: No such file or directory
at Azure.Identity.LinuxNativeMethods.Imports.secret_schema_new(String name, Int32 flags, String attribute1, Int32 attribute1Type, String attribute2, Int32 attribute2Type, IntPtr end)
at Azure.Identity.LinuxNativeMethods.secret_schema_new(String name, SecretSchemaFlags flags, String attribute1, SecretSchemaAttributeType attribute1Type, String attribute2, SecretSchemaAttributeType attribute2Type)
at Azure.Identity.LinuxVisualStudioCodeAdapter.GetLibsecretSchema()
at Azure.Identity.LinuxVisualStudioCodeAdapter.GetCredentials(String serviceName, String accountName)
at Azure.Identity.VisualStudioCodeCredential.GetStoredCredentials(String environmentName)
--- End of inner exception stack trace ---
at Azure.Identity.VisualStudioCodeCredential.GetStoredCredentials(String environmentName)
at Azure.Identity.VisualStudioCodeCredential.GetTokenImplAsync(TokenRequestContext requestContext, Boolean async, CancellationToken cancellationToken)
at Azure.Identity.CredentialDiagnosticScope.FailWrapAndThrow(Exception ex, String additionalMessage)
at Azure.Identity.VisualStudioCodeCredential.GetTokenImplAsync(TokenRequestContext requestContext, Boolean async, CancellationToken cancellationToken)
at Azure.Core.Pipeline.TaskExtensions.EnsureCompleted[T](ValueTask`1 task)
at Azure.Identity.VisualStudioCodeCredential.GetToken(TokenRequestContext requestContext, CancellationToken cancellationToken)
at Azure.Identity.DefaultAzureCredential.GetTokenFromSourcesAsync(TokenCredential[] sources, TokenRequestContext requestContext, Boolean async, CancellationToken cancellationToken)}
Reproduction Steps
Can't repro without azure resources I don't have. But happy to share more telemetry. Unfortunately, the service tier for this project precludes remote interactive debugging.
Environment
Azure App Service (.net 6) as linux docker, app is already registered (has app id and secret) on azure etc...

Thank you for your feedback.  Tagging and routing to the team members best able to assist.

Any suggestions on workarounds appreciated. Since this is deploy related issue, it's critical. I'm going to try stepping back on related nuget build versions in the interim. thanks @jsquire

Hi @dgerding  I'm sorry that you are encountering this issue. Could you clarify whether which package versions you were previously using where you were not encountering this problem?

Looking at this a bit further - I think the libsecret errors may not be related to the problem if your intention is to use the EnvironmentCredential. Are you able to validate from within the container that the environment variables are available to your app? For example:
foreach(var key in vars.Keys)
{
    Console.WriteLine($"{item}:{vars[item]}");
}

Problem resolved :) There were two problems: A typo in local declaration for the environment setting value AZURE_TENAN_ID. Fixing that got me past the libsecret error to another underlying problem: the azure app had not been granted the appropriate read permission. Everything working and seems to be "user error" not "library error".
Thanks!! @christothes


D1: allow binding 'true' and 'false' by converting to 1 or 0

Sadly there's no way when pulling the results out to stop SQLite returning 0 or 1 (since to it, a "boolean" is just a number: https://www.sqlite.org/datatype3.html), but at least this lets you use true and false to mean 1 or 0 (the way SQLite will allow you to use TRUE and FALSE).
This fixes https://github.com/cloudflare/workers-sdk/issues/3070

Hey @geelen, for my own selfish benefit, is there any associated timeline on this one? This is unfortunately preventing me from using boolean types in my models do to difficulties during deserialization (field is returned as a number and not a boolean, causing some incosistencies / incompatibilities with my frontend). Thanks! 😁

Is there any way of translating the results returned from SQLite based on the binding? Is the binding stored somewhere and could we potentially look the type up for translation? Primitive values like a b oolean seem fairly trivial to do this with, but obviously Dates might prove more difficult.
This kinda seems like a feature of an ORM on top of D1, but I feel like native boolean handling should be included in the native D1 implementation?
Keen to hear your thoughts.


Proper fixes for bufferizing LinalgExt ops that have non DPS operands.

There can be non DPS operands for LinalgExt ops, this is a more general fix that was landed in https://github.com/iree-org/iree/pull/11487

Thanks so much! Please wait for Matthias's review as I'm not competent on these files.

@matthias-springer , your review is needed here as Mahesh is away.

No delay at all. Thanks very much!


device: fix device descriptors URL

This PR changes deviceDescriptorsURL in the device/gen.go file because https://raw.githubusercontent.com/puppeteer/puppeteer/main/src/common/DeviceDescriptors.ts does not exist anymore.
The latest version of device descriptions is https://github.com/puppeteer/puppeteer/blob/main/packages/puppeteer-core/src/common/Device.ts. But, when I run go generate with const deviceDescriptorsURL = "https://raw.githubusercontent.com/puppeteer/puppeteer/main/packages/puppeteer-core/src/common/Device.ts" got error: could not find start. Looks like the file format was changed in the commit 87c08fd. So, I left the link to the latest valid commit f42336.

@ZekeLu looks like chromedp has flaky tests. Could you take a look at why tests are failing?

Hi @alexandear, thanks for the pull request!
Here is the failure:
testing.go:1090: TempDir RemoveAll cleanup: unlinkat /home/runner/work/_temp/TestRemoteAllocatorNoModifyURL281325479/001/Default: directory not empty

The issue is tracked by #1105. I don't know how to fix this issue. We can ignore it as of now.

got error: could not find start

The fix is easy. So I think it's better to fix it. Can you please copy the change from https://github.com/ZekeLu/chromedp/commit/1ad03d8cfaecbed2cfbd01b4475e83e517289340 to your pull request?

The fix is easy. So I think it's better to fix it. Can you please copy the change from https://github.com/ZekeLu/chromedp/commit/1ad03d8cfaecbed2cfbd01b4475e83e517289340 to your pull request?

@ZekeLu done


Using HostRegExp leads to passing wrong Host to service

Do you want to request a feature or report a bug?

Bug, version 2.0

What did you do?
Setup a docker service with multiple hosts using HostRegExp:

"traefik.http.routers.haproxy.rule=HostRegexp({subdomain:[a-z0-9.-]+}.dev.domain.tld, {subdomain:[a-zA-Z0-9-]+}.sub.domain.tld)"

also tried with:

"traefik.http.routers.haproxy.rule=HostRegexp(name1.{subdomain:[0-9]+}.dev.domain.tld, name2.{subdomain:[0-9]+}.dev.domain.tld)"

What did you expect to see?
Requests to reach the service with the correct (current) Host.
What did you see instead?
Accessing the address name1.55.dev.domain.tld reaches the service with the previous parsed name name1.72.dev.domain.tld
Output of traefik version: (What version of Traefik are you using?)

It's a docker swarm cluster

Hello, could try with 2 latest stable version (v2.1.1) instead of an old RC.

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


Issue #7410 Fixed

Issue Reference
#7410

fixed issue in related product of product page

@vijay-webkul
While editing the configuration of the cross-selling it is not changing at the customer end. Here admin configure
add an option to manage related products and upselling products in the configuration.

@vijay-webkul
Any update ?

Issue fixed


DEV-1181 - DEV-1188 -Allow users to interacts with projects and datasets without API keys

Introduction and Explanation
Essentially I have added another SshConfig which will allows the new DatasetManager and ProjectManager to use the reference of the UserConfig for SSH authentication.
Notes:

The new classes are called DatasetManager and ProjectManager. Calling them Dataset would lead to name clashes with the ORM class (also leading to potential backwards compatibility concerns) and would also be a bit of a confusing name if you think about operations like Dataset.get_dataset(). DatasetManager makes this more clear.
We now have the functionally equivalent EncordClientDataset and DatasetManager. We just have an alias and use one class in conjunction with the API keys and one with just getting the DatasetManager directly from the EncordUserClient. I personally find this a little bit confusing and would not mind keeping one EncordClientDataset around, but seems like @rad-cord and @justin-cord prefer the rename so please let confirm this change in this PR.
I have updated the docs - please check them out to see if it is as expected. I have left the docs for API keys but have made it very obvious that we encourage using the new DatasetManager and user_client.get_dataset_manager() etc.
You can now include the DatasetManager, ProjectManager, and EncordUserClient directly from the encord package.

JIRA
DEV-1181
Documentation
I need to update the SDK documentation.
Tests
I will update the SDK integration tests.
Known issues
Backwards compatibility constraints

DEV-1188

Have you explored the merging of the Dataset dict class and DatasetManager (formerly DatasetClient) into a Dataset which has both the static data fields and the manipulation methods? Similarly for the Project classes.

Have you explored the merging of the Dataset dict class and DatasetManager (formerly DatasetClient) into a Dataset which has both the static data fields and the manipulation methods? Similarly for the Project classes.
edit: It's on me not being clear but that's what I was thinking about with the whole 'rename the DatasetClient to Dataset' line.

Converting this PR to a draft to explore this idea further.

Closing this PR in favour of
#129
#130
#131

#136 is the new docs PR


Add a way to install RelmActions at app level

Otherwise, the only way to install actions at app level is the classic GIO API, and this API is not compatible with the menu! macro.

Is this what you're looking for: https://github.com/Relm4/relm4-template/blob/main/src/main.rs?

It would be, but it was deprecated since GLib 2.32: https://docs.gtk.org/gio/method.Application.set_action_group.html

Thanks for letting me know. ActionMap looks a lot better than the previous API, actually. I think this should be something that should be fixed until 0.6 is released (which is currently developed on the "next" branch).
Would you mind sending a PR? I'm currently working on other things, so it might take some time before I can look into this.


Test that PRs that break FreeBSD do not land

Let's just hope bors works...
r? @alexcrichton

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @alexcrichton (or someone else) soon.
If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.
Please see the contribution instructions for more information.

@bors: r+

:pushpin: Commit 9ec84dc5f9918ff68d3527847ad5d7d99e440a4e has been approved by alexcrichton

:hourglass: Testing commit 9ec84dc5f9918ff68d3527847ad5d7d99e440a4e with merge f03613516e3d50c1bfed83cafb911df201b8a5be...

:broken_heart: Test failed - checks-cirrus


Not able to generate html snapshot when it contains image url having mbcs characters

I am using the below html  and then taking a snapshot of it using rasterize.js. When I run this on windows (phantomjs version 1.9.8) it runs fine however when I try to run the same on linux (phantomjs 2.0.0.) the image does not come up in the snapshot showing instead a question mark.

I tried to do a curl -v http://www.iteye.com/upload/top_picture/0000/0073/想不过都难336.280.jpg
and below is the output just in case it is useful. I had redirected the image to a separate file.
* About to connect() to www.iteye.com port 80 (#0)
*   Trying <IP_ADDRESS>... connected
* Connected to www.iteye.com (<IP_ADDRESS>) port 80 (#0)
> GET /upload/top_picture/0000/0073/想不过都难336.280.jpg HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/<IP_ADDRESS> Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: www.iteye.com
> Accept: */*
>
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0< HTTP/1.1 200 OK
< Expires: Fri, 13 May 2016 10:47:25 GMT
< Cache-Control: max-age=31104000
< Content-Type: image/jpeg
< Accept-Ranges: bytes
< ETag: "2346873256"
< Last-Modified: Wed, 06 May 2015 03:15:26 GMT
< Content-Length: 35131
< Date: Tue, 19 May 2015 10:47:25 GMT
< Server: ITeye SERVER
<
{ [data not shown]
100 35131  100 35131    0     0  15270      0  0:00:02  0:00:02 --:--:-- 31706* Connection #0 to host www.iteye.com left intact

* Closing connection #0

Please suggest what should I do to make this work ?
I also tried using var setting { encoding: "utf8"}; but it did not make any difference.

The solution to the issue I am facing is using proxy server settings, however it is strange that curl worked without providing one but phantomjs requires it.


Knowledge distillation[Reimplementation]

Prerequisite

[X] I have searched Issues and Discussions but cannot get the expected help.
[X] I have read the FAQ documentation but cannot get the expected help.
[X] The bug has not been fixed in the latest version (master) or latest version (3.x).

💬 Describe the reimplementation questions
I used other people's code based on mmdetection for knowledge distillation(https://github.com/ggjy/DeFeat.pytorch). I trained a teacher model, but I encountered this error during distillation. What should I do?
2023-02-12 12:01:28,423 - mmdet - INFO - workflow: [('train', 1)], max: 12 epochs
kd_decay rate: 1.0
/home/micro/users/zjl/IDa-Det-main/mmdet/core/bbox/coder/delta_xywh_bbox_coder.py:159: UserWarning: This overload of addcmul is deprecated:
addcmul(Tensor input, Number value, Tensor tensor1, Tensor tensor2, *, Tensor out)
Consider using one of the following signatures instead:
addcmul(Tensor input, Tensor tensor1, Tensor tensor2, *, Number value, Tensor out) (Triggered internally at /opt/conda/conda-bld/pytorch_1607370172916/work/torch/csrc/utils/python_arg_parser.cpp:882.)
gx = torch.addcmul(px, 1, pw, dx) # gx = px + pw * dx
dict_keys(['cls_score', 'bbox_pred', 'bbox_targets', 'sampling', 'neck', 'backbone', 'img_metas', 'gt_bboxes', 'gt_labels'])
Traceback (most recent call last):
File "tools/train_entropy.py", line 206, in
main()
File "tools/train_entropy.py", line 194, in main
train_detector_entropy(
File "/home/micro/users/zjl/IDa-Det-main/mmdet/multi_distillation/detector_entropy.py", line 511, in train_detector_entropy
runner.run(data_loaders, cfg.workflow, cfg.total_epochs, kd_cfg=cfg.model.hint_adapt)
File "/home/micro/users/zjl/IDa-Det-main/mmcv-0.5.1/mmcv/runner/runner_kd.py", line 405, in run
epoch_runner(data_loaders[i], **kwargs)
File "/home/micro/users/zjl/IDa-Det-main/mmcv-0.5.1/mmcv/runner/runner_kd.py", line 303, in train
outputs = self.batch_processor(
File "/home/micro/users/zjl/IDa-Det-main/mmdet/multi_distillation/detector_entropy.py", line 211, in batch_processor_entropy
proposal_list_s = head_det_s['proposal_list']
KeyError: 'proposal_list'
Environment
mmdet 2.0.0, mmcv 0.5.1
Expected results
training successfully
Additional information
https://github.com/ggjy/DeFeat.pytorch

It seems that there are some key missing in the head_det_s, you might need to add a breakpoint in the file and see what is happening.

Your mmdet environment is 2.0.0,may I ask you that how can I get the specified version as 2.11.0. As I git the code following by readme, I can only download mmedt 2.28.1,which is the latset edition. Hope you can reply.

Your mmdet environment is 2.0.0,may I ask you that how can I get the specified version as 2.11.0. As I git the code following by readme, I can only download mmedt 2.28.1,which is the latset edition. Hope you can reply.

You can use  command git checkout v2.11.0.

OK, thank you, I will try.


fix issue 130

autodiscover works with INSTALLED_APPS like 'bot.apps.BotConfig' or 'bot'
fixes #130

Coverage decreased (-0.07%) to 76.704% when pulling 1d8af63f0f1084c7894d207756dc2911c1ec1cf3 on JnBrymn:master into e04d44c07110443bbdeb8cb14effbe497ddbb98d on arteria:master.

I had this issue and can confirm that this fix works for me.

Thanks, I'm using the fix from your repo as it seems quite dead around here.


#17: Fix firefox warning using invalid transform property as none

Also featuring:

Re-organize glitch layers so that the new order is [shake, pulse, ..slices] rather than [shake, ...slices, pulse]
Rename internal function mergeDeep to mergeOptions


Bumping up dependencies in baipp

I recently noticed that this action's workflows have been failing as the check command does not recognise metadata 2.3 (see reported https://github.com/pypa/twine/issues/1059).
As a minimum, it would be good to upgrade pkginfo to pkginfo>=1.10, as now hatchling and others are using metadata 2.3, so I anticipate a number of workflows starting to fail.
Also related: https://github.com/pypa/twine/issues/1070

That should be fixed by 2.0.2? I ran into the problem myself which is why I pushed it on short notice last week.

Hmmm 🤔 ah it's because I had to revert to v1 per my other issue on the artefacts name 😬😬 soz for the noise

Can you please check if https://github.com/hynek/build-and-inspect-python-package/releases/tag/1.5.5 fixes it for you until I get around to work on #92?

It works perfectly  🎉 thank you for the super quick fix.


i18n override for h2 { text-transform } suppresses .text--headline { text-transform }

this .lang-en modifier creates a text-transform selector (.lang-en h2) that is more specific than text--headline, which means that text-transform: none is overridden for pages in English
expected: text-transform: none should still apply to h2.text--headline on English-language pages

The uppercase treatment should be an embellishment for default h2 styles only; going to fix this by making .text--headline always set text-transform: none

fwiw it has been expressed to me that our translators  prefer that casing be part of the copy, as that makes the intent of the string clearer to translators.  I think ideally we should try to avoid language specific styles in our CSS.

We'll be updating typographic styles soon using the branding from S&W, which will not include any language-specific text transformations. The i18n-only and i18n-exclude mixins are currently only used as a fix for foundation styles that proved to be bad ideas in non-English languages.
My idea for the long term is to make those mixins private utilities on which we can build text direction helpers...
@mixin textDirection( $direction: "ltr" ) {
     ...
    @include i18n-only([languages using $direction]) {
         @content;
     }
     ...
}


[FEATURE] Support for vee-validate and other validators

Hello,
I am using vee-validate and it would be great if laravels validation file could be used for vee-validate messages.
It should be really easy to implement.
The only changes are the following:

single file for each locale
all {attribute} must be replaced with {field}
an extra file for validation rules for vee-validate, because they have the following structure:

const messages = {
  _default: (field) => `The ${field} value is not valid.`,
  in: (field) => `The ${field} field must be a valid value.`,
  //etc..
};

const locale = {
  name: 'en',
  messages,
  attributes: {}
};

export default locale

This is really great for custom rules, so you don't need to define those rules on server and also client side.
Let me know what you guys think.
Cheers,
Marco

Patches are welcome!
It would be great if you could help implement this functionality, since you are interested in having it :-)


Example code without infix operators

I'm struggling to understand the decoding example in the tests
    let decode: Js.Json.t => Belt.Result.t(t, string) =
      json => {
        make
        <$> JD.intFor("userId", json)
        <*> JD.intFor("id", json)
        <*> JD.stringFor("title", json)
        <*> JD.boolFor("completed", json)
        |> Relude.Result.fromValidation
        |> Relude.Result.mapError(_ => "Decode failed");
      };

Would this be equal to the following?
let decode: Js.Json.t => Belt.Result.t(t, string) =
      json => {
        make
        |> map(JD.intFor("userId", json))
        |> ap(JD.intFor("id", json))
        |> ap(JD.stringFor("title", json))
        |> ap(JD.boolFor("completed", json))
        |> Relude.Result.fromValidation
        |> Relude.Result.mapError(_ => "Decode failed");
      };

With some direction, I'd be glad to open a PR adding examples sans infix operators. It would be nice to able to see the two versions side by side for mere mortals like I.

This is a bit of a weird one, because the "prefix" version of <$> expects the make function to be its first argument, which it will partially apply to the decoded value e.g. map(make, JD.intFor(...)). Then it will pass what's left of the make function as the first argument to <*>, etc. Expanded out, this means things get very nest-y without infix functions:
ap(
  ap(
    map(make, JD.intFor("userId", json)),
    JD.intFor("id", json)
  ),
  JD.stringFor("title", json)
)

However! The special -> operator, of all things, might be useful here because it sends the thing on the left (the make function in this case) into the first slot. I haven't actually tried this, but make->map(...)->ap(...)->ap(...) seems like it should work.
Alternatively, bs-decode's pipeline (inspired by Elm and built around a flipped version of ap), can be used to avoid the infix functions. Or for a small example like this, maybe it makes sense to just use Result.map4. Eventually the new let syntax will get merged and we can avoid all of this. :slightly_smiling_face:

Interesting. For some reason I was under the impression that JD decoders is specific to using IO which seemingly isn't the case. I'm using bs-decode in my project currently, so I'll go on using that one.
Would you be interested in a PR that adds a bs-decode example to the README (or wherever else you prefer)?

Just to add to what @mlms13 said, and to provide more background:
The JD stuff is using the Validation type, not IO. Validation is an functor/applicative/monad just like all the others, so it works with the usual map/apply/bind and <$>/<*>/>>= operators the same as everything else (IO, Result, etc.). The bs-decode type follows the same pattern, so this wouldn't behave fundamentally differently for bs-decode in terms of the low-level map/apply/<$>/<*> piping semantics. However bs-decode offers a more streamlined API, which does allow for use with |>, because it basically flips the order of arguments for apply so that it works better with |>.
https://github.com/mlms13/bs-decode/blob/master/src/DecodeBase.re#L210
<$> is just an alias for let map: ('a => 'b, t('a)) => t('b)
<*> is an alias for let apply: (t('a => 'b), t('a)) => t('b)
so make <$> someApplicativeValue is the same as map(make, someApplicativeValue), so like @mlms13, if you wanted to use piping, you'd need to use -> rather than |> in this example, like make -> map(someApplicativeValue), so the make function is injected as the first argument.
You could use flipped versions of map and apply, and that would work with |>.
Anyway, the point of these tests isn't really to demonstrate how applicative-style decoding works, so maybe it would be best to just take this out of the tests, and just focus on the fetch calls. For usage of bs-decode, it would be better to refer to the docs in bs-decode. That said, I think it's worth the time to learn how <$>/<*> works, because that's a pattern you'll see often in the more powerful FP languages, and it's also the same general pattern as many parsing/decoding libraries.

Thanks for the clarification guys :)
I intend to learn more about infix and figured a side by side example would help. If there's anything I could do to help with documentation, just point it out and I'll open a PR.


[Enhancement] Change 'Consumer' to something unique

Hey there,
I'm trying to circumvent some limitations posed by Riverpod with this package and so far it seems I'm having huge success using both in conjunction. Great!
One thing, however, is a little bit annoying: The name of the Consumer mixin. It clashes with the one of Riverpod and in general I think calling something library specific with something generic is a bad idea (i mean the same applies for Riverpod...)
I know the solution for this is to simply "import as" but I think this can be avoided - first and foremost because it is another thing that has to be maintained throughout the code, probably.
I suggest adding a prefix to these mixins/interfaces like for example "Mq" so it's "MqConsumer". Of course this would be a breaking change but at the current stage perfectly manageable.

Hi there @Neuroquila-n8fall,
Thanks for opening an issue.
After giving it some thought, a better name would be ConsumerMixin, since it's a mixin not an object.
This has been added in v1.1.0, and Consumer shall be removed completely in v2.0.0.


ADBDEV-6393: Fix explain analyze duplicate SubPlans handling

Fix explain analyze duplicate subplans handling
Due to some optimizations it is possible to have several SubLinks using the
same SubPlan. Because of how SubPlans are processed during EXPLAIN ANALYZE
statistics depositing, that caused each duplicated SubPlan to be visited
multiple times, triggering an assert. This patch fixes the issue by skipping
processing slices that have already been processed.
Because of an existing "kludge", it is expected for slice 0 to be visited
multiple times during some queries, creating new "slices" for each visit.
Therefore, slice deduplication should only be applied to non-zero slices.

I think the description should reflect the fact that the problem is currenlty found for Postgres optimizer.


SIMSBIOHUB-466: Add Observation Measurement Columns

Links to Jira Tickets
SIMSBIOHUB-466
Description of Changes
Many updates to the Observation Table components and related components

Support for adding, removing, hiding, and populating measurement columns.
New database tables + related service/repo

When creating an observation record, a new subcount record is also created.
Addressed a handful of dependency array warnings and "update a component while rendering another" warnings
Some misc package updates + related fixes.
Pending Critterbase updates
Wire up the stubbed calls to Critterbase, once its new endpoints are ready.
TODOs for another ticket
Update the telemetry datagrid components/tables to use the latest updates from the survey observations components.
Fix the 3-4 app tests that started to fail (probably a side effect of package updates?) I tried fixed them but was making no progress, so they are skipped for now. They are all related to trying to capture select box clicks, which is historically tricky.
Testing Notes
Observations table works as expected, when adding and removing observations with and without measurement columns.

Codecov Report
Attention: Patch coverage is 12.41915% with 677 lines in your changes are missing coverage. Please review.

Project coverage is 55.45%.  Consider uploading reports for the commit b7cd024 to get more accurate results

Files
Patch %
Lines

app/src/contexts/observationsTableContext.tsx
0.90%
110 Missing :warning:

.../grid-column-definitions/GridColumnDefinitions.tsx
10.52%
102 Missing :warning:

...able/configure-table/ConfigureColumnsContainer.tsx
0.00%
50 Missing :warning:

...urements/search/MeasurementsSearchAutocomplete.tsx
0.00%
34 Missing :warning:

api/src/middleware/critterbase-proxy.ts
0.00%
29 Missing :warning:

api/src/services/observation-service.ts
22.85%
27 Missing :warning:

api/src/repositories/subcount-repository.ts
25.00%
24 Missing :warning:

app/src/hooks/useContext.tsx
20.00%
24 Missing :warning:

.../observations-table/ObservationsTableContainer.tsx
0.00%
23 Missing :warning:

...ervations/observations-table/ObservationsTable.tsx
0.00%
22 Missing :warning:

... and 42 more

Additional details and impacted files
@@            Coverage Diff             @@
##              dev    #1213      +/-   ##
==========================================
- Coverage   56.43%   55.45%   -0.99%
==========================================
  Files         576      593      +17
  Lines       17626    17994     +368
  Branches     2745     2765      +20
==========================================
+ Hits         9948     9979      +31
- Misses       7014     7355     +341
+ Partials      664      660       -4

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

@al-rosenthal

Ran into a few issues when testing this locally: Validation Banner doesn't show

I think this is an existing issue. It seems that we only validate the sampling columns if at least one of them is populated, probably to do with the observation import maybe? The comments in that code talk about not validating sampling columns if its an incidental observation.

Hiding newly added columns

I fixed a few issues with the visibility controls. I think it should be happy now.

Deleting Columns from measurement popup

Yeah this is a more interesting issue. The problem is that the measurement data is still part of the row data, and just with the way the useEffect is set up right now, when you remove all measurement columns it re-loads the columns from the existing data, hence those columns showing up again suddenly.  There should be a fix, but to date we only ever do row based deletes, so ill have to poke at it.

@al-rosenthal

Retested this and saw something else:

Should be fixed. Was not resetting the row modes model on discard


Fix CI workflow file

The final step didn't include the Clippy and format tests. So even if those failed, PRs could get merged anyway. This now depends on all steps.
Also, the cancel-workflow-action is no longer necessary, as stated in the README of the workflow. GHA has implemented this feature by now.
Also removes the check step, as the final test didn't depend on it, it didn't use -Dwarnings, and this is also covered by the clippy step.
This should now fail CI in the PR, as the clippy check currently fails.

To test this, the workflow file changes need approval first.

Nice fixes, thank you!
Do you want to do also fix the clippy lint in this PR?

 Just wanted to make sure, that the PR CI now actually fails.
Pushed the commit. Workflow needs re-approval by you. But this time it should pass.

Looks like the MSRV needs to be bumped, as well (which is fine).

Bumped it to 1.65.0, instead of 1.64, what Clippy wanted. 1.65.0 is the MSRV for the latest opentelemetry versions. I'm still planning to update those deps soon :)


Use Google Maps in iOS

I have installed react-native-maps library and successfully used map in my project. In android it is using Google Maps but in ios it's using MapKit (I think). So now how do I use Google Maps in ios iPhone device too. Please help

The docs are bad and barely work @alvelig

@jeffreymendez1993 feel free to raise a PR with better docs 😉
Thats why we're a community.

@rborn Thanks will do. I probably should not have said bad but instead could use more detail to eliminate the install part. After a couple hours of being frustrated my mind was warped and I am just over here like this is CRAP since I have installed Gmaps on iOS on multiple projects using this library haha!. Ill try to be more insightful and contribute instead of roaring and barking.

I hame problem with "!Unknown type name 'RCTBubblingEventBlock'"... Does Anybody Know The Solution To This Problem?


Can I do an app ui for students to upload notes and get others notes ?

This app will contain ui and features like to browse and upload notes + Firebase integration (by own keys)

sure you can make sure the UI contains 4-5 screens to considered a valid PR

I have completed the project should i request a PR ?


openssl verify can't handle \n line endings, needs \r\n

Create a file with a single line:
echo "This is a test" > testfile
Generate a signature:
openssl smime -sign -in testfile -signer yourpem.PEM -inkey yourkey.KEY -outform PEM -out FS.testfile
Verify the signature:
openssl smime -verify -in FS.testfile -inform PEM -content testfile -noverify -certfile yourpem.PEM
output:
This is a test
Verification failure
140104353458064:error:21071065:PKCS7 routines:PKCS7_signatureVerify:digest failure:pk7_doit.c:1108:
140104353458064:error:21075069:PKCS7 routines:PKCS7_verify:signature failure:pk7_smime.c:400:

Change the line ending:
unix2dos testfile
Verify the signature:
openssl smime -verify -in FS.testfile -inform PEM -content testfile -noverify -certfile yourpem.PEM
output:
This is a test
Verification successful

Tested on CentOS 7 with:
OpenSSL 3.0.8 7 Feb 2023 (Library: OpenSSL 3.0.8 7 Feb 2023)
OpenSSL 1.0.2k-fips  26 Jan 2017

One option is to use -binary option with the openssl smime -sign command. @DDvO was trying to fix the line ending handling in cms, not sure if smime was also affected by these changes - most probably not.

I think @DDvO 's fix was rolled back by me as it was basically "Let's read the file twice, once for finding out the text/binary mode and the 2nd for the operation".

Also have you tried the cms utility? Or that does not work for you at all?

@t8m The first development tests using smime (as advised by the remote service integration guide...) were with a fixed file generated on Windows followed by integration tests using files generated on Linux, the verification step failure baffled me so much I started digging for a root cause, finding it gave a clear reason & a quick workaround.
High fives and drinks at 3PM.

Does everything work properly if you use DOS line ending? As far as I know, smime requires it.

@kroeckx Yes, adding them fixes it. It seems the S/MIME spec stipulates lines should always end with <CR><LF> characters and so does the openssl smime man page underneath -binary so we could argue it's not actually a bug as it works when input file adheres to the S/MIME spec, I think we were thrown off course when sign worked but verify didn't.

I would still think this is a bug when sign apparently implicitly adds the CRs when it computes the signature, to not add them appropriately as well when verify is called.


Change windows builds to VC 2015

As the build tools VC 2015 are now free to use inside the DLR, we should switch now our build tools to this platform.
This includes also generating all 3rd party dependencies to VC 2015 including:

[x] OpenCASCADE / OCE
[x] Freetype
[x] Freeimage
[x] Qt (needs to be downloaded / is already shipped on appveyor)
[x] TiXI
[x] libxml2
[x] libxslt
[x] libcurl

The compiled binaries of OpenCASCADE should be uploaded to https://sourceforge.net/projects/tigl/files/Thirdparty/
Also, we need to adapt the CI:

[ ] Jenkins
[x] Appveyor

The Jenkins builds should be switched not before TiGL Release 2.2.1.

@rainman110 When trying to build the Matlab bindings with VC2015 I get an error because of these lines:
https://github.com/DLR-SC/tigl/blob/9022b1c913bed88a1dd582d058f679088db652de/bindings/bindings_generator/matlab_cheader.in#L19-L24
Changing them to
/* Visual Studio C macros */
#ifdef _MSC_VER
  #define _CRT_SECURE_NO_WARNINGS
  #pragma warning(disable: 4090)
  #if ( _MSC_VER < 1900 )
    #define snprintf _snprintf
  #endif
#endif

according to this forum entry
https://stackoverflow.com/questions/27754492/vs-2015-compiling-cocos2d-x-3-3-error-fatal-error-c1189-error-macro-definiti
fixes the compiler error. Should I open a seperate issue and a PR for this?

Have a look into the Tixi repo and change it as it is done there:
https://github.com/DLR-SC/tixi/blob/master/bindings/bindings_generator/matlab_cheader.in

The release build pipeline works now completely on Travis and Appveyor. We don't use Jenkins anymore. Therefore, I close this issue.


Test case -> <IP_ADDRESS>     Application name and description cannot contain non-english characters (chineese)

This is the expected behavior.


wrong message in plugins page

i've redmine 3.4.x, in plugins page lightbox2 shows there is an update (0.5.0) but last supported version is 0.4.4

That's unfortunately an issue with the Redmine Plugin Repository, but let me explain:
I maintain different versions of this plugin for different Redmine versions:

v0.4.x is for Redmine 3.4 and below
v0.5.x is for Redmine 4.x

Now if I mark v0.5.x only compatible with Redmine 4.x, the Redmine Plugin Repository is not able to tell, that other versions of the plugin still are compatible with Redmine 3.4. That's why I have to mark ALL compatible redmine versions in the Plugin Repo for the latest release.
The Plugin update check in the admin area can't distinguish either.
I'm sorry, this is best I can do.

exactly, but in redmine 3.4.11 > admin > plugin it says that there is a new version for 0.4.4

Yes. If you hover the update info it says there is 0.5.0 as an update. And that's because I have to label 0.5.0 as compatible with Redmine 3.4 although you'd have to use 0.4.4


iplRotateAmbisonicsAudioBuffer no effect on audio data.

Hi,
I'm developing gstreamer plugin based on phonon C API, I created 1st order test file that I'm able to play using iplApplyAmbisonicsBinauralEffect and it gets rendered properly, but if I try to rotate the the ambisonics data using: iplRotateAmbisonicsAudioBuffer  before i apply the effect nothing happens to the data in the output buffer (tried both in place rotation and separate in and out buffers, rotator is initialized and rotation set). What I do looks more or less like:
//once at beginning:
iplCreateBinauralRenderer
iplCreateAmbisonicsBinauralEffect
iplCreateAmbisonicsRotator
//each time the viewer moves/rotates
iplSetAmbisonicsRotation    // the quat is normalized.
//on each audio frame:
iplRotateAmbisonicsAudioBuffer
iplApplyAmbisonicsBinauralEffect
I tried rotation in each axis but it looks like the data remains untouched.
many thanks in advance
mecowhy

@mecowhy The overall sequence of calls looks fine, but more details would help. Can you provide more of the actual code where you're using the Steam Audio API to do Ambisonics rotation? Thanks.

@lakulish thanks for quick response,
I'll prepare some extract from my code that compiles and demonstrates the issue.

`
#include
#include
#include
#include
#include
#include <phonon.h>
#include
#include
#define AMBISONICS_ORDER 1
#define TestChannels 4	//1 order ambisonics
#define TestSamples 100
#define TestDataSize  TestSamplesTestChannels4
#define M_PI 3.14f
#define RAD(x) x*M_PI/180.f
//https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles#Source_Code
IPLQuaternion toQuaternion(double pitch, double roll, double yaw)
{
IPLQuaternion q;
double t0 = cos(yaw * 0.5);
double t1 = sin(yaw * 0.5);
double t2 = cos(roll * 0.5);
double t3 = sin(roll * 0.5);
double t4 = cos(pitch * 0.5);
double t5 = sin(pitch * 0.5);
q.w = t0 * t2 * t4 + t1 * t3 * t5;
q.x = t0 * t3 * t4 - t1 * t2 * t5;
q.y = t0 * t2 * t5 + t1 * t3 * t4;
q.z = t1 * t2 * t4 - t0 * t3 * t5;
return q;

}
double normQuaternion(IPLQuaternion q)
{
return sqrt(q.wq.w + q.xq.x + q.yq.y + q.zq.z);
}
IPLQuaternion normalizeQuaternion(IPLQuaternion q)
{
double norm = normQuaternion(q);
IPLQuaternion result;
result.w = q.w / norm;
result.x = q.x / norm;
result.y = q.y / norm;
result.z = q.z / norm;
return result;
}
IPLQuaternion toQuaternionFromDeg(double pitch, double roll, double yaw)
{
return normalizeQuaternion(toQuaternion(RAD(pitch), RAD(roll), RAD(yaw)));
}
int main(int argc, char** argv)
{
//setup input format.
IPLAudioFormat ambisonics;
ambisonics.channelLayoutType = IPL_CHANNELLAYOUTTYPE_AMBISONICS;
ambisonics.channelOrder = IPL_CHANNELORDER_INTERLEAVED;
ambisonics.numSpeakers = 4;
ambisonics.ambisonicsOrder = AMBISONICS_ORDER;
ambisonics.ambisonicsOrdering = IPL_AMBISONICSORDERING_ACN;
ambisonics.ambisonicsNormalization = IPL_AMBISONICSNORMALIZATION_SN3D;
IPLhandle rotator{ nullptr };
IPLerror rotatorError = iplCreateAmbisonicsRotator(AMBISONICS_ORDER, &rotator);

IPLAudioBuffer inBuffer, outBuffer;

//prepare input buffer
inBuffer.format = ambisonics;
inBuffer.numSamples = TestSamples;
inBuffer.interleavedBuffer = (IPLfloat32*)malloc(TestDataSize);

//generate some random data
srand(static_cast <unsigned> (time(0)));
for (auto i = 0; i < TestSamples; i++)
{
	inBuffer.interleavedBuffer[i] = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
}

//prepare output buffer
outBuffer.format = ambisonics;
outBuffer.numSamples = TestSamples;
outBuffer.interleavedBuffer = (IPLfloat32*)malloc(TestDataSize);
memset(outBuffer.interleavedBuffer, 0, TestDataSize);

//compute some rotation quat
IPLQuaternion rotation = toQuaternionFromDeg(90.0f,90.0f,90.0f);

//set rotation to rotator.
iplSetAmbisonicsRotation(rotator, rotation);

//apply rotation to input buffer
iplRotateAmbisonicsAudioBuffer(rotator, inBuffer, outBuffer);

//check the result.
for (auto i = 0; i < TestSamples; i++)
{
	if(inBuffer.interleavedBuffer[i]!= outBuffer.interleavedBuffer[i] && outBuffer.interleavedBuffer[i]!=0)
		printf("RotationWorks! \n");
}

//cleanup
free(inBuffer.interleavedBuffer);
free(outBuffer.interleavedBuffer);
iplDestroyAmbisonicsRotator(&rotator);
return 0;

}
`
ok there it is, no change in output buffer.
the example is minimal but from what I understand it should be enough, the rotation of ambisnonics data doesn't depend on renderer, output (from renderer) format etc, what should really matter is:

ambisonics order  (channelNumber)
channel ordering
buffer length
angle (quat) of rotation.

many thanks in advance
PhononRotatorTest.zip

@mecowhy Thanks, this helps. Can you try changing the Ambisonics normalization to IPL_AMBISONICSNORMALIZATION_N3D and testing whether that causes the output buffer to change?

@lakulish nope, no still no change.
I updated a demo code a bit:
#include <algorithm>
#include <fstream>
#include <iterator>
#include <vector>
#include <random>
#include <phonon.h>
#include <cstdlib>
#include <ctime>

#define AMBISONICS_ORDER 1
#define TestChannels 4	//1 order ambisonics
#define TestSamples 100
#define TestDataSize  TestSamples*TestChannels*4
#define M_PI 3.14f
#define RAD(x) x*M_PI/180.f

//https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles#Source_Code
IPLQuaternion toQuaternion(double pitch, double roll, double yaw)
{
	IPLQuaternion q;
	double t0 = cos(yaw * 0.5);
	double t1 = sin(yaw * 0.5);
	double t2 = cos(roll * 0.5);
	double t3 = sin(roll * 0.5);
	double t4 = cos(pitch * 0.5);
	double t5 = sin(pitch * 0.5);

	q.w = t0 * t2 * t4 + t1 * t3 * t5;
	q.x = t0 * t3 * t4 - t1 * t2 * t5;
	q.y = t0 * t2 * t5 + t1 * t3 * t4;
	q.z = t1 * t2 * t4 - t0 * t3 * t5;
	return q;
}

double normQuaternion(IPLQuaternion q)
{
	return sqrt(q.w*q.w + q.x*q.x + q.y*q.y + q.z*q.z);
}

IPLQuaternion normalizeQuaternion(IPLQuaternion q)
{
	double norm = normQuaternion(q);
	IPLQuaternion result;
	result.w = q.w / norm;
	result.x = q.x / norm;
	result.y = q.y / norm;
	result.z = q.z / norm;
	return result;
}

IPLQuaternion toQuaternionFromDeg(double pitch, double roll, double yaw)
{
	return normalizeQuaternion(toQuaternion(RAD(pitch), RAD(roll), RAD(yaw)));
}

int main(int argc, char** argv)
{
	//setup input format.
	IPLAudioFormat ambisonics;
	ambisonics.channelLayoutType = IPL_CHANNELLAYOUTTYPE_AMBISONICS;
	ambisonics.channelOrder = IPL_CHANNELORDER_INTERLEAVED;
	ambisonics.numSpeakers = 4;
	ambisonics.ambisonicsOrder = AMBISONICS_ORDER;
	ambisonics.ambisonicsOrdering = IPL_AMBISONICSORDERING_ACN;
	ambisonics.ambisonicsNormalization = IPL_AMBISONICSNORMALIZATION_SN3D;

	//create rotator
	IPLhandle rotator{ nullptr };
	IPLerror rotatorError = iplCreateAmbisonicsRotator(AMBISONICS_ORDER, &rotator);

	//allocate memory for input and output buffers.
	IPLfloat32* inData = (IPLfloat32*)malloc(TestDataSize);
	IPLfloat32* outData = (IPLfloat32*)malloc(TestDataSize);
	memset(outData, 0, TestDataSize);

	//generate some random data
	srand(static_cast <unsigned> (time(0)));
	for (auto i = 0; i < TestDataSize/4; i++)
	{
		inData[i] = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
	}

	IPLAudioBuffer inBuffer, outBuffer;

	//prepare input buffer
	inBuffer.format = ambisonics;
	inBuffer.numSamples = TestSamples;
	inBuffer.interleavedBuffer = inData;
	inBuffer.deinterleavedBuffer = &inData;

	//prepare output buffer
	outBuffer.format = ambisonics;
	outBuffer.numSamples = TestSamples;
	outBuffer.interleavedBuffer = outData;
	outBuffer.deinterleavedBuffer = &outData;

	//compute some rotation quat
	IPLQuaternion rotationQuat = toQuaternionFromDeg(90.0f,90.0f,90.0f);

	//set rotation to rotator.
	iplSetAmbisonicsRotation(rotator, rotationQuat);

	//apply rotation to input buffer
	iplRotateAmbisonicsAudioBuffer(rotator, inBuffer, outBuffer);

	//check the result.
	for (auto i = 0; i < TestSamples; i++)
	{
		if(inData[i]!= outData[i] && outData[i]!=0)
			printf("RotationWorks! \n");
	}

	//cleanup
	free(inData);
	free(outData);
	iplDestroyAmbisonicsRotator(&rotator);
	return 0;
}

I'm also seeing null/odd behaviour with iplRotateAmbisonicsAudioBuffer. With the code below, the rotation effect has no effect whatsoever on the output buffer, regardless what the quaternion is set to.
However I also noticed in the comments for iplRotateAmbisonicsAudioBuffer() it states that the input and output buffers can be the same, so I tried that too (#define RE_USE_INPUT_BUFFER). In that case, what I get is silence, unless my framesize is 64 samples, in which case I get a horribly loud pulse wave.
double samplerate = 44100;
int framesize = 512;

IPLContext context;
IPLRenderingSettings settings;
IPLHrtfParams hrtf_params;
IPLAudioFormat input_format;
IPLAudioFormat hrtf_format;

IPLhandle binaural_renderer = 0;
IPLhandle ambisonic_hrtf_effect = 0;
IPLhandle ambisonic_rotator = 0;

IPLfloat32 * source_buffer;
IPLfloat32 * rotated_buffer;
IPLfloat32 * output_buffer;

float quat[4];

void setup() {
	settings.convolutionType = IPL_CONVOLUTIONTYPE_PHONON;
	settings.frameSize = framesize;
	settings.samplingRate = samplerate;

	hrtf_params.type = IPL_HRTFDATABASETYPE_DEFAULT; // or CUSTIOM
	hrtf_params.hrtfData = 0;	// Must be NULL.

	// binaural
	if (IPL_STATUS_SUCCESS != iplCreateBinauralRenderer(context, settings, hrtf_params, &binaural_renderer)) {
		error(0, "failed to create binaural renderer");
		return;
	}

	input_format.ambisonicsOrder = 1;
	input_format.numSpeakers = 4;
	input_format.channelLayoutType = IPL_CHANNELLAYOUTTYPE_AMBISONICS;
	input_format.channelOrder = IPL_CHANNELORDER_INTERLEAVED;
	input_format.ambisonicsOrdering = IPL_AMBISONICSORDERING_FURSEMALHAM;
	input_format.ambisonicsNormalization = IPL_AMBISONICSNORMALIZATION_N3D;

	hrtf_format.channelLayoutType	= IPL_CHANNELLAYOUTTYPE_SPEAKERS;
	hrtf_format.channelLayout		= IPL_CHANNELLAYOUT_STEREO;
	hrtf_format.numSpeakers			= 2;
	hrtf_format.channelOrder		= IPL_CHANNELORDER_INTERLEAVED;

	if (IPL_STATUS_SUCCESS != iplCreateAmbisonicsBinauralEffect(binaural_renderer,
																input_format,
																hrtf_format,
																&ambisonic_hrtf_effect)) {
		error(0, "failed to create Ambisonics HRTF effect");
		return;
	}

	if (IPL_STATUS_SUCCESS != iplCreateAmbisonicsRotator(input_format.ambisonicsOrder, &ambisonic_rotator)) {
		error(0, "failed to create Ambisonics rotator effect");
		return;
	}

	// allocate buffers
	source_buffer = new float[4096 * 4];
	rotated_buffer = new float[4096 * 4];
	output_buffer = new float[4096 * 2];

	// a 90' rotation around X:
	quat[0] = quat[3] = 0.707;
	quat[1] = quat[2] = 0.;
}

void perform64(double **ins, long numins, double **outs, long numouts, long sampleframes) {

	IPLAudioBuffer inbuffer;
	inbuffer.format = input_format;
	inbuffer.numSamples = sampleframes;
	inbuffer.interleavedBuffer = source_buffer;

	IPLAudioBuffer rotbuffer;
	rotbuffer.format = input_format;
	rotbuffer.numSamples = sampleframes;
	rotbuffer.interleavedBuffer = rotated_buffer;

	IPLAudioBuffer outbuffer;
	outbuffer.format = hrtf_format;
	outbuffer.numSamples = sampleframes;
	outbuffer.interleavedBuffer = output_buffer;

	// copy input:
	{
		t_double * src0 = ins[0];
		t_double * src1 = ins[1];
		t_double * src2 = ins[2];
		t_double * src3 = ins[3];
		IPLfloat32 * dst = source_buffer;
		int n = sampleframes;
		while (n--) {
			*dst++ = *src0++;
			*dst++ = *src1++;
			*dst++ = *src2++;
			*dst++ = *src3++;
		}
	}

	IPLQuaternion q; // xyzw format
	q.x = quat[0];
	q.y = quat[1];
	q.z = quat[2];
	q.w = quat[3];
	iplSetAmbisonicsRotation(ambisonic_rotator, q);

#ifdef RE_USE_INPUT_BUFFER
	iplRotateAmbisonicsAudioBuffer(ambisonic_rotator, inbuffer, inbuffer);
	iplApplyAmbisonicsBinauralEffect(ambisonic_hrtf_effect, inbuffer, outbuffer);
#else
	iplRotateAmbisonicsAudioBuffer(ambisonic_rotator, inbuffer, rotbuffer);
	iplApplyAmbisonicsBinauralEffect(ambisonic_hrtf_effect, rotbuffer, outbuffer);
#endif
	// copy output:
	{
		IPLfloat32 * src = output_buffer;
		t_double * dst0 = outs[0];
		t_double * dst1 = outs[1];
		int n = sampleframes;
		while (n--) {
			*dst0++ = *src++;
			*dst1++ = *src++;
		}
	}
}

@mecowhy Ah, I didn't notice this the last time around, but it looks like you're using IPL_CHANNELORDER_INTERLEAVED. Can you switch to IPL_CHANNELORDER_DEINTERLEAVED and try again?
@grrrwaaa There seem to be two separate issues here. For the rotation, try using IPL_CHANNELORDER_DEINTERLEAVED, IPL_AMBISONICSORDERING_ACN, and IPL_AMBISONICSNORMALIZATION_N3D for your input buffer. For the loud noise at 64 samples, that seems to be an issue with the Ambisonics binaural effect, which we are now working on reproducing.
We will update the documentation for Ambisonics rotation to better indicate what Ambisonics settings are supported.

Is there any definitive documentation on what combinations of channelOrder, ambisonicOrdering, and ambisonicNormalization are supported in order for iplRotateAmbisonicsAudioBuffer() to work?
Is there any other combination besides  IPL_CHANNELORDER_DEINTERLEAVED, IPL_AMBISONICSORDERING_ACN, and IPL_AMBISONICSNORMALIZATION_N3D  that works for the input buffer?

@MarcelInTO At the moment, the only supported combination is IPL_CHANNELORDER_DEINTERLEAVED, IPL_AMBISONICSORDERING_ACN, and IPL_AMBISONICSNORMALIZATION_N3D for the input buffer. You can use iplConvertAudioBufferFormat to convert between different Ambisonics orderings and normalizations, and iplDeinterleaveAudioBuffer to convert from interleaved to deinterleaved.

@lakulish so iplRotateAmbisonicsAudioBuffer  works (input and output) only on IPL_CHANNELORDER_DEINTERLEAVED format right ? so assuming I have IPL_CHANNELORDER_INTERLEAVED on both ends I have to:

iplConvertAudioBufferFormat  IPL_CHANNELORDER_INTERLEAVED -> IPL_CHANNELORDER_DEINTERLEAVED
iplRotateAmbisonicsAudioBuffer (IPL_CHANNELORDER_DEINTERLEAVED)
iplConvertAudioBufferFormat IPL_CHANNELORDER_DEINTERLEAVED ->  IPL_CHANNELORDER_INTERLEAVED

or can I omit last step and just pass  IPL_CHANNELORDER_INTERLEAVED  as outputbuffer to iplRotateAmbisonicsAudioBuffer  ?

ok it looks like iplConvertAudioBufferFormat doesn't convert between intreleaved and deintreleaved iplDeinterleaveAudioBuffer but  iplDeinterleaveAudioBuffer/iplInterleaveAudioBuffer does. anyway now I get some weird noise and distortions after passing my samples through iplRotateAmbisonicsAudioBuffer.

I am curious what platform you are running on.  We have been using
iplRotateAmbisonicAudioBuffer without a problem on the PC. Works well. On
Android however, with the same data the resulting spatialization is clearly
not correct. We are still investigating whether we believe it is an issue
with iplRotateAmbisonicAudioBuffer  or something step in our pipeline.
M.
On Thu, Oct 19, 2017 at 7:55 AM, mecowhy<EMAIL_ADDRESS>wrote:

ok it looks like iplConvertAudioBufferFormat doesn't convert between
intreleaved and deintreleaved iplDeinterleaveAudioBuffer but
iplDeinterleaveAudioBuffer/iplInterleaveAudioBuffer does. anyway now I
get some weird noise and distortions after passing my samples through
iplRotateAmbisonicsAudioBuffer.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ValveSoftware/steam-audio/issues/38#issuecomment-337934302,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFM-dgn3Ns7oqD65_MFRH75aroE3kEoCks5st2L0gaJpZM4OVcqC
.

the noises I mentioned I observed on Windows, on Android didn't tested yet. You can try implement rotations by yourself ,it isn't too difficult , just keep #50 in mind.

@mecowhy The following sequence should work:

iplDeinterleaveAudioBuffer to deinterleave the input
iplConvertAudioBufferFormat to convert the deinterleaved buffer to ACN/N3D
iplRotateAmbisonicsBuffer to rotate the deinterleaved ACN/N3D buffer
iplConvertAudioBufferFormat to convert the rotated buffer to the format you need
iplInterleaveAudioBuffer to interleave the format-converted, rotated buffer

Let us know if this sequence does not work for you.

@lakulish it looks like it rotates the soundfield but it introduces some distortion on some angles. and it seems that it comes from the rotator, because it occurs if I'm changing yaw value on Front/Back and Left/Right Test files and not Up/Down where the rotator has not much to do. Anyway it would be cool if the phonon functions could return some error code, processed samples...

I just ran into this as well.  I was using 1st order interleaved Furse-Malham ambisonic samples and was confused why the rotator didn't seem to do anything.  I can confirm that the "deinterleave, convert, rotate, convert, interleave" sequence works, although it's cumbersome.

Can you check if this issue still occurs with the latest release: https://github.com/ValveSoftware/steam-audio/releases/tag/v4.0.0.

Closing pending feedback.


I encountered an error while trying to proxy HTTPS and HTTP services.

I keep getting "Permission denied" when trying to use rothole to proxy ports 80 and 443.
2023-06-12T03:22:10.986117Z ERROR connection{addr=xx}:handle{service=1panel-https}:run_tcp_connection_pool: rathole::server: Permission denied (os error 13). Retry in 870.224686ms
docker-compose.yaml
version: '3.3'
services:
    rathole:
        image: rapiz1/rathole:v0.4.8
        restart: always
        cap_add:
          - NET_ADMIN
        command: --server /app/config.toml
        ports:
            - '80:80'
            - '443:443'
            - '33080:33080'
            - '34000:34000'
        volumes:
            - $PWD/config.toml:/app/config.toml

I have the same issue, how did you solve it?

I have the same issue, how did you solve it?

Hi, could you please provide any details or log information?

Sorry, I ended up using a different solution instead of rathole, I use a wireguard tunnel now.

I ran in the same issue. The problem is most likely that the user 1000:1000 (from the Dockerfile) doesn't have permission to open 80 and 443 port.
One (bad) solution to this issue would be to use a user with enough permissions. For example, set user: root in your docker-compose file fixes this.

Got it working. Make sure the config file owns 1000:1000 then this will work:
version: '3.8'
services:
  rathole:
    image: rapiz1/rathole:v0.5.0
    container_name: rathole
    volumes:
    - /srv/config/rathole.toml:/app/config.toml
    ports:
    - '80:80'
    - '443:443'
    command:
    - "--server"
    - "/app/config.toml"
    restart: always

Hi. I'm trying to learn docker, compose, rathole, azure container instance and azure storage account all at once and I'm having trouble following your post. I was hoping you could help me with the following questions:

Why are we using docker compose? I thought that's more for multi-container apps while rathole is a single app.
How does making sure the config file is owned by 1000:1000 make rathole run with enough permission to bind port 80 and 443?
Do you know how to make a docker contained app run as root using docker cli instead of compose?


Loosen the gemspec to allow for easier upgrading of the gem

This is the only thing different in my ardm-core version.

Btw, the rspec upgrade for this particular gem is painful. I finished it on most of the other gems, but this one just does a ton of before(:all) stuff that's no longer supported. It's brutal.

I agree with your comments. We should try to be semantically versioned (or better yet, clear about how we're going to version). And then our dependencies should not be so tight because we're constantly having to update them and release new gems.
I am, however, going to hold this until after 1.3.0 gets released, and then we can see what the appropriate version is. Thanks!


Support decorating captured groups

We should see if we can support decorating captured groups.

+1 for this. I've been able to recreate most of my rules using negative/positive look ahead/behind, but it makes the patterns much more complex. Having the decoration apply to the first capturing group, if one exists, would be great.


add Category for VCS platforms specific to hardware development

Proposing a category for version control systems tailored to hardware development. Also, a platform which offers this service while supporting Eagle CAD, KiCAD and more.

Hey, I've opted to add InventHub and CADLab under "Project sharing platforms" for now with e785db3.


can this library be used with arduino due

Hello I just want to know if this library can work with arduino due I tried but i think there's something wrong when I modified the example to work with due if I am not mistaken I got an error with jmp 0
( don't remember exactly cuz I am away right now from my PC once I get back I will post the error )
I changed from softserial to serial3 and changed the baud to the required one but when I compile I get an error but when I compile for mega or uno (using softserial) I get no error

the error :
Build options changed, rebuilding all
C:\Users\nothing\AppData\Local\Temp\ccIRlFiU.s: Assembler messages:
C:\Users\nothing\AppData\Local\Temp\ccIRlFiU.s:76: Error: bad instruction `jmp 0'
exit status 1
Error compiling for board Arduino Due (Programming Port).
`//#include <SoftwareSerial.h>
#include <ESP8266wifi.h>
/* TCP server/client example, that manages client connections, checks for messages

when client is connected and parses commands. Connect to the ESP8266 IP using
a TCP client such as telnet, eg: telnet 192.168.0.X 2121

ESP8266 should be AT firmware based on 1.5 SDK or later

2016 - J.Whittington - engineer.john-whittington.co.uk
*/

//#define sw_serial_rx_pin 4 //  Connect this pin to TX on the esp8266
//#define sw_serial_tx_pin 6 //  Connect this pin to RX on the esp8266
#define esp8266_reset_pin 5 // Connect this pin to CH_PD on the esp8266, not reset. (let reset be unconnected)
#define SERVER_PORT "2121"
#define SSID "SAQ123"
#define PASSWORD "Saq123456"
//SoftwareSerial swSerial(sw_serial_rx_pin, sw_serial_tx_pin);
// the last parameter sets the local echo option for the ESP8266 module..
ESP8266wifi wifi(Serial3, Serial3, esp8266_reset_pin, Serial);
void processCommand(WifiMessage msg);
uint8_t wifi_started = false;
// TCP Commands
const char RST[] PROGMEM = "RST";
const char IDN[] PROGMEM = "*IDN?";
void setup() {
// start debug serial
Serial3.begin(115200);
// start HW serial for ESP8266 (change baud depending on firmware)
Serial.begin(115200);
while (!Serial)
;
Serial.println("Starting wifi");
Serial3.println("Starting wifi");
//swSerial.write("AT\r\n");
wifi.setTransportToTCP();// this is also default
wifi.endSendWithNewline(false); // Will end all transmissions with a newline and carrage return ie println.. default is true
wifi_started = wifi.begin();
if (wifi_started) {
wifi.connectToAP(SSID, PASSWORD);
wifi.startLocalServer(SERVER_PORT);
} else {
// ESP8266 isn't working..
}
}
void loop() {
static WifiConnection *connections;
// check connections if the ESP8266 is there
if (wifi_started)
wifi.checkConnections(&connections);
// check for messages if there is a connection
for (int i = 0; i < MAX_CONNECTIONS; i++) {
if (connections[i].connected) {
// See if there is a message
WifiMessage msg = wifi.getIncomingMessage();
// Check message is there
if (msg.hasData) {
// process the command
processCommand(msg);
}
}
}
}
void processCommand(WifiMessage msg) {
// return buffer
char espBuf[MSG_BUFFER_MAX];
// scanf holders
int set;
char str[16];
// Get command and setting
sscanf(msg.message,"%15s %d",str,&set);
/* swSerial.print(str);/
/ swSerial.println(set);*/
if ( !strcmp_P(str,IDN) ) {
wifi.send(msg.channel,"ESP8266wifi Example");
}
// Reset system by temp enable watchdog
else if ( !strcmp_P(str,RST) ) {
wifi.send(msg.channel,"SYSTEM RESET...");
// soft reset by reseting PC
asm volatile ("  jmp 0");
}
// Unknown command
else {
wifi.send(msg.channel,"ERR");
}
}`

Did you succeded in making this library working with Arduino DUE? If not, can you suggest any other reliable ESP8266 library that works with Arduino DUE (using hardware serial)?
Thanks

Hi,
Should work if you pass a reference to hw serial instead of sw. Not tested since I don't have an arduino due.
Best of luck!
Regards
Jonas

15 sep. 2016 kl. 15:02 skrev lenny<EMAIL_ADDRESS>Did you succeded in making this library working with Arduino DUE? If not, can you suggest any other reliable ESP8266 library that works with Arduino DUE (using hardware serial)?
Thanks
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

it works fine with Serial1.


WIP: Extending e2e graphical happy path scenario

What does this PR do?

Implements AI Lab Page
Extends ai-lab-extension.spec.ts test

Screenshot / video of UI
N/A

What issues does this PR fix or reference?
#978

How to test this PR?

cd
yarn install
yarn test:e2e:build
cd
export PODMAN_DESKOTP_ARGS=; yarn test:e2e

Nice seeing some e2e for podman AI Lab 🚀 !
Was wondering, should the tests stop if one fails ? Like it does not make sense to continue if the installation fail, not sure if this is possible with vitest/playwright

Nice seeing some e2e for podman AI Lab 🚀 !
Was wondering, should the tests stop if one fails ? Like it does not make sense to continue if the installation fail, not sure if this is possible with vitest/playwright

It would be a bit hacky, but possible, imho. It is great idea!


feat: allow setting up federation via fedimint-cli

Port of https://github.com/fedimint/fedimint/pull/3796
Plus missing methods and minor improvements
Closes https://github.com/fedimint/fedimint/issues/3795
In future we may create another command that does the full setup using these subcommands and use them to setup devimint, perhaps replacing the current method: https://github.com/fedimint/fedimint/blob/0b8cdd855cc46e58a74fa04678849bddd8da3832/devimint/src/federation.rs#L501
Calling example:
fedimint-cli admin dkg --ws ws://<IP_ADDRESS>:24329/ ws-status

Should have a devimint test to see if it actually works :P

Successfully created backport PR for releases/v0.3:

#4713


Syntax highlighting gone after CTRL+S

Description of the problem or steps to reproduce
I want to use Micro to code in Sage Sagemath, to edit ".sage" script files.
I created a sage.yaml syntax file: copied one for Python 3 and changed only the very first lines:

Then I put the sage.yaml into ~/.config/micro/syntax.
When I open the .sage file with Micro, syntax highlighting seems to work:

But then I press CTRL+S to save the file, and highlighting disappears:

CTRL+S does not cause any problem when editing ".py" files whose syntax file I modified.
Specifications
micro/focal,now 2.0.1-1

Commit hash:
OS: Ubuntu 20.24 run through WSL2 on Windows 10
Terminal:
Windows Console

Thanks, it worked!

@dmaluka @JoeKar for close?

Close since it's solved by development progress.


Move truncation of docker ids to FE to allow full value in tooltips

Reveals full id if you search for it.
Difficult to copy and paste the full id if you want it for some reason

Fixes #1139

Works well for container topology. On Containers By DNS, I'm not getting the full IDs on tooltips neither in the details panel title nor in the connections table.

Report: https://gist.github.com/davkal/610baf649b64ded6b06dc6a26a3eff99

I don't think we're responsible for those ones, I think they're just DNS names chosen w/ a similar truncation heuristic.


⚠ Avatar API Endpoint has degraded performance

In 24b5089, Avatar API Endpoint (https://avatar.roblox.com/v1/avatar-rules) experienced degraded performance:

HTTP code: 200
Response time: 1591 ms

Resolved: Avatar API Endpoint performance has improved in 8b12459 after 5 minutes.


filter-functionality added

Description
Implemented filtering functionality on the tutorial homepage to allow users to filter tutorials by date created, title, owner or keyword. This resolves the issue where users were unable to efficiently navigate and find specific tutorials in the presence of a large number of entries.
Related Issue
Resolves issue #18
Motivation and Context
With the introduction of filtering, users can now easily locate relevant tutorials based on specific criteria, improving usability and accessibility.
Screenshots or GIF (In case of UI changes):
https://github.com/c2siorg/Codelabz/assets/90304648/a9efeed6-b66d-46d3-ab0d-460b93593972
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[x] All new and existing tests passed.

@shivareddy6 @Maahi10001  @ABHISHEK-PANDEY2 could you please review the PR


Safely write to md5 cache file

The currently used technique with appending to file could lead
to md5 sum being written twice into the file in case two devices
are being bootstrapped simultaneously. Which actually happend in my
case when I've tried that with a couple Arista switches.
Replaced that code with write-replace pattern, which is a safe way to
do the same thing. For details see that blog post:
https://blog.gocept.com/2013/07/15/reliable-file-updates-with-python/

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Coverage increased (+0.08%) to 77.673% when pulling aa48922218f2de905558e7b84014a559a86428e5 on dmitrymex:safe-cache-file-2 into 3e28230e25c3ab2243edd1966d131be43c0942ea on Apstra:master.

Thanks Dmitry, I'll check this out today.

Thanks for the PR!


Change directory from the repos

I try to use strider into windows 2008 server, i need change the directory to use into strider repos.
How can do that? i cant find nothing

Can you be a little more specific about what you are trying to do?

i need replace the destination of the repo where strider  stored into windows. because for default strider try to use a temp directory, and generate a privilege error.

@charlitos85 Are you talking about the location where strider is installed or where it places checkouts of projects you're building?

to change the destination where strider clones repos you can use the var STRIDER_CLONE_DEST

@fernandoneto thanks. I just added that to the readme.

i receive this error in the console
git clone --recursive git@bitbucket.com:test/test-xxx . --branch master bitbucket 3s
Invalid Date
-1
Cloning into '.'...
bash.exe: warning: could not find /tmp, please create!
Warning: Identity file C:UsersADMINI~1AppDataLocalTemp2_gitaneidaff722db.key not accessible: No such file or directory.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

Looks like gitane is trying to create temp files, but cannot. Sounds like a permissions issue, and a bad error message since /tmp isn't a valid windows path.

Sorry for not realizing it earlier, but gitane doesn't work on Windows at all. You're out of luck for the moment.

Regarding that, gitane was written before there were any decent node git clients, maybe it's time to replace it. I think there's an issue floating around about it too, https://github.com/Strider-CD/strider-github/issues/1

I just want to note that gitane is probably used because it allows using custom SSH keys.

But since github supports custom ssh keys, shouldn't it be automatic (just thinking out loud..)?

Not really. If you would just spawn git, it would use the SSH keys of the user that runs strider. But those aren't necessarily the ones that should be used. Especially since, currently, a new set of keys is generated for each project and is used for deployment keys and whatnot.
So the ability to be able to run git in an environment where strider has full control over the keys seems crucial to me right now.

So is it the ssh key part that isn't windows compatible?

Correct. The way Gitane sets up an environment for git/ssh to use seems impossible on Windows.
Gitane will set a GIT_SSH environment variable, so that git then tries to execute that file for SSH access. But the file is a shell script, which Windows can't run. And it's all downhill from there.

Closing this issue, since it's technically been answered and there are other issues related to the windows issue.


(ISO 8000-118) ISO House Style: reference to list item in clause "Clause 7 a)" should be "7 a)"

Reported by BSI in https://github.com/metanorma/iso-8000-118/issues/3:

(28) Clause 7, the references here are wrong; this was pointed out in comments previously sent to the team (i.e. change “Clause 6 a)” to “6 a)” etc.)

To be fair, this behavior is not defined in ISO House Style:
https://www.iso.org/ISO-house-style.html

"Clause 7" + "a)" are generated separately and combined; to drop the "Clause" is going to be difficult, although I can see the human impulse to draw an analogy between 7 a) and 7.1. (It is a perverse analogy nevertheless.)