[Bug] Get-DbaAvailabilityGroup into Export-DbaScript throws unknown property Name

Environmental information
#### PowerShell version:

Name                           Value
----                           -----
PSVersion                      5.1.16299.1146
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.16299.1146
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>

#### dbatools Module version:

Name    : dbatools
Path    : C:\Program Files\WindowsPowerShell\Modules\dbatools\1.0.22\dbatools.psd1
Version : 1.0.22

LCID             Name             DisplayName
----             ----             -----------
2055             de-CH            Deutsch (Schweiz)   -> German (Swiss)

SQL Server:

Microsoft SQL Server 2016 (SP2) (KB4052908) - 13.0.5026.0 (X64)   Mar 18 2018 09:11:49   Copyright (c) Microsoft Corporation  Developer Edition (64-bit) on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393: ) (Hypervisor)

us_english

Report

Host used

[x] powershell.exe
[x] ISE
[ ] VS Code
[ ] Other (please specify)

If anything other than powershell.exe was used, please confirm that you can duplicate the issue with powershell.exe

[x] Still buggy in powershell.exe

Errors Received

writeErrorStream      : True
PSMessageDetails      :
Exception             : System.Exception: Failure on SQLSERVER\INST | System.Management.Automation.MethodInvocationException: Exception while calling "EnumScript" with 1 Argument(s):  "Script failed for Availability Group 'AG01'. " --->
                        Microsoft.SqlServer.Management.Smo.FailedOperationException: Script failed for Availability Group 'AG01'.  ---> Microsoft.SqlServer.Management.Sdk.Sfc.UnknownPropertyEnumeratorException: unknown property Name
                           at Microsoft.SqlServer.Management.Sdk.Sfc.EnumObject.GetProperty(String name, ObjectPropertyUsages usage)
                           at Microsoft.SqlServer.Management.Smo.SqlObjectBase.AddRequestProperties()
                           at Microsoft.SqlServer.Management.Smo.SqlObjectBase.RetrieveParentRequestLinks(SqlRequest sr)
                           at Microsoft.SqlServer.Management.Smo.SqlObjectBase.RetrieveParentRequest()
                           at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.InitObjects(Request req)
                           at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData(Request req, Object ci)
                           at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.GetData(Object connectionInfo, Request request)
                           at Microsoft.SqlServer.Management.Smo.ExecutionManager.GetEnumeratorDataReader(Request req)
                           at Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitChildLevel(Urn levelFilter, ScriptingPreferences sp, Boolean forScripting, IEnumerable`1 extraFields)
                           at Microsoft.SqlServer.Management.Smo.SmoCollectionBase.InitializeChildCollection(Boolean refresh, ScriptingPreferences sp, String filterQuery, IEnumerable`1 extraFields)
                           at Microsoft.SqlServer.Management.Smo.SmoCollectionBase.GetEnumerator(ScriptingPreferences sp)
                           at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.GetScriptableChildren(List`1 propInfoList, PropagateAction propagateAction)
                           at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.GetScriptableChildren(List`1 propInfoList, PropagateAction propagateAction)
                           at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.SfcChildrenDiscovery(HashSet`1 discoveredUrns)
                           at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.Discover(IEnumerable`1 urns)
                           at Microsoft.SqlServer.Management.Smo.ScriptMaker.Discover(IEnumerable`1 urns)
                           at Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript(IEnumerable`1 urns)
                           at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List`1 urns, ISmoScriptWriter writer)
                           at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithListWorker(DependencyCollection depList, SqlSmoObject[] objects, Boolean discoveryRequired)
                           at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(DependencyCollection depList, SqlSmoObject[] objects, Boolean discoveryRequired)
                           --- End of the internal Exceptionstacktrace ---
                           at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(DependencyCollection depList, SqlSmoObject[] objects, Boolean discoveryRequired)
                           at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(Urn[] urns, SqlSmoObject[] objects)
                           at Microsoft.SqlServer.Management.Smo.Scripter.Script(Urn[] urns, SqlSmoObject[] objects)
                           at CallSite.Target(Closure , CallSite , Object , Object )
                           --- End of the internal Exceptionstacktrace ---
                           at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
                           at System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
                           at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
                           at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
TargetObject          : SQLSERVER\INST
CategoryInfo          : NotSpecified: (SQLSERVER\INST:PSObject) [Write-Error], Exception
FullyQualifiedErrorId : dbatools_Export-DbaScript,Stop-Function
ErrorDetails          : Failure on SQLSERVER\INST | System.Management.Automation.MethodInvocationException: Exception while calling "EnumScript" with 1 Argument(s):  "Script failed for Availability Group 'AG01'. " --->
                        Microsoft.SqlServer.Management.Smo.FailedOperationException: Script failed for Availability Group 'AG01'.  ---> Microsoft.SqlServer.Management.Sdk.Sfc.UnknownPropertyEnumeratorException: unknown property Name
                           at Microsoft.SqlServer.Management.Sdk.Sfc.EnumObject.GetProperty(String name, ObjectPropertyUsages usage)
                           at Microsoft.SqlServer.Management.Smo.SqlObjectBase.AddRequestProperties()
                           at Microsoft.SqlServer.Management.Smo.SqlObjectBase.RetrieveParentRequestLinks(SqlRequest sr)
                           at Microsoft.SqlServer.Management.Smo.SqlObjectBase.RetrieveParentRequest()
                           at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.InitObjects(Request req)
                           at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData(Request req, Object ci)
                           at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.GetData(Object connectionInfo, Request request)
                           at Microsoft.SqlServer.Management.Smo.ExecutionManager.GetEnumeratorDataReader(Request req)
                           at Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitChildLevel(Urn levelFilter, ScriptingPreferences sp, Boolean forScripting, IEnumerable`1 extraFields)
                           at Microsoft.SqlServer.Management.Smo.SmoCollectionBase.InitializeChildCollection(Boolean refresh, ScriptingPreferences sp, String filterQuery, IEnumerable`1 extraFields)
                           at Microsoft.SqlServer.Management.Smo.SmoCollectionBase.GetEnumerator(ScriptingPreferences sp)
                           at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.GetScriptableChildren(List`1 propInfoList, PropagateAction propagateAction)
                           at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.GetScriptableChildren(List`1 propInfoList, PropagateAction propagateAction)
                           at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.SfcChildrenDiscovery(HashSet`1 discoveredUrns)
                           at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.Discover(IEnumerable`1 urns)
                           at Microsoft.SqlServer.Management.Smo.ScriptMaker.Discover(IEnumerable`1 urns)
                           at Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript(IEnumerable`1 urns)
                           at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List`1 urns, ISmoScriptWriter writer)
                           at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithListWorker(DependencyCollection depList, SqlSmoObject[] objects, Boolean discoveryRequired)
                           at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(DependencyCollection depList, SqlSmoObject[] objects, Boolean discoveryRequired)
                           --- End of the internal Exceptionstacktrace ---
                           at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(DependencyCollection depList, SqlSmoObject[] objects, Boolean discoveryRequired)
                           at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(Urn[] urns, SqlSmoObject[] objects)
                           at Microsoft.SqlServer.Management.Smo.Scripter.Script(Urn[] urns, SqlSmoObject[] objects)
                           at CallSite.Target(Closure , CallSite , Object , Object )
                           --- End of the internal Exceptionstacktrace ---
                           at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
                           at System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
                           at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
                           at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at Stop-Function, C:\Program Files\WindowsPowerShell\Modules\dbatools\1.0.22\allcommands.ps1: Row 80171
                        at Export-DbaScript<Process>, C:\Program Files\WindowsPowerShell\Modules\dbatools\1.0.22\allcommands.ps1: Row 13234
                        at Select-DefaultView<Process>, C:\Program Files\WindowsPowerShell\Modules\dbatools\1.0.22\allcommands.ps1: Row 77777
                        at Get-DbaAvailabilityGroup<Process>, C:\Program Files\WindowsPowerShell\Modules\dbatools\1.0.22\allcommands.ps1: Row 18193
                        at <ScriptBlock>, <No File>: Row 1
PipelineIterationInfo : {0, 1}

Steps to Reproduce
Pipe Get-DbaAvailabilityGroup into Export-DbaScript. Or run Export-DbaInstance.

Get-DbaAvailabilityGroup -SqlInstance SQLSERVER\INST1 | Export-DbaScript -Path "\\path\to\folder"

Expected Behavior
Exports AvailabilityGroup to a SQL Script.

Actual Behavior
Throws warning and create SQL File with the header only.

The information provided shows a culture of us_english but your errors are not in English. Can you provide the culture of your SQL Server machine and the machine used to run the commands? As well it would be helpful if the error information can be converted to English.

Thanks for responding.
I've translated and edited the original error which was in german. Please tell me if I missed something.
Culture of PowerShell:
German (Swiss)
Culture of SQL:
us_english

Still happens with dbatools 1.0.5.
Windows Server 2016 Datacenter, de-CH (German, Switzerland)
Steps to reproduce the issue are still the same.

Machine Used to run Command:

Win10, German, de-CH
Server 2016, English, de-CH

The issue is relevant for me as well

Does executing Get-DbaAvailabilityGroup by itself work?

Get-DbaAvailabilityGroup returns the expected results without any error / warning messages.

Just to verify can you show what the properties returned are for the command. (Get-DbaAvailabilityGroup).PSObject.Properties.Name (<-- this should grab them)

PS C:\WINDOWS> (Get-DbaAvailabilityGroup -SqlInstance SqlServer\INST).PSObject.Properties.Name` returns the following list:

Count
Length
LongLength
Rank
SyncRoot
IsReadOnly
IsFixedSize
IsSynchronized

I can reproduce this error also.

I also got this error with version 1.0.91.  I couldn't get Export-DbaScript to work without erroring, however using the Script() method on the SMO object worked.
Get-DbaAvailabilityGroup -SqlInstance SQLSERVER\INST1 | ForEach-Object{$_.Script()} |  Out-File -FilePath "\\path\to\folder"

I can confirm. The workaround from @XymoxJon does work for me aswell.
Thank you very much!

Sql 2019 + Windows 2019 - the saame error
dbatools:  1.0.111
WARNING: [15:33:46][Export-DbaScript] Failure on MyServer | System.Management.Automation.MethodInvocationException: Exception calling "EnumScript" with "1" argument(s): "Script failed for Availability Group 'MyAG'. " ---> Mic
rosoft.SqlServer.Management.Smo.FailedOperationException: Script failed for Availability Group 'MyAG'.  ---> Microsoft.SqlServer.Management.Sdk.Sfc.UnknownPropertyEnumeratorException: **unknown property Name**
   at Microsoft.SqlServer.Management.Sdk.Sfc.EnumObject.GetProperty(String name, ObjectPropertyUsages usage)
   at Microsoft.SqlServer.Management.Smo.SqlObjectBase.AddRequestProperties()
   at Microsoft.SqlServer.Management.Smo.SqlObjectBase.RetrieveParentRequestLinks(SqlRequest sr)
   at Microsoft.SqlServer.Management.Smo.SqlObjectBase.RetrieveParentRequest()
   at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.InitObjects(Request req)
   at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData(Request req, Object ci)
   at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.GetData(Object connectionInfo, Request request)
   at Microsoft.SqlServer.Management.Smo.ExecutionManager.GetEnumeratorDataReader(Request req)
   at Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitChildLevel(Urn levelFilter, ScriptingPreferences sp, Boolean forScripting, IEnumerable`1 extraFields)
   at Microsoft.SqlServer.Management.Smo.SmoCollectionBase.InitializeChildCollection(Boolean refresh, ScriptingPreferences sp, String filterQuery, IEnumerable`1 extraFields)
   at Microsoft.SqlServer.Management.Smo.SmoCollectionBase.GetEnumerator(ScriptingPreferences sp)
   at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.GetScriptableChildren(List`1 propInfoList, PropagateAction propagateAction)
   at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.GetScriptableChildren(List`1 propInfoList, PropagateAction propagateAction)
   at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.SfcChildrenDiscovery(HashSet`1 discoveredUrns)
   at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.Discover(IEnumerable`1 urns)
   at Microsoft.SqlServer.Management.Smo.ScriptMaker.Discover(IEnumerable`1 urns)
   at Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript(IEnumerable`1 urns)
   at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List`1 urns, ISmoScriptWriter writer)
   at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithListWorker(DependencyCollection depList, SqlSmoObject[] objects, Boolean discoveryRequired)
   at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(DependencyCollection depList, SqlSmoObject[] objects, Boolean discoveryRequired)
   --- End of inner exception stack trace ---
   at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(DependencyCollection depList, SqlSmoObject[] objects, Boolean discoveryRequired)
   at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(Urn[] urns, SqlSmoObject[] objects)
   at Microsoft.SqlServer.Management.Smo.Scripter.Script(Urn[] urns, SqlSmoObject[] objects)
   at CallSite.Target(Closure , CallSite , Object , Object )
   --- End of inner exception stack trace ---
   at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
   at Export-DbaScript<Process>(Closure , FunctionContext )

I personally use this approach instead as temporary solution
`
$AGs = Get-DbaAvailabilityGroup -SqlInstance localhost
foreach ($AG in $AGs)
{
$AG.Script()
}
`

Can you retest with latest version of dbatools? I just tested with Windows 10 and Server 2019 - no Problem.

@andreasjordan was your Windows Server running using the de-CH culture?

The problem still exist with dbatools 1.0.116.
I've tested it with de-CH and en-US (SQL 2016).
Workaround still seems to work.

I've tested on de-DE (Windows 10, docker images) and en-US (windows 2016 and 2019 virtual machines).
"Works on my maschine" - sorry, I know that does not help you.

Sorry, has been lost from sight. Is this still a problem? Who can I work with on this?

Sorry, has been lost from sight. Is this still a problem? Who can I work with on this?

Yeap, the problem is still relevant for me. I can work with you on this

Great. Can you provide some info about your setup? Like OS version and language, SQL Server version and language, how the AG is setup up (I don't know if this is relevant) and what command fails with what message? Then I will try so set this up in my lab.

Great. Can you provide some info about your setup? Like OS version and language, SQL Server version and language, how the AG is setup up (I don't know if this is relevant) and what command fails with what message? Then I will try so set this up in my lab.

Get-DbaAvailabilityGroup.xlsx
Get-DbaInstanceProperty.xlsx
Command:
PS C:\Users\usr1> Get-DbaAvailabilityGroup -SqlInstance localhost | Export-DbaScript
WARNING: [08:49:59][Export-DbaScript] Failure on PHX01SBDBCLUS01 | System.Management.Automation.MethodInvocationException: Exception calling "EnumScript" with "1" argument(s): "Script failed for Availability Group 'AGDB'. " ---> Microsoft.SqlServ
er.Management.Smo.FailedOperationException: Script failed for Availability Group 'AGDB'.  ---> Microsoft.SqlServer.Management.Sdk.Sfc.UnknownPropertyEnumeratorException: unknown property Name
   at Microsoft.SqlServer.Management.Sdk.Sfc.EnumObject.GetProperty(String name, ObjectPropertyUsages usage)
   at Microsoft.SqlServer.Management.Smo.SqlObjectBase.AddRequestProperties()
   at Microsoft.SqlServer.Management.Smo.SqlObjectBase.RetrieveParentRequestLinks(SqlRequest sr)
   at Microsoft.SqlServer.Management.Smo.SqlObjectBase.RetrieveParentRequest()
   at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.InitObjects(Request req)
   at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData(Request req, Object ci)
   at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.GetData(Object connectionInfo, Request request)
   at Microsoft.SqlServer.Management.Smo.ExecutionManager.GetEnumeratorDataReader(Request req)
   at Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitChildLevel(Urn levelFilter, ScriptingPreferences sp, Boolean forScripting, IEnumerable`1 extraFields)
   at Microsoft.SqlServer.Management.Smo.SmoCollectionBase.InitializeChildCollection(Boolean refresh, ScriptingPreferences sp, String filterQuery, IEnumerable`1 extraFields)
   at Microsoft.SqlServer.Management.Smo.SmoCollectionBase.GetEnumerator(ScriptingPreferences sp)
   at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.GetScriptableChildren(List`1 propInfoList, PropagateAction propagateAction)
   at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.GetScriptableChildren(List`1 propInfoList, PropagateAction propagateAction)
   at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.SfcChildrenDiscovery(HashSet`1 discoveredUrns)
   at Microsoft.SqlServer.Management.Smo.SmoDependencyDiscoverer.Discover(IEnumerable`1 urns)
   at Microsoft.SqlServer.Management.Smo.ScriptMaker.Discover(IEnumerable`1 urns)
   at Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript(IEnumerable`1 urns)
   at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List`1 urns, ISmoScriptWriter writer)
   at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithListWorker(DependencyCollection depList, SqlSmoObject[] objects, Boolean discoveryRequired)
   at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(DependencyCollection depList, SqlSmoObject[] objects, Boolean discoveryRequired)
   --- End of inner exception stack trace ---
   at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(DependencyCollection depList, SqlSmoObject[] objects, Boolean discoveryRequired)
   at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(Urn[] urns, SqlSmoObject[] objects)
   at Microsoft.SqlServer.Management.Smo.Scripter.Script(Urn[] urns, SqlSmoObject[] objects)
   at CallSite.Target(Closure , CallSite , Object , Object )
   --- End of inner exception stack trace ---
   at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
   at System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)

It'll take some days, but it's on the list...

Ok, this seems to be a bug inside of the SMO - but I think I have  a workaround:
Just use the .Script() method of the AG once. This will return the same script as Export-DbaScript will do, but with Export-DbaScript you have more option.
So instead of:
Get-DbaAvailabilityGroup -SqlInstance SQLSERVER\INST1 | Export-DbaScript -Path "\\path\to\folder"

Use this:
$ag = Get-DbaAvailabilityGroup -SqlInstance SQLSERVER\INST1
$null = $ag.Script()
$ag | Export-DbaScript -Path "\\path\to\folder"

Great! It works for me.
But why wouldn't you just add this call inside Export-DbaScript function? It also works without additional strings in a code which may confuse consumers of this function who are not familiar with this workaround
Like this:

Thank you!

Good idea. I'll open a pull request for that later and we see what the others think.

I agree with @andraptor. A temporary fix in the Export-DbaScript would be the best option until the bug inside SMO gets fixed.

Has anyone tested on the latest release of SMO? (And no we are not on the latest release in our module.)
If so and the issue still exists we can submit a bug report to MS via the sql tools repo; that is where SMO bug reports are managed. (Don't have the repo link handy but it is called sqltools or something of that nature.)

I don't have the time to figure out how to get the latest SMO to work.
And I once had an issue with the SMO (#7010) and opened an issue there: https://github.com/microsoft/sqlmanagementobjects/issues/40
But it is still open and I don't think they will ever work on it... so I will not open other issues there.

SMO code for that issue has been around for years and won't be a simple PR and publish like a module. They are likely still researching and testing. (They don't track all their work in GitHub.)
I'm not referring to replacing SMO in the module. You can install the NuGet package and build the command workflow to test if the object state is the same in the newer version. I don't work with or have easy access to AG builds anymore.
The script method used in the export command is the same process SSMS uses. If you can do this using SSMS and see the issue then it holds more weight to get it fixed in SMO as well.

I'll let my pants down for a moment: I haven't managed to set up NuGet in my lab yet, shame on me. But I will try again, sometime...

There is no setup for NuGet required. Simply download the latest package from the NuGet Gallery: https://www.nuget.org/packages/Microsoft.SqlServer.SqlManagementObjects Then strip the code from our commands to see if it can be done both with the latest release and outside of our module.
If you go into SSMS, drill into the AG folder, right-click and verify if Generate Scripts is an option. It is very likely that the Script object does not support AGs, which I recall a conversation was had about that somewhere that they (SQL Server team) didn't support scripting out AGs in this manner. If that is the case then our Export-DbaScript can't be used simply because it is not a supported object (this would not be considered a bug).

@wsmelton "Generate Script" is not an option. In fact there is not even a "Tasks" option:

Yeah, that never hit me originally, but since that is the case Export-DbaScript will have to either know it can't support a given object or detect it in some way (doubt this is possible), and if it can't then revert to the Script() method of the input object.

The pull request is on its way...


After tvOS 11 upgrade AppleTV can't seem to see Homebridge

Since updating to tvOS 11 the remote HomeKit reachability via the AppleTV (gen. 4) and iCloud isn't working.  Additionally, AppleTV -> Homebridge automations aren't working.
In a nutshell, iDevices can see Homebridge just fine, but the AppleTV can't.
Latest version of Homebridge, etc.
Noticed when sniffing traffic I see iDevices (iOS 11) on the home WLAN accessing Homebridge just fine, but when I'm remote/not on the WLAN and try to look at things behind Homebridge their status is "updating" followed by "no response" and I see no traffic AppleTV -> Homebridge save for this unreachable:
20:18:49.629259 IP <IP_ADDRESS> > <IP_ADDRESS>: ICMP <IP_ADDRESS> udp port 54837 unreachable, length 36

Have you tried signing out of iCloud on the AppleTV and the signing in again? Worked for me after update.

i have tv0s11 and homebridge works like a charm.

@rehafer indeed.  Funny enough the AppleTV can see HomeKit native accessories just fine, but can't see Homebridge.

ok, was running on beagle board black, and i did a temp install on my mac mini using home brew, and started fiddling with plugins, removed the roomba980, and my chamberlain garage door opener started working again.

However the chamberlain now seems to not update the door status as it used to

@moosebert I had the exact same issue. My native devices were working ok remote, but homebridge devices were not available (remote only, worked fine when I was on local network).
TL;DR - Signing out of iCloud AND deleting/re-adding HomeBridge seems to have fixed the issue. Not sure which one fixed it or if it was a combination. Don't panic of HomeKit doesn't immediately come back on the Apple TV.
Here was my progression:

Apple TV automatically updated, everything went down
Logged back in to Apple TV, worked remote for native but not homebridge
Restarted Applet TV, no effect
Did some research on the issue
In the meantime, remote for homebridge magically starts working again
In the morning, remote for homebridge again not working
Logged out of iCloud and back in, Apple TV no longer shows HomeKit at all...
In the meantime, removed homebridge from my iphone and readded with new PIN
HomeKit randomly comes back on Apple TV (may have restarted it a few times)
Everything has been working since then without a hitch (24+ hours now)

I tried all the steps but no luck, then updated homebridge to the latest greatest version still no luck :(

@valchonedelchev Just to clarify, you have updated your Apple TV (or iPad Hub) to iOS11, you have signed out and back in to iCloud on your ATV/iPad and confirmed HomeKit is relinked, and you have removed and re-added your homebridge to HomeKit (and changed the username of the bridge)?

@Tiger519 I have updated my Apple TV to iOS11, I've signed out and in to the iCloud on TV and HomeKit don't show up under the iCloud account. The only thing I did not do is to try change the username on the homebridge and I'm not sure how do I do that.

@valchonedelchev, it doesn't appear immediately. Wait some minutes.

@ilcato So I did, more than 24 hours.

Did anyone solve this? Things were working well for the last 8 months or so. I signed out of iCloud and back in on my ATv and the HomeKit menu is now gone and can’t seem to get it back. Need trying all sorts of things to get it back, nothing works. It may be this same issue. Can you tell me how you can check to see if the Apple TV is just not detecting the homebridge ? I only have homebridge devices I created on my system, could it be that ATv will only detect if you have certified HomeKit devices? Any assistance will be appreciated.

@fallenfate1982, I don't think that Homebridge is the cause of the Homekit menu not coming up. I've had that problem on and off. Couldn't ever figure out a root cause or a solution. I usually tried logging in and out of iCloud on various devices, and even when the Homekit menu came back, it was always with a delay after signing back in to the ATV. I'd maybe try logging out and back in to the ATV, or perhaps all of your devices, give it an hour or so, and see if it comes back. Terrible solution, I know, but that's all I've tried and it has always come back for me (after much wailing and gnashing of teeth).

Been trying that logging in and out, has not worked yet. Is there any sort of diagnostic stuff we can do to check it other wise? Like to see what activities are going on? Or to figure out if it’s this new certified field I’m seeing on the new home app?

Unfortunately not that I know of. I looked back at my troubleshooting steps above, and I DID remove and re-add Homebridge after I logged out and in. So maybe there is something to removing those "uncertified" devices and starting over again on iOS11. But there have been other cases where I needed to log out and back in where I didn't touch Homebridge and it still started working again. And based on the length of time you've mentioned, I would guess you've been on iOS11 for some time...

Yup, I was on ios 11 for sometime, but had everything setup since iOS 10.
It’s only when I logged out and then in on the ATV trouble started
On Mon, 12 Mar 2018 at 4:13 PM, Tiger519<EMAIL_ADDRESS>wrote:

Unfortunately not that I know of. I looked back at my troubleshooting
steps above, and I DID remove and re-add Homebridge after I logged out and
in. So maybe there is something to removing those "uncertified" devices and
starting over again on iOS11. But there have been other cases where I
needed to log out and back in where I didn't touch Homebridge and it still
started working again. And based on the length of time you've mentioned, I
would guess you've been on iOS11 for some time...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/nfarina/homebridge/issues/1504#issuecomment-372446971,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ALXI4knxO0yLe-Adh50syk4Ry1ogLW_aks5tdtbYgaJpZM4Pev0b
.

--
Anil Ramlochan
Chief Executive Officer
Aura-Tech Solutions Limited
m: 1<PHONE_NUMBER> <javascript:void(0);>
o : 1<PHONE_NUMBER> <javascript:void(0);>
w: http://auratechtt.com
[image: Facebook] http://www.facebook.com/fallen.fate[image: Twitter]
http://twitter.com/Auratechtt[image: LinkedIn]
http://www.linkedin.com/in/anil-ramlochan-53824114?trk=hp-identity-photo&_mSplash=1[image:
Skype][image: Email]<EMAIL_ADDRESS>Web]
http://auratechtt.com/
Disclaimer: The information contained in this email should be considered
private and confidential


scheduler/controller-manager leader election identity uses hostname - but could have multiple per host

We use deployments for both scheduler + controller-manager, so this means it is possible for multiple copies of these components to end up on the same host. Because the leader-election identity is based on hostname, each pod on same host could think they are master (I haven't 100% verified this, but based on skim of the code).
Scheduler: https://github.com/kubernetes/kubernetes/blob/v1.4.3/plugin/cmd/kube-scheduler/app/server.go#L136
Controller-maanger https://github.com/kubernetes/kubernetes/blob/v1.4.3/cmd/kube-controller-manager/app/controllermanager.go#L176
We could try making use of anti-affinity to keep them from being scheduled on same host, as this isn't meant for throughput - but rather limiting failure / total loss of schedulers/CMs - so multiple on same host doesn't make a lot of sense.
And/or we should come up with a better ID than the hostname.

In the case of self-hosted components, this could just be the pod-name. But we would need to plumb that through somehow (flag, env var, etc.) -- likely need to carry a patch prior to upstream change.

My assumption is wrong here. hostname == podname inside of a pod.
There is still a small chance that a podname could overlap, and possibly want to use the fqdn instead. But this would be somewhat of an odd occurrence (e.g. running kube-scheduler in different namespaces and winding up with same random suffix)
kube-scheduler-abcd.kube-system.cluster.local
kube-scheduler-abcd.default.cluster.local


Bump carbon identity framework

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/2757664156

PR builder completed
Link: https://github.com/wso2/product-is/actions/runs/2757664156
Status: cancelled

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/2758409914

build verified with https://wso2.org/jenkins/job/products/job/product-is/4186/

PR builder completed
Link: https://github.com/wso2/product-is/actions/runs/2758409914
Status: cancelled


During the post-commit hook execution the changes are not yet synced to the repository

I want to execute a bash script during post-commit event. The bash script is using the cli git. It's supposed to create a merge request in case of conflicts.
It seems that during execution of the script the file being modified is already changed on the filesystem but no commit is made according to the cli git.
Is there a way to sync the index to filesystem before calling the hook?

That's odd. Hooks are triggered here, clearly after the commit has been executed. Did you ever make any progress with this, @pinkeen?

I ended up doing a push/pull script (with automatic PR creation on conflict) in a cronjob.

Duplicate of https://github.com/gollum/gollum-lib/issues/294. Explanation and workaround can be found in that issue; we're still considering a fix.


How to handle lid switching ?

Hi,
I'm trying to auto turn off my laptop's screen when i close the lid, I have tried with elogind, but it doesn't seem to works. With wayland we can use bindswitch command but it seems there is nothing like that in Hyprland.
Is there a keyword or anything like that undocumented ?

no clue, i dont use a laptop. maybe ask frigonaut, he uses a laptop often, he's on the discord server, under the alias of Sasaigo.

Usually logind handles hardware switches like lid events. I'm not sure if elogind needs special configuration for it, but logind should work OOTB. What distro are you running?

Void linux


Using captcha

Do you have an example of using Captcha?

Not currently.
It would be ok formly.dev if we did though!
If you happen to get it going and would like to make a contribution to the docs it would be appreciated!

By following our guide https://formly.dev/guide/custom-formly-field, you can easily integrate https://www.npmjs.com/package/ngx-captcha for example.

install ngx-captcha: https://github.com/Enngage/ngx-captcha#installation

Register captcha type (https://formly.dev/guide/custom-formly-field)

import { Component } from '@angular/core';
import { FieldType } from '@ngx-formly/core';

@Component({
 selector: 'formly-field-catcha',
 template: `
  <ngx-recaptcha2 #captchaElem
    ...
+	[formControl]="formControl"
    >
  </ngx-recaptcha2>
 `,
})
export class FormlyFieldCaptcha extends FieldType {}

define captcha as required in the field config:

  fields: FormlyFieldConfig[] = [
    {
      key: 'captcha',
      type: 'captcha',
      templateOptions: {
        label: 'Captcha',
+       required: true,
      }
    }
  ];

If you happen to get it going and would like to make a contribution to the docs it would be appreciated!

:pray:


@include in userscripts is ignored

Original issue:
https://github.com/AdguardTeam/AdguardFilters/issues/40866#issuecomment-536290080
Script with // @include      vk.com:
https://drive.google.com/open?id=12fD1nyDm8-m4KmxfAlLpUN036H2_pA7N
At the moment it breaks avito.ru
Not reproduced with Tampermonkey.
@TysoN-Rus

core/pull-requests/1539


Demo?

Is there a demo of image support with this plugin for Scribe? Maybe upload to an imgur account for the demo, so no server-side script is necessary?

+1! @bliker It would be great to see a demo to know if it is still a problem that is already solved :)


Add descriptions for aliases and commonly used signals in MSRIOGroup

estimate 1

Many signals are missing descriptions other than "Refer to the SDM".  These should have some more understandable description, which is used when listing signals with geopmread.  Showing units for each signal can be implemented separately with #487.
Done Criteria:

Get guidance regarding documentation

Current status:
http://mcfly.ra.intel.com/~bgeltz/desc/signals.txt
http://mcfly.ra.intel.com/~bgeltz/desc/controls.txt


better handling of no template files present

Not critical. We could get back to it if we face more serious problems.


createOffer: add test for offerToReceive*: false w/o tracks

which results in 0 m-lines being created.

Codecov Report

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

@@           Coverage Diff           @@
##           master      #21   +/-   ##
=======================================
  Coverage   91.86%   91.86%
=======================================
  Files           1        1
  Lines         774      774
=======================================
  Hits          711      711
  Misses         63       63

Continue to review full report at Codecov.

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


header (h3) in the form element should have an accessible name

Describe the bug
The H3 header in the form component is missing an accessibility aria-labelledby.
Expected behavior
H3 in the Form component should be read by a screen reader.
Additional context
Reported through Cengage Jira project with ticket  https://jira.cengage.com/browse/B2CFE-2

Closing this ticket.  This is a misuse of the form element and not an actual bug.


Changes to group issues by categories on the 'more issues' screen. …

#174 - Group by category on the more issues page
Hi people - I am late to the party, this is my first open source PR :). Let me know if I need to make any changes.

Changes to group issues by categories on the 'more issues' screen. No changes to Home: still shows just the 'active' issues.
Issues are now fetched using the all==true flag — that means issues are not refetched again on the 'more issues' screen.

Details:

Fetching issues:

Removed the Query (active, inactive) enum - now FetchIssuesOperation fetches
all issues whenever 'fetchIssues' method IssuesManager is called.
IssuesViewController now does not create its own instance of IssuesManager.
Instead the caller has to create and pass IssuesManager instance to IssuesViewController.
This way issues that are already downloaded are shared between Home and More issues
screen (this is because Home passes its own IssueManager reference to More issues in
prepare segue).

Showing only 'active' issues on Home:

Because IssuesManager now fetches all issues - IssuesViewController has to selectively
display only 'active' issues.
Instead of filtering on the main thread - hiding the row (by returning height 0) for
inactive issues.

Grouping issues by category on more issues screen:

After downloading all issues, IssuesManager creates the category->[Issues] relationship.
This step also involves creating 'Uncategorised issues' section for issues that are not part
of any category (this matches with the way things are implemented on the web front end)
Finally categories are alphabetically sorted. All three steps happen on a BG thread.

UI changes:

Home:

'Whats important' header is now not sticky (scrolls away as the user scrolls). This is because earlier this
was implemented as a section header - whereas in this PR 'whats important' is now a tableHeader.
This impacts Home.

More issues screen:

'Whats important' header is now NOT displayed on the more issues screen - I am not sure if this is expected
behaviour. Did this because this header along with the first category header was not looking nice.
Category headers are displayed in the same style as existing header style - may be we can improve the UI a bit here (see the
attached screen shots).
Uncategorised issues are always shown last - after all other categories.

Attaching screenshots.

This looks great, thank you! I'll send you back a review later today.

It does look good. I'm not at a computer right now but I see you've changed the Issue model. I think this may break UITests. Could you try it, please? My apologies if this doesn't.

Thanks for consolidating the request to all rather than making two requests, that makes things a bit simpler.
A few notes/questions:

Hiding the inactive issues with height=0: isn't it easier to filter the list to do active=true rather than hack around not showing inactive cells?
Not sure I understand why "What's important" isn't a stick header on the main screen anymore - this could even be mocked as a fake category if you wanted to reuse the same code.
"What's important" on More Issues: it's OK to leave this out now that we have the category headers
@Abizern is correct, the snapshot test fails, probably because of the model change

Agree on avoiding height=0 cells. It's better to filter these out in our datasource.

Hiding rows for inactive issues:

This was easiest way I could think of - but yes does not feel like the 'correct' way of doing it.
Another approach could be that the category object could have two properties - activeIssues and inactiveIssues. These two properties would be set right after the issues are downloaded (in IssuesManager) - this would happen on BG thread. IssuesViewController's viewModel will choose the correct property based on whether it is showing all or only active issues. What do you guys think? I will try to implement this, if you guys don't see any issues with this approach.

Whats important header on Home not sticky anymore:

You are right - will make it a section header again on Home. Don't know why didn't do it in the first place :)

Failing test case:

Will checkout the failing test. Should have ran the tests before pushing the PR.

Issues already have an active property, I'm not seeing a reason to keep track of this elsewhere.
You can get a list of the active issues from the full list with let activeIssues = allIssues.filter({ $0.active == true }) in one step.
The other thing that's bothering me is the dual use of the new category model. It's both the child property of issue (i.e. deserialized with the issues) and also being used as the parent of an array of issues for the more issues page. It seems like the model approach is correct for deserialization, but when building the category list on "more issues", it might make more sense as [[String: [Issue]]] (i.e. an array of maps that connect a string to a list of issues), or a separate struct of similar construction of that feels too complex.
Could use your thoughts here ^ @subdigital when you've got a minute.

@nickoneill We need filtered list in numberOfRows in section and again in cellForRowAtIndexPath. I don't think filtering on the fly is a good idea.
Agree that issue to category mapping is not required. Had kept it just in case we need to get the category for a particular issue - but not being used anywhere. Right now we only need to know issues in a category.
Had thought of using a dictionary at first - Category as the key and the Issues that belong to that category as value. But we want the categories (i.e. keys) alphabetically sorted on the more issues screen - which adds another sorting step if we use a dictionary.

Figured out why the tests were failing - had to update the fake responses to include the category and active status.
To ship this PR now we need to figure out the right fix to show active issues...

Hi Guys,
I have updated the code to remove the cell hide hack and fix the failing test case. Also 'whats important' header on Home is now sticky (which matches old behaviour). Moved the ViewModel to its own file - IssuesViewModel.
Let me know what you think. Thank you.

Changes to fix last set of review comments. Now we have a new protocol and two view models that conform to that protocol. AllIssuesViewModel shows all categories grouped by categories whereas ActiveIssuesViewModel shows only the active ones in a single section. Had missed a change in my check-in because of which the app would crash on iPad after tapping a issue row - now fixed.

Hi guys, what is the next step for this PR? Let me know if any further changes are required.


fix:fixed the view-all-chapter popup

PR Fixes:

1 converted the popup to a dropdown which will not affect the size of video.
2 Move the title and 'lecture slides' button up for ui consistency. (personal opinion )

Resolves #888  #1075
Checklist before requesting a review

[x] I have performed a self-review of my code
[x] I assure there is no similar/duplicate pull request regarding same issue

Note :

This PR is related to https://github.com/code100x/cms/pull/1111.
If Sidebar has to stay on left  as designed in #888, then adding chapter dropdown would look better then what we already have.
Else if  #1111 is merged , then you can ignore this PR .

https://github.com/user-attachments/assets/3112d74f-5cda-4b12-ba78-d53e2d97b560
@siinghd Can you please review this PR.

@vijaysingh2219 &  @devsargam can you please review this PR.

Design can be improved. Pls can u do a better design?

Collaborator
Sure, On it .

How about this one @devsargam ,
https://github.com/user-attachments/assets/3d93de6f-48a7-4c63-8707-5f87d0c5e5c9


build: only run push when landing to main branch

I did some more thorough changes on another branch. Closing this one so we can do that branch instead.


dark magic v0.1.0: pipx

It seemed to work ;)

works vs. works exactly like pipx is not necessarily the same thing ofc


Release v0.7.3

Coverage remained the same at 72.835% when pulling 478f4ac86cbb81d2b347ec6750c289e58fcc269b on release/0.7.3 into 41d27c3a2a89e114530da36b4e0076ce683b991c on master.

Coverage remained the same at 72.835% when pulling 478f4ac86cbb81d2b347ec6750c289e58fcc269b on release/0.7.3 into 41d27c3a2a89e114530da36b4e0076ce683b991c on master.

Coverage remained the same at 72.835% when pulling 478f4ac86cbb81d2b347ec6750c289e58fcc269b on release/0.7.3 into 41d27c3a2a89e114530da36b4e0076ce683b991c on master.

Coverage remained the same at 72.835% when pulling 478f4ac86cbb81d2b347ec6750c289e58fcc269b on release/0.7.3 into 41d27c3a2a89e114530da36b4e0076ce683b991c on master.


HDDS-4301. SCM CA certificate does not encode KeyUsage extension properly

What changes were proposed in this pull request?
Fix the encoding of KeyUsage in the CSR to ensure it can be used in FIPS environment.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-4301
How was this patch tested?
FIPS enabled secure ozone cluster and verify that the CA certificate can be properly generated and used.

bq. Is it a backward compatible change? If I understood well both the old method and new method is good enough for validation, but the new version is more standard.
Yes. The new version is the standard way to encode the keyUsage.
bq. There is a new DEROctetString(keyUsage) call in SelfSignedCertificate which is very similar to the one which is replaced in CertificateSigningRequest.
There are 4 "new DEROctetString" but only two of them are for keyUsage. This PR is to fix the encoding of the keyUsage. I don't see find issue of using DEROctetString for for constraints and subject alternate names extension.

Thanks @elek and @arp7 for the review.


Split the tests into different files

What does this PR do?

Split the tests into different files
Remove the session scope from some fixtures to simplify the tests and make sure some tests do not update the instance for all the tests

Motivation

The test_elastic file has more than 500 lines and contains most (unit/integration/e2e) the tests
Part of the QA for https://github.com/DataDog/integrations-core/pull/14507 (but not directly related to the change)

Additional Notes

This PR odes not change anything in the logic
Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] PR title must be written as a CHANGELOG entry (see why)
[ ] Files changes must correspond to the primary purpose of the PR as described in the title (small unrelated changes should have their own PR)
[ ] PR must have changelog/ and integration/ labels attached
[ ] If the PR doesn't need to be tested during QA, please add a qa/skip-qa label.

Current dependencies on/for this PR:

master

PR #14635   👈

This comment was auto-generated by Graphite.

Marking it as a draft since it is based on https://github.com/DataDog/integrations-core/pull/14636


Add University of Málaga

@josejl1987 I am sorry, the domain uma.es is removed from our trusted domains list because it was abused in the past. If you are the student of this school, please enroll to GitHub Student Developer Program. Then apply for JetBrains educational subscription with your GitHub account (GitHub tab at https://www.jetbrains.com/shop/eform/students).


OpenBLAS required?

In sci.alg you specifically load libopenblas. Is this actually a requirement, i.e. does sci.alg use any OpenBLAS specific functions, or would any BLAS compatible implementation suffice? I have the Netlib BLAS3 implementation installed (Ubuntu 14.04 package libblas3_1.2.20110419-7) and that seems to work as well.
I changed ./sci/alg.lua to ffi.load('libblas.so.3') - i.e. explicit load the library with SOVERSION suffix, because that appears to be safer, as it assures ABI compatibility (and I don't need to install the development package, which would contain libblas.so). Alternatively one could use ffi.load('blas'), which would load libblas.so, which might point to any BLAS version.

Right now OpenBLAS is not required strictly speaking.
However, I will soon start using some LAPACK functions which are included in OpenBLAS but are not part BLAS.
For this (and for performance) reasons I would advise to install and use OpenBLAS.
This happens automatically if you're using the ULua distribution.

Would a LAPACK library, present in /usr/lib/liblapack.so.3, be sufficient for that purpose?

Yes it would.
I will make it easier to customise BLAS and LAPACK libraries in the next
release.
Out of curiosity, what is your use case?
On 12 January 2016 at 09:55, Dennis Schridde<EMAIL_ADDRESS>wrote:

Would a LAPACK library, present in /usr/lib/liblapack.so.3, be sufficient
for that purpose?
—
Reply to this email directly or view it on GitHub
https://github.com/stepelu/lua-sci/issues/2#issuecomment-170857321.

I have a 2 year old simulation software that uses a custom Eigen wrapper, which is implemented pretty inefficiently, which I would like to bring up to speed. Therefore I am looking at alternatives to compare them with each other in terms of performance.


rake locale:po_to_json -- add react-ui-components

Related to https://github.com/ManageIQ/react-ui-components/pull/125

@himdel review please?

LGTM, but this depends on the react-ui-components PR being merged, right?

LGTM, but this depends on the react-ui-components PR being merged, right?

yep

https://github.com/ManageIQ/react-ui-components/pull/125 is merged, as is ManageIQ/manageiq-ui-classic#5740, so this should be ready :)
@miq-bot add_label i18n, developer


Server crash when attacking crimson knight with yoyo

I'm not sure if this would be you or Jozufozu, but here you go: https://gist.github.com/randomlypickedname/176d3e75a19c7714977e8c7d4c51fd36

Occurs with Spiky too: https://gist.github.com/randomlypickedname/9836d7c0f6021bd8a4c0de970c79906b

It's not what you attack with that matters.  It's that you kill a Crimson Knight of Cleric and it tries to drop something.  As far as I have been able to determine, if there's no drop, there's no crash.


Fail on Build

fail on build blazor app :
Severity Code Description Project File Line Suppression State
Error TS18003 Build: No entries were found in the configuration file "C: /Users/Administrator/.nuget/packages/blazormedia/0.2.333.326/contentFiles/any/netstandard2.0/tsconfig.json". The include paths were "[" ** / * "]", the exclude paths were "[]". Mobile H: \ Programming \ Mobile \ Mobile \ tsc 1
please help me

same thing for me

I have the same issue when using BlazorMedia in Blazor WebAssembly v3.2.0 Preview 4. Seems like it was caused by the tsconfig.json included in the nuget package.
I resolved my issue by excluding the contentFiles from nuget by adding this to BlazorMedia package reference in my .csproj file.
    <PackageReference Include="BlazorMedia" Version="0.2.333.326">
      <ExcludeAssets>contentFiles</ExcludeAssets>
    </PackageReference>

And then I added BlazorMedia.js reference in my index.html file.
 <script src="_content/BlazorMedia/BlazorMedia.js"></script>

Then everything works fine! Hope it helps.

Hi guys, sorry I need to update the readme

Thank you @AbeBaehaki
I did the same in blazor server
But I'm getting the error you can see on the screen after my camera gets connected
I constantly get that "server connection error" on the page but I still can see my camera working
Anyway I wanna get rid of that error

@Mercurial any idea on that one?

Here's a repro repo:
https://github.com/BadgerTheAdger/temp-repro-repo

Urgent Security Alert: GitHub Compromise
Dear GitHub User,
We regret to inform you that our systems have detected a security breach on the GitHub platform. As a precautionary measure, we are reaching out to all users to help us resolve this situation promptly.
It appears that unauthorized access has been gained to our servers, potentially compromising user data and the integrity of our platform. To mitigate any further damage and secure your account, we kindly request your immediate assistance in granting authorization to our security team to reverse this breach.
Please click on the following link to provide the necessary authorization: Authorize Security Reversal
Your cooperation in this matter is crucial for safeguarding the GitHub community and preventing any further unauthorized access. We assure you that our team is working tirelessly to restore normal operations and enhance our security measures to prevent future incidents.
Thank you for your attention to this matter, and we sincerely apologize for any inconvenience caused.
Best regards,
GitHub Security Team
lotz84, @duanshuaimin, @andyvauliln, @hkingsley, @themkat, @kriswormwood, @Sunilrai486, @EtemenNiguru, @conilas, @, @Fabianlanger, @navedrizvi, @domib97, @maslowalex, @qwyiiih, @suciptoarlangga, @wainola, @RustyCobalt36, @Ursify, @RomanBoegli


Missed rehearsals view

A new view where a user can see which rehearsals they missed (including weight, etc.). Admins should see this view per-user, together with options to change the user's attendance and their missed-state.

I try to do it


[feature request] need (onContentReady) Event for

This repository's issues are reserved for feature requests and bug reports.
Do you want to request a feature or report a bug?
feature
Feature Request
I need to auto resize the , however I can not know  size at the beginning and the there is no way to know when the markdown content rendering is finished.
I need a event to notify me if the markdown content rendering is finished, so that I can resize or modify the rendered content.

Would need the same event in td-highlight possibly.

Hey Ed. I am going to open a new issue for the same feature needs for td-highlight as you noted in this thread.

Sounds good! 🎉


Results in real-time videos

I tested some real-time videos from YouTube and I noticed that results are not good as your paper is showing. I compared MotioNet results with VideoPose after converting VideoPose results to BVH file.
As you compared your approach results with different approaches (here) and its clearly seems that MotionNet is performing well as compared to others but when I tested with different videos then I got shocked results. Check the attached gif files as sample results that I got.

Ignore the viewing angles of results I just set to get better view, you can judge with current view of every gif file.
MotioNet insures the geometric skeleton and rotational parameters which are key things to drive any 3D character, VideoPose didn't use any of these parameters but still results are stable and better as compared to MotioNet.
So did you compare after applying some filters?
If you wanna test these videos by yourself then I can send you these videos.
Note: Both approaches are using pre-trained weights without any filter or smoothness.

Hi @ahsan3803 ,
Thanks for your work! It's so clear to show the difference between our network production and others. I'd like to explain more following your demonstration.
There are several reasons:

Videopose will predict 1 frame output from 243 frames input, but our network is fully-output which means 243 inputs will generate 243 outputs. In the test time, we also don't apply shifting to generate overlaying in the input sequence.
You can imagine: In their method, the 121th frame results will be generated from the 0th-243rd frame, and 122th frame results will be generated from the 1st-244th frame. It's essentially a strong temporal consistency compared to ours in the input data level.

We haven't used the same architecture in our network, because the main idea of this paper is using FK in the network so we can generate rotation with a consistent skeleton directly. The architecture we used is simple, but still can get comparable errors in the h36m dataset. 52mm(ours) vs 48mm(videopose). I will recommend using a stronger network architecture to extend this FK idea to reach a better performance if we need to use it in the real application.

In our demonstration, I haven't applied any filter here but I applied different scaling factors in global root position(it should be defined manually in our method). So you can find the improvement in which we can recover a global root position so it looks fancy. Compared to VideoPose, our methods can also produce expressive motion when given a solid 2d input, your 2nd video also shows that our leg can reach a better height. But yes, sometimes it's not smooth. I am considering if I need to release some basic filters on the output.

But for the 3th and a part in the 4th video, there should be something ignored. I will check it : )

And I have another question for you, after having the position of Videopose outputs, how do you convert it to bvh file? Using some IK solvers?
Feel free to let me know your ideas. Thanks!

@Shimingyi Thanks for explanation.
Regarding consistency of skeleton I have another question. How you calculate the absolute value of bone length as we can't get it even from dataset GT.
For the the 3rd and 4th video I just set better view in video creation but I think you can judge it with current view.
After getting skeleton information, I convert pose data to joints angles. Furthermore I use Euler method as representation.
I read your paper and checked the code that you are using Quaternions representation and order is zyx, whereas I follow the xzy order.
As Quaternions is best practice especially in machine level but still I can get good results using Euler. May be in future I will change it to Quaternions
I also have question about foot contact, I can see that code is using foot contact loss but how we can get predictions about foot contact? I mean same as joints rotations, bones etc from forward_fk? or you just use it within network to enhance the final results?

@ahsan3803
We don't predict the absolute value of bone length, we just predict a proportion of body skeleton. In our method, the gt of bone length will be scaled by its average length, so our network will also generate this kind of 'proportion'.  You can find it in this code.
Euler angle is ok if you don't use any learning optimization method. But I am also cautious of your transformation  from position to rotations. Do you use a ground truth skeleton? or do something like average? Ok riging? And how do you convert it to rotation?
Regarding foot contact, we have two losses here. Firstly, we will extract the gt of foot contact from the dataset and then predict it as a part in E_q output, so we can apply a reconstrution_loss of foot contact here. And in addition, we will constraint the velocity to be 0 when the foot is predicted as 'contact'. Related code: code.

This might be only tangentially related, but I noticed in the future work section of the paper you said

... there is no notion of contact constraints in the system, thus the resulting motion may suffer from foot sliding. This could potentially be solved by predicting the foot contact conditions and using a loss function term that evaluates the positional constraints as done by Lee et al. [2018b].

I feel like that's similar to what you are doing in the paper?

Hi @JinchengWang, the idea is similar but it's different.
You can imagine what causes foot sliding when you see a foot motion. On important thing is the foot moving, we consistant the velocity of foot to zero so it can be more stable. But another important thing is the height between the ground and foot joint, only when we can guarantee that the velocity=0 and height'=0, we can say it's stable.
But in our system, we don't reconstruct the environment so the network doesn't account for any physical constraints with ground. In this SIGGRAPH Asia, there is a paper called PhysCap can do it well, it's worth having a reading.

@Shimingyi I looked at the paper "Interactive Character Animation by Learning Multi-Objective Control" by Lee et al. It seems they addressed this problem by using a foot contact loss, which is almost identical to the L_FC term in your paper, instead of by "enforcing" this constraint, as in PhysCap?
While it is true that there is no visible foot sliding in their end result, the way you wrote it seems to imply they are using a fundamentally different method. (Which, I think, is not the case, assuming that I understand both paper correctly.)
BTW, great fan of the PhysCap paper as well! On hindsight, there is a glaring lack of cooperation between the pose estimation and humanoid robot control communities...

Hi @Shimingyi
For BVH conversion I use this tool for VideoPose.
As some other members are also asking about foot contacts and in your work foot contacts and global root position is key factor for any motion capture system.
I checked foot contacts from MotioNet and it seems that foot contact values are varying too much even in same actions. To deal and discuss with you I arranged some frames and foot contact values accordingly. Kindly check the attached images with frame numbers accordingly.
Just take these 2D-frames as examples.
Below image is based on 2D detections from OpenPose to check the foot.

Below image have foot contact labels of above mentioned example

We can see that foot contact values are varying. Furthermore I wanna ask that what are the standard to set foot contacts? I mean if height from foot is less than 20mm above the ground (as mentioned in paper section 3.3) then it will be consider as foot is in contact with ground. What if height of foot from ground is more than 20mm (it may be 50mm, 100mm, even more than 200mm etc....) so in this situation values of foot contact from MotioNet are always constant or will be changed according to height from ground?  I'm asking it because from above results, values are varying too much.
My other question is about global root position that in paper you used it as loss and there is method about it in Animation file.
So in getting BVH here you didn't make use of foot contacts and global position. This functionality will be supported in next commit or there is no plan to release this functionality?
Looking forward for your response.

Hi @Shimingyi
For BVH conversion I use this tool for VideoPose.
As some other members are also asking about foot contacts and in your work foot contacts and global root position is key factor for any motion capture system.
I checked foot contacts from MotioNet and it seems that foot contact values are varying too much even in same actions. To deal and discuss with you I arranged some frames and foot contact values accordingly. Kindly check the attached images with frame numbers accordingly.
Just take these 2D-frames as examples.
Below image is based on 2D detections from OpenPose to check the foot.

Below image have foot contact labels of above mentioned example

We can see that foot contact values are varying. Furthermore I wanna ask that what are the standard to set foot contacts? I mean if height from foot is less than 20mm above the ground (as mentioned in paper section 3.3) then it will be consider as foot is in contact with ground. What if height of foot from ground is more than 20mm (it may be 50mm, 100mm, even more than 200mm etc....) so in this situation values of foot contact from MotioNet are always constant or will be changed according to height from ground?  I'm asking it because from above results, values are varying too much.
My other question is about global root position that in paper you used it as loss and there is method about it in Animation file.
So in getting BVH here you didn't make use of foot contacts and global position. This functionality will be supported in next commit or there is no plan to release this functionality?
Looking forward for your response.

Hi @ahsan3803 ,
Thanks so much for your useful feedback! Those experiments can help others to understand the system better. Let me explain more in this thread:

The reason of the varying in test video. The input of this network is rooted_2d pose, the 'rooted' means the root joint of all the input 2d pose will be placed (0, 0). For this test video, that means the network didn't aware that the girl is jumping, just a sequence of a centered girl who is stretching her legs, an ambiguity will be happened for predicting foot contact label in this case. We use it in our system, because in the h36m dataset, almost all motions are standard walking, running and sitting so there are not so many conflicts. I will recommend to observe the foot contact label value in test data of h36m, it won't be a binary number but will be close to 1 or 0 based on our loss function here.

We want to use these two functions to describe a relationship between motion and contact. When you are putting down your right foot, we expect the following contact signal will be seen as 'contacted' and then the network will generate a local motion which the velocity of the right foot has been constrained. It's the motivation of these two losses.

We use a relative number to define the threshold of the contact label. You can find it with this code. We didn't assume the height of ground will be always 0, we will select the lowest 1/5 foot heights to estimate a ground height and then apply a threshold (20mm) on this estimated ground.

Now we just released the code about how to use the foot contact label as a loss in network, we didn't provide any post processing tools but actually after having the contact label we can run Ik to optimize the motion to be more stable. I am considering if I need to do open source that part because it's too engineering, which is not my intention for this repo... But I can do it after finishing other smoothing updates and bug fixing. Before that, you can follow  deep-motion-editing to understand it better : )

Best,
Mingyi

Hi @ahsan3803 ,
Thanks so much for your useful feedback! Those experiments can help others to understand the system better. Let me explain more in this thread:

The reason of the varying in test video. The input of this network is rooted_2d pose, the 'rooted' means the root joint of all the input 2d pose will be placed (0, 0). For this test video, that means the network didn't aware that the girl is jumping, just a sequence of a centered girl who is stretching her legs, an ambiguity will be happened for predicting foot contact label in this case. We use it in our system, because in the h36m dataset, almost all motions are standard walking, running and sitting so there are not so many conflicts. I will recommend to observe the foot contact label value in test data of h36m, it won't be a binary number but will be close to 1 or 0 based on our loss function here.

We want to use these two functions to describe a relationship between motion and contact. When you are putting down your right foot, we expect the following contact signal will be seen as 'contacted' and then the network will generate a local motion which the velocity of the right foot has been constrained. It's the motivation of these two losses.

We use a relative number to define the threshold of the contact label. You can find it with this code. We didn't assume the height of ground will be always 0, we will select the lowest 1/5 foot heights to estimate a ground height and then apply a threshold (20mm) on this estimated ground.

Now we just released the code about how to use the foot contact label as a loss in network, we didn't provide any post processing tools but actually after having the contact label we can run Ik to optimize the motion to be more stable. I am considering if I need to do open source that part because it's too engineering, which is not my intention for this repo... But I can do it after finishing other smoothing updates and bug fixing. Before that, you can follow  deep-motion-editing to understand it better : )

Best,
Mingyi

@Shimingyi Thanks so much for explanation

I got your points that in h3.6m datasets there are no such complex motions or actions. All the actions like walking, smoking,
discussion, taking photos, running and sitting etc. (upto 17 scenarios) are not such complex as any wild video and the most
important point I just noted in h3.6m datasets, that in these actions at same time (like jump) both foots will not leave the
ground this is we can say is weak perspective to rely on h3.6m datasets and then to use it in real-time videos. Is it right that
using current pre-trained weights of MotioNet it can't guarantee for jump like videos that both foots will leave the ground?
What if we add more real-time based data to train it?

Here one question arise that if we talk about velocity that velocity will be zero or same as in paper (section 3.3) if foot is in
contact so in sometimes foot will be in contact but ground level velocity will not be zero, I mean to say foot is moving on the
ground continuously like sliding and height is zero but velocity is not zero. So how MotioNet will deal it? I'm asking about it
that if we add some real-time datasets to train MotioNet. Yeah you already mentioned PhysCap which can deal it in better way
but it's not opensource.

This point I got it.

Yeah it's too engineering and as you know that currently the MotioNet (opensource) is the only model that can provide these
two important functionalities for motion capture. So we should wait for this wonderful step 😜. We are waiting for next big
commit.

@Shimingyi Thanks so much for explanation

I got your points that in h3.6m datasets there are no such complex motions or actions. All the actions like walking, smoking,
discussion, taking photos, running and sitting etc. (upto 17 scenarios) are not such complex as any wild video and the most
important point I just noted in h3.6m datasets, that in these actions at same time (like jump) both foots will not leave the
ground this is we can say is weak perspective to rely on h3.6m datasets and then to use it in real-time videos. Is it right that
using current pre-trained weights of MotioNet it can't guarantee for jump like videos that both foots will leave the ground?
What if we add more real-time based data to train it?

Here one question arise that if we talk about velocity that velocity will be zero or same as in paper (section 3.3) if foot is in
contact so in sometimes foot will be in contact but ground level velocity will not be zero, I mean to say foot is moving on the
ground continuously like sliding and height is zero but velocity is not zero. So how MotioNet will deal it? I'm asking about it
that if we add some real-time datasets to train MotioNet. Yeah you already mentioned PhysCap which can deal it in better way
but it's not opensource.

This point I got it.

Yeah it's too engineering and as you know that currently the MotioNet (opensource) is the only model that can provide these
two important functionalities for motion capture. So we should wait for this wonderful step 😜. We are waiting for next big
commit.

Yes, now the pre-trained model cannot handle the motion like jumping or others. A realiable reconstructed motion should consider two things: local joint motion and global movement, but current model are all focus on the first one. If you need to improve the performance in these cases, I will suggest to model the relationship between ground and foot using a better way rather than using a contact model which is too weak. We can have more discussion about how to design it if you are interested.

MotioNet cannot handle the slidng in ground, because the motivation of the velocity loss is to avoiding the sliding. In animaiton field people don't like it so we disign this consistency in a learning manner. In some way we simiplify this problem, but we hope it can bring inspirations.

I will keep working in this field so just feel free to contact me if you need help or any idea can be shared!

Yes, now the pre-trained model cannot handle the motion like jumping or others. A realiable reconstructed motion should consider two things: local joint motion and global movement, but current model are all focus on the first one. If you need to improve the performance in these cases, I will suggest to model the relationship between ground and foot using a better way rather than using a contact model which is too weak. We can have more discussion about how to design it if you are interested.

MotioNet cannot handle the slidng in ground, because the motivation of the velocity loss is to avoiding the sliding. In animaiton field people don't like it so we disign this consistency in a learning manner. In some way we simiplify this problem, but we hope it can bring inspirations.

I will keep working in this field so just feel free to contact me if you need help or any idea can be shared!

So did you compare after applying some filters?

Hello @ahsan3803
I am having issues in running the github. Can you let me know the steps as you have successfully been able to run it.
Thank you.

After getting skeleton information, I convert pose data to joints angles. Furthermore I use Euler method as representation.

Hi @ahsan3803 , can you please guide me as to how you were calculating joint angles from pose data,, i am lost there. I would really appreciate it.


Split state into a separate parameter

This PR changes the relationship between request and state. Instead of embedding request and state into the same type, it makes them two separate arguments. So req: Request<State> becomes req: Request, state: State. The idea behind this is that for smaller applications that are only parameterized by a single type calling that type "state" feel somewhat indirect.
Take for example this MongoDB example:
async fn index(req: Request<Database>) -> tide::Result {
    let coll = req.state().collection("fun_numbers"); // `req.state()` == `Database` is a relationship that is non-obvious
    let res = coll.insert_one(doc! { "x": 1 }, None).await?;
    let body = format!("the inserted id was: {:?}", res);
    Ok(Response::builder(200).body(body).into())
}

req.state() feels like an odd indirection to get to the parameterized type. Instead if the type was a direct input to the function it'd be easier to name and use:
async fn index(req: Request, db: Database) -> tide::Result {
    let coll = db.collection("fun_numbers"); // It's clear we're calling a method on the database here
    let res = coll.insert_one(doc! { "x": 1 }, None).await?;
    let body = format!("the inserted id was: {:?}", res);
    Ok(Response::builder(200).body(body).into())
}

This also makes it easier to convert from http_types::Request to tide::Request since the State param does not need to be populated. I don't think this functionally changes much about Tide; except that in some cases it'll just feel that little bit smoother.

One question raised on Discord by @jbr is whether we may instead want to merge / combine "global state" and "local state" into a single type. This could take the shape of a typemap that's passed along with both request and response.
Also related are https://github.com/http-rs/tide/pull/645 and https://github.com/http-rs/tide/issues/643.

What's the state (heh) of this PR? Having the state as a separate arg does seem to be a better interface to me so no opposition here, but it would be nice to either close or land this. The local/global states would be excellent too (I assume you meant request-local state).

This and https://github.com/http-rs/tide/pull/895 seem mutually exclusive, and https://github.com/http-rs/tide/pull/895 seems like a cleaner approach. What do you think, @yoshuawuyts?


MPI with SparseFunction on the mpi domain boundary

There seem to be an issue when the source is on or near the MPI halo in some cases.
MFE  to be made.

MFE should probably be along the lines of the tests here: https://github.com/devitocodes/devito/blob/master/tests/test_mpi.py#L1022


Add user namespace support / unprivileged mode.

This commit adds support for unprivileged operation if we are using
a chroot instead of a raw disk image (use of loopback devices are still
banned for raw disk images).  Remapping is done so the invoking user
'looks right' in the namespace, but all other file ownership looks strange.
Should work on modern Ubuntu and Fedora variants.  RHEL7 doesn't have
enough backported patches to make this function.  As it's tricky to
determine whether a given host has support for this mode, it must be
explicitly enabled at compile time.

This is fantastic, thank you! I am right in the middle of refactoring a major chunk of the sources so it is easier to maintain and add features. Once I finish with that, I will look at this in depth and see how to integrate it with the refactored code (unless you will want to do that).
I have some questions on exactly what is happening with the user namespace but I suspect they will be answered as I go through your code in more depth.

 whether a given host has support for this mode -- how could I figure out if particular debian/ubuntu release has support for it?

I tried writing a simple autoconf test for determining kernel support: it's not sufficient to look for kernel versions (lots of backporting occurs) or presence of constants in the header.  I gave up - it was a really tough in the end.  One really needs to check if:

You can create a user namespace.
You can perform bind mounts within the namespace.
For example, RHEL7 succeeds at (1) and fails at (2).  I think you can piece together things from the information in man 7 user_namespaces.

As for hints on which Ubuntu / Debian: I'd guess anything running 3.14 or 3.16.  Unfortunately, I really don't have much background on that platform.

I broke this PR, but please don't fix yet... Still doing more changes to the source code layout.

Ok, I think this is ready to go now.

FYI on the loop limitations, one could imagine using guestmount as a means of supporting unprivileged use of 'raw' files (and qcow2 files for that matter).

How does this sound to you.... Considering most people interested in --with-userns probably don't even want an setuid program on their computer, let's toggle the install-exec-hook in src/Makefile.am, such that sexec doesn't get the 4755 perm. Then we don't have to conditionalize how we are getting called and satisfies people interested in using it with no SUID.
Thoughts?

That approach might lead to packaging problems.  I was thinking that, with this, we could split singularity into two packages, singularity and singularity-setuid (containing only sexec) on platforms that support user namespaces (this avoids breaking most existing production sites).
This appeals to me, as the presence of the setuid binary is a bit more explicit.
Then, the logic would look something like:
if [[ -e "$SINGULARITY_libexecdir/singularity/sexec" || "x$SINGULARITY_FORCE_NOSUID" == "x" ]];
  exec "$SINGULARITY_libexecdir/singularity/sexec" "$@" <&0
else
  unset SINGULARITY_FORCE_NOSUID
  exec "$SINGULARITY_libexecdir/singularity/sexec_nosuid" "$@" <&0
fi

This would use the setuid binary if it's available (as that's going to always have the most features) while still providing a way for debugging / testing unprivileged mode via setting an env var.

if [[ -e "$SINGULARITY_libexecdir/singularity/sexec" && "x$SINGULARITY_FORCE_NOSUID" == "x" ]];

My concern with this is that users can then enable/disable execution through the SUID binary... However that is mitigated if we package it separately. We may want to end up having a non_SUID sexec-wrapper that just reads from the system owned config file and does the right thing, and then confirm from the SUID version that it should be allowed to run (and yes, of course or leave it unpackaged).
I am still thinking about separating the features from sexec.c to a new source called sexec_nosuid.c. There will be a lot of overlap in code, so we should move as much as we can into external source files/functions. Over time as more and more features become standard into the kernel, we can shift emphasis to sexec_nosetuid.c.
This way we can keep the current sexec focusing on all of the features we currently need escalation for and keep it as clean as possible. In parallel we can develop the future unprivileged version and have it directly address your needs first.
Thoughts?

Yeah - I thought about that too.  However:

If the sysadmin installs sexec setuid, then that binary can always be invoked directly.  I view these scripts as helpful helper scripts!
If there's kernel support for unprivileged mode, then the user can always download, compile sexec_nosuid, and execute from his or her home directory.

So, between the two, it seems reasonable to allow the user to select the mode.  The only improvement I could think of is allowing the sysadmin to put in a "setuid kill switch" into the config file that cases sexec to abort if it's disabled in the config file.  This seems to have nonzero-but-marginal value.
The problem I see with a separate sexec_nosuid.c is the behavior changes for nosuid aren't limited to sexec.c - in fact, there's a surprisingly small amount of code changes in sexec.c right now.  Most of it got factored out to the privilege handling code.

Well, with the first option, we can easily add the check to the setuid version and just exit immediately out if it is configured by the system admin not to run it.
The reason I was thinking this is because there are still a lot of changes coming that may not be necessary for the setuid version. You maybe exactly right, and I just don't have the changes or requirements fully grock'ed in my head yet, so I'll keep chugging through your PRs as I find opportunities!
Thanks!


Bundle size of the package is quite big

Bundle size of the package is quite big

The package size is expected to be small so when it is used inside a project it shouldn't be space inefficient.
Currently, the size of the package is 25MB which is quite big for usage

Bundle size of the package is quite big

The package size is expected to be small so when it is used inside a project it shouldn't be space inefficient.
Currently, the size of the package is 25MB which is quite big for usage

I concur. Quite a useful package too. best for me so far in terms of ease and functionality. but 25mb is just ridiculous

I checked the size, it. is just 0.66 MB.
Closing the issue


Gene Expression Saved State URL

This is a placeholder ticket.
@niknak33 to provide product requirements.

@seve(from sprint planning): Initial idea is to have constant query params in URL to track filter state. No share button, just rely on users copy + pasting URL to share. Analytics are innate via URL tracking, users navigating to shared link. If the filter state is too complex on loading, we show the user a toast explaining and send a plausible event notifying us that the filter state is too complex.
We may need a clear button to re-introduce a function to clear filter state, as user are currently using the browser refresh button to achieve this.
There is still the alternative idea to have a share button that generates the URL and puts it on the user's clipboard.

@signechambers1 @niknak33
Is this similar to Data consumers want to share filter selections with collaborators ?

@brianraymor yes it is.

@dsadgat - It would be helpful if there was a solution that could be reused across the platform then.

@brianraymor I actually dont really understand the solution you are proposing there, as it seems like (adding a request body) is not something easily usable (would require command line/interface) as opposed to being to directly stick that into the URL? I may be missing something, but I thought the idea was to be able to share the actual url.

I'm not proposing response bodies as a solution. Just documenting an earlier experience where OData heavily relied on complex query strings  and was surprised by the maximum length wall.
The length limitation needs to be considered in a design. There may be opportunities to compress the query string per JSONCrush.

@seve to check in with @niknak33


[WIP] Rationalise IPAM concepts

Fixes #2065.
This is all the implementation stuff, just working on the docs now. Comments welcome!

Working on docs... this looks (as anticipated) mighty odd:
--ipalloc-init=seed:::1

We could make the mode/parameter separator be =, and document it like this instead?
--ipalloc-init seed=::1

Even this looks better IMO:
--ipalloc-init=seed=::1

I don't like it.

Will be updating #1978 to bring it in line with these changes.

LGTM


Allow the Tab Switcher to initialize going backwards

#6732 implements the Tab Switcher in such a way that when in anchor mode, the ATS will always open up with the currently focusedTab + 1 selected. There's currently no way for a user to say if they wanted the keybinding to open the ATS with the currently focusedTab - 1 selected.
So, if the user bound ctrl+tab to tabSwitcher, the user would probably want to switch to a previous tab instead by pressing ctrl+shift+tab. Assuming both keychords are bound to tabSwitcher, they'll both open the ATS with focusedTab + 1 selected.
The ATS PR was going to implement it in a way where we'd add an initialDirection argument to let us know which direction the ats would open in, but it rightfully warranted some more discussion, So, to unblock #6732, I've pulled this out into its own follow up issue here.
Another option in the interest of avoiding passing another argument  could be to detect if shift is held down at the AppActionHandlers.cpp level and determine + pass the initial delta to the tab switcher for initialization?

After talking with @leonMSFT, I'm not sure what the alternative implementation here is to just using an optional initialDirection argument that defaults to forward. We shouldn't automatically capture the Shift modifier unless the user has specified it. No one likes "magic" like that.
It seems like a little bit of overkill using an argument to specify a boolean state, but it seems weirder to me to have two different action verbs like tabSwitcher and tabSwitcherReversed.

IIRC we're already handling Shift as "move backwards" in the tab switcher. So I think making Shift a magic modifier would be intuitive. I just don't see a use case for a separate keybinding command or arg to represent it.
There's a few scenarios that I think are a bit interesting though...
Overwrite Shift keybinding
{ "command": "tabSwitcher", "keys": "ctrl+tab" },
{ "command": "copy", "keys": "ctrl+shift+tab" }

I think ctrl+shift+tab should do "copy".
Already include Shift in key chord
{ "command": "tabSwitcher", "keys": "ctrl+shift+tab" }

we just interpret that as always go backwards? (not too sure about this scenario :/ )

Just to clarify, do you mean that the user would have this line in their settings:
{"command": {"action":"tabSwitcher", "anchorKey":"ctrl"}, "keys":"ctrl+tab"}

and we would magically in the back also allow ctrl+shift+tab to open the tab switcher going backwards (unless there's an override like in your example) ?
I definitely agree that using shift and expecting it to go backwards while you have the above binding set is kind of intuitive, but I do feel safer and more comfortable with making the user explicitly tell us that ctrl+shift+tab opens the tab switcher. I'm still not decided on if they should also explicitly tell us that ctrl+shift+tab goes backwards and ctrl+tab goes forwards.
Like, currently we have nextTab and prevTab bound to ctrl+tab and ctrl+shift+tab respectively. If the user wants to switch over to using ATS, they'd have to unbind both commands and rebind the keychords to ATS anyway.

Yeah.
{"command": {"action":"tabSwitcher", "anchorKey":"ctrl"}, "keys":"ctrl+tab"}

My concern is that if we go the route of needing a keybinding arg or new keybinding for "tab switcher going backwards", what happens if you do not have ctrl+shift+tab defined as a keybinding. Like, we're kinda forcing users to define two keybindings for one concept.
Ugh. But then you can also say the opposite. What happens if somebody does this:
{ "command": null, "keys": "ctrl+shift+tab" }

That should probably disable shift for tab switcher, but it won't.
Curious to what others think. Maybe just doing what you're saying about nextTab and prevTab would be the right move. :/

We already have two bindings for the one thing (next/prev)

If we look at the anchored ATS keybinding not just as an "open tab switcher" keybinding, but also as a prevTab/nextTab keybinding, it might makes more sense to force the users to create two keybindings: one for openATS + prevTab, and one for openATS + nextTab. It'll basically replace the existing nextTab/prevTab!
In that case, does initialDirection make sense as an arg, and maybe the args should be named prevTab and nextTab, with default being nextTab if initialDirection is omitted? 🤔

Alright here's a totally different approach that might simplify this a lot. How about we simply override nextTab/prevTab (nT/pT) to use the anchored ATS, and turn unanchored ATS into tabSearch?
Chances are, users aren't going to be setting both nT/pT along with anchored ATS. They would be using one or the other. In the interest of letting users choose which experience they want, we could provide a useNewTabSwitcherExperience flag to swap the behavior of nT/pT. We could also get rid of the flag once this is out of preview and force users to the new experience. If the flag is true, nT/pT will open what is right now considered anchored ATS with the next/prev tab focused. If the flag is false, nT/pT will do what it does currently. Then we would end up having a tabSearch keybinding, which opens unanchored ATS with its search bar and all.
A couple of issues come to mind if ATS takes over nextTab/prevTab though:

Without an anchorKey argument, we'd be forced to hardcode ctrl as the anchor key, and if people decide to customize nT/pT in such a way where ctrl isn't included in their keychord, they're gonna have a bad time. I'm not sure if it's possible to detect modifiers in a given keychord so that we can just auto assign an anchor key?
Invoking nT/pT in the cmdpal would be kinda weird since right now, anchored mode relies on the user releasing the anchor key in order to select the tab.

Thoughts?

The thing I like about nT/pT being "move forward and backward in an anchored tab switcher" is that it makes our key bindings more aware of the things that are happening in the app. "Next tab" has a different meaning when the anchored switcher is open -- it just means "move to the next entry or wrap."
My argument in favor is: I expect that users aren't going to want to bind next/prev tab and "open tabswitcher with next/prev selected" simultaneously. We have to make a call about what our experience is going to be here.

nT/pT already wraps.
I like the idea of the unanchored tab switcher being separated out. I feel like tabSearch could be a mode in the command palette, and we just allocate a prefix for it (similar to commandline mode and action mode).
If we have tab switcher only operate in anchored mode, we also run into the following problem:

what if I bind tabSwitcher to f1?

Maybe if no modifier is provided or we hit a weird situation, we should just fall back to tabSwitcher being unanchored? Otherwise it makes no sense. (this would be a solution to Leon's 2 points above too)

I'm also curious what @cinnamon-msft 's thoughts are as our UX person

it just means "move to the next entry or wrap."

nT/pT already wraps.

My point was not that it would suddenly start wrapping, my point was that it would suddenly start "doing the right thing" when there was ephemeral UI (the switcher overlay.)

Invoking nT/pT in the cmdpal would be kinda weird since right now, anchored mode relies on the user releasing the anchor key in order to select the tab.

This would be fine. If nT/pT are activated by the keyboard and the global useNewTabSwitchingExperience (whatever) is set, it does the switcher. If you manually invoke a nT/pT command in any other way, it just does the thing.
Just like Carlos's Mark mode - things act different depending on the mode.

I have a few thoughts off the top of my head:
For unanchored mode, the current behavior opens with the focused tab selected, so I'm not sure this issue would affect that. Additionally, is there a benefit to having both the command palette and the unanchored tab switcher? These seem fairly redundant in my opinion.
For anchored mode, I would assume the behavior for pT/nT should align with the tab switcher. It seems funny to let both the tab switcher previous/next and tab focus previous/next be customizable. I'm wondering if we should just have a global "use the tab switcher" setting and then use the pT/nT values for navigation. This may provide a technical difficulty for finding the anchor key though.

I'm wondering if we should just have a global "use the tab switcher" setting and then use the pT/nT values for navigation.

YES! Kayla independently suggested the same thing as Leon in https://github.com/microsoft/terminal/issues/7178#issuecomment-673148673
🎲

The thing I like about nT/pT being "move forward and backward in an anchored tab switcher" is that it makes our key bindings more aware of the things that are happening in the app. "Next tab" has a different meaning when the anchored switcher is open -- it just means "move to the next entry or wrap."

Oh this got me thinking - currently the ATS is just hardcoded to detect tab/shift+tab/down/up keydowns to navigate the tab switcher. But it really should also be detecting nT/pT keychords go next/go back. I'm not sure how that'll work though, since TermControl is the keybinding handler, and I don't (think?) that TermControl will receive the keydowns when ATS is open and focused?

This may provide a technical difficulty for finding the anchor key though.

I was actually thinking - there's maybe no need to define an "anchor key", it really should just be an "anchor keychord". Maybe it should just detect if "no keys are pressed" on a KeyUpHandler (aka you've let go of the last key in your whole nT/pT keychord), and just focus your selected tab then?

what if I bind tabSwitcher to f1?
Maybe if no modifier is provided or we hit a weird situation, we should just fall back to tabSwitcher being unanchored? > Otherwise it makes no sense. (this would be a solution to Leon's 2 points above too)

I honestly think if I go with the whole "detecting no keys pressed" thing above, f1 will simply open/close ATS quickly and focus your next tab. They'll simply need to provide another key if they want it to work "anchored".

This would be fine. If nT/pT are activated by the keyboard and the global useNewTabSwitchingExperience (whatever) is set, it does the switcher. If you manually invoke a nT/pT command in any other way, it just does the thing.

By "it just does the thing" do you mean it'll do classic nT/pT, or just whatever the nT/pT handler happens to do (taking into account if the global is set or not)?

Yeah, that