View controller manager

Relevant to #691.
This is a utility class to find the current view controller for use with presentViewController:animated:completion:. The implementation is probably not too far from correct. Please review it. At least this allows implementing this logic in one place and reusing it throughout the SDK (and in wrapper SDKs). This can replace the implementation in Parth's PR that was borrowed from RN (and that can be replaced if this is released).
I also want to write some tests for this, but wanted to give everyone time to have a look.

Result of Integration 1
Duration: 10 minutes and 28 seconds
Result: All 220 tests passed, but please fix 1 warning.
Test Coverage: 64%

This will be pretty useful.  I've needed code does something similar in several places in the SDK.
Maybe instead of a whole class, a single function would do, with a function signature like UIViewController* nullable BNCCurrentViewController(), or a method on the Branch shared instance?
Here's one place I've put a lot of work in to finding the current view controller:
https://github.com/BranchMetrics/ios-branch-deep-linking/blob/master/Branch-SDK/Branch-SDK/BNCStrongMatchHelper.m#L258-L287
It's doesn't worry about alerts.
Here's where how it's used:
https://github.com/BranchMetrics/ios-branch-deep-linking/blob/master/Branch-SDK/Branch-SDK/BNCStrongMatchHelper.m#L323-L335
I'm happy to work with you on this.

I really just wanted to get the ball rolling here after it came up a couple of times in PR reviews. I was actually hoping... you'd just do the work @E-B-Smith. :smile: (Kidding, kidding.)
This solution was obviously tailored to presentViewController:animated:completion:, which is a common need. Part of the idea behind the manager class was also to support operations directly, so you can just call the method on the manager and let it send the message to currentViewController. I see in the strong match helper you add the SFSafariVC as a child VC of the currently visible VC, or something like that. So that's a somewhat different need, though the solution to that problem ought to solve the first problem as well. When presenting with a container VC, you can present from the container or the child, so it's not necessary to dig out the actual visible VC. When you need that, you may also want to account for modal presentation by following the chain of presentedViewControllers as here (the child of the container may be presenting another container, with a child presenting another VC, etc.).
I wonder if there's a more general solution to the container VC issue, since you have not only UINavigationController, UITabBarController, UISplitViewController but also others like UIPageViewController and any custom container VC. It's probably possible to iterate over the child view controllers with some possible exceptions for things like nav controllers where you have the topViewController property for simplicity.
I don't have a strong opinion about implementation. It's probably a good idea to start simple and iterate if necessary.

It is probably possible to go the the UIResponder chain starting with the current firstResponder and find the "top" view controller that way.  It's a more general solution that will probably work, but I haven't done any testing with it, where as I have used and tested the StrongMatch helper version that has special cases.

See PR #755 Current ViewController.

I added the vc branch version of this that adds a category on [UIViewController bnc_currentViewController].  I've tested code like that a lot and it is general purpose and handles view controllers with children view controllers.


Enforce all plugin uploads to Gradle Plugin Portal require PGP signature

Expected Behavior
Published plugins should have cryptographic signatures, so they can be verified at the consumer side.
Note: this is related to https://github.com/gradle/gradle/issues/10443, however #10443 is a Gradle part for verification of checksums/signatures, however Gradle Plugin Portal forbids publishing of PGP signatures.
So this issue is to enforce (or "strongly advice") plugin authors to publish PGP signatures along with regular plugin jars.
Current Behavior
Current plugins are published without clear signatures, so consumers cannot tell if the jar was produced by a trusted party or not.
Note: SHA signatures do not help with that.
In other words, every time a plugin updates, it would require consumers to lookup a new SHA and bake that in a build script.
If published plugins had signatures, then build script could reference "a set of trusted PGP keys", so it won't require to update the SHA sums on each version update.
Context
I'm trying to implement a reproducible and trusted build (e.g. for https://github.com/apache/jmeter ).
The sad thing is Plugin Portal does not require plugin authors to publish signatures, so it really hard to check if a specific plugin jar is trusted or not.
For instance: https://plugins.gradle.org/m2/org/gradle/kotlin/plugins/1.2.9/
Is there a way to verify if plugins-1.2.9.jar corresponds to plugins-1.2.9-sources.jar?
Who was the author of those artifacts?

Oh. It looks like Plugin Portal forbids publishing o PGP.
I have tried to add sign artifact, and there's a dedicated error message:
Ignoring unknown artifact type with extension "asc" and classifier ""
You can only upload normal jars, sources jars, javadoc jars and groovydoc jars
to the plugin portal at this time.
Ignoring unknown artifact type with extension "asc" and classifier "sources"
You can only upload normal jars, sources jars, javadoc jars and groovydoc jars
to the plugin portal at this time.
Ignoring unknown artifact type with extension "asc" and classifier "javadoc"
You can only upload normal jars, sources jars, javadoc jars and groovydoc jars
to the plugin portal at this time.

@melix , sorry for pinging you here, but this issue might be relevant in the context of PGP verification.
Just in case, it turns out if I publish the plugin to Maven Central it just works, and it even supports PGP verification, so it looks like Central is a bit better than GPP for now :-/

Wait, gradle plugins are still not signed?

The issue is still relevant

I just pushed a plugin to Gradle Plugin Portal, and it somehow accepted .asc signatures:
> Task :publishPlugins
Publishing plugin io.github.vlsi.karaf version 1.0.0
Thank you. Your new plugin io.github.vlsi.karaf has been submitted for approval by Gradle engineers. The request should be processed within the next few days, at which point you will be contacted via email.
Publishing artifact build/libs/gradle-karaf-plugin-1.0.0.jar
Publishing artifact build/libs/gradle-karaf-plugin-1.0.0.jar.asc
Publishing artifact build/libs/gradle-karaf-plugin-1.0.0-sources.jar.asc
Publishing artifact build/libs/gradle-karaf-plugin-1.0.0-groovydoc.jar.asc
Publishing artifact build/libs/gradle-karaf-plugin-1.0.0-javadoc.jar.asc
Publishing artifact build/libs/gradle-karaf-plugin-1.0.0-sources.jar
Publishing artifact build/libs/gradle-karaf-plugin-1.0.0-groovydoc.jar
Publishing artifact build/libs/gradle-karaf-plugin-1.0.0-javadoc.jar
Publishing artifact build/publish-generated-resources/pom.xml


Beautifier image doc

Description
Beautifier image doc
Type of change

[ ] Bug fix
[ ] New Tutorial
[x] Updated or additional documentation
[ ] Additional Testing
[ ] New Activation and the changes conform to the activation contribution guidelines
[ ] New Callback and the changes conform to the callback contribution guidelines
[ ] New Image addition and the changes conform to the image op contribution guidelines
[ ] New Layer and the changes conform to the layer contribution guidelines
[ ] New Loss and the changes conform to the loss contribution guidelines
[ ] New Metric and the changes conform to the metric contribution guidelines
[ ] New Optimizer and the changes conform to the optimizer contribution guidelines
[ ] New RNN Cell and the changes conform to the rnn contribution guidelines
[ ] New Seq2seq addition and the changes conform to the seq2seq contribution guidelines
[ ] New Text addition and the changes conform to the text op contribution guidelines

Checklist:

[x] I've properly formatted my code according to the guidelines

[ ] By running Black + Flake8
[ ] By running pre-commit hooks

[ ] This PR addresses an already submitted issue for TensorFlow Addons
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] This PR contains modifications to C++ custom-ops

How Has This Been Tested?
If you're adding a bugfix or new feature please describe the tests that you ran to verify your changes:
*

@mels630 @fsx950223 @abhichou4 @autoih @sayoojbk
You are owners of some files modified in this pull request.
Would you kindly review the changes whenever you have the time to?
Thank you very much.


DOC: Typo fix scipy/cluster/hierarchy.py

Fixes #7785
Replaces icoords and dcoords with icoord and dcoord

Somehow you got something weird going on in your git history, this cannot be merged. Can you please make sure your commit is on top of an up-to-date scipy master branch?

I figured out the issue. I'll take this PR down and put up another.


Missing parens when inserting Range

@av: I just tried to elm-upgrade a project (elm-color-extra, obvisouly not mine), and noticed this diff:
-            List.map2 (\i cl -> ( (toFloat i / toFloat l), cl )) [0..l] palette
+            List.map2 (\i cl -> ( (toFloat i / toFloat l), cl )) List.range 0 l palette

And the compiler complains about the number of arguments to map2.

Ah, this bug should go to -> https://github.com/avh4/elm-format/issues

Fixed in https://github.com/avh4/elm-format/issues/271  will be in elm-format 0.5.1-alpha


Problems

Hello, I found something that could be a problem, I'll give you an example: You have a page that as soon as the person enters it has a validation to check if it is mobile or not, ok? so far so good! however if the link on this page is shared via whatsapp, when placing the link on the whatsapp chat page a request is made to this page, just placing the link on the whatsapp chat, so your page will result in an error, because unfortunately your library was triggered but cannot identify, so it generates an error. I really enjoyed your work, I'm just trying to improve.

If you open a link from whats-app, it will be opened on the default browser of the platform(ex: Safari on iPhone?). Is that not rite ?
Can you try http://bit.ly/request-headers in that environment and share what User-Agent value you are seeing ?

Hi,
I have a similar problem on Instagram in-app browser. I tried to open this url (http://bit.ly/request-headers) but I couldn't see anything, see the attachment.
Then I tried another detection website (https://developers.whatismybrowser.com) and it detected the user agent.
User Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Instagram <IP_ADDRESS>.121 (iPhone9,3; iOS 12_4_1; tr_TR; tr-TR; scale=2.00; 750x1334; 224680684)
Phone: IPhone 7
OS: iOS 12.4.1


Assembly Dependency Error between SQL Server Module and NAV Tools in BC Container

Describe the issue
There is a compatibility problem between NAVTools DLLs and SQL Server Tools DLLs. This means that required dependencies cannot be resolved and this leads to an assembly error. Here the modules probably have to be loaded in separate sessions with New-PSSession & Invoke-Command { SQL Cmds ... }
Scripts used to create container and cause the issue
 $ContainerImage = Get-BCArtifactUrl -Select Latest -Type Sandbox -Country de
 $Credential = [PSCredential]::new("azadmin", (ConvertTo-SecureString $Password -AsPlainText -Force ))
  New-BcContainer -UseTraefik -Multitenant -UpdateHosts -UseSSL -Accept_eula -artifactUrl $ContainerImage -Credential $Credential -auth UserPassword -PublicDnsName $PublicDNSName

Export-BcContainerDatabasesAsBacpac -sqlCredential ([PSCredential]::new("azadmin", (ConvertTo-SecureString $Password -AsPlainText -Force))) -doNotCheckEntitlements -tenant "default"

Full output of scripts
BcContainerHelper is version 6.0.17
BcContainerHelper is running as administrator
HyperV is Disabled
Host is Microsoft Windows Server 2022 Datacenter Azure Edition - 10.0.20348.2402
UsePsSession is True
UsePwshForBc24 is True
UseWinRmSession is allow
UseSslForWinRmSession is True
Docker Client Version is 26.1.1
Docker Server Version is 26.1.1
Removing Session bcserver
Removing container bcserver
Removing entries from hosts
Removing bcserver from container hosts file
Removing bcserver-* from container hosts file
Removing Desktop shortcuts
Removing C:\ProgramData\BcContainerHelper\Extensions\bcserver
Downloading artifact /sandbox/24.0.16410.19115/de
Downloading C:\Users\azadmin\AppData\Local\Temp\9d4262f4-9f85-4d2e-813d-f33311c24691.zip
Unpacking artifact to tmp folder using Expand-Archive
Downloading platform artifact /sandbox/24.0.16410.19115/platform
Downloading C:\Users\azadmin\AppData\Local\Temp\506b2ac9-f64e-4441-a2ea-bef055357a04.zip
Unpacking artifact to tmp folder using Expand-Archive
Downloading Prerequisite Components
Downloading c:\bcartifacts.cache\sandbox\24.0.16410.19115\platform\Prerequisite Components\IIS URL Rewrite Module\rewrite_2.0_rtw_x64.msi
Downloading c:\bcartifacts.cache\sandbox\24.0.16410.19115\platform\Prerequisite Components\DotNetCore\DotNetCore.1.0.4_1.1.1-WindowsHosting.exe
Fetching all docker images
Fetching all docker volumes
Enabling SSL as otherwise all clients will see mixed HTTP / HTTPS request, which will cause problems e.g. on the mobile and modern windows clients
Using image mcr.microsoft.com/businesscentral:ltsc2022
PublicDnsName is veo-testbox.gws-cloud.de
Creating Container bcserver
Style: sandbox
Multitenant: Yes
Version: 24.0.16410.19115
Platform: 24.0.19098.0
Generic Tag: <IP_ADDRESS>
Container OS Version: 10.0.20348.2402 (ltsc2022)
Host OS Version: 10.0.20348.2402 (ltsc2022)
Using process isolation
Using locale de-DE
Adding special CheckHealth.ps1 to enable Traefik support
Disabling the standard eventlog dump to container log every 2 seconds (use -dumpEventLog to enable)
Additional Parameters:
--expose 5986
-e webserverinstance=bcserver
-e publicdnsname=veo-testbox.gws-cloud.de
-l "traefik.protocol=https"
-l "traefik.web.frontend.rule=PathPrefix:/bcserver"
-l "traefik.web.port=443"
-l "traefik.soap.frontend.rule=PathPrefix:/bcserversoap;ReplacePathRegex: ^/bcserversoap(.*) /BC$1"
-l "traefik.soap.port=7047"
-l "traefik.rest.frontend.rule=PathPrefix:/bcserverrest;ReplacePathRegex: ^/bcserverrest(.*) /BC$1"
-l "traefik.rest.port=7048"
-l "traefik.dev.frontend.rule=PathPrefix:/bcserverdev;ReplacePathRegex: ^/bcserverdev(.*) /BC$1"
-l "traefik.dev.port=7049"
-l "traefik.snap.frontend.rule=PathPrefix:/bcserversnap;ReplacePathRegex: ^/bcserversnap(.*) /BC$1"
-l "traefik.snap.port=7083"
-l "traefik.dl.frontend.rule=PathPrefixStrip:/bcserverdl"
-l "traefik.dl.port=8080"
-l "traefik.dl.protocol=http"
-l "traefik.enable=true"
-l "traefik.frontend.entryPoints=https"
--env customNavSettings=PublicODataBaseUrl=https://veo-testbox.gws-cloud.de/bcserverrest/odata,PublicSOAPBaseUrl=https://veo-testbox.gws-cloud.de/bcserversoap/ws,PublicWebBaseUrl=https://veo-testbox.gws-cloud.de/bcserver
Files in C:\ProgramData\BcContainerHelper\Extensions\bcserver\my:
- AdditionalOutput.ps1
- AdditionalSetup.ps1
- CheckHealth.ps1
- HelperFunctions.ps1
- MainLoop.ps1
- SetupVariables.ps1
- updatehosts.ps1
Creating container bcserver from image mcr.microsoft.com/businesscentral:ltsc2022
fa0f7cb3fc32c398a520557b3c69bf26e2b565a1b1c9e743c0c9547356c01abc
Waiting for container bcserver to be ready
Using artifactUrl https://bcartifacts-exdbf9fwegejdqak.b02.azurefd.net/sandbox/24.0.16410.19115/de
Using installer from C:\Run\240
Installing Business Central: multitenant=True, installOnly=False, filesOnly=False, includeTestToolkit=False, includeTestLibrariesOnly=False, includeTestFrameworkOnly=False, includePerformanceToolkit=False, appArtifactPath=c:\dl\sandbox\24.0.16410.19115\de, platformArtifactPath=c:\dl\sandbox\24.0.16410.19115\platform, databasePath=c:\dl\sandbox\24.0.16410.19115\de\BusinessCentral-DE.bak, licenseFilePath=c:\dl\sandbox\24.0.16410.19115\de\Cronus.bclicense, rebootContainer=True
Installing from artifacts
Starting Local SQL Server
Starting Internet Information Server
Copying Service Tier Files
c:\dl\sandbox\24.0.16410.19115\platform\ServiceTier\Program Files
c:\dl\sandbox\24.0.16410.19115\platform\ServiceTier\System64Folder
Copying Web Client Files
c:\dl\sandbox\24.0.16410.19115\platform\WebClient\Microsoft Dynamics NAV
Copying ModernDev Files
Copying ConfigurationPackages
C:\dl\sandbox\24.0.16410.19115\de\ConfigurationPackages
Copying Test Assemblies
C:\dl\sandbox\24.0.16410.19115\platform\Test Assemblies
Copying Extensions
C:\dl\sandbox\24.0.16410.19115\de\Extensions
Copying Applications
C:\dl\sandbox\24.0.16410.19115\platform\Applications
Copying Applications.DE
C:\dl\sandbox\24.0.16410.19115\de\Applications.DE
Copying dependencies
Importing PowerShell Modules
Restoring CRONUS Demo Database
Setting CompatibilityLevel for tenant on localhost\SQLEXPRESS
Exporting Application to CRONUS
Removing Application from tenant
Modifying Business Central Service Tier Config File for Docker
Creating Business Central Service Tier
Installing SIP crypto provider: 'C:\Windows\System32\NavSip.dll'
Starting Business Central Service Tier
Importing license file
Copying Database on localhost\SQLEXPRESS from tenant to default
Taking database tenant offline
Copying database files
Attaching files as new Database default
Putting database tenant back online
Mounting tenant database
Mounting Database for default on server localhost\SQLEXPRESS with AllowAppDatabaseWrite = False
Sync'ing Tenant
Tenant is Operational
Stopping Business Central Service Tier
Installation took 314 seconds
Installation complete
Initializing...
Setting host.containerhelper.internal to <IP_ADDRESS> in container hosts file
Starting Container
Hostname is bcserver
PublicDnsName is veo-testbox.gws-cloud.de
Using NavUserPassword Authentication
Creating Self Signed Certificate
Self Signed Certificate Thumbprint 32E7EFD88CE7CF97CF8191BC2B15DDCD63F4F1D1
DNS identity veo-testbox.gws-cloud.de
Modifying Service Tier Config File with Instance Specific Settings
Modifying Service Tier Config File with settings from environment variable
Setting PublicODataBaseUrl to https://veo-testbox.gws-cloud.de/bcserverrest/odata
Setting PublicSOAPBaseUrl to https://veo-testbox.gws-cloud.de/bcserversoap/ws
Setting PublicWebBaseUrl to https://veo-testbox.gws-cloud.de/bcserver
Starting Service Tier
CertificateThumprint 32E7EFD88CE7CF97CF8191BC2B15DDCD63F4F1D1
Registering event sources
Creating DotNetCore Web Server Instance
Using application pool name: bcserver
Using default container name: NavWebApplicationContainer
Copy files to WWW root C:\inetpub\wwwroot\bcserver
Create the application pool bcserver
Create website: NavWebApplicationContainer with SSL
Update configuration: navsettings.json
Done Configuring Web Client
Enabling Financials User Experience
Dismounting Tenant
Mounting Tenant
Mounting Database for default on server localhost\SQLEXPRESS with AllowAppDatabaseWrite = False
Sync'ing Tenant
Tenant is Operational
Creating http download site
Setting SA Password and enabling SA
Creating azadmin as SQL User and add to sysadmin
Creating SUPER user
Enable PSRemoting and setup user for winrm
Creating self-signed certificate for winrm
Container IP Address: <IP_ADDRESS>
Container Hostname  : bcserver
Container Dns Name  : veo-testbox.gws-cloud.de
Web Client          : https://veo-testbox.gws-cloud.de/bcserver/?tenant=default
Dev. Server         : https://veo-testbox.gws-cloud.de
Dev. ServerInstance : BC
Dev. Server Tenant  : default
Setting bcserver to <IP_ADDRESS> in host hosts file
Setting bcserver-default to <IP_ADDRESS> in host hosts file
Setting bcserver-default to <IP_ADDRESS> in container hosts file

Files:
http://veo-testbox.gws-cloud.de:8080/ALLanguage.vsix
http://veo-testbox.gws-cloud.de:8080/certificate.cer

Container Total Physical Memory is 8.0Gb
Container Free Physical Memory is 1.4Gb

Initialization took 81 seconds
Ready for connections!
Reading CustomSettings.config from bcserver
Creating Desktop Shortcuts for bcserver
Cleanup old dotnet core assemblies
Container bcserver successfully created
Because of Traefik, the following URLs need to be used when accessing the container from outside your Docker host:
Web Client:        https://veo-testbox.gws-cloud.de/bcserver?tenant=default
SOAP WebServices:  https://veo-testbox.gws-cloud.de/bcserversoap
OData WebServices: https://veo-testbox.gws-cloud.de/bcserverrest
Dev Service:       https://veo-testbox.gws-cloud.de/bcserverdev
Snapshot Service:  https://veo-testbox.gws-cloud.de/bcserversnap
File downloads:    https://veo-testbox.gws-cloud.de/bcserverdl
Health check returns False, restarting container
Removing Session bcserver
bcserver
Waiting for container bcserver to be ready

Initializing...
Setting host.containerhelper.internal to <IP_ADDRESS> in container hosts file
Restarting Container
PublicDnsName unchanged
Hostname is bcserver
PublicDnsName is veo-testbox.gws-cloud.de
Using NavUserPassword Authentication
Starting Local SQL Server
Starting Internet Information Server
Starting Service Tier
Container IP Address: <IP_ADDRESS>
Container Hostname  : bcserver
Container Dns Name  : veo-testbox.gws-cloud.de
Web Client          : https://veo-testbox.gws-cloud.de/bcserver?tenant=default
Dev. Server         : https://veo-testbox.gws-cloud.de
Dev. ServerInstance : BC
Dev. Server Tenant  : default
Setting bcserver to <IP_ADDRESS> in host hosts file
Setting bcserver-default to <IP_ADDRESS> in host hosts file
Setting bcserver-default to <IP_ADDRESS> in container hosts file

Files:
http://veo-testbox.gws-cloud.de:8080/ALLanguage.vsix
http://veo-testbox.gws-cloud.de:8080/certificate.cer

Container Total Physical Memory is 8.0Gb
Container Free Physical Memory is 3.5Gb

Initialization took 11 seconds
Ready for connections!
Waiting for tenants to be mounted

Use:
Get-BcContainerEventLog -containerName bcserver to retrieve a snapshot of the event log from the container
Get-BcContainerDebugInfo -containerName bcserver to get debug information about the container
Enter-BcContainer -containerName bcserver to open a PowerShell prompt inside the container
Remove-BcContainer -containerName bcserver to remove the container again
docker logs bcserver to retrieve information about URL's again

-------------------------------------------------
Export-BcContainerDatabasesAsBacpac -sqlCredential ([PSCredential]::new("azadmin", (ConvertTo-SecureString "%7~0&45[vVzG" -AsPlainText -Force))) -doNotCheckEntitlements -tenant "default"

Copying Database on localhost\SQLEXPRESS from CRONUS to tempCRONUS
Removing Database tempCRONUS from localhost\SQLEXPRESS
Taking database CRONUS offline
Copying database files
Attaching files as new Database tempCRONUS
Putting database CRONUS back online
Remove Windows Users from tempCRONUS
Remove Application Roles from tempCRONUS
Remove data from System Tables database tempCRONUS
Remove Network Service User from tempCRONUS
Remove System User from tempCRONUS
Exporting as BacPac...
Connecting to database 'tempCRONUS' on server 'localhost\SQLEXPRESS'.
Extracting schema
Extracting schema from database
Resolving references in schema model
Validating schema model
Validating schema model for data package
Validating schema
Exporting data from database
Exporting data
Processing Export.
Processing Table '[dbo].[Configuration Package File]'.
Processing Table '[dbo].[Entitlement Set]'.
Processing Table '[dbo].[Entitlement]'.
Processing Table '[dbo].[Membership Entitlement]'.
Processing Table '[dbo].[Page Documentation]'.
Processing Table '[dbo].[OData Edm Type]'.
Processing Table '[dbo].[Upgrade Blob Storage]'.
Processing Table '[dbo].[Report Layout]'.
Processing Table '[dbo].[Media Resources]'.
Processing Table '[dbo].[NAV App Resource]'.
Processing Table '[dbo].[NAV App Publish Reference]'.
Processing Table '[dbo].[Power BI Blob]'.
Processing Table '[dbo].[Power BI Default Selection]'.
Processing Table '[dbo].[$ndo$dbproperty]'.
Processing Table '[dbo].[$ndo$tenants]'.
Processing Table '[dbo].[$ndo$cachesync]'.
Processing Table '[dbo].[$ndo$taskscheduling]'.
Processing Table '[dbo].[$ndo$inplacepublishingstate]'.
Processing Table '[dbo].[$ndo$inplacepublishingstatus]'.
Processing Table '[dbo].[$ndo$inplacepublishingworkloads]'.
Processing Table '[dbo].[$ndo$inplacepublishingbaseline]'.
Processing Table '[dbo].[$ndo$textlookup]'.
Processing Table '[dbo].[$ndo$textmap]'.
Processing Table '[dbo].[$ndo$textobjectmap]'.
Processing Table '[dbo].[Object]'.
Processing Table '[dbo].[Object Metadata]'.
Processing Table '[dbo].[Server Instance]'.
Processing Table '[dbo].[Add-in]'.
Processing Table '[dbo].[NAV App Object Metadata]'.
Processing Table '[dbo].[NAV App Tenant App]'.
Processing Table '[dbo].[NAV App]'.
Processing Table '[dbo].[NAV App Dependencies]'.
Processing Table '[dbo].[NAV App Capabilities]'.
Processing Table '[dbo].[NAV App Object Prerequisites]'.
Processing Table '[dbo].[Media]'.
Processing Table '[dbo].[Media Set]'.
Processing Table '[dbo].[Published Application]'.
Processing Table '[dbo].[Application Object Metadata]'.
Processing Table '[dbo].[Application Dependency]'.
Processing Table '[dbo].[Installed Application]'.
Processing Table '[dbo].[Inplace Installed Application]'.
Processing Table '[dbo].[Report Layout Definition]'.
Processing Table '[dbo].[Application Resource]'.
Processing Table '[dbo].[Permission Set]'.
Processing Table '[dbo].[Permission]'.
Processing Table '[dbo].[Debugger Breakpoint]'.
Processing Table '[dbo].[Debugger Watch]'.
Processing Table '[dbo].[Send-To Program]'.
Processing Table '[dbo].[Style Sheet]'.
Processing Table '[dbo].[Profile]'.
Processing Table '[dbo].[Profile Metadata]'.
Processing Table '[dbo].[Profile Page Metadata]'.
Processing Table '[dbo].[Chart]'.
Processing Table '[dbo].[Web Service]'.
Successfully exported database and saved it to file 'C:\ProgramData\BcContainerHelper\Extensions\bcserver\app.bacpac'.
Time elapsed 0:00:26.17
Could not load type 'Microsoft.Extensions.DependencyInjection.ServiceCollection' from assembly 'Microsoft.Extensions.DependencyInjection.Abstractions,
Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60'.

Exception Script Stack Trace:
at <ScriptBlock>, <No file>: line 426
at <ScriptBlock>, <No file>: line 423

PowerShell Call Stack:
at Invoke-ScriptInBcContainer, C:\Program Files\WindowsPowerShell\Modules\BcContainerHelper\6.0.17\ContainerHandling\Invoke-ScriptInNavContainer.ps1: l
ine 71
at Export-BcContainerDatabasesAsBacpac, C:\Program Files\WindowsPowerShell\Modules\BcContainerHelper\6.0.17\Bacpac\Export-NavContainerDatabasesAsBacpac
.ps1: line 70
at <ScriptBlock>, <No file>: line 1

Container Free Physical Memory: 1.8Gb

Services in container bcserver:
Export-BcContainerDatabasesAsBacpac Telemetry Correlation Id: 9e45f492-c52a-4525-80a7-501b3d7e5083
Could not load type 'Microsoft.Extensions.DependencyInjection.ServiceCollection' from assembly
'Microsoft.Extensions.DependencyInjection.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
At C:\Program Files\WindowsPowerShell\Modules\BcContainerHelper\6.0.17\ContainerHandling\Invoke-ScriptInNavContainer.ps1:112 char:13
+             throw $errorMessage
+             ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Could not load ...9793829ddae60'.:String) [], RuntimeException
    + FullyQualifiedErrorId : Could not load type 'Microsoft.Extensions.DependencyInjection.ServiceCollection' from assembly 'Microsoft.Extensions.De
   pendencyInjection.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
...

Screenshots
Additional context
This seems to be a general problem when loading the DLLS between NAVTools and SQLServer Tools.

Please supply the log from the generation of the container as well for me to see which version of OS, BC etc.

I have added the full log to the "Full output of scripts" section.
Thanks

Version  <= "23.2" works as expected.

Tried this on my machine:
$credential = New-Object pscredential -ArgumentList 'admin', (ConvertTo-SecureString -String 'P@ssword1' -Force -AsPlainText)
$artifactUrl = Get-BcArtifactUrl -country de -select Latest
New-BcContainer -Multitenant -UseSSL -Accept_eula -artifactUrl $artifactUrl -Credential $Credential -auth UserPassword
Export-BcContainerDatabasesAsBacpac -sqlCredential $credential -doNotCheckEntitlements -tenant "default"

works fine.
When you say 23.2 works fine - did you test 23.5? (I would assume that the problem would start with 24)

I have hit some similar problem when I was trying to upgrade some environment to 23.3. In my case, when I imported first the sqlserver module and then the BC admin module, cmdlet "Export-NAVApplication" ended with error:
Export-NAVApplication: Method not found: 'Void Microsoft.Data.SqlClient.SqlConnectionStringBuilder.set_Encrypt(Boolean)'.

I have found that this was problem on my Windows 2019 server and not on Windows 2022 server, which have newer SqlSrv32.dll drivers
When I separated the usage of SqlServer module and BC admin module into separate background jobs, it works ok.

Btw, I was using the "add_AssemblyResolve" trick which is used in the Restore-BcDatabaseFromArtifacts function, but it stopped to work when I moved my management scripts to Pwsh7 and I removed it and separated the SqlServer usage from the BC admin module usage as described in previous post. It means it could be combination of Pwsh7 vs Powershell5 vs Windows 2019 vs Windows 2022 vs SqlSrv32.dll driver version...

Could be connected with https://github.com/microsoft/navcontainerhelper/issues/3527

I have hit some similar problem when I was trying to upgrade some environment to 23.3. In my case, when I imported first the sqlserver module and then the BC admin module, cmdlet "Export-NAVApplication" ended with error:
Export-NAVApplication: Method not found: 'Void Microsoft.Data.SqlClient.SqlConnectionStringBuilder.set_Encrypt(Boolean)'.

I have found that this was problem on my Windows 2019 server and not on Windows 2022 server, which have newer SqlSrv32.dll drivers
When I separated the usage of SqlServer module and BC admin module into separate background jobs, it works ok.

Separating into different sessions is also my colleague's solution.

Would it be possible to test this with HyperV isolation? (listed as disabled on your machine)

Yes i checked that one but it didn't help either. Im wondering if you are using sqlps or the SQLServer module while testing? Maybe that's a problem?
To give you a few more details:
I simply use a Bicep Template to deploy the machine. After that i install the Docker host with this script:
    $DockerInstall = 'https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1'
    Invoke-WebRequest $DockerInstall -UseBasicParsing -o installdockerce.ps1

Followed by installing the container helper (latest) and creating a new container (latest). No further modifications are made to the underlying machine and no modifictions to the container aswell.
I can remove the machine, roll it out again and the problem still exists.

The Export to bacpac happens inside the container.
I don't load SQLPS or SqlServer directly - I just use Invoke-SqlCmd
If running PS5 inside the container (before BC24) - that will (I think) use SQLPS, if running PS7 (BC24 and above) that will use SqlServer, which is installed in the container only in PS7.
If you run other scripts inside the container, which loads SqlServer in PS5 (it isn't installed), then that might be the reason for the failure.
If you try to Remove-BcContainerSession -containerName $containerName before Exporting to bacpac - or set $bccontainerHelperConfig.usePsSession =  $false - that would be worth trying out.
I cannot repro the problem

I seem to have the same problem. Trying to get a local Business Central instance running in Docker for development purposes.
$containerName = 'bcsandbox'
$tenantId = 'default'
$tenantBacpac = "C:\ProgramData\BcContainerHelper\Production_20240522_01.bacpac"

$artifactUrl = Get-BcArtifactUrl `
    -type sandbox `
    -country "fr" `
    -version "24.0.16410.17628" `
    -select Closest
Write-Output $artifactUrl

New-BCContainer `
    -accept_eula `
    -containerName $containerName `
    -multitenant `
    -artifactUrl $artifactUrl

I can access the BC tenant in my browser but only with the default Cronus database.
Now trying to insert a database export from our BC Online production tenant.
Restore-DatabasesInBcContainer `
    -bakFile $tenantBacpac `
    -containerName $containerName `
    -databaseName 'default'

Results in the same logs an identical error:
Could not load type 'Microsoft.Extensions.DependencyInjection.ServiceCollection' from assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60'

Quite new to this, not sure if there is something I can do to fix this?
(I have no export of a v23 database so cannot try if it works on this version. Inserting the v24 bacpac into a v23 BC Docker results in "incorrectly formed" error by SQL Server.)

PowerShell v5 produces to same error
PS C:\WINDOWS\system32> Restore-DatabasesInBcContainer -bakFile "C:\ProgramData\BcContainerHelper\Production_20240522_01.bacpac" -containerName 'bcsandbox' -databaseName 'default'
BcContainerHelper version 6.0.17
BC.HelperFunctions emits usage statistics telemetry to Microsoft
Running on Windows, PowerShell 5.1.22621.2506
Restoring C:\ProgramData\BcContainerHelper\Production_20240522_01.bacpac to default
Could not load type 'Microsoft.Extensions.DependencyInjection.ServiceCollection' from assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60'.

Exception Script Stack Trace:
at Restore, <No file>: line 25
at <ScriptBlock>, <No file>: line 40

PowerShell Call Stack:
at Invoke-ScriptInBcContainer, C:\Program Files\WindowsPowerShell\Modules\BcContainerHelper\6.0.17\ContainerHandling\Invoke-ScriptInNavContainer.ps1: line 71
at Restore-DatabasesInBcContainer, C:\Program Files\WindowsPowerShell\Modules\BcContainerHelper\6.0.17\Bacpac\Restore-DatabasesInNavContainer.ps1: line 73
at <ScriptBlock>, <No file>: line 1

Container Free Physical Memory: 11.2Gb

Services in container bcsandbox:
Restore-DatabasesInBcContainer Telemetry Correlation Id: f987cab3-62da-4c0b-9736-ffacf01e93c2
Could not load type 'Microsoft.Extensions.DependencyInjection.ServiceCollection' from assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
At C:\Program Files\WindowsPowerShell\Modules\BcContainerHelper\6.0.17\ContainerHandling\Invoke-ScriptInNavContainer.ps1:112 char:13
+             throw $errorMessage
+             ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Could not load ...9793829ddae60'.:String) [], RuntimeException
    + FullyQualifiedErrorId : Could not load type 'Microsoft.Extensions.DependencyInjection.ServiceCollection' from assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb97
   93829ddae60'.

More specifically, the error raises in Invoke-ScriptInNavContainer (fucntion Invoke-ScriptInBcContainer) on line 287 when executing a .ps1 script in the container.
docker exec bcsandbox pwsh "C:\ProgramData\BcContainerHelper\f4159623-3429-4daa-87c3-693432c7ab83.ps1"

f4159623-3429-4daa-87c3-693432c7ab83.txt

Any solution for this yet? Just tried to restore the database for my new container and got the same error message as above :(

@awpehl  - and if you run with PS5 it works ?

PowerShell v5 produces to same error
PS C:\WINDOWS\system32> Restore-DatabasesInBcContainer -bakFile "C:\ProgramData\BcContainerHelper\Production_20240522_01.bacpac" -containerName 'bcsandbox' -databaseName 'default'
BcContainerHelper version 6.0.17
BC.HelperFunctions emits usage statistics telemetry to Microsoft
Running on Windows, PowerShell 5.1.22621.2506
Restoring C:\ProgramData\BcContainerHelper\Production_20240522_01.bacpac to default
Could not load type 'Microsoft.Extensions.DependencyInjection.ServiceCollection' from assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60'.

Exception Script Stack Trace:
at Restore, <No file>: line 25
at <ScriptBlock>, <No file>: line 40

PowerShell Call Stack:
at Invoke-ScriptInBcContainer, C:\Program Files\WindowsPowerShell\Modules\BcContainerHelper\6.0.17\ContainerHandling\Invoke-ScriptInNavContainer.ps1: line 71
at Restore-DatabasesInBcContainer, C:\Program Files\WindowsPowerShell\Modules\BcContainerHelper\6.0.17\Bacpac\Restore-DatabasesInNavContainer.ps1: line 73
at <ScriptBlock>, <No file>: line 1

Container Free Physical Memory: 11.2Gb

Services in container bcsandbox:
Restore-DatabasesInBcContainer Telemetry Correlation Id: f987cab3-62da-4c0b-9736-ffacf01e93c2
Could not load type 'Microsoft.Extensions.DependencyInjection.ServiceCollection' from assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
At C:\Program Files\WindowsPowerShell\Modules\BcContainerHelper\6.0.17\ContainerHandling\Invoke-ScriptInNavContainer.ps1:112 char:13
+             throw $errorMessage
+             ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Could not load ...9793829ddae60'.:String) [], RuntimeException
    + FullyQualifiedErrorId : Could not load type 'Microsoft.Extensions.DependencyInjection.ServiceCollection' from assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb97
   93829ddae60'.

You need to be running PS5 inside the container

@awpehl  - and if you run with PS5 it works ?

I already tried PS5 but didn't work. How can I run the PS5 inside the container?

run $bcContainerHelperConfig.usePwshForBc24 = $false after importing bccontainerhelper and before running your script

run $bcContainerHelperConfig.usePwshForBc24 = $false after importing bccontainerhelper and before running your script

Worked for me! Thanks 👍

Just note that now everything else inside the container runs PowerShell 5 as well - and as a result of this, runs slower.

And how is this supposed to work if the PS bridge is removed with v26?
And what about the other known issues (like missing files and other stuff) that are worked around today by forcing the good old Windows PS?
Btw.: The dll has several versions in only one container:

<IP_ADDRESS>904
<IP_ADDRESS>210
<IP_ADDRESS>805
<IP_ADDRESS>103
8.0.824.36612
8.0.1024.46610

I have asked them to NOT remove the bridge in v26.
My suggestion is to go away from the entire PS5 / PS7 thingy - and create a BC CLI instead - and then create a PS module, which calls the CLI and works on whatever PS version + python and other scripting languages.
So, I think the bridge will stay until we are there.

That is a good idea in the current situation. Thank you for providing this information.


[DEMO-2] Update /welcome page during the "show-the-thing" demo

Note
Should only be merged after #165, (during tomorrow's demo)

Somehow a spelling mistake slipped by our typically quite vigilant developers.
Furthermore, based on user feedback we have also increased the text size and added more emojis.
Screenshot

@evadb, I know you have strong opinions on this, so I am interested in working your suggestions into the user research we already have.

Also closing this one because of the unauthorized emoji usage.

Moment of silence for emojis, gone too soon


Add Custom Card Sets

When setting up a new session I would like to be able to add my own set of cards that meet our teams working agreements.

fully supported,
this is same as my case:
https://github.com/microsoft/azure-boards-estimate/issues/329

Thanks for your suggestion.


YUIDoc type refinement: {Number} -> {Integer}

Hi, I've submitted some PRs dealing the YUIDoc additions. Currently (well, after a secondary commit) the PR changes only use {Number} for numeric parameters.
However, one thing that I prefer in other projects is to refine types from {Number} to {Integer} where such is appropriate. I know that there is no "int" type in JavaScript, but I personally feel that adding such a type "hint" to the documentation increases the overall clarity when such is valid to require or can be guaranteed.
As pointed out (on my now-not-head-changes), it would be inconsistent if {Integer} was used only in a limited fashion and not applied to all the YUIDoc type annotations where such a "hint" holds. Thus I am looking for 'guidance' on the top.
Should/must {Number} to be used exclusively for all numeric types, even those with a finite set of fixed values, "Scale Modes" and "Blend Modes"? Or can the types be refined as {Integer}? Or would it be even more appropriate to use {ScaleMode}?
I would like to go to at least {Integer} type "hints" - I don't know how to get YUIDoc to create a new type without it also being a "class", and that makes me feel uncomfortable about {ScaleMode} even though is absolutely the most precise/accurate.
I would be willing to spend a little bit of time updating the documentation for consistency and carefully apply {Integer} to types that are currently annotated as {Number}, where such a change is prudent. (I would also hope that, if done, such a documentation-oriented PR without any feature changes could be hurried through a merge!)
But since I'm just :swimmer: around in here and have very little say on The PIXI Way, or any consistency guidelines about the YUIDoc comments/annotations, it is appropriate that relevant blessings are obtained before such a proposal is implemented - or it would just be another loved, but lonely, backlogged PR.

@pnstickne I have gone through the englercj/pixi.js#dev-rewrite branch and rewritten the docs as jsdoc. If you want to convert all the {number} spots to {integer} or {double} feel free to throw in a PR!


added game info to the final state file

Status? To what was this a response?

This information was originally in the state file. It is breaking the drag and drop reply on the site. There might also be something I need to push for that too.


feat: Update ACA-Py to 0.11.0

Heads up: Updates Askar

@anwalker293 -- could you please update this PR to 0.12.0 (or 0.12.1, which should be available later today)?

@swcurran Yes! I'll hop on this. Hopefully this will be straightforward, as it looks like there's some Indicio repo dependencies that also need to be updated

cc @loneil


Release

Lots of new awesome.

[x] npm run publish
[x] see it in gateway ; grab hash
[x] pin hash to gareway
[x] create ops request to release hash

Done: https://github.com/ipfs/ops-requests/issues/25#issuecomment-231304745


The package.json of codemirror-graphql points to files that do not exist

I think there is some kind of mis-configuration in the building or publishing process related to the codemirror-graphql package. The sub-modules usually have the ESM folder exported but this one... well it doesn't.
The main and module properties are pointing to files/folders that do not exist.

Some examples:

codemirror-graphql (bug, no ESM folder exported)
<EMAIL_ADDRESS>

graphql-language-service-interface (yes, ESM folder exported)
<EMAIL_ADDRESS>

graphql-language-service-parser (yes, ESM folder exported)
<EMAIL_ADDRESS>

graphql-language-service-server (yes, ESM folder exported)
<EMAIL_ADDRESS>

Considerations:

It seems that the ESM files are scattered within the root folder rather than in the /esm sub-folder on the registry version
I forked the codemirror-graphql package and I built it according to  configuration and the esm folder is correctly created ... but this doesn't reflect the published version on the npm registry.
This seems a long time bug affecting all previous releases

NPM Registry<EMAIL_ADDRESS>My build:

is for legacy support. codemirror-graphql needs to publish its files from the root folder because there are a ton of legacy imp0lementations

the other issues should not be present and it seems are a hiccup from the esm transition. codemirror-graphql will be dropped from graphiql for 2.0 so we are still deciding on the future of it's lifecycle.


Replication: Policy/Configuration Design

Master issue: #31
This issue is for the design of the general policy/configuration of replication and associated behaviors, while trying not to stray too far from the topic of configuration and things that strongly relate to it.
This is an initial post only and is not to be treated as or assumed to be the final design specification. It's just me writing down my thoughts at the present time. The final specification will be documented as appropriate, at least in manpages for the replication feature, and probably also eventually on github, in the wiki for this project.
So... Here it goes....
Initial Thoughts
Where/How to Store Settings
For consistency with the rest of SIAZ, my initial thought is that replication settings should be implemented as user properties on the ZFS datasets that are to be involved in replication, where those settings are directly applicable to datasets.
There are also some settings that are more general, such as transport options (use of encryption, compression, rate limits, etc), which likely make sense to be available as global configuration options. However, in the interest of flexibility, I also think any such settings should have the option of being overridden per dataset.
A few situations for which I can foresee that being useful, overriding global settings for a subset of replicated datasets:

An ISO repository, which contains no confidential data, for which the use of encryption would be an unnecessary waste of resources to encrypt during transfer
The replication target for some datasets is a system on the local network or even the same system, and you don't want to encrypt or compress those transfers
You want to restrict the transfer rate for remote destinations, to conserve limited internet bandwidth, but have other targets that are local and don't need those limits
Some target systems have different ZFS versions or different ZFS features on their pools, and you want to provide different options to be used by zfs send to accommodate them. This could also be the case if you want some datasets sent with --raw, --holds, etc.
You want some datasets to be replicated with intermediates and others without (-I vs -i)
You need to use different credentials or a different authentication mechanism for different target systems
Probably plenty of others that will come up as I design this feature

High-Level Mechanics
Push Model
My current plan is to implement replication as a push model, with the source containing the necessary settings to replicate data to the targets.
Replication is Optional
While replication capabilities will be part of the single SIAZ application, obviously not all users will want/need replication. Thus, all replication functionality insofar as the server and client services are concerned will default to disabled. The server side, which is the "target" side, will not even listen for replication requests unless enabled, and the client side, which is the replication "source," will not attempt to contact other systems unless replication is enabled and there are datasets configured for replication.
Target Overrides
Replication Target Path
Something that comes to mind is that an administrator may want a target system to have some control over where replicated snapshots get written. My thought is that, by default, a source system will write to the destination that the source server indicates in its push replication request, unless the target system has an alternative path defined. For instance, a target system could have a global setting such as ReplicationTargetsRootPath, which could be a zfs path to a dataset under which you want all replicated datasets to be placed. This could present issues with path depth and name lengths, though, so it will need careful consideration and implementation.
A target system may also wish to override options passed to zfs receive, such as compression, encryption, dedup, hash algorithm, etc. Those options will also need to go somewhere, which can either be in a configuration file (easiest) or perhaps be defined on the replication target parent dataset, or both. My current inclination for that kind of override is that it should be placed in a JSON dictionary in the target system's configuration files, since that would allow for provisioning target policies before the first snapshot is ever sent.
Pausing Targets
A target system may need to pause replication for any number of reasons. Just a few examples:

The target system is in a maintenance window
A replication source system is attempting to send snapshots the administrator does not want and a quick way to block it is desired
Changes are being made to the target system's pool/dataset layout, and you want to pause replication until that is finished
You want to pause replication on a target while a trim or scrub is in progress

Pause settings should be able to be changed at runtime without a restart of the SIAZ service, and should be available both globally and per source, in case one simply wants to pause replication coming from a specific source system (maybe the source is compromised or is being reconfigured and you don't want replication to continue until that's been addressed).
Access Control
The replication service should have access control settings, to restrict access to the replication service. These controls should be treated as an allow-list, with the default policy being to reject all requests that do not match an explicitly-configured rule on the target.
Access Control Methods
Host-Based ACLs
At the most basic level, there should be a host-based access control list, such as a list of IP addresses and/or host names which are allowed to initiate replication operations. This type of access control will be implemented, no matter what other mechanisms are also implemented. This functionality is obviously redundant to mechanisms that can be implemented on the system itself, such as firewalls, but just provides one more layer and enables granular control without requiring the SIAZ administrator to have system level permissions to control the firewall.
Configuration for this would be contained in the JSON files, and could be as simple as a JSON array of strings. However, I think it would be simpler and also more flexible for the end user for replication settings on target systems to implicitly be the ACLs. If an entry exists in the replication settings section for a host, even if it's just an empty/null object, that host would be allowed. Then there wouldn't have to be a separate ACL in addition to other replication settings.
Authorization
It may be desirable to restrict the specific replication operations a given client is authorized to perform on a target. For example, maybe you have a monitoring system that should be allowed to request replication status, but you want only specific hosts to be allowed to actually push a replication stream. This may be redundant with other ideas/mechanisms, so may not need dedicated configuration.
More Advanced Authentication
More powerful forms of access control such as x509 certificate authentication, SSH keys, or other authentication mechanisms available on the target system may be useful for access control, and certainly would provide stronger security than simple network-based access control, which has obvious limitations.\
Certificate Authentication (x509)
Certificate authentication should be fairly simple to implement, and can even be performed at the transport level, during the TLS handshake, for raw TLS socket transport. It's also pretty easy to set up for WCF netTCP, which can be configured to use it at multiple levels, so I'm inclined to implement certificate-based authentication first.
Related configuration could be implemented as a JSON object, in each host entry, of various certificate properties, such as thumbprints, issuer identifiers, subject names, EKU OIDs, etc.
For simplicity of implementation with reliable security, I'm inclined to implement the entries as JSON objects with several property options available, but requiring either a specific thumbprint or a combination of other properties that provide a reasonable degree of assurance of authenticity, such as the combination of Authority Key Identifier plus one or more of:

Enhanced Key Usage
Subject Key Identifier
Subject Name
A match against a SAN entry
Serial number
Initial implementation will likely just be thumbprint, with other options to come later. I may include the ability to force trust of a certificate and/or disable revocation checking on certificates, to allow for easier testing and whatnot, but of course strongly discourage those actions for any reason, production or non-production, since that's awful practice and both of them circumvent critical parts of what certificates are all about. I'll likely make a forced log output if those options are used or require an explicit command-line option or something...

SSH Keys
Allowing the use of SSH keys for authentication is a possibility for implementation in the replication feature. How it would be implemented is not something I have given much thought to. It will not be an initial option, as I think it would be most appropriate to use sshd itself for this feature, and use an ssh connection for authentication and encryption of the transfer, if the user wishes to use SSH rather than the native TLS capabilities SIAZ will already have. I'm not going to give more thought to this mechanism for now, until other mechanisms are finished.
PAM/Kerberos/LDAP/Etc
Authentication via these mechanisms is also a possibility for future enhancements, but are not likely to be part of the initial implementation, unless the additional time and effort required for a well though-out implementation of one or more of them is trivial enough to make me want to include them in SIAZ 1.2. While .net should make use of these mechanisms transparent, in the application code, I am not currently familiar with the explicit and proper/secure use of those mechanisms when communicating over a raw socket in code without using other middleware such as sshd to perform the authentication before handing the connection to SIAZ.
Custom Replication Pipeline Configuration
It would be nice, in the interest of maximum flexibility, to allow the end user to have complete control over the actual replication pipeline, outside of metadata communication SIAZ will need to do to properly maintain full functionality.
In other words, allowing the user to specify a significant portion of everything between the zfs send and the zfs receive, potentially even including specifying options to pass to those commands, as well.
Configuration for that could get pretty complex, depending on how far it is taken.
There are also obvious potential pitfalls, such as it being possible and fairly easy for a user to specify configuration for that feature which is incompatible with other SIAZ-related configuration. Thus, careful consideration will be necessary in designing the scope of such a feature.
That feature also is almost certainly not going to be included in 1.2, and, if/when it is eventually implemented, it will probably have various restrictions on what is allowed, and will almost definitely come with the disclaimer and condition that its use is discouraged and definitely not supported, aside from it existing. If this feature is implemented, there are likely to be other limitations, as well, such as it not having feature-parity with SIAZ-native mechanisms. For example, custom pipelines may not offer the ability to communicate metadata between source and client, essentially treating it as if SIAZ doesn't even exist on the target.
Alternatively, it could simply come with the stipulation that, if you implement a custom pipeline, it MUST ultimately result in something that, at the target, still connects to a SIAZ replication endpoint. I'll cross that bridge when I get there.
That's it for now.
When I have more thoughts to record, I'll reply on the appropriate issue.

Continued thoughts, as I've been prototyping some code to see how things feel:
At the global configuration level (JSON files), it makes sense to define defaults that will apply to replication tasks, of course with the ability to override relevant items on a per-policy basis.
Also, since a SIAZ instance can be both a source and a target for replication, it will be cleaner and clearer, in my opinion, to organize global replication settings into a Replication section, as with Monitoring, and then subdivide that section into two separate sections for settings specific to SIAZ acting as a source or target.
Since Kestrel is already part of the application for monitoring, it does make sense to also use Kestrel for replication, to provide a simple transport. So, that will be one of the ways replication can happen, and is likely to be the first one, in fact, due to ease of implementation.
A nice bonus of that is that, if someone wants to implement their own client for replication, it will be fairly easy to do so, using simple and standard tools, such as curl, the .net HttpClient, etc, though such implementations will still have to deal with metadata, as SIAZ replication streams will have more than just the raw ZFS send stream in them.
Where to place that configuration, though, is something that needs to be figured out. For organizational purposes, to keep things nice and clean, I'd like that configuration to be under the Replication section. However, that may present a challenge when configuring Kestrel, or I'll just have to code around that to set Kestrel up properly, if both Monitoring and Replication are in use. Otherwise, the typical way of doing it would be for ALL Kestrel configuration to be in one place. That may not be so bad, since we're just talking about endpoints. However, SIAZ up to 1.1 has the Kestrel section under the Monitoring section. Perhaps I will just do the same under the Replication section, and merge the configuration in code. I have not yet decided which way to go, though talking about it here is making me lean toward having a Kestrel sub-section inside any section that it is relevant to, the way Monitoring currently is.
Anyway...
Back to defaults...
The settings relevant to SIAZ being a source or target are different.
SIAZ as a replication source
When SIAZ is the source system, meaning it is acting as a client, initiating a push replication to a target, the following are settings relevant to all items, and which make sense to have available defaults:

Target endpoint (Addres/FQDN and port)
Whether to use TLS or not
Compression options

Note that this is compression that will be applied to the stream, so any compression options configured in Kestrel are likely to provide no benefit or may potentially actually increase the amount of data transmitted, on the wire.
Compression options for the transport stream will be communicated to the server, so that the server can set up the appropriate decompressor.
Only the zfs send stream is likely to be compressed. Other communication is much smaller anyway and will mostly be carried out uncompressed, and I may even opt for some to be injected as HTTP headers, which could have advantages for troubleshooting.

If using TLS, which client certificate to present to the server for authentication and authorization
Client-side metadata preferences. Do we send all SIAZ properties, just replication-related properties, or none at all?
Command-line options to pass to zfs send (likely to be limited to a subset of possible options, but that will depend on what's relevant when I get there)

SIAZ as a replication target
When SIAZ is a target. meaning it is acting as a server, receiving a replication stream from a replication source, here's what I've thought up so far for "defaults":

Root ZFS dataset to store received datasets under
Sever-side metadata preferences. Similar to client-side, and overriding any requested by the client.
Server-side decompression options

If any are relevant, they will be a pretty restricted set, likely restricted to options that do not affect the stream itself, such as the following, if/when applicable or even possible:

Memory limits
Threading limits
Dictionary
Buffering of writes to zfs receive's stdin stream

Default retention settings to apply
Current ideas for that are:

Inherit from local parent
Use source properties
Explicit properties, which each override individually, only if set

Command-line options to pass to zfs receive (as with source, this is likely to be limited to a subset, mainly to avoid configurations that would interfere with SIAZ)

Global Settings (other than defaults)
There are also, of course, global settings that don't correspond to per-item settings.
SIAZ as a source

Global enable/disable of sending replication streams
Whether to expose metrics to the monitoring service, if configured
Source address/interface to use (this might actually also be useful on a per-policy basis)
Network layer protocol preference (IPv4/IPv6)

SIAZ as a target

Global enable/disable of receiving replication streams
Access control

For Kestrel, this can be part of Kestrel configuration.
For other possible mechanisms, I will cross that bridge when I get there

Whether to expose metrics to the monitoring service, if configured

Per-Dataset Policy Configuration
General
Per-dataset policy configuration will be implemented in ZFS user properties, as with other SIAZ per-dataset configuration.
These properties will use the snapsinazfs.com:replication base namespace.
Settings will follow the typical rules of inheritance, as dictated by the behavior of ZFS, with the most-local settings taking precedence over others. Corresponding default settings in global configuration will have the lowest precedence and will only apply when a dataset does not have a local or inherited value for that setting, for most settings. If a situation arises where a setting does not make sense to apply locally if it is inherited, SIAZ will ignore the inherited setting and apply any corresponding configured defaults. I don't know if that situation will arise, but that's how I'll handle it if it does.
Settings
The following lists are the settings I've considered so far.
These are just ideas, and not all of them will necessarily be included in the initial implementation or at all.
Mandatory
These settings would be required for replication to work.
They may be defined locally, inherited, or set in global defaults but they MUST be defined with valid values or else the item they apply to will be skipped for replication and a warning will be logged.

Remote endpoint

If a remote endpoint is using TLS, the hostname must be able to be validated against the server's certificate. Generally, that means it needs to be the FQDN. In general, though, the .net 7 HttpClient's rules for certificate validation will dictate how this behaves.
If not set locally, use global default remote endpoint.
If global default remote endpoint is invalid or missing, skip the current dataset and log a warning.

Enable/Disable
Inherit value as follows:

Use ZFS inheritance rules
If invalid or missing, use global default
If global default is invalid or missing, assume disabled. Skip the current dataset and log a warning.

If client certificate authentication is in use by the remote system, a setting to specify that certificate will be needed, as well, and would be mandatory, in that case.

Optional
These settings modify replication behavior, but are not required to be defined explicitly at any level.
These settings will either have hard-coded defaults or will use other SIAZ settings for defaults, if undefined.

Schedule

Default would be to process replication policies on the interval defined by the greatest common denominator of all global template FrequentPeriod settings, which is the same period snapshot processing operates on.
If set for a dataset, a
Would need to have a format specification.
Ideas for formats:

Intervals, as with other SIAZ settings that use intervals
cron style schedule strings
systemd style calendar strings. Bonus there is they can be validated via systemd-analyze calendar and, since SIAZ is already designed to work with systemd, there's a pretty high chance that utility will be available to the user.

This might be something that makes sense to define a template system for, since most installations are likely to use a small number of schedules

Might even be something to just define globally, since the vast majority of setups are likely to only use one schedule, and filter criteria (describe below) provide some degree of overlap with explicit scheduling, though of course scheduling is far more flexible.

Continuous, always, immediate, or maybe *  could be a special value indicating that any new snapshots that match the rest of the policy should be replicated as soon as they are discovered by SIAZ, or maybe even queued up to be sent as soon as SIAZ has created them.
Invalid schedules should result in the dataset being skipped for replication, with a warning logged.

Snapshot match criteria

These are filters to be applied when determining which snapshots are to be replicated.
If undefined and no global default is defined, all snapshots of the current dataset will be eligible for replication
Many possibilities here, including almost any properties

Can be exclusion or inclusion
Wildcards, ranges, and/or some other kind of globbing would be nice
AND and OR combinations would be a nice-to-have, though initial implementation is likely to be OR unless I get ambitious
I am likely to start out with a small set of properties for the first version, such as snapshot period

Inheritance of these will naturally be how ZFS handles them, but I am wondering if providing an additional setting to allow combining locally-defined values with inherited values could be useful.

Such a behavior would likely have multiple potential modes of operation:

Local: Use the locally-defined policy only, and fail if necessary defaults are not defined
Default: Use the locally-defined policy or global defaults, for settings not defined locally
Restrict (AND): Locally-defined policy further restricts any settings that are specified by a parent

This would only match the set of snapshots that is the intersection of the set of matches of the parent policy and the set of matches of the child policy

Combine (OR): Locally-defined policy expands the parent's policy to include matches from local policy

This would match the set that is the unique values of the union of the set of matches of the parent policy and set of matches of the child policy

Inheritance using this kind of scheme would need to walk the whole tree to build the appropriate resultant set of policy for each dataset. Logic for that already partially exists in SIAZ's current implementation of ZfsRecord and ZfsProperty<T>, but would have to be modified to support alternate modes.

This may also make sense to allow templating

This is also just a post of my thoughts.
Things said here may or may not be how I actually end up implementing them, as this is just me putting my thoughts in writing where others can comment on them if they so choose.
I will most likely be very minimalistic with the initial implementation, for multiple reasons, not the least of which is avoiding significant configuration schema changes.
It's much easier for me and for the end user if I keep it small now and expand the options later, rather than implementing a ton now, and then finding out I have to change a whole schema later on to support new features without making things messy.
I'm going to keep thinking about things and also keep prototyping code and configuration, for now, and will start pushing commits to github once I'm satisfied with how things are starting to look.
As things get closer to a useable/testable state, I'll write up more formal specifications, which will most likely be in the manpages.

More Thoughts on Global Settings
I had an idea that was prompted by potential difficulties for users if a target instance is configured for mutual certificate authentication but a source instance does not have a client certificate defined or has an invalid certificate.
The idea was based on the thought that having an endpoint to retrieve the authentication policy from the remote would be useful.
However, a policy endpoint with different security requirements than the actual control and data connection could be useful in other ways.
There's also ample long-standing and mature precedent for that type of thing. One such example is Microsoft's Certificate Authority policy web service endpoint that can be deployed as part of your PKI. That endpoint provides a policy to clients that informs them of what kinds of certificates may be requested, where they may be requested from, and how they may be requested.
Taking that same concept and running with it, SIAZ could have a policy endpoint that exposes various configuration elements to an inquiring client.
Such an endpoint would still be controlled by the configuration elements available with Kestrel, but would, by default, be configured as unencrypted and unauthenticated HTTP, as they are informational and non-private.
This is almost certainly not something I would do for the initial implementation, or maybe even ever, nor is any individual idea in here provided with any kind of promise of implementation or even futher consideration, but I want to put my thoughts in writing.
Being that this is just brainstorming, it's likely to include anything from simple and reasonable ideas to outlandish, over-engineered ideas. You have been warned.
Some ideas/examples of information such an endpoint could provide to a client:

Whether the server expects mutual certificate authentication for the replication endpoint or not
What replication mechanisms this server supports (Initially I'm implementing it via HTTP in Kestrel, but future plans potentially include WCF and plain TLS sockets).
Whether the server is currently accepting replication sessions

That kind of status might even be configurable.
For example:

A free space threshold, so that the server automatically returns a negative response if pool use is beyond a configured threshold.
Going wild, perhaps it could be able to read from a configured stream (such as a file or socket or whatever), expecting some kind of go/no-go response, which could be served by SIAZ itself or even anything else an admin wants, to allow super-flexible throttling of the replication service.

Server's preferred compression options

Server could specify lower compression levels if it is CPU/memory-constrained
Server could request higher compression if it is bandwidth-constrained
Server could request no compression if the admin doesn't want it for any reason (maybe it doesn't matter, maybe some new security problem is discovered and disabling compression is a quick workaround, or whatever)

What filter criteria the server cares about for received snapshots.

Maybe a client is configured to send intermediate snapshots (the -I option for zfs send), but the server is not interested in intermediates.

There would probably need to be an option controlling how mismatches are handled, such as:

Respect server settings: Demand that the client conform to server settings or replication requests are rejected
Respect client settings/Unrestricted: Use whatever settings the client says it wants to use. If server has conflicting settings defined, log a warning but proceed with client settings.
Prefer server settings: If a setting is explicitly set on the server, override the client's setting. If client has same setting defined in a conflicting way, reject replication requests. Otherwise, use whatever the client provides.

Such functionality would allow the client to adjust its filters/behaviors to only send the desired snapshots, in only the desired ways, at only the desired times, potentially conserving significant system and network resources.
This would also weaken the dependency between configured replication partners, making life easier for administrators, such as during maintenance, so that a target being under maintenance doesn't require touching a source to keep running smoothly.
The effort to implement any or all of this kind of functionality, however, may be unwarranted, as demand for it may not be significant and an easy argument can be made that it is the administrator's responsibility to ensure client and server configurations are compatible, on that level.


Reply url - Example needed

Hi,
The article is very useful, but I got struck at the Note regarding the Reply url for creating the application in AzureB2C Tenant. I need an example, the note is asking to use the portal url which is https://<mybrandname>.microsoftcrmportals.com/ but the format is asking for federation name, What is a federation name?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 7de95eea-d599-0873-2b8b-8b91a6818fb3
Version Independent ID: 36bfdd02-63fe-6fd7-c060-17452a7abeec
Content: Azure AD B2C provider settings for portals in Dynamics 365
Content Source: ce/portals/azure-ad-b2c.md
Service: dynamics-365-customerservice
GitHub Login: @sbmjais
Microsoft Alias: shjais

The Note below needs an example...
You must choose Yes for the Allow implicit flow field and specify your portal URL in the Reply URL field. The value in the Reply URL field should be in the format [portal domain]/signin-[Federation-Name].

Thanks for resolving the issue. Closing the issue.


Update dependencies

Done.
File package-lock added.
Requirement for engine updated (>=12) due to yargs.


Flow State not found

Bug report

[x] I confirm this is a bug with Supabase, not with my own application.
[x] I confirm I have searched the Docs, GitHub Discussions, and Discord.

Describe the bug
I am using self-hosted supabase with gotrue and next js for auth. A few users can't login to the app because they get redirected to the following page every time they try to sign in with google.
[GET] /auth/callback?next=%2F&error_description=Flow%20State%20not%20found&error=server_error status=307

I haven't found anything unusual about these users.
On the client side I call
            const { error } = await supabase.auth.signInWithOAuth({
              provider: "google",
              options: {
                redirectTo: `${window.location.origin}/auth/callback?next=${window.location.href}`,
                queryParams: {
                  access_type: "offline",
                  prompt: "consent",
                },
              },
            });

To Reproduce
I haven't found why it happens to these specific users. They are using mobile chrome and using the same auth flow as other users. They tried logging in using multiple different google accounts.

Go to https://climbest.app/
Click on login
Be lucky I guess?
Get redirected to the Flow State not found error.

Expected behavior
Users can log in to the app.
Screenshots
https://imgur.com/a/D9WGyMH
System information

User agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Mobile Safari/537.36
OS: Android 10
Browser: Chrome 120
Version of supabase-js: 2.39.0
Version of Node.js: Node.js 18.x

What libraries do you use with NextJS? Please send us a code snippet that includes the initialization of the Supabase client.

What libraries do you use with NextJS?

    "@supabase/ssr": "^0.0.4",
    "@supabase/supabase-js": "^2.39.0",

Please send us a code snippet that includes the initialization of the Supabase client.

I'm initializing the client like this:
import { createBrowserClient } from "@supabase/ssr";

const supabase = createBrowserClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
);

And using like this:
const { error } = await supabase.auth.signInWithOAuth({
  provider: "google",
  options: {
    redirectTo: `${window.location.origin}/auth/callback?next=${window.location.href}`,
    queryParams: {
      access_type: "offline",
      prompt: "consent",
    },
  },
});

I think I copy-pasted code from https://supabase.com/docs/guides/auth/server-side/oauth-with-pkce-flow-for-ssr to my climbclimb/src/app/auth/callback/route.ts:
import { cookies } from "next/headers";
import { NextResponse } from "next/server";
import { type CookieOptions, createServerClient } from "@supabase/ssr";

export async function GET(request: Request) {
  const { searchParams, origin } = new URL(request.url);
  const code = searchParams.get("code");
  // if "next" is in param, use it as the redirect URL
  const next = searchParams.get("next") ?? "/";

  if (code) {
    const cookieStore = cookies();
    const supabase = createServerClient(
      process.env.NEXT_PUBLIC_SUPABASE_URL!,
      process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
      {
        cookies: {
          get(name: string) {
            return cookieStore.get(name)?.value;
          },
          set(name: string, value: string, options: CookieOptions) {
            cookieStore.set({ name, value, ...options });
          },
          remove(name: string, options: CookieOptions) {
            cookieStore.delete({ name, ...options });
          },
        },
      }
    );

    try {
      if (!code) {
        throw new Error(
          `code param is missing in ${
            request.url
          }; all params: ${JSON.stringify(searchParams)}`
        );
      }
      const { error } = await supabase.auth.exchangeCodeForSession(code);

      if (!error) {
        return NextResponse.redirect(`${next}`);
      } else {
        console.error(error);
        return NextResponse.redirect(`${origin}/?error=${error.message}`);
      }
    } catch (error: unknown) {
      console.log(error);
      if (error instanceof Error) {
        return NextResponse.redirect(`${origin}/?error=${error.message}`);
      } else {
        return NextResponse.redirect(`${origin}/?error=${error?.toString()}`);
      }
    }
  }

  // return the user to an error page with instructions
  return NextResponse.redirect(`${origin}/auth/auth-code-error`);
}

I'm also experiencing the same thing. Some of my google user aren't able to login because of the same problem. @Phil9l were you able to get around this issue?

I'm also experiencing the same thing. Some of my google user aren't able to login because of the same problem. @Phil9l were you able to get around this issue?

No, unfortunately, not. More and more users are complaining about it. It's getting pretty critical for us at this point.

If you are able to reproduce, please send us a HAR recording if possible. You can use https://supabase.help if you want to keep that private, just mention this issue when opening a support ticket.
Some causes of why the error could be happening:

Cookie chunking issues -- mobile browsers may be having trouble dealing with larger / multiple cookies.
Requesting sign-in from one browser receiving the callback on another. (When using PKCE the sign-in should complete on the same browser it was started on.)
The cycle takes too long. Right now this is 300 seconds.

As you mentioned self-hosting, please provide us with details of the versions you're using on the server and configuration options related to this.

We have seen that too, but only occasionally and I cannot reproduce that (hence can't share more than just these):
TypeError: Cannot read properties of undefined (reading 'call')
    at Object.__webpack_require__ [as require] (/var/task/.next/server/webpack-runtime.js:1:161)
    at /var/task/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js:111:463
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async rs (/var/task/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js:110:4701)
    at async rT (/var/task/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js:111:27761)
    at async ee (/var/task/node_modules/next/dist/compiled/next-server/server.runtime.prod.js:16:24526)
    at async en.responseCache.get.incrementalCache (/var/task/node_modules/next/dist/compiled/next-server/server.runtime.prod.js:17:991)
    at async rW.renderToResponseWithComponentsImpl (/var/task/node_modules/next/dist/compiled/next-server/server.runtime.prod.js:17:448)
    at async rW.renderPageComponent (/var/task/node_modules/next/dist/compiled/next-server/server.runtime.prod.js:17:4990)
    at async rW.renderToResponseImpl (/var/task/node_modules/next/dist/compiled/next-server/server.runtime.prod.js:17:5573)

[POST] /auth/login?error=server_error&error_description=Flow%20State%20not%20found&next=%2Fquestion-suggestion status=500

Hey, I am experiencing the same issue.
I got this callback URL, unable to replicate it as it was spotted using Pagesense.
#error=server_error&error_code=422&error_description=Flow+state+not+found

We're also seeing this, it's happening 20-40 times a day for our users. Redirect looks like this:
/error?error=server_error&error_code=422&error_description=Flow+state+not+found&message=Missing+cod
e#error=server error&error code=422&error_description=Flow+state+not+found

Same for us, didn't see any issue like for months, started to happening last week...

Same for us, google oauth suddenly doesn't work 30% of the time.
Mostly for mobile users but also happens on Desktop.

We're noticing this same trend in our project using Google Auth. I would greatly appreciate if Supabase can provide us with some guidance.

I'm getting this when trying to confirm emails using a callback url
const { error } = await supabase.auth.exchangeCodeForSession(code);

I have the same problem, as auth-code a uuid v4 is expected, but from the provider I only get back a code (i.e. ANbOebvxVXCktJlSDXTU) which is not found in the DB (obviously), I don't know where the uuid v4 should come from that is searched for in https://github.com/supabase/auth/blob/master/internal/api/token.go#L258

Hey @Jaaneek
Thanks for the report - do you recall if there's a specific reproducible scenario where this happens? We'd like to dig in further.

Same for us, google oauth suddenly doesn't work 30% of the time.
Mostly for mobile users but also happens on Desktop.

help same issue

~help same issue, kakao provider too~ --- i handle it
In my case, the error occurred because Nginx received a header from Google that was too large to process

You just saved my life thank you.

Thanks @hotay this is useful

After supabase.auth.exchangeCodeForSession I returned a page that performed a redirect, when I just return return NextResponse.redirect(requestUrl.origin); the problem goes away. I suspect its a race condition with setting/reading the cookie

What I realized was happening in my case is that during sign up, resource creation was taking longer than 5 seconds, so the oauth callback was retried. The retried request always failed with this error since I assume the code was already read/processed. I'm using Remix, so I ended up running async functions in parallel to speed up my loader and using Streaming for a better UX.


GH-2350 transaction settings

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

Support for user supplied settings per transaction.
Support for bulk validation ShaclSail setting

PR Author Checklist (see the contributor guidelines for more details):

[ ] my pull request is self-contained
[ ] I've added tests for the changes I made
[ ] I've applied code formatting (you can use mvn process-resources to format from the command line)
[ ] every commit message starts with the issue number (GH-xxxx) followed by a meaningful description of the change
[ ] every commit has been signed off

Note: we merge all feature pull requests using squash and merge. See RDF4J git merge strategy for more details.

PS: I'm currently failing the build due to not begin backwards compatible. I'll fix that later once I get the design down.

japicmp is complaining that I've added new interface methods to the IsolationLevel interface by having it extend TransactionSetting, even though I've implement defaults for those two methods. I don't think this a correct assessment.

japicmp is complaining that I've added new interface methods to the IsolationLevel interface by having it extend TransactionSetting, even though I've implement defaults for those two methods. I don't think this a correct assessment.

I agree this is a false positive, but I think you can just get around that by adding the default methods to TransactionSettings itself instead:
public interface TransactionSetting {

	default String getName() {
		return this.getClass().getCanonicalName();
	}

	default String getValue() {
		return this.toString();
	}
}

The only other option is to reconfigure the plugin for this case. We can't generally configure it to consider METHOD_ADDED_TO_INTERFACE as compatible, because clearly it's a (source) compatibility issue unless you also provide a default. I can't see an easy way to configure that generally, looks like a limitation of the plugin. You could just add an exclusion for these two particular methods in the plugin config in the root pom:
<exclude>org.eclipse.rdf4j.IsolationLevel#getValue()</exclude>
<exclude>org.eclipse.rdf4j.IsolationLevel#getName()</exclude>

Slight preference for moving the default methods up the hierarchy, myself, but either solution works.

@hmottestad I have some availability today or over the weekend to help out with finalizing this design. Just a heads up that I may be pushing some changes on your branch.

I invited you just now.

I invited you just now.

Thanks! I pushed a formatting fix and it seems to work.
Bit odd that you had to invite me. I thought forks automatically enable the original maintainers to push. Maybe they changed the behavior.

Says you’ve got write permission. Could you try to edit a file in the web view?
I had some trouble initially with the new token based authentication in GitHub when I started the HASMAC organization in GitHub. Had to create a new token with broader permissions.

@hmottestad  given that this needs some more work, have you considered if maybe you want to postpone the 3.3 release?

I’m not sure which at the moment. I still have a glimmer of hope that I can figure it out.

And there is still the issue of wrapping sails that override the transactional methods such as the two original begin methods, but don't override the new begin method with transaction settings and thus could skip out on handling some transactions correctly. This is easily fixed in our own sail wrappers (like the SchemaCachingRdfsInferencer), but there isn't a way to force other implementers/developers to do the same.

And there is still the issue of wrapping sails that override the transactional methods such as the two original begin methods, but don't override the new begin method with transaction settings and thus could skip out on handling some transactions correctly. This is easily fixed in our own sail wrappers (like the SchemaCachingRdfsInferencer), but there isn't a way to force other implementers/developers to do the same.

I think if we switch around the way you redirect methods a little we can get some improvements here. I'll try and push some fixes.

I'm working on a change that replaces the interning approach with a registry-based approach. It's almost complete, I'll push it as a single commit so you can easily see the diff and we can discuss (and if necessary roll back)

Was looking into the SPI approach myself, but had never used it before so was a bit apprehensive of trying to figure it out. Thanks for knowing how to do this the right way!
It’s all starting to look fairly good now isn’t it? Tests all seem to be working.
Only major thing left is figuring out how this is going to work for sails that don’t override the new begin method and extend the sail wrapper. I had another approach in mind actually. We could have the new begin method with transaction settings present in the repository code, but switch to using a setter for the sail code.
For the SailRepository it would be something like this:
sailCon.setTransactionSettings(settings);
sailCon.begin(isolationlevel);

This would allow all the existing wrapper sails to work seamlessly.

Only major thing left is figuring out how this is going to work for sails that don’t override the new begin method and extend the sail wrapper. I had another approach in mind actually. We could have the new begin method with transaction settings present in the repository code, but switch to using a setter for the sail code.
For the SailRepository it would be something like this:
sailCon.setTransactionSettings(settings);
sailCon.begin(isolationlevel);

This would allow all the existing wrapper sails to work seamlessly.

Hm, interesting. Yes, that could work.

@jeenbroekstra as long as the tests pass I believe I'm happy with this approach.

@barthanssens I've made some modifications to the docker build in this branch. Essentially unified everything so it builds using the local code instead of downloading a release, I much prefer this since it means we can test new things locally. Also changed the maven command for building to one that skips a bunch of unnecessary stuff. I hope you are ok with this!
@jeenbroekstra I'm happy with this PR now and would like to merge it.

@jeenbroekstra @ansell thanks for taking time to review this and give great feedback. I hope I have fixed everything now. Let me know if you are happy or if you have any other recommendations.


Add Website for Community

This adds a website for our projects.

@redhatrises if agreed, then self-merge async and lets rock 'n roll!

@redhatrises if agreed, then self-merge async and lets rock 'n roll!

Sounds good to me.


The checkout page does not show the product quantity in the product quantity input box.

Summary
The checkout page does not show the product quantity in the product quantity input box.

Steps to reproduce

Open demo site
Add product to cart
Click the shopping bag to checkout
Click the quantity input box

A link to a reproduction repository
No response
Output from envinfo
No response

I cannot reproduce it. Closing due to lack of environment details or a minimal reproducible example.


Wrong body size

i run the command: for meas in lidar.iter_measurments():
it's occur the
Traceback (most recent call last):
File "/home/nx/Desktop/rplidar/simple.py", line 15, in
for meas in lidar.iter_measurments():
File "/home/nx/.local/lib/python3.6/site-packages/rplidar.py", line 323, in iter_measurments
raw = self._read_response(dsize)
File "/home/nx/.local/lib/python3.6/site-packages/rplidar.py", line 199, in _read_response
raise RPLidarException('Wrong body size')
rplidar.RPLidarException: Wrong body size
i have read some solutions ,but it also occur sometimes . my pyserial version is 3.4.Thank you for your read

I have the same problem. My RPLidar A1M8 with firmware 1.29, hardware version 7, does not work with the Python library and gives the wrong body size error. It does work with the Slamtec Frame Grabber app, however, so I know it's working. My other A1M8 with firmware 1.27, hardware version 5, works fine with the Python library. I think Slamtec changed something in the latest firmware that broke the Python library

Update: Slamtec says that this may be due to the default scan mode being changed to boost mode in firmware 1.29.  They say that they do not support Python(!) and are not intending to fix these libraries. They say it's up to us to fix them ourselves :-(

solve this problem
https://github.com/Roboticia/RPLidar  << use
roboticia.git provides selecting scan mode.
default: normal  if you want the express mode read rplidar.py


feat(auth): support for oauth for user authentication

:tada: This PR is included in version 2.32.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Inserting from an array

It took me ages to find this syntax:
    // Inserting an array (from a previous query) into Product table
    //db.tables.Product.data =  data is elegant, but how to use it with varying table names ?
    myTable = "Product";
    db.exec('INSERT INTO ' + myTable + ' SELECT * FROM ?',[data]);  // That's THE syntax !!
    //Guessed from https://github.com/agershun/alasql/wiki/Insert

(my 2 к. - sorry if it was obvious)

You can use three different methods to insert data from array into table:
    var data = [{a:1}, {a:2}];
    alasql('CREATE TABLE one');
    // Method 1
    alasql.tables.one.data = data;
    // Method 2
    alasql('SELECT * INTO one FROM ?',[data]);
    // Method 3
    alasql('INSERT INTO one SELECT * FROM ?',[data]);

BTW: If you download data from external file, you can use this syntax:
    alaslq('CREATE one; SELECT * INTO one FROM JSON("data.json")');

Is it possible to insert data from JSON into a table which has already defined columns?
alasql('CREATE TABLE test (row1 INT, row2 TEXT');
var data = [{"row1" : 1, "row2" : "String1"}, {"row1" : 2, "row2" : "String2"}];
alasql.tables.test.data = data;

I'm trying it on a localStorage database and don't get the rows from JSON into the table.

You can try this:
alasql('SELECT * INTO mytable FROM ?',[data]);

Îòïðàâëåíî ñ iPhone

21 ìàðòà 2015 ã., â 14:41, joerch80<EMAIL_ADDRESS>íàïèñàë(à):
Is it possible to insert data from JSON into a table which has already defined columns?
alasql('CREATE TABLE test (row1 INT, row2 TEXT');
var data = [{"row1" : 1, "row2" : "String1"}, {"row1" : 2, "row2" : "String2"}];
alasql.tables.test.data = data;
I'm trying it on a localStorage database and don't get the rows from JSON into the table.
—
Reply to this email directly or view it on GitHub.

After rewriting the part in my project it now works as mentioned above. Thanks for your help!
Probably I had a problem in calling the statements because it was an async operation. I'm using "promises" now.

Please, write here if you find the source of the problem!

has anyone gotten alasql.tables.one.data = data to work while using indexeddb? I've tried method 2 and 3 but for really large arrays it takes awhile to execute the callback.

IndexedDB will not work with this.