Can't be build on Cygwin x86

While I have set the CMAKE_C_COMPILER to clang, it reports that
[ 17%] Building C object CMakeFiles/objc.dir/sendmsg2.c.o
[ 18%] Building C object CMakeFiles/objc.dir/statics_loader.c.o
[ 18%] Building C object CMakeFiles/objc.dir/toydispatch.c.o
[ 19%] Building ASM object CMakeFiles/objc.dir/block_trampolines.S.o
clang-4.0: error: unsupported option '-fPIC' for target 'i686-pc-windows-cygnus'
clang-4.0: error: unsupported option '-fPIC' for target 'i686-pc-windows-cygnus'
make[2]: *** [CMakeFiles/objc.dir/build.make:591: CMakeFiles/objc.dir/block_trampolines.S.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:100: CMakeFiles/objc.dir/all] Error 2
make: *** [Makefile:161: all] Error 2

So I tried to remove -fPIC flag from flags.cmake, but it shown a link stage error as follow
[ 27%] Linking C shared library cygobjc-4.6.dll
CMakeFiles/objc.dir/properties.m.o:(.rdata+0x1d2): multiple definition of `.objc_sel_namecopy'
CMakeFiles/objc.dir/associate.m.o:(.rdata+0xa0): first defined here
/usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: Cannot export objc_msgSend: symbol not defined
/usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: Cannot export objc_msgSend_fpret: symbol not found
/usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: Cannot export objc_msgSend_stret: symbol not found
/usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: Error: 0-bit reloc in dll
/usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: Error: 0-bit reloc in dll
/usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: Error: 0-bit reloc in dll
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0xaa): undefined reference to `__objc_block_trampoline_end_sret'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0xb0): undefined reference to `__objc_block_trampoline_sret'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0xc1): undefined reference to `__objc_block_trampoline_end'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0xc7): undefined reference to `__objc_block_trampoline'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x72): undefined reference to `slowMsgLookup'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x84): undefined reference to `GLOBAL_OFFSET_TABLE_'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x8a): undefined reference to `SmallObjectClasses'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x10a): undefined reference to `slowMsgLookup'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x11c): undefined reference to `GLOBAL_OFFSET_TABLE_'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x122): undefined reference to `SmallObjectClasses'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x1a2): undefined reference to `slowMsgLookup'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x1b4): undefined reference to `GLOBAL_OFFSET_TABLE_'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x1ba): undefined reference to `SmallObjectClasses'
CMakeFiles/objc.dir/Protocol2.m.o:(.text+0xd3): undefined reference to `_imp____objc_exec_class'
CMakeFiles/objc.dir/arc.m.o:(.text+0x372): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0x582): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0x8e1): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0x8fe): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0xb60): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0x2553): undefined reference to `_imp____objc_exec_class'
CMakeFiles/objc.dir/associate.m.o:(.text+0x2ec): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/associate.m.o:(.text+0x1023): undefined reference to `_imp____objc_exec_class'
CMakeFiles/objc.dir/properties.m.o:(.text+0x26a): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/properties.m.o:(.text+0x299): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/properties.m.o:(.text+0x3f0): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/properties.m.o:(.text+0x4e8): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/properties.m.o:(.text+0x1f33): undefined reference to `_imp____objc_exec_class'
collect2: error: ld returned 1 exit status
clang-4.0: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
make[2]: *** [CMakeFiles/objc.dir/build.make:859: cygobjc-4.6.dll] Error 1
make[1]: *** [CMakeFiles/Makefile2:100: CMakeFiles/objc.dir/all] Error 2
make: *** [Makefile:161: all] Error 2

I don't have a Windows machine to test this on, but it looks as if the relocations are wrong for Windows.

Might it be a clang bug?

Most of the code is hand-written assembly, so it's probably my bug.  The _imp____objc_exec_class one is interesting though, as it seems to imply that __objc_exec_class is missing the dlexport attribute.

It would help if you can attach the assembly generated from a simple program that calls an external function and accesses a global variable on Windows.  For example:
`c
extern int foo;
extern int bar(void);
int fn(void)
{
return foo + bar();
}
`
Please compile this with clang -S -O1.

        .text
        .def     @feat.00;
        .scl    3;
        .type   0;
        .endef
        .globl  @feat.00
@feat.00 = 1
        .def     _fn;
        .scl    2;
        .type   32;
        .endef
        .globl  _fn
        .p2align        4, 0x90
_fn:                                    # @fn
# BB#0:
        pushl   %esi
        movl    _foo, %esi
        calll   _bar
        addl    %esi, %eax
        popl    %esi
        retl

Ah - on 32-bit Windows, DLLs aren't position independent and this code is assuming everything is.  Okay, that should be simple to fix...

Please can you try this patch and see if it fixes some of the errors?
diff --git a/objc_msgSend.x86-32.S b/objc_msgSend.x86-32.S
index 77193bd..0ca5333 100644
--- a/objc_msgSend.x86-32.S
+++ b/objc_msgSend.x86-32.S
@@ -1,3 +1,10 @@
+#if defined(__CYGWIN32__) || (defined(_WIN32) && !defined(_WIN64))
+#define PLT(x) x
+#define WINDOWS
+#else
+#define PLT(x) x@PLT
+#endif
+
 .macro MSGSEND receiver, sel, fpret
        .cfi_startproc
        movl  \receiver(%esp), %eax
@@ -54,7 +61,7 @@
        push  %ecx                           # _cmd
        push  %eax                           # &self
        .cfi_def_cfa_offset 12
-       call  slowMsgLookup@PLT
+       call  PLT(slowMsgLookup)
        add   $8, %esp                       # restore the stack

@@ -65,9 +72,13 @@
 7:
        popl  %ebx;
 8:
+#ifdef WINDOWS
+       mov   SmallObjectClasses, %eax
+#else
        addl  $_GLOBAL_OFFSET_TABLE_+(8b-7b), %ebx
        leal  SmallObjectClasses@GOTOFF(%ebx), %eax
        mov   (%eax), %eax
+#endif
        popl  %ebx
        jmp   1b
        .cfi_endproc

[ 19%] Linking C shared library cygobjc-4.6.dll
CMakeFiles/objc.dir/properties.m.o:(.rdata+0x2e1): multiple definition of `.objc_sel_namecopy'
CMakeFiles/objc.dir/associate.m.o:(.rdata+0xcd): first defined here
/usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: Cannot export objc_msgSend: symbol not defined
/usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: Cannot export objc_msgSend_fpret: symbol not found
/usr/lib/gcc/i686-pc-cygwin/6.4.0/../../../../i686-pc-cygwin/bin/ld: Cannot export objc_msgSend_stret: symbol not found
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x8): undefined reference to `__objc_block_trampoline'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0xd): undefined reference to `__objc_block_trampoline_end'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x5c): undefined reference to `__objc_block_trampoline_sret'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x61): undefined reference to `__objc_block_trampoline_end_sret'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x106): undefined reference to `__objc_block_trampoline_end_sret'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x10c): undefined reference to `__objc_block_trampoline_sret'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x13d): undefined reference to `__objc_block_trampoline_end'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x143): undefined reference to `__objc_block_trampoline'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x54): undefined reference to `slowMsgLookup'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x65): undefined reference to `SmallObjectClasses'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0xc2): undefined reference to `slowMsgLookup'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0xd3): undefined reference to `SmallObjectClasses'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x130): undefined reference to `slowMsgLookup'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x141): undefined reference to `SmallObjectClasses'
CMakeFiles/objc.dir/Protocol2.m.o:(.text+0xd3): undefined reference to `_imp____objc_exec_class'
CMakeFiles/objc.dir/arc.m.o:(.text+0x372): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0x582): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0x8e1): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0x8fe): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0xb60): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0x2603): undefined reference to `_imp____objc_exec_class'
CMakeFiles/objc.dir/associate.m.o:(.text+0x2ec): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/associate.m.o:(.text+0x11e3): undefined reference to `_imp____objc_exec_class'
CMakeFiles/objc.dir/properties.m.o:(.text+0x26a): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/properties.m.o:(.text+0x299): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/properties.m.o:(.text+0x3f0): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/properties.m.o:(.text+0x4e8): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/properties.m.o:(.text+0x1c83): undefined reference to `_imp____objc_exec_class'
collect2: error: ld returned 1 exit status
clang-4.0: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
make[2]: *** [CMakeFiles/objc.dir/build.make:859: cygobjc-4.6.dll] Error 1
make[1]: *** [CMakeFiles/Makefile2:100: CMakeFiles/objc.dir/all] Error 2
make: *** [Makefile:161: all] Error 2

CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x54): undefined reference to `slowMsgLookup'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x65): undefined reference to `SmallObjectClasses'

I think these can be fixed by wrapping all references to these symbols in objc_msgSend.x86-32.S with CDECL().
Cannot export objc_msgSend: symbol not defined

I think this is probably the cause of most of these.  We are probably missing some .def directives for the exported functions.  Can you try adding something like this:
	.def	 CDECL(objc_msgSend);
	.scl	2;
	.type	32;
	.endef

And let me know if that improves things?
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x10c): undefined reference to `__objc_block_trampoline_sret'

These probably have the same cause as above.
CMakeFiles/objc.dir/properties.m.o:(.text+0x1c83): undefined reference to `_imp____objc_exec_class'

I believe that this is caused by clang implciitly adding dllimport to __objc_exec_class, on the assumption that it's provided by a different library.  We can probably fudge that by declaring a function imp____objc_exec_class that simple calls ___objc_exec_class.

No, it doesn't improve anything.

Can you paste the patch that you used to test?

diff --git a/objc_msgSend.x86-32.S b/objc_msgSend.x86-32.S
index 77193bd..006ceef 100644
--- a/objc_msgSend.x86-32.S
+++ b/objc_msgSend.x86-32.S
@@ -1,3 +1,10 @@
+#if defined(__CYGWIN32__) || (defined(_WIN32) && !defined(_WIN64))
+#define PLT(x) x
+#define WINDOWS
+#else
+#define PLT(x) x@PLT
+#endif
+
 .macro MSGSEND receiver, sel, fpret
        .cfi_startproc
        movl  \receiver(%esp), %eax
@@ -54,7 +61,7 @@
        push  %ecx                           # _cmd
        push  %eax                           # &self
        .cfi_def_cfa_offset 12
-       call  slowMsgLookup@PLT
+       call  PLT(slowMsgLookup)
        add   $8, %esp                       # restore the stack

@@ -65,9 +72,13 @@
 7:
        popl  %ebx;
 8:
+#ifdef WINDOWS
+        mov   SmallObjectClasses, %eax
+#else
        addl  $_GLOBAL_OFFSET_TABLE_+(8b-7b), %ebx
        leal  SmallObjectClasses@GOTOFF(%ebx), %eax
        mov   (%eax), %eax
+#endif
        popl  %ebx
        jmp   1b
        .cfi_endproc
@@ -84,3 +95,7 @@ CDECL(objc_msgSend):
 TYPE_DIRECTIVE(CDECL(objc_msgSend_stret), @function)
 CDECL(objc_msgSend_stret):
        MSGSEND 8, 12, 0
+.def    CDECL(objc_msgSend);
+       .scl    2;
+       .type   32;
+       .endef

I think the .def needs to come  before the definition of objc_msgSend

Why the libobjc bundled in 'official' GNUstep works well?

Define 'works well' - it's the ancient GCC runtime, which doesn't support ARC, or most of the features of modern Objective-C.

Oh I'm sorry I don't know that.

I found that clang will reference to __imp____objc_exec_class symbol when compile objc codes on windows platforms, maybe some hacks could solve these problems.

I'm not sure if it helps with Cygwin, but it is now possible to build libobjc2 as a native Windows binary with clang and this under-review patch: https://reviews.llvm.org/D50144
Only the new ABI is supported, so you will need to compile everything else with -fobjc-runtime=gnustep-2.0.

I use a trunk version of clang with the patch applied.
$ clang-8 --version
clang version 8.0.0 (trunk 338954) (llvm/trunk 338953)
Target: i686-pc-windows-cygnus
Thread model: posix
InstalledDir: /usr/bin

However it doesn't fix the problem.
$ LANG=en_US.utf8 make
[  0%] Linking C shared library cygobjc-4.6.dll
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x7): undefined reference to `__objc_block_trampoline'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0xc): undefined reference to `__objc_block_trampoline_end'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x53): undefined reference to `__objc_block_trampoline_sret'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x58): undefined reference to `__objc_block_trampoline_end_sret'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0xff): undefined reference to `__objc_block_trampoline_sret'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x108): undefined reference to `__objc_block_trampoline_end_sret'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x136): undefined reference to `__objc_block_trampoline'
CMakeFiles/objc.dir/block_to_imp.c.o:(.text+0x13f): undefined reference to `__objc_block_trampoline_end'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x53): undefined reference to `slowMsgLookup'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x65): undefined reference to `SmallObjectClasses'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0xc3): undefined reference to `slowMsgLookup'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0xd5): undefined reference to `SmallObjectClasses'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x133): undefined reference to `slowMsgLookup'
CMakeFiles/objc.dir/objc_msgSend.S.o:(.text+0x145): undefined reference to `SmallObjectClasses'
CMakeFiles/objc.dir/NSBlocks.m.o:(.text[_.objcv2_load_function]+0xc): undefined reference to `_imp____objc_load'
CMakeFiles/objc.dir/arc.m.o:(.text+0x3e0): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0x73f): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0x924): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0xc8f): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/arc.m.o:(.text+0xf16): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/associate.m.o:(.text+0x2ed): more undefined references to `objc_msgSend' follow
CMakeFiles/objc.dir/associate.m.o:(.text+0x48f): undefined reference to `_imp__objc_exception_rethrow'
CMakeFiles/objc.dir/associate.m.o:(.text+0x4ec): undefined reference to `_imp__objc_begin_catch'
CMakeFiles/objc.dir/associate.m.o:(.text+0x51f): undefined reference to `_imp__objc_end_catch'
CMakeFiles/objc.dir/properties.m.o:(.text+0x264): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/properties.m.o:(.text+0x293): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/properties.m.o:(.text+0x3f1): undefined reference to `objc_msgSend'
CMakeFiles/objc.dir/properties.m.o:(.text+0x4e9): undefined reference to `objc_msgSend'
collect2: error: ld returned 1 exit status
clang-8: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
make[2]: *** [CMakeFiles/objc.dir/build.make:833: cygobjc-4.6.dll] Error 1
make[1]: *** [CMakeFiles/Makefile2:100: CMakeFiles/objc.dir/all] Error 2
make: *** [Makefile:161: all] Error 2

You have two issues:

You're using a released version of clang.  The clang changes to support the v2 ABI aren't yet in a release (see: https://reviews.llvm.org/D50144) and without them you will get references to non-existent symbols for exception handling (e.g. __objc_begin_catch).  With the clang patch, you should see these go away.
It appears that the assembly files are not being built.  I have only tried building on Windows with the Visual Studio (msbuild) generator.  I had to add some work-arounds to compile them and it appears that they aren't working for you.

Can Cygwin use normal Windows DLLs?  If so, it's probably easier to build the runtime outside of Cygwin and just use it as any other DLL.

No, I'm using trunk version with the patch applied, not the "vanilla" clang.
Cygwin can use normal Windows DLLs, the ABI it used is same as MinGW.

Closing this.  For Cygwin, I recommend building as a native Windows binary and just using it from Cygwin.  There are still some outstanding clang patches to make multi-DLL Objective-C projects build with clang, but I hope to land them this weekend.
We now have CI on Windows, so I consider it a fully supported platform by the runtime.


gRPC connection will be forcefully closed on DNS resolver errors from…

… now on

Pull request type

Please check the type of change your PR introduces:

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[x] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] Documentation content changes
[ ] Other (please describe):

What is the current behavior?

Issue Number: N/A
What is the new behavior?

Other information

Codecov Report
Attention: Patch coverage is 0% with 62 lines in your changes missing coverage. Please review.

Project coverage is 43.56%. Comparing base (839711c) to head (0e194a6).
Report is 3 commits behind head on master.

Files with missing lines
Patch %
Lines

internal/conn/pool.go
0.00%
39 Missing :warning:

internal/conn/conn.go
0.00%
20 Missing :warning:

internal/balancer/balancer.go
0.00%
3 Missing :warning:

:exclamation:  There is a different number of reports uploaded between BASE (839711c) and HEAD (0e194a6). Click for more details.
HEAD has 131 uploads less than BASE

Flag
BASE (839711c)
HEAD (0e194a6)

unit
18
1

windows
6
0

go-1.23.x
14
0

macOS
6
1

go-1.21.x
12
1

integration
18
0

ydb-23.3
6
0

ubuntu
26
0

go-1.22.x
12
0

ydb-nightly
2
0

experiment
2
0

ydb-24.1
6
0

ydb-24.2
6
0

Additional details and impacted files
@@             Coverage Diff             @@
##           master    #1557       +/-   ##
===========================================
- Coverage   70.92%   43.56%   -27.37%
===========================================
  Files         362      295       -67
  Lines       37555    31721     -5834
===========================================
- Hits        26637    13819    -12818
- Misses       9833    17429     +7596
+ Partials     1085      473      -612

Flag
Coverage Δ

experiment
?

go-1.21.x
43.56% <0.00%> (-26.78%)
:arrow_down:

go-1.22.x
?

go-1.23.x
?

integration
?

macOS
43.56% <0.00%> (+2.50%)
:arrow_up:

ubuntu
?

unit
43.56% <0.00%> (+2.49%)
:arrow_up:

windows
?

ydb-23.3
?

ydb-24.1
?

ydb-24.2
?

ydb-nightly
?

Flags with carried forward coverage won't be shown. Click here to find out more.

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


Improved name of field variables in MapAttachment

a는 address를 의미하며, c는 isCurrent를 의미합니다.

Unchecked code was fixed on 0ee0ea3ab94593aebb7dce07100391098817164f.


⚠ Bofrost.lu has degraded performance

In ceb883b, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2182 ms

Resolved: Bofrost.lu performance has improved in 271240a after 6 minutes.


Refactoring of compas_robots to COMPAS 2.0 and various updates to prepare for release

What type of change is this?

[ ] Bug fix in a backwards-compatible manner.
[ ] New feature in a backwards-compatible manner.
[x] Breaking change: bug fix or new feature that involve incompatible API changes.
[ ] Other (e.g. doc update, configuration, etc)

Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

[x] I added a line to the CHANGELOG.md file in the Unreleased section under the most fitting heading (e.g. Added, Changed, Removed).
[ ] I ran all tests on my computer and it's all green (i.e. invoke test).
[x] I ran lint on my computer and there are no errors (i.e. invoke lint).
[ ] I have added tests that prove my fix is effective or that my feature works.
[x] I have added necessary documentation (if appropriate)

ah wait.. hold on the review, the build is failing horribly for some reason...


Create additional info blocks

Ever since I saw the machines at an arcade, I really loved to play Dance Dance Revolution. I bought the PlayStation game and mats, which helped me stay fit, just like all the cycling I did back then. Today I haven't played in a few months which I'm complementing with strength training.
I always enjoyed RTS games, but later became interested in MOBA's which is still my go-to genre along with builder games such as Satisfactory.
I'm truly interested in all types of subjects from politics to fossil studies, which makes me sad not to have the time to learn about everything in my lifetime.

A pet peeve of mine are ill-thought comments that take more than they give.


Update "RUN Instruction Using 'cd' Instead of WORKDIR" query for Docker, allow cd when not at the beginning

Platform
Docker
Query
f4a6bcd3-e231-4acf-993c-aa027be50d2e
Description
In long RUN commands there sometimes exists cds in the middle of the Instruction to change a directory. It is not helpful to replace such a cd with a WORKDIR instruction as this would create an additional layer. Therefore only cds that are at the beginning of a RUN instruction should be reported.
Example
The official docker image for fluentd uses such a construct in the Dockerfile for its debian image: https://github.com/fluent/fluentd-docker-image/blob/a9e4cee765c7aaf7876d6fe3282aa565dbcdc2a4/v1.14/debian/Dockerfile

Hello @Lergin, thank you very much for raising this issue! This query is a tough one.
We would have 2 options:
1 - A way to go around this would be using the full path instead of cd + relative path, and I would update the query description.
2 - Compromising like you suggested, only looking for cd at the start of the command, which can be a good compromise to ensure image optimization and readability.
After looking around in dockerfiles, it seems most use full paths, so we are inclined to going with the first option.
This PR aims to fix this and other issues you have very attentively raised! Thank you once again!


Hotfix - add mypy to requirements to avoid failing import of typing

This happened after playing with too many Python versions.  Our production uses 3.4 which doesn't have typing.  Next version of ETL moves to Python 3.5 which does have typing

This ran successfully in development.


DSO-60 🔧 Add Sonarcloud config files

Added Sonarcloud GitHub action
Added Sonarcloud properties file
Added secrets to top level PiL organisation -> target App repo

:)


stable tested arm64 snap works on 18.04lts and 16.04lts but crashes on 20.04lts

Rocket.Chat's  latest arm64 snaps have been working fine on both 18.04lts and 16.04lts for years.  When installed with 20.04lts, fails every time.  Many users have reported this in the wild with Raspberry Pi's update to 20.04lts.
We have tested and found the same problem.   We have even created new snaps with different version of MongoDB inside - from 3.x to 4.x - all crashes with the same problem.
To reproduce, on an arm64 20.04lts install:
sudo snap install rocketchat-server
The error message from the log in EVERY CASE is:
sudo journalctl  -u snap.rocketchat-server.rocketchat-mongo
-- Logs begin at Wed 2020-04-01 17:23:43 UTC, end at Sun 2020-05-10 23:30:18 UTC. --
May 10 22:15:56 ubuntu systemd[1]: Started Service for snap application rocketchat-server.rocketchat-mongo.
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]: 2020-05-10T22:16:00.429+0000 E -        [main] Assertion failure getrlimit(RLIMIT_NOFILE, &limit) == 0 src/mongo/transport/service_entry_point_i>
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]: 2020-05-10T22:16:00.527+0000 I CONTROL  [main]
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]:  0xaaaac47db568 0xaaaac47d9e14 0xaaaac3238208 0xaaaac34ae908 0xaaaac34a2274 0xaaaac32a3ce0 0xaaaac4794d20 0xaaaac47952d4 0xaaaac32b40ac 0xaaaac3>
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]: ----- BEGIN BACKTRACE -----
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]: {"backtrace":[{"b":"AAAAC28BB000","o":"1F20568","s":"_ZN5mongo15printStackTraceERSo"},{"b":"AAAAC28BB000","o":"1F1EE14","s":"_ZN5mongo10logConte>
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]:  mongod(_ZN5mongo15printStackTraceERSo+0x48) [0xaaaac47db568]
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]:  mongod(_ZN5mongo10logContextEPKc+0x104) [0xaaaac47d9e14]
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]:  mongod(_ZN5mongo12verifyFailedEPKcS1_j+0x188) [0xaaaac3238208]
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]:  mongod(_ZN5mongo21ServiceEntryPointImplC2EPNS_14ServiceContextE+0x390) [0xaaaac34ae908]
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]:  mongod(+0xBE7274) [0xaaaac34a2274]
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]:  mongod(_ZNSt17_Function_handlerIFN5mongo6StatusEPNS0_18InitializerContextEEPS4_E9_M_invokeERKSt9_Any_dataOS3_+0x30) [0xaaaac32a3ce0]
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]:  mongod(_ZNK5mongo11Initializer7executeERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKSt3mapIS7_S7_St4lessIS7_ESaISt>
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]:  mongod(_ZN5mongo21runGlobalInitializersEiPKPKcS3_+0x244) [0xaaaac47952d4]
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]:  mongod(_ZN5mongo11mongoDbMainEiPPcS1_+0xAC) [0xaaaac32b40ac]
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]:  mongod(main+0xC) [0xaaaac323a4e4]
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]:  libc.so.6(__libc_start_main+0xE0) [0xffffbce8c8a0]
May 10 22:16:00 ubuntu rocketchat-server.rocketchat-mongo[5015]: -----  END BACKTRACE  -----

The latest arm64 20.04lts appears to work fine now.


ODataOptions to linq

Hi,
Is there a way to parse ODataOptions to a linq expression?
I have an in-memory List collection which I want to apply the ODataOptions to. I guess I have to have the linq expression of ODataOption but can't find a way to get it.
Thanks.

No, it is not supported. Please, use the official OData libraries.


Native plugins in OpenSearch: Upgrade support

We have bunch of native plugins at ~/OpenSearch/plugins.
How can we verify that these plugins have upgrade support?
i.e customers migrating from ODFE 1.x/ES 6.8/7.x

Do these plugins really need upgrade support? Most of them look like stateless plugins.
Do these plugins already have upgrade support tests?

@saratvemulapalli  could you please look into this? Thanks


make json view as json editor

in json view of the responce

its good if it become editor(readonly) were we can benefit from the syntax highlight and expand/ collapse feature

Hi @BMomani  please try the latest version: v1.9.30, and also you can download from Jetbrains market v1.9.30
Thanks your feedback, If you meet any issue please let me know.

great work It wokred,
can you do the same thing for the properties
in my case, I have a property that contains JSON object
check how the rendering looks like right now when I expand the property value
I know the possible values are endless but very common one is the JSON
its even implemented in Datagrip as value viewer and editor

Hi @BMomani , Thanks your feedback, I have created a new issue #37 for follow this feature.


pigweed zap.app has broken symlinks

Trying to run zap.app from the pigweed-installed bits does not work.  It crashes like so:
Termination Reason:    Namespace DYLD, Code 1 Library missing
Library not loaded: @rpath/Electron Framework.framework/Electron Framework
...
Reason: tried: '.environment/cipd/packages/zap/zap.app/Contents/Frameworks/Electron Framework.framework/Electron Framework' (not a mach-o file)

What I see is that:

.environment/cipd/packages/zap/zap.app/Contents/Frameworks/Electron Framework.framework/Electron Framework instead of being a symlink like it's supposed to be is a normal file, containing the text "Versions/Current/Electron Framework".
.environment/cipd/packages/zap/zap.app/Contents/Frameworks/Electron Framework.framework/Versions/Current instead of being a symlink like it's supposed to be is a normal file, containing the text "A".
.environment/cipd/packages/zap/zap.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework exists, and is the right thing: it's a mach-o file, with both arm64 and x86_64 bits in it.

So this would presumably work if the symlinks had not been corrupted.

We've root-caused this (Python's zipfile, used in generating the CIPD package, does not by default preserve symlinks), and are working on a fix.

Proposed fix: https://chromium-review.googlesource.com/c/infra/luci/recipes-py/+/4285739.

@tpudlik https://chromium-review.googlesource.com/c/infra/luci/recipes-py/+/4285739 looks like it's merged, but the symlinks in the cipd version of ZAP are still corrupted?

Which OS do you observe this issue on? Is this Mac, Windows, or Linux? And are you at the tip of the main branch?
On Mac, the CIPD package version currently referred to from the main branch<EMAIL_ADDRESS>appears to have working symlinks.

This would be on Mac.
@bzbarsky-apple , it looks good to me..
spang-macbookpro2:zap.app spang$ pwd
/Users/spang/connectedhomeip/.environment/cipd/packages/zap/zap.app
spang-macbookpro2:zap.app spang$ ls -l Contents/Frameworks/Electron\ Framework.framework/
total 0
lrwxr-xr-x  1 spang  primarygroup   35  6 Apr 14:54 Electron Framework -> Versions/Current/Electron Framework
lrwxr-xr-x  1 spang  primarygroup   24  6 Apr 14:54 Helpers -> Versions/Current/Helpers
lrwxr-xr-x  1 spang  primarygroup   26  6 Apr 14:54 Libraries -> Versions/Current/Libraries
lrwxr-xr-x  1 spang  primarygroup   26  6 Apr 14:54 Resources -> Versions/Current/Resources
drwxr-xr-x  4 spang  primarygroup  128  6 Apr 14:54 Versions
spang-macbookpro2:zap.app spang$ ./Contents/MacOS/zap
🔧 Using state directory: /Users/spang/.zap

I'm on Mac.  But I might have an old-ish version, looks like.  Mine are all dated March 13.  Let me try re-bootstrapping.

Yes, after re-bootstrap this looks fixed.  Thank you!


Sensing+

Sensing+ is an extension that expands the sensing part of scratch by adding blocks for mobile touch inputs and blocks allowing you to grab the lists and their content's from other sprites.
This block allows you to get the selected finger's X or Y position.

This block is a sprite exclusive block that allows you to get the finger that is currently touching that sprite or clone.

This block allows you to detect whether or not the sprite/clone is being touched by the specified finger.

This one returns true if the sprite/clone is touching any finger.

This one returns whether the specified finger is down.

Self explanitory.

Now onto the local list blocks
These are just ports of list blocks to allow for gathering local lists from other sprites.

The rest are really self explanitory

The errors are from the device velocity readers.

Its logo

Some suggestions:

Currently starting and releasing touches shifts all touches after it, which makes it hard to determine which touch is which. It would be much easier to use if touches remained at their indices and touch list wasn't continuous.
Maybe other than gyroscope and accelerometer also add other sensors? (not sure) (some need to be enabled in chrome://flags)

I think you should also add things like swiping your finger(up, down, left, right)

Some suggestions:

Currently starting and releasing touch shifts all touches after it, which makes it hard to determine which touch is which. It would be easier to use if touches remained at their indices and touch list wasn't continuous.
Maybe other than gyroscope and accelerometer also add other sensors? (not sure) (some need to be enabled in chrome://flags)

I will fix the touch list bug. But with the sensors I still want to keep it somewhat scratchy so I think just grabbing the speed of the device will be good

I think you should also add things like swiping your finger(up, down, left, right)

And for these I will add swipe speed and direction

Some suggestions:

Currently starting and releasing touch shifts all touches after it, which makes it hard to determine which touch is which. It would be easier to use if touches remained at their indices and touch list wasn't continuous.
Maybe other than gyroscope and accelerometer also add other sensors? (not sure) (some need to be enabled in chrome://flags)

Ok I fixed the touches id thing.

The example file provided elsewhere did not work on this Android phone in Chrome/Brave
https://user-images.githubusercontent.com/33787854/236957544-e699917a-c7d9-4526-a2c7-fb79347aa027.mp4

Would it make sense for multitouch to be its own extension? Supposedly that's how another Scratch mod did theirs

give me a second I will check again.

The example file provided elsewhere did not work on this Android phone in Chrome/Brave
screen-20230508-181714.2.mp4

It was a mistake with the project's code I think I fixed it
https://drive.google.com/file/d/1x-gH34l-Mvk8NbbJpzFag2mN1Prv0yEn/view?usp=sharing

Pain

Pain 5 is just grammer

Fixed errors with the possibility to put anything into the effects.

I'm finished for now I'm going to work in pen+

I tried my best to resolve the conflicts but I can't figure it out. I don't use github that much.

do not worry about index.ejs merge conflicts. I resolve those at merge time

do not worry about index.ejs merge conflicts. I resolve those at merge time

Thanks man.

Thanks garbo for refactoring alot of stuff!

status: the speech recognition blocks are the last thing that I still need to think about

@GarboMuffin The clipboard blocks should probably ask for permission. You can block clipboard access with the browser if you want, but it'd also be nice to have a popup in TurboWarp like the one before fetching from URLs.

should probably do the same with speech recording too


generated unique ID for devices based on various fields

Is your feature request related to a problem? Please describe.
This is in relation to unique device IDs. There is a growing need to have generated IDs for various entities to make it easy for various users to easily find specific records. Current unique IDs are not yet addressing the needs of all stakeholders.
Describe the solution you'd like
A unique ID that serves the purpose for all users (data scientists, frontend engineers)
Describe alternatives you've considered

"calc(nodeReading=ANQ16PZJ|55055)"
"channelID|deviceName|generation"
inspiration: https://api-guide.clarity.io/

Additional context
An effort to deal with the topic of naming conventions and etc.
There was a concern about the usage of uniques IDs in case we switch DB systems.

I guess we now need to automatically generate the generation count of the device---as another feature request perhaps?


python310Packages.angr: 9.2.51 -> 9.2.52

Description of changes
Bump angr stack to 9.2.52

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] 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
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.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.

Result of nixpkgs-review pr 233756 run on x86_64-linux 1

16 packages built:

python310Packages.ailment
python310Packages.angr
python310Packages.angrcli
python310Packages.angrop
python310Packages.archinfo
python310Packages.claripy
python310Packages.cle
python310Packages.pyvex
python311Packages.ailment
python311Packages.angr
python311Packages.angrcli
python311Packages.angrop
python311Packages.archinfo
python311Packages.claripy
python311Packages.cle
python311Packages.pyvex


Git pre-push hook to lint --fix the project

Description
As a developer using TresJS ...
Problem
I forget to lint --fix before pushing. Others do too. This leads to messier commit histories, noisier diffs, and wasted time.
Suggested solution
Add a client-side pre-push git hook to lint --fix the project and abort the push if errors exist.
By default, the hook would run lint --fix during a push, before any objects have been transferred.
If there are no linter errors after running lint --fix, it would:

continue the push

If there are unfixable-by-the-linter errors, it would:

abort the push
report the errors (or filenames with errors) and instruct the user to fix them
give the user instructions for bypassing the linter step and pushing despite errors

Advantages

Reduce the number of PRs that fail the CI lint step
Reduce the amount of diff "noise" due to chore(lint): fix linter errors
Reduce mental load when pushing – no need to remember to lint

Disadvantages

Some new contributors might be turned away. E.g. maybe the linter fails and they can't figure out the next step.
If linter errors make it into main, everyone's git push based on the branch will initially fail.
pnpm lint --fix takes a while to run.

Alternative
Do nothing. Keep the project as-is.
Additional context
The project runs a linter as a CI step and fails unlinted PRs already.
Validations

[X] I agree to follow this project's Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.

Sounds good, I'm planning to refactor @tresjs/eslint-config to extend https://github.com/antfu/eslint-config flat config and using ESLint Stylistic. I did it with my personal eslint config last week to test it and it works fine.

Here is the task https://github.com/Tresjs/configs/issues/4

Hi @damienmontastier Antfu's config extends the eslint vue rules with some opinionated rules https://github.com/antfu/eslint-config/blob/main/src/configs/vue.ts
You can check the tres eslint config here https://github.com/Tresjs/eslint-config

Hey @alvarosabu !

I've got a working solution. It uses the husky plugin. Is that ok with you?
Is this something we want to eventually add to other projects in the ecosystem? If so, I'll start with Cientos as it's where I'm working right now.

Hi, @andretchen0 sounds good, so the pre-commit of husky will lint fix then?

Hi, @andretchen0 sounds good, so the pre-commit of husky will lint fix then?

Yeah.
Husky is a plugin that makes git hook configuration a bit more straightforward.
The usual git commit, push, etc. commands won't change. They'll trigger a git hook configured by husky.

Pushed to Cientos:
https://github.com/Tresjs/cientos/compare/chore/git-pre-push-lint?expand=1

Closing here on TresJS as there's now a PR on Cientos. Continuing the discussion there.


Message: Add "from" name

Message: Add "from" name ✍

This update adds a "from" name to the Message component, if the theme is
set to embed.
This update also removes the min-width for embed themed Messages.

Coverage remained the same at 100.0% when pulling 8f04857672d3a0e033e6bf759b07c4f10efa5b2b on message-embed-from-name into 3f8a8432999a820186381e5a0811c1d011f4a03a on master.


chore(package): update eslint-plugin-jsx-a11y to version 6.0.2

Closes #258

Codecov Report

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

@@          Coverage Diff          @@
##           master   #271   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files         133    133
  Lines        3019   3019
  Branches      652    652
=====================================
  Hits         3019   3019

Continue to review full report at Codecov.

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


Revert "Fixing default encoding for seed in generating Ed25519 keypair"

Reverts bigchaindb/cryptoconditions#119
Will push in the exception handler fixes and create a new PR

Codecov Report

Merging #120 into master will not change coverage.
The diff coverage is 0%.

@@          Coverage Diff          @@
##           master   #120   +/-   ##
=====================================
  Coverage      89%    89%
=====================================
  Files          15     15
  Lines         828    828
=====================================
  Hits          737    737
  Misses         91     91

@excerebrose  Maybe add a unit test for the case of using a seed. It will automatically be run on every pull request.


Fat arrow async function looses the this

I'm converting babel project to TypeScript, one of the issues is how TS deals with this.
Edit I can also confirm that this works also with Chrome and target es2015. So the bug is in TypeScript's es5 transpiler __generator thingie.
Edit Problem begins in here: https://gist.github.com/Ciantic/b3c7d68cd2fd77964492cdd8243fc870#file-asynctest-js-L50 it redefines _this as empty!
This prints "hello world" with babel, but not with typescript transpiler, the this is not defined.
Cloneable gist contains also the javascript produced by TS.
class MyComponent {
    public text = "hello world";
    say = () => {
        console.log(this.text);
    }
    onChange = async () => {
        return new Promise(() => {
            this.say();
        });
    }
    render() {
        return { onChange : this.onChange }
    }
}
let a = new MyComponent();
a.render().onChange();

tsconfig.json
{
    "compilerOptions": {
        "moduleResolution": "node",
        "module": "commonjs",
        "target": "es5",
        "lib": [
            "es2015",
            "es6",
            "dom"
        ]
    }
}

What version of TypeScript are you using?  Versions prior to 2.1 do not support async/await when targeting ES5.
I re-wrote it roughly (minus dealing with the async, in ES2015) and it does produce hello world in the console:
class MyComponent {
    constructor () {
		this.text = "hello world";
		this.say = () => {
			console.log(this.text);
		}
		this.onChange = () => {
		    return new Promise(() => {
				this.say();
			})
		}
	}

    render() {
        return { onChange : this.onChange }
    }
}
let a = new MyComponent();
a.render().onChange();

@kitsonk typescript@next, the issue is with async of course.

I suspect the TypeScript core team will be interested in the actual version, as @next published daily and might help them trace down if it is a regression or an omission.

Version 2.1.0-dev.20160921
You can plainly see the error in output:
class MyComponent {
    text = "hello world";
    say = () => {
        console.log(this.text);
    }
    onTest = () => {
        return () => {
            this.say();
        }
    }
    onChange = async () => {
        return new Promise(() => {
            this.say();
        });
    }
}
let a = new MyComponent();

transpiles to

var MyComponent = (function () {
    function MyComponent() {
        var _this = this;
        this.text = "hello world";
        this.say = function () {
            console.log(_this.text);
        };
        this.onTest = function () {
            return function () {
                _this.say();
            };
        };
        this.onChange = function () { return __awaiter(_this, void 0, void 0, function () {
            _this = this;
            return __generator(this, function (_a) {
                return [2 /*return*/, new Promise(function () {
                        _this.say();
                    })];
            });
        }); var _this; }; // <-- THIS ROW CAUSES THE ERROR
    }
    return MyComponent;
}());
var a = new MyComponent();


Panic when returning an ast() with accidental token as name

Small reproducible example:
ast_print(HelloWorld)

HelloWorld : @{
  'Hello' _ 'World' ast('hello')
}

tokay hello.tok -- "Hello World"

thread 'main' panicked at 'called `Option::unwrap()` on a `None` value'

Hello @scolsen,
thank you for filing this issue!
The problem of this issue is both a bug, which was fixed by 48b60c1, but there is also a use error:
ast('hello')is a function call where the first parameter is a match token that matches the string hello in the input. The wanted behavior, which also fixes above program is to turn the parameter into a string, with double quotation marks: ast("hello").
This is the corrected version of your program:
ast_print(HelloWorld)

HelloWorld : @{
  'Hello' _ 'World' ast("hello")
}


Add support for UAP v10.0.10240

This is a fix for #3874.
I think it's right, but I've not used it to build anything which uses the UAP version in question (or any other UAP version for that matter). I have however used it to build a project which uses a Nuget package which declares a dependency for this UAP version, and it prevents it from reporting incorrect errors and warnings (i.e. it fixes the bug described by the issue mentioned above).

can you please take a look at the red build? thanks

It timed out - but I guess you worked that out given that you've closed and re-opened the PR :-)

thanks. this is released in alpha and stable channel


[DOC-300] Add basic info about LDAP, add some manual search terms

[DOC-300]
Also update the in-page headings to use simple second-person present
Previews
https://deploy-preview-14832--cockroachdb-docs.netlify.app/docs/v22.1/gssapi_authentication
Testing

[x] Local build
[x] Link check
[x] Spell check

Done. I'll go ahead and merge this when the build finishes so it's in place before we cut the new version tomorrow.


⚠ Bofrost.be has degraded performance

In 572a75d, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 979 ms

Resolved: Bofrost.be performance has improved in 4d71606 after 6 minutes.


Prevent crash when adding the same image twice

Steps to reproduce:

Add same image twice using the photoroll
App crashes

We get {"status":"status not ok","error":"This picture has already been sent.","imgid":"-3"} and then kaboom

Yes it was @tinapleez
Thanks for your eagle eye, and sorry for the delay. Closing this one 👌


Fixing spelling, setup config, added unit testings

Testing Pipeline

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-communication-callautomation


Tenant aware storage path in configuration file.

TL;DR; Is it possible to have tenant aware storage paths in configuration file?
Problem: Integration with Laravel Scout TNTSearch Driver
TNT Search is a full-text search driver for laravel that extends laravel's first party search driver: Laravel Scout.
It basically creates .index file in filesystem based on its configuration option like this:
'tntsearch' => [
    'storage'  => storage_path(),
    'asYouType' => true
]

So whenever it creates a new index file, It goes in laravel\storage\users.index.
Instead of laravel\storage\tenant46a4edef-7593-4a0d-961c-403473ea5117\users.index.
Can someone please help on how can i provide scout a dynamic tenant aware storage path?

I think its possible by making use of Tenancy Bootstrappers.

Created bootstrapper in App\TenancyBootstrappers\TntSearchTenancyBootstrapper

class TntSearchTenancyBootstrapper implements TenancyBootstrapper
{
    public function start(Tenant $tenant)
    {
        config(['scout.tntsearch.storage' => storage_path() ]);
    }

    public function end()
    {
        config(['scout.tntsearch.storage' => storage_path() ]);
    }
}

It will switch out the default storage path set by NonTenantAware part of our application.

Register the bootstrapper in config/tenancy file

'bootstrappers' => [
    'scout' => App\TenancyBootstrappers\TntSearchTenancyBootstrapper::class,
]

Yeah, for this stuff I generally tell people to use event hooks & the bootstrapping event, since that doesn't require a custom class, but using a dedicated bootstrapper is cleaner in this case.

@izshreyansh i tried this solution without any luck. error: unable to open database file.

Was able to get this working with the following. First by ensuring to implement the proper TenancyBootstraper interface (I'm using tenancy 3.x, so I think the above may have been for an older version), and by ensuring the directory exists.
<?php

namespace App\TenancyBootstrappers;

use Stancl\Tenancy\Contracts\TenancyBootstrapper;
use Stancl\Tenancy\Contracts\Tenant;

class TntSearchTenancyBootstrapper implements TenancyBootstrapper
{
    public function bootstrap(Tenant $tenant)
    {
        // looks something like /storage/tenant12e234-234e-48ae-957c-19813274593def
        $storagePath = storage_path();

        if(!is_dir($storagePath)) {
            mkdir($storagePath, 755, true);
        }

        config(['scout.tntsearch.storage' => $storagePath]);
    }

    public function revert()
    {
        config(['scout.tntsearch.storage' => storage_path()]);
    }
}

Then for config/tenancy.php:
//...
'bootstrappers' => [
    //...
    App\TenancyBootstrappers\TntSearchTenancyBootstrapper::class,
],
//...

Creating the above, and then importing my scout models via command worked:
php artisan tenants:run scout:import --argument="model=App\\Models\\Tenant\\Taxonomy"


[jumbo] Add begin()/end() to Slice.

This allows this type to meet the requirements of e.g. std::ranges::range, which is necessary for it to work with the std::span range constructor, or the "non-legacy" constructor for Chromium's base::span.
Bug: none
(cherry picked from commit 2cc36eb56668306c64fc611fb7ad63ecf0b20379)

ACK be4dfc94b3a4355e15c09023ee41140e5e07e6f4
Verified it's a cherry-pick of https://github.com/google/leveldb/commit/2cc36eb56668306c64fc611fb7ad63ecf0b20379


update url to point to the most recent documentation tag i.e. stable

This will point to the stable branch on readthedocs.
Stable branch = most recent documentation tag

built at https://snoopycrimecop.github.io/www.openmicroscopy.org/docs/


Problew with CR Flow without Output

Describe the bug:
When we create Output CR before Flow CR, or create Output with wrong secret mapping (example in log bellow) then create Flow with OutputRefs on that Output. Operator reconcile stuck on that "wrong" Flow-noOutput  resources and not reconcile following resources created after that.
Expected behaviour:
Operator ignore Flow CR without existing Output (ClusterOutput) CR
Steps to reproduce the bug:
just apply
Additional context:
Add any other context about the problem here.
Environment details:

Kubernetes version (e.g. v1.15.2):v1.18.4
Cloud-provider/provisioner (e.g. AKS, GKE, EKS, PKE etc): baremetal
logging-operator version (e.g. 2.1.1):  3.7.0
Install method (e.g. helm or static manifests): helm
Logs from the misbehaving component (and any other relevant logs):

{"level":"error","ts":1604577478.4901886,"logger":"controller","msg":"Reconciler error","reconcilerGroup":"logging.banzaicloud.io","reconcilerKind":"Logging","controller":"logging","name":"cluster-logging","namespace":"","error":"failed to create model: failed to create configured output \"splunk-output\": failed to load secret for field hec_token: failed to get kubernetes secret ft7-bpm:splunk-token: Secret \"splunk-token\" not found","errorVerbose":"Secret \"splunk-token\" not found\nfailed to get kubernetes secret ft7-bpm:splunk-token\ngithub.com/banzaicloud/operator-tools/pkg/secret.(*secretLoader).Load\n\t/go/pkg/mod/github.com/banzaicloud/operator-tools@v0.15.0/pkg/secret/secret.go:93\ngithub.com/banzaicloud/logging-operator/pkg/sdk/model/types.(*StructToStringMapper).fillMap\n\t/workspace/pkg/sdk/model/types/stringmaps.go:118\ngithub.com/banzaicloud/logging-operator/pkg/sdk/model/types.(*StructToStringMapper).StringsMap\n\t/workspace/pkg/sdk/model/types/stringmaps.go:55\ngithub.com/banzaicloud/logging-operator/pkg/sdk/model/output.(*SplunkHecOutput).ToDirective\n\t/workspace/pkg/sdk/model/output/splunk_hec.go:140\ngithub.com/banzaicloud/logging-operator/pkg/sdk/plugins.CreateOutput\n\t/workspace/pkg/sdk/plugins/plugin.go:44\ngithub.com/banzaicloud/logging-operator/pkg/resources/model.(*LoggingResources).FlowFromFlow\n\t/workspace/pkg/resources/model/system.go:229\ngithub.com/banzaicloud/logging-operator/pkg/resources/model.(*LoggingResources).CreateModel\n\t/workspace/pkg/resources/model/system.go:83\ngithub.com/banzaicloud/logging-operator/controllers.(*LoggingReconciler).clusterConfiguration\n\t/workspace/controllers/logging_controller.go:143\ngithub.com/banzaicloud/logging-operator/controllers.(*LoggingReconciler).Reconcile\n\t/workspace/controllers/logging_controller.go:95\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:235\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:209\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:188\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\t/go/pkg/mod/k8s.io/apimachinery@v0.19.2/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\t/go/pkg/mod/k8s.io/apimachinery@v0.19.2/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\t/go/pkg/mod/k8s.io/apimachinery@v0.19.2/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.Until\n\t/go/pkg/mod/k8s.io/apimachinery@v0.19.2/pkg/util/wait/wait.go:90\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1357\nfailed to load secret for field hec_token\nfailed to create configured output \"splunk-output\"\nfailed to create model","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\t/go/pkg/mod/github.com/go-logr/zapr@v0.2.0/zapr.go:132\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:237\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:209\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.6.2/pkg/internal/controller/controller.go:188\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\t/go/pkg/mod/k8s.io/apimachinery@v0.19.2/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\t/go/pkg/mod/k8s.io/apimachinery@v0.19.2/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\t/go/pkg/mod/k8s.io/apimachinery@v0.19.2/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.Until\n\t/go/pkg/mod/k8s.io/apimachinery@v0.19.2/pkg/util/wait/wait.go:90"}

/kind bug

up

Ok.Do not ignore flows without outputs looks reasonable.  But it's first first part of a problem. Why this case (flow without output) broke reconcile loop and operator starts ignore another (applied after) cr,s? It's looks like a fifo pipe, but imo operator should continue reconcile correct cr and still generate fluend configs

@RaSerge can you please elaborate more on what happens exactly?
So are you applying the resources from scratch or on top of an existing setup?
Does the operator able to create a new configcheck pod?
If you fix the error does the operator recover from it?
Unfortunately if an error exists in the system the operator cannot decide what would be the correct action to take. If we leave out a defective flow/output from the config fluentd won't buffer messages for that.
My best idea here is that we may introduce configuration flags so that you can decide what kind of errors you may wan't to tolerate.
Anyways I would recommend setting up a staging area where you can first try out changes.

@pepov

So are you applying the resources from scratch or on top of an existing setup?
We had initial logging-operator deployment controlled by ops team. Developer teams only deploys flows and outputs cr in their namespaces to configure logs collecting.

Does the operator able to create a new configcheck pod?
operator don't create new configcheck pod by design - if they found failed configcheck pod or running configcheck pod it don't start another checks.

If you fix the error does the operator recover from it?
yes. but we need to manually found this bad resources and delete or fix them. sometimes (i cannot reproduce this with 100% probability) operator just stop do reconcile loop until we restart operator pod.

Idea with configuration flags looks reasonable. Can i help with testing?

we are very interested in this implementation for a multitenant environment, where people can do mistake and impact other users.
We can help with testing the solution.

We had a discussion about this issue. There are 2 things that we can do in short term.

Export metrics about the resources state. Based on this an administrator can have an overview of the state of the logging subsystem. Based on these metrics it is easy to create alerts if there are faulty resources in them.logging_resource_state{name="s3",namespace="logging",status="active", kind="ClusterFlow"} = 1
logging_resource_state{name="test",namespace="default",status="inactive", kind="Flow"} = 1

The configuration that @pepov mentioned. Unfortunately, it will be limited that if you have a valid but faulty configuration (configcheck fails) it is hard to determine which resource introduced the problem. But we can add a property like SkipInvalidResoruce so orphan resources won't interfere with other resources. This won't solve everything but a step forward.

Later it is possible to do some "smart" configuration checking by eliminating flows from the configuration but that raises a lot of questions and complexities. I hope that the previous 2 items will help to make the user experience better.

I am currently having the exact same problem raised in this issue and the suggestion by @tarokkk seems to be a sufficient solution 👍
Especially, the option like SkipInvalidResource is totally what I need since we want to prevent other users from failing to apply new resources due to the fault of one user.

Although skipInvalidResources set true, only controller skips invalid resources in reconcile logic, but fluentd tries to update the config using invalid resources. It causes config-check error and no update for fluentd config.
I don't know it is expected behavior, but I think invalid resources will also exclude when making an updated config.

I see the same behavior @seongpyoHong. I guess RegisterFlow has to be skipped if FlowForFlow returns an error (in the case SkipInvalidResources is enabled) here: https://github.com/banzaicloud/logging-operator/blob/4fb3eec0623c9a9780d451d7d01f29004a699e8c/pkg/resources/model/system.go#L82
Wdyt @ahma @siliconbrain


plugins need to support flutter 0.6.0(dart 2.1.0)

some plugins (path_provider etc) can not use in 0.6.0

The current Dart SDK version is 2.1.0-dev.0.0.flutter-be6309690f.
Because test depends on path_provider >=0.1.1 <0.4.0 which requires SDK version <2.0.0, version solving failed.
pub get failed (1)

The latest version of path_provider (0.4.1) supports any dart SDk < 3.0.

Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now. Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.


Problems with {{ ASSET_PATH }} in Jekyll 3.1.1

Please accept my apologies in advance if this issue is inappropriate, or if it's a duplicate.
Since GitHub Pages updated to run on Jekyll 3.0 February 1, 2016, {{ ASSET_PATH }} no longer includes the theme on my site.
As an example, this:
<link href="{{ ASSET_PATH }}/bootstrap/css/bootstrap.min.css" rel="stylesheet">

generates this:
<link href="/assets/themes//bootstrap/css/bootstrap.min.css" rel="stylesheet">

(notice the double slashes between themes and bootstrap) while I would have expected it to generate this:
<link href="/assets/themes/ploeh/bootstrap/css/bootstrap.min.css" rel="stylesheet">

which Jekyll 2 did.
I'm neither a Jekyll expert nor a Ruby programmer, but AFAICT, ASSET_PATH is built in JB/Setup. Here, it uses {{ page.theme.name }}, but as far as I can tell, this expression evaluates to nothing (or the empty string).
My _layout files essentially look like the following, so I can't figure out what I'm doing wrong:
default.hml
---
theme :
  name : ploeh
---
{% include JB/setup %}
{% include themes/ploeh/default.html %}

page.html
theme :
  name : ploeh
layout: default
---
{% include JB/setup %}
{% include themes/ploeh/page.html %}

post.html
theme :
  name : ploeh
layout: default
---
{% include JB/setup %}
{% include themes/ploeh/post.html %}

My entire site's source code is publicly available, if that's any help.
What am I doing wrong, and what can I do to correct the problem?

I may have found the problem. In JB/Setup the script uses {{ page.theme.name }}, but it seems that in Jekyll 3, it has to be {{ layout.theme.name }}.
Making this change seems to solve my problem.
Is this expected?

@ploeh In Jekyll, yes. See: http://jekyllrb.com/docs/upgrading/2-to-3/#layout-metadata

It seems the same issue as https://github.com/plusjade/jekyll-bootstrap/issues/290 .

Perhaps. It fixes issues with posts, but not with other pages.
Right now I'm resorting to the hack setting ASSET_PATH in _config.yml.

@ploeh I'm guessing the issue with the other pages might be that they're no longer generated with extensions. So "/archive.html" is now "/archive/", "/tags.html" is now "/tags/", etc ....
I had to make that tweak on my default.html  header navigation links under _includes/themes/mytheme/.
I'll make sure there's not already one, then issue a PR later this week.

Add to the list the following edit in _config.yml ...
-  archive_path: /archive.html
-  categories_path : /categories.html
-  tags_path : /tags.html
+  archive_path: /archive/
+  categories_path : /categories/
+  tags_path : /tags/

No, that doesn't help.
Or rather, it looks fine on my machine, but when hosted by GitHub Pages, all styling is gone.

Hmmm. Could be the permalink?
-permalink: /:categories/:year/:month/:day/:title
+permalink: /:categories/:year/:month/:day/:title/

(Note the trailing /.)
Guessing based on: 1) I made that edit in my _config.yml earlier, and 2) the jekyll 3.x upgrade docs mention it.
If you don't mind, give that a go and let me know.

Never mind. The symptom for that would be a 404 error. Still probably needs to be tweaked, though.

Thank you, but it's not that either...

Ok... so upgrade broke my website too (http://www.ajaygautam.com)
Filed details at https://talk.jekyllrb.com/t/3-x-upgrade-issues/1965 and someone redirected me here.
changing {{ page.theme.name }} to {{ layout.theme.name }} fixes everything except my home page!
Any idea what may be wrong?
Thanks
Ajay

just saw ploeh's post above. Updated ASSET_PATH in _config.yml - that fixed the issue, but its a very icky solution/workaround.
If anyone knows of a better solution, please post here.
Thanks

Using both https://github.com/plusjade/jekyll-bootstrap/issues/295#issuecomment-178869307 and changing the ASSET_PATH fixed my website. Thanks!

I also have this problem and have updated to Jekyll 3 but am wondering how to update jekyll-bootstrap? I have a blog running on 0.2.13 but would like to update it and can't find anything in the docs.

I also have this problem and have updated to Jekyll 3 but am wondering how to update jekyll-bootstrap?

I simply* pulled down the changes from the the Jekyll Bootstrap remote and merged them. I don't know how your blog is set up, but mine is configured like this:
$ git remote --verbose
jekyll-bootstrap        https://github.com/plusjade/jekyll-bootstrap.git (fetch)
jekyll-bootstrap        https://github.com/plusjade/jekyll-bootstrap.git (push)
origin  https://github.com/ploeh/ploeh.github.com.git (fetch)
origin  https://github.com/ploeh/ploeh.github.com.git (push)

*Actually, it wasn't that simple, because I had to deal with a handful of merge conflicts, but I managed...


[Feature Request] Support multiple column sort on table component natively

Existing Component
Yes
Component Name
el-table
Description
The el-table component supports single column sort by default, which is already awesome. However, under some circumstances, we need to sort the table data by multiple columns when setting column's sort attribute to be 'custom' (to sort in back-end). Though it's possible by writing code, it seems more elegant if it's supported natively by the library itself.

I agree with this feature request. We're porting most of our applications over to Vue.js from AngularJS, and the angular-ui grid (http://ui-grid.info/) we're currently using supports multi-column sorting natively.  Having this feature supported by el-table natively would be a huge help to our users because without it they would lose functionality they currently have today.

duplicated #14398


Add --clipboard option to save recognized text directly to clipboard

Your Feature Request
Context
Tesseract is a powerful OCR engine, but currently, it lacks the feature to save the recognized text to the clipboard directly. Users often have to save the text to a file and manually copy it into the clipboard, which could be cumbersome when working on tasks requiring frequent OCR operations.
Feature Request
I propose the addition of a --clipboard command-line option. When this option is used, Tesseract would directly save the recognized text to the clipboard instead of (or in addition to) saving it to a file.
Example
tesseract imagename outputbase --clipboard
or
tesseract imagename --clipboard

Benefits
Streamlining Operations: This will make the OCR process more efficient for tasks that require the result to be immediately used in other applications.
Ease of Use: Users won't have to manually copy text to the clipboard or write additional scripts to accomplish this task.
Cross-Platform: Ideally, this feature would be supported on all platforms where Tesseract can run.
Additional Context
This feature could be implemented using various clipboard libraries that support multiple platforms to ensure cross-compatibility.
An alternative to consider could be to allow the --clipboard option to work in conjunction with the output file option, allowing both to be specified if the user wishes to save the output in a file and clipboard simultaneously.
Conclusion
Adding the --clipboard option could make Tesseract more flexible and user-friendly, thereby increasing its adoption for a broader range of applications.

Tesseract already supports writing to STDOUT (tesseract IMAGE -). So it's possible to use software which writes STDIN to the clipboard. Here are some examples:
# Windows (untested)
tesseract IMAGE - | clip

# Linux (untested)
tesseract IMAGE - | xsel -i -b
tesseract IMAGE - | xclip -selection clipboard
tesseract IMAGE - | xclip -sel c

# macOS (tested)
tesseract IMAGE - | pbcopy

Implementing this feature is possible if we can use some portable code (it must work on Linux, macOS and Windows) with a compatible license. Is there such code available?

Do we really need to implement that functionality in Tesseract? Aren't the existing possibilities (see above) sufficient?

👋 Hi @stweil,
Firstly, thanks for maintaining this invaluable project! The work you and the other contributors do makes Tesseract an indispensable tool in the OCR space.
After reading the feature request for a --clipboard option and your subsequent comments, I have to say I agree with your perspective for several reasons:
1. UNIX Philosophy
As a command-line tool, Tesseract aligns well with the UNIX philosophy of "Do one thing and do it well." The core function of Tesseract is OCR, and it does this exceptionally well. Additional functionalities like clipboard management could be handled by other specialized utilities (clip, xsel, xclip, pbcopy, etc.), keeping Tesseract focused and efficient.
2. Existing Solutions
As you rightly pointed out, the existing capability to pipe STDOUT to clipboard utilities already provides a flexible, powerful way to achieve the proposed feature's end goal. Implementing a --clipboard option might be redundant and could dilute the tool's focus.
# Windows
tesseract IMAGE - | clip

# Linux
tesseract IMAGE - | xsel -i -b

# macOS
tesseract IMAGE - | pbcopy

3. Code Complexity
Introducing a --clipboard option would necessitate adding new dependencies and libraries, which could result in compatibility issues and increased maintenance overhead. Keeping the codebase clean and focused lowers the barrier to entry for new contributors and makes the project easier to manage in the long term.
4. Cross-Platform Challenges
Clipboard management across different OS platforms is non-trivial. Even if a portable, license-compatible library is found, it adds another layer of complexity that could affect Tesseract's core functionality.
5. Community Contributions
For those who require a --clipboard option, it would be relatively simple to create a wrapper script around Tesseract that automatically pipes its output to the clipboard. This keeps the core codebase lean while allowing for such functionalities for those needing it.
In conclusion, Tesseract should focus on its core strength of providing robust, reliable OCR while leaving auxiliary tasks like clipboard management to other utilities or user-implemented scripts.
Thank you for considering my thoughts, and keep up the great work!


Roman numeral builtins

Convert to roman numeral, convert from roman numeral

Maybe MDCLXVI and [1000,500,100,50,10,5,1] as well


Level Access agrees to acquire UserWay

"When you buy an overlay company, you become an overlay company."
https://www.businesswire.com/news/home/20231230727471/en/Level-Access-Agrees-to-Acquire-UserWay

FWIW, I also opened a PR:
https://github.com/karlgroves/overlayfactsheet/pull/1128
But I closed it because the page lists product names, not specific vendors (though often the vendor name is the product name). I figured it was better for me to close it and spare the admin hassle of making folks debate it when, as far as I am concerned, it is mooted by the scope of the page.

Interesting point.
Another possibility, delete "Level Access" and add "(acquired by Level Access)" next to UserWay. Since, as you said, for most the product = the company, except for this one.

I did not say "most".
The problem comes when smaller agencies white label existing overlay products. That can be management hassle and I certainly am not interested in doing so.
I think a broader community discussion would be warranted for that change (as in, is outside the decision of just the project maintainer).


delete FNK Token Info

Hello, this is from FUNKEYpay Company.
We asked u to delete our old FNK but it still present on imtoken application.
So please let us know how to delete it, i just tried to delete old FNK token and pull the request.
Our company got so many compliance because of old FNK so please consider it once again and if not please let us know how to request this issue.
Our coin contract address is 0xee478b1797fe3e9922422b3adb72493ae8e81488
We added new FNK token on imtoken, and we send same amount of token to each holders. So we and holders also don't need old FNK(0xee478b1797fe3e9922422b3adb72493ae8e81488) anymore.
So please, for holders and for us. Delete merge this requests or delete it as admin.

我想删除FNK。我们注册了一个新的FNK，不想混淆我们的用户，所以我们要求删除。

公告 | imToken 代币收录、重名及修改名称等问题说明
https://help-center.token.im/hc/article/360007261813


Convert TMLanguage to YAML

Closes https://github.com/AdguardTeam/VscodeAdblockSyntax/issues/61
Partially solve https://github.com/AdguardTeam/VscodeAdblockSyntax/issues/62

Changes:

Syntax converted to YAML, GitHub Linguist can parse it directly
The VSCode extension cannot handle YAML syntax, so the build converts it to PList
The testing option was created for TMLanguage, I also created an example test (writing the rest of the tests is not the scope of this PR)
Static test files/project are moved to test/static

@ameshkov FYI: The size of the PR is large mainly because of the syntax conversion / yarn lock

Since there're tests now, it makes sense to add a gh action that runs them

@ameshkov Of course, soon I open another PR that closes this issue: https://github.com/AdguardTeam/VscodeAdblockSyntax/issues/67


Typo in name

The original name is opentimestamps from https://opentimestamps.org/

Thanks! That's actually intentional. This package doesn't include the CLI or any means to timestamp multiple files at once (it doesn't dictate files at all, just a hash). Hence it being singular rather than plural. Would it make sense to add this to the README?

I would probably suggest to rename to something different more appropriate, if not possible probably also a disclaimer in the README is a good idea.
When I found this project I was thinking it was the official cli from opentimestamps..
Btw implementation idea, I'm using it.

👊   Renamed it and scoped it to the organization, to be more clear. Thanks for the feedback!


Newsletter 18

Feel free to suggest sections!
If you want to help writing the newsletter:

Read CONTRIBUTING.md.
Grab some of the "🆓 free" sections by leaving a comment like "I'd like to work on {section_name_1} and {section_name_2}".
Mentions in brackets (like "🆓 free (@ozkriff?)") are just an invitation to write the corresponding section if you want, but anyone is free to take it.
Write a short overview:

Use provided links as a starting point.
Try to maintain a consistent style with the rest of the newsletter and run markdownlint, please.
Insert line breaks (softbreak) at 80 chars, please.
DM me on Discord or Telegram if there're any questions.

Send a PR to the source branch (example: #336)

Mention this issue in your PR's description to link it all together.

The deadline for all section PRs is 2021.02.03.

⚠ It was decided to try a shorter and more limited section format: ⚠

Only one image (<300kb) or GIF (<2.5mb) before the text. With an optional caption and a mandatory alt text.

All the (rendered) text should be under 1000 characters (including spaces and punctuation) and under 6 paragraphs (without any subsections, etc).

No bold/italic/etc formatting - only links and one plain list without nesting per section.

Third-person perspective.

80 chars per MD line and no other markdownlint warnings on CI.

Only the following simple templates are allowed:

See the templates
For games/apps/libs:
# [Gamename]

![alt text](img)
_optional image label_

[Gamename] ([GitHub], [Discord], [Twitter]) by [@nickname]
is ... {short project description in one sentence}.

{An overview of the recent updates with links to more details}.

_Discussions: [/r/rust_gamedev](link), [Twiter](link), [etc](link)_

{md links block}

For articles/videos/etc:
# [Articlename]

![alt text](img)
_optional image label_

[@nickname] published an [article] about ...
{overview what the resource is about}.

_Discussions: [/r/rust_gamedev](link), [Twiter](link), [etc](link)_

{md links block}

CONTRIBUTING.md isn't updated for this yet.
Current Structure & Status
(I'll try to keep this updated)

[x] Meetup (1, 2) - ✔ done by @AngelOnFira in #490
[x] Rust GameDev Podcast 5 (1, 2) - ✔ done by @patchfx in #461
[x] Game Updates

[x] Fish Game (1, 2, 3) - ✔ done by @not-fl3 in #478
[x] Station Iapetus (1, 2) - ✔ done by @mrDIMAS in #471
[x] teki (1, 2, 3) - ✔ done by @o2sh in #456
[x] oicana (1, 2) - ✔ done by @NiklasEi in #475
[x] SeniorSKY - ✔ done by @pmathia0 in #466
[x] Flesh - ✔ done by @Im-Oab in #470
[x] Bounty Bros - ✔ done by @zicklag in #473
[x] Stellary 2 - ✔ done by @dezajno in #476
[x] A/B Street (1, 2) - ✔ done by @dabreegster in #469
[x] dwarf.world (1) - ✔ done by @AlexEne in #474
[x] Way of Rhea - ✔ done by @MasonRemaley in #479
[x] Paddlers 0.2 (1) - ✔ done by @jakmeier in #465
[x] Theta Wave - ✔ done by @cdsupina in #480
[x] Harvest Hero - ✔ done by @Bombfuse in #482
[x] Antorum (1) - ✔ done by @Dooskington in #458
[x] Shotcaller (1, 2) - ✔ done by @erlend-sh in #486
[x] Veloren (1) - ✔ done by @AngelOnFira in #489
[x] Zemeroth (1) - ✔ done by @ozkriff in #493

[x] Learning Material Updates

[x] Hands-on-Rust new chapters (1) - ✔ done by @ozkriff in #484
[x] Triangle from Scratch: Win and WASM (1, 2, 3) - ✔ done by @ozkriff in #484
[x] Rust Executable's Icon in Windows (1, 2) - ✔ done by @ozkriff in #484
[x] Exploring WebSocket with Rust and Tide (1) - ✔ done by @pepoviola in #481

[x] Engine Updates

[x] ggez v0.6-rc0 (1) - ✔ done by @icefoxen in #472
[x] Tetra (1) - ✔ done by @17cupsofcoffee in #457
[x] Dotrix v0.7 (1) - ✔ done by @Lowentwickler in #488
[x] rg3d & rusty-editor - ✔ done by @mrDIMAS in #471

[x] Library & Tooling Updates

[x] rkyv v0.3 (1) - ✔ done by @djkoloski in #459
[x] Mun - ✔ done by @Wodann in #483
[x] gamelisp v0.2 (1) - ✔ done by @ozkriff in #492
[x] ldtk-rs - ✔ done by @zicklag in #464
[x] bevy_ldtk - ✔ done by @zicklag in #462
[x] kira v0.4 (1) - ✔ done by @tesselode in #463
[x] Dimforge (1, 2) - ✔ done by @AngelOnFira in #491
[x] gfx/wgpu - ✔ done by @kvark in #468
[x] imgui-rs - ✔ done by @sanbox-irl in #485
[x] egui (1) - ✔ done by @emilk in #477
[x] bevy_egui - ✔ done by @mvlabat in #487
[x] chess-engine (1, 2) - ✔ done by @ozkriff in #492
[x] dcli (1, 2) - ✔ done by @ozkriff in #492
[x] tgjones's Shader Playground (1, 2) - ✔ done by @ozkriff in #492

Final steps:

[x] final review - ✔ done by everyone
[x] publish - ✔ done by @ozkriff
[x] post on /r/rust, /r/rust_gamedv, /r/gamedev, URLO, twitter.com/rust_gamedev - ✔ done by @ozkriff
[x] add comment links - ✔ done by @ozkriff
[ ] add a draft of the 18 newsletter - by @ozkriff

Editors: @ozkriff @17cupsofcoffee @AngelOnFira

I'll pick up the Tetra section after work :+1:

Taking Dotrix 👍

I'd be more than happy to take care of Teki.

I’ll write a bit about rkyv.

I'll take Antorum 💯

I'll take ggez :salt:

I'll write something about Oicana :video_game:

I'll try to write something up on Garden during the week

i'll take kira

I'll write a section about my project (SeniorSKY), per Twitter DM invitation

I'll take A/B Street

I'll do dwarf.world

Hey i'm going to add a section for imgui-rs

The deadline for all section PRs is 2021.02.03.

We might want to add a specific time on that, just to make life easier for editors?  I seem to have a tendency for last-minute submissions and don't want people to tell themselves "this submission is kinda past the deadline but I should just work a bit more and get it in anyway".  Just having a firm cutoff makes life simpler.

I'll write a section about "Stellary 2" (game update)

@tigleym and I will write about Theta Wave https://github.com/amethyst/theta-wave

The deadline for all section PRs is 2021.02.03.

It's time to deal with sections that are still free!
Taking:

Hands-on-Rust new chapters
Triangle from Scratch: Win and WASM
Rust Executable's Icon in Windows

Any volunteers for the last unclaimed sections: "gamelisp", "Dimforge", "chess-engine", "dcli", and "Shader Playground"?

Taking "gamelisp", "chess-engine" and "dcli".

Ping @AngelOnFira @logicsoup @erlend-sh @Lowentwickler @sanbox-irl, how're your WIP sections going? :)

Writing it up as we speak! Well, type

Also taking "Dimforge" & "Shader Playground".
Hope to have a final draft tomorrow morning and release the newsletter somewhere around 15:00 UTC.

Final PR - https://github.com/rust-gamedev/rust-gamedev.github.io/pull/494 - everyone is invited to review :)

:tada: https://rust-gamedev.github.io/posts/newsletter-018 !!
Huge thanks to all contributors and reviewers! :crab::crab::crab:


Request for Pi Pico W

Does it support the Pi Pico W?
Have you tried this one?
If it's not too much trouble, could you execute it for this instance?

Duplicate #125.


"inherits" should not be a one-time operation

The "inherits" option in the configuration file results in the inheritance being written to the named profiles.
For example:
[global]
okta_org_url = https://mycompanyname.okta.com
okta_auth_server = https://mycompanyname.okta.com/oauth2/v1/authorize
gimme_creds_server = appurl
aws_rolename = all
write_aws_creds = True
okta_username =<EMAIL_ADDRESS>resolve_aws_alias = True
include_path = False
preferred_mfa_type = token:software:totp
remember_device = False
aws_default_duration = 3600
output_format = export

[dev-admin]
inherits = global
app_url = https://mycompanyname.okta.com/home/amazon_appstream/abc/xyz
cred_profile = dev-admin

[staging-admin]
inherits = global
app_url = https://mycompanyname.okta.com/home/amazon_appstream/def/xyz
cred_profile = staging-admin

After running gimme-aws-creds --profile staging-admin...
Expected Behavior
The file has not changed.
Current Behavior
The inheritance was permanently expanded.
[global]
okta_org_url = https://mycompanyname.okta.com
okta_auth_server = https://mycompanyname.okta.com/oauth2/v1/authorize
gimme_creds_server = appurl
aws_rolename = all
write_aws_creds = True
okta_username =<EMAIL_ADDRESS>resolve_aws_alias = True
include_path = False
preferred_mfa_type = token:software:totp
remember_device = False
aws_default_duration = 3600
output_format = export

[dev-admin]
inherits = global
app_url = https://mycompanyname.okta.com/home/amazon_appstream/abc/xyz
cred_profile = dev-admin

[staging-admin]
app_url = https://mycompanyname.okta.com/home/amazon_appstream/def/xyz
cred_profile = staging-admin
okta_org_url = https://mycompanyname.okta.com
okta_auth_server = https://mycompanyname.okta.com/oauth2/v1/authorize
gimme_creds_server = appurl
aws_rolename = all
write_aws_creds = True
okta_username =<EMAIL_ADDRESS>resolve_aws_alias = True
include_path = False
preferred_mfa_type = token:software:totp
remember_device = False
aws_default_duration = 3600
output_format = export

Possible Solution
Do not write the in-memory inheritance resolution back to the profile.
Context
Inheritance should be temporary, meaning I keep a static block at the top of the file that all children use. If I need to modify something, I only update the static block. With the current implementation, you have to update every block that has had its inheritance resolved.
Your Environment

Running the latest branch (v2.3.4) and/or master.
Using the docker-style execution.
zsh on OSX Catalina.

Looks like this is a consequence of writing the device token back to the config file, as the resolved inheritance has been added to the conf_dict.


Does not support kubernetes secrets

Here's a simple way to see the issue:

Use the kube-up.sh script to set up kubernetes.
Follow http://kubernetes.io/v1.1/docs/user-guide/secrets/README.html to create a secret and a pod that consumes it.
After creating the pod (and waiting some time for the wheels to spin), use kubectl describe pods/secret-test-pod to list the pod's events.

You will see events like these:
FailedSync   Error syncing pod, skipping: IsLikelyNotMountPoint("/var/lib/kubelet/pods/8c8d900f-992c-11e5-836b-46ca7ac5766f/volumes/kubernetes.io~secret/secret-volume"): file does not exist
FailedMount  Unable to mount volumes for pod "secret-test-pod_default": IsLikelyNotMountPoint("/var/lib/kubelet/pods/8c8d900f-992c-11e5-836b-46ca7ac5766f/volumes/kubernetes.io~secret/secret-volume"): file does not exist

And the pod will never make it out of the "Pending" state.

I looked for upstream issues and found a few that look relevant:

https://github.com/kubernetes/kubernetes/issues/13424
https://github.com/kubernetes/kubernetes/pull/13791
https://github.com/kubernetes/kubernetes/issues/16055
https://github.com/docker/docker/pull/17034

There are others too and it's hard to follow the tangled web of discussions (especially since I'm new to docker), but I think this is not actually supported as of docker 1.9 due to limitations with how mounts are handled. I'd love to be proven wrong, though.

$ docker version
Client:
 Version:      1.9.0
 API version:  1.21
 Go version:   go1.5.1
 Git commit:   76d6bc9
 Built:        Tue Nov  3 21:17:46 UTC 2015
 OS/Arch:      darwin/amd64

Server:
 Version:      1.9.0
 API version:  1.21
 Go version:   go1.4.3
 Git commit:   76d6bc9
 Built:        Tue Nov  3 19:20:09 UTC 2015
 OS/Arch:      linux/amd64

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"0", GitVersion:"v1.0.6", GitCommit:"388061f00f0d9e4d641f9ed4971c775e1654579d", GitTreeState:"clean"}
Server Version: version.Info{Major:"1", Minor:"1", GitVersion:"v1.1.2", GitCommit:"3085895b8a70a3d985e9320a098e74f545546171", GitTreeState:"clean"}

@mkantor You are right, I'm also currently waiting for this to be fixed upstream.
Unfortunately for now I've resorted to using alternative solutions for local development. For example: Kubernetes on CoreOS via Vagrant.

Looks like this merged:
https://github.com/docker/docker/pull/17034
Does that unblock this?
If you're doing kube on coreos on vagrant, do you like that path overall better than docker-machine + docker-compose-kube?

Looks like this merged:
docker/docker#17034
Does that unblock this?

@huggsboson my guess is that Kubernetes will need to make use of this when Docker cuts a release that contains the new feature.
In the mean time, Kubernetes was supposed to have a workaround in kubernetes/kubernetes#17273. However, I'm currently seeing the same problem that is described in kubernetes/kubernetes#18513 when I use the newly-minted hyperkube v1.1.3.
So, unfortunately, I'm still waiting for a solution that works.

If you're doing kube on coreos on vagrant, do you like that path overall better than docker-machine + docker-compose-kube?

I'm partial to a dockerised setup for development because I get very fast Kubernetes setups and tear downs. This is very useful when iterating quickly.

I spent a while playing with kubernetes/kubernetes#19069.  It does, in fact, fix the secrets mounting issue.  Playing with that branch had me using the new hyperkube image.  That image itself spins up a kube-proxy and etcd.  So the only dependencies you'll need to start for yourself at that point are skydns.
Between that and using something similar to:
kubectl config set-cluster docker-machine-default --server=$(docker-machine ip default):443 --certificate-authority=${PWD}/ssl/ca.pem
kubectl config set-credentials vagrant-admin --certificate-authority=${PWD}/ssl/ca.pem --client-key=${PWD}/ssl/admin-key.pem --client-certificate=${PWD}/ssl/admin.pem
kubectl config set-context vagrant --cluster=vagrant --user=vagrant-admin
kubectl config use-context vagrant

from: https://coreos.com/kubernetes/docs/latest/kubernetes-on-vagrant-single.html
We might be able to really slim down the number of moving parts.

Not sure how long it will take for upstream to land.  I may try copying their fix down and submitting a pull request, it's basically:
nsenter --target=1 --mount --wd=. -- ./hyperkube kubelet $@
Then remove --containerized.

@huggsboson thanks for doing this. I've merged your PR.


Flake in rbf_withdrawals_are_rejected

 fedimint-test-all-wasm32-unknown-unknown-ci> 00:00:18 thread 'rbf_withdrawals_are_rejected' panicked at modules/fedimint-wallet-tests/tests/tests.rs:499:5:
 fedimint-test-all-wasm32-unknown-unknown-ci> 00:00:18 assertion `left == right` failed: Balance is 7038000 msat, expected 7256000 msat
fedimint-test-all-wasm32-unknown-unknown-ci> 00:00:18   left: Amount { msats: 7038000 }
fedimint-test-all-wasm32-unknown-unknown-ci> 00:00:18  right: Amount { msats: 7256000 }
fedimint-test-all-wasm32-unknown-unknown-ci> 00:00:18 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

https://github.com/fedimint/fedimint/actions/runs/11423491767/job/31782749548

@bradleystachurski You might have an immediate idea what's going on.

Nothing immediately obvious and this is the first I've seen that error, but I'll see if I can repro locally.

I'm guessing we're lacking some synchronization thing that would make it wait for the whole balance be accounted for? Would explain the flakiness and weird balance.
Maybe we should just wrap in a retry?

Yeah, that's a good hunch. I'll wrap in a retry and we can open a separate issue if it continues to flake.


feat: header privacy toggle, closes LEA-611

Adds the privacy toggle button to the header options and removes the onPress toggle from balances. I also updated the dev console icon to be the PulseIcon shown in designs...

Noticing in the screenshot that the fake news tokens are having a line breaking issue, thats weird

thanks for pointing this out 👁 🦅 !
I think the icon is following more of a logic where the eye is supposed to imagine the "bottom line" that is missing, hence it's taking this into consideration for a more psychological/visual centering.
But I agree that it looks a bit off-center next to the other icons — I've made some adjustments to the icon in the design system, exportable assets should already be updated ✌

@fabric-8  @kyranjamie fixed, thanks for catching!


Generating optimized BERT onnx graph

There was a report that current version failed to generate optimized onnx graph of BERT.
I think it is the version issue. We may have to use older version of huggingface's transformer package

8b81120 handle same issue


[FLINK-6306] [filesystem-connectors] Sink for eventually consistent file systems

https://issues.apache.org/jira/browse/FLINK-6306
This PR introduces a bucketer for eventually consistent file systems such as Amazon S3, guaranteeing exactly once output across failure and concurrent checkpoints (thank you @StephanEwen). I have attempted to keep the api as similar the the BucketingSink as possible including the shared use of writers for specifying output format.
Currently there is documentation in the form of javadoc, once the api is settled I will make another PR with updated documentation.

@tzulitai you took interest in the jira ticket, would you be willing to review this?

This is a very nice addition, thank's a lot for contributing it!
Flink 1.3 is approaching feature freeze and there are a few critical issues that @tzulitai and me are working on. Once we are through with those, we'll take a look at this issue. Please bear with us for a few more days...


Add support for counts

This appears to be a limitation of Rails, in that Post.select(:id, :title).count fails.


column names may not contain the . character anymore

pls add a test

@seut generic functionality is already tested: https://github.com/crate/crate/blob/master/sql/src/test/java/io/crate/analyze/CreateAlterTableStatementAnalyzerTest.java#L640
Will add a tests for the pattern

ack


Optimize unneeded rebuild when pushing overlay/navigator opaque content

Related to: #11655
Currently, there's an optimization performed by Navigator/Overlay such that when a full-screen opaque content is placed above another content, the content behind will stop painting.
It is useful, but at the same time there's an irony:
The act of flagging the previously visible widget tree as no longer needing to be painted forces the entire associated widget tree to rebuild.
From my understanding, this is caused by a change in the depth of the associated widget tree during the transition. This, therefore, cause the widget tree to be deactivated and reactivated for a frame, which calls build/didChangeDependencies on everything.
It is suboptimal, especially considering the widget tree is actually no longer visible.
My theory is that is should be possible to fix this inconvenience by a change on this line https://github.com/flutter/flutter/blob/d345a3b303ce041846ff895eb49a104bef133c4b/packages/flutter/lib/src/widgets/overlay.dart#L461 by changing it from:
_Theatre(
  onstage: Stack(
    fit: StackFit.expand,
    children: onstageChildren.reversed.toList(growable: false),
  ),
  offstage: offstageChildren,
);

to:
_Theatre(
  // somehow make _RenderTheatre fill the gap of the missing Stack
  onstage: onstageChildren.reversed.toList(growable: false),
  offstage: offstageChildren,
);

This should remove the reparenting, which should no longer unnecessarily rebuild the no longer visible widget tree.

This is working as intended. In general, you should assume that all widgets can rebuild at any time, that they don't is mostly just an optimisation.
In particular, routes will rebuild because their navigator state has changed so they might need to update how they draw back buttons and the like.

I fix the "rebuild" problem by adding a key to Overlay build function.
First I add a GlobalKey to OverlayEntry class. For example _key2. This key will be used in TickerMode, the purpose is to give a Key to overlay offstage elements.
class OverlayEntry {

  OverlayState _overlay;
  final GlobalKey<_OverlayEntryState> _key = GlobalKey<_OverlayEntryState>();

  final GlobalKey _key2 = GlobalKey();
}

And the next step is add _key2 to build function.
class OverlayState extends State<Overlay> with TickerProviderStateMixin {
@override
  Widget build(BuildContext context) {
    final List<Widget> onstageChildren = <Widget>[];
    final List<Widget> offstageChildren = <Widget>[];
    bool onstage = true;
    print("overlay build");
    for (int i = _entries.length - 1; i >= 0; i -= 1) {

      final OverlayEntry entry = _entries[i];
      if (onstage) {
        print("onstage ${entry._key}");
        onstageChildren.add(_OverlayEntry(entry));
        if (entry.opaque)
          onstage = false;
      } else if (entry.maintainState) {
        offstageChildren.add(TickerMode(key: entry._key2, enabled: false, child: _OverlayEntry(entry)));
        print("offstage ${entry._key}");
      } else {
        print("!maintainState ${entry._key}");
      }
    }
    return _Theatre(
      onstage: Stack(
        fit: StackFit.expand,
        children: onstageChildren.reversed.toList(growable: false),
      ),
      offstage: offstageChildren,
    );
  }

}

And then Flutter diff algorithm will know how to update offstage element properly, other than just inflateWidget. The inflateWidget method will reload images which were used in offstage elements, thus cause serious performance issue.

b/146212303

Is the code in https://github.com/flutter/flutter/issues/11655#issue-250890695 also a reproduction for the issue here? If this issue has a significant performance impact, maybe it's nice to write a Flutter driver test (https://flutter.dev/docs/cookbook/testing/integration/profiling) so we can have some metrics to track.


Implement a faster bulk delete method for each backend

Closes #257
Other changes

Instead of checking each deleted response for redirects to delete, just delete redirects that point to a non-existing response. In most cases this results in much fewer calls.

Coverage increased (+0.004%) to 99.635% when pulling fe116d23dc9cfb887e0c739b35318a88d68db7a2 on JWCook:bulk-delete into 2a6e3e9c4d4d1c9e7c57a31a5fd9b27c82edcea7 on reclosedev:master.


doc/spec: documentation for token based auth

Outlines the format of the tokens and how they are verified.
Outlines how clients should respond to bearer token authorization
challenges.
Moved from https://github.com/docker/docker/pull/9081

This should be in doc/spec/auth/token.md. We'll have to update the other content that is there to match that format.

@jlhawn Gave this a solid read-through today. I have no problem with merging this except that its written as a proposal. I'd recommend you read the introduction to yourself again. If you feel the voice still applies in this context, let me know and we can proceed with the merge.
LGTM, tentative.


Fix typo

Docs Build status updates of commit a7c3f69:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/excel/custom-functions-dialog.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


DM-38795: Delete lab on spawn if in failed state

If the user already has a lab but that lab is in a failed state, allow them to spawn again and delete the existing lab before creating a new one.

I don't think recreating on 409 is the right generic behavior. It feels like it's going to hide bugs; particularly for lab spawning, if objects exist that we don't expect, that's not a normal and expected problem, that's a startling development that we should investigate.