dnscrypt-proxy v2.0.10 crash on Alpine linux v3.7.0 x86

Hello:
Thank you for your work.
Here is the core dump from dnscrypt-proxy v2.0.10 under Alpine linux v3.7.0-(grsecurity hardened), x86.
[2018-04-25 15:00:11] [NOTICE] dnscrypt-proxy is ready - live servers: 32
unexpected fault address 0x34846000
fatal error: fault
[signal SIGSEGV: segmentation violation code=0x2 addr=0x34846000 pc=0x16c985c2]

goroutine 64 [running]:
runtime.throw(0x16ec4ea1, 0x5)
	/usr/lib/go/src/runtime/panic.go:616 +0x77 fp=0x34405c10 sp=0x34405c04 pc=0x16b50ef7
runtime.sigpanic()
	/usr/lib/go/src/runtime/signal_unix.go:395 +0x1e4 fp=0x34405c34 sp=0x34405c10 pc=0x16b668c4
github.com/aead/chacha20/chacha.xorKeyStreamSSE2(0x34405d34, 0x40, 0x40, 0x34405d34, 0x40, 0x40, 0x34388040, 0x34388000, 0x14, 0x16c97555)
	/home/buildozer/aports/community/dnscrypt-proxy/src/dnscrypt-proxy-2.0.10/src/github.com/aead/chacha20/chacha/chacha_386.s:157 +0x162 fp=0x34405c38 sp=0x34405c34 pc=0x16c985c2
github.com/aead/chacha20/chacha.xorKeyStream(0x34405d34, 0x40, 0x40, 0x34405d34, 0x40, 0x40, 0x34388040, 0x34388000, 0x14, 0x20)
	/home/buildozer/aports/community/dnscrypt-proxy/src/dnscrypt-proxy-2.0.10/src/github.com/aead/chacha20/chacha/chacha_386.go:65 +0x8e fp=0x34405c64 sp=0x34405c38 pc=0x16c975de
github.com/aead/chacha20/chacha.(*Cipher).XORKeyStream(0x34388000, 0x34405d34, 0x40, 0x40, 0x34405d34, 0x40, 0x40)
	/home/buildozer/aports/community/dnscrypt-proxy/src/dnscrypt-proxy-2.0.10/src/github.com/aead/chacha20/chacha/chacha.go:165 +0x1b3 fp=0x34405ca0 sp=0x34405c64 pc=0x16c97233
runtime: unexpected return pc for github.com/jedisct1/xsecretbox.Seal called from 0x8f1f4b36
stack: frame={sp:0x34405ca0, fp:0x34405d90} stack=[0x34405000,0x34406000)
34405c20:  34846000  34247ce0  16b7a981 <runtime.morestack+65>  16b666e5 <runtime.sigpanic+5>
34405c30:  16c985c2 <github.com/aead/chacha20/chacha.xorKeyStreamSSE2+354>  16c975de <github.com/aead/chacha20/chacha.xorKeyStream+142>  34405d34  00000040
34405c40:  00000040  34405d34  00000040  00000040
34405c50:  34388040  34388000  00000014  16c97555 <github.com/aead/chacha20/chacha.xorKeyStream+5>
34405c60:  16c97233 <github.com/aead/chacha20/chacha.(*Cipher).XORKeyStream+435>  34405d34  00000040  00000040
34405c70:  34405d34  00000040  00000040  34388040
34405c80:  34388000  00000014  00000020  00000020
34405c90:  00000000  00000000  16c97085 <github.com/aead/chacha20/chacha.(*Cipher).XORKeyStream+5>  16ca06e8 <github.com/jedisct1/xsecretbox.Seal+216>
34405ca0: <34388000  34405d34  00000040  00000040
34405cb0:  34405d34  00000040  00000040  34388000
34405cc0:  00000000  00000000  16b77b60 <runtime.(*mcache).nextFree.func1+0>  24006000
34405cd0:  16b3deb5 <runtime.gcTrigger.test+5>  16b35d64 <runtime.mallocgc+948>  00000001  00000000
34405ce0:  00000000  00000000  00000000  01014304
34405cf0:  00000000  00000500  00000002  3459e000
34405d00:  172235e0  00000000  00004000  34277680
34405d10:  24006000  00000000  00000060  342608f0
34405d20:  343723c0  16b7cc11 <runtime.memclrNoHeapPointers+65>  16b67cf7 <runtime.growslice+519>  3459e281
34405d30:  0000027f  799b09b3  476476e4  ad4a01ac
34405d40:  a3add054  94aee6ed  85cd259d  949fb27a
34405d50:  b3a691f3  6dc28ba2  982bd4a0  ad57b292
34405d60:  767d8824  63c5ec33  e796424c  04ea8fe5
34405d70:  4f76766f  d6e51325  255a730e  fb3dd7d5
34405d80:  f6612be9  f82eaff2  ed85cf31 !8f1f4b36
34405d90: >e035f845  d0ec3743  669815bf  33bcad34
34405da0:  8cf9ac4a  e82a4ccf  0313d34d  2b227014
34405db0:  8b668a36  68e7beaf  b8797db0  e9a064f5
34405dc0:  d51853e4  1a2d2a22  78155d31  06ae1b93
34405dd0:  792b1791  352f22d7  e64a17e7  75076b81
34405de0:  1a666551  722ff12f  8cc86c83  1699194a
34405df0:  a213dca6  16fe22aa  6c8f8ad2  dd88f8b2
34405e00:  fffe84bd  72d8df77  e99459f9  13b0478a
github.com/jedisct1/xsecretbox.Seal(0xe035f845, 0xd0ec3743, 0x669815bf, 0x33bcad34, 0x8cf9ac4a, 0xe82a4ccf, 0x313d34d, 0x2b227014, 0x8b668a36, 0x68e7beaf, ...)
	/home/buildozer/aports/community/dnscrypt-proxy/src/dnscrypt-proxy-2.0.10/src/github.com/jedisct1/xsecretbox/xsecretbox.go:31 +0xd8 fp=0x34405d90 sp=0x34405ca0 pc=0x16ca06e8
created by main.(*Proxy).udpListener
	/home/buildozer/aports/community/dnscrypt-proxy/src/dnscrypt-proxy-2.0.10/dnscrypt-proxy/proxy.go:141 +0x88

goroutine 1 [chan receive, 1 minutes]:
github.com/kardianos/service.(*sysv).Run.func1()
	/home/buildozer/aports/community/dnscrypt-proxy/src/dnscrypt-proxy-2.0.10/src/github.com/kardianos/service/service_sysv_linux.go:133 +0xc7
github.com/kardianos/service.(*sysv).Run(0x34346190, 0x11, 0x34387df8)
	/home/buildozer/aports/community/dnscrypt-proxy/src/dnscrypt-proxy-2.0.10/src/github.com/kardianos/service/service_sysv_linux.go:134 +0xaf
main.main()
	/home/buildozer/aports/community/dnscrypt-proxy/src/dnscrypt-proxy-2.0.10/dnscrypt-proxy/main.go:73 +0x534

goroutine 4 [syscall, 1 minutes]:
os/signal.signal_recv(0x0)
	/usr/lib/go/src/runtime/sigqueue.go:139 +0x157
os/signal.loop()
	/usr/lib/go/src/os/signal/signal_unix.go:22 +0x1b
created by os/signal.init.0
	/usr/lib/go/src/os/signal/signal_unix.go:28 +0x3d

goroutine 5 [chan receive, 1 minutes]:
fatal error: unexpected signal during runtime execution
panic during panic
[signal SIGSEGV: segmentation violation code=0x2 addr=0xa9 pc=0x16b72249]

runtime stack:
runtime.startpanic_m()
	/usr/lib/go/src/runtime/panic.go:690 +0x1ab
runtime.startpanic()
	/usr/lib/go/src/runtime/panic.go:589 +0x16
runtime.throw(0x16ed5115, 0x2a)
	/usr/lib/go/src/runtime/panic.go:615 +0x6b
runtime.sigpanic()
	/usr/lib/go/src/runtime/signal_unix.go:372 +0x26a
runtime.gentraceback(0xffffffff, 0xffffffff, 0x0, 0x34247500, 0x0, 0x0, 0x64, 0x0, 0x0, 0x0, ...)
	/usr/lib/go/src/runtime/traceback.go:245 +0x11c9
runtime.traceback1(0xffffffff, 0xffffffff, 0x0, 0x34247500, 0x0)
	/usr/lib/go/src/runtime/traceback.go:684 +0xf7
runtime.traceback(0xffffffff, 0xffffffff, 0x0, 0x34247500)
	/usr/lib/go/src/runtime/traceback.go:645 +0x42
runtime.tracebackothers(0x34247ce0)
	/usr/lib/go/src/runtime/traceback.go:834 +0x14b
runtime.dopanic_m(0x34247ce0, 0x16b50ef7, 0x34405c04)
	/usr/lib/go/src/runtime/panic.go:736 +0x2a7
runtime.dopanic.func1()
	/usr/lib/go/src/runtime/panic.go:598 +0x2f
runtime.systemstack(0x0)
	/usr/lib/go/src/runtime/asm_386.s:464 +0x73
runtime.mstart()
	/usr/lib/go/src/runtime/proc.go:1175

thank you
west suhanic

@jedisct1 The only thing I can think of that may cause this is issue is a unsigned comparison. The 386 code compares the length of the slice using JB (jump if below (unsigned)). I change it to JL (jump if less (signed)). Both versions work well on amd64 and amd64 running in 386 comp. mode. I've build dnscrypto-proxy with this change for linux_386.
@westsuhanic It would be great if you can try out the custom release. If this doesn't fix the issue, I'll disable 386 assembly until I can reproduce and investigate it properly.

Did you install the apk package?
I installed Alpine Linux in a VM to give it a spin, and it appears to be utterly broken. I couldn't even get it to get to the point where it would start forwarding queries.
Recompiling it in Alpine produced a completely broken binary as well. Using the standard precompiled binaries worked perfectly.
If this is how you installed it, can you try the standard binaries available here? https://github.com/jedisct1/dnscrypt-proxy/releases

I basically compiled to the code like done in the .travis.yml file for linux-386. On my (amd64) machine the binary works fine:
[sudo] password for andreas:
[2018-04-25 22:45:15] [NOTICE] Source [public-resolvers.md] loaded
[2018-04-25 22:45:15] [NOTICE] dnscrypt-proxy 2.0.10
[2018-04-25 22:45:15] [NOTICE] Now listening to <IP_ADDRESS>:53 [UDP]
[2018-04-25 22:45:15] [NOTICE] Now listening to <IP_ADDRESS>:53 [TCP]
[2018-04-25 22:45:15] [NOTICE] Now listening to [::1]:53 [UDP]
[2018-04-25 22:45:15] [NOTICE] Now listening to [::1]:53 [TCP]
[2018-04-25 22:45:16] [NOTICE] [arvind-io] OK (crypto v2) - rtt: 251ms
[2018-04-25 22:45:18] [NOTICE] [bn-fr0] TIMEOUT
[2018-04-25 22:45:20] [NOTICE] [bn-nl0] TIMEOUT
[2018-04-25 22:45:20] [NOTICE] [cloudflare] OK (DoH) - rtt: 10ms
[2018-04-25 22:45:20] [NOTICE] [cpunks-ru] OK (crypto v1) - rtt: 60ms
[2018-04-25 22:45:22] [NOTICE] [d0wn-fr-ns1] TIMEOUT
[2018-04-25 22:45:22] [NOTICE] [d0wn-is-ns2] OK (crypto v1) - rtt: 51ms
[2018-04-25 22:45:22] [NOTICE] [d0wn-lv-ns2] TIMEOUT
[2018-04-25 22:45:22] [NOTICE] [d0wn-nl-ns4] OK (crypto v1) - rtt: 21ms
[2018-04-25 22:45:24] [NOTICE] [d0wn-se-ns2] TIMEOUT
[2018-04-25 22:45:24] [NOTICE] [d0wn-tz-ns1] OK (crypto v1) - rtt: 260ms
[2018-04-25 22:45:26] [NOTICE] [d0wn-za-ns1] TIMEOUT
[2018-04-25 22:45:26] [NOTICE] [de.dnsmaschine.net] OK (crypto v2) - rtt: 5ms
[2018-04-25 22:45:26] [NOTICE] [dnscrypt.ca-1] OK (crypto v1) - rtt: 96ms
[2018-04-25 22:45:27] [NOTICE] [dnscrypt.ca-2] OK (crypto v1) - rtt: 93ms
[2018-04-25 22:45:27] [NOTICE] [dnscrypt.eu-dk] OK (crypto v1) - rtt: 25ms
[2018-04-25 22:45:27] [NOTICE] [dnscrypt.eu-nl] OK (crypto v1) - rtt: 23ms
[2018-04-25 22:45:27] [NOTICE] [dnscrypt.me] OK (crypto v2) - rtt: 4ms
[2018-04-25 22:45:27] [NOTICE] [dnscrypt.name] TIMEOUT
[2018-04-25 22:45:27] [NOTICE] [dnscrypt.nl-ns0] OK (crypto v1) - rtt: 16ms
[2018-04-25 22:45:27] [NOTICE] [ev-us] OK (crypto v2) - rtt: 253ms
[2018-04-25 22:45:27] [NOTICE] [ev-us2] OK (crypto v2) - rtt: 96ms
[2018-04-25 22:45:28] [NOTICE] [ev-us3] OK (crypto v2) - rtt: 193ms
[2018-04-25 22:45:28] [NOTICE] [freetsa.org] OK (crypto v1) - rtt: 205ms
[2018-04-25 22:45:28] [NOTICE] [fvz-anyone] OK (crypto v1) - rtt: 4ms
[2018-04-25 22:45:28] [NOTICE] [fvz-anytwo] OK (crypto v1) - rtt: 4ms
[2018-04-25 22:45:28] [NOTICE] [flatty.co] OK (crypto v2) - rtt: 8ms
[2018-04-25 22:45:28] [NOTICE] [ipredator] OK (crypto v1) - rtt: 39ms
[2018-04-25 22:45:30] [NOTICE] [lazarus-dns] TIMEOUT
[2018-04-25 22:45:30] [NOTICE] [opennic-famicoman] TIMEOUT
[2018-04-25 22:45:30] [NOTICE] [opennic-luggs] OK (crypto v1) - rtt: 95ms
[2018-04-25 22:45:30] [NOTICE] [opennic-onic] OK (crypto v1) - rtt: 138ms
[2018-04-25 22:45:30] [NOTICE] [opennic-tumabox] OK (crypto v1) - rtt: 9ms
[2018-04-25 22:45:31] [NOTICE] [publicarray-au] OK (crypto v1) - rtt: 381ms
[2018-04-25 22:45:33] [NOTICE] [qag.me] TIMEOUT
[2018-04-25 22:45:33] [NOTICE] [qualityology.com] OK (crypto v2) - rtt: 249ms
[2018-04-25 22:45:33] [NOTICE] [scaleway-fr] OK (crypto v2) - rtt: 14ms
[2018-04-25 22:45:33] [NOTICE] [securedns] OK (crypto v1) - rtt: 15ms
[2018-04-25 22:45:33] [NOTICE] [soltysiak] OK (crypto v1) - rtt: 28ms
[2018-04-25 22:45:33] [NOTICE] [trashvpn] OK (crypto v2) - rtt: 16ms
[2018-04-25 22:45:33] [NOTICE] [ventricle.us] OK (crypto v2) - rtt: 125ms
[2018-04-25 22:45:33] [NOTICE] Server with the lowest initial latency: dnscrypt.me (rtt: 4ms)
[2018-04-25 22:45:33] [NOTICE] dnscrypt-proxy is ready - live servers: 31

Let me rebuild and test in a VM...

I didn't try the x86_64 version, only the i386 one.

I didn't try the x86_64 version, only the i386 one.

Yes, there is no x86_64 version, I've only build the i386. (cross compile). But I've only tested the i386 bin on a amd64 (386 comp. mode). I rebuild and setup a 32 bit alpine in a VM to make sure the bin works.

I've been running on alpine for sometime and built my own packages.
I have it running in two x86_64 VMs (xen). Can I help out in anyway?

Can I help out in anyway?
That would be awesome! Can you download the:

https://github.com/aead/dnscrypt-proxy/releases/download/2.0.11/dnscrypt-proxy-linux_i386-2.0.11.tar.gz
extract it: tar -xzf && cd linux-i386
mv example-dnscrypt-proxy.toml dnscrypt-proxy.toml
./dnscrypt-proxy`

I've also setup a VM and I can verify the config but i'm somehow unable to bind the server to :53...

The vm is x86_64.   Ran the i386 binary as you described and responds fine.  One minor adjustment I made to the config was to listen on
listen_addresses = [':53']
Hope that's an OK mod that doesn't invalidate the test...

@aead Did you try to compile it on Alpine/i386 instead of cross-compile? I suspect the Go compiler to be b0rked on this platform.

Sorry that took a while; had to create a new vm with Alpine standard 3.7 x86.
apk add dnscrypt-proxy
~# dnscrypt-proxy -config /etc/dnscrypt-proxy/dnscrypt-proxy.toml
[2018-04-25 23:54:00] [NOTICE] Source [public-resolvers.md] loaded
[2018-04-25 23:54:00] [NOTICE] dnscrypt-proxy 2.0.10
[2018-04-25 23:54:00] [NOTICE] Now listening to <IP_ADDRESS>:53 [UDP]
[2018-04-25 23:54:00] [NOTICE] Now listening to <IP_ADDRESS>:53 [TCP]
[2018-04-25 23:54:00] [NOTICE] Now listening to [::1]:53 [UDP]
[2018-04-25 23:54:00] [NOTICE] Now listening to [::1]:53 [TCP]

Then from another session
~# nslookup www.google.com localhost
Server:    <IP_ADDRESS>
Address 1: <IP_ADDRESS> alpine32.iso

Name:      www.google.com
Address 1: <IP_ADDRESS> lhr25s14-in-f4.1e100.net
Address 2: 2a00:1450:4009:810::2004 lhr25s14-in-x04.1e100.net

So the package version is working -- I'll try your tar now I have things on the right platform...

Tried the tar from your last post on 32bit VM. That's working too

Just built from the latest aports on the x86 VM (2.0.10) and that's working... anything else I can try to help out?

@jedisct1 No, haven't tried that. But if I understand @ianbashford correctly he did - and it's working (on his platform).
@ianbashford Great, thanks. One question is this a 32 bit VM running on an amd64 host (as you mentioned before) or an x86-i386 host?

anything else I can try to help out?

If you have 386-only hardware it would be awesome to run the tar (I linked in my comment) on it.
Otherwise I think no - thank you very much :+1:

Sorry the host is running on amd64... I don't have 386 hardware.
I offered to help the alpine maintainer (who doesn't actually use the software) so I've put in a PR (as I do use it).  If you have some ideas for the alpine package let me know and I can at least see if I can get them adopted. (I'm not an alpine committer so have no actual influence but happy to try to help)

Hello Everyone:
I have tried the custom release on my x86 hardware and it works. I am
testing repeatedly using, for example:

sudo ./dnscrypt-proxy -resolve ibm.fr

Running the above command against dnscrypt-proxy v2.0.10-r0 from
edge/community would core every time.
What was changed in order to get this to work?
Is there anything else I can try?
How does this custom release make it into the apk repository?
thank you,
west suhanic
On Wed, Apr 25, 2018 at 2:30 PM, Andreas Auernhammer <
<EMAIL_ADDRESS>wrote:

@jedisct1 https://github.com/jedisct1 The only thing I can think of
that may cause this is issue is a unsigned comparison. The 386 code
compares the length of the slice using JB (jump if below (unsigned)). I
change it to JL (jump if less (signed)). Both versions work well on amd64
and amd64 running in 386 comp. mode. I've build dnscrypto-proxy with this
change for linux_386.
@westsuhanic https://github.com/westsuhanic It would be great if you
can try out the custom release
https://github.com/aead/dnscrypt-proxy/releases/download/2.0.11/dnscrypt-proxy-linux_i386-2.0.11.tar.gz.
If this doesn't fix the issue, I'll disable 386 assembly until I can
reproduce and investigate it properly.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jedisct1/dnscrypt-proxy/issues/404#issuecomment-384388678,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AbU48xoe_qYVDWL_i-7wMIM3NRai9jMlks5tsMC2gaJpZM4Tjngp
.

Thanks @westsuhanic - That's great news! However it's very interesting that the unsigned JB instruction seems to be the reason for this issue.
I will fix my chacha20 implementation, than @jedisct1 can revendor and make a new official release?!

@westsuhanic Can you try the standard release as well?

Revendor'd, but I'd still be interested in @westsuhanic 's results with the standard release (vs a release compiled on Alpine).

@aead The issue I have with Alpine is not the segfault reported above, but appears to be chacha.HChaCha20() stuck in an infinite loop.
chacha.HChaCha20(&sharedKey, &nonce, &sharedKey)

Could it be because the key and the output overlap?

This is using the SSSE3 implementation.

And it works perfectly using the SSE2 implementation.

This is kinda crazy, but:
MOVL  $20, Rounds

chacha_loop:
      SUBL $2, Rounds
      JNZ  chacha_loop

is an infinite loop.
Looks like Go assembly is completely broken on Alpine, especially jump instructions.

Mmmm... actually...
        MOVL  $20, Rounds
        MOVOU ?rol16<>(SB), X5
        MOVOU ?rol8<>(SB), X6
chacha_loop:
        SUBL $2, Rounds
        JNZ  chacha_loop

produces an infinite loop, but moving the iteration counter down:
        MOVOU ?rol16<>(SB), X5
        MOVOU ?rol8<>(SB), X6
        MOVL  $20, Rounds
chacha_loop:
        SUBL $2, Rounds
        JNZ  chacha_loop

works.
Wondering whether X5 and Rounds don't end up in the same register.

  2179ad:       f3 0f 6f 53 10          movdqu 0x10(%ebx),%xmm2
  2179b2:       f3 0f 6f 18             movdqu (%eax),%xmm3
  2179b6:       b9 14 00 00 00          mov    $0x14,%ecx
  2179bb:       e8 90 bd e8 ff          call   a3750 <__x86.get_pc_thunk.cx>    // <- uh-oh!
  2179c0:       f3 0f 6f a9 70 b7 27    movdqu 0x27b770(%ecx),%xmm5
  2179c7:       00
  2179c8:       e8 83 bd e8 ff          call   a3750 <__x86.get_pc_thunk.cx>    // <- uh-oh!
  2179cd:       f3 0f 6f b1 73 b7 27    movdqu 0x27b773(%ecx),%xmm6
  2179d4:       00
  2179d5:       66 0f fe c1             paddd  %xmm1,%xmm0
  2179d9:       66 0f ef d8             pxor   %xmm0,%xmm3
  2179dd:       66 0f 38 00 dd          pshufb %xmm5,%xmm3

get_pc_thunk.cx may clobber CX ...

@aead So, I think this is the bug. CX gets clobbered. Incidentally, you are using it for the rounds count and the length. Which may explain why it went negative.

Compiled on Ubuntu, the same code doesn't have that issue:
 81a0084:       f3 0f 6f 0b             movdqu (%ebx),%xmm1
 81a0088:       f3 0f 6f 53 10          movdqu 0x10(%ebx),%xmm2
 81a008d:       f3 0f 6f 18             movdqu (%eax),%xmm3
 81a0091:       b9 14 00 00 00          mov    $0x14,%ecx
 81a0096:       f3 0f 6f 2d 50 f4 4a    movdqu 0x84af450,%xmm5
 81a009d:       08
 81a009e:       f3 0f 6f 35 60 f4 4a    movdqu 0x84af460,%xmm6
 81a00a5:       08
 81a00a6:       66 0f fe c1             paddd  %xmm1,%xmm0
 81a00aa:       66 0f ef d8             pxor   %xmm0,%xmm3

Maybe because Alpine (and apparently Android) use -buildmode=pie by default?

So, CX is reserved for PIC. We can't use it.

https://github.com/aead/chacha20/pull/23 should fix it.

Thanks for merging this, @aead.
Time to tag a new release, then.

Wow, that is a really nasty bug. Actually that should be documented for the pie mode somewhere.
Thanks for root cause analysis!

That was a nasty one, indeed. And it destroys guarantees that a lot of people may expect from the Go compiler.

Good to know that at least it's always gonna be CX.

Hello:
I have aready tried dnscrypt-proxy v2.0.10-r0 built on  2018-04-17
14:57:36. My error report was based on that release.
Is there another release I am missing?
thank you,
west suhanic
On Thu, Apr 26, 2018 at 2:34 PM, Frank Denis<EMAIL_ADDRESS>wrote:

@westsuhanic https://github.com/westsuhanic Can you try the standard
release as well?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jedisct1/dnscrypt-proxy/issues/404#issuecomment-384746031,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AbU48xmTYMbdQ0U01MX45SYqR5iW_qqrks5tshM0gaJpZM4Tjngp
.

Sorry to necro-bump.
2.0.11 (last night in releases ) was also merged into alpine aports today.

@ianbashford Awesome! Thanks!


System Error when running Ganache 2.5.4 on win32

PLATFORM: win32
GANACHE VERSION: 2.5.4
EXCEPTION:
Error: ENOENT: no such file or directory, open 'C:\Users\HP\AppData\Roaming\Ganache\workspaces\Quickstart\Settings'
    at Object.openSync (fs.js:440:3)
    at Object.func (electron/js2c/asar.js:140:31)
    at Object.func [as openSync] (electron/js2c/asar.js:140:31)
    at Object.readFileSync (fs.js:342:35)
    at Object.fs.readFileSync (electron/js2c/asar.js:542:40)
    at Object.fs.readFileSync (electron/js2c/asar.js:542:40)
    at Proxy.getItem (C:\Program Files\WindowsApps\GanacheUI_<IP_ADDRESS>_x64__5dg5pnz03psnj\app\resources\app.asar\node_modules\node-localstorage\LocalStorage.js:237:19)
    at JsonStorage_JsonStorage.getFromStorage (C:\Program Files\WindowsApps\GanacheUI_<IP_ADDRESS>_x64__5dg5pnz03psnj\app\resources\app.asar\webpack:\src\main\types\json\JsonStorage.js:18:42)
    at JsonStorage_JsonStorage.get (C:\Program Files\WindowsApps\GanacheUI_<IP_ADDRESS>_x64__5dg5pnz03psnj\app\resources\app.asar\webpack:\src\main\types\json\JsonStorage.js:30:12)
    at WorkspaceSettings_WorkspaceSettings._getRaw (C:\Program Files\WindowsApps\GanacheUI_<IP_ADDRESS>_x64__5dg5pnz03psnj\app\resources\app.asar\webpack:\src\main\types\settings\Settings.js:23:26)

Thanks for opening this issue!
Can you please try to reproduce this with the latest release? We made some significant upgrades in v2.7.0 which addressed a lot of the underlying emulator issues. Feel free to close the issue if it's resolved.
https://github.com/trufflesuite/ganache-ui/releases


Generate an error when my function crash

Hello @apnadkarni ,
I am not familiar with the C language and probably also my misunderstanding of your documentation.
The library I want to use, generate an error when a function does not work with as message :
ERROR: error_no=**** detail_no=*
The definition of an error handler is as follows :
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <setjmp.h>

jmp_buf env;

error_handler  (_STATUS   error_no,
                _STATUS   detail_no,
                void      *user_data)
{
    printf ("ERROR: error_no=%04X, detail_no=%u\n", (_UINT)error_no,
                (_UINT)detail_no);
    longjmp(env, 1);
}

I would like to reproduce the same thing... I tried to apply this using your following example examples/libzip.tcl
without success.
My C function with unknown path  :
image = _LoadPngImageFromFile (my_pointer, "*****/p02.png");
return :  ERROR: error_no=1017, detail_no=2
My tcl function :
cffi::Struct create error_handler {
    error_no  ulong
    detail_no ulong
    user_data {pointer unsafe}
}
cffi::alias define _ErrorHandler {struct.error_handler byref}
LIB stdcall _LoadPngImageFromFile pointer.int {p pointer.int filemane string}
# Tcl function :
set image [_LoadPngImageFromFile $my_pointer "*****/p02.png"]

return : Bus error: 10 (tclsh is closed with this message (I'am on MacOS))
I already use this structure when initializing my first pointer and I feel it works (I’m not 100% sure) since I have this return message:
error_no 0 detail_no 0 user_data 0x0000000000000000^
but for my function _LoadPngImageFromFile I don’t know how to use it...
Thanks
Nicolas

This would require two things in libcffi - support for callback functions, which I am afraid is not implemented in the current release and will not be implemented until v1.1. Sorry. The second thing is the use of longjmp which is inherently non-portable. Can you tell me what library you are looking to wrap so I can see if there is an alternative?

I'm trying to wrap this library : libharu  and what I’m trying to understand Error handling (Help Sourceforge)
Github : Repo Github
Regards
Nicolas

I had a quick look. I'll try to cook up a more complete example later this weekend if I have time. In the meanwhile, here are the basic steps.
 That is really more suitable for C++ and languages with native exception handling. The setjmp/longjmp mechanism is C is generally not a good idea. Instead do the explicit error handling as described in the link you posted. From C this would look something like
HPDF_Image pdfImage = HPDF_LoadPngImageFromFile (pdf, const char *filename);
if (pdfImage == NULL) {
   /* Error handling */
  HPDF_STATUS error_no = HPDF_GetError(pdf);
  HPDF_ResetError(pdf); /* Important - see your link */
 ... do something with the error code...
} else {
  ...Success...
}

From Tcl/CFFI, translating the above should be straightforward. You can either do a direct translation of the above code assuming the library object is haru ("pseudocode" not actually tested):
cffi::alias define HPDF_STATUS uint  ;# You have to see what the actual HPDF_STATUS type is
haru function HPDF_ResetError void {pdf pointer.HPDF_doc}
haru function HPDF_GetError HPDF_STATUS {pdf pointer.HPDF_doc}
haru function HPDF_LoadPngImageFromFile pointer.HPDF_Image {pdf pointer.HPDF_doc filepath string}

set image [HPDF_LoadPngImageFromFile $pdf $path]
if {[cffi::isnull $image]} {
  set error [HPDF_GetError $pdf]
  HPDF_ResetError $pdf
  error "Got error $error loading $path"
} else {
  ...success...
}

Better still, instead of having to check errors explicitly on each call, set up CFFI onerror handlers. Something like
cffi::alias define HPDF_STATUS uint  ;# You have to see what the actual HPDF_STATUS type is
haru function HPDF_ResetError void {pdf pointer.HPDF_doc}
haru function HPDF_GetError HPDF_STATUS {pdf pointer.HPDF_doc}
haru function HPDF_LoadPngImageFromFile {pointer.HPDF_Image nonzero {onerror ErrorHandler}} {pdf pointer.HPDF_doc filepath string}
proc ErrorHandler {func_result inparams outparams} {
  set pdf [dict get $inparams pdf]
  set error [HPDF_GetError $pdf]
  error "Got error $error loading $path"
}

## Now with the above definitions, you do not need to explicitly check errors
set image [HPDF_LoadPngImageFromFile $pdf $path]
...success else an exception would have been raised on above line...

For more on error and exception handling, see the following:

Basics: https://cffi.magicsplat.com/#Error checking
Reference: https://cffi.magicsplat.com/cffi_Concepts.html#::Concepts-Error handling
A complete example: https://github.com/apnadkarni/tcl-cffi/blob/d1c3310a3802fc85ea2237882852df53de6ab125/examples/libzip.tcl#L172

Thank you for this additional explanation but tclsh crash with the same message... Bus error: 10
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   ???                           	0x00007fa17b01ae40 0 +<PHONE_NUMBER>69920
1   libhpdf-2.3.0.dylib           	0x000000010626fb4d HPDF_LoadPngImageFromFile + 103
2   libcffi1.0a8.dylib            	0x0000000106259455 dcCall_x64_sysv + 97
3   ???                           	0x00007ffee9b902d0 0 +<PHONE_NUMBER>36944

What I am sure is that if my path is not correct, the following functions are not read since tclsh crashes. Like your example cffi::pointer isnull $image this command is not even read.
The error may come from me which incorrectly defines my returns of functions...  I don't know
Regards
Nicolas

@nico-robert if you can share your code where you are defining the cffi wrappers, I can take a look.

I can...
proc ErrorHandler {func_result inparams outparams} {
  set pdf [dict get $inparams pdf]
  set error [HPDF_GetError $pdf]
  error "Got error $error loading $path"
}
package require cffi

set imagedir [file dirname [info script]] ; # image demo dir

cffi::dyncall::Library create HPDF libhpdf-2.3.0.dylib
cffi::alias load C

cffi::Struct create error_handler {
    error_no  ulong
    detail_no ulong
    user_data {pointer unsafe}
}

cffi::alias define HPDF_ErrorHandler {struct.error_handler byref}

cffi::alias define HPDF_HANDLE int
cffi::alias define HPDF_STATUS ulong
cffi::alias define HPDF_Image  HPDF_HANDLE

HPDF stdcalls {

    HPDF_New                  pointer.HPDF_HANDLE                                 {user_error_fn {HPDF_ErrorHandler out} user_data int}
    HPDF_Free                 {pointer.HPDF_HANDLE nonzero}                       {pdf pointer.HPDF_HANDLE}
    HPDF_GetError             pointer.HPDF_STATUS                                 {pdf pointer.HPDF_HANDLE}
    HPDF_GetErrorDetail       pointer.HPDF_STATUS                                 {pdf pointer.HPDF_HANDLE}
    HPDF_ResetError           void                                                {pdf pointer.HPDF_HANDLE}
    HPDF_LoadPngImageFromFile {pointer.HPDF_Image nonzero {onerror ErrorHandler}} {pdf pointer.HPDF_HANDLE filename string}

}

set pdf   [HPDF_New err 0]
set image [HPDF_LoadPngImageFromFile $pdf [file join $imagedir pngsuite "basn3p02.png"]]

attached the image folder
pngsuite.zip
Thanks
Nicolas

Nicolas, here is a working example .
I'll comment on what was wrong with your code later.

Your example works, thank you... I look forward to comments on my code
Have a good day.
Regards
Nicolas

Some comments on your code.
First, you do not need to define any error handler callbacks. For now, do explicit checks as shown in my sample. Later still, I'll rewrite my sample with using exceptions at the Tcl level.
With regard to the aliases ...

cffi::alias define HPDF_HANDLE int

If you look at the hpdf.h definitions you will see that HPDF_HANDLE is a void *, not an int. Defining and passing it as an int will lead to memory corruption and crashes sooner or later. So the alias should really be
cffi::alias define HPDF_HANDLE pointer

Then, the following alias

cffi::alias define HPDF_Image  HPDF_HANDLE

is not wrong but better written as

cffi::alias define HPDF_Image pointer.HPDF_Image

This provides type safety so you cannot pass another type (like HPDF_Page) as an argument to a function expecting a HPDF_Image. If you define all as HPDF_HANDLE that allows them to be interchangeable which is dangerous. In fact, I would suggest not defining HPDF_HANDLE at all but instead define type-specific aliases like HPDF_Doc, HPDF_Page, HPDF_Image as pointer.HPDF_Doc etc.
Once you have defined the alias as above, use directly as HPDF_Image, not pointer.HPDF_Image since the alias is already
typed as a pointer.
The function HPDF_Free frees up the pointer to the HPDF_Doc and should not be accessed again.

HPDF_Free                 {pointer.HPDF_HANDLE nonzero}                       {pdf pointer.HPDF_HANDLE}

So it is better to add the dispose annotation to the argument so CFFI knows that pointer should not be accessed again. This safeguards against user-after-free errors. Also, the function returns HPDF_STATUS, not a pointer, so the definition should read something like
HPDF_Free HPDF_STATUS {hpdf pointer.HPDF_Doc}

Moreover, all functions returning HPDF_STATUS, for example

HPDF_GetError             pointer.HPDF_STATUS                                 {pdf pointer.HPDF_HANDLE}

should have that as the return type, not pointer.HPDF_STATUS. They are not returning pointers, they are returning the value itself.
/Ashok

By the way, if your interest is in generating PDF, you may consider the pure-Tcl pdf4tcl package instead of having to write your own using cffi. See the repository and the docs

Thank you  @apnadkarni for your time and your comments, I appreciate that.
"By the way, if your interest is in generating PDF, you may consider the pure-Tcl pdf4tcl package instead of having to write your own using cffi. See the repository and the docs"
Yes I know , but I want to embed this kind of file U3D in my PDF and I believe that pdf4tcl is not able to do it.

Ah, I see. I may look into haru further as I'm interested in real world libraries to drive development in CFFI and haru looks like something useful to have.

I would also like to be able to share this project on Github

I have updated my haru example with more comments and using exceptions for errors so you do not have to check status codes on every call.
Note this needs the current repository version, not the released 1.0b0, and has some incompatibilities with previous releases. In particular, NULL pointers will now raise exceptions by default unless the nullok annotation is included.
/Ashok

BTW, if you start a project on github, please let me know.

BTW, if you start a project on github, please let me know.

I’ll be sure to let you know...
Regards
Nicolas

Hello @apnadkarni ,
Is this writing correct ?
# libcffi1.0b1
cffi::alias define HPDF_Outline pointer.HPDF_Outline

HPDF_CreateOutline HPDF_Outline {
    pdf     HPDF_Doc
    parent  {HPDF_Outline unsafe nullok}
    title   string
    encoded {HPDF_Encoder unsafe nullok}
}
set root [HPDF_CreateOutline $pdf NULL "Encoding list" NULL]

I would like to write my cffi::alias like this :
cffi::alias define HPDF_Outline {pointer.HPDF_Outline unsafe nullok}

HPDF_CreateOutline HPDF_Outline {
    pdf     HPDF_Doc
    parent  HPDF_Outline
    title   string
    encoded {HPDF_Encoder unsafe nullok}
}

But I don’t know if it works in a return function like HPDF_CreateOutline above
Since this function should not return a null pointer and instead return me an error if yes.
Regards
Nicolas

The above will not work for the reason you said - it will not raise an exception if a NULL pointer is returned.
You have two choices - define two aliases or better, define a partial alias as below
cffi::alias define HPDF_Outline {pointer.HPDF_Outline unsafe}

Then define the function as
HPDF_CreateOutline HPDF_Outline {
    pdf     HPDF_Doc
    parent  HPDF_Outline
    title   string
    encoded {HPDF_Encoder nullok}
}

Hello @apnadkarni ,
One day a problem... :wink:
I have defined this :
cffi::Struct create hpdfrect {
    left   float
    bottom float
    right  float
    top    float
}

cffi::alias define HPDF_Annotation  pointer.HPDF_Annotation
cffi::alias define HPDF_Rect {struct.hpdfrect byref}

HPDF_Page_CreateLinkAnnot HPDF_Annotation {
    page HPDF_Page
    rect HPDF_Rect
    dst  HPDF_Destination
}

And my code :
set pdf [HPDF_New]
set index_page [HPDF_AddPage $pdf]
# my structure
set p {left 16.0 bottom 176.0 right 24.0 top 190.0}
# my destination
set page(0) [HPDF_AddPage $pdf]
set dst [HPDF_Page_CreateDestination $page(0)]
# and my link annotation
set annot [HPDF_Page_CreateLinkAnnot $index_page p $dst]

Passing of structs by value is not supported, for this, I added byref in HPDF_Rect but when I call HPDF_Page_CreateLinkAnnot I have this message :
missing value to go with key
Again I am not sure about myself and if that is how I should proceed...
Regards
Nicolas

Unfortunately passing structs by value is not supported because the underlying dyncall library does not support it.
Let me check with the developers about workarounds. Is there a specific platform (OS and architecture) you care particularly about?

Hello @apnadkarni ,
I would say on all platforms... but I guess if you ask me it’s not possible , currently I’m on Mac OS Big Sur 64 and Windows 10 64.
Regards
Nicolas

Given the uncertain time frame when dyncall upstream will have support for passing structs by value, I've started adding support for libffi as a back end which does support that functionality. Hopefully, I should be done in a couple of weeks. If you still have interest in libharu, I would suggest waiting on that particular call and proceeding with the rest for now.
/Ashok

Ok , I can wait
Thanks
Regards
Nicolas

I have implemented support for using the libffi library instead of dyncall. This supports passing structs by value. Please download v1.0b3 or build from the repository. Note you need libffi installed. See BUILD.md for instructions.
I am closing this ticket as it really refers to different issues. Please open a separate ticket if you have issues with passing structs by value. For questions, please use the Discussions tab.

I will try
Thanks Ashok


ol.interaction.Draw deleteCondition not working with Point feature

Hi,
I'm not able to delete a point no matter which condition I write in deleteCondition.
It works with LineString and Polygon but not with Point features.
My version of OpenLayers is 3.19.1
Here is an excerpt of the code I'm using (it's TypeScript in Angular2 btw):
private _drawnFeatures: ol.Collection<any> = new ol.Collection<any>();

this._drawingSource = new ol.source.Vector({ features: this._drawnFeatures, wrapX: false });

this._drawingLayer = new ol.layer.Vector({
	source: this._drawingSource
});

this._drawInteraction = new ol.interaction.Draw({
	features: this._drawnFeatures,
	type: type,
	freehandCondition: ol.events.condition.altKeyOnly
});

var modify = new ol.interaction.Modify({
	features: this._drawnFeatures,
	deleteCondition: evt => { return ol.events.condition.shiftKeyOnly(evt) && ol.events.condition.singleClick(evt) }
});

It's not bug, it works as intended. If you read doc for deleteCondition, it's said that it's for deleting vertices. By definition, a vertex is a point where two or more curves, lines, or edges meet (wikipedia). So a single point is not a vertex.
However, what do you mean, when you said it works with LineString and Polygon ? When I try, it doesn't let me delete a vertex of a triangle.

Well this code is obviously not enough to make it work, but using the exemple here : http://openlayers.org/en/latest/examples/draw-and-modify-features.html
and tweaking it to match what I wanted to do, I could make it work.
Thanks for the explanation about the vertices.  How am I supposed to do it then ?  Should I reimplement myself the fact that when you click on a point while holding the shift key (for example) the point must be removed ?

I managed to make this work on OpenLayers 4.6.3 using the following code (I think it also works on 3.x.y). With this I am able to delete Points by pressing the Shift + Click and insert new points by Clicking anywhere.
modify = new ol.interaction.Modify({
    source: sourceVector,
    condition: evt => {
        if (!ol.events.condition.shiftKeyOnly(evt))
            return true;

        feature = sourceVector.getClosestFeatureToCoordinate(evt.coordinate);

        if (!feature)
            return false;

        pixel1 = evt.pixel;
        pixel2 = olMap.getPixelFromCoordinate(feature.getGeometry().getCoordinates());

        if (sdistance(pixel1, pixel2) <= 100)
            sourceVector.removeFeature(feature);

        return false;
    }
});

sdistance is just a squared distance function, defined as:
function sdistance(p1, p2)
{
    dx = p1[0] - p2[0];
    dy = p1[1] - p2[1];
    return dx*dx + dy*dy;
}

Hi,
Is there any official solution to delete a point by click with a POINT or MULTIPOINT vector?
@diegofps solution works but I'd like to avoid using getClosestFeatureToCoordinate function has it forces to use the useSpatialIndex parameter which changes feature order.
Thanks for any hint.

Modify is intended to modify features, not remove them, so the minimum number of vertices must be retained - 1 for a Point, 2 for a LineString, and 3 for a Polygon.  It does seem wrong that a MultiPoint cannot be reduced to 1 point, that would be easy to implement https://codesandbox.io/s/modify-test-forked-ptjswh?file=/main.js


Added EntityObserver.

Codecov Report

Merging #10 into master will decrease coverage by 1.55%.
The diff coverage is 78.98%.

@@            Coverage Diff             @@
##           master      #10      +/-   ##
==========================================
- Coverage   85.03%   83.48%   -1.56%
==========================================
  Files          13       16       +3
  Lines         421      563     +142
==========================================
+ Hits          358      470     +112
- Misses         63       93      +30

Flag
Coverage Δ

#ios
83.48% <78.98%> (-1.56%)
:arrow_down:

#ios10
83.48% <78.98%> (-1.56%)
:arrow_down:

#macos
83.48% <78.98%> (-1.56%)
:arrow_down:

#macos10_12
83.48% <78.98%> (-1.56%)
:arrow_down:

#tvos
83.48% <78.98%> (-1.56%)
:arrow_down:

#tvos10
83.48% <78.98%> (-1.56%)
:arrow_down:

Impacted Files
Coverage Δ

Sources/CoreDataPlusError.swift
52% <ø> (ø)
:arrow_up:

Sources/NSManagedObject+DelayedDeletable.swift
53.84% <ø> (ø)
:arrow_up:

Sources/NSManagedObject+Utils.swift
100% <ø> (ø)
:arrow_up:

Sources/NSEntityDescription+Utils.swift
95.83% <ø> (ø)
:arrow_up:

Sources/Collection+CoreData.swift
94.54% <ø> (ø)
:arrow_up:

Sources/NSFetchRequest+Utils.swift
100% <ø> (ø)
:arrow_up:

Sources/ModelVersion.swift
100% <ø> (ø)
:arrow_up:

Sources/NSManagedObjectContext+Utils.swift
79.45% <0%> (ø)
:arrow_up:

Sources/NSManagedObjectContext+Cache.swift
82.6% <0%> (ø)
:arrow_up:

Sources/ObservedEvent.swift
100% <100%> (ø)

... and 10 more

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 18d58f0...9cd63f9. Read the comment docs.


Update ToC highlighting styles to prevent UI shifts

What kind of changes does this PR include?

Changes to Starlight code

Description

Closes #1120

This PR applies the suggested changes from @doodlemarks to prevent UI shifts in the table of contents when scrolling through a page.

Old
New

Currently those styles are also applied on :hover and :focus, but with this update, I think we can remove that and let the default hover/focus styles kick in.

I applied this suggestion too which means that hovering the currently highlighted ToC item will change its color to the default link hover color whereas before hovering the currently highlighted ToC item would have no effect. Just wanted to mention this to make sure this is the intended behavior.

Although I won’t release the minor just yet, merging this early because I can see a sidebar style issue in #1383 and want to see if it is also present with this change and then fix it once, instead of fixing it for the old styling on that branch and then maybe having to fix again for these changes. Hoping to release v0.16 tomorrow anyway, so hopefully shouldn’t block any other patches between then and now.


[Feature] Trial-aligned ROIResponseSeries

For datasets that have behavioral trials, it would be good addition to have a trial-aligned view for ROIResponseSeries

@magland I have some good examples for this now
draft dandiset is https://dandiarchive.org/dandiset/000728/draft - reuploads are likely so links to assets may not be entirely persistent but I will try to keep links here up to date
Current example: https://flatironinstitute.github.io/neurosift/?p=/nwb&url=https://api.dandiarchive.org/api/assets/5fe35951-5480-4fd0-94f8-7b139c994c9e/download/&dandisetId=000728&dandisetVersion=draft
Lots of RoiResponseSeries with a TimeIntervals we'd like to align to. In the dandiset, file names have 'Stim' for easy indication of experiment type, types B/C have a single TimeIntervals currently located in 'acquisition' (but in the future this will change to be located in 'stimuli' but type A only has the natural/spontaneous stimuli (which I'll file in a separate issue)
Would be really great to visualize average roi traces relative to this. Structure should also I think generally apply to any TimeSeries not just RoiResponseSeries
See NWB Widgets examples and discussion for an existing reference of particulars: https://github.com/NeurodataWithoutBorders/nwbwidgets/pull/232#issuecomment-1339253533

Thanks. Maybe we should have a meeting about this?

Sure, just grab a time on my calendly

@CodyCBakerPhD @weiglszonja Here's my crack at it
https://flatironinstitute.github.io/neurosift/?p=/nwb&url=https://api.dandiarchive.org/api/assets/5fe35951-5480-4fd0-94f8-7b139c994c9e/download/&dandisetId=000728&dandisetVersion=draft
I don't see any interesting patterns in that particular dataset. I hope I am plotting it correctly. Would be nice to be able independently to compare this with plots prepared a different way. Is there a different dataset that we know has an interesting signal?
BTW, right now it only works for RoiResponseSeries/TimeIntervals pairs.

@magland The plugin should support the 'group by' behavior for all those categorical columns; the table in question has three conditions (orientation, spatial_frequency, phase)
Quite possible that a patterns might only emerge under some selection of those conditions
BTW, would it be possible to for this group by to allow shift+selection of more than one condition, and in that event spawn a num_conditions x num_conditions grid of alignment plots for each ROI (or empty cell in grid if no joint occurrence of certain conditions)? That's also something I've wanted for the PSTH for a while; feel free to raise as separate issue if beyond this scope

As far as past examples, I believe @h-mayorquin might have/know of some, but I forget if those files are public on DANDI yet (or still embargoed)?

The ones were I worked on this are not published yet. There were not that clear either if I remember well. As in, you needed to know what to group by so the patterns would emerge.

@magland I have an explicit example for this
See this notebook: https://github.com/dandi/example-notebooks/blob/b02078be21acd03d6ac974933f8ddd5807b9a72c/000728/AllenInstitute/visual_coding_ophys_tutorial.ipynb
Towards the bottom (Part 4)
The Dandifile is sub-495727015/sub-495727015_ses-501559087-StimB_ophys.nwb: https://neurosift.app/?p=/nwb&url=https://api.dandiarchive.org/api/assets/694999ad-2005-421a-9c6f-f949283b9b59/download/&dandisetId=000728&dandisetVersion=draft

Thanks @CodyCBakerPhD
https://neurosift.app/?p=/nwb&url=https://api.dandiarchive.org/api/assets/694999ad-2005-421a-9c6f-f949283b9b59/download/&dandisetId=000728&dandisetVersion=draft&tab=view:TimeAlignedSeries|/intervals/epochs^/processing/ophys/DfOverF/DfOverF
But I guess the group by option is important here?
Otherwise, is there anything else that needs to be added to make this more useful?

@CodyCBakerPhD @weiglszonja
I am revisiting this now. The trial aligned series has been improved to have all of the features of the PSTH, including grouping by variables.
Here's the above example now
https://neurosift.app/?p=/nwb&url=https://api.dandiarchive.org/api/assets/694999ad-2005-421a-9c6f-f949283b9b59/download/&dandisetId=000728&dandisetVersion=draft&tab=view:TrialAlignedSeries|/intervals/epochs^/processing/ophys/DfOverF/DfOverF
And another more recent example from 001084
https://neurosift.app/?p=/nwb&url=https://api.dandiarchive.org/api/assets/bca70a25-e5a5-4a40-b36f-fe1088b85eb2/download/&dandisetId=001084&dandisetVersion=draft&tab=view:TrialAlignedSeries|/processing/behavior/TimeIntervals^/processing/ophys/DfOverFFiberPhotometryResponseSeriesGreenIsosbestic&tab-state=H4sIAAAAAAAAA2WQT2vcMBBHv4vOr6D%2FkveYXJLrpu0llOLGilewlhdb2yWE%2Fe6RN7RQehlGb37zBPMu1nRMLzUN30quj8Mqds8%2F%2BAv3c34sQ35JG5coVCutapRBWZRDeVRARVSHRku0QrfGoC3aoT06oCO6w2AkRmE0pvUW4zAeEzAR02GxEquwGmuw7emwHhuwEdvhcBKncBpncBbXiMcFXMR1eLzEK7zGG7zFO3yDAR%2FxHYEgCYqgCYZgCY7gCY1HQkckSqKiayfoj3ksX%2Bfv%2FZL7X8fbAcRa%2B6X%2BrHlKoiXGZT6f7t7%2BJMROpN%2BptPnbKYn%2Fxvd9TeO85E%2FTPl36Zdgsl1yG%2BbLvy5ie6iJ275%2B%2FNNsX3SypDK214oo4Lel1vQUO28JaU4vX5Zy4kYe8tq3X%2FrhuYJrnekjDP%2FCQ8njYzFMa8nlq9nKe7nJpUiOv1w%2FwnTXDDAIAAA%3D%3D

Cool! Thanks
LGTM


The paper cannot be downloaded.

+1

Please check you internet condition. It's just a normal file in Github repo.
https://github.com/THUDM/CogVLM/blob/main/assets/cogvlm-paper.pdf

It's OK now. Thanks.


Unbind keys and lower GUI scale

After installing, I recommend you lower your GUI scale (I use 2 personally) and change your keybinds how you like them. There will be a lot of conflicts initially!

Why not change the GUI scale and conflicts in the modpack then?

I'd rather not ship a default options.txt. It's kind of "all or nothing", and this pack is meant to be usable on top of an existing vanilla instance. I'd rather have users configure stuff themselves to how they like it than to impose a certain configuration myself.

You could potentially use the packwiz feature that only adds a file if one is not already present, so if people don't have an options.txt then they get sensible defaults, and when the pack updates it's not overwritten


portsolect.org

Domain
portsolect.org
Link
http://inpiyfo.portsolect.org/erec.php?nn=1o1561a7940cb27c7_1631.27f3977.A017grfg7581r020s9_n51515.05aybMDVmMHExazhvbjdj0x697l
Version
0.0.0
What browsers are you seeing the problem on?
Firefox
What OS are you seeing the problem on?
No response
(Optional) Anything else?
redirects from http://inpiyfo.portsolect.org/erec.php?nn=1o1561a7940cb27c7_1631.27f3977.A017grfg7581r020s9_n51515.05aybMDVmMHExazhvbjdj0x697l
to https://quotes.ecoverage.com/love-most-rdl/?src=88-6526-241&kw=Erec0112_153b6lm-&afid=88&subid=6526&trans_id=102b149c040ca062d915081cd02669&cid=241&offer_ref=eCover210618112723&creative_id=0
Code of Conduct

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

How did you get to this site http://inpiyfo.portsolect.org/erec.php?nn=1o1561a7940cb27c7_1631.27f3977.A017grfg7581r020s9_n51515.05aybMDVmMHExazhvbjdj0x697l?


pixelCrop comes back as NaN when setting initial width/height

If the component is initialized with a percentage for width/height, then the second param to onChange and onComplete always comes back with all NaNs for x, y, width, and height.  What up with that?

Hi can you post your code? Also check the working demo linked in the Readme
at the top of you’re stuck.
On Wed, 1 Aug 2018 at 22:48, Jeremy Miller<EMAIL_ADDRESS>wrote:

If the component is initialized with a percentage for width/height, then
the second param to onChange and onComplete always comes back with all NaNs
for x, y, width, and height. What up with that?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/DominicTobias/react-image-crop/issues/188, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAuZ-iuRk9r_YBZJQ7yVHQakGcMKSF62ks5uMiIcgaJpZM4VrTFJ
.

Actually turns out we were using this incorrectly, thanks for the help!  A recommendation though:  An error message would be nice to say that the wrong values were passed and x, y, width and height can't be computed as a result.  Just my opinion.


Allow inheritdoc for class constructors with base types

Fixes #2575
I'm not sure if the fix is correct or not. Hopefully it is.

My understanding is that the signature has to match a constructor from a base class for the inheritdoc element to be ok.

I am not aware of any nice utility methods for this.

Apart from my question about inheriting from Object, I think the analyzer changes look correct. I would just like to see more tests and improved readability. 👍

When you are done with everything mentioned so far, ping sharwell. 👍


Multiple Enum variant selection

Hi,
I have an endpoint which get a query param named status which accepts params as ?status=ACTIVE&status=PASSIVE.
I want to render a select box  with multiple selection in swagger.
I tried enums shown as below which renders a selectbox but only one element is selectable.
// @Param status query string false "status" Enums(ACTIVE,PASSIVE)

Also I tried arrays shown as below:
// @Param status query []string false "status"

This renders multiple inputs but send status array as ?status=ACTIVE,PASSIVE(comes with , seperated, so I must split incoming parameter with ,)
I want to select multiple enum variants with selectbox and parameter should come as ?status=ACTIVE&status=PASSIVE.
Thanks for helps

Is this available in  OAS 2 specs?

@ubogdan yes, it is available. I copied this json from java swagger:
{
  "name": "status",
  "in": "query",
  "description": "status",
  "required": false,
  "type": "array",
  "items": {
    "type": "string",
    "enum": [
      "ACTIVE",
      "PASSIVE"
    ]
  },
  "collectionFormat": "multi",
  "enum": [
      "ACTIVE",
      "PASSIVE"
  ]
},

@mesuutt, I think this is fixed in the latest release. I made a correction for the second example you tried, that was included in v1.7.1, so it should generate the JSON you copied now.

collectionFormat
// @Param   collection  query     []string   false  "string collection"  collectionFormat(multi)
https://github.com/swaggo/swag#available
Determines the format of the array if type array is used. Possible values are:
csv - comma separated values foo,bar.
ssv - space separated values foo bar.
tsv - tab separated values foo\tbar.
pipes - pipe separated values foo|bar.
multi - corresponds to multiple parameter instances instead of multiple values for a single instance foo=bar&foo=baz. This is valid only for parameters in "query" or "formData".
Default value is csv.


Implemented:  Delay Calculator (Calculating Propagation Delay) #396

Issue Id you have worked upon -
 Delay Calculator (Calculating Propagation Delay) #396
Briefly explain your program logic -
I'm using three textfields namely - speed, distance and delay. I take 2 of these values and compute. Im also throwing errors whenever the given input cannot be parsed into a float value(or is NaN).
Screenshots(Attach 2 screenshots of your own input and output) -
In the video below, I show the working of the calculator.
https://github.com/SarthakKeshari/calc_for_everything/assets/90673701/09112e60-7f6e-4c2b-ac21-20e7737aec85

By raising this PR I affirm that -

[x] My code follows the guidelines of this project.

[x] I have performed a self-review of my own code.

[x] I have commented my code.

[x] My code gives the correct output.

[x] I affirm that I strictly follow contributing guidelines and code of conduct.

Congratulations 🎉 @sikehish on your contribution.
Thanks for adding value to this repository. 😊
Let's celebrate this fest 😃 by providing more developers 👨💻👩💻 an opportunity to contribute. Help us make this repository reach far and more by sharing this to your friends and colleagues.
Your efforts can make difference.

Hey 👋, may you also encourage us by clicking the star icon on the repository main page. ⭐

@sikehish,
Very well written code and implementation. Adding admin-appreciation points for the efforts put in. 👏👏

@sikehish, Very well written code and implementation. Adding admin-appreciation points for the efforts put in. 👏👏

Thank you so much @SarthakKeshari! Means a lot :))


Can integrate with objective-c project?

Yes of course see this message #53 from @lkzhao
"You can use Hero in ObjC via swift objc interoperation.
You can import Hero like this in OC:
#import <Hero/Hero-Swift.h>
https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html
Everything should work as expected. Let me know if it doesn't go well. For
plugin development, you have to do it in swift since you cannot subclass
swift class in objective c. I would recommend to let one or two of your
engineers learn swift and implement theses. It is easy to do and will take
less time than porting Hero to objectiveC."


Weird readonly Func

Fixes issue when
public readonly System.Func<a,b,c,d> Some;
become
public readonly System.Func<a Some;
@danielmarbach I stumbled upon this by accident. I localized the problem - it happens if the control falls into the ModifyCodeTypeReference method. If typeReference has any TypeArguments then after call to new CodeTypeReference(modifier + " " + provider.GetTypeOutput(typeReference)) there are 0 TypeArguments in newly created CodeTypeReference.
If you call a constructor that accepts second argument - params CodeTypeReference[] typeArguments, then the output changes (int -> System.Int32, string -> System.String and so on) and some tests fail.
I used a simple if condition and made all the tests work. But I do not like it. This is a temporary solution just to PR. I have no experience with CodeDom. I think you better know what to do in this case. Perhaps everything is simple and we should switch to a new constructor without a condition. Please see how to fix it.

The problem is that CodeTypeReference does the following
private string RipOffAssemblyInformationFromTypeName(string typeName)
   {
     int startIndex = 0;
     int index1 = typeName.Length - 1;
     string str = typeName;
     while (startIndex < typeName.Length && char.IsWhiteSpace(typeName[startIndex]))
       ++startIndex;
     while (index1 >= 0 && char.IsWhiteSpace(typeName[index1]))
       --index1;
     if (startIndex < index1)
     {
       if (typeName[startIndex] == '[' && typeName[index1] == ']')
       {
         ++startIndex;
         --index1;
       }
       if (typeName[index1] != ']')
       {
         int num = 0;
         for (int index2 = index1; index2 >= startIndex; --index2)
         {
           if (typeName[index2] == ',')
           {
             ++num;
             if (num == 4)
             {
               str = typeName.Substring(startIndex, index2 - startIndex);
               break;
             }
           }
         }
       }
     }
     return str;
   }

which assumes that after four , are found from the end it can cut off. 💥
That's why
public readonly Func<string, string, string, string> FuncField2

works but
Func<string, string, string, IEnumerable<string>, string>

does not

This would fix it as well because it would bypass the cut off logic
        static CodeTypeReference ModifyCodeTypeReference(CodeTypeReference typeReference, string modifier)
        {
            using (var provider = new CSharpCodeProvider())
            {
                var typeOutput = modifier + " " + provider.GetTypeOutput(typeReference);
                var codeTypeReference = new CodeTypeReference(typeOutput);

                // for more than 4 generic params the RipOffAssemblyInformationFromTypeName of CodeTypeReferences starts breaking
                if (typeReference.TypeArguments.Count > 4)
                {
                    typeof(CodeTypeReference).GetField("_baseType", BindingFlags.NonPublic |
                                                                    BindingFlags.Instance)
                        ?.SetValue(codeTypeReference, typeOutput);
                }
                return codeTypeReference;
            }
        }

but honestly this is even nastier than your solution your solution works even with more parameter (although mine as well).
The only benefit I see from the reflection hack would be that it is clearly visible why such weirdness is done

The problem is that CodeTypeReference does the following

Triple facespalm... So what do we do in this situation? Which option do we choose?

I pulled it in with a slight tweak on the doco. Thanks mate!

Will you pubilsh a new nuget?

It is currently slow cooking in sous-vide by 56 degrees celcius to create the right medium rare inner body, when it is done I will use the flame thrower to give it a crisp outer texture to caramelize the code ;)
Will be out shortly

It's cooked and ready

Don't see yet
https://www.nuget.org/packages/ApiApprover/

https://www.nuget.org/packages/PublicApiGenerator/10.0.0-beta2 😁

completely forgot that the name is different


Add missing decorator in test service

Not sure how tests are running when this is missing (this causes code to fall over).

Codecov Report

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

@@           Coverage Diff           @@
##           master    #8805   +/-   ##
=======================================
  Coverage   58.66%   58.66%
=======================================
  Files         526      526
  Lines       27180    27180
  Branches     4044     4044
=======================================
  Hits        15946    15946
  Misses      10363    10363
  Partials      871      871

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 17b7dbe...4072681. Read the comment docs.


Call it Caliptra

...and change ereg to architectural register.
Fix #73.
Fix #102.
Signed-off-by: Steven Bellock<EMAIL_ADDRESS>

Seems we need to rebase and fix conflicts. No merges please. Thanks

Seems we need to rebase and fix conflicts. No merges please. Thanks

It has been rebased.


alchemyjsonschema 0.3.4 update

Does this imply AJS 0.3.4 is now required?

For the make schemas command, yes. Otherwise, the files output won't be name as expected. I believe it is currently required to make this after installing, to generate an expected file. This should probably be shipped with the package as package_data.


e2e: Update KinD to latest with k8s 1.14.2

Updates KinD to the latest version(1d85e92) which uses containerd
directly instead of docker. This improves the startup time of k8s
cluster.
The new k8s 1.14.2 container image compatible with KinD is available
at storageos/kind-node:v1.14.2. This image is built with /sys as shared
mount, which is required for storageos to run.
Also add KinD node image building docs.

OLM framework installation fails on the new KinD setup with containerd on k8s 1.14.2, on TravisCI environment only. Works fine when run locally. The olm-operators pod fails health check https://travis-ci.org/storageos/cluster-operator/jobs/533739377#L2079
For now, conditionally running the old version of KinD with k8s 1.13.2 for kind-olm test only. All other KinD based test setup are using the new KinD with containerd and k8s 1.14.2.


Overriding included tasks

Given the two scripts CommonTasks.ps1
Task Build -depends Clean, Compile

Task Clean{ }

Task Compile { }

and MyTasks.ps1
Include ".\CommonTasks.ps1"

task default -depends Build

task MyClean -alias "Clean" { }

The task MyClean effectively overrides the task Clean with its alias, giving the following output:
C:\> Invoke-psake .\MyTasks.ps1
Executing MyClean
Executing Compile

Build Succeeded!

Q: It this by design? Or is this unintentional?  I am creating some common build steps for the project I work for, and some of the modules needs some customisation to the build flow. Using the -alias parameter I get the functionality I need, but the solution has some apparent smells.
Suggestion: An -override parameter would make the purpose of MyCleanvery clear.

@samegutt
I just posted a reply to #298, and I realised my reply might also apply here. Interestingly, that issue suggested the ability to merge tasks, rather than override them.
Generally, I don't define dependencies for any tasks which have an action. When I want to chain tasks together; I create a separate task for that purpose. It gives you more flexibility to run exactly what you want to.
Would that help you achieve what you are trying to do?
There might be other use cases where being able to override (or merge) tasks is useful though, and I like your suggestion about adding an -override parameter to make it clear what is going to happen to the two task definitions.


Replace customerRefId with customerRef

Renaming customerRefId to customerRef to support the api change.

Closing because we will remove it everywhere


Cut unnecessary variables

In main:
S s, *pS;
int S::*ptm;
seem to serve no function.
(In case there is some hidden functionality I would be very interested to learn about it.)
Best Regards,
Johannes

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


[Doc] Mention that a default role is created when creating an SP

When we create an SP a default role is getting added, This needs to be mentioned in the documentation. The included information doesn't clearly mention this.
https://docs.wso2.com/display/IS540/Configuring+a+Service+Provider

Thank you for your contribution!
We are closing this issue since it has not been prioritized for a long time. Chances are that it has already been solved in more recent versions. If not, we will be re-evaluating this when it becomes a priority.


Import past projects from the old Observatory

RCOS has many more past projects than are shown on the past projects page. Please respect the work of alums and import data from the old Observatory, if possible.

@JDougherty I agree! We plan on bring the old Observatory back on line if possible. We had to take down the old Observatory because of a request from RPI about not having HTTPS on the server. We will also import the old projects into the new page.


Try/test answer from issue in tox repository.

What are the issues this pull addresses (issue numbers / links)?
Did you add tests to cover your changes (yes/no)?
Did you update the documentation accordingly (yes/no)?
Did you read the CONTRIBUTING document (yes/no)?
Summary
Details and comments

Close this pull request for pull request #898 .


Add support for loading job pipeline parameters with JSON files

Description
Add support for loading job pipeline parameters with JSON files.

The problem this solves is when you need to run a large number configurations of your pipeline through parameterization. Ideally you'd be able to programmatically specify the set of parameters you'd like to run.
E.g. if you have a list of databases that a pipeline should run for (passed as a pipeline parameter, "database-1", ..., "database-n") you might want to generate this file with code or in an editor outside of Orchest instead of tediously entering it through the GUI per step/pipeline parameter.
Todos

[x] Add a way to generate a populated JSON file from the currently configured step/pipeline parameters (as a starting point, or as a reference for how to generate the file programmatically)

Checklist

[x] The documentation reflects the changes.
[x] The PR branch is set up to merge into dev instead of master.
[x] I haven't introduced breaking changes that would disrupt existing jobs, i.e. backwards
compatibility is maintained.

Bug fixes
This also contains two bug fixes:

A notebook step with a pipeline assigned from /data/... would prevent saving the pipeline json
Dragging out a file from the file manager to the canvas if your pipeline doesn't sit in the project root would not adjust the paths relative to the pipeline file correctly

Could you explain (and also changing the PR description) what problem this PR solves? Additionally, could you add a better title and label to the PR so that it can be included in the release notes. To users skimming of the release notes the current title doesn't really reflect what was done in this PR.
If I remember correctly @ncspost already created a design to solve #451. Doesn't that already solve this problem as well?

Great feedback!

That's odd. https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/writeText shows this should be supported in chromium based browsers. Are your specific browser settings/extensions aggressively blocking clipboard access?

E.g. on this random StackOverflow page (scroll down, slick share, click "Copy link")
The idea behind this feature is that users can programatically generate their own JSON files. The "Generate parameter file" is just a way to check the schema. At least, that's how I envisioned it.

Moved docs link to the pipeline settings page below the button. Discussed with @fruttasecca but couldn't come up with a better place to put it. Since the file is part of editing your project files I feel like it needed to be in the pipeline editor or in the pipeline settings. Those are the two places where GUI actions can modify your project files.

The idea is of course to not let people discover the concept of parameter files at the point where they're already editing the job. The envisioned flow is: you create parameters, you might create a parameter file if you have many parameters you want to specify for all the jobs that you create for this pipeline, then you go and create an actual job that makes use of the parameter file.

Like I mentioned, the value is to simplify communicating the "schema" to the user. That includes in this case the step UUIDs that might be annoying to copy and paste. Note to match the UUID string with the step the user still needs to look in the pipeline file.

It keeps saying that the file can't be found in the given path, despite automatically initializing the parameters with the file.

I am no UX expert but imo this part (see picture) should be behind an "advanced" button or something. I am afraid there is a risk that the fact that you can click on a parameter value and fill in parameters through the GUI has become less evident, the "LOAD PARAMETERS" button does capture the attention. In a sense, those are two competing ways of setting the parameters of a job, and we aren't explaining to users when they should pick one or the other, imo.

Like I mentioned, the value is to simplify communicating the "schema" to the user.

If that is the case, then maybe we should show the schema instead? Calling it "generate parameters file" sounds like the purpose of clicking it is different from "communicating the schema".

I am afraid there is a risk that the fact that you can click on a parameter value and fill in parameters through the GUI has become less evident, the "LOAD PARAMETERS" button does capture the attention.

I hadn't thought of it this way yet, but I definitely agree with this sentiment.


Tristate test passes with bad outputs

https://skywater-pdk.slack.com/archives/C016H8WJMBR/p1655484376997329

added a new test to resolve this


Add valeriahhdez.md to the list of interested technical writers

Add valeriahhdez's README

Hi! Would you please update your file to follow our format? One line only, and only three columns: Name | Links | Description. Thank you!

Thank you! Could you also delete the second (blank) line?

Sorry, I overlooked that detail!


[Release/1.47] Use python v3.11 for Darwin (#24976)

Ports #24976 to release/1.47 to fix ADO macOS issues.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.001%) to 41.573%

Files with Coverage Reduction
New Missed Lines
%

src/sql/workbench/services/connection/browser/connectionDialogWidget.ts
1
73.44%

Totals

Change from base Build<PHONE_NUMBER>:
-0.001%

Covered Lines:
30786

Relevant Lines:
69355

💛  - Coveralls


Control syslog-ng via ENV variables

Currently syslog-ng just streams everything to a remote service.
There are some use cases where this is not convenient.
Some example switches would be

stream to stdout
stream to file
allow mixing of (above) stream targets

This could be accomplished in the check.sh script...

Funny fact: I implemented such a switching since the beginning but eventually forgot about it. After I read my own manual i remembered...
Though:
I refactored the logic of how the switch happens. Before every sub-image where required to switch their extra syslog-ng configs themself. But now they may put their configurations in different directories to let the base image logic use the configs from the right directory:

/etc/syslog-ng/conf.d/*.conf
This files will be included every time
/etc/syslog-ng/conf-stdout.d/*.conf
Such files are used if LOG_TO=stdout
/etc/syslog-ng/conf-fluent.d/*.conf
Used when LOG_TO=fluent

What's left to do ist to document these recent changes in the README.md


Invalid coverage report when use when and enum together.

Problem:
When use kotest with kover, I found the coverage report issue.
Here is the simple code.
enum class Version(val path: String) {
    V1("/v1")
}

class Test {
    fun create(version: Version): String {
        return when(version) {
            Version.V1 -> "v1"
        }
    }
}

And test like this.
class TestSpec : StringSpec() {
    private val test = Test()

    "V1 should be returns v1" {
        test.create(Version.V1) shouldBe "v1"
    }
}

Test spec covers all enum cases. So, expecting 100% coverage is reasonable.
But, kover coverage reporter reports missed 1 case. (50% coverage)
Lets try next.
class Test {
    fun create(version: Int): String {
        return when(version) {
            1 -> "v1"
            else -> "v2"
        }
    }
}

class TestSpec : StringSpec() {
    private val test = Test()

    "1 should be returns v1" {
        test.create(1) shouldBe "v1"
    }

    "2 should be returns v2" {
        test.create(2) shouldBe "v2"
    }
}

Now coverage is 100%.
When I test when branch, must write the else case if want to get 100% coverage.
But, as you know, else is not neccessory for Enum.
I am courious that it was intended or bug?
Dependencies:

kotlin : 1.6.21
coroutine : 1.6.1
kotest : 5.3.0
kover : 0.5.1

Wrong addressed. Is is not kover issue.
For others, workaround.
val <T> T.exhaustive: T
        get() = this

when(value) {
      1 -> ""
}.exhaustive


UMM error popping up on 1.7.0

After updating to v1.7.0, UMM said the mod was bad, giving the red dot and exclamation points, and I couldn't open the mod's contents. When I rolled back to v1.6.5, the error went away.

Also

what operating system?
do you have KineticistElementsExpanded or SpellPouch?
does this persist after restart?

I'm using UMM v<IP_ADDRESS>, Windows 10 Pro, I have KineticistElementsExpanded installed, and after restarting and reupdating, the game wouldn't load at all.

So, this is my fault. But it's weird, because it does work for me. In short, when my mod loads it checks if its library version is correct (which I know 3 mods use it). If not, it will overwrite the old ones. This is an issue, because the game is already loaded. In my tests the overwrite would work, but then the game crashes. On the next start it would work fine, since the files are updated.
So I guess this workaround does not work on every machine. I have no better idea how to ensure the library is correct. I don't want a disclaimer asking people to manually change files.

This is really annoying, because it was already working fine. But now some call from the manager force loads a random library, before any of my code runs.

Fine then. If anyone else doesn't ship the most recent version, it's not my fault.
Thanks for reporting this.


Why is the consume offset become less when the timestamp set to “now”?(MQAdmin)

when I'm trying to use resetOffsetByTime command from mqadmin,if I set to now,seems like the rollback offsets returned by the console will always less then the broker offset,why?

sos

首先，4.3.0的用的是这个命令resetOffsetByTime，跑出来确实是回滚的偏移量。而上图中的实际命令是这个resetOffsetByTimeOld，这个命令在4.3.0里面没有支持，而且用这个命令跟上面图片的参数是跑不出来的，所以上图作者改了源码才跑出来的。

The code will update the offset through comparison. In fact, there is no problem. If there is any ambiguity about this, you can use the resetOffsetByTime command instead of the resetOffsetByTimeOld.

First of all, 4.3.0 uses this command resetOffsetByTime, which is indeed the offset of the rollback. And the actual command in the above picture is this resetOffsetByTimeOld, this command is not supported in 4.3.0, and the parameters of the above picture cannot be run with this command, so the author of the above picture changed the source code and ran out.

Hi
In fact I don't quite understand what you mean, but I found that last year, someone has already noticed this bug, and if you look carefully at the source code will know that either resetOffsetByTime or resetOffsetByTimeOld, the core method to get the specified timestamp offset is always method getOffsetInQueueByTime, and this method I debugged, the timestampOffet will always be smaller than the actual correct consumption offset of 1 unit, so I think it's nothing to do with the version or the commands we use.

#2661 you can see this issue

#2661 you can see this issue

Thanks for the heads-up.
But does this meet the exact business need really?  Why not just set the timestamp to -1 when users need to reset to "now"?


Feature/pme 480 nextjs implementation of oauth agent

Missing LICENSE file for Apache 2.0: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository

consider changing the deployment path from <base-url>/api/ to <base-url>/oauth-agent/ as this is how it looks like with other oauth-agents. As the readme refers to the example deployment we should make integration easy.

Provide custom error pages/responses using JSON and appropriate CORS headers

Any particular place where this doesn't work? All the endpoints should return JSON error responses with proper CORS headers. Or do you mean default 404 responses?

Provide custom error pages/responses using JSON and appropriate CORS headers

Any particular place where this doesn't work? All the endpoints should return JSON error responses with proper CORS headers. Or do you mean default 404 responses?

I mean default errors. Basically any error that is not covered by the endpoints (for example 404) should be returned properly.

As far as I know, Next.js is pretty opinionated on this one, and we can't change the base path.

Aah, because of the hardcoded API Route. I see. That's a shame :( Well, for the spa-example to work, you then have to change the proxy route to route to oauth-agent:3001/api. I guess, that's fine.

Provide custom error pages/responses using JSON and appropriate CORS headers

Any particular place where this doesn't work? All the endpoints should return JSON error responses with proper CORS headers. Or do you mean default 404 responses?

I mean default errors. Basically any error that is not covered by the endpoints (for example 404) should be returned properly.

I tried to find some elegant solution to this but unfortunately, I can't. Interestingly enough, it seems that next.js should return JSON 404 responses on the /api route, but for some reason, it doesn't... I could add a "catch all" API route and return a 404 response there, but it feels like a workaround, not a real solution. I will leave that for now as is. Maybe it will get changed in future versions of next.js


[SELECT] Wrong appearance if label wraps

If the select element label takes more than one line, the second line overlaps with line.
Current Behavior 😯
Select control label doesn't wrap properly.

Expected Behavior 🤔
Control should be moved down by label, no overlapping should occur.
Steps to Reproduce 🕹
https://codesandbox.io/s/keen-heyrovsky-fntcx?file=/src/Demo.js
Steps:

Create Select form field
Write a label than doesn't fit on 1 line

Context 🔦
Build a form
Your Environment 🌎

Tech
Version

Material-UI
4.9.10

React
16.13.1

Browser
Chrome, Firefox

TypeScript
No

Duplicate of #12255


Add icon next to farming patch under timers if you cast Resurrect Crops on it

For the rare times a crop dies twice, you can only resurrect it once. Having an icon that would clear any time the crop is harvested or cleared, so you don't waste time trying to resurrect it twice would be nice.

Could also add similar icons to a patch when you pay a farmer to protect it and/or compost it, just in case you were dumb and forgot? I do that sometimes.


Assets folder trigger options

Using trigger "cockpit.assetsfolders.find.before" works well on the asset list.
But in the asset page, in the right info, the folders list doesn't uses the trigger.

Please check if this patch is acceptable: https://github.com/sainf/cockpit/commit/1fbd328f5e517d272e274e5146d01aeedc45d7ab
(updated link)

Thanks 👍


Send text message to group of people

Send a text message to a subset of users. Some possibilities:

Ability to take users from Search results
Maybe some common subsets?

This is generic functionality. It could be used to kick off the process for #112 or a one time message.

After segmenting the group to the testers we want to invite, these are the key parts of the initial call-out text message(s) that are required:

"New CUTGroup Test Opportunity..." or "Make $20 at our next CUTGroup test of..."
Type of test (in-person/remote)
Kind of website/app/tech being tested (example: transportation website, neighborhood info app, schools website, etc)
Date & time
Call to action: Please text back [KEYWORD] if you are interested in this test.

@shua123 I will craft some example messages from old tests to give examples. Ideally, I would like to keep this to 2 messages (3 at the very most).

In addition, we need to think about informing testers about approximate time-frame when they should hear back since the expectation with text messaging is that responses are more immediate.

@shua123 Here is an example of how we would translate the emails to text messages:
https://docs.google.com/document/d/1OItRTQpv2d6COjC73iWES3tgLHjj35sTKJs28RHKLoU/edit
Once a tester submits the time slot they want we need to discuss how exactly we want to end the conversation. Do we confirm immediately? Can we have a limited amount of responses for each time slot? We normally do this via Wufoo form, and when a time slot is full I change the form to reflect that.
In the email conversation, we let testers know that we will write back to confirm their time slot since we ask them to tell us all times when they are available.

Closing this issue since we have an opportunity to write a custom end message after all of the questions have been submitted. In this message we can say how long it will take before the testers hear back. We are not going to limit the number of responses per time slot but will need to look into how we ask testers about their availability for a time slot.


Updated FetchXML to the correct value

This update is as per the recent ICMs received.

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


Audio Switcher <IP_ADDRESS> not working on Windows 8

Just installed Audio Switcher <IP_ADDRESS> (placing the file and running the .exe as administrator to adjust settings).
It's running in my tray, and I can change my output device, but it doesn't actually switch anything. I need to select a new output device and restart my computer for changes to take effect.
I have confirmed that I have .NET 4.0 installed.

Does it switch when you use control panel?

Not sure what you mean.
If I am using my speakers and watching Youtube, the audio won't switch to my headphones when I switch it with Audio Switcher. I have to switch to headphones, then either jump ahead/back in the video or reload the video for the switch to happen.

Ahhh ok, see if it works for other applications (not YouTube). Flash sometimes doesn't like switching audio whilst playing.

Cool. It does work when watching videos on my HDD, so it appears to be a flash problem.
Thanks for the help and fast response!

NP.


Allow to disable web access during copr build

The copr service has the option to enable/disable web access during builds:
Enable internet access during builds

Please, add support for disabling web access into the packit config. Thanks.

Yeah, this is still very useful feature...


Can wasm be utilised to output HLS segements to mediasource directly

I'm investigating a UDP multicast proxy to HLS feature for browser streaming using either gstreamer or ffmpeg. Wasm comes to mind. Can the output hls segments be piped directly to mediasource at all instead of local files for local playback ?

Looks like I can't ingest UDP. I finally figured out I have to read the segments from the virtual filesystem to fill a MediaSource buffer. If it can read multicast udp though.
fferr udp://<IP_ADDRESS>:4000: I/O error
with
ffmpeg
      .run(
        "-i",
        "udp://<IP_ADDRESS>:4000",
        '-f',
        'hls',
        '-hls_time', '4',
        //'-hls_playlist_type',
        //'live',
        '-hls_list_size',
        '5',
        '-hls_segment_filename',
        '%d.ts',
        '-hls_playlist_type',
        'event',
        'stream.m3u8'
      )
      ```

No, you cannot receive UDP packets like this.  The usage of WASM doesn't break out of the browser's capabilities.

I'm sorry closing this. I have built a windows / osx multicast proxy client that fires up a hls pipeline vias websocket control. I can pass data via websocket next.


System.IO.DirectoryNotFoundException / Object Reference not set to an instance of an object

Attempted to patch The Stanley Parable Ultra Deluxe, which is now in Unity
Backing up 'E:\SteamLibrary\steamapps\common\The Stanley Parable Ultra Deluxe\patcher\The Stanley Parable Ultra Deluxe_Data/globalgamemanagers'...
Unhandled Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path 'E:\SteamLibrary\steamapps\common\The Stanley Parable Ultra Deluxe\patcher\The Stanley Parable Ultra Deluxe_Data/globalgamemanagers'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
at System.IO.File.Copy(String sourceFileName, String destFileName)
at UnityVRPatcher.Program.CreateGameManagersBackup(String gameManagersPath)
at UnityVRPatcher.Program.Main(String[] args)
Press any key to close this console.
The game does not have a 'globalgamemanagers' folder.

Discovered this was because I was not doing it in the game's folder, did so and found a different error:
E:\SteamLibrary\steamapps\common\The Stanley Parable Ultra Deluxe
Backing up 'E:\SteamLibrary\steamapps\common\The Stanley Parable Ultra Deluxe\The Stanley Parable Ultra Deluxe_Data/globalgamemanagers'...
Backup already exists.
Copying plugins...
Found plugins:
E:\SteamLibrary\steamapps\common\The Stanley Parable Ultra Deluxe\Plugins\openvr_api.dll,
E:\SteamLibrary\steamapps\common\The Stanley Parable Ultra Deluxe\Plugins\OVRPlugin.dll
Patching globalgamemanagers...
Using classData file from path 'E:\SteamLibrary\steamapps\common\The Stanley Parable Ultra Deluxe\classdata.tpk'
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
at AssetsTools.NET.Extra.AssetHelper.FindAssetClassByID(ClassDatabaseFile cldb, UInt32 id)
at AssetsTools.NET.Extra.AssetsManager.GetATI(AssetsFile file, AssetFileInfoEx info, Boolean forceFromCldb)
at UnityVRPatcher.Program.PatchVR(String gameManagersBackupPath, String gameManagersPath, String classDataPath)
at UnityVRPatcher.Program.Main(String[] args)
Press any key to close this console.

I'm actually already working on a Stanley Parable VR mod, but yeah, this patcher isn't working for it. I got it working with just using UABE, will look into auto patching later. I didn't really try to improve this patcher to make it work in all possible project variations, so it makes sense that it can still fail often. Not sure if I'll ever update this again.
In any case, if you wait a bit a first version of the mod should be available soon.


Create a simple RFC process for important changes

Description
Sometimes, we there is a need to propose a change to Fulcio requires more space, discussion and scrutiny than Github issues is good for. I believe these change proposals should be both documented once accepted and placed under the code review process for acceptance.
Two examples of such changes I can think off right now are the refactor of are #275 and #304. The are big enough that no single PR should seek to implement the whole thing, but I think as a project we should go through the RFC process to discuss what we'd like it to look like once completed.
We often see Google docs etc floating about for this purpose, but they're not very discoverable once complete.

Discussion in community for this issue, closing.


Add modman files to ALL magento-connect hosted extension?

Hi,
any chances to include this to https://github.com/OpenMageModuleFostering/Tooling?
"OpenMageModuleFostering" is a project that dowloaded all latest extension from "Magento-Connect" befor it is closed with EOL. composer files have been added automatically, but extension cant be installed via "composer require", because of missing modman flies for deployment.
Do you have some time to contribute?

Hi @sreichel,
Sorry, not really interested in this module anymore.
I can add you as a contributor if want to.


Migration - Secondary Court

… tests, small change in migration tracker

JIRA ticket(s)

S28-2809 https://tools.hmcts.net/jira/browse/S28-2809
S28-2810 https://tools.hmcts.net/jira/browse/S28-2810
S28-2811 https://tools.hmcts.net/jira/browse/S28-2811
S28-2812 https://tools.hmcts.net/jira/browse/S28-2812

Change description

Added flyway migration for user_court table
Added migration file to populate this table
Added tests related to user_court
Changed rooms table name to virtual_conference_rooms
Added two new fields to virtual_conference_rooms
Dropped role_permission and permissions tables
Added role_id to portal_access table
Added room_id to bookings table

@mazzopardi2 Can this be closed?


[POC] Cast to int/float

See https://github.com/GEOS-ESM/NDSL/issues/58

Proof Of Concept is in.

Experimental branch:
Feature branch: fdeconinck/cartesian/cast_to_int


[5.3] Adding getConnection value to passthru properties Illuminate\Database\Eloquent\Builder

Adding getConnection value to passthru properties of the Illuminate\Database\Eloquent\Builder Class to allow get Illuminate\Database\Connection Object using method getConnection of Illuminate\Database\Eloquent\Model, so can change fetch style to FETCH_NUM ( Laravel Default - PDO::FETCH_OBJ ) or do other functionality using Illuminate\Database\Connection Object.

namespace Illuminate\Database\Eloquent;
...

Thanks for the PR. Is there any reason you targeted this at 5.3?

Bug fixes need to go to 5.1, new features to 5.2, and breaking changes to 5.3.

Thanks for quick response, I will push it to 5.2


Improve named properties

Fixes the following per html spec:

Named properties no longer override existing properties. For example <iframe name="addEventListener">
Named properties on the window also return an element or a list of elements based on their id (#822) and name. (currently only the contentWindow of iframes are returned)
getElementById ignored  elements who had their id set after being inserted into the document

Also, I have removed a useless circular require() workaround. This workaround was causing issues.
Node.js can figure it out if you set module.exports before you require()
Named properties should also exist for <form>, however I am not doing that in this PR because the tracking of form ownership needs a lot of work. This PR would get very big.
The tracking of named properties is very close to the spec, but not complete. The spec implements them using a default/fallback getter, which do not exist in v8 yet. The edge case where this difference matters has been documented using an inverted test case.

Amazing work as always \o/. The generic NamedPropertyTracker is quite helpful, as my new NamedNodeMap implementation also has to implement something similar.

Amazing work as always \o/. The generic NamedPropertyTracker is quite helpful, as my new NamedNodeMap implementation also has to implement something similar.

:D
Do note that indexed getters (window[0]) have different semantics, scripts are not allowed to set them. So a simple defineProperty will be appropriate for that.

Updated

Merged!


The ability to disable browser autoComplete for IxSelect components

Suggestion / feature request
Hi, currently there is no way of disabling browser-based autocomplete in IxSelect components (as pictured below).

I believe the only required implementation would be to expose a property on IxSelect (such as autoComplete: boolean), and pass it through to the input element that IxSelect makes use of to display the selected value.
Thanks!

Also relevant for ix-category-filter


Low res images download without jpg file extension

E.g. http://data.nhm.ac.uk/dataset/collection-specimens/resource/05ff2255-c38a-40c9-b657-4ccb55ab2feb?view_id=6ba121d1-da26-4ee1-81fa-7da11e68f68e&filters=collectionCode%3AZOO

This is a MAM issue - suspect it's due to full stops in file names.
Example records:

record - MAM image url
record - MAM image url


[Enhancement] Optimize DefaultMQPushConsumer construction method

Before Creating the Enhancement Request

[X] I have confirmed that this should be classified as an enhancement rather than a bug/feature.

Summary
I found a duplicate structure in the constructor.

Motivation
To reduce code duplication and improve code reusability.
Describe the Solution You'd Like
We can let one constructor call another constructor, and finally perform the actual assignment operation only in one constructor.
Describe Alternatives You've Considered
In each constructor, directly call the most complete constructor.
Additional Context
No response

link #8262


requestPermission function, add onPermissionDefaultCallback

I need this callback to control page show tip

You need to modify the source, not the file in the /dist folder. Can you also please explain why you need this a bit more? It seems a bit confusing to call the permission denied callback on the default state.

Because I use the angular package, the need to maintain the callback does "not set" the state

Like slack prompts the user "not set" or "disabled"

Closing due to inactivity


Remove the unneeded cast

Summary

Remove the unneeded worker_t cast
Remove the unneeded void cast

Impact
Minor
Testing
Pass CI, but please ignore "error: Mixed case identifier found".

Please rebase

Done.


man page for transformCounts is malformated

Hi @tvborm
the man page looks malformated on my end

Can you confirm, this looks the same for you? If yes, can you fix it?
Thanks!
Felix

Yeah, it looks strange. In fact, the estimateDominance has the same problem. I fix them.
-Tuomas

1c6f90e


Duplicate Users

After a succesful save, opening the editor up from a new command will create duplicates of the targets of the latest update. Say, "squidee_" is an admin and a new permission node was added and saved, the next time it's loaded up, there would be 2 squidee_'s.
I don't know if this is the real cause of the issue, this is just how I replicated it.

Edit: Sorry if I didn't add the bug flair. I'm new to issue posting on GitHub :P

Update LuckPerms. It has been fixed recently
https://luckperms.net/


the ability to capture current photo frame from video context without capturing video

allows to capture both videos and photos without time delay for changing photo/video modes

Hey @piemonte ,
I tried to use _capturePhotoFromSampleBuffer but it seems to be cold when the actual video is recording. Isn't it?

@narekgevorgyan that's correct, the feature isn't complete so there are several edge cases.


Error [TypeError: Cannot read property '1' of null]

The error is on the line 91.
valueRegex.exec(rawValues) return null.
I'm using the MongoDB shell version: 3.2.6 and<EMAIL_ADDRESS>I believe the text changed in the newest version of mongodb and regex can not run properly.
{ [MongoError: E11000 duplicate key error collection: pinaopen.players index: name_1 dup key: { : "Bruno Barros" }]
name: 'MongoError',
message: 'E11000 duplicate key error collection: pinaopen.players index: name_1 dup key: { : "Bruno Barros" }',
driver: true,
code: 11000,
index: 0,
errmsg: 'E11000 duplicate key error collection: pinaopen.players index: name_1 dup key: { : "Bruno Barros" }',
getOperation: [Function],
toJSON: [Function],
toString: [Function] }

Hi @koppert, using MongoDB v3.2.7 and Mongoose v4.5.1 the tests are passing correctly. Could you provide the piece of code that triggers this error? Thanks for your help. :)

It's when rawValues has a space in it the regex does not match:
: "ab", matches
: "a b", does not match
The regex in question is /\s*:\s*(\S*),/g
My stacktrace is:
rawValues=: "Tag label",
TypeError: Cannot read property '1' of null
    at /code/trustroots/node_modules/mongoose-beautiful-unique-validation/index.js:92:55
    at Array.forEach (native)
    at /code/trustroots/node_modules/mongoose-beautiful-unique-validation/index.js:90:19
    at tryCallOne (/code/trustroots/node_modules/promise/lib/core.js:37:12)
    at /code/trustroots/node_modules/promise/lib/core.js:123:15
    at flush (/code/trustroots/node_modules/asap/raw.js:50:29)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickDomainCallback (internal/process/next_tick.js:122:9)

Added breaking test here #18

... actually that breaks on a different line: https://travis-ci.org/matteodelabre/mongoose-beautiful-unique-validation/jobs/144058001#L623 .. but I think you get the idea
TypeError: Cannot read property '1' of null
    at beautify (/home/travis/build/matteodelabre/mongoose-beautiful-unique-validation/index.js:61:24)
    at /home/travis/build/matteodelabre/mongoose-beautiful-unique-validation/index.js:180:21
    at /home/travis/build/matteodelabre/mongoose-beautiful-unique-validation/node_modules/mongoose/lib/model.js:3331:16
    at /home/travis/build/matteodelabre/mongoose-beautiful-unique-validation/node_modules/mongoose/lib/model.js:188:9
    at /home/travis/build/matteodelabre/mongoose-beautiful-unique-validation/node_modules/kareem/index.js:127:16
    at doNTCallback0 (node.js:430:9)
    at process._tickCallback (node.js:359:13)

Sorry for the lack of feedback. The problem is in space, really.

Should be fixed in version 3.0.1, thanks for your help. :)

It's fixed when the keys contain spaces, but not for when the values do. There were two causes of the same error message.

Added breaking test PR #21

I overlooked that a bit indeed. Thanks for the heads up!

Should be fixed in version 3.0.2. Value parsing is a bit less hacky and uses JSON.parse.

Super, thanks! Looks good to me here.


tree-wide: unify Bash completions outputs

Motivation for this change
Unify the output location where bash completions are being stored. Both
$out/share/bash-completion/completions and $out/etc/bash_completion.d were
being used. This PR starts the unification under the former location.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

[x] gammu
[x] prevo-tools
[x] todo-txt-cli
[x] gitAndTools.git-bug
[x] gitAndTools.git-stree
[x] gitAndTools.git
[x] gitAndTools.top-git
[x] purescript
[x] backblaze-b2
[ ] ceph-client - was already broken
[x] trace-cmd
[x] awscli
[x] awscli2
[x] google-cloud-sdk
[x] tarsnap
[x] btrfs-progs
[x] yandex-disk
[x] gibo
[x] powerline-rs
[x] pass.extensions.pass-import
[x] pass.extensions.pass-update
[x] awsebcli
[x] nixos-container
[x] perlPackages.AppClusterSSH

I will follow-up with nix-index once staging has been merged into master.


test: enable fscloud tests

Description

Re-enable FSCloud tests
add "skip_iam_authorization_policy" set to True in the FSCloud test.

Release required?

[x] No release
[ ] Patch release (x.x.X)
[ ] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content

Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

For mergers

Use a conventional commit message to set the release level. Follow the guidelines.
Include information that users need to know about the PR in the commit message. The commit message becomes part of the GitHub release notes.
Use the Squash and merge option.

/run pipeline

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