Add caching for Veldrid staging buffers in favour of CommandList.UpdateBuffer

[ ] Depends on #5911 (for caching logic)

Staging buffer cache has been removed from Metal in https://github.com/ppy/veldrid/pull/31, and needs to be brought back here to maintain performance. Needs testing on all platforms, especially D3D11 since it's the only backend that doesn't allocate a staging buffer in CommandList.UpdateBuffer (if there's any sign of performance degradation, I can easily revert back just for D3D11).

I guess this may be able to replace the other staging buffer implementation (Renderer.CreateStagingBuffer)?

Sure, could also change the pool to cache IStagingBuffer resources instead.

Actually, there are usages of CreateStagingBuffer which permanently keep the staging buffer like VBOs, so we can't replace that.
Also, changing the pool to return IStagingBuffers instead gets a bit weird because that component is made to be initialised ahead of time, rather than being requested after a GPU buffer was set up already. Here's a diff showcasing the changes required:
diff --git a/osu.Framework/Graphics/Veldrid/Buffers/Staging/IStagingBuffer.cs b/osu.Framework/Graphics/Veldrid/Buffers/Staging/IStagingBuffer.cs
index a294254b9..34a107f89 100644
--- a/osu.Framework/Graphics/Veldrid/Buffers/Staging/IStagingBuffer.cs
+++ b/osu.Framework/Graphics/Veldrid/Buffers/Staging/IStagingBuffer.cs
@@ -6,8 +6,7 @@

 namespace osu.Framework.Graphics.Veldrid.Buffers.Staging
 {
-    internal interface IStagingBuffer<T> : IDisposable
-        where T : unmanaged
+    internal interface IStagingBuffer : IDisposable
     {
         /// <summary>
         /// The total size of this buffer in bytes.
@@ -24,18 +23,22 @@ internal interface IStagingBuffer<T> : IDisposable
         /// </summary>
         BufferUsage CopyTargetUsageFlags { get; }

-        /// <summary>
-        /// The data contained in this buffer.
-        /// </summary>
-        Span<T> Data { get; }
-
         /// <summary>
         /// Copies data from this buffer into a <see cref="DeviceBuffer"/>.
         /// </summary>
         /// <param name="buffer">The target buffer.</param>
         /// <param name="srcOffset">The offset into this buffer at which the copy should start.</param>
         /// <param name="dstOffset">The offset into <paramref name="buffer"/> at which the copy should start.</param>
-        /// <param name="size">The number of elements to be copied.</param>
-        void CopyTo(DeviceBuffer buffer, uint srcOffset, uint dstOffset, uint size);
+        /// <param name="count">The number of elements to be copied.</param>
+        void CopyTo(DeviceBuffer buffer, uint srcOffset, uint dstOffset, uint count);
+    }
+
+    internal interface IStagingBuffer<T> : IStagingBuffer
+        where T : unmanaged
+    {
+        /// <summary>
+        /// The data contained in this buffer.
+        /// </summary>
+        Span<T> Data { get; }
     }
 }
diff --git a/osu.Framework/Graphics/Veldrid/Buffers/VeldridIndexData.cs b/osu.Framework/Graphics/Veldrid/Buffers/VeldridIndexData.cs
index dae7ae1e1..f32043b75 100644
--- a/osu.Framework/Graphics/Veldrid/Buffers/VeldridIndexData.cs
+++ b/osu.Framework/Graphics/Veldrid/Buffers/VeldridIndexData.cs
@@ -5,35 +5,24 @@

 namespace osu.Framework.Graphics.Veldrid.Buffers
 {
-    // todo: this feels too janky
     internal class VeldridIndexData
     {
-        private readonly VeldridRenderer renderer;
-
-        private int capacity;
-
-        public int Capacity
-        {
-            get => capacity;
-            set
-            {
-                if (value == capacity)
-                    return;
-
-                capacity = value;
+        public int Capacity { get; private set; }
+        public DeviceBuffer Buffer { get; private set; }

-                buffer?.Dispose();
-                buffer = null;
-            }
-        }
+        private readonly VeldridRenderer renderer;

         public VeldridIndexData(VeldridRenderer renderer)
         {
             this.renderer = renderer;
         }

-        private DeviceBuffer? buffer;
+        public void Recreate(int capacity, BufferUsage usageFlags)
+        {
+            Buffer?.Dispose();
+            Buffer = renderer.Factory.CreateBuffer(new BufferDescription((uint)(capacity * sizeof(ushort)), BufferUsage.IndexBuffer | usageFlags));

-        public DeviceBuffer Buffer => buffer ??= renderer.Factory.CreateBuffer(new BufferDescription((uint)(Capacity * sizeof(ushort)), BufferUsage.IndexBuffer));
+            Capacity = capacity;
+        }
     }
 }
diff --git a/osu.Framework/Graphics/Veldrid/Buffers/VeldridLinearBuffer.cs b/osu.Framework/Graphics/Veldrid/Buffers/VeldridLinearBuffer.cs
index 733756020..98d843343 100644
--- a/osu.Framework/Graphics/Veldrid/Buffers/VeldridLinearBuffer.cs
+++ b/osu.Framework/Graphics/Veldrid/Buffers/VeldridLinearBuffer.cs
@@ -30,16 +30,13 @@ protected override void Initialise()

             if (amountVertices > renderer.SharedLinearIndex.Capacity)
             {
-                renderer.SharedLinearIndex.Capacity = amountVertices;
-
-                ushort[] indices = new ushort[amountVertices];
+                var staging = renderer.GetFreeStagingBuffer<ushort>(amountVertices);
+                renderer.SharedLinearIndex.Recreate(amountVertices, staging.CopyTargetUsageFlags);

                 for (ushort i = 0; i < amountVertices; i++)
-                    indices[i] = i;
+                    staging.Data[i] = i;

-                var staging = renderer.GetFreeStagingBuffer(renderer.SharedLinearIndex.Buffer.SizeInBytes);
-                renderer.Device.UpdateBuffer(staging, 0, indices);
-                renderer.BufferUpdateCommands.CopyBuffer(staging, 0, renderer.SharedLinearIndex.Buffer, 0, staging.SizeInBytes);
+                staging.CopyTo(renderer.SharedLinearIndex.Buffer, 0, 0, (uint)amountVertices);
             }
         }

diff --git a/osu.Framework/Graphics/Veldrid/Buffers/VeldridQuadBuffer.cs b/osu.Framework/Graphics/Veldrid/Buffers/VeldridQuadBuffer.cs
index 663fbd214..f2d7158aa 100644
--- a/osu.Framework/Graphics/Veldrid/Buffers/VeldridQuadBuffer.cs
+++ b/osu.Framework/Graphics/Veldrid/Buffers/VeldridQuadBuffer.cs
@@ -37,23 +37,20 @@ protected override void Initialise()

             if (amountIndices > renderer.SharedQuadIndex.Capacity)
             {
-                renderer.SharedQuadIndex.Capacity = amountIndices;
-
-                ushort[] indices = new ushort[amountIndices];
+                var staging = renderer.GetFreeStagingBuffer<ushort>(amountIndices);
+                renderer.SharedQuadIndex.Recreate(amountIndices, staging.CopyTargetUsageFlags);

                 for (ushort i = 0, j = 0; j < amountIndices; i += IRenderer.VERTICES_PER_QUAD, j += indices_per_quad)
                 {
-                    indices[j] = i;
-                    indices[j + 1] = (ushort)(i + 1);
-                    indices[j + 2] = (ushort)(i + 3);
-                    indices[j + 3] = (ushort)(i + 2);
-                    indices[j + 4] = (ushort)(i + 3);
-                    indices[j + 5] = (ushort)(i + 1);
+                    staging.Data[j] = i;
+                    staging.Data[j + 1] = (ushort)(i + 1);
+                    staging.Data[j + 2] = (ushort)(i + 3);
+                    staging.Data[j + 3] = (ushort)(i + 2);
+                    staging.Data[j + 4] = (ushort)(i + 3);
+                    staging.Data[j + 5] = (ushort)(i + 1);
                 }

-                var staging = renderer.GetFreeStagingBuffer(renderer.SharedQuadIndex.Buffer.SizeInBytes);
-                renderer.Device.UpdateBuffer(staging, 0, indices);
-                renderer.BufferUpdateCommands.CopyBuffer(staging, 0, renderer.SharedQuadIndex.Buffer, 0, staging.SizeInBytes);
+                staging.CopyTo(renderer.SharedQuadIndex.Buffer, 0, 0, (uint)amountIndices);
             }
         }

diff --git a/osu.Framework/Graphics/Veldrid/Buffers/VeldridUniformBufferStorage.cs b/osu.Framework/Graphics/Veldrid/Buffers/VeldridUniformBufferStorage.cs
index 1e6b5035a..bc3ce17c7 100644
--- a/osu.Framework/Graphics/Veldrid/Buffers/VeldridUniformBufferStorage.cs
+++ b/osu.Framework/Graphics/Veldrid/Buffers/VeldridUniformBufferStorage.cs
@@ -12,8 +12,9 @@ internal class VeldridUniformBufferStorage<TData>
         where TData : unmanaged, IEquatable<TData>
     {
         private readonly VeldridRenderer renderer;
-        private readonly DeviceBuffer buffer;
-        private readonly NativeMemoryTracker.NativeMemoryLease memoryLease;
+
+        private DeviceBuffer? buffer;
+        private NativeMemoryTracker.NativeMemoryLease? memoryLease;

         private ResourceSet? set;
         private TData data;
@@ -21,9 +22,6 @@ internal class VeldridUniformBufferStorage<TData>
         public VeldridUniformBufferStorage(VeldridRenderer renderer)
         {
             this.renderer = renderer;
-
-            buffer = renderer.Factory.CreateBuffer(new BufferDescription((uint)Marshal.SizeOf(default(TData)), BufferUsage.UniformBuffer));
-            memoryLease = NativeMemoryTracker.AddMemory(this, buffer.SizeInBytes);
         }

         public TData Data
@@ -33,9 +31,16 @@ public TData Data
             {
                 data = value;

-                var staging = renderer.GetFreeStagingBuffer(buffer.SizeInBytes);
-                renderer.Device.UpdateBuffer(staging, 0, ref data);
-                renderer.BufferUpdateCommands.CopyBuffer(staging, 0, buffer, 0, buffer.SizeInBytes);
+                var staging = renderer.GetFreeStagingBuffer<TData>(1);
+
+                if (buffer == null)
+                {
+                    buffer = renderer.Factory.CreateBuffer(new BufferDescription((uint)Marshal.SizeOf(default(TData)), BufferUsage.UniformBuffer | staging.CopyTargetUsageFlags));
+                    memoryLease = NativeMemoryTracker.AddMemory(this, buffer.SizeInBytes);
+                }
+
+                staging.Data[0] = data;
+                staging.CopyTo(buffer, 0, 0, 1);
             }
         }

@@ -43,8 +48,8 @@ public TData Data

         public void Dispose()
         {
-            buffer.Dispose();
-            memoryLease.Dispose();
+            buffer?.Dispose();
+            memoryLease?.Dispose();
             set?.Dispose();
         }
     }
diff --git a/osu.Framework/Graphics/Veldrid/VeldridRenderer.cs b/osu.Framework/Graphics/Veldrid/VeldridRenderer.cs
index 00089ba1b..f3e6908f3 100644
--- a/osu.Framework/Graphics/Veldrid/VeldridRenderer.cs
+++ b/osu.Framework/Graphics/Veldrid/VeldridRenderer.cs
@@ -676,11 +676,15 @@ internal IStagingBuffer<T> CreateStagingBuffer<T>(uint count)
             }
         }

-        protected override void SetUniformImplementation<T>(IUniformWithValue<T> uniform)
+        public IStagingBuffer<T> GetFreeStagingBuffer<T>(int count)
+            where T : unmanaged
         {
+            return stagingBufferPool.Get<T>(count);
         }

-        public DeviceBuffer GetFreeStagingBuffer(uint sizeInBytes) => stagingBufferPool.Get(sizeInBytes);
+        protected override void SetUniformImplementation<T>(IUniformWithValue<T> uniform)
+        {
+        }

         public void RegisterUniformBufferForReset(IVeldridUniformBuffer buffer)
         {
diff --git a/osu.Framework/Graphics/Veldrid/VeldridStagingBufferPool.cs b/osu.Framework/Graphics/Veldrid/VeldridStagingBufferPool.cs
index 8c772a91f..18cc9d241 100644
--- a/osu.Framework/Graphics/Veldrid/VeldridStagingBufferPool.cs
+++ b/osu.Framework/Graphics/Veldrid/VeldridStagingBufferPool.cs
@@ -1,25 +1,26 @@
 // Copyright (c) ppy Pty Ltd<EMAIL_ADDRESS>Licensed under the MIT Licence.
 // See the LICENCE file in the repository root for full licence text.

-using Veldrid;
+using osu.Framework.Graphics.Veldrid.Buffers.Staging;

 namespace osu.Framework.Graphics.Veldrid
 {
-    internal class VeldridStagingBufferPool : VeldridStagingResourcePool<DeviceBuffer>
+    internal class VeldridStagingBufferPool : VeldridStagingResourcePool<IStagingBuffer>
     {
         public VeldridStagingBufferPool(VeldridRenderer renderer)
             : base(renderer, "staging buffers")
         {
         }

-        public DeviceBuffer Get(uint sizeInBytes)
+        public IStagingBuffer<T> Get<T>(int count)
+            where T : unmanaged
         {
-            if (TryGet(b => b.SizeInBytes >= sizeInBytes, out DeviceBuffer? buffer))
-                return buffer;
+            if (TryGet(b => b is IStagingBuffer<T> && b.Count >= count, out IStagingBuffer? buffer))
+                return (IStagingBuffer<T>)buffer;

-            buffer = Renderer.Factory.CreateBuffer(new BufferDescription(sizeInBytes, BufferUsage.Staging));
+            buffer = Renderer.CreateStagingBuffer<T>((uint)count);
             AddNewResource(buffer);
-            return buffer;
+            return (IStagingBuffer<T>)buffer;
         }
     }
 }
diff --git a/osu.Framework/Graphics/Veldrid/VeldridStagingResourcePool.cs b/osu.Framework/Graphics/Veldrid/VeldridStagingResourcePool.cs
index f4ac0964c..0b8c0ecb8 100644
--- a/osu.Framework/Graphics/Veldrid/VeldridStagingResourcePool.cs
+++ b/osu.Framework/Graphics/Veldrid/VeldridStagingResourcePool.cs
@@ -5,12 +5,11 @@
 using System.Collections.Generic;
 using System.Diagnostics.CodeAnalysis;
 using osu.Framework.Statistics;
-using Veldrid;

 namespace osu.Framework.Graphics.Veldrid
 {
     internal abstract class VeldridStagingResourcePool<T>
-        where T : class, DeviceResource, IDisposable
+        where T : class, IDisposable
     {
         protected readonly VeldridRenderer Renderer;

This really feels like we should have an IBuffer concept instead, providing flags suggesting whether it's dynamic, or should be backed by a staging buffer, or should rent a staging buffer on upload, etc. But I don't want to touch on that furthermore in this PR as this PR intends to not change behaviour as much as possible, I can revert this change on D3D11 if that would feel any better (since it's the only backend that actually does native work in CommandList.UpdateBuffer, all other backends just rent a staging buffer and performs a copy).

IBuffer

Without having looked at the above diff, I'd agree with that direction.

@frenzibyte please check changes make sense to you.

All looking pretty A+ to me 👍🏻

There's a big performance hit on D3D
Before pr:

After:

@EVAST9919 can you repro on a framework test scene? maybe one of the new performance ones? Or can you make one based on the edge case? I couldn't see any drop at my end in limited testing.

@EVAST9919 can you test https://github.com/ppy/osu-framework/pull/5916 ? Does it show the regression?


[lighthouse] spruce up the homepage

polish all the things
fixes up https://github.com/GoogleChrome/lighthouse/issues/1842

@ebidel I updated per your review LMK if it L👍TY


git submodule commands fail on self

Agent Version and Platform
Version of your agent?
2.148.1 & 2.150.3
OS of the machine running the agent?
Windows Server 2016
Azure DevOps Type and Version
dev.azure.com (formerly visualstudio.com)
Org name:
intellicheck.visualstudio.com
What's not working?
The pipeline's get sources task has "checkout submodules" checked:

But the git submodule commands fail:
##[command]git submodule sync
##[command]git -c<EMAIL_ADDRESS>bearer ***" submodule update --init --force --depth=1
Submodule '{COMPONENT_BASE_NAME}-engine-common' (https://{ORG_NAME}.visualstudio.com/Development/_git/{COMPONENT_BASE_NAME}-engine-common) registered for path '{COMPONENT_BASE_NAME}-engine-common'
Submodule '{COMPONENT_BASE_NAME}-engine-windows-common' (https://{ORG_NAME}.visualstudio.com/Development/_git/{COMPONENT_BASE_NAME}-engine-windows-common) registered for path '{COMPONENT_BASE_NAME}-engine-windows-common'
Cloning into 'C:/agent/_work/2/s/{COMPONENT_BASE_NAME}-engine-common'...
fatal: could not read Username for 'https://{ORG_NAME}.visualstudio.com': terminal prompts disabled
fatal: clone of 'https://{ORG_NAME}.visualstudio.com/Development/_git/{COMPONENT_BASE_NAME}-engine-common' into submodule path 'C:/agent/_work/2/s/{COMPONENT_BASE_NAME}-engine-common' failed
Failed to clone '{COMPONENT_BASE_NAME}-engine-common'. Retry scheduled
Cloning into 'C:/agent/_work/2/s/{COMPONENT_BASE_NAME}-engine-windows-common'...
fatal: could not read Username for 'https://{ORG_NAME}.visualstudio.com': terminal prompts disabled
fatal: clone of 'https://{ORG_NAME}.visualstudio.com/Development/_git/{COMPONENT_BASE_NAME}-engine-windows-common' into submodule path 'C:/agent/_work/2/s/{COMPONENT_BASE_NAME}-engine-windows-common' failed
Failed to clone '{COMPONENT_BASE_NAME}-engine-windows-common'. Retry scheduled
Cloning into 'C:/agent/_work/2/s/{COMPONENT_BASE_NAME}-engine-common'...
fatal: could not read Username for 'https://{ORG_NAME}.visualstudio.com': terminal prompts disabled
fatal: clone of 'https://{ORG_NAME}.visualstudio.com/Development/_git/{COMPONENT_BASE_NAME}-engine-common' into submodule path 'C:/agent/_work/2/s/{COMPONENT_BASE_NAME}-engine-common' failed
Failed to clone '{COMPONENT_BASE_NAME}-engine-common' a second time, aborting
##[error]Git submodule update failed with exit code: 1
##[section]Finishing: Checkout

Agent and Worker's Diagnostic Logs
logs.zip

So some additional notes:

MS Hosted build agents do not have this problems
On self-hosted using latest with with system.prefergitfrompath does not resolve the problem
On self-hosted using the relative path in the .gitmodules file appears to resolve this issue (reference: https://github.com/Microsoft/azure-pipelines-agent/issues/577#issuecomment-253138869 that my co-worker was able to dig out - my google-fu was lacking today)

So I guess the proper description of this issue now is git submodules fail when submodules point to the full path of the repo? Though I haven't tested any submodules that are in an external/3rd party repo where the full path would be required...
Relative paths do appear to be supported by git directly, so it's a viable solution for me:
https://git-scm.com/docs/git-submodule#Documentation/git-submodule.txt-add-bltbranchgt-f--force--nameltnamegt--referenceltrepositorygt--depthltdepthgt--ltrepositorygtltpathgt

This may be either an absolute URL, or (if it begins with ./ or ../), the location relative to the superproject’s default remote repository

@kmscode if your submodules are in the same VSTS/AzureDevOps account, i would suggest to use relative path when register submodules to your main repository as the following doc described, then you don't have to worry about dev.azure.com vs. *.visualstudio.com
https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/pipeline-options-for-git?view=azure-devops#checkout-submodules

Thanks @TingluoHuang - This is what I did to get around the problem. However, I still believe that there isa bug floating around somewhere with the build agent. The full path is valid syntax in the .gitmodules, yet authentication fails when pulling the submodules via the full path.

Hi @kmscode,
I'm following up on this issue. One question for you: when you mentioned that authentication didn't work with submodules with full paths, were you using the same base URL (either dev.azure.com/ or .visualstudio.com) between the parent repository, and each of the submodule references?
The reason I ask is that currently we don't support mix-and-matching old and new style URLs, when the agent instructs git to checkout files.

Hi @juliobbv,
Thanks for the follow up...
The URLS for the submodules were using *.visualstudio.com.
Our org accesses everything via *.visualstudio.com - is that URL effectively deprecated?
Thanks again!

I see, thanks for the clarification.
*.visualstudio.com URLs are deprecated in the sense that users are encouraged to switch to the newer dev.azure.com*. However, *.visualstudio.com URLs in submodules are still supported, even as full paths. I'll take a look and see if I can repro the issue on my end.

BTW @kmscode, I tried the scenario with my local account. Both the top-level and submodule repos were checked out successfully with full *.visualstudio.com paths, so I don't believe there's a bug here.
[submodule "submodule"]
	path = submodule
	url = https://juliobv.visualstudio.com/DefaultCollection/git/_git/sub

##[command]git checkout --progress --force d586dddd544623ad3917fa7ba669eb80448542db
Note: checking out 'd586dddd544623ad3917fa7ba669eb80448542db'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at d586ddd Updated azure-pipelines.yml
##[command]git submodule sync
##[command]git -c http.https://juliobv.visualstudio.com.extraheader="AUTHORIZATION: bearer ***" submodule update --init --force
Submodule 'submodule' (https://juliobv.visualstudio.com/DefaultCollection/git/_git/sub) registered for path 'submodule'
Cloning into 'E:/ap-agent/_layout/_work/1/s/submodule'...
Submodule path 'submodule': checked out 'bd82b5ce9d4c1296e972a1ceb06a5b9f0e0e96aa'
##[section]Finishing: Checkout

Given the results above (and also because relative paths is the preferred approach to specify submodules), I'll close this issue.

@joeax How can I change that setting, it is disabled for me.


CLOUD-615 rework license check

 ❨?❩

Test name
Status

commit: https://github.com/percona/percona-xtradb-cluster-operator/pull/783/commits/ba10cd7e69c4b1ef4fd8ea179813719bc87d7388
image: perconalab/percona-xtradb-cluster-operator:PR-783-ba10cd7e

Test name
Status

haproxy
passed

storage
passed

recreate
passed

upgrade-haproxy
passed

scaling
passed

big-data
passed

init-deploy
passed

self-healing
passed

scaling-proxysql
passed

restore-to-encrypted-cluster
passed

security-context
passed

upgrade-proxysql
passed

limits
passed

self-healing-advanced
failed

monitoring-2-0
passed

demand-backup
passed

smart-update
passed

affinity
passed

one-pod
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

operator-self-healing
passed

users
passed

pitr
passed

demand-backup-encrypted-with-tls
passed

tls-issue-self
passed

tls-issue-cert-manager
passed

tls-issue-cert-manager-ref
passed

upgrade-consistency
passed

validation-hook
passed

scheduled-backup
failed

commit: https://github.com/percona/percona-xtradb-cluster-operator/pull/783/commits/f0fa05d640380bd8e024942d1cfe16aeb74060f9
image: perconalab/percona-xtradb-cluster-operator:PR-783-f0fa05d6

Test name
Status

haproxy
passed

init-deploy
passed

limits
passed

big-data
passed

monitoring-2-0
passed

affinity
passed

storage
passed

one-pod
passed

self-healing
passed

auto-tuning
passed

self-healing-advanced
failed

proxysql-sidecar-res-limits
passed

users
passed

upgrade-haproxy
passed

tls-issue-self
passed

tls-issue-cert-manager
passed

tls-issue-cert-manager-ref
passed

validation-hook
passed

scaling
passed

scaling-proxysql
passed

security-context
passed

upgrade-proxysql
passed

smart-update
passed

upgrade-consistency
passed

operator-self-healing
passed

commit: https://github.com/percona/percona-xtradb-cluster-operator/pull/783/commits/f0fa05d640380bd8e024942d1cfe16aeb74060f9
image: perconalab/percona-xtradb-cluster-operator:PR-783-f0fa05d6

Test name
Status

upgrade-haproxy
passed

storage
passed

big-data
passed

scaling
passed

haproxy
passed

recreate
passed

scaling-proxysql
passed

self-healing
passed

init-deploy
passed

upgrade-proxysql
passed

restore-to-encrypted-cluster
passed

limits
passed

self-healing-advanced
passed

monitoring-2-0
passed

security-context
passed

smart-update
passed

demand-backup
passed

affinity
passed

operator-self-healing
passed

one-pod
passed

upgrade-consistency
passed

pitr
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

users
passed

demand-backup-encrypted-with-tls
failed

tls-issue-self
passed

tls-issue-cert-manager
failed

commit: https://github.com/percona/percona-xtradb-cluster-operator/pull/783/commits/300e07ccc282a056c656b66cea00b33a7318b351
image: perconalab/percona-xtradb-cluster-operator:PR-783-300e07cc

Test name
Status

upgrade-haproxy
passed

big-data
passed

scaling
passed

scaling-proxysql
passed

security-context
passed

storage
passed

self-healing
passed

self-healing-advanced
passed

operator-self-healing
passed

upgrade-proxysql
passed

smart-update
passed

upgrade-consistency
passed

commit: https://github.com/percona/percona-xtradb-cluster-operator/pull/783/commits/300e07ccc282a056c656b66cea00b33a7318b351
image: perconalab/percona-xtradb-cluster-operator:PR-783-300e07cc


Add event OnBeforeUpdateItemTrackingAfterPosting into codeunit 99000836 "Transfer Line-Reserve"

Describe the request
The code should be like this:
procedure UpdateItemTrackingAfterPosting(TransferHeader: Record "Transfer Header"; Direction: Enum "Transfer Direction")
var
    ReservationEntry: Record "Reservation Entry";
    ReservationEntry2: Record "Reservation Entry";
begin
    // Used for updating Quantity to Handle after posting;
    ReservationEntry.SetSourceFilter(
        Database::"Transfer Line", Direction.AsInteger(), TransferHeader."No.", -1, true);
    ReservationEntry.SetRange("Source Batch Name", '');
    if Direction = Direction::Outbound then
        ReservationEntry.SetRange("Source Prod. Order Line", 0)
    else
        ReservationEntry.SetFilter("Source Prod. Order Line", '<>%1', 0);
    CreateReservEntry.UpdateItemTrackingAfterPosting(ReservationEntry);
    if Direction = Direction::Outbound then begin
        ReservationEntry2.Copy(ReservationEntry);
        ReservationEntry2.SetRange("Source Subtype", Direction::Inbound);
        OnBeforeUpdateItemTrackingAfterPosting(ReservationEntry2, ReservationEntry);
        CreateReservEntry.UpdateItemTrackingAfterPosting(ReservationEntry2);
    end;
end;

[IntegrationEvent(false, false)]
local procedure OnBeforeUpdateItemTrackingAfterPosting(var ReservationEntry2: Record "Reservation Entry"; var ReservationEntry: Record "Reservation Entry")
begin
end;

Additional context
This event is usefull for anyone want to set other filters on ReservationEntry2 record before execute UpdateItemTrackingAfterPosting function.
Internal work item: AB#536979

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 20256.


No data to graphana

Hi team,
Trying to visualize the data from one of the Xeon servers over graphana. No data is seen. Any quick fixes?

Are you sure there is no proxy in between blocking your requests or sending them in the wrong direction?


Create countdown to the date

Command
calendarN countdown 2022-11-28 10:00:00 --name=Name of the Countdown

The first argument should be `yyyy-mm-dd` format and the second is optional with hh:mm:ss time format in the local timezone

If name is not given create name as countdown_to_2022_11_28_10_00_00
Should return:
125 Days 12 Hours 57 Minutes 29 Seconds
``

Note: --cal=eng/nep needs to be done later.
--cal is English or Nepali calendar, accept `eng`, `nep` default is English

Closed from #14


Add WeightProvider factory and implement IntegrationBasedIKProblem

This PR complements #614, in detail, it will allow the user to pass different kinds of WeightProviders to the IK directly from the configuration file.
Moreover, I introduced the IntegrationBasedIKProblem that stores all the ingredients required to solve the IK problem.

This may be interesting for @LoreMoretti .

Before merging, I squash the commits


HSI Data File Structure

Hello!
Thank you for contributing such a great work.
I'm very interested in it. Unfortunately, I am unable to download the HSI data from the link provided. I hope to use this network to train my own HSI dataset, but as a beginner, I'm unsure about how to prepare the data files. I have a 512ｘ512ｘ101 HSI dataset.
Could you please guide me on how to prepare the data to make it work?
Thank you!
Wish you more success!

Hey,
I think you can upscale the number of channels from 101 to 204. Then I think the model will work.

Thank‘s a lot!


Less opinionated import script

Pre-flight checklist

[X] I have read the contribution documentation for this project.
[X] I agree to follow the code of conduct that this project uses.
[X] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

Problem description
I think the import script is too opinionated. I'm developing an app using Perforce for version control, for distribution in the Mac and Windows app stores. Yet the script installed makers for several Linux package formats and something called Squirrel. It didn't install the pkg maker even though I ran it on macOS. It also initialized a Git repository without asking.
Proposed solution
I think the import script should support a few customization options, maybe ask questions, like the npm init script.
Alternatives considered
It could support command line flags too, but for me a question based interactive flow seems more user friendly.
Additional information
No response

I agree. Our own init script should probably follow suit as well!

I'd generally argue that what we have currently are sane defaults, but being able to opt-out via either an interactive mode or command line flags is the way to go.
As an example, most users of init will probably want a git repo initialized if one hasn't been already.


Update device-management-hybrid-azuread-joined-devices-setup.md

@deosandeep : Thanks for your contribution! The author, @MarkusVi, has been notified to review your proposed change.

#sign-off


add argument: enableUpdateTableStatistics

What problem does this PR solve?
add argument: enableUpdateTableStatistics
What is changed and how it works?
Check List
Tests

Unit test
Integration test
Manual test (add detailed scripts or steps below)
No code

Code changes

Has exported function/method change
Has exported variable/fields change
Has interface methods change
Has persistent data change

Side effects

Possible performance regression
Increased code complexity
Breaking backward compatibility

Related changes

Need to cherry-pick to the release branch
Need to update the documentation
Need to update the tidb-ansible repository
Need to be included in the release note

/run-all-tests

/run-all-tests


Add class grades feature

Added the attendance and the class participation parts of the class grades feature.

LGTM


Fix rules_helm dependencies

rules_oci is loaded by a non dev_dependencies module extension and therefore musn't be a dev_dependency itself.
Proposed an upstream fix for future versions in https://github.com/abrisco/rules_helm/pull/107.

Hello @abrisco, modules you maintain (rules_helm) have been updated in this PR. Please review the changes.

I think this change can be closed in favor of https://github.com/bazelbuild/bazel-central-registry/pull/3016

@abrisco it would be nice if there are not random broken versions on BCR. Yanking versions is also bad as this also breaks builds which might only use other functionality which works. So I would prefer to upload this additionally (especially as it doesn't even change the behavior of the code).

Sounds good to me!

Should users just switch to the latest version? https://github.com/bazelbuild/bazel-central-registry/pull/3054

Should users just switch to the latest version? #3054

As always, it is recommended to use the latest version but in case people want to use an older version, they should find a working version on BCR.

Hello @abrisco, modules you maintain (rules_helm) have been updated in this PR. Please review the changes.


Sentry not capturing crashes inside Task.start function

Environment

Elixir version (elixir -v):
Elixir 1.10.2 (compiled with Erlang/OTP 21)
Erlang/OTP version (erl):
Erlang/OTP 21
Sentry version (mix deps):
8.0.2
Operating system:
Erlang/OTP 21
Is this an umbrella application?:
yes
Release type (Distillery, mix release, Mix, etc.):
iex -S mix phx.server

Description
I am using sentry version 8.0.2 and its reporting errors perfectly for normal cases. But for the functions which I execute via Task.start it wont report errors. inside my phoenix endpoint file I have
use Sentry.PlugCapture
...
plug Sentry.PlugContext

in my config I also have
config :logger,
+  backends: [:console, Sentry.LoggerBackend]

Configuration seems correct but I am not able to capture events. Maybe I am missing something... Any help or guidance is welcome. Thanks
Expected Behavior
Sentry Should Report Error
Actual Behavior
Nothing happens. I although see crash on my console
Steps to Reproduce

Create an umbrella app
Configure sentry in phoenix app
Create a sample controller
From controller function, call a function inside Task.start which should crash
You wont get crash reported by sentry

Thanks for opening an issue!
I tested a new project, and am able to receive events captured by the LoggerBackend for a crashing Task in a controller.
Can you share a project that reproduces it?

Happy to look into this further with more information, but going to close for now 🙂


fix: update title in project update api

This PR will fix the issue of project update api setting the project title to empty string.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.005%) to 50.952%

Totals

Change from base Build<PHONE_NUMBER>:
0.005%

Covered Lines:
5674

Relevant Lines:
11136

💛  - Coveralls


Add sheduled security checks

Objective
CI should automatically check if some deps are mentioned in https://rustsec.org database. Not only for unmaintained crates but also potential segfaults with threading and so on.
Solution

Added sheduled checks with cargo audit, it will run every day at midnight and automatically open security related issues

This is already done with cargo deny


linux ci fails due to pydantic release

This only applies to the linux ci, and the new v2.0.3 release from 6hrs ago looks to be the cause. The unit tests behave normally with a linux build from yesterday (+ on local dev). Now the new error for rest api views is:

ImportError: cannot import name 'PydanticUndefined' from 'pydantic_core' (unknown location)

this bug fixed itself (dependencies that were broken by pydantic were updated elsewhere)


libdparse accept a BlockStatement as a declaration

{
    int foo();
}
{}

libdparse will accept this code, while DMD will refuse it:
test/pass_files/issue0070.d(1): Error: declaration expected, not '{'
test/pass_files/issue0070.d(4): Error: unrecognized declaration

Tested with 2.069.

Looks like I need to make a change from:
    /**
...
     * $(GRAMMAR $(RULEDEF declaration):
     *     $(RULE attribute)* $(RULE declaration2)
     *     ;
     * $(RULEDEF declaration2):
...
     *     | $(LITERAL '{') $(RULE declaration)+ $(LITERAL '}')
...
     */

to:
    /**
...
     * $(GRAMMAR $(RULEDEF declaration):
     *       $(RULE attribute)* $(RULE declaration2)
     *     | $(RULE attribute)+ $(LITERAL '{') $(RULE declaration)+ $(LITERAL '}')
     *     ;
...

...
     */

This also requires changes to the ConditionalStatement grammar.


ProjectShareGroup fails to delete when already deleted

We deleted a group in GitLab, so the ProjectShareGroup is removed from the gitlab.com platform. However, pulumi still tries to remove the group as a member of a project, and fails because the API returns an error (404). Running a refresh does not make pulumi aware that the group is no longer a member, and thus the only way to solve this appears to be modifying the state directly, which should never need to happen.
Expected behavior
The group is seen as already having been removed as a member of the project.
Current behavior
Pulumi still thinks the group is a member of the project.
Steps to reproduce

Create a GitLab Project (directly or either via pulumi)
Create a GitLab Sub Group (directory or either via pulumi)
Share the project with the group (via pulumi)
Remove the group from the project (Directly on gitlab)
Run pulumi up

Context (Environment)
We had to recreate a group that is shared in every one of our applications. While we don't have gitlab setup in pulumi (yet) for each application, there's still about 20 applications we will probably have to manually modify the state for.

@stack72 I believe this is related gitlabhq/terraform-provider-gitlab/issues/1194 and going to be fixed by gitlabhq/terraform-provider-gitlab/pull/1209


Module 'vue-gettext/types' has no exported member 'translate'.

I use typescript 3.9.5

+1, the same issue. Seems like simple d.ts could fix it

+1 here, using typescript 4.7.3

I believe that the following code snippet may help those of you who would like to add types for the exported member translate themselves in their own project.  In ours, I created a file vue-gettext.d.ts with the following content:
declare module 'vue-gettext' {
    const translate: {
        getTranslation(msgid: any, n?: number, context?: any, defaultPlural?: any, language?: string): any;
        gettext(msgid: any, language?: string): any;
        pgettext(context: any, msgid: any, language?: string): any;
        ngettext(msgid: any, plural: any, n: any, language?: string): any;
        npgettext(context: any, msgid: any, plural: any, n: any, language?: string): any;
        initTranslations(translations: any, config: any): void;
        gettextInterpolate: any;
    }
}

There are a lot of 'any' types in there which should probably be replaced with more specific types. But I hope this is a useful scaffolding to help you or anyone reading this in the future get started.

thanks @annyanich for the inspiration. i've adapted your shims to more comprehensive type definitions, which can be copy-pasted into a file named vue-gettext.d.ts:
import GetTextPlugin from 'vue-gettext';

declare module 'vue-gettext' {
  export default GetTextPlugin;
  const translate: {
    gettext(msgid: string, language?: string): string;
    ngettext(
      msgid: string,
      plural: string,
      n: number,
      language?: string
    ): string;
    npgettext(
      context: string,
      msgid: string,
      plural: string,
      n: number,
      language?: string
    ): string;
    pgettext(context: string, msgid: string, language?: string): string;
    gettextInterpolate(
      msgid: string,
      context: object,
      disableHtmlEscaping?: boolean
    ): string;
  };
  export { translate };
}


Application of ssty feature at different text sizes

If I understand the implementation correctly, right now unicode-math treats ssty as essentially a size feature: +ssty=1 is applied to maths smaller than \sf@size and +ssty=0 is applied to maths between \sf@size and \tf@size.
However, the relevant values of \sf@size and \tf@size are calculated only for the \normalsize of the document. That means that, e.g., primes will fail do display correctly if one writes \Large $ x' x'' x''' $. On the other hand if  \setmathfont is issued after the size command, \sf@size and \tf@size  are recalculated and the primes will display correctly (though problems will now arise at smaller sizes).
Here is an MWE:
\documentclass{article}
\usepackage{unicode-math}
\begin{document}

$ x' x'' x''' $ vs. $ x\prime x\dprime x\trprime $

{\Large $ x' x'' x''' $ vs. $ x\prime x\dprime x\trprime $}

{\Large\setmathfont{Latin Modern Math} $ x' x'' x''' $ vs. $ x\prime x\dprime x\trprime $}

\end{document}

The comparison between the superscripted and unsuperscripted primes confirms that the ssty feature is at the root of the problem.
Is there a way to fix the application of ssty so that it is triggered if the expression is actually superscripted, as opposed to relying on size calculations?
Related issue report: #112.

I am not entirely sure whether applying +ssty=0 to font size larger than \g_@@_size_tfsf_fp or applying +ssty=1 to font size larger than \g_@@_size_sfssf_fp is appropriate. Despite the fact that these features are style features, I am inclined to treat them as size features, as I believe the design of these ssty glyphs is of optical size.
When in large font size (so large that the math script-script-size exceeds, say, 10pt), the math text-size, script-size and script-script-size should probably use Display, Subhead and Text anyway. This could be the case for Minion Math. If the math typeface does not contain the Display and/or Subhead fonts, then it is perfectly fine to use a scaled up Text font for all three levels of math. Forcing a wider, thicker version at large-size scripts just looks wrong to me.

I think I now agree and this was something that stalled me last time I started looking at this:

The first is \normalsize scaled up, and the second is \huge$...$ — the default in regular LaTeX is to not use optical scaling for subscripts/superscripts if the font is already large.
Achieving this in unicode-math needs a re-do of the way its font declarations interact with \DeclareMathSizes works, IIRC. Definitely not impossible but needs a bit of re-architecting rather than bug-fixing.

The first is \normalsize scaled up, and the second is \huge$...$ — the default in regular LaTeX is to not use optical scaling for subscripts/superscripts if the font is already large.

I apologize for not being word-perfect in English, but I disagree with the wording in the quoted comments. Here is my MWE to produce the side-by-side $a^{x^b}$ image:
% !TeX program = pdfLaTeX
\documentclass[10pt]{article}
\usepackage{lmodern}
\usepackage{graphicx}
\begin{document}
\scalebox{2.074}{$a^{x^b}$} % \@xxpt / \@xpt
\huge$a^{x^b}$ % \newcommand\huge{\@setfontsize\huge\@xxpt{25}} for 10pt article
\end{document}

When using separate LM Math font files under pdfLaTeX, the already-large example on the right does use appropriate optical scaling, as the text-size (20.74pt) and script-size (14.518pt) fonts are taken from LMMathItalic12 while the script-script-size (10.37pt) font is taken from LMMathItalic10.
The limitation comes from OpenType LM Math which, as a single font file, provides only 3 optical sizes under XeLaTeX/LuaLaTeX. So, naturally, in the \huge$a^{x^b}$ case above I am inclined to argue that the scaled up version of 10pt design size should be used in all 3 math levels.
My point is: If the font is already large, then the default LaTeX still uses (well, tries to use) optical scaling (as the pdfLaTeX example illustrates). The reason that we observe only one design size in \huge via XeLaTeX/LuaLaTeX is due to the limitation of OpenType math font and the lack of Display and Subhead design sizes.

@RuixiZhang42 — you are correct, the apology should be mine. From the CM perspective optical scaling is being used, it's just not as extreme in the large case.
I agree ssty needs to be more specifically linked to size not style.


player infos

player infos for all deutsche bundesliga clubs (from kicker.de /
01.09.2015)

Great stuff. Thanks. PS: Note, the format is per file and plain text. No worries. Will try to "conver" it in the next days. Cheers.

I saw the format, but I couldn't find the couldn't find the documentation - Squad documentation as described in http://openfootball.github.io/questions.html is not the same as can be found in https://github.com/openfootball/eng-england/blob/master/2014-15/squads/arsenal.txt for example.

No worries. JSON is great for (auto-)processing. Thanks. Sorry for the confusion - the documentation needs to get updated. Keep it up. Cheers.


Cannot get it to work with Vue 3

I installed the package using the following:
npm i -S<EMAIL_ADDRESS>
I then created the following component:
<template>
    <VTooltip>
        <button>TEST</button>
        <template #popper>
            TEST TOOLTIP
        </template>
    </VTooltip>
</template>
<script setup>
import { VTooltip } from "floating-vue"
</script>

When I attempt to use this component, I get the following error:

As per the doco, I also attempted to add use(FloatingVue) after importing with import FloatingVue from 'floating-vue' in my main.ts file but it produced the same error.

After upgrading to vue 3.3 (nuxt 3.5) there is an error (

envinfo
System:
    OS: Linux 5.15 Debian GNU/Linux 11 (bullseye) 11 (bullseye)
    CPU: (16) x64 Intel(R) Core(TM) i9-9900KF CPU @ 3.60GHz
    Memory: 11.10 GB / 15.58 GB
    Container: Yes
    Shell: 5.1.4 - /bin/bash
  npmPackages:
    floating-vue: ^2.0.0-beta.20 => 2.0.0-beta.20
    nuxt: ^3.5.0 => 3.5.0

@matthewknill
Try to reproduce here https://stackblitz.com/

You are importing the directive and using the component approach.
import {Tooltip as VTooltip } from "floating-vue"

Cheers @Joshw8
Attempted to use use(FloatingVue) and it seems to work now.


"Run" doesn't work for monitors in portrait mode.

Microsoft PowerToys version
"0.56.2"
Running as admin

[X] Yes

Area(s) with issue?
PowerToys Run
Steps to reproduce
Have monitor in portrait mode and press "alt+space" while the mouse is located on the monitor in portrait mode.
✔ Expected Behavior
The run box would appear at the center of the screen.
❌ Actual Behavior
The run box appears for a split second before being teleported off-screen.
Other Software
No response

Failed to repro this. Cloud you provide a /bugreport ?

The logs from pressing the hotkey all reported success, even though the window doesn't pop up.
[2022-03-15 11:44:58.6212] [INFO] [C:\a\_work\1\s\src\modules\launcher\PowerLauncher\ViewModel\MainViewModel.cs::849]
OnHotkey

[2022-03-15 11:44:59.1663] [INFO] [C:\a\_work\1\s\src\modules\launcher\PowerLauncher\Helper\NativeEventWaiter.cs::24]
Successfully waited for Local\PowerToysRunCentralizedHookInvokeEvent-30f26ad7-d36d-4c0e-ab02-68bb5ff3c4ab

[2022-03-15 11:44:59.1663] [INFO] [C:\a\_work\1\s\src\modules\launcher\PowerLauncher\ViewModel\MainViewModel.cs::849]
OnHotkey

[2022-03-15 11:44:59.7091] [INFO] [C:\a\_work\1\s\src\modules\launcher\PowerLauncher\Helper\NativeEventWaiter.cs::24]
Successfully waited for Local\PowerToysRunCentralizedHookInvokeEvent-30f26ad7-d36d-4c0e-ab02-68bb5ff3c4ab

[2022-03-15 11:44:59.7091] [INFO] [C:\a\_work\1\s\src\modules\launcher\PowerLauncher\ViewModel\MainViewModel.cs::849]
OnHotkey

[2022-03-15 11:45:00.2515] [INFO] [C:\a\_work\1\s\src\modules\launcher\PowerLauncher\Helper\NativeEventWaiter.cs::24]
Successfully waited for Local\PowerToysRunCentralizedHookInvokeEvent-30f26ad7-d36d-4c0e-ab02-68bb5ff3c4ab

[2022-03-15 11:45:00.2515] [INFO] [C:\a\_work\1\s\src\modules\launcher\PowerLauncher\ViewModel\MainViewModel.cs::849]
OnHotkey

[2022-03-15 11:45:00.7944] [INFO] [C:\a\_work\1\s\src\modules\launcher\PowerLauncher\Helper\NativeEventWaiter.cs::24]
Successfully waited for Local\PowerToysRunCentralizedHookInvokeEvent-30f26ad7-d36d-4c0e-ab02-68bb5ff3c4ab

[2022-03-15 11:45:00.7944] [INFO] [C:\a\_work\1\s\src\modules\launcher\PowerLauncher\ViewModel\MainViewModel.cs::849]
OnHotkey```

@kportertx Could you attach the full zip /bugreport here, it contains a lot of information for debugging. If you are not comfort to attach it here, you could email it to me at<EMAIL_ADDRESS>or @crutkas at<EMAIL_ADDRESS>

Sorry, I haven't been able to circle back to this - but the issue is fixed now as of v0.57.0, I suspect this is the applicable release note.

Fixed a bug where the same layout applied with different configurations to different screens would reset to a single configuration. (This was a hotfix for 0.56)

Upgraded to v0.57.2 and seems this issue is back.

@kportertx can you do a screenshot of windows settings so we can see the layout and what the scale for each monitor(a) are. /needinfo

Screen 2 is the screen where PowerToys Run doesn't work.

ok, this is what my gut was thinking, DPIs are different on the monitors and wondering if this could be a rippling effect of this app being actually WPF under the hood.

wondering if this could be a rippling effect of this app being actually WPF under the hood.

Any more insights?

FWIW, it appears to be working again in 0.59.1.


Subclasses of valid types for Timestampables are considered too

Any progress on that?

This doesn't look like it's going to be merged. Since there's no real way to set the $validTypes from outside the class, there's only a few other options.

Use reflection to set the values you need at runtime, or
Use Composer to point the class to one you control:

    "autoload": {
        "classmap": [
            "src/YourBundle/Vendor/GedmoTimestampableMappingDriverAnnotation.php"
        ]
    },```


[Tabs] HandleTabsScroll useCallback missing arguments

Fixes #20442
Just a small change to provide an empty second argument to the useCallback method.

[X] I have followed (at least) the PR section of the contributing guide.

You probably based this off master. For anything but bugfixes use next


Update create-external-load-balancer.md

fix the format.Fix leading spaces in commands

This change is

@stewart-yu 👋  Thanks for allowing edits from maintainers! 💛


feat(sumologicextension): use hostname as default collector name

This ends up causing more problems than it solves. In most circumstances the hostname is unique, and where it isn't, the user should set the collector name explicitly. And just using the hostname makes the user experience in the majority of cases better.

Should we clobber by default then?

I think the default behaviour is better in this case. Clobber would actually delete the existing collector, which is a destructive action I'd rather not do without explicit user opt-in. Maybe we should log a warning in this case?

Should we clobber by default then?

I think the default behaviour is better in this case. Clobber would actually delete the existing collector, which is a destructive action I'd rather not do without explicit user opt-in. Maybe we should log a warning in this case?

I added it.


Uncaught SyntaxError: expected expression, got '<'

I used the copy in the "dist" folder and I get the following error:
Uncaught SyntaxError: expected expression, got '<'

hello - i can't seem to repro your issue.  please see https://philfung.github.io/ which is using the exact "dist" folder.  can you provide repro?

I am sorry, it is totally a mistake on my side. Somehow the js file didn't load properly on a first attempt, and it was cached. So, subsequently, even after I have replaced the js file, the same error persists, because the correct js file was never get loaded.


fix forward-compatibility problems with new RPCs unhandled by old services

vendor in new RPC library
no fail-stop errors if configPath fails

r? @patrickxb / @gabriel
Thanks

Lgtm

I tested this with a fake RPC I just made it, and it spat forth ugly warnings but did not kill the experience


Add Sass to project. Related #79

Add Sass to project, Fixes #79
Transpose original CSS into Sass
Delete original main.css file
Fixes #63, clean up main.css

hi @des-des , we have added main.css to .gitignore but  we don't understand the other comments.

@skibinska I made the other comments before I realised you had commited your compiled css, ignore them.

This is still commited. You need to give me a pull request where this is not in the diff.

Ok we have removed the compiled main.css file @des-des.

Hi @des-des. I have created some new variables in the _variables.scss file.


Allow Relative Paths

This pull request adds an option to pass { relative:true } to the path object (either through the object or function methods) in order to keep the path relative to the file glob. Normally this bit is removed and renamed with gulp.dest() but when renaming and concatenating compiled JST template files, the full absolute path name is passed making the name of the template non-portable if developers set up their build environments in different locations.
This small change allows users to pass a flag that eliminates the step of re-applying the absolute path and allows the path to remain relative.

Sorry for the extremely long wait here. How does this play in with https://github.com/hparra/gulp-rename/issues/67 ?


Compatibility for FastBoot >=1.0.0

This takes care of #6 by using the new recommended patterns for selectively not eval'ing code that cannot run in server/FastBoot environments.

Hi @billdami
Thanks for this PR


Override token applied to parent component with new token settings

Is your feature request related to a problem? Please describe.
I have a main button component where all four corners have a 4px border radius set with a token. I am then using this main button component to build a split button component and the corners need to be 0px for the corners in the middle of the split button component but I am unable to override the parent component token.
Describe the solution you'd like
Allow overriding parent component tokens for a child component used inside another component.
Describe alternatives you've considered
Create a bunch more variants to get around this limitation making managing the main button component much more cumbersome and a larger Figma file as well.
Additional context
None

Can you check again with the recent release? This should work even with 0 - just tested it.

I'll be closing this - please reopen if the issue persists (my guess is our recent release fixed this)


Use of regex with =~

Hello,
I'm trying to use the regex match with a code like
func main() {
    s := `({135} == "360") AND ({320} =~ "foo.*\\/")`
    // Parse the condition language and get expression
    p := conditions.NewParser(strings.NewReader(s))
    expr, err := p.Parse()
    if err != nil {
        // ...
    }
    // Evaluate expression passing data for $vars
    data := map[string]interface{}{"135": "360", "27":89844.34343, "319":"https://mail.google.com/mail/u/0/#inbox/163648ca7afee154", "320":"seafood/"}
    r, err := conditions.Evaluate(expr, data)
    if err != nil {
        fmt.Printf("Evaluation error: %v\n", err);
    }
    //matched, err := regexp.MatchString("foo.*\\/", "seafood/")
    //fmt.Println("Evaluation result:", matched)
    // r is false
    fmt.Println("Evaluation result:", r)
}

When i try a match string with the food/ on the normal match string this seems to work but here i always get false. It seems when i have a / in the string i can't escape it, i have problems to escape the "." as well
When i try with the package regexp the expression seems to match but not with this condition package
I'm not sure if i'm writing the expression wrong with the current package or if i have to use something different so looking for some help :p

Ok nevermind after playing a bit more with it it works with foo.*/ so with just one
I had some problem earlier while testing with the parameters between "//" because it was somehow getting in an infinite loop when i was adding my https:// test. I'll try some other combinaison and see how it goes


With the  MERGE Statement, Should 'Target' and 'Source' be in Brackets in Examples?

For the page:
https://github.com/MicrosoftDocs/sql-docs/blob/live/docs/t-sql/statements/merge-transact-sql.md
Should the documents be showing brackets around the alias 'Target' and its usage in examples  since one of the phrases seems to be using it as a keyword in 'WHEN NOT MATCHED BY TARGET'  even though the current keyword list does not list Target as a keyword?  Could this be true for 'Source' as well since 'WHEN NOT MATCHED BY SOURCE' is possible.
Here is the specific code as the example:
-- Create a temporary table variable to hold the output actions.
DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20));

MERGE INTO Sales.SalesReason AS Target
USING (VALUES ('Recommendation','Other'), ('Review', 'Marketing'),
              ('Internet', 'Promotion'))
       AS Source (NewName, NewReasonType)
ON Target.Name = Source.NewName
WHEN MATCHED THEN
UPDATE SET ReasonType = Source.NewReasonType
WHEN NOT MATCHED BY TARGET THEN
INSERT (Name, ReasonType) VALUES (NewName, NewReasonType)
OUTPUT $action INTO @SummaryOfChanges;

-- Query the results of the table variable.
SELECT Change, COUNT(*) AS CountPerChange
FROM @SummaryOfChanges
GROUP BY Change;

I look forward to your thoughts.
Sincerely,
Keith Nicholson

@keithnicholson -- Keith, thank you for your detailed feedback.  Please consider these resources:

SQL Server on Microsoft Q&A
DBA Stack Exchange
Stack Overflow

@XiaoyuMSFT -- Xiaoyu, please look into this issue.


chore: disable proto validation by the generator

The generator Docker image will start supporting this option soon.
The command line will be: ..... --validation false .....

The sample test should work with the latest gax to be published.


Adds Virtual School Day by Varsity Tutors

Adds https://www.virtualschoolday.com/

This is great, thank you!


Added various badges to README

Coverage remained the same at 94.068% when pulling b135a3ad424c8c0a885156deccdb73eb672d1911 on task/readme-badges into 17c212cacb5b1c8f019fedc7574f770918b7e82b on master.


Added format function for stats

Added a format function for stats, for now it only changes the output for Timers, by showing time on a scale relative to how big it is
I'm not sure that if this is implemented in the code, getStat would be relevant anymore, so I kept it in case.

Outdated, sorry


[DOCS] Spelling mistakes in README file

Description
There are some spelling mistakes and grammatical errors in the README file.
for eg, "throughout" is misspelled as "throught".
Screenshots

Additional information
No response

@J0SAL Please assign this issue to me under GSSOC'23.

Small grammatical mistakes won't be considered under gssoc. do you still want to contribute to it? @blindaks

closing as there is no update


More styling for header type

Would it be possible to allow for more styling options for the header type, like there are for the text type? Stuff like fontFamily and fontWeight spring to mind.
Really loving this work, fantastic job! Thanks.

You are right. It's on my todo list. https://github.com/neocarto/bertin/blob/main/TODO.md

Great to see, thanks!


[Bug] Cannot be found in the maven central repository org.apache.dubbo.extensions:dubbo-metadata-report-redis

Pre-check

[X] I am sure that all the content I provide is in English.

Search before asking

[X] I had searched in the issues and found no similar issues.

Apache Dubbo Component
Java SDK (apache/dubbo)
Dubbo Version
Dubbo SPI Extensions JAVA 3.3.0
Steps to reproduce this issue
Cannot be found in the maven central repository <dependency> <groupId>org.apache.dubbo.extensions</groupId> <artifactId>dubbo-metadata-report-redis</artifactId>

What you expected to happen
Need to upload org.apache.dubbo.extensions:dubbo-metadata-report-redis to maven central
Anything else
No response
Are you willing to submit a pull request to fix on your own?

[X] Yes I am willing to submit a pull request on my own!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Hello and thanks for the feedback. But this is not a bug, this is because the latest version of dubbo-spi-extensions has not been released yet, and the current version 3.3 has not integrated the redis extension. Our latest version is coming soon, so you can wait. If you need to use it urgently, you can manually compile and package the master branch of dubbo-spi-extensions and then use it.@eduosi

Hello and thanks for the feedback. But this is not a bug, this is because the latest version of dubbo-spi-extensions has not been released yet, and the current version 3.3 has not integrated the redis extension. Our latest version is coming soon, so you can wait. If you need to use it urgently, you can manually compile and package the master branch of dubbo-spi-extensions and then use it.@eduosi

OK, I understand.


Bootstrap quasiquotes

Current implementation of quasiquotes (see https://github.com/scalameta/scalameta/issues/157 for details) is written as a scala.reflect macro in terms of the scala.reflect API. We'd need to bootstrap it to make it useful to Dotty and Intellij. Note that it doesn't mean that we need to fully implement https://github.com/scalameta/scalameta/issues/160 - it just means that the implementation needs to be rewritten to only use scala.meta APIs.

There are already implementations for Dotty and Intellij, so this issue is now moot.


fix potential inconsistency and possible crashes.

Two fixes for potential inconsistencies and crashes due to shared access to data structures.
(1) ODKDatabaseImplUtils -- the user roles are expanded into a List and cached. This fix changes getRolesArray() to an instance method and adds a cacheGuard object which is used to synchronize access to the roles list and roles array. Without this change, there is a possibility that the returned list of roles might not correspond to the roles that are active (detected on website).
(2) The OperationLog maintains a circular buffer of the last N operations and their outcomes. There were issues with proper access to this buffer only within a synchronized block on the mOperations buffer array.  The primary change is to the getOperationLocked() method (line 320). This now operates within that synchronized block. Other changes are to private methods, which are now passed the OperationLogEntry rather than the cookie used to retrieve the entry.

runtests

runtests


CF-453 add a multiple video field to entry ui form

Stijn the code is ok but functional test not, i added one youtube event on http://search-acc.lodgon.com/search/rest/detail/event/23647b63-8e63-4c75-b833-fabed70a1707?noauth=true&version=3.3 but if want to add another video on an edit the button '+ add another video' wont do anything.


Update README.md

Add JitPack instructions while artifacts are not published to MavenCentral and/or Bintray

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


[react-hooks] react-query onError is never called when defined on endpoint

I'm seeing an issue where the queryOptions.onError callback is not being called on an error as expected, i.e.
const zodios = new Zodios(baseUrl, [
  {
    method: "get",
    path: "/users/123", // This user doesn't exist
    alias: "getUser",
    response: user,
    queryOptions: {
      // onError callback never fires?!
      onError: (err: Error) => {
        console.log("this onError is never called", err);
      }
    }
  }
]);

However it is correctly called when defined on the hook itself, i.e.
const { data: user, isLoading, error } = zodiosHooks.useGetUser(
  {},
  {
    onError: (err: Error) => {
      console.log("this onError is called", err);
    }
  }
);

Here is a minimal repro:
https://codesandbox.io/s/zodios-react-onerror-qo0pl0?file=/src/Users.tsx
@tanstack/react-query: 4.26.1
@zodios/core: 10.7.7
@zodios/react: 10.4.4
axios: 1.3.4
zod: 3.21.4

Hello @nerdstep,
Indeed, it's not how zodios react query works, query options are not passed in api descriptions.
zodios don't know about react and even less about react-query.
Why did you think that this would work?
Nowhere in the docs we show this.
Here are the docs : https://www.zodios.org/docs/client/react#zodiosusequery
const zodios = new Zodios(baseUrl, [
  {
    method: "get",
    path: "/users/123", // This user doesn't exist
    alias: "getUser",
    response: user,
  }
]);

const hooks = new ZodiosHooks(zodios);

const my component = () => {
  const { data: user, error } = hooks.useGetUser({},
  {
    onError: (err: Error) => {
      console.log("onError is called when defined on the hook", err);
    }
  }
  return <> </>;
);

@ecyrbe you're absolutely right, that's my bad -- not sure why I thought that would work... I think because I didn't see a type error when providing queryOptions to the endpoint config I had just assumed it would propagate as default options to the hooks, which was my mental model of how I wanted it to work. Oops. 😂


✨ Migration: Headless Input Component

Overview
Migrating the input component from Indigo to Ams; convert all MUI dependencies into raw HTML element; and add needed APIs for headless input while using it independently. This view should be usable directly and independently and should have no style (no any visual part, including default outline) at all.
Features
The headless input component should have following features:

[x] Totally style-less.
[x] Callback onChange when the input is finalized.
[x] Input finalization detection.

[x] When user hits enter.
[x] When user blurs the input and the input is already in date format.

[x] Callback onError when there is an error.
[x] Throw no error at all (except wrong type, e.g. pass a string to the onChange).
[x] Support wild props properly (pass in and avoid conflict).
[x] Detect when should the selector be opened or be closed.

This feature is moved into the issue of Date Selector (#5) as it is associated to Selector's behavior.

Finished.


28 setup lint

#28

@mpatek #reviewmerge please.

@noppanit this is a great addition. Just a few minor notes.

@mpatek How is this looking?

Looks good @noppanit. Thanks for making all of those changes.


operator: Add missing copyright header

Adds copyright header to operator/api.go.
Updates k8s examples README with updated k8s versions.
Removes redundant type in distillery_test.go
check-fmt failed otherwise for me when building locally.

This change is

Coverage increased (+0.004%) to 42.557% when pulling ab048e7748a456b3852d9837f68a72e2e0e81c5d on iffyio:pr/cilium-operator-api-copyright-header into 2935f589aba999bb1de8c7ccf7930b20a9aff5be on cilium:master.

test-me-please


Upgrade blst to v0.3.11

A new version of blst was released a few hours ago:

https://github.com/supranational/blst/releases/tag/v0.3.11

This PR updates c-kzg to use this version. Also, fixes some typos.

We can ignore the CI check failure on Windows. It seems to have another problem now.


Pluggable transports for iroh-net

This would be a major enhancement, but it would be very nice if you could have a way to plug in additional transports into iroh-net.
Examples include local transports like BLE, or something like unix datagram sockets or even something like shared memory for communication between local processes.

this is issue is about p2p transports

For P2P I think iroh-net better focuses on supporting any kinds of IP LANs. Then if someone wants to use BLE or unix socket they only need to turn it into a virtual IP interface. Pluggable transport API can then be something like TUN API.

I disagree. As an end-user application developer, I don't want to force my users to make changes to their ip interfaces to be able to have features like a local BLE-based transport.


Adding Replication Master/Slave (FEATURE REQUEST)

flask-sqlalchemy is a great library, but it could be even better adding support for replication, a feature quite common on all production environments.
The idea would be adding some options to allow configuration  to allow read and write only on the defined databases, for instance:
SQLALCHEMY_DATABASE_URI = 'sqlite:///master.db' # Only Write
SQLALCHEMY_BINDS = {
    'slave': 'sqlite:///slave.db'  # Only Read
}

I don't plan on adding primary/secondary support to the extension. SQLAlchemy's docs discuss implementations for this which should be possible with the extension as well.


[BUG] Will output all changed files if not file matches the **/*.sql pattern

Is there an existing issue for this?

[X] I have searched the existing issues

Does this issue exist in the latest version?

[X] I'm using the latest release

Describe the bug?
If the files pattern contains **/*.sql, and it didn't match any changed files in the pull request, will print a warning:

No match found for specified patterns. Ensure that subdirectory patterns are prefixed with "**/" and all multi line string patterns are specified without quotes. See: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet

And the action will output all changed files, seems this doesn't make sense.
To Reproduce

Create a workflow like:

on: [pull_request]

jobs:
  test-workflow:
    runs-on: ubuntu-latest
    name: Changed files
    steps:
      - uses: actions/checkout@v3
      - name: Get changed files
        id: changed-files
        uses<EMAIL_ADDRESS>        with:
          files: |
            **/*.sql
      - name: Echo files
        run: echo ${{ steps.changed-files.outputs.all_changed_files }}
        shell: bash

Note: the files must has the pattern: **/*.sql

Make some changes (not change any SQL files)
Create the pull request and check the action.

What OS are you seeing the problem on?
ubuntu-latest or ubuntu-20.04
Expected behavior?
The action should return empty as no changed files can match the **/*.sql pattern.
Relevant log output
No response
Anything else?
N/A
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Solution here would be to validate the patterns.

The interesting thing is if the pattern is something like **/*.md, and even though the PR doesn't have any markdown file changes, it works well with empty output. I only found this issue if the pattern is **/*.sql

That's strange, I'll expect the warning to show up for all valid glob patterns


Operates slow in folder with a lot of files

I do have a journal folder with files for every day starting from a couple of years ago. Setting a goal for the whole folder - makes typing process freeze and lagging.

I noticed also on each device I have.
The lag is really noticeable. After some time, I had to remove folder goals relying only on note goals, while using novel word count for folder goal.
Unfortunately novel word count doesn't have a daily goal but only the total count.
I hope it could be fixed.

Is the developer looking here?? I'm getting a 'FAILED TO SHOW GOAL' error!!

UPDATE: I found the issue! The HOMEPAGE plugin
When the Homepage plugin is enabled, the daily word goal plugin doesn't open and gives an error. You can disable the Homepage plugin, open the word goal window, and then reactivate the Homepage plugin. Thanks. @lynchjames  we love you and your plugin is amazing! Please don't leave us!! Thanks <3<3<3<3<3

I've made a change to updating goal counts every few seconds rather than on each file update which was too expensive for larger vaults. There will be a setting to allow you to change the time in seconds between goal updates.
I have also added more caching to reduce the amount of note processing required.
With these improvements in place, I can see noticeable improvements in performance on a vault with over 800 notes.

Changes included in 0.10.1.


Duplicate Issues

@rgbkrk was looking through issues out of curiosity and it seems like there are lots of duplicates or extremely similar issues (same title, different platform). Is it fine to close/merge these as duplicates?

Totally!
We could also write some code to prevent the semi-automated dupes to occur (the little "we don't support X, please file an issue" dialog)

Didn't realize that the issues were coming auto generated. Anyway, was looking through issue tracker since might think about writing some CoffeeScript in markdown-preview-plus (not being maintained and want to extend it) or script and noticed the massive number of duplicates.

Well done sir!
It's too bad I'm back in Texas now, I was just in Boulder two days ago and could have high fived you.

Here's the code that does the issue link creation:
https://github.com/rgbkrk/atom-script/blob/b93b026130f46aa9c625b4a73c7232d6e23222c5/lib/script-view.coffee#L90-L106

Thats too bad. I am full time in Boulder so let me know if you're in the area again.

How can you trigger this within atom/script? Would like to see it coming up

@EntilZha you can try to run C code on win :)

Use the run command on a file we don't have support for but for which you have a language pack installed. HTML definitely works.

Thanks. I closed most of the duplicate issues using a bot.


Need support to static framework

I use the Crashlytics.framework  witch is a static framework. And I got error below:
The 'Pods-XXXXX' target has transitive dependencies that include static binaries: (/Users/xxxx/Documents/Projects/xxxx/Pods/Crashlytics/iOS/Crashlytics.framework)
Really need static framework support!!   Thank you!!

See here for usage instructions for the static framework Firebase pods with Rome. Something similar should work with the Crashlytics pod.
Based on the error message, I suspect that you're running into the more general restriction of trying to have a dynamic framework CocoaPod depend on a static framework one.


Question: Next Tyre Compound

Getting the ideal and latest lap for the pit window is easy, but is there a way to get the tyre compound that's supposed to be put on?

struct TyreStintHistoryData{
    uint8     m_endLap;                // Lap the tyre usage ends on (255 of current tyre)
    uint8     m_tyreActualCompound;    // Actual tyres used by this driver
    uint8     m_tyreVisualCompound;    // Visual tyres used by this driver
};

uint8       m_numTyreStints;            // Number of tyre stints in the data

uint8       TyreStintHistoryData    m_tyreStintsHistoryData[8];

uint8       m_numTyreStints;            // Number of tyre stints in the data

uint8       m_actualTyreCompound;	   // F1 Modern - 16 = C5, 17 = C4, 18 = C3, 19 = C2, 20 = C1
                                                          // 7 = inter, 8 = wet
                                                          // F1 Classic - 9 = dry, 10 = wet
                                                          // F2 – 11 = super soft, 12 = soft, 13 = medium, 14 = hard
                                                          // 15 = wet
uint8       m_visualTyreCompound;   // F1 visual (can be different from actual compound)
                                                        // 16 = soft, 17 = medium, 18 = hard, 7 = inter, 8 = wet
                                                        // F1 Classic – same as above
                                                        // F2 ‘19, 15 = wet, 19 – super soft, 20 = soft
                                                        // 21 = medium , 22 = hard
uint8       m_tyresAgeLaps;             // Age in laps of the current set of tyres

float     m_tyresWear[4];                     // Tyre wear (percentage)

uint8     m_tyresDamage[4];                   // Tyre damage (percentage)

I don't think there is a reliable way of predicting what will be the next tire, since the tire sets do not have an id.


Change relative to absolute link

The reason is that in Happa, when rendering the app README, relative links don't work and as far as I understand we have a hard time making them work.

The reason is that in Happa, when rendering the app README, relative links don't work and as far as I understand we have a hard time making them work.

Got it :| Yeah, it's better for them to work in happa, but it's sad we need to edit them when changing branches... I feel this will get out of sync fast and stop wokring anyway.


VSCode has trouble rendering unicode combining character on macOS

Issue Type: Bug
I have code that looks like the following:
struct ∂⃖rrule{N}; end
struct ∂⃖recurse{N}; end

This fails to render properly in VSCode on macOS:

However, it renders fine in VSCode on Linux, as well as most other applications on macOS:
Sublime Text:

iTerm2:

Safari:

VS Code version: Code - Insiders 1.58.0-insider (Universal) (49e1f9919880c1c96004f9b6ad91bcee7a94a1bd, 2021-06-25T05:14:06.587Z)
OS version: Darwin arm64 20.5.0
Restricted Mode: No
Remote OS version: Linux x64 5.4.0-42-generic
Remote OS version: Linux x64 5.4.0-42-generic
Remote OS version: Linux x64 5.4.0-42-generic
Remote OS version: Linux x64 5.4.0-42-generic
Remote OS version: Linux x64 5.4.0-42-generic

System Info

Item
Value

CPUs
Apple M1 (8 x 24)

GPU Status
2d_canvas: enabledgpu_compositing: enabledmetal: disabled_offmultiple_raster_threads: enabled_onoop_rasterization: enabledopengl: enabled_onrasterization: enabledskia_renderer: disabled_off_okvideo_decode: enabledwebgl: enabledwebgl2: enabled

Load (avg)
2, 2, 2

Memory (System)
16.00GB (0.08GB free)

Process Argv
--crash-reporter-id 834c4ccc-3f7e-48c3-9194-d82f695b059e

Screen Reader
no

VM
0%

Item
Value

Remote
SSH: [redacted]

OS
Linux x64 5.4.0-42-generic

CPUs
Intel(R) Xeon(R) Silver 4114 CPU @ 2.20GHz (40 x 799)

Memory (System)
376.59GB (211.48GB free)

VM
0%

Extensions (10)

Extension
Author (truncated)
Version

remote-ssh-edit-nightly
ms-
2021.5.29700

remote-ssh-nightly
ms-
2021.5.29700

toggle-excluded-files
eam
1.7.0

go
gol
0.26.0

juliahub
Jul
0.3.6

language-julia
jul
1.2.5

cpptools
ms-
1.5.0-insiders2

sublime-keybindings
ms-
4.0.9

vscode-scheme
sjh
0.4.0

vscode-proto3
zxh
0.5.4

A/B Experiments
vsliv695:30137379
vsins829:30139715
vsliv368:30146709
vsreu685:30147344
python383:30185418
pythonvspyt602:30291494
vspor879:30202332
vspor708:30202333
vspor363:30204092
pythonvspyt639:30291487
pythontb:30258533
vsc_aacf:30263846
vspre833:30321513
pythonptprofiler:30281269
vshan820:30294714
pythondataviewer:30285072
vscus158:30321503
pythonvsuse255:30319630
vscorehov:30301224
vscod805:30301674
pythonvspyt200:30323110
vscextlangct:30310089
vsccppwt:30312692

@Keno you are right
also vscode integrated terminal doesn't render unicode character correctly
I faced this issue in windows

@Keno The VS Code editor delegates all font rendering to the underlying browser engine, i.e. Chromium. I have created a test page at https://jsfiddle.net/y843pavc/ and can confirm that Chromium is not rendering that the same way as Safari:
Safari

Chrome

Firefox

Could you please create an issue directly against Chromium at https://bugs.chromium.org/p/chromium/issues/list and link to it here.

Confirmed that the same issue exists in Chrome. Filed as https://bugs.chromium.org/p/chromium/issues/detail?id=1225037.

The upstream issue was WONTFIXED for being a font coverage issue. Given that this works elsewhere on macOS though, can VSCode ship a font that has this fixed?

@Keno Thank you for following up. The workaround is to explicitly define the font family fallbacks i.e. configure:
"editor.fontFamily": "Monaco, StixGeneral",


Facebook login not working in Kitkat device

Facebook xamarin android version:- 4.26.0
Issue: Cannot login via Facebook when the facebook app is installed in the phone.
Actual behaviour:- Facebook button does not respond
Expected behaviour:- app should properly launch and return result from Facebook
In Kitkat device i noticed that if the Activity LaunchMode is SingleInstance it wont show the facebook page, If i change it back to SingleTop or SingleTask it works as expected.
How does the launch mode of the activity dependent on the facebook login?

@georgethms10 Is this till an issue?

no response for two weeks. closing


Peer Review Comments

This code was very well written! I especially appreciate how thoroughly commented everything is, it was really easy for me to follow the logic of what was happening. Although I couldn't see the interactive plot in all of it's glory yet, that seems like a really good way to include all of the information you're hoping to provide, while also reducing the cognitive load as much as possible. One idea I might suggest for this is to have the interactivity portion enable viewers to highlight data from geographical regions by hovering over the key or, alternatively, highlight the PE requirements by hovering. (I have no idea how easy this is to implement, kudos to y'all for delving into the interactivity zone...I was not so bold).
@datalorax

Thanks Ian! Nice review. Hopefully you can get the PR to work as well.


No actual SERP

Many thanks for posting your library! It's easy to use and very nice.
But I've a problem with the SERP'S, when I search for the keyword I get some results that are not really actual. There are some differents between using google.de and using your Library. I've tried to edit the HTTP_HEADER_ACCEPT_LANGUAGE, google TLD and also SISTRIX_DB and SEMRUSH_DB. But there are some results from a website that dosen't exists anymore on googles search pages and some results that exists on googles search pages but not in the array I get back from SEOstats.

Keep in mind Google is personalizing SERPs : make sure you're using private navigation when cheking SERPs results. Tell me if it helps and if search results found are more accurate.


Pod rightsizing groundwork

Looks good to me, I am eager to see what comes out of this development


Support merging multiple license xml files

When multiple projects are part of an overall project there should be functionality to merge multiple license xml files into one single xml file.

So for example, we should be able to specify a "product name" and then license.xml files for the projects that make up the project. The xml files would be in the format produced by our licenser tool.


Npm package work

images loaded flag from 10 images to 3
loading 24 at a time instead of 50
changed the package main to ./index.js for now
added example gifs
updated readme
updated to-dos

Man, you sure are great


Alternative BaseSettings without enviromentvariables by BaseModel.model_validate_json_file

Initial Checks

[X] I have searched Google & GitHub for similar requests and couldn't find anything
[X] I have read and followed the docs and still think this feature is missing

Description
I used BaseSettings for some time in my projects. But I see some security issues when I put something lika api_kesy on enviroment varibales.
They are just to easy to catch.
On the otherhand i like BaseModels for data validation.
So I changed to an approch using json files to load my BaseModels wich contain only default configuration.
The function I use works simmilar as BaseSettings. So if the file is not found it just skipps and return teh default data.
If the file is found the data is read and pased into the BaseModel object.
As result the Basemodel is avalible in only RAM and contains the needed settings.
This is how I extend the Basemodel.
class uhfPydanticBaseModel(BaseModel):
    def model_validate_json_file(self, file_path: str = None):
        try:
            with open(file=file_path, mode='r') as f:
                data = json.load(f)
            return self.model_validate(data)
        except Exception as error:
            pass
        return self

    def model_dump_json_file(self, file_path: str = None):
        with open(file=file_path, mode='w') as f:
            f.write(self.model_dump_json())

Usage in one of my projects
class AlpacaPaperConfig(uhfPydanticBaseModel):
    API_KEY:str=""
    # Put your own Alpaca secret here:
    API_SECRET:str=""
    # If you want to go live, you must change this. It is currently set for paper trading
    PAPER:bool= True

def get_alpaca_paper_config() -> AlpacaPaperConfig:
    config_path = f'{os.path.dirname(__file__)}/../../.env/alpaca_config.json'
    config = AlpacaPaperConfig().model_validate_json_file(config_path)
    return config

This may be not the best way to implement this feature but I think you get the idea.
Maybe this is also intreresting in future and I dont need to build my own class to do this.
Affected Components

[ ] Compatibility between releases
[X] Data validation/parsing
[X] Data serialization - .model_dump() and .model_dump_json()
[ ] JSON Schema
[ ] Dataclasses
[ ] Model Config
[ ] Field Types - adding or changing a particular data type
[ ] Function validation decorator
[ ] Generic Models
[ ] Other Model behaviour - model_construct(), pickling, private attributes, ORM mode
[ ] Plugins and integration with other tools - mypy, FastAPI, python-devtools, Hypothesis, VS Code, PyCharm, etc.

Thanks @UHF for the issue

I used BaseSettings for some time in my projects. But I see some security issues when I put something lika api_kesy on enviroment varibales.
They are just to easy to catch.

Could you explain more the security issue?

Hi @hramezani,
Depending on wich OS you are working you can simply list all enviroment variables by e.g. executing SET in a terminal.
This will list all Enviroment variables and there Values.
If you work with more people on a project or may have others maintaining your server they can simply see all env.
If you have your secrets juts in the stack because they are member only in a object. They will be hard to find.
So Enviroment variables are not that save in general.
Regards
Falk


Broken link to ARCP scheme in spec appendix

Describe the bug
This link in the spec is broken

When parsing such crates it is recommended to use the Archive and Package (arcp) URI scheme to establish a temporary/location-based UUID or hash-based (SHA256) base URI.

URL
https://www.researchobject.org/ro-crate/specification/1.1/appendix/relative-uris.html#establishing-a-base-uri-inside-a-zip-file
https://www.researchobject.org/ro-crate/specification/1.2-DRAFT/appendix/relative-uris.html#establishing-a-base-uri-inside-a-zip-file
Suggested fix
Should this link to https://pure.manchester.ac.uk/ws/portalfiles/portal/76956641/arcp.html ?

Should be https://datatracker.ietf.org/doc/id/draft-soilandreyes-arcp-03 without .html


Support for loop for repeated blocks in oneToMany tables

Fixes: #41

Codecov Report

Merging #42 (c26e650) into main (a2034b9) will increase coverage by 0.35%.
The diff coverage is 93.02%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main      #42      +/-   ##
==========================================
+ Coverage   88.47%   88.82%   +0.35%
==========================================
  Files           4        4
  Lines         512      555      +43
==========================================
+ Hits          453      493      +40
- Misses         59       62       +3

Impacted Files
Coverage Δ

adtl/__init__.py
83.46% <91.66%> (+0.87%)
:arrow_up:

tests/test_parser.py
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


How to deal with overlapping sessions (same user.id, same conversation.id, different address.id)

Bot Info

SDK Platform: Node.js
SDK Version: 3.13.1
Active Channels: Emulator
Deployment Environment: local development with Emulator

Issue Description
if a user triggers a new bot session by typing two or more messages very close in time on the Emulator, it happens that the newly created session has more than one valid user address associated.
As a consequence, all messages from the Bot to the Emulator are delivered more than once.
Code Example
The "Hello World" Bot is ok to this purpose: you will get "Hello World" more than once.
Reproduction Steps

start the Bot ("node app.js")
open the Emulator and connect to the Bot on the app's local port
send two or more messages very quickly to the Bot

Expected Behavior
One would expect Bot messages to be received only once on the emulator, as only one conversation has been actually created.
Actual Results
Messages are delivered more than once.
Here is the dump of two user addresses involved in such a situation:
{"id":"g47afbimj58","channelId":"emulator","user":{"id":"default-user","name":"User"},"conversation":{"id":"j73je891i2ci"},"bot":{"id":"eg3age7628mj","name":"Bot"},"serviceUrl":"https://7e988633.ngrok.io"}
{"id":"k8njb01cj72a","channelId":"emulator","user":{"id":"default-user","name":"User"},"conversation":{"id":"j73je891i2ci"},"bot":{"id":"eg3age7628mj","name":"Bot"},"serviceUrl":"https://7e988633.ngrok.io"}
Please notice that they are identical, except for the address id's.

It looks to me like only one conversation was created  (conversation id is the same for both of the messages: j73je891i2ci).
Why is there no text property in the two example messages you've shared?  There's also no message type.
I think we need more details in order to get to the bottom of this.  Please elaborate ... from what you've described so far, you are sending multiple messages to the bot and receiving multiple replies.  Message id's are different, but that is expected.

Hi Eric,
you're right: only one conversation has been created, yet two different addresses have been bound to it.
Sorry for attaching only part of the information, here is the whole messages' dump:
{"type":"message","agent":"botbuilder","source":"emulator","textLocale":"en-GB","address":{"id":"l86ge7fejfce","channelId":"emulator","user":{"id":"default-user","name":"User"},"conversation":{"id":"em7lnc98252m"},"bot":{"id":"eg3age7628mj","name":"Bot"},"serviceUrl":"https://94986e6f.ngrok.io"},"text":"Hello World!"}
{"type":"message","agent":"botbuilder","source":"emulator","textLocale":"en-GB","address":{"id":"cca5hi44nca7","channelId":"emulator","user":{"id":"default-user","name":"User"},"conversation":{"id":"em7lnc98252m"},"bot":{"id":"eg3age7628mj","name":"Bot"},"serviceUrl":"https://94986e6f.ngrok.io"},"text":"Hello World!"}
Information in bold is what actually differs between the two messages: each of corresponding addresses can be used to reach for the same user (and client) independently, thus resulting in a message duplication on the emulator. See attached screenshot.
For the sake of completeness, here is the (trivial) code that leads to this situation:
botmanager.bot.dialog('/', [      function (session, args) {         var msg = new builder.Message(session);         msg.text("Hello World!");         console.log(JSON.stringify(msg.data));         session.send(msg);     } ])
Hope it's clearer now, thank you very much.
Marco

Ok, under this perspective it makes sense to have two messages in response.
Yet, to be sincere, I find a bit weird that message IDs are mapped onto address IDs: according to Bot Framework's documentation, addresses are meant to identify the user, in order to reach him at a further time (i.e. "proactive messages").
Or maybe am I missing something of the underlying logics of the Framework (I didn't go deep enough into this matter yet)?
Thank you very much.


How to better provide system information for LLMs

Description
How should I give system information to LLM so that it can use it when there is a question that requires this information?

Hi, if you are saying system prompt, please use ChatMessage to add a message of role System to the chat session. If you want the LLM to take use of some external knowledge such as a PDF documentation, please use LLamaSharp.kernel-memory, which provides RAG abilities.

Is it possible to implement ChatMessage in instructExecutor?

Sorry for the late reply. Could you please give an example about how you want to use LLM? It's a bit confusing to me because I'm not sure whether "system information" refers to "system prompt" here.


CORS issue with JS file from manifest

Salut 😄
First of all, thanks for your work!
(have been struggling this weekend to find a valid Vite 5 WP theme / assets handling and after 3 or 4 others, i found yours)
I tried to load assets as you recommended:

Vite dev server is localhost:5173 and my Docker WP instance is localhost:8888
If you have any idea what's wrong, i'm all ears 😄
EDIT : i saw in your video, that you have HMR without using Vite Dev Server url... how is it possible? 🤔
Issue
As you can see, the JS is blocked but not the CSS somehow 🤔

Config
My WP setup:

Env: WSL2
Server: Docker WP environment using .wp-env.json (@wordpress/env) which i can access at localhost:8888
(ex: localhost:8888/wp-login.php)
Frontend: Gutenberg (using FSE / blocks, i'm not using any kind of JS frameworks)
Theme: my source assets are in /src and my build assets are generated in /dist

Here is my vite.config.js:
// vite.config.js

import { defineConfig } from 'vite';
import { resolve } from 'path';

export default defineConfig({
	build: {
		minify: true,
		manifest: true,
		emptyOutDir: true,
		sourcemap: true,
		outDir: `dist/`,
		rollupOptions: {
			// overwrite default .html entry
			input: resolve(__dirname, 'src/index.js'),
		},
	},
	server: {
		strictPort: true,
		cors: true,
		port: 5173,
		hmr: {
			protocol: 'ws',
			port: 5173,
			clientPort: 8888,
		},
		proxy: {
			'/': {
				target: 'http://localhost:8888',
				changeOrigin: true,
				secure: false,
			},
		},
		watch: { usePolling: true, ignored: '/node_modules' },
	},
});

Nevermind, my issue was not related actually (caused because of using proxy which shouldn't be used)
If anyone has the same issue, i fixed it using browsersync instead inspired by this config: https://github.com/liginc/wp-starter-theme/blob/2eb95dca89a015c2ec021b73b57a1729aede571f/vite.config.js#L37-L45


Single quotes in clike

Single quotes in c/c++ and some other languages should identify only a single character and not actual strings.
I know the clike component is used by a lot of other components so i'm guessing we should change the components of the languages that use single quotes for singles characters instead.

Remember that Prism is not a linter. It's OK to highlight multiple characters using single quotes since your code should not have them in the first place.
If we were to change the behavior specifically for C and C++, I assume we would need to handle special cases too, like escape sequences, wouldn't we?


geat: add Windows powershell instructions for config write

Signed-off-by: morrieinmaas<EMAIL_ADDRESS>closes #152

We should probably run prettier for markdown formatting in an action and execute it with make format


Feature/robot form keywords

Overview
This adds a new keyword input form data, which is designed to be a single entry point to entering data in any field that has an associated label element.  It also introduces a custom locator strategy for finding form fields based on their nested label.
This change also includes a small addition to docs/robotframework.rst to mention our custom locator strategies. There is also a tweak to how our custom locator strategies are initialized.
The goal is to get this into production so we can get some real-world use. Once we're comfortable that it's reliable we'll either rename it to populate form or deprecate populate form so that we don't have two ways to interact with form fields.
The implementation is made of these logical pieces:

the keyword itself - input form data (in Salesforce.py)
a keyword for finding an element based on a nested label - locate element by label, used to implement the label custom locator strategy (also in Salesforce.py)
a collection of "handlers" - classes which are designed to set the value of a field (and eventually, also be used to get the value of the field) (in form_handlers.py)

You can see an example of the usage of this keyword in the file cumulusci/robotframework/tests/salesforce/forms.robot
Algorithm overview
For each field label and value pair, the keyword will first try to find a lightning web component that has the given field label. That element will then be used to find the appropriate handler, which must implement a set method. This method will then be called with the new value. It is up to each handler to decide how to set the field to the value.
If a lightning component cannot be found, we fall back to trying to find an input or textarea element, which should allow us to handle form fields that aren't based on lightning. Support for this is minimal in this PR, but the hooks are there for when we need them.
Critical Changes
Changes

new robot keyword input form data, which may eventually replace populate form as it supports many for input field types
new robot keyword locate element by label, used by input form data to find input elements based on their label
new custom locator strategy named "label", which uses locate element by label (eg: label:First Name)

Issues Closed

Thanks very much for your swift attention and thorough review. Have a great
weekend!
On Fri, Mar 26, 2021 at 4:58 PM David Glick @.***>
wrote:

Merged #2496 https://github.com/SFDO-Tooling/CumulusCI/pull/2496 into
main.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SFDO-Tooling/CumulusCI/pull/2496#event-4516160089,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAISMYRXZKPP4TMOCQK5IQTTFT7PNANCNFSM4Z2HYUHQ
.


Bad outline with selfie segmentation

System information  Windows 11
My code:
I use "default" code :
import cv2
import mediapipe as mp
import numpy as np
mp_drawing = mp.solutions.drawing_utils
mp_selfie_segmentation = mp.solutions.selfie_segmentation

IMAGE_FILES = []
BG_COLOR = (192, 192, 192)
MASK_COLOR = (255, 255, 255)
with mp_selfie_segmentation.SelfieSegmentation(
    model_selection=0) as selfie_segmentation:
  for idx, file in enumerate(IMAGE_FILES):
    image = cv2.imread(file)
    image_height, image_width, _ = image.shape
    results = selfie_segmentation.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

    condition = np.stack((results.segmentation_mask,) * 3, axis=-1) > 0.1

    fg_image = np.zeros(image.shape, dtype=np.uint8)
    fg_image[:] = MASK_COLOR
    bg_image = np.zeros(image.shape, dtype=np.uint8)
    bg_image[:] = BG_COLOR
    output_image = np.where(condition, fg_image, bg_image)
    cv2.imwrite('/tmp/selfie_segmentation_output' + str(idx) + '.png', output_image)

Describe the current behavior:
I have bad outline

Describe the expected behavior:
When I use it online it's perfect : https://codepen.io/mediapipe/pen/wvJyQpq
So, I use same camera in same room.
Perfect in js exemple (codeopen.io), but when I use the lib un python, I have bad outline. I can change condition (0.1 to 0.5), it's a little better. But compare to exemple online it's really bad.
I use RGB, BGR, level up contrast before put it to selfie_segmentation process but that's not better..
Do I need to use special image processing before give it to selfie segmentation process ?

Hi @retwas,
Would you let us know the complete details followed to reproduce the issue, sample images and different behaviour noticed in the both of case it will be very helpful for us to look deep issue from our end.

Thanks, for exemple you can see the result with this photo.
All the left side is detected as a person.
Original :

With mediapipe selfie segmentation :

Any idea ?

Hi @retwas,
This is a interesting finding, we will discuss this internally and let you know the cause of this or any possible solution.

Hi @retwas, This is a interesting finding, we will discuss this internally and let you know the cause of this or any possible solution.

I noticed that it's better with model selection set to Landscape instead of General and with Selfie Mode set to off.

Any news ? :) Thanks

Hi @retwas,
This difference has observed because of the graphs(CPU vs GPU) used in the both of the platforms. Python uses the cpu-graph https://github.com/google/mediapipe/blob/master/mediapipe/python/solutions/face_detection.py#L25 and JavaScript(Web model) uses the gpu-graph https://github.com/google/mediapipe/blob/c688862570156908cd95303afb06beb0935e5cc6/mediapipe/modules/face_detection/face_detection_short_range_gpu.pbtxt.