Add OpenGL Core renderer and use as default

Split out from/improves upon https://github.com/ppy/osu-framework/pull/5647
Abstract
In moving to the new Veldrid renderer, we need to move to using the OpenGL core profile. The primary reason is macOS (on M1 in particular) which does not support the ARB_uniform_buffer_object extension, so we couldn't fallback to OpenGL if anything goes wrong with Metal. This extension is mainlined in the OpenGL core profile.
This has been done by using SPIRV-Cross, which is included with Veldrid, to cross-compile from "Vulkan GLSL" to GLSL. Quite a few changes to shaders are required as a result, not in the least helped by the fact that we've been using a long-deprecated version of GLSL until now, but at least the shaders will be forward compatible with Vulkan/Metal/HLSL/etc...
Breaking shader changes have been documented below.
Testing
Tested:

[x] Linux (AMD)
[x] Linux + VMWare
[x] Windows
[x] macOS (M1)
[x] macOS (x64)
[x] iOS
[ ] Android (at very least, spirv DLL is missing https://github.com/ppy/osu-framework/pull/5655#issuecomment-1444970108)
[x] llvmpipe

vNext
The OpenGL Core profile is now used
Shaders now follow "Vulkan GLSL", which is mostly documented in the spec: GL_KHR_vulkan_glsl. The primary differences are documented below:
Vertex shader members

old
new

attribute lowp int In_Value;
varying lowp int Out_Value;

layout(location = 0) in lowp int InValue;
layout(location = 0) out lowp int OutValue;

The location increases for each additional member in the respective in/out lists.
Fragment shader members

old
new

varying lowp int In_Value;

layout(location = 0) in lowp int InValue;

The location increases for each additional member, and must match the location of the respective member in the vertex shader.
Fragment shader outputs
Fragment shaders are required to define an output variable.

old
new

void main(void)
{
    gl_FragColor = vec4(0.0);
}

layout(location = 0) out vec4 colour;

void main(void)
{
    colour = vec4(0.0);
}

Uniform members
Free-floating "global" uniforms are not supported. They must be placed in "uniform blocks".

old
new

uniform lowp int Uniform_Value;

layout(std140, set = 0, binding = 0) uniform MyUniforms
{
    lowp int Uniform_Value;
};

Notes:

std140 should always be used.
The set increases for each unique uniform block.
binding is a special required value which indicates where in the program the block should be bound. osu!framework manages this for you and should be 0 for uniform blocks.
Both shader stages can use the same uniform block from the same set, provided that the physical layout matches.

Furthermore, this means that uniform blocks have become a first-class citizen in osu!framework. The code to make use of the above looks like this:

class MyDrawNode : DrawNode
{
    private IUniformBuffer<MyBufferData>? bufferData;

    public override void Draw(IRenderer renderer)
    {
        base.Draw(renderer);

        // Create the uniform buffer.
        bufferData ??= renderer.CreateUniformBuffer<MyBufferData>();

        // Update the uniform buffer.
        bufferData.Data = bufferData.Data with
        {
            UniformValue = 5
        };

        // Bind the buffer to the shader.
        shader.BindUniformBuffer("MyUniforms", bufferData);

        shader.Bind();
        // Draw...
    }

    protected override void Dispose(bool isDisposing)
    {
        base.Dispose(isDisposing);

        // Ensure that the buffer is disposed.
        bufferData?.Dispose();
    }
}

// Pack = 1 is required.
[StructLayout(LayoutKind.Sequential, Pack = 1)]
// Record structs automatically implement IEquatable<>
public record struct MyBufferData
{
    // Use types provided in the osu.Framework.Graphics.Shaders.Types namespace.
    public UniformInt UniformValue;

    // The struct must be a multiple of 16 bytes.
    private readonly UniformPadding12 pad2;
}

Runtime validation is present to notify of incorrect alignment/packing.
Uniform textures/samplers
The combined sampler of GLSL is not supported.

old
new

uniform lowp sampler2D Sampler;

layout(set = 0, binding = 0) uniform lowp texture2D Texture;
layout(set = 0, binding = 1) uniform lowp sampler Sampler;

Notes:

std140 cannot be applied here unlike for uniform blocks.
The set increases along with all other uniform blocks/textures.
The texture and sampler are bound to different points. The texture being bound to 0 and sampler to 1 will be standard for osu!framework going forward.

Sampling textures

old
new

vec4 col = texture2D(my_Sampler, ...);

vec4 col = texture(sampler2D(my_Texture, my_Sampler), ...);

iOS startup crash:
osu.Framework.Graphics.OpenGL.Shaders.GLShader+PartCompilationFailedException: A osu.Framework.Graphics.OpenGL.Shaders.GLShaderPart failed to compile: sh_Texture2D.vs:
ERROR: 0:1: '' :  version '330' is not supported
ERROR: 0:1: '' : syntax error: #version
   at osu.Framework.Graphics.OpenGL.Shaders.GLShaderPart.Compile() in /Users/dean/Projects/osu-framework/osu.Framework/Graphics/OpenGL/Shaders/GLShaderPart.cs:line 151
   at osu.Framework.Graphics.OpenGL.Shaders.GLShader.CompileInternal() in /Users/dean/Projects/osu-framework/osu.Framework/Graphics/OpenGL/Shaders/GLShader.cs:line 124
   at osu.Framework.Graphics.OpenGL.Shaders.GLShader.compile() in /Users/dean/Projects/osu-framework/osu.Framework/Graphics/OpenGL/Shaders/GLShader.cs:line 62
   at osu.Framework.Threading.ScheduledDelegate.InvokeTask() in /Users/dean/Projects/osu-framework/osu.Framework/Threading/ScheduledDelegate.cs:line 106
   at osu.Framework.Threading.ScheduledDelegate.RunTaskInternal() in /Users/dean/Projects/osu-framework/osu.Framework/Threading/ScheduledDelegate.cs:line 92
   at osu.Framework.Threading.ScheduledDelegate.RunTask() in /Users/dean/Projects/osu-framework/osu.Framework/Threading/ScheduledDelegate.cs:line 76
   at osu.Framework.Graphics.Rendering.Renderer.BeginFrame(Vector2 windowSize) in /Users/dean/Projects/osu-framework/osu.Framework/Graphics/Rendering/Renderer.cs:line 185
   at osu.Framework.Graphics.OpenGL.GLRenderer.BeginFrame(Vector2 windowSize) in /Users/dean/Projects/osu-framework/osu.Framework/Graphics/OpenGL/GLRenderer.cs:line 86
   at osu.Framework.Graphics.Rendering.Renderer.osu.Framework.Graphics.Rendering.IRenderer.BeginFrame(Vector2 windowSize) in /Users/dean/Projects/osu-framework/osu.Framework/Graphics/Rendering/Renderer.cs:line 1067
   at osu.Framework.Platform.GameHost.DrawFrame() in /Users/dean/Projects/osu-framework/osu.Framework/Platform/GameHost.cs:line 482
   at osu.Framework.Threading.GameThread.processFrame() in /Users/dean/Projects/osu-framework/osu.Framework/Threading/GameThread.cs:line 451

I'm not entirely sure how make iOS use the core profile since it still uses osuTK :sweat_smile: But GL <-> Veldrid needs a compatibility layer anyway (basically some shader macros) so I'll add one in for compat profile until we figure out how to get iOS on the core, or switch away from osuTK.

FWIW android runs framework visual tests fine with this patch applied:
diff --git a/osu.Framework/Resources/Shaders/sh_Precision_Internal.h b/osu.Framework/Resources/Shaders/sh_Precision_Internal.h
index 265b627a6..df6e57da5 100644
--- a/osu.Framework/Resources/Shaders/sh_Precision_Internal.h
+++ b/osu.Framework/Resources/Shaders/sh_Precision_Internal.h
@@ -1,6 +1,6 @@
 // This file is automatically included in every shader

-#version 330 core
+#version 300 es

 #ifndef GL_ES
     #define lowp

iOS not so much.

Confirmed latest commit is working on iOS / android (framework visual tests).

On Surface Pro X it has invalid color. Tested from c3b65b5bce621e1b15382c613ec119d6a9e7b580. According to Tomato definition in openTK, it should have r=255, g=99, b=71. I thought it will work, bcuz SPX has only OpenGL Core Profile.

Can you post the runtime.log file.
Are you able to launch the game via Renderdoc and post a capture of a frame?

@smoogipoo
runtime.log
osu-frame0.zip
osu-frame463.zip
osu-frame2890.zip

captures.zip
PS. When I make a screenshot from osu, it looks fine:
From snipping tool:

Using F12 in osu:

RenderDoc crashes opening those captures 😅 But it looks like (and confirming via RenderDoc crash logs) that it's a combination of 16-bit colour + SRGB.

@smoogipoo I used RenderDoc v1.25 (2023-02-01). I successfully opened captures both on Windows x64 (i7-8700k, GTX 1050Ti) and Surface Pro X.
PS. The replay loop from RenderDoc works fine on arm64 (the colors are correct).

@adiantek Can you see how the branch opengl-core-renderer-test from my fork behaves?

@adiantek Can you see how the branch opengl-core-renderer-test from my fork behaves?

yep, it works on SPX

To address above concerns, I've updated this branch to cross-compile from "Vulkan GLSL", which requires uniform blocks. As a result, this branch now uses standard GLSL constructs instead of macro redirects.
Requesting re-testing on all platforms.

osu! can be tested with the following branches:

osu: https://github.com/ppy/osu/pull/22732
osu-resources: https://github.com/ppy/osu-resources/pull/247

osu!-side there's a bad stutter when entering gameplay. This is because each gameplay instance has its own ShaderManager so it recompiles 4 shaders every time.
Imo the best way to resolve this is to cache the SPIRV IR similar to how font textures are cached, but since this PR is already very long I propose we do this afterwards.

Can confirm working on Windows (AMD GPU). Exclusive fullscreen also working. I experience the mentioned stutter on entering gameplay (DrawReset in frametime graph spikes).
Screenshots (F12) also behave as expected

Looks to be working on M1 macOS, same as above for the stutter on entering gameplay, both F12 and system screenshots looks normal

Android crashing for me (Android 12, Oneplus 7 Pro)
02-25 04:02:00.203 E/AndroidRuntime(28874): FATAL EXCEPTION: main
02-25 04:02:00.203 E/AndroidRuntime(28874): Process: sh.ppy.osulazer, PID: 28874
02-25 04:02:00.203 E/AndroidRuntime(28874): android.runtime.JavaProxyThrowable: osu.Framework.Graphics.OpenGL.Shaders.GLShader+ProgramLinkingFailedException: A osu.Framework.Graphics.OpenGL.Shaders.GLShader failed to link: Texture2D/TriangleBorder:
02-25 04:02:00.203 E/AndroidRuntime(28874): System.DllNotFoundException: libveldrid-spirv
02-25 04:02:00.203 E/AndroidRuntime(28874):    at Veldrid.SPIRV.SpirvCompilation.CompileGlslToSpirv(UInt32 sourceLength, Byte* sourceTextPtr, String fileName, ShaderStages stage, Boolean debug, UInt32 macroCount, NativeMacroDefinition* macros)
02-25 04:02:00.203 E/AndroidRuntime(28874):    at Veldrid.SPIRV.SpirvCompilation.CompileVertexFragment(Byte[] vsBytes, Byte[] fsBytes, CrossCompileTarget target, CrossCompileOptions options)
02-25 04:02:00.203 E/AndroidRuntime(28874):    at Veldrid.SPIRV.SpirvCompilation.CompileVertexFragment(Byte[] vsBytes, Byte[] fsBytes, CrossCompileTarget target)
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Graphics.OpenGL.Shaders.GLShader.CompileInternal()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Graphics.OpenGL.Shaders.GLShader.CompileInternal()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Graphics.OpenGL.Shaders.GLShader.compile()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Threading.ScheduledDelegate.InvokeTask()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Threading.ScheduledDelegate.RunTaskInternal()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Threading.ScheduledDelegate.RunTask()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Graphics.Rendering.Renderer.BeginFrame(Vector2 windowSize)
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Graphics.OpenGL.GLRenderer.BeginFrame(Vector2 windowSize)
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Graphics.Rendering.Renderer.osu.Framework.Graphics.Rendering.IRenderer.BeginFrame(Vector2 windowSize)
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Platform.GameHost.DrawFrame()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Threading.GameThread.processFrame()
02-25 04:02:00.203 E/AndroidRuntime(28874): --- End of stack trace from previous location ---
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Platform.GameHost.<>c__DisplayClass133_0.<abortExecutionFromException>b__0()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Threading.ScheduledDelegate.InvokeTask()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Threading.ScheduledDelegate.RunTaskInternal()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Threading.Scheduler.Update()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Threading.GameThread.processFrame()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Threading.GameThread.RunSingleFrame()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Platform.ThreadRunner.RunMainLoop()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Platform.GameHost.windowUpdate()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osu.Framework.Platform.GameHost.<Run>b__155_2(Object _, FrameEventArgs _)
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osuTK.GameViewBase.OnUpdateFrame(FrameEventArgs e)
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osuTK.Android.AndroidGameView.UpdateFrameInternal(FrameEventArgs e)
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osuTK.Android.AndroidGameView.RunIteration(CancellationToken token)
02-25 04:02:00.203 E/AndroidRuntime(28874):    at osuTK.Android.AndroidGameView.<>c__DisplayClass58_0.<StartThread>b__2(Object _)
02-25 04:02:00.203 E/AndroidRuntime(28874):    at Android.App.SyncContext.<>c__DisplayClass3_0.<Send>b__0()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at Java.Lang.Thread.RunnableImplementor.Run()
02-25 04:02:00.203 E/AndroidRuntime(28874):    at Java.Lang.IRunnableInvoker.n_Run(IntPtr , IntPtr )
02-25 04:02:00.203 E/AndroidRuntime(28874):    at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PP_V(_JniMarshal_PP_V , IntPtr , IntPtr )
02-25 04:02:00.203 E/AndroidRuntime(28874): 	at mono.java.lang.RunnableImplementor.n_run(Native Method)
02-25 04:02:00.203 E/AndroidRuntime(28874): 	at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30)
02-25 04:02:00.203 E/AndroidRuntime(28874): 	at android.os.Handler.handleCallback(Handler.java:938)
02-25 04:02:00.203 E/AndroidRuntime(28874): 	at android.os.Handler.dispatchMessage(Handler.java:99)
02-25 04:02:00.203 E/AndroidRuntime(28874): 	at android.os.Looper.loopOnce(Looper.java:233)
02-25 04:02:00.203 E/AndroidRuntime(28874): 	at android.os.Looper.loop(Looper.java:344)
02-25 04:02:00.203 E/AndroidRuntime(28874): 	at android.app.ActivityThread.main(ActivityThread.java:8212)
02-25 04:02:00.203 E/AndroidRuntime(28874): 	at java.lang.reflect.Method.invoke(Native Method)
02-25 04:02:00.203 E/AndroidRuntime(28874): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
02-25 04:02:00.203 E/AndroidRuntime(28874): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1034)

This error repeated itself 4 times before finally crashing to the main screen

Looks to be working on M1 macOS

Sure, except videos which seems to be some low level sampling issue. I've tested:

Raw texture data appears to have been unpacked correctly on the GPU.
The correct texture unit is assigned to the sampler uniforms (now done in GLShader as of this branch).
The shader looks fine on a quick glance.

It looks like we can easily get around the stutter on shader load by moving the SPIRV part out of the expensive operation.
diff --git a/osu.Framework/Graphics/OpenGL/Shaders/GLShader.cs b/osu.Framework/Graphics/OpenGL/Shaders/GLShader.cs
index 7a32920df..30bfde80c 100644
--- a/osu.Framework/Graphics/OpenGL/Shaders/GLShader.cs
+++ b/osu.Framework/Graphics/OpenGL/Shaders/GLShader.cs
@@ -7,6 +7,7 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using System.Threading.Tasks;
 using osu.Framework.Graphics.Rendering;
 using osu.Framework.Graphics.Shaders;
 using osu.Framework.Threading;
@@ -48,6 +49,10 @@ internal class GLShader : IShader

         private int programID = -1;

+        private readonly GLShaderPart vertexPart;
+        private readonly GLShaderPart fragmentPart;
+        private readonly VertexFragmentCompilationResult crossCompileResult;
+
         internal GLShader(GLRenderer renderer, string name, GLShaderPart[] parts, IUniformBuffer<GlobalUniformData> globalUniformBuffer)
         {
             this.renderer = renderer;
@@ -55,6 +60,22 @@ internal GLShader(GLRenderer renderer, string name, GLShaderPart[] parts, IUnifo
             this.globalUniformBuffer = globalUniformBuffer;
             this.parts = parts.Where(p => p != null).ToArray();

+            vertexPart = parts.Single(p => p.Type == ShaderType.VertexShader);
+            fragmentPart = parts.Single(p => p.Type == ShaderType.FragmentShader);
+
+            try
+            {
+                // Shaders are in "Vulkan GLSL" format. They need to be cross-compiled to GLSL.
+                crossCompileResult = SpirvCompilation.CompileVertexFragment(
+                    Encoding.UTF8.GetBytes(vertexPart.GetRawText()),
+                    Encoding.UTF8.GetBytes(fragmentPart.GetRawText()),
+                    renderer.IsEmbedded ? CrossCompileTarget.ESSL : CrossCompileTarget.GLSL);
+            }
+            catch (Exception e)
+            {
+                throw new ProgramLinkingFailedException(name, e.ToString());
+            }
+
             renderer.ScheduleExpensiveOperation(shaderCompileDelegate = new ScheduledDelegate(compile));
         }

@@ -134,24 +155,6 @@ public Uniform<T> GetUniform<T>(string name)

         private protected virtual bool CompileInternal()
         {
-            GLShaderPart vertexPart = parts.Single(p => p.Type == ShaderType.VertexShader);
-            GLShaderPart fragmentPart = parts.Single(p => p.Type == ShaderType.FragmentShader);
-
-            VertexFragmentCompilationResult crossCompileResult;
-
-            try
-            {
-                // Shaders are in "Vulkan GLSL" format. They need to be cross-compiled to GLSL.
-                crossCompileResult = SpirvCompilation.CompileVertexFragment(
-                    Encoding.UTF8.GetBytes(vertexPart.GetRawText()),
-                    Encoding.UTF8.GetBytes(fragmentPart.GetRawText()),
-                    renderer.IsEmbedded ? CrossCompileTarget.ESSL : CrossCompileTarget.GLSL);
-            }
-            catch (Exception e)
-            {
-                throw new ProgramLinkingFailedException(name, e.ToString());
-            }
-
             vertexPart.Compile(crossCompileResult.VertexShader);
             fragmentPart.Compile(crossCompileResult.FragmentShader);

As far as I can tell, the android crash mentioned above, which I can reproduce, is caused by Veldrid.SPIRV still targeting monoandroid10.0 and not having the binary dependencies packaged in a net6.0-friendly format (i.e. in the runtimes folder). To try and get a quick confirmation of this, I downloaded the latest version of Veldrid.SPIRV, jury-rigged it so that the binaries are in the new places net6.0 expects to see them, and it seems to be working just fine.
But I'm not sure why this has transpired only now (as it apparently somehow worked before?), or why it is only an issue on android (since Veldrid.SPIRV is also not targeting ios, and still using Xamarin.iOS10 instead).
I'd need a few days to figure out an upstream patch which would package the runtimes in a more net6.0-friendly format. Or I guess we can just ask upstream directly.

For the Android crash, I was under the presumption that .NET 6 Android TFM is backward-compatible with MonoAndroid in that aspect, at least according to https://github.com/dotnet/designs/blob/main/accepted/2021/net6.0-tfms/net6.0-tfms.md#compatibility-rules. Given that's not the case, we can either update upstream repo to .NET 6 (which may take a long while to get merged, as owner is usually inactive), or ship the library within o!f.

But I'm not sure why this has transpired only now (as it apparently somehow worked before?).

That was prior to using SPIR-V for compiling Vulkan GLSL to regular GLSL, see https://github.com/ppy/osu-framework/pull/5655#issuecomment-1443934746 and the commits above it.
For iOS, I've chosen to ship the library within o!f, mainly since the library is of a different type that's friendly with .NET 6 (bundle of shared libraries instead of upstream's static variants). Therefore PR'ing it upstream may potentially be a breaking change there. I've been planning to write a README documentation explaining the purpose of iOS's native libraries folder in detail to answer such questions, but I haven't got to it yet.
This means that iOS ignores upstream's Xamarin.iOS10-packaged native libraries, which is a waste of space, but is too small to care about.

I was under the presumption that .NET 6 Android TFM is backward-compatible with MonoAndroid in that aspect, at least according to https://github.com/dotnet/designs/blob/main/accepted/2021/net6.0-tfms/net6.0-tfms.md#compatibility-rule

I'm really not sure why it isn't. My naive guess is that currently in Veldrid.SPIRV artifacts, the android binaries are placed inside the build\MonoAndroid10\native directory of the nupkg. So it looks like it's potentially treated as a build dependency, steered by a .targets file, and thus that could not work properly with net6.0, because in the end framework packages are being built for another target framework entirely? But that's only a naive guess because google gives me nothing useful (and it's difficult to figure out a phrase to search for anyways). Unsure if it's worth the time investigating why it doesn't work as-is.

I've changed this to use environment variables for the graphics renderer/surface selection for two reasons: 1) I don't want to update every project to pass parameters via HostOptions, and 2) I'm not ready to commit to a structure for HostOptions since I know some people want to create custom-typed renderers.

Are we still blocked on android here?

Yeah, Android needs a workaround for the library missing exception. Simplest way would be by copying the native library from the upstream repo and placing it inside osu.Framework.Android alongside other native libraries.

I've took a look at the approach I mentioned above, but it turns out I can't test it well because I apparently can't reproduce the issue in the first place (testing with emulator). The commit is https://github.com/ppy/osu-framework/commit/c3cca7707c3eab835ac23d3fa3874e4c4a2acf52 if anyone wants to test it or cherry-pick it here.

Using opengl-core-render branches on all relevant projects, + cherry-picking https://github.com/ppy/osu-framework/commit/c3cca7707c3eab835ac23d3fa3874e4c4a2acf52 for the framework still results in the same errors mentioned above ( https://github.com/ppy/osu-framework/pull/5655#issuecomment-1444970108 ) . I have double checked that the files actually exist, but they dont seem to be available/packaged to the binary in the end.
This is on actual hardware once again.

From testing with emulator, no native libraries are updated in the output folder unless bin/obj folders are cleaned before building again.

Tested on android hardware to work with https://github.com/ppy/osu-framework/pull/5655/commits/8e090c3320c74b8c06eb4c6ce801f16a20b3916e.


Incorrect character count

Jodit Version:  3.6.1
Browser:   Chrome/FF
OS:   Windows
Is React App:  False

Expected behavior:
Correct character count is 247.
Actual behavior:
Character count shown is 209.
In some cases like this, the character count shown is less than the actual count (it's never more). It doesn't happen all the time and I can't see any pattern to when it happens.

Hi, your text has 209 characters without spaces. Do you need to count spaces too?

@galcott Hi, your text has 209 characters without spaces. Do you need to count spaces too?

How to include spaces ?

Look for this line in the Jodit code.
var o = t.j.o.countHTMLChars ? t.j.value :
e.replace(i.SPACE_REG_EXP(), " ");
Change it to this.
var o = t.j.o.countHTMLChars ? t.j.value : e;
-----------------------------------------From: "Arjit Kansal"

To: "xdan/jodit"
Cc: "galcott", "Mention"
Sent: Monday July 5 2021 5:22:29AM
Subject: Re: [xdan/jodit] Incorrect character count (#631)
@galcott [1] Hi, your text has 209 characters without spaces. Do you

need to count spaces too?
How to include spaces ?

—

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub [2], or  unsubscribe
[3].
Links:
[1] https://github.com/galcott
[2] https://github.com/xdan/jodit/issues/631#issuecomment-873955136
[3]
https://github.com/notifications/unsubscribe-auth/ABCNARB6TRAYH6WDNL4DGPTTWF2VJANCNFSM4YIW3PGQ

@xdan I have the exact same issue / problem with:
jodit-react: 1.1.20,
Browser: Chrome/FF
OS: Windows
Is React App: True
The character counter doesn't change when typing spaces, is there a way for us to change that behavior through another prop in the config?
I've looked in the documentation but can't seem to find any config that solves this issue.

@xdan , I'm also facing same issue for counting character. It didn't count space and html tag.
"jodit-react": "^4.1.2"
Browser: Chrome/FF
OS: Mac OS
Is React App: true
May I know whether this issue will be fixed?
Thanks


Correct the start index of zone parsing in C2P resolver

Fixes internal issue b/190399072

basic tests C# windows failed with what looks like rsync errors in the build phase:
file has vanished: "/tmpfs/src/github/grpc/workspace_csharp_windows_opt_native_default_coreclr/tools/run_tests/xds_k8s_test_driver/tests/security_test.py"
rsync warning: some files vanished before they could be transferred (code 24) at main.c(1677) [generator=3.1.3]


Email AS about accessing funds

Find out if we can remotely access our account in order to deposit and withdraw funds

Documents signed and sent to AS, Waiting on response.

Can we document the process for remote access of funds? So that the process is transparent to the team. Make sure to not include sensitive information like the club account number etc.

Cash deposits: Make an in-person appointment with Vivian (Wednesday or Thursday)
Checks and money orders can be mailed in (Don't endorse checks)
There is only someone in the office once a week at the moment so any mailed in checks will have about a 2-week wait before funds are available.
Reimbursements/Requisitions: Need name and address of the person the money is being sent to.
<EMAIL_ADDRESS>Office Manager<PHONE_NUMBER> cell phone
<EMAIL_ADDRESS>The Accountant

Yikes. But this clears the way for funding. I'll see what I can do.


.deb Package

The .deb package is only indexed for jessie and wheezy. Shoulkd it be like this? I use it without problems on stretch.

It is true that only jessie and wheezy are in the repo. I will add stretch for future releases. Since this project uses go (zero-dependencies, single binary) it will work fine with tilted repo/distro combinations as in your case.

Closing this thread in favor of #55.


Trouble with definition of cvxP lambda

Hello,
I am an old-timey programmer (started with PDP-8 in 1967) who today works for Siemens Healthcare (recently renamed to Siemens Healthineers) in the Detector R&D Group in Rockford, TN. I am a principal scientist by title but spend my time supporting users of an innovative produce, the BrainPET - a PET scanner (Positron Emission Tomography) that operates in the bore of an MRI.
I have been writing code using assembly language, C, Fortran, Tcl/Tk, IDL, and probably other languages that I have forgotten over the years. I even wrote my own operating system/interpretive programming language, ORACL, that was used in the 70's and early 80's for programming data acquisition and analysis problems in the fields of gamma and x-ray spectroscopy.
So much for a short history...I am trying to extend my capabilities, especially in regard to programming in Python. I've dabbled in it off and on for a couple of years, never very seriously, but now feel that I should begin using it more, especially since most of my current projects involve data analysis using IDL and IDL, being a very closed and expensive language, is becoming harder and harder to deal with. I am aware of the open source alternative (whose name eludes me at the moment - I am 68 years old and my memory is not quite as sharp as it used to be) but wasn't overly impressed with it.
So, anyway, I discovered Jupyter Notebook and feel it is something worth my time to learn to use as a tool. They say "You can't teach an old dog new tricks" but this old dog is trying my best.
In my searching for examples of interactive plotting using python, I came across one of your projects, and was very intrigued by your mixture of math and programming. So I am trying to work through it (  FP-Bezier-Bspline.ipynb ).
The specific problem occurs in the cell that defines the cvxCtlP(ctrl, t) function:
cvx=lambda x, y, t: (1-t) * x + t * y # affine/convex combination of two numbers x, y
cvxP=lambda (P, Q, t): (cvx(P[0], Q[0], t), cvx(P[1], Q[1], t))# affine/cvx comb of two points P,Q
When I enter this cell into my running Jupyter Notebook, I get an error...
￼
cvx=lambda x, y, t: (1-t) * x + t * y # affine/convex combination of two numbers x, y

cvxP = lambda (P, Q, t)  : (cvx(P[0], Q[0], t), cvx(P[1], Q[1], t)) # affine/cvx comb of two points P,Q

def cvxCtrlP(ctrl, t):# affine/cvx combination of each two consecutive points in a list ctrl
# with the same coefficient t
return map(cvxP, zip(ctrl[:-1], ctrl[1:], [t]*(len(ctrl)-1)))
File "", line 3
cvxP = lambda (P, Q, t)  : (cvx(P[0], Q[0], t), cvx(P[1], Q[1], t)) # affine/cvx comb of two points P,Q
^
SyntaxError: invalid syntax
The error actually points to the left parentheses.
If I remove the parentheses from the lambda definition, the error message goes away but the program doesn't work (after putting in the rest of the cells). The graph is displayed and I am able to input points using the left mouse button, but pressing the right mouse button has not effect. I think this is because my redefinition of cvxP without the parentheses is incorrect.
When I take the same code and put it in a file and execute it with standalone python it works perfectly. If I remove the parentheses it crashes complaining that the lambda cvxP requires 3 arguments but only one is passed, the zip(...)
I just discovered that the code works with python 2.7.3 but fails with python 3.2.3 - so at least my stumblings have identified the issue. I'll have to research how to do this in python 3.
I'm just crawling along in my learning of python and decided that I should concentrate on python 3 since that is definitely the future, but it seems you are using a technique that is broken in python 3 or that maybe has another way of doing the same thing.
Perhaps you can help me in my learning process as it seems you are a prolific contributor (I am just beginning to explore your github submissions) and I seem to learn best when I study code of successful people. So if you have an answer to how to fix the lambda definition so that it works in python 3 or have any other comments about this lengthy post, I'd be humbled at your response.
Many thanks for making your work public. Unfortunately because I have been and continue to be employed by very secretive companies, I have not been able to share much of my work with more than a few collaborators over the years. But now that I'm nearing retirement, I'd like to try to publish some of what I have learned in my long journey.
I appreciate your feedback.
With best regards,
Larry Byars
Principal Scientist
Detector R&D
Siemens Healthineers   :-)

@boomerTN  All my jupyter notebooks contain code in Python 2.7x
That is why you get errors when you  run the notebook with Python 3.
Here http://nbviewer.jupyter.org/gist/empet/a5f18fded22fcc0546b96c2dbee49b7e
I defined Python 3 versions for cvxP and cvxCtrlP , and tested the code with Python 3.5.

On 05/19/2016 01:01 PM, empet wrote:

Closed #1 https://github.com/empet/geom_modeling/issues/1.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/empet/geom_modeling/issues/1#event-666094039

Thanks for the quick solution.
Larry Byars


Column Tooltip will not correctly disappear if content is evaluated by Closure

Package
filament/filament
Package Version
3.2.34
Laravel Version
v10.45.1
Livewire Version
v3.4.6
PHP Version
8.3.2
Problem description
If you have dynamic Tooltips like this:
<?php
TextColumn::make('text')
    ->tooltip(fn(TextColumn $column, ?string $state): ?string =>
         strlen($state) <= $column->getCharacterLimit()
            ? null
            : $state)

And the state changes so that null would be returned the tooltip will not be disappear but still show the old value.
This can happen if you use, for example, the filament/spatie-laravel-translatable-plugin package and switch languages.
Expected behavior
The Tooltip should not appear with the old value again if a falsify value is returned from the evaluation function.
Steps to reproduce
First have a evaluation function that returns a string for the tooltip, than dynamically change something to not full fill the condition and return false, null  or ''.
In the Repo:

Install Dependencies
run php artisan migrate --seed
Go to Posts
Check the Tooltip on title column
switch Language to Spanish
Old Tooltip with english text should still be there

ResourcePath:
app/Filament/Resources/Blog/PostResource.php:43
Reproduction repository
https://github.com/thettler/demo/tree/tooltip-not-disappear
Relevant log output
No response

Donate 💰 to fund this issue

You can donate funding to this issue. We receive the money once the issue is completed & confirmed by you.
100% of the funding will be distributed between the Filament core team to run all aspects of the project.
Thank you in advance for helping us make maintenance sustainable!

@danharrin Seems like owner of alpine-tooltip is unresponsive :(

@ryangjchandler @danharrin, could you guys find the time to merge https://github.com/ryangjchandler/alpine-tooltip/pull/43 and tag a new release of the alpine-tooltip package?
There's been multiple Filament bug reports that should be solved by that PR.

@zepfietje Bump dependency to v2.0.1 and should be good to go.

That's quick, thanks Ryan!
This issue should be fixed after https://github.com/filamentphp/filament/commit/fe50f8e6c9f2f7ac9a5dd76797cd3165733934c9.


Testinfra robins foo

sysdig is currently not working, for some reason even when installing DKMS and building the kernel module for sysdig, the system isn't able to find the kernel module after installation.


Js bug in hasMany upload image

Hi.
If upload some images (no multipal upload) and save it. After this all image previw of images replafced from first image.
Problem may be is on $("input{$this->getElementClassSelector()}").fileinput({$options}); in File.php

Take a look at https://github.com/z-song/laravel-admin/issues/613#issuecomment-314069847

10x


Does lodash really need to be a peer dependency?

I'm using react-flexbox-layout on a project on which I'm not using lodash.
NPM is giving me the usual warning about peer dependencies.
I wonder if lodash shouldn't just be a project dependency only and get removed of peer dependencies on package.json

@holden-caulfield I think you're right.
As a quick fix to unblock you, you can manually install lodash in your project. I'll work on moving lodash to dependencies!

Thanks for the quick response! I went with the quick fix, just noticed you already merged the actual fix together with some really cool stuff (moving to lodash 4 and making it include only the needed fragments on the build). So will eventually grab the next release and use it!

resolved in 1.2.1

+1 For removing lodash. IMHO lodash is great for applications but not for small libs. In this case I would say the issues it causes when importing the lib (eg. compability, size) outweighs the problems it solves for implementing the the lib (a few utility methods that could easily be replicated in an internal utils file). This is just my opinion though, I guess one could argue keeping it too. :-)


Segues from floating panel

I hesitate to add this here, as I'm sure I am just doing something wrong.
I am having some trouble with segues.  I would like to perform some segues from the floating panel.  Currently when I do this, it brings the new view controller in and it replaces the floating panel.  I'd like the segues to perform just as they would from a normal view controller.
I hope I described this adequately and I really appreciate any help on this.

Thank you for your report! You're right and this library has a problem on this case.
I'm trying to fix it now. Please wait for a little while longer.

@jaytrisw,
Could you try 'fix-show-segue-problem' branch referred by PR #21 ?
FloatingPanelController.show(_:sender) causes this issue. After I changed the implementation at
0f60068 commit to keep the backward compatibility for v1.1.0, I think it's better to replace this method with FloatingPanelController.set(contentViewController:). The migration is easy through 2-time fixes of build errors.
What do you think of the change?
Thank you for your cooperation.

I am getting a crash when I try to load the floating panel.
I'm sure that I've just done something wrong.  Is the only code change that I need to make:
fpc.set(contentViewController: searchVC)

Also, I tried adding another view controller to the map sample project and performing a segue using performSegue(withIdentifier: "pushVC", sender: nil) it still adds the new view controller in the floating panel.

Well, it should works only after you change your code like here

I am sorry, I am very new to iOS development.   I'm just not understanding the sample project.

I've implemented the new commit and it no longer crashes when loading the initial view controller.  However the segue performs just as it did while using v1.1 of the floating panel.
I am very sorry to keep bothering you, I just don't know what I am doing wrong.  Would it be possible to send you my project?  If not, I completely understand.  And I really do appreciate all the time you've already committed to this.

Good news! Of course, could you share a dropbox link of your project?

Sent, thank you!


Remove never-supported HTTP headers

6956

 Quality gate: NA
Details

 Quality gate: NA
Details

 Quality gate: NA
Details

 Quality gate: NA
Details

 Quality gate: NA
Details

 Quality gate: NA
Details


Create a data type registry to decouple types from type system

Moves some initial set of types to the new registry #72

Codecov Report

Merging #97 (ef6cec4) into main (e7c9ea5) will decrease coverage by 0.11%.
The diff coverage is 97.45%.

@@            Coverage Diff             @@
##             main      #97      +/-   ##
==========================================
- Coverage   96.83%   96.72%   -0.12%
==========================================
  Files          27       35       +8
  Lines        1962     2017      +55
==========================================
+ Hits         1900     1951      +51
- Misses         62       66       +4

Impacted Files
Coverage Δ

ical/types/parsing.py
87.50% <87.50%> (ø)

ical/types/period.py
95.71% <95.71%> (ø)

ical/types/duration.py
98.18% <98.18%> (ø)

ical/types/data_types.py
98.68% <98.68%> (ø)

ical/_types.py
95.53% <100.00%> (-0.46%)
:arrow_down:

ical/freebusy.py
98.33% <100.00%> (-0.26%)
:arrow_down:

ical/recur.py
96.03% <100.00%> (-0.36%)
:arrow_down:

ical/types/__init__.py
100.00% <100.00%> (ø)

ical/types/boolean.py
100.00% <100.00%> (ø)

ical/types/date.py
100.00% <100.00%> (ø)

... and 16 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


How to build it

Use vs2019, build got error.

Not found: VertexShader.hlsl & PixelShader.hlsl files

Compilation errors resolved


cosmic-settings: unstable-2024-01-09 -> 0-unstable-2024-02-15

Description of changes
Things done
This does not work on Pop!_OS with nix (the package manager) due to Vulkan libraries I believe. This does work on NixOS without issue though.

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Does this work with util-linuxMinimal instead or does it require util-linux?

Does this work with util-linuxMinimal instead or does it require util-linux?

@lilyinstarlight saus util-linux is better for this.

Does this work with util-linuxMinimal instead or does it require util-linux?

@lilyinstarlight saus util-linux is better for this.

Oh, I just asked because before I broke it, it had util-linuxMinimal :3


Create a UI which will allow users to easily run complex analytics on Gaffer

The Gaffer UI is great for running a wide variety of complex operation on Gaffer. However it can be too complex with too many options for a new user or someone who does not need all the features that Gaffer provides.
Therefore we should provide a new UI targeted at users who just want to run analytics over Gaffer with a few parameters and get their results back.

Merged into develop


Prevent templates update from formatting the whole codebase

Describe changes
Currently on template update a bash scripts/format.sh, which formats all the code in the repo. This PR limits such calls only to template directories.
Misuse example: https://github.com/zenml-io/zenml/pull/2312/commits/24f30a751b265cc5b4a062ba627f4deb4e89ab5e
Pre-requisites
Please ensure you have done the following:

[x] I have read the CONTRIBUTING.md document.
[x] If my change requires a change to docs, I have updated the documentation accordingly.
[x] I have added tests to cover my changes.
[x] I have based my new branch on develop and the open PR is targeting develop. If your branch wasn't based on develop read Contribution guide on rebasing branch to develop.
[x] If my changes require changes to the dashboard, these changes are communicated/requested.

Types of changes

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

Templates update passed, so I'm merging this


Reject certificates with explicit ec parameters in strict mode [1.1.1]

This is backport of #12683 to 1.1.1 branch. The difference here is that we enable this check only with strict checking.
Checklist

[x] documentation is added or updated
[x] tests are added or updated

This pull request is ready to merge

@t8m, looks like you can merge this.

Merged to 1.1.1 branch. Thank you for the reviews.


Question about ply loader

Why was ply loader erased on d079064e6ac55a4cd6bbf64bd46a576e26dd214e?

It's a rarely-used format, and I was no longer willing to maintain that part of the project. I would suggest converting models to another format like glTF instead.

Thanks, tried it with latest aframe and works with no problem.
Took me some time to figure it out, since the only information I could find
was about using aframe-extras but it wasn't working. Even aframe
documentation references this project for ply.
El dom., 15 de marzo de 2020 22:44, Don McCurdy<EMAIL_ADDRESS>escribió:

It's a rarely-used format, and I was no longer willing to maintain that
part of the project. I would suggest converting models to another format
like glTF instead.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/donmccurdy/aframe-extras/issues/316#issuecomment-599262343,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABZIQPAUV6FUZ23HLS4VBBTRHU44HANCNFSM4LLIXRJA
.

I'm not sure where the A-Frame docs mention that, but if you'd like to report an issue there please do!


Unable to connect to remote linked server with latest update of "mcr.microsoft.com/mssql/server:latest"

Heylow,
we have a database in a Linux container that connects to another (Windows) server using "Linked Server".
When we run the query
select * from [IP_ADDRESS,PORT].CRM.dbo."Address"

using the image at version mcr.microsoft.com/mssql/server   latest   62c72d863950 from 4 days ago (that'd be around 2021-04-03), it fails with the error:
OLE DB provider "MSOLEDBSQL" for linked server "IP_ADDRESS,PORT" returned message "Client unable to establish connection".
Msg 10054, Level 16, State 1, Line 0
TCP Provider: An existing connection was forcibly closed by the remote host.

OTOH, when I revert back to the previous image a8948ed97d80 from 2 months ago, that query succeeds without problem.
Has something changed in the latest image?
Thanks

The remote host is a "forgotten" Server 2014 really not up to date. So I am pretty sure this is an issue with SSL or something, we are in the "3X carbon copy form filling administrative paperwork" way of "windows updating" it, but I'd rather have input of knowledgable people in the mean-time ;-)

We had a similar problem: Win 2012R2 Server could not connect anymore with the default ODBC Driver. We had to upgrade to ODBC Driver 17 for SQL Server

yes, when the tag 2019-latest is used it basically downloads the latest SQL 2019 CU with the latest OS image,.

I can confirm that when using the image mcr.microsoft.com/mssql/server:2019-CU10-ubuntu-18.04, the issue goes away, thanks!
I suppose I can close this issue...
I am still in the process of updating the remote server and will test with latest again once it's done (spent a whole evening on this and updates keeps popping up... damn, I don't miss the old WindowsUpdate! ).
I'll post the results here.

FYI, the remote host (Windows 2012 / SQL2014) has finally been "windows updated", and the latest image still cannot connect.
I guess we're stuck with the 18.04 image until that server is replaced...


Internet Default

AI should default to internet search if relevant information is not available in its kb

#60 adds this feature


path-clarity: Document new uniform paths variant

For the final Rust 2018 release, we can delete the section that doesn't
apply, and change the various qualified references like "the uniform
paths variant of Rust 2018" to just "Rust 2018".

Note that this should not get merged until some version of https://github.com/rust-lang/rust/pull/52923 gets merged. We also need to document how to test the two different variants.

@joshtriplett can you rebase this one? :)

@Centril Done.

Neat :) I'll go ahead and merge this. Thanks!


Minema crash on recording : Can't export frame

Hello, I'm on windows 8 and i use Minema 3.3 ShaderSyncEdition but when i try to start to record, i have a crash : Pastcode Here
FFmpeg 3.3.2 is installed and i tried several  Encoder Arguments but no one is working.
(Sorry for the bad English i'm French)

Caused by: java.io.IOException: Le canal de communication a �t� ferm�

Is your export folder (default: .minecraft\movies) already created? If not, create it by hand.
Run Minecraft as administrator!
Missing permissions for writing to the export location/any write locks?
It should be one of those.

"i tried several Encoder Arguments": If you don't know exactly what you are doing, stop that. Use the default!


ADD: Kill Batch

Looks great to me.  Merging!

Wait, not so fast!  One edit to make -- we still need to export the batch functions.


Updated fileTranscriptStore.ts to use async/await

This PR provides the following:

updates fileTranscriptStore.ts to use async/await
Updates unit tests to use idiomatic Mocha
Fixes a defect where 1 additional superfluous loop is always required when using a continuationToken
simplifies code, removes gluttonous loops and unneeded function calls.

Pull Request Test Coverage Report for Build #1947

34 of 35 (97.14%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.01%) to 84.147%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

libraries/botbuilder/src/fileTranscriptStore.ts
34
35
97.14%

Totals

Change from base Build #1942:
-0.01%

Covered Lines:
2818

Relevant Lines:
3228

💛  - Coveralls

I'm seeing mixed formatting in this project. the .editorconfig shows this
[*]
indent_style = tab
indent_size = 4
trim_trailing_whitespace = true

but I'm seeing spaces instead of tab characters in places. Is there a formatting preference here? Should I set up an autoformat on commit for this repo?


Harmonize mouse strains for Curie-LC

Description
The host strain nomenclature needs to be harmonized, so the same value would be used across mutations, cna, cyto and sampleplatform in the Curie-LC data.
Found values:
In sample platform: Crl:Nu(Ico)-foxn1nu(SWISS-NUDE)
In cyto: Crl:NU(NCr)-Foxn1n
In cna: Crl:Nu(Ico)-foxn1nu(SWISS-NUDE)
In mutation: Crl:Nu(Ico)-foxn1nu(SWISS-NUDE)
Acceptance criteria:

[ ] "(SWISS-NUDE)" removed from all the entries

postponed until current sprint due to interviews

carry over to next sprint

This is done now.

Perfect, thank you @CsabaHalmagyi


soc/xtensa/intel_adsp: Add cAVS clock driver

Simple driver that allows one to choose the clock speed of xtensa cores.
Signed-off-by: Ederson de Souza<EMAIL_ADDRESS>

@edersondisouza  I do not see this being enabled anywhere. Can we enable this and make sure there is test coverage for this driver?

Closing in favour of #45567


Use patch instead of update on jobframework multikueue adapters.

What type of PR is this?
/kind cleanup

What this PR does / why we need it:
Use Patch instead of Update on jobframework multikueue adapters to prevent the risk of dropping fields.
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Follow up for https://github.com/kubernetes-sigs/kueue/pull/2553#discussion_r1674521993.
Does this PR introduce a user-facing change?

Use Patch instead of Update on jobframework multikueue adapters to prevent the risk of dropping fields.

/lgtm
/approve
Thanks


intellisense exception IndexOutOfRange

got this from the activity log while using REPL window
System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at PowerShellTools.Intellisense.PowerShellCompletionSet.SelectBestMatch()
   at Microsoft.VisualStudio.Language.Intellisense.Implementation.CompletionSession.Match()
   at Microsoft.VisualStudio.Language.Intellisense.Implementation.CompletionSession.OnViewBuffer_Changed(Object sender, TextContentChangedEventArgs e)
   at Microsoft.VisualStudio.Text.Utilities.GuardedOperations.RaiseEvent[TArgs](Object sender, EventHandler`1 eventHandlers, TArgs args)

ok, I think I might have a repro:

bring up REPL
type "switch" (wait a few seconds for intellisense to catch up)
type "-"
press tab to use intellisense
spacebar
tab, wait for intellisense, tab again, tab again

Also have a 100% repro: Try typing:
$dte.a and observe crash.


Timestamps are gone after i refresh a Stash-Tab or after i restart Procurement 1.9.6

Title.
Any solution for this ?
Thank you

nvm
I used the timestamp only without notes cause i wanted to know the time i last updated my price.
If i write something after stamp, it remains after refreshing/reloading.


Only add properties with unique name and path in query builder

fixes #1853
Summary

[x] Only add properties with unique name and path in query builder

[x] Replace 'brush' icon with 'trash' icon for clarity

[x]  Allow humanize property of ID to be kept during prettify process

How did you test this change?

[x] Test(s) added
[ ] Manual testing (please provide screenshots/recordings)
[ ] No testing (please provide an explanation)

Idk if you need to add test for filtering node


Sound intensity calibration function and corresponding setting file

Describe changes:
1.Dedicated setting file to specify attenuation value - SoundAttenuation.csv in the templates folder
2. GoCueChecker.bonsai is updated to read this file.

Main foraging-bonsai should follow this change.
@XX-Yin @alexpiet
What issues or discussions does this update address?
Sound Intensity control/standardization across rigs.
Describe the expected change in behavior from the perspective of the experimenter
No. Only during deploying.
Describe any manual update steps for task computers
SoundAttenuation.csv template should be copy pasted to Documents\ForagingSettings folder.
Was this update tested in 446/447?
Tested in 428

@hagikent Is the purpose of this PR to help perform calibration?
To make changes to the existing bonsai workflow, we can directly save the AttenuationLeft to the Settings_box#.csv. The bonsai workflow already reads the Settings_box#.csv. no need to create another csv file for each rig.

@XX-Yin

Is the purpose of this PR to help perform calibration?

Yes, then the value will be copy pasted to Settings_box#.csv.
As Scis/RAs will be changing the value multiple times during calibration, keeping this file separate from main setting file would be safer to avoid erroneous change in other entries. Please add the SoundAttenuation entry when you update the main foraging.bonsai. Default should be 0 for now (at least while "0.08" file stay in 447).

please approve if this makes sense and we can go forward (so that we can start calibration in main from next Wed)


Grids generated using array constructor autofill on first change event

I'm not totally sure if this is a bug or just something improper with the way I'm going about this. I'm trying to auto-generate a 10-by-10 grid on init:
class Base extends React.Component {
  constructor(props) {
    super(props)

    this.state = {
      grid: Array(10).fill(Array(10).fill({})),
    }

    this._handleChange = this._handleChange.bind(this)
  }

  _handleChange(cell, colI, rowJ, value) {
    this.setState({
      grid: this.state.grid.map((col) =>
        col.map((rowCell) =>
          (rowCell === cell) ? ({value: value}) : rowCell
        )
      )
    })
  }

  render() {
    return (
      <DataSheet
        data={this.state.grid}
        valueRenderer={(cell) => cell.value}
        onChange={this._handleChange} />
    )
  }
}

export default Base

but when I do this, if I type anything into a cell, the entire grid gets filled with that value. After that it behaves as expected.
I can get any truthy or falsy value for that initial cell:
grid: Array(10).fill(Array(10).fill({value: null}))

grid: Array(10).fill(Array(10).fill({value: 0}))

grid: Array(10).fill(Array(10).fill({value: 1}))

all do the same thing.

hey @CAYdenberg, your initialization is duplicating objects
var grid = Array(10).fill(Array(10).fill({value: null}));
console.log( grid[0] === grid[1] ) ) //true
console.log( grid[0][0] === grid[1][0] ) ) //true

The way you're initializing essentially copies the same object. The handleChange method uses an object equality. Either change the method to use proper index or initialize your grid differently:
var grid = new Array(10).fill(null).map(v => Array(10));
grid = grid.map(row => row.fill(null).map(col => ({value: null})));
console.log( grid[0] === grid[1] ) ) //false
console.log( grid[0][0] === grid[1][0] ) ) //false

Thanks for your response. That makes sense.


Error in instructions

The instructions state:
```cd folder/raspimaven-archetype
```mvn install

But when I extract the downloaded zip there is no folder called raspimaven-archetype ?

Thanks, fixed


Unhandled promise rejection (rejection id: 2): Error: kill ESRCH

How did you fix this?

sorry, i dont remember @zixia , but do you want me to open this issue again ?

Thanks for your reply. I had fixed this after I run npm i puppeteer with a normal user. (I use root before)


Rework to get default cuml parameters

This PR hardcodes all the default parameters which were inferred previously in order not to break the rule that spark-rapids-ml should run on the driver side without rapids dependencies.
And adds unit test to catch up with the cuml which may change the parameters.

With this PR, I can run PCA/KMeans benchmark tests on the spark cluster where the driver node doesn't have rapids dependencies.
But I ran into the issue that LinearRegression/RandomForest benchmark tests failed on the driver node without rapids deps, but both of them can run on the driver node with rapids deps.
org.apache.spark.api.python.PythonException: Traceback (most recent call last):
  File "/home/xxx/anaconda3/envs/cuml_dev/lib/python3.9/typing.py", line 276, in inner
    pass  # All real errors (not unhashable args) are raised below.
  File "/home/xxx/anaconda3/envs/cuml_dev/lib/python3.9/typing.py", line 575, in __hash__
    return hash((self.__forward_arg__, self.__forward_module__))
AttributeError: __forward_module__

	at org.apache.spark.api.python.BasePythonRunner$ReaderIterator.handlePythonException(PythonRunner.scala:555)
	at org.apache.spark.sql.execution.python.PythonArrowOutput$$anon$1.read(PythonArrowOutput.scala:101)
	at org.apache.spark.sql.execution.python.PythonArrowOutput$$anon$1.read(PythonArrowOutput.scala:50)
	at org.apache.spark.api.python.BasePythonRunner$ReaderIterator.hasNext(PythonRunner.scala:508)
	at org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:491)
	at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)
	at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage2.processNext(Unknown Source)
	at org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)
	at org.apache.spark.sql.execution.WholeStageCodegenExec$$anon$1.hasNext(WholeStageCodegenExec.scala:759)
	at org.apache.spark.sql.execution.SparkPlan.$anonfun$getByteArrayRdd$1(SparkPlan.scala:349)
	at org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2(RDD.scala:898)
	at org.apache.spark.rdd.RDD.$anonfun$mapPartitionsInternal$2$adapted(RDD.scala:898)
	at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:52)
	at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:373)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:337)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)
	at org.apache.spark.scheduler.Task.run(Task.scala:131)
	at org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$3(Executor.scala:506)
	at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1462)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:509)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)

LGTM, assuming the error can be resolved.

build

Look good to me.

After updating the cuml to 23.02 with python 3.10, all the algos (knn/pca/kmean/rf/linearregression) benchmark tests can run on the cluster where the driver doesn't have GPU/rapids dependencies. Thx @leewyang


Custom buttons in config not showing in calendar

Per the fullcalendar documentation (http://fullcalendar.io/docs/display/customButtons/) you can add buttons in the config. However trying this with their example doesn't work in the angular config.
Here's my config. Everything works except the custom button doesn't show up.
vm.uiConfig = {
calendar: {
editable: true,
customButtons: {
myCustomButton: {
text: 'custom!',
click: function() {
alert('clicked the custom button!');
}
}
},
header: {
left: 'month,agendaWeek,agendaDay prev,next today myCustomButton',
center: 'title',
right: 'subscribe'
},
theme: false,
eventSources: vm.eventSources,
eventClick: vm.eventClick,
dayClick: vm.dayClick
}
};

Funny. I just tried this myself and am also not seeing the custom button render.

Looks like custom buttons are a feature of the 2.4 version of fullcalendar. angular-ui-calendar installs version 2.3.1. Had to uninstall the version of fullcalendar installed by angular-ui-calendar and manually install fullcalendar.
bower uninstall fullcalendar
bower install fullcalendar --save
Not sure if there will be incompatibilities. We will see!

Interesting. Thanks Ideavila! Let me know if you see any issues.

I guess the question here then would be when does the team plan on upgrading this to 2.4 of fullcalendar?

I'm also not getting the custom button to appear. Do I need to do any pre-configuration? My calendar shows up fine and playing with the order of the header buttons seems to work also. I just can't seem to get the custom button to show up. See code below.
$(document).ready(function() {

  $('#calendar').fullCalendar({
    customButtons: {
      myCustomButton: {
        text: 'New Event',
        click: function() {
          location.href = '/events/new';
        }
      }
    },
    header: {
      left: 'prev,next today myCustomButton',
      center: 'title',
      right: 'month,agendaWeek,agendaDay'
    },
    defaultView: 'month',
    slotMinutes: 30,
    dragOpacity: "0.5"
  })

});

^ Updated to latest version. All good.

Update fullcalendar to 2.4.0 works great. If you are using bower, try:
bower install fullcalendar#2.4.0 --save

I created a PR for this issue. For now do the above solution of adding as a dependency. And also add it to resolutions to resolve any conflicts
  "dependencies": {
    "angular-ui-calendar": "1.0.1",
    "fullcalendar": "2.4.0"
  },
  "resolutions": {
    "fullcalendar": "2.4.0"
  }

No joy for me on this issue using the above suggested solution. (I also doesn't look like droppable elements got implmented.)


affected/package: time

What version of Go are you using (go version)?

$ go version
1.17

Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/roel/.cache/go-build"
GOENV="/home/roel/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/roel/go/pkg/mod"
GONOPROXY="gitlab.com/EngineeringSoftware"
GONOSUMDB="gitlab.com/EngineeringSoftware"
GOOS="linux"
GOPATH="/home/roel/go"
GOPRIVATE="gitlab.com/EngineeringSoftware"
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.17.6"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build3551796939=/tmp/go-build -gno-record-gcc-switches"

What did you do?

fmt.Println(time.ParseDuration("2d"))

What did you expect to see?

2d0h0m0s

or

48h0m0s

What did you see instead?

0s time: unknown unit "d" in duration "2d"

Diff to solve this issue?

diff --git a/src/time/format.go b/src/time/format.go
index 5fb9cdc969..1e7a4b9412 100644
--- a/src/time/format.go
+++ b/src/time/format.go
@@ -1500,6 +1500,7 @@ var unitMap = map[string]uint64{
        "s":  uint64(Second),
        "m":  uint64(Minute),
        "h":  uint64(Hour),
+       "d":  uint64(Day),
 }

 // ParseDuration parses a duration string.

Common durations. There is no definition for units of Day or larger to avoid confusion across daylight savings time zone transitions.

If you are worried about daylight savings you have to do something like time.Date(2022,2,3,0,0,0,0,time.UTC) - time.Date(2022,2,2,0,0,0,0,time.UTC) already. That doesn't mean that when somebody says "1d" that he/she means 24 hours 363 days of the year, "23h" one Sunday in March, and "25h" one Sunday in November (in North America). When people say "1d" they mean "24h". Even "1w" should always mean "7d". It starts breaking down with months, "1m" is ambiguous.
Finally, according to your definition "1h" is not always an hour either. Sometimes you have leap seconds. So maybe `time.ParseDuration('1h") should not be allowed either...

The standard library time package does not support leap seconds, so one hour is always exactly 60 minutes and one minute is always exactly 60 seconds.
By not accepting 1d in ParseDuration we force people to consider how to handle timezone transitions.  That is an intentional decision.

Okay. I'll write my own parseDuration then.
On Fri., Feb. 4, 2022, 14:04 Ian Lance Taylor, @.***>
wrote:

The standard library time package does not support leap seconds, so one
hour is always exactly 60 minutes and one minute is always exactly 60
seconds.
By not accepting 1d in ParseDuration we force people to consider how to
handle timezone transitions. That is an intentional decision.
—
Reply to this email directly, view it on GitHub
https://github.com/golang/go/issues/51010#issuecomment-1030347393, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AKRYJROUCYBHLSR5PFNQJYTUZQ5MHANCNFSM5NQ3CXQQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID:
@.***>


chore: update Linux and Windows VHDs for October 2023

Reason for Change:

Issue Fixed:

Credit Where Due:
Does this change contain code from or inspired by another project?

[ ] No
[ ] Yes

If "Yes," did you notify that project's maintainers and provide attribution?

[ ] No
[ ] Yes

Requirements:

[ ] uses conventional commit messages

[ ] includes documentation
[ ] adds unit tests
[ ] tested upgrade from previous version

Notes:

/azp run


method (c *Client)NewRequest reads the fields Client.activeUrl and Client.hasActive that can be mutated in pingUrls which runs in a seperate goroutine, so put them behind a read lock

First off, thank you so much for the great lib it has great to use so far!
Two fields hasActive and activeUrl aren't properly guarded by a mutex in one case giving the following relevant frames with -race
WARNING: DATA RACE
Read by goroutine 130:
  github.com/olivere/elastic.(*Client).NewRequest()
      /home/sdubois/development/go/src/github.com/olivere/elastic/client.go:102 +0x57
  github.com/olivere/elastic.(*IndexService).Do()
      /home/sdubois/development/go/src/github.com/olivere/elastic/index.go:209 +0x128f

Previous write by goroutine 20:
  github.com/olivere/elastic.(*Client).pingUrls()
      /home/sdubois/development/go/src/github.com/olivere/elastic/client.go:140 +0x4da
  github.com/olivere/elastic.(*Client).pinger()
      /home/sdubois/development/go/src/github.com/olivere/elastic/client.go:114 +0xa2

Goroutine 130 (running) created at:
 /home/sdubois/development/go/src/github.etsycorp.com/Engineering/Caboose/elasticsearch/elasticsearch.go:182 +0x180

Goroutine 20 (running) created at:
  github.com/olivere/elastic.NewClient()
      /home/sdubois/development/go/src/github.com/olivere/elastic/client.go:63 +0x2ab

Whoops. That mustn't happen of course. Thanks for reporting. I'll review and fix ASAP.
That part of the code will soon be more in line with the approach of the official clients (periodically sniffing nodes in the cluster, round robin/random strategy for picking node for next request etc.).

Thanks for the quick response @olivere !
Do you want a deeper change than this? I just put stuff behind a lock, but can make the right changes if they are easy enough to explain?
thanks!

Yes. Seems like a rather simple fix. Unfortunately I'm not at a computer right now. As soon as I have access, I'll apply your fix.
Re deeper change: I was just trying to give an outlook on what's coming up wrt connection handling etc. I hope I'll get that in on the weekend. I hope I'll get that right :-)

that all sounds perfect :)
thank you so much for the great lib, makes my live a lot easier

BTW: There's a much more complete (and complex) solution to cluster resiliency available in this branch. Would be happy if you could test it.
Also see the wiki and, perhaps, the cluster-test program that might be useful in testing.

I would love to test it out!
I will pull that branch in, and keep you updated how it goes.


h/s: update display names for adapter definitions

Overview
The 5 new h/s definition display names need to be updated
Acceptance criteria

[x] Opentrons 96 Deep Well Adapter with NEST Deep Well Plate 2 mL
[ ] Opentrons 96 PCR Adapter with Armadillo Well Plate 200 µl
[x] Opentrons 96 PCR Adapter with NEST Well Plate 100 µl
[x] Opentrons 96 Flat Bottom Adapter with NEST 96 Well Plate 200 µL Flat
[x] Opentrons Universal Flat Adapter with Corning 384 Well Plate 112 µL Flat

I updated the Universal Flat Adapter display name in this ticket.


Add reconcile logic for MD Upgrade controller

Issue #, if available:
Description of changes:
Adding logic to reconcile MachineDeploymentUpgrade objects. This performs upgrades on the nodes in place but using the upgrade script provided in the node upgrader controller image.
Testing (if applicable):
Tilt with upgrader image. I observed the workers upgrade from 1.27 to 1.28
Documentation added/planned (if applicable):
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/lgtm


name_restrictions: Reserve additional subdomains.

Pushed to fix the pluralization issue and tested that registration indeed forbids using these.

Also pushed a bonus commit to fix a JS live-update bug that I noticed while testing this.


BentoVLLM Service Fails to Start on Linux Server Due to Pydantic Related Errors

Hello,
I attempted to run a BentoVLLM example on a Linux server, ensuring all prerequisites were met and following the installation guide accordingly.
However, when trying to run the BentoML Service, I encountered an error preventing the service from starting.
The error log suggests an issue related to pydantic, and updating the version does not resolve the issue. The detailed error message is as follows:

ubuntu@ip-172-31-55-53:./serving/BentoVLLM$ bentoml serve .
2024-03-12T10:06:30+0900 [INFO] [cli] Starting production HTTP BentoServer from "service:VLLM" listening on http://localhost:3000 (Press CTRL+C to quit)
INFO 03-12 10:06:35 llm_engine.py:87] Initializing an LLM engine with config: model='mistralai/Mistral-7B-Instruct-v0.2', tokenizer='mistralai/Mistral-7B-Instruct-v0.2', tokenizer_mode=auto, revision=None, tokenizer_revision=None, trust_remote_code=False, dtype=torch.bfloat16, max_seq_len=1024, download_dir=None, load_format=auto, tensor_parallel_size=1, disable_custom_all_reduce=False, quantization=None, enforce_eager=False, kv_cache_dtype=auto, device_config=cuda, seed=0)
INFO 03-12 10:06:39 weight_utils.py:163] Using model weights format ['*.safetensors']
INFO 03-12 10:07:02 llm_engine.py:357] # GPU blocks: 2910, # CPU blocks: 2048
INFO 03-12 10:07:03 model_runner.py:684] Capturing the model for CUDA graphs. This may lead to unexpected consequences if the model is not static. To run the model in eager mode, set 'enforce_eager=True' or use '--enforce-eager' in the CLI.
INFO 03-12 10:07:03 model_runner.py:688] CUDA graphs can take additional 1~3 GiB memory per GPU. If you are running out of memory, consider decreasing gpu_memory_utilization or enforcing eager mode. You can also reduce the max_num_seqs as needed to decrease memory usage.
INFO 03-12 10:07:08 model_runner.py:756] Graph capturing finished in 5 secs.

2024-03-12T10:07:09+0900 [ERROR] [entry_service:VLLM_OpenAI:1] Initializing service error
Traceback (most recent call last):
File "/home/ubuntu/.local/lib/python3.8/site-packages/pydantic/type_adapter.py", line 149, in init
core_schema = _getattr_no_parents(type, 'pydantic_core_schema')
File "/home/ubuntu/.local/lib/python3.8/site-packages/pydantic/type_adapter.py", line 94, in _getattr_no_parents
raise AttributeError(attribute)
AttributeError: pydantic_core_schema

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ubuntu/.local/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 461, in _generate_schema
obj = _typing_extra.evaluate_fwd_ref(obj, globalns=self.types_namespace)
File "/home/ubuntu/.local/lib/python3.8/site-packages/pydantic/_internal/_typing_extra.py", line 414, in evaluate_fwd_ref
return ref._evaluate(globalns=globalns, localns=localns)
File "/usr/lib/python3.8/typing.py", line 518, in _evaluate
eval(self.forward_code, globalns, localns),
File "", line 1, in
NameError: name 'CompletionRequest' is not defined

The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/ubuntu/.local/lib/python3.8/site-packages/_bentoml_sdk/service/factory.py", line 220, in call
return self.inner()
File "/home/ubuntu/serving/BentoVLLM/bentovllm_openai/utils.py", line 116, in init
async def create_completion(request: "CompletionRequest", raw_request: Request):
File "/home/ubuntu/.local/lib/python3.8/site-packages/fastapi/routing.py", line 956, in decorator
self.add_api_route(
...
File "/home/ubuntu/.local/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 463, in _generate_schema
raise PydanticUndefinedAnnotation.from_name_error(e) from e
pydantic.errors.PydanticUndefinedAnnotation: name 'CompletionRequest' is not defined

For further information visit https://errors.pydantic.dev/2.0.2/u/undefined-annotation

...

INFO 03-12 10:07:10 serving_chat.py:302] Using default chat template:
INFO 03-12 10:07:10 serving_chat.py:302] {{ bos_token }}{% for message in messages %}{% if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}{{ raise_exception('Conversation roles must alternate user/assistant/user/assistant/...') }}{% endif %}{% if message['role'] == 'user' %}{{ '[INST] ' + message['content'] + ' [/INST]' }}{% elif message['role'] == 'assistant' %}{{ message['content'] + eos_token}}{% else %}{{ raise_exception('Only user and assistant roles are supported!') }}{% endif %}{% endfor %}
2024-03-12T10:07:10+0900 [ERROR] [entry_service:VLLM_OpenAI:1] Application startup failed. Exiting.

The Python dependencies for further debugging are as follows:
python 3.8.10
bentoml==1.2.6
pydantic==2.6.3
pydantic_core==2.16.3
pydantic-settings==2.2.1
fastapi==0.110.0
I would appreciate any advice or solutions to resolve this issue. Thank you in advance for your assistance.

Hi @Juhong-Namgung, thanks for reporting this bug. Seems to be python 3.8 related. I just pushed a fix, could you try it again? Thanks!

Hello,
I've applied the updated fix and can confirm that everything is working perfectly now. I really appreciate the quick turnaround on resolving this issue. Your prompt response has been incredibly helpful for the project. With the issue now resolved, I'll go ahead and close this ticket. I look forward to your continued support should any more issues arise.
Thank you!


[aes] Simplify clearing, clear input data regs with pseudo-random data instead of zero

This PR contains two main changes:

Simplify the clearing functionality by reducing the number of trigger bits from 4 to 2:

One bit for clearing key, IV, and input data registers, and
one bit for clearing output data registers.

This way, software can already trigger the clearing of the key, IV, and input data registers while the last block operation is still running. The After the operation is finished, the output registers can be read in parallel to the clearing operation. Having more, separate clearing triggers is not useful but makes design verification a lot harder as it adds many difficult corner cases.
This resolves #4653.

Clear input data regs with pseudo-random data (as stated in the documentation) instead of zero.

FYI @silvestrst

FYI @silvestrst

Thanks @rasmus-madsen for your review, I have rebased on master and made the change you requested inside aes_base_vseq.sv .

Thanks @rasmus-madsen for your review, I have rebased on master and made the change you requested inside aes_base_vseq.sv .


Doesn't work on nuxt3 3.0.0-rc.0

Uncaught (in promise) TypeError: Cannot destructure property 'clients' of '(intermediate value)' as it is undefined.
    at getClient (composables.mjs:75:11)
    at useGqlClient (composables.mjs:91:12)
    at useGql (composables.mjs:128:21)

Seems like the nuxt team changed how the runtimeConfig works so nuxt-graphql-client is throwing an error as it doesn't find the endpoint.
https://v3.nuxtjs.org/migration/runtime-config/#runtime-config

My bad, went a bit too fast there. Thanks!


Players can repair walls/gates

Task: [Players can repair walls/gates].
Feature: Barricades/Wall
In this subfeature, players will have the ability to repair damaged walls and gates strategically placed to defend against enemy advancement and protect critical structures like the Ship/Extractor. This subfeature enables players to interact with damaged barricades, walls, and gates, restoring their integrity to maintain the defensive line against enemies.
Dependencies
Implement wall ticket(#18 )
Wall Sprite (https://github.com/UQcsse3200/2023-studio-2/issues/9)
Milestones
List of steps that need to be completed for this task.
Step1:Implement Wall Repair Mechanics(Aug 20)
Step2:Wall Repair Animation and Effects(Aug 20)
Step3:Logic Integration(Aug 21)
Step4:Player Resources(Aug 22)
Step5:Testing and Balancing (Aug 22)
Step6:Document(Aug 23)
Documentation
Main description of feature
JavaDoc
...
Member
Name (GitHub khushijain0302)

Is this a duplicate?

Yes. I'll close it now

Duplicate task

Duplicate ticket

Not planned


Improve tool CLI

The command-line interface for the tool scripts can be a bit fiddly with regards to argument placement. Ideally, their CLI would be generified as well to reduce the number of surprises for the user. Most tools also need more options for specifying file output locations, file types and more.

Partially implemented. The CLI has been updated and some tools can now be operated just using stdin/stdout.


Check for all statuses at once and also ask for location for android'

Prompt for all permissions at once, retry 3 times (it seems there was some retry logic already).
@Bentlybro  There's some overlap with https://github.com/BasedHardware/Friend/pull/93 - which shows some additional dialogs when permissions are denied. Maybe we could combine? Would you want to pull some of these changes into yours?
closes #92

@Bentlybro how is it going?

hey @jhsu should we combine these together? i think it will be good, i just need to make it so the location permissions is not added for iphone as its not needed


Siri-issued commands receive different characteristics

I can no longer use my locks via Siri. It will react that it worked, but it doesn't force the state change. I sifted through the library, assume the issue is in the equality check at https://github.com/ebaauw/homebridge-nb/blob/ffd358c832d481208954427ba4e2ecf70c74d4b9/lib/NbService.js#L108, but I'm beginning to think this is a Homebridge issue.
homebridge v1.3.1
node v14.16.0
homebridge-nb v1.0.8
From Siri:
[3/4/2021, 9:55:01 AM] [Nuki] Haustür: Lock Target State changed from 1 to **false**
[3/4/2021, 9:55:02 AM] [Nuki] Haustür: set Lock Target State from **false** to 1

From tapping on the lock (Nuki Opener) in Home:
[3/4/2021, 9:55:05 AM] [Nuki] Haustür: Lock Target State changed from 1 to **0**
[3/4/2021, 9:55:05 AM] [Nuki] Nuki_Bridge_XXXXXXXX: request 49: GET /lockAction?nukiId=XXXXXXXX&deviceType=2&action=3
[3/4/2021, 9:55:10 AM] [Nuki] Nuki_Bridge_XXXXXXXX: request 49: 200 OK
[3/4/2021, 9:55:10 AM] [Nuki] Haustür: set Lock Current State from 1 to **0**
[3/4/2021, 9:55:10 AM] [Nuki] Haustür: set Lock Current State from **0** to 1

Edit: Rolling back to Homebridge v1.2.5 before the characteristic changes has resolved the issue for now.

Looks like an issue with Siri, sending false instead of 0.  They are messing with HAP-NodeJS, in the area of validating characteristic values.  Not sure if that applies here, but could have caused a recent change.  You might try an older version of Homebridge.
I couldn’t get Siri to open my front door recently, but sort of blamed that on Wifi issues.  Maybe it’s the same issue; I need to investigate.

@ebaauw Yes I edited above to say I rolled back to 1.2.5 so I can at least get my doors opening again. I've lost my HomePod chime option recently too, which I'm trying to investigate.
I took a look for changes at https://github.com/homebridge/HAP-NodeJS/blob/fddb0af56683be8b527610f5b318d46fd26368b9/src/lib/definitions/CharacteristicDefinitions.ts#L1923 but imagine the issue lays elsewhere in wrapping / sanitising the output. I've learnt to never rely on API data, even (or especially) if it comes from Apple / Siri / HomeKit devs ;)

So with Homebridge v1.2.5, the log shows 0 instead of false when opening with Siri?

I posted the log differences at https://github.com/homebridge/homebridge/issues/2855#issuecomment-790536069 with the HAP-NodeJS:Accessory debug flag. You can see HAP-NodeJS:Accessory processes the characteristic change differently between Homebridge versions and Siri/Home app.

Issue is now resolved in the latest Homebridge beta.


error in [ python udemy-dl.py https://www.udemy.com/course/rest-api-python-y-django/ ]

error.
pppp@pppp MINGW64 /e/udemy/udemy-dl (master)
$ python --version
Python 3.8.2
ppppp@pppp MINGW64 /e/udemy/udemy-dl (master)
$ python udemy-dl.py https://www.udemy.com/course/rest-api-python-y-django/
Traceback (most recent call last):
File "udemy-dl.py", line 31, in
import udemy
File "E:\udemy\udemy-dl\udemy_init_.py", line 32, in
from udemy.udemy import course, fetch_enrolled_courses
File "E:\udemy\udemy-dl\udemy\udemy.py", line 27, in
from udemy.internal import InternUdemyCourse as Udemy
File "E:\udemy\udemy-dl\udemy\internal.py", line 26, in
from udemy.compat import time, sys
File "E:\udemy\udemy-dl\udemy\compat.py", line 33, in
import m3u8
ModuleNotFoundError: No module named 'm3u8'
pppp@pppp MINGW64 /e/udemy/udemy-dl (master)

@llimpeo did you managed to install the requirements? If not you should be installing it first before running the code


New Rule: component-method-names

(Seeking better rule name suggestions)
I want to enforce a certain naming pattern for callbacks and event handlers:

methods in props interfaces should use the on prefix -- this refers to code that binds handlers
methods on component classes should use the handle prefix -- these are the actual handlers that are bound by other methods

One more thing:
Methods that return JSX.Element or JSX.Element[] should be named using the render prefix. For example, renderMenuItems, not getMenuItems. This would require the type checker though, so maybe it should be another rule...

Closing due to deprecation timeline #210


Fix monomorphic processing code running on JDK8 since it references a non-existing method

Description
Code relying on monomorphic processing on JDK8 doesn't work correctly, since it tries to reference getArrayLength using method handles, which might have been accidentally removed here since it seems unused. This PR adds the method back as is.

Key changed/added classes in this PR

DefineClassUtils

This PR has:

[x] been self-reviewed.

[ ] using the concurrency checklist (Remove this item if the PR doesn't have any relation to concurrency.)

[ ] added documentation for new or modified features or behaviors.
[ ] a release note entry in the PR description.
[ ] added Javadocs for most classes and all non-trivial methods. Linked related entities via Javadoc links.
[ ] added or updated version, license, or notice information in licenses.yaml
[ ] added comments explaining the "why" and the intent of the code wherever would not be obvious for an unfamiliar reader.
[ ] added unit tests or modified existing tests to cover new code paths, ensuring the threshold for code coverage is met.
[ ] added integration tests.
[ ] been tested in a test Druid cluster.

The change is failing on code coverage, which I think is not useful for this patch.


about generation files

Hello,
I tried to generate files that required to execute rDock as mentioned in README.
But can't find binaries pdb2mol, mol2sd, gen_prm in rDock.
'util' directory isn't exist in rDock.
Where can I take them?
rDock was installed successfully.
After rDock test, I met a msg "Have fun using rDock!!".
And your example python scripts are all done without error.
rDock version : latest(rDock_2013.1)

Thank you for your issue.
I forgot to upload pdb2mol, mol2sd and gen_prm. I'm sorry.
I will upload necessary files as soon as possible.

Thanks for your reply :)
Did you make these binaries yourself?
Or someone can make them using rDock?

I added util directory.
You must install Open Babel and Python binding to run them.
If you have any questions, feel free to ask me.

I checked scripts uploaded.
Thanks a lot for your swift response :)


Redirects to new docs pages do not work

As noted in https://github.com/ChainSafe/lodestar/commit/966f3acc0f615b62b082176412e85f7dbbb8d696#r143045200, it seems like the redirect do not work as expected.
I also found a few warnings related to that when running docusaurus build
[WARNING] @docusaurus/plugin-client-redirects: some redirects would override existing paths, and will be ignored:
- {"from":"/run/beacon-management/beacon-cli","to":"/beacon-management/beacon-cli"}
- {"from":"/run/bootnode/bootnode-cli","to":"/bootnode/bootnode-cli"}
- {"from":"/libraries/lightclient-prover/lightclient-cli","to":"/lightclient-prover/lightclient-cli"}
- {"from":"/run/validator-management/validator-cli","to":"/validator-management/validator-cli"}

While https://github.com/ChainSafe/lodestar/pull/6940 fixed redirects locally, they are still broken when docs are deployed to https://chainsafe.github.io/lodestar/. Needs further investigation

Questionable if we need those redirects anyways, looking at external reference that are broken e.g. on https://launchpad.ethereum.org/en/lodestar, most of those still reference pages from initial restructuring we did way earlier, and those are not handled by the docusaurus redirects.


Upgrade to .NET Core 2.1

Is there a plan to upgrade these projects to .NET Core 2.1?
I've cloned the repo locally and would be interested in tackling that task, but I don't have the ability to create a branch.

You can fork it and use that for a while, but our team's project is currently 2.0 and we need to upgrade (probably in the next 3 weeks or so) before we can upgrade.

Should only be 2-3 weeks at a guess.

I will take a look if we can add a .NET Core 2.1 version to the Nuget package without upgrading the code base.

@sitwalkstand, the resolution to this issue has been published as a pre-release version (0.4.0-prerelease-1).  Please let us know if you run into any issues.
Install-Package dotnet-fbit -Version 0.4.0-prerelease-1


Show concrete instance error

Tested it and so far it worked great, thanks!

Submitting a fake error makes the label empty:
$ cat step-1
<?xml version="1.0" encoding="UTF-8"?>
<request protocol="3.0" version="update_engine-0.4.10" updaterversion="update_engine-0.4.10" installsource="scheduler" ismachine="1">
    <os version="Chateau" platform="CoreOS" sp="2512.2.0_x86_64"></os>
    <app appid="e96281a6-d1af-4bde-9a0a-97b76e56dc57" version="1.2.3" track="stable" bootid="{965fb4c5-ad3e-4eb7-a4c2-ca0c0e31ec84}" oem="ami" oemversion="0.1.1-r1" alephversion="1688.5.3" machineid="2b9e671d61774703ac7be60715220bfe" lang="en-US" board="amd64-usr" hardware_class="" delta_okay="false" >
        <updatecheck></updatecheck>
    </app>
</request>
$ cat step-2
<?xml version="1.0" encoding="UTF-8"?>
<request protocol="3.0" version="update_engine-0.4.10" updaterversion="update_engine-0.4.10" installsource="scheduler" ismachine="1">
    <os version="Chateau" platform="CoreOS" sp="2512.2.0_x86_64"></os>
    <app appid="e96281a6-d1af-4bde-9a0a-97b76e56dc57" version="1.2.3" track="stable" bootid="{965fb4c5-ad3e-4eb7-a4c2-ca0c0e31ec84}" oem="ami" oemversion="0.1.1-r1" alephversion="1688.5.3" machineid="2b9e671d61774703ac7be60715220bfe" lang="en-US" board="amd64-usr" hardware_class="" delta_okay="false" >
        <event eventtype="3" eventresult="0" errorcode="999"></event>
    </app>
</request>
$ curl -d @step-1  -H 'Content-Type: text/xml' http://localhost:8000/v1/update
$ curl -d @step-2  -H 'Content-Type: text/xml' http://localhost:8000/v1/update

Using errorcode="267435474" makes JavaScript go crazy until I kill the tab

@pothos how should fake error cases be dealt, I was an assumption that we will always be getting a valid error code

fixed the getErrorsAndFlags function it returns no errors if a wrong error code is passed

now in case of a wrong error_code we fallback to error message saying error updating

@ashu8912 In the interest of saving time I removed the change of Error update -> Error because what we needed to do was not touch that label in a patch that's not about that. I kind of mixed things and had understood you had made Error -> Error Update but you were just capitalizing the word (and either change should not be in this commit).


Added German translation

I added the German translation.
I also fixed a spelling error in the English translation.
Best regards,
BlueSky

Thank you very much for the translations!!


BYOD apex for Playground

Apex domain cannot have CNAME, but can do "ALIAS"

Using something like CloudFlare "CNAME flattening" and pointing your domainname: to the FQDN that defang generates for your (playground) service, should already work.

Good enough for now


Update cdn-in-a-box Documentation with more pitfalls

What does this PR (Pull Request) do?

Updates the cdn-in-a-box documentation to include some pitfalls I ran into when starting it up. They include having to snap the cdn to get an initial CRconfig and clearing the volumes when the self signed certs are failing.
Which Traffic Control components are affected by this PR?

CDN in a Box
Documentation

What is the best way to verify this PR?

Does the new doc make sense?

Can one of the admins verify this patch?