Shim wishlist

I run Miri on the most-downloaded crates, with the flags -Zmiri-panic-on-unsupported and --no-fail-fast which basically asks Miri to try to run as many tests as it can. Searching all my build logs, I find these are the most-encountered can't call foreign function:  errors:
The original post only contained ~10,000 crates, here's a list based on ~30,000
49787 counts
(  1)    16228 (32.59%,32.59%): epoll_create1
(  2)     5281 (10.61%,43.20%): pipe2
(  3)     2024 (4.07%,47.27%): socket
(  4)     1430 (2.87%,50.14%): localtime_r
(  5)     1340 (2.69%,52.83%): realpath
(  6)      726 (1.46%,54.29%): TLS_method
(  7)      693 (1.39%,55.68%): getaddrinfo
(  8)      584 (1.17%,56.85%): gnu_get_libc_version
(  9)      488 (0.98%,57.83%): ruby_init
( 10)      336 (0.67%,58.51%): mdb_env_create
( 11)      332 (0.67%,59.18%): mmap
( 12)      330 (0.66%,59.84%): GEOS_init_r
( 13)      320 (0.64%,60.48%): getrlimit
( 14)      317 (0.64%,61.12%): sodium_init
( 15)      311 (0.62%,61.74%): dlopen
( 16)      303 (0.61%,62.35%): flock
( 17)      302 (0.61%,62.96%): getpid
( 18)      292 (0.59%,63.54%): cuInit
( 19)      272 (0.55%,64.09%): gst_init_check
( 20)      271 (0.54%,64.64%): ts_parser_new
( 21)      268 (0.54%,65.17%): llvm.x86.subborrow.64
( 22)      259 (0.52%,65.69%): sqlite3_threadsafe
( 23)      245 (0.49%,66.19%): Py_IsInitialized
( 24)      239 (0.48%,66.67%): YGConfigNew
( 25)      235 (0.47%,67.14%): sigemptyset
( 26)      226 (0.45%,67.59%): duckdb_open_ext
( 27)      204 (0.41%,68.00%): ion_reader_open_buffer
( 28)      199 (0.40%,68.40%): mrb_open
( 29)      196 (0.39%,68.80%): lua_newstate
( 30)      194 (0.39%,69.18%): GFp_cpuid_setup
( 31)      176 (0.35%,69.54%): OPENSSL_init_ssl
( 32)      175 (0.35%,69.89%): sqlite3_open
( 33)      174 (0.35%,70.24%): fstat64
( 34)      174 (0.35%,70.59%): socketpair
( 35)      168 (0.34%,70.93%): eventfd
( 36)      167 (0.34%,71.26%): PQconnectdb
( 37)      167 (0.34%,71.60%): blst_scalar_from_uint64
( 38)      159 (0.32%,71.92%): JS_NewRuntime
( 39)      152 (0.31%,72.22%): blake3_compress_in_place_sse2
( 40)      150 (0.30%,72.52%): curl_global_init
( 41)      150 (0.30%,72.82%): memcpy
( 42)      149 (0.30%,73.12%): getuid
( 43)      145 (0.29%,73.41%): rustsecp256k1_v0_4_1_context_preallocated_size
( 44)      134 (0.27%,73.68%): ditto_auth_client_make_for_development
( 45)      131 (0.26%,73.95%): js_newstate
( 46)      130 (0.26%,74.21%): Rf_initialize_R
( 47)      124 (0.25%,74.46%): secp256k1_context_create
( 48)      109 (0.22%,74.68%): mkstemp
( 49)      104 (0.21%,74.89%): NK_login_enum
( 50)      103 (0.21%,75.09%): log1p

There are some pretty obvious biases in this data. For example, crates with a lot of tests get their favorite symbols counted more than crates with fewer tests.
pipe2 and gnu_get_libc_version are from tests that try to start a std::process::Command. pipe2 is from .output() and gnu_get_libc_version is from spawn() I think.
I think __xpg_strerror_r is from crates that encounter a std::io::Error and try to format it. This is pretty common because a lot of crates attempt to access files in their tests that are not packaged (this is also a huge problem for crater).
There are also a lot of things in here which I don't think we will ever support via shims. We're not going to have shims for openssl. We're also not going to shim CUDA or JavaScript, and also all those errors are from 3 crates using CUDA and 1 crate doing some JavaScript thing.
But in any case, this is a starting point for prioritizing what shims should be added. Just in case there isn't anyone out there who already has a pet function they want added.
@DrMeepster asked me to run some crates with a Windows target. Here's what the first ~2k crates run into:
2911 counts
(  1)     1583 (54.4%, 54.4%):  GetFullPathNameW
(  2)      485 (16.7%, 71.0%):  CreateIoCompletionPort
(  3)      292 (10.0%, 81.1%):  GetFileInformationByHandleEx
(  4)      183 ( 6.3%, 87.4%):  GetModuleFileNameW
(  5)       46 ( 1.6%, 88.9%):  SleepConditionVariableSRW
(  6)       24 ( 0.8%, 89.8%):  GetTickCount64
(  7)       22 ( 0.8%, 90.5%):  CompareStringOrdinal
(  8)       18 ( 0.6%, 91.1%):  AcquireCredentialsHandleA
(  9)       16 ( 0.5%, 91.7%):  WSAStartup
( 10)       15 ( 0.5%, 92.2%):  CreateNamedPipeW
( 11)       14 ( 0.5%, 92.7%):  Sleep
( 12)       13 ( 0.4%, 93.1%):  CryptAcquireContextW
( 13)       13 ( 0.4%, 93.6%):  log1p
( 14)       11 ( 0.4%, 94.0%):  CreateSemaphoreA
( 15)       10 ( 0.3%, 94.3%):  CreatePipe
( 16)       10 ( 0.3%, 94.6%):  SHGetKnownFolderPath
( 17)       10 ( 0.3%, 95.0%):  WakeAllConditionVariable
( 18)       10 ( 0.3%, 95.3%):  zx_vmo_create
( 19)        8 ( 0.3%, 95.6%):  GetCurrentProcess

I don't know what GetFullPathNameW is coming from, but when crates hit it, they usually have tends to hundreds of tests that attempt to use it. Possibly it's from proptest? prost is one of the crates that hits it a bunch of times.

__xpg_strerror_r is something that also comes up when just debugging Miri, I think even some of the tests will debug-print the IO error when the test fails, leading to an annoying double-failure (first the test fails with an assertion, then printing that assertion fails with an "unsupported" error).

I think __xpg_strerror_r is from crates that encounter a std::io::Error and try to format it. This is pretty common because a lot of crates attempt to access files in their tests that are not packaged (this is also a huge problem for crater).

Wish granted. ;) https://github.com/rust-lang/miri/pull/2067

( 10)      205 ( 1.3%, 52.8%): Py_IsInitialized
This the first CPython api call that Rust programs embedding the python interpreter will do. I would really like to test pyo3 and these programs with Miri.
I know Python's C api is too big to shim, but I would love to see some solution for this.

I have a similar wishlist for testing a PHP extension library. Currently it fails at pipe2, but after that it would start failing at whatever the first call to PHP is. It would be nice if there was some way to use miri to test the Rust parts of my project, and then just actually call out to the relevant PHP stuff as normal.

mmap() is the one i'm currently missing. for my purposes it could just use a boxed slice. would be a little painful on memory, but enough to get miri running.

Read-only mmap where you don't write to the backing file shouldn't be too hard to implement. If writes through either the mapping or through the backing file are allowed, it becomes a lot harder to implement unix compatible semantics.

Ah, I see what you mean. Fortunately, I'm only using anonymous mappings.

Thanks for the list!  I picked the easiest one I could see near the top (realpath):
Is there any way we can get a couple of example crates for each missing shim in the list so implementers can check the before and after with real code?

I've manually grabbed a list for you for realpath: realpath-crates.txt
I have a very simple website which is just Cloudfront + S3 at https://miri.saethlin.dev (most people care about https://miri.saethlin.dev/ub). I'm not opposed to making simple additions, like a way to download all the raw logs in a .tar.gz. You can comment here or open a new issue: https://github.com/saethlin/miri-tools/issues/8

Since @eduardosm has been doing some amazing work on implementing LLVM x86 intrinsics, here's my list of those that are encountered currently in test suites:
(  1)     6867 (74.6%, 74.6%): llvm.x86.subborrow.64
(  2)      539 ( 5.9%, 80.5%): llvm.x86.sse2.psad.bw
(  3)      361 ( 3.9%, 84.4%): llvm.x86.sse.cmp.ps
(  4)      177 ( 1.9%, 86.3%): llvm.x86.sse2.cmp.pd
(  5)      137 ( 1.5%, 87.8%): llvm.x86.sse.add.ss
(  6)       93 ( 1.0%, 88.8%): llvm.x86.aesni.aesenc
(  7)       87 ( 0.9%, 89.8%): llvm.x86.sse.sqrt.ss
(  8)       86 ( 0.9%, 90.7%): llvm.x86.rdtsc
(  9)       74 ( 0.8%, 91.5%): llvm.prefetch
( 10)       64 ( 0.7%, 92.2%): llvm.x86.bmi.pdep.64
( 11)       60 ( 0.7%, 92.9%): llvm.x86.sse2.pmulu.dq
( 12)       57 ( 0.6%, 93.5%): llvm.x86.sse2.pslli.d
( 13)       54 ( 0.6%, 94.1%): llvm.x86.sse.sqrt.ps
( 14)       40 ( 0.4%, 94.5%): llvm.x86.sse.movmsk.ps
( 15)       36 ( 0.4%, 94.9%): llvm.x86.sse.min.ps
( 16)       33 ( 0.4%, 95.3%): llvm.x86.sse.max.ps
( 17)       26 ( 0.3%, 95.6%): llvm.x86.sse2.cvttps2dq
( 18)       24 ( 0.3%, 95.8%): llvm.x86.sse.cmp.ss
( 19)       24 ( 0.3%, 96.1%): llvm.x86.sse2.cmp.sd
( 20)       22 ( 0.2%, 96.3%): llvm.x86.sse2.psll.q
( 21)       19 ( 0.2%, 96.5%): llvm.x86.sse2.psll.d
( 22)       18 ( 0.2%, 96.7%): llvm.x86.sse2.cvtps2dq
( 23)       17 ( 0.2%, 96.9%): llvm.x86.pclmulqdq
( 24)       17 ( 0.2%, 97.1%): llvm.x86.sse2.psrl.d
( 25)       16 ( 0.2%, 97.3%): llvm.x86.sse2.psrl.q
( 26)       15 ( 0.2%, 97.4%): llvm.x86.sse2.storeu.dq
( 27)       10 ( 0.1%, 97.5%): llvm.x86.sse.stmxcsr
( 28)       10 ( 0.1%, 97.6%): llvm.x86.sse2.pmulh.w
( 29)       10 ( 0.1%, 97.8%): llvm.x86.sse2.psll.w
( 30)       10 ( 0.1%, 97.9%): llvm.x86.sse2.pslli.w
( 31)        9 ( 0.1%, 98.0%): llvm.x86.sse2.movmsk.pd
( 32)        8 ( 0.1%, 98.0%): llvm.x86.sse2.psra.d
( 33)        6 ( 0.1%, 98.1%): llvm.x86.sse.rcp.ps
( 34)        6 ( 0.1%, 98.2%): llvm.x86.sse.rsqrt.ps
( 35)        6 ( 0.1%, 98.2%): llvm.x86.sse2.cvtdq2ps
( 36)        6 ( 0.1%, 98.3%): llvm.x86.sse2.max.pd
( 37)        6 ( 0.1%, 98.4%): llvm.x86.sse2.min.pd
( 38)        6 ( 0.1%, 98.4%): llvm.x86.sse2.psra.w
( 39)        6 ( 0.1%, 98.5%): llvm.x86.sse2.psrli.d
( 40)        5 ( 0.1%, 98.6%): llvm.x86.sse2.packsswb.128
( 41)        5 ( 0.1%, 98.6%): llvm.x86.sse2.packuswb.128
( 42)        5 ( 0.1%, 98.7%): llvm.x86.ssse3.pshuf.b.128
( 43)        4 ( 0.0%, 98.7%): llvm.x86.sse.sub.ss
( 44)        4 ( 0.0%, 98.7%): llvm.x86.sse2.comige.sd
( 45)        4 ( 0.0%, 98.8%): llvm.x86.sse2.psrl.w
( 46)        4 ( 0.0%, 98.8%): llvm.x86.sse3.ldu.dq
( 47)        3 ( 0.0%, 98.9%): llvm.x86.sse2.packssdw.128
( 48)        3 ( 0.0%, 98.9%): llvm.x86.sse2.psrai.d
( 49)        3 ( 0.0%, 98.9%): llvm.x86.sse2.psrai.w
( 50)        3 ( 0.0%, 99.0%): llvm.x86.sse2.psrli.q
( 51)        2 ( 0.0%, 99.0%): llvm.ctpop.v16i8
( 52)        2 ( 0.0%, 99.0%): llvm.x86.avx2.pslli.d
( 53)        2 ( 0.0%, 99.0%): llvm.x86.sse.comieq.ss
( 54)        2 ( 0.0%, 99.1%): llvm.x86.sse.comige.ss
( 55)        2 ( 0.0%, 99.1%): llvm.x86.sse.comigt.ss
( 56)        2 ( 0.0%, 99.1%): llvm.x86.sse.comile.ss
( 57)        2 ( 0.0%, 99.1%): llvm.x86.sse.comilt.ss
( 58)        2 ( 0.0%, 99.1%): llvm.x86.sse.comineq.ss
( 59)        2 ( 0.0%, 99.2%): llvm.x86.sse.cvtsi2ss
( 60)        2 ( 0.0%, 99.2%): llvm.x86.sse.cvtss2si
( 61)        2 ( 0.0%, 99.2%): llvm.x86.sse.div.ss
( 62)        2 ( 0.0%, 99.2%): llvm.x86.sse.max.ss
( 63)        2 ( 0.0%, 99.2%): llvm.x86.sse.min.ss
( 64)        2 ( 0.0%, 99.3%): llvm.x86.sse.mul.ss
( 65)        2 ( 0.0%, 99.3%): llvm.x86.sse.rcp.ss
( 66)        2 ( 0.0%, 99.3%): llvm.x86.sse.rsqrt.ss
( 67)        2 ( 0.0%, 99.3%): llvm.x86.sse2.comieq.sd
( 68)        2 ( 0.0%, 99.4%): llvm.x86.sse2.comile.sd
( 69)        2 ( 0.0%, 99.4%): llvm.x86.sse2.comilt.sd
( 70)        2 ( 0.0%, 99.4%): llvm.x86.sse2.comineq.sd
( 71)        2 ( 0.0%, 99.4%): llvm.x86.sse2.cvtpd2dq
( 72)        2 ( 0.0%, 99.4%): llvm.x86.sse2.cvtpd2ps
( 73)        2 ( 0.0%, 99.5%): llvm.x86.sse2.cvtps2pd
( 74)        2 ( 0.0%, 99.5%): llvm.x86.sse2.cvtsd2si
( 75)        2 ( 0.0%, 99.5%): llvm.x86.sse2.cvtsd2si64
( 76)        2 ( 0.0%, 99.5%): llvm.x86.sse2.cvtsd2ss
( 77)        2 ( 0.0%, 99.6%): llvm.x86.sse2.cvtss2sd
( 78)        2 ( 0.0%, 99.6%): llvm.x86.sse2.cvttpd2dq
( 79)        2 ( 0.0%, 99.6%): llvm.x86.sse2.cvttsd2si
( 80)        2 ( 0.0%, 99.6%): llvm.x86.sse2.cvttsd2si64
( 81)        2 ( 0.0%, 99.6%): llvm.x86.sse2.max.sd
( 82)        2 ( 0.0%, 99.7%): llvm.x86.sse2.min.sd
( 83)        2 ( 0.0%, 99.7%): llvm.x86.sse2.pavg.b
( 84)        2 ( 0.0%, 99.7%): llvm.x86.sse2.pavg.w
( 85)        2 ( 0.0%, 99.7%): llvm.x86.sse2.pmadd.wd
( 86)        2 ( 0.0%, 99.7%): llvm.x86.sse2.pmulhu.w
( 87)        2 ( 0.0%, 99.8%): llvm.x86.sse2.pslli.q
( 88)        2 ( 0.0%, 99.8%): llvm.x86.sse2.psrli.w
( 89)        2 ( 0.0%, 99.8%): llvm.x86.sse2.sqrt.sd
( 90)        2 ( 0.0%, 99.8%): llvm.x86.sse2.storeu.pd
( 91)        2 ( 0.0%, 99.9%): llvm.x86.sse3.hadd.ps
( 92)        2 ( 0.0%, 99.9%): llvm.x86.sse41.dpps
( 93)        2 ( 0.0%, 99.9%): llvm.x86.sse41.ptestz
( 94)        1 ( 0.0%, 99.9%): llvm.ctpop.v2i64
( 95)        1 ( 0.0%, 99.9%): llvm.ctpop.v4i32
( 96)        1 ( 0.0%, 99.9%): llvm.ctpop.v8i16
( 97)        1 ( 0.0%, 99.9%): llvm.x86.avx2.permd
( 98)        1 ( 0.0%,100.0%): llvm.x86.avx2.pslli.q
( 99)        1 ( 0.0%,100.0%): llvm.x86.bmi.bzhi.64
(100)        1 ( 0.0%,100.0%): llvm.x86.fma.vfnmadd.pd.256
(101)        1 ( 0.0%,100.0%): llvm.x86.rdrand.64
(102)        1 ( 0.0%,100.0%): llvm.x86.rdseed.64

Here's an update:
(  1)      214 (40.9%, 40.9%): llvm.x86.sse41.pblendw
(  2)      128 (24.5%, 65.4%): llvm.x86.rdtsc
(  3)       37 ( 7.1%, 72.5%): llvm.x86.sse41.blendvps
(  4)       22 ( 4.2%, 76.7%): llvm.x86.sse41.ptestz
(  5)       19 ( 3.6%, 80.3%): llvm.x86.sse42.crc32.32.8
(  6)       17 ( 3.3%, 83.6%): llvm.x86.sse42.pcmpestri128
(  7)       12 ( 2.3%, 85.9%): llvm.x86.sse.stmxcsr
(  8)       10 ( 1.9%, 87.8%): llvm.x86.sse41.round.ps
(  9)        7 ( 1.3%, 89.1%): llvm.x86.sse41.packusdw
( 10)        6 ( 1.1%, 90.2%): llvm.x86.sse41.round.sd
( 11)        6 ( 1.1%, 91.4%): llvm.x86.sse41.round.ss
( 12)        5 ( 1.0%, 92.4%): llvm.x86.sse41.dpps
( 13)        4 ( 0.8%, 93.1%): llvm.x86.sse41.insertps
( 14)        3 ( 0.6%, 93.7%): llvm.x86.sse41.mpsadbw
( 15)        3 ( 0.6%, 94.3%): llvm.x86.sse41.phminposuw
( 16)        3 ( 0.6%, 94.8%): llvm.x86.sse41.pmuldq
( 17)        3 ( 0.6%, 95.4%): llvm.x86.sse41.ptestc
( 18)        3 ( 0.6%, 96.0%): llvm.x86.sse41.ptestnzc
( 19)        3 ( 0.6%, 96.6%): llvm.x86.sse41.round.pd
( 20)        3 ( 0.6%, 97.1%): llvm.x86.sse42.crc32.32.16
( 21)        3 ( 0.6%, 97.7%): llvm.x86.sse42.crc32.32.32
( 22)        3 ( 0.6%, 98.3%): llvm.x86.sse42.crc32.64.64
( 23)        3 ( 0.6%, 98.9%): llvm.x86.sse42.pcmpestrm128
( 24)        3 ( 0.6%, 99.4%): llvm.x86.sse42.pcmpistri128
( 25)        2 ( 0.4%, 99.8%): llvm.experimental.vector.reduce.add.v4i128
( 26)        1 ( 0.2%,100.0%): llvm.x86.sse41.blendvpd

I do not know what happened to the aesni.aesenc calls. My best guess is that I changed to -Ctarget-cpu=x86_64-v2 and now they're hidden behind some SSE4 functions.

Thanks for posting this. We use miri in Materialize and seem to be having a different set of unsupported operations, basically our wishlist:
$ git grep "cfg_attr(miri"|sed -e "s#.*\/\/ *##" | sed -e "s/error: *//" | grep -v "slow"|sort|uniq -c|sort -n -r
     81 unsupported operation: can't call foreign function `TLS_client_method` on OS `linux`
     58 unsupported operation: returning ready events from epoll_wait is not yet implemented
     20 unsupported operation: can't call foreign function `decNumberFromInt32` on OS `linux`
     15 unsupported operation: can't call foreign function `decContextDefault` on OS `linux`
     12 unsupported operation: can't call foreign function `rust_psm_stack_pointer` on OS `linux`
     12 unsupported operation: cannot write to event
     11 unsupported operation: can't call foreign function `OPENSSL_init_ssl` on OS `linux`
      7 unsupported operation: integer-to-pointer casts and `ptr::from_exposed_addr` are not supported with `-Zmiri-strict-provenance`
      6 unsupported operation: inline assembly is not supported
      6 unsupported operation: can't call foreign function `TLS_method` on OS `linux`
      4 unsupported operation: can't call foreign function `socket` on OS `linux`
      4 unsupported operation: can't call foreign function `pipe2` on OS `linux`
      3 unsupported operation: can't call foreign function `rocksdb_create_default_env` on OS `linux`
      3 unsupported operation: can't call foreign function `epoll_wait` on OS `linux`
      2 unsupported operation: can't call foreign function `deflateInit2_` on OS `linux`
      1 unsupported operation: non-default mode 0o600 is not supported
      1 unsupported operation: integer-to-pointer casts and `ptr::from_exposed_addr`
      1 unsupported operation: can't call foreign function `pidfile_open` on OS `linux`

My list of desired shims: O_NOFOLLOW flag support for open, flock with all 3 flags, pwrite64, and pread64. It's not a full list, just functions on which our tests are stuck (we can cfg our way out for the former two, but not for the latter two).

@saethlin it might be time to update the list for FFI shims as well -- the two first items in the list at the top of this issue are now implemented in Miri. :D
socket is still missing so that will probably be number 1 now. (Or all those pipe2 where actually from process::Command and we'll see a bunch of fork/posix_spawn-like things.)

I've updated the issue description with all the crates I've run this month, which is the ~32,000 crates with the most downloads in the last 90 days.
I'm quite surprised that we don't see a bunch of process::Command internals as you suggested. Maybe I'll check in on that later?


feat(fleet): Switch fleet to be alertable

Relevant information
We are add this change because currently our entity list doesn't show on the all entities. We already made relevant change on the entity-type-ui-definition-service

Checklist

[ x] I've read the guidelines and understand the acceptance criteria.
[x ] The value of the attribute marked as identifier will be unique and valid.
[x ] I've confirmed that my entity type wasn't already defined. If it is I'm providing an explanation above.

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


Fix the thread-safe issue for coders manager.

Use lock and immutable object to keep addCoder, removeCoder thread-safe.
New Pull Request Checklist

[x] I have read and understood the CONTRIBUTING guide

[x] I have read the Documentation

[x] I have searched for a similar pull request in the project and found none

[x] I have updated this branch with the latest master to avoid conflicts (via merge from master or rebase)

[x] I have added the required tests to prove the fix/feature I am adding

[x] I have updated the documentation (if necessary)

[x] I have run the tests and they pass

[x] I have run the lint and it passes (pod lib lint)

This merge request fixes / reffers to the following issues: #1484 #2249
Pull Request Description
This is the solution to keep thread-safe for coders manager. We use a immutable array to keep coders. For each SDWebImageCoder protocol method, we firstly grab the current coders array with lock guard, then enumerate on the reverse order (Because it's a priority queue, the last index should have the highest priority). And modify method like addCoder: and removeCoder: need a full lock to mutableCopy the coders and set it.
This can get avoid of GCD queue, and we do not need a extra reversed mutable array to keep priority queue. Just use the reversedEnumerator.

Codecov Report

Merging #2274 into master will decrease coverage by 2.65%.
The diff coverage is 73.8%.

@@            Coverage Diff             @@
##           master    #2274      +/-   ##
==========================================
- Coverage   78.53%   75.87%   -2.66%
==========================================
  Files          36       36
  Lines        3745     3747       +2
  Branches      343        0     -343
==========================================
- Hits         2941     2843      -98
- Misses        780      904     +124
+ Partials       24        0      -24

Impacted Files
Coverage Δ

SDWebImage/SDWebImageCodersManager.m
70.37% <73.8%> (+0.67%)
:arrow_up:

Tests/Tests/SDWebImageDownloaderTests.m
82.84% <0%> (-14.23%)
:arrow_down:

SDWebImage/SDWebImagePrefetcher.m
79.26% <0%> (-10.98%)
:arrow_down:

SDWebImage/SDWebImageManager.m
73.8% <0%> (-10%)
:arrow_down:

Tests/Tests/SDWebImageManagerTests.m
92.13% <0%> (-7.87%)
:arrow_down:

...age/FLAnimatedImage/FLAnimatedImageView+WebCache.m
74.57% <0%> (-6.78%)
:arrow_down:

Tests/Tests/SDImageCacheTests.m
94.59% <0%> (-5.41%)
:arrow_down:

SDWebImage/SDWebImageDownloaderOperation.m
88.34% <0%> (-3.84%)
:arrow_down:

SDWebImage/SDWebImageDownloader.m
78.35% <0%> (-3.82%)
:arrow_down:

SDWebImage/SDImageCache.m
65.34% <0%> (-3.47%)
:arrow_down:

... 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 e549e1a...dfe4a66. Read the comment docs.


make it easy, consider dropping fork relationship

https://youtu.be/5qHan7hn9Ro
oh i know, [i'm] a lot
i moved fast, it got delirious
I do know that i want this to last.
yet i'm curious.
Tell me how we should make this go down, I've got a feeling
Baby you don't got to freak out, you can need we.
Let me in on all your doubts, what you thinking.
What you thinking?
Let's take it easy, easy. Because that's all it needs to be.
Help me make it easy. Easy. Oh! that's all it needs to be.
It should be easy.
It should be easy
[insert vamping synth sounds here]

-1. Create a virgil branch, a second go at this terrariaclone experiment.
0. construct a list of viable testing environments + ide setups

make it easy to launch into this code on whatever environments are viable
combine in the easiest fixes
make it truly easy, that is in fact all it needs to be.

feel free to work on this asap if you want. i need to marinate a bit more and do some other things that are more immediately pressing, but I do at a minimum want to try to settle this issue down a bit within the next year.

oh btw swap to a purgatorio metaphor. because metaphors are what the meta's for.  ur gonna have to find some dank quotes to start off the next readme. ;)


feat (tests): add generic 'Constructor_PopulatesProperties' test

This PR was missing a few files when it was merged. Whoops.


Create gentx-a80c1141583df4dde4d58ecc6e55ce12feaf5774.json

Hi guys. Why it still awaiting approval? What can i do next?


[1.32.x] KOGITO-7676: Added Flyway to release notes

JIRA: KOGITO-7676

Please make sure that your PR meets the following requirements:

[ ] You have read the contributions doc
[ ] Pull Request title is properly formatted: KOGITO-XYZ Subject
[ ] Pull Request title contains the target branch if not targeting main: [0.9.x] KOGITO-XYZ Subject
[ ] The nav.adoc file has a link to this guide in the proper category
[ ] The index.adoc file has a card to this guide in the proper category, with a meaningful description

How to setup automatic cherry-pick to another branch ?

The cherry-pick action allows to setup automatic cherry-pick from main to a specific branch.
To allow it, you will need to add the corresponding label with pattern: backport-{RELEASE_BRANCH}.
For example, if a backport to branch 1.26.x is needed, then the label should be backport-1.26.x.
Once the PR is merged, the action will retrieve the commit and cherry-pick it to the desired branch.
NOTE: You can still add label after the merge and it should still be cherry-picked.

@akumar074 Please do this change only on branch 1.32.xm which will come today or tomorrow

Thanks @radtriste , I converted the PR to draft and will change the base to 1.32.x when available.

@akumar074 you can change the base branch

@ricardozanini Can we merge this one?

@ricardozanini @radtriste Can we merge this?


Does it support Pixart-delta controlnet in ComfyUI?

Not yet!
To be fair, I totally missed that this got released. I'll see how hard it is to add. It seems to use hed edge as the input, which seems to be available here already, so I think I only need to add the model?

I think so, yes! Both the preprocessor and the Pixart-delta version of ControlNet are already available. Perhaps what remains is to implement the inference code for ComfyUI.

I did a quick test and it kinda works but I think it expects the CN input in a different format than what the controlnet aux repo outputs. I'll have to ask the pixart dev about it.
Uploaded the code in the meantime in case you wanna mess around with it. I'm using the model files from here.
ControlNetPixArt.json (just replace the load cond nodes with T5, I just use those for testing so I don't have to load T5 every time I make a change).

I tried reproducing this (to see if i can get QR codes to work with PixArt-alpha).
However, I always get the error
  File "ComfyUI/custom_nodes/ComfyUI_ExtraModels/PixArt/models/pixart_controlnet.py", line 80, in forward_c
    pos_embed = torch.from_numpy(get_2d_sincos_pos_embed(self.pos_embed.shape[-1], (self.h, self.w), lewei_scale=self.lewei_scale, base_size=self.base_size)).unsqueeze(0).to(c.device).to(self.dtype)
...
AttributeError: 'PixArtMS' object has no attribute 'lewei_scale'

@kno10 lewei_scale is now called pe_interpolation in the new code that came with Sigma. I didn't uprade the controlnet parts since they were in a half-working state anyway, and sigma didn't seem to come with updated files for that.
You can send a quick PR if just replacing those gets it working again, I'd be happy to merge it.

replacing lewei_scale with pe_interpolation helped (no longer looks completely corrupted, but you can recognize the outlines from the input image), but the results are still far from useful.


Allow setting the container security context for executor containers.

This is needed to set privileged on the container which allows the executor to create a docker network on the host machine.
Also fixes some lint errors found by using chart-testing
Fixes https://github.com/buildbuddy-io/buildbuddy-helm/issues/33

Updated! I think it's 0.0.146 since it's currently 0.0.145 but can do 47 if you want

Thanks!!


Core config testing

Unit tests for core/configuration.py
Required removing the settings import and passing in client_configs.all

Coverage increased (+2.9%) to 29.55% when pulling 4594299f39fa4fe5863fcaedea9a3b68837ba803 on core-config-testing into 9622c9c39e3d583b575c8e81c541e87d0418ee69 on master.


Pressing enter in editor causes terminal to do a new line

when user not focused on the terminal do we shouldn't be handling user input. We just need to set up some handlers to make sure this doesn't happen

This has been fixed by recent PRs


Namespacing constants

I would like to know whether putting in the time to namespace constants would be accepted into a pull request. I would prefer since i am loading codiad onto the side of an existing application that constants and global functions are namespaced. Not class namespaced but just within their names.
for example:
define("THEME", "default");

would become
define("CODIAD_THEME", "default");

or
define("BASE_PATH", "/path/to/files");

would become
define("CODIAD_BASE_PATH", "/path/to/files");

Thoughts? thanks.

currently I would not like to rename namespace constants as it would affect ALL existing installations

Wouldn't it only affect the session being disrupted and the config file? Wouldn't be hard for people to update their config.php during installation of upgrade?

well, it would also affect existing plugins, extentions, modifications, whatever. Also some are using auto update mechanisms and multi instance hosting. Changing existing config files is not as easy as for one single page (in your case). We have also some people providing Codiad as saas for many people out there. It's not easy for them to change existing configs as well.

I understand. Maybe a future large version release one day.  Thanks.


Relaxed lookahead alignment, other internal block alloc readability improvements

This drops the lookahead buffer from operating on 32-bit words to operating on 8-bit bytes, and removes any alignment requirement. This may have some minor performance impact, but it is unlikely to be significant when you consider IO overhead.
The original motivation for 32-bit alignment was an attempt at future-proofing in case we wanted some more complex on-disk data structure. This never happened, and even if it did, it could have been added via additional config options.
This has been a significant pain point for users, as providing word-aligned byte-sized buffers in C can be a bit annoying.

This also includes a number of internal block allocator improvements, mostly around naming things and making the logic hopefully easier to understand.

Hi, could you please also update comment in lfs_util.h ?
Especially it still mentions 64-bit alignment for malloc requirement:
https://github.com/littlefs-project/littlefs/blob/3513ff1afc1d67adb2e6f492f0b9bc0d798fcb0d/lfs_util.h#L218

Good catch, should be updated now.
There is a risk that we will need word-alignment in the future, but I guess we'll address that when we get to that.


Packaging requests: konf

Project description

konf is a lightweight kubeconfig manager. With konf you can use different kubeconfigs at the same time. And because it does not need subshells, konf is blazing fast!

-- https://github.com/SimonTheLeg/konf-go
Metadata

homepage URL: https://github.com/SimonTheLeg/konf-go
source URL: https://github.com/SimonTheLeg/konf-go
license: asl20
platforms: linux, darwin

I have packaged the application in the pull request https://github.com/NixOS/nixpkgs/pull/190760.

The pull request https://github.com/NixOS/nixpkgs/pull/190760 has been merged and konf should be packaged initially.


modify proj4 package version

Now if you try to install Proj4Leaflet with Bower it automatically install old version of proj4 - proj4#2.1.4.

@perliedman please check it

@drnextgis Bower docs aren't very specific on this: https://github.com/bower/spec/blob/master/json.md#dependencies - it just refers to npm's version range docs. Since npm definitely supports the ^ operator, I would assume bower does too.
Since I don't use Bower, I have no means of testing this in practice.

I've checked. It works. Output of proj4js installation with "proj4": "^2.0.0" in bower.json:
$ bower install
bower leaflet#~0.7.2            cached git://github.com/Leaflet/Leaflet.git#0.7.7
bower leaflet#~0.7.2          validate 0.7.7 against git://github.com/Leaflet/Leaflet.git#~0.7.2
bower proj4#^2.0.0              cached git://github.com/proj4js/proj4js.git#2.3.12
bower proj4#^2.0.0            validate 2.3.12 against git://github.com/proj4js/proj4js.git#^2.0.0
bower proj4#^2.0.0             install proj4#2.3.12
bower leaflet#~0.7.2           install leaflet#0.7.7

With "proj4": "~2.1.2" was:
$ bower install
bower leaflet#~0.7.2            cached git://github.com/Leaflet/Leaflet.git#0.7.7
bower leaflet#~0.7.2          validate 0.7.7 against git://github.com/Leaflet/Leaflet.git#~0.7.2
bower proj4#~2.1.2              cached git://github.com/proj4js/proj4js.git#2.1.4
bower proj4#~2.1.2            validate 2.1.4 against git://github.com/proj4js/proj4js.git#~2.1.2
bower proj4#~2.1.2             install proj4#2.1.4
bower leaflet#~0.7.2           install leaflet#0.7.7

@drnextgis thanks, misread your comment.
@semone I'll merge this unless you have any objections?

@perliedman gogogo :smile:

:tada:
@drnextgis thanks for contributing this! Lets hope this will improve the situation for Bower users.

It does, thanks! Could you make a release?


[XLA] Ensure constants conform to the specified index type

The strided slice update introduces constants into the HLO graph which are not of the type specified by the core op.
This adds methods to the computation builder to allow the creation of literals with types determined at runtime, and makes the strided slice update op use them.
it depends on https://github.com/tensorflow/tensorflow/pull/10164

Can one of the admins verify this patch?

I left this line in the elemental_ir_emitter:
llvm_ir::IrArray::Index dim_index(1, ir_builder_->getInt64(i));

I believe it is an index into the vector of indices, and that the CreateZExtOrBitCast function will successfully extend the int32 to whatever the native size of the target IR is.

Actually - despite the potential for more type-specific constants in the future, I'm abandoning this one.


Error with Howdy test

Please describe the issue in as much detail as possible, including any errors and traces
Error on 'howdy test':
 howdy test
[ WARN:0] global /build/opencv/src/opencv-4.1.2/modules/videoio/src/cap_gstreamer.cpp (1756) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module source reported: Could not read from resource.
[ WARN:0] global /build/opencv/src/opencv-4.1.2/modules/videoio/src/cap_gstreamer.cpp (886) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0] global /build/opencv/src/opencv-4.1.2/modules/videoio/src/cap_gstreamer.cpp (480) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created

Opening a window with a test feed

Press ctrl+C in this terminal to quit
Click on the image to enable or disable slow mode

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Traceback (most recent call last):
  File "/usr/bin/howdy", line 101, in <module>
    import cli.test
  File "/usr/lib/security/howdy/cli/test.py", line 206, in <module>
    time.sleep(.5 - frame_time)
ValueError: sleep length must be non-negative

Also, my cpu shoots to 100%, and it does not work when I log in (i3lock, sddm, etc.)
Linux distribution (if applicable):
Arch
Howdy version:
2.5.1-2

Impressive, that means you're using more than 500ms to process a single frame. Could you try to check which call between line 111 and 202 in test.py takes so long?

Err... how would I go about doing that?

I'm not sure how good you are with python, but you can insert the following line and move it down a line every time:
print(time.time() - frame_tm)

This will print the execution time since line 111. Make sure you use the right indentation

Ooh thanks! I'll try that.


Support ANSI sequences under windows

Use "colorama" under windows in order to get colored output (Issue #59).

See #59 for discussion.


use modsecurity_rules_remote can set default rules where remote server is down

use modsecurity_rules_remote can set default rules where remote server is down?

Hi @liuwenru,
modsecurity_rules_remote assumes that a set of rules will be loaded. If it fails to download the rules for some reason, the default behaviour is that the web server (and ModSecurity) will not start.
If this is something that wouldn't work for you setup, we recommend setting the SecRemoteRulesFailAction where you can set the "Warn" flag so that the webserver continues to run.
In this scenario all your other rules would be loaded, regardless if they are the default basic modsecurity.conf-recommended rules, CRS or your own custom rules.


ci: temporary skipping attrs license check

Description
As the title.
Issue linked
Related issues https://github.com/ansys/actions/pull/658
Checklist

[x] I have visited and read Develop PyMAPDL.
[x] I have tested my changes locally
[x] I have added necessary documentation or updated existing documentation.
[x] I have followed the PyMAPDL coding style guidelines.
[x] I have added appropriate unit tests that also ensure the minimal coverage criteria.
[x] I have reviewed my changes before submitting this pull request.
[x] I have linked the issue or issues that are solved to the PR if any.
[x] I have assigned this PR to myself.
[x] I have marked this PR as draft if it is not ready to be reviewed yet.
[x] I have made sure that the title of my PR follows Commit naming conventions (e.g. feat: adding new MAPDL command)

@pyansys-ci-bot LGTM
We do not need to wait for the PyMAPDL testing since this change only affects the smoke tests


[FEATURE] Support directories in apply/show or allow multiple -f

For a bunch of projects organized in directories allow something like
cattlectl apply -f dirname or maybe shell globbing cat **/project.yaml | cattlectl show -f -
or allow specifying multiple files like this
cattlectl apply -f dir1/project.yaml -f dir2/project.yaml
Background:
In our CI/CD pipeline i never know how many directories/files with project definitions will be created , so i have to either apply the whole directory or use wildcards/globbing

I know you can work around the limitations in my feature requests... but i still would be nice to have ;)

project seems dead.. closing issue


Issues #16 / #32 / #34 / #36 / #37 / #40 / #63 / #64 (2nd attempt)

Issues #16 / #32 / #34 / #36 / #37 / #40 / #63 / #64
This is another attempt at PR #65 that I managed to mess up.
Still not complete (needs more tests and docblocks, but functionally complete) and getting up for visibility and automated testing.
This is a rewrite of the notification handler using the newer NotificationInterface. All the listed issues revolve around the notification handling, which has always been a bit "special".
This PR provides a new way to handle the notifications, but does not introduce any BC breaks for existing applications. However, updating the applications should simplify their notification handlers somewhat.
Summary of changes in relation so specific issues are:

#16 An invalid signature will no longer raise an exception unless you try to respond to Sage Pay with a error or confirm; you must response with an invalid. A checkSignature() method gives you a true/false indication of whether the signature is valid.
#32 This complains of having to call confirm() on a completePurchase() response, which other drivers don't do. This is now a notify response, which is completely different. The responses for the notify handler are not standardised in the project yet, but they can be updated here as they are.
#34 No exceptions raised now (see #16). No knowledge needed of the Sage Pay specific POST parameter names - just use getTransactionId() on the notify request to get the merchant transaction ID. This makes it more general.
#36 getCode() is now an alias of getStatus().
#37 The output is still echoed, which you can catch with ob_* functions. You can turn the auto-exit off though, with $response->setExitOnResponse(false);. It is on by default, as that will likely be the 99% use-case.
#40 notifyUrl() should be used now. returnUrl() is still supported as a fall-back to avoid BC breaks.
#63 This one spurned on this development, which will form the core to a fix to a third-party application plugin as a result.
#64 This is the core of the changes - introducing the AcceptNotification message. We just call it notify here, but can change that to acceptNotification if that is what other gateways use. The documentation is sparse at the moment though.

 I didn't meant to merge this one in now.
However - if there are no objections, we can just run with it. It will be a bit of a mega release when made official, but I can make sure it is well tested. If there are any objections to doing that, please shout now. Personally, I'm confident this PR does not have any BC breaking changes, even though it does cover a lot of issues - mainly niggling stuff.
The acceptNotification handler replaces six other *complete* messages, which I have marked as deprecated, but have left in place for legacy applications. We could possibly set those to use the acceptNotification functionality to cut out some duplicate code.


App Insights Status monitor v2 does not capture SQL command text

I have been working on this issue for a while now. It works perfectly from my localhost but when i deploy it to my on premise machine, i cannot get it to work.
I noticed that a few days ago the docs where changed: https://github.com/MicrosoftDocs/azure-docs/commit/1fbd05fab441f1a7221fbbd9f55f87a395ca7c17
But im unsure what this means. Does this mean that its no longer supported? or that this step is no longer needed?
Also the status functions that are part of the powershell module are not really helpfull, neither is the troubleshooting docs. Because the status functions show a list of things, but its unclear what this means. And the troubleshooting docs only describe what might be wrong, but nothing on how this can be fixed.
We are in the application referencing 2.17.0 and i noticed the Az.ApplicationMonitor still uses 2.9. Might that be an issue?

The doc change reflect the fact that if you are using SMV2 alone, there is no need of changing AI.config. (infact, Ai.Config changes are not allowed in SMv2)
If your case, I think you are using a Asp.Net app, with 2.17 version of the SDK. And you want to see full SQL text capture.
The following doc lists the exact steps required in your case:
https://docs.microsoft.com/en-us/azure/azure-monitor/app/asp-net-dependencies#advanced-sql-tracking-to-get-full-sql-query

Use SMV2 and install instrumentation engine.
Restart IIS
Make AI.config changes.
Restart app to take Ai.Config changes in effect.

The fact that 2.17 is used by you vs 2.9 in SMv2 shouldn't have any impact on SQL text collection.
(if you have any additional feedback about the docs, please open doc issues right from the docs page.)

First, thx for your feedback.
So we did those steps you describe. Except for the 3th step since our ai.config file already contains all the settings we need. And yet, it does not work. And im having a hard time trying to diagnose what the problem is.
Especially since when i start the application locally, on which i did the same steps. It works. Which i verify by checking in AI which SDK is being used for logging. From my local machine it correctly reports an 'rddp' type SDK, but from the on-premise machine it reports an 'rddf' type SDK.
I have been looking at these docs: troubleshooting. And i used for example the 'Get-ApplicationInsightsMonitoringStatus -InspectProcess' command. And sure enough there is a list of DLL's there.
But i have no idea:

if its complete
if its correct
if there is anything loaded that might be an issue

I tried comparing whats loaded and configured with what it shows on my local machine, but i cannot find anything that stands out.
I also manually verified the registry settings and other stuff that the module configures, to ensure that it happened correctly, but it all seems to be in order.
So im kinda stumped.

For immediate support, I'd suggest to open support ticket with Microsoft Azure.
Since you were able to make it work in local environment, but not in server, you can collect the logs from the server and see if that gives some hints - something which says why instrumentationengine is not dropped correctly.

I would love to see some logs, but. how ? Eventlog is empty. And the application itself is not generating any relevant logs either.

https://docs.microsoft.com/en-us/azure/azure-monitor/app/status-monitor-v2-troubleshoot#collect-etw-logs-by-using-perfview

Ok so perfview basically confirmed the behavior i was seeing.
I compared it with a trace of my local machine, and confirmed that absolutely nothing is happening.
So i went the nuclear option, and manually deleted all traces of the Az.ApplicationMonitor on the machine.
Then i reinstalled it.
And now it works.
Why did it fail in the first place? Beats me.


Error Code 503

Hello! Trying to run the script on my dietPi, I get this:

2021-12-21 21:41:24,057 - withings - INFO - Get Access Token
2021-12-21 21:41:24,359 - withings - ERROR - Received error code: 503
2021-12-21 21:41:24,359 - withings - ERROR - Check here for an interpretation of this error: http://developer.withings.com/api-reference#section/Response-status
2021-12-21 21:41:24,359 - withings - ERROR -
2021-12-21 21:41:24,359 - withings - ERROR - If it's regarding an invalid code, try to start the script again to obtain a new link.
2021-12-21 21:41:24,360 - withings - INFO - Refresh Access Token
2021-12-21 21:41:24,549 - withings - ERROR - Received error code: 503
2021-12-21 21:41:24,550 - withings - ERROR - Check here for an interpretation of this error: http://developer.withings.com/api-reference#section/Response-status
2021-12-21 21:41:24,550 - withings - ERROR -
2021-12-21 21:41:24,550 - withings - ERROR - If it's regarding an invalid code, try to start the script again to obtain a new link.
Traceback (most recent call last):
File "/usr/local/bin/withings-sync", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.7/dist-packages/withings_sync/sync.py", line 196, in main
sync(**vars(args))
File "/usr/local/lib/python3.7/dist-packages/withings_sync/sync.py", line 78, in sync
withings = WithingsAccount()
File "/usr/local/lib/python3.7/dist-packages/withings_sync/withings2.py", line 164, in init
self.withings = WithingsOAuth2()
File "/usr/local/lib/python3.7/dist-packages/withings_sync/withings2.py", line 68, in init
self.refreshAccessToken()
File "/usr/local/lib/python3.7/dist-packages/withings_sync/withings2.py", line 157, in refreshAccessToken
self.user_config['access_token'] = body.get('access_token')
AttributeError: 'NoneType' object has no attribute 'get'

This is what you get when the .withings_user.json is too old or invalid.

Rename or delete .withings_user.json
Run withings-sync
Complete the oauth-token process

This is what you get when the .withings_user.json is too old or invalid.

Rename or delete .withings_user.json
Run withings-sync
Complete the oauth-token process

@eribrI have the same issue. After I delete .withings_user.json it ask to get token again and works once.
But next time it shows error 601:
2022-02-02 08:42:37,273 - withings - INFO - Refresh Access Token
2022-02-02 08:42:37,589 - withings - ERROR - Received error code: 601
2022-02-02 08:42:37,589 - withings - ERROR - Check here for an interpretation of this error: http://developer.withings.com/api-reference#section/Response-status
2022-02-02 08:42:37,589 - withings - ERROR -
2022-02-02 08:42:37,589 - withings - ERROR - If it's regarding an invalid code, try to start the script again to obtain a new link.
2022-02-02 08:42:37,911 - withings - INFO - Get Measurements
and next time error 503 again:
2022-02-02 08:42:42,535 - withings - INFO - Get Access Token
2022-02-02 08:42:42,902 - withings - ERROR - Received error code: 503
2022-02-02 08:42:42,902 - withings - ERROR - Check here for an interpretation of this error: http://developer.withings.com/api-reference#section/Response-status
2022-02-02 08:42:42,902 - withings - ERROR -
2022-02-02 08:42:42,902 - withings - ERROR - If it's regarding an invalid code, try to start the script again to obtain a new link.
2022-02-02 08:42:42,902 - withings - INFO - Refresh Access Token
2022-02-02 08:42:43,221 - withings - ERROR - Received error code: 503
2022-02-02 08:42:43,221 - withings - ERROR - Check here for an interpretation of this error: http://developer.withings.com/api-reference#section/Response-status
2022-02-02 08:42:43,221 - withings - ERROR -
2022-02-02 08:42:43,221 - withings - ERROR - If it's regarding an invalid code, try to start the script again to obtain a new link.
Traceback (most recent call last):
File "/home/starcat/.local/bin/withings-sync", line 8, in
sys.exit(main())
File "/home/starcat/.local/lib/python3.8/site-packages/withings_sync/sync.py", line 196, in main
sync(**vars(args))
File "/home/starcat/.local/lib/python3.8/site-packages/withings_sync/sync.py", line 78, in sync
withings = WithingsAccount()
File "/home/starcat/.local/lib/python3.8/site-packages/withings_sync/withings2.py", line 164, in init
self.withings = WithingsOAuth2()
File "/home/starcat/.local/lib/python3.8/site-packages/withings_sync/withings2.py", line 68, in init
self.refreshAccessToken()
File "/home/starcat/.local/lib/python3.8/site-packages/withings_sync/withings2.py", line 157, in refreshAccessToken
self.user_config['access_token'] = body.get('access_token')
AttributeError: 'NoneType' object has no attribute 'get'

I deleted .withings_user.json and did the authentication again. I still got error "Unable to retrieve Garmin username!", so I relogged into Garmin Connect through the website and it seems to be working for now. Thanks!


Coverage Demo fails

How to reproduce:
ros2 launch opennav_coverage_demo coverage_demo_launch.py
Error:
[component_container_isolated-5] [ERROR] [1709560390.632574795] [coverage_server]: Internal Fields2Cover error: Geometry does not contain point 0

You need to populate your field correctly - see the demo script or the tests (or even other F2C demos)

You're saying that it is expected that running the demo launch file should not work out of the box? I saw that in the demo script demo_coverage.py, a polygon is generated and I'm guessing in the coverage_server this polygon is converted to the master_field, yet this master_field seems to have an area of 0. What am I missing here?

In computeCoveragePath, I printed out the goal and it seems to be populated correctly (same as in the demo_coverage script). Then I printed out master_field.getArea() and that's 0. There seems to be something wrong in the creation of the master_field from the polygon.

Sorry, took me a bit to get a workspace built with everything. It seems to be working fine for me on iron
git clone git@github.com:Fields2Cover/Fields2Cover.git
git clone git@github.com:open-navigation/opennav_coverage.git
colcon build --packages-select opennav_coverage opennav_coverage_demo opennav_coverage_msgs fields2cover

ros2 launch opennav_coverage_demo coverage_demo_launch.py

Hmm, I tested on main, could you give this a quick test? I probably won't have time today anymore to test on Iron, I can try it tommorrow.

Works fine too.
[demo_coverage-7] Waiting for 'NavigateCompleteCoverage' action server
[demo_coverage-7] Navigating to with field of size: 5...
[component_container_isolated-5] [INFO] [1709574892.421465036] [bt_navigator]: Begin coverage navigating with outer field of size: 5!
[component_container_isolated-5] [INFO] [1709574892.425943049] [coverage_server]: Generating coverage path in map frame for zone with 5 outer nodes and 0 inner polygons.
[component_container_isolated-5] [INFO] [1709574892.455748830] [controller_server]: Received a goal, begin computing control effort.

Well, thank you for taking the time.... I'll check tomorrow how that could happen...

Are you sure you tested with navigation2 and opennav_coverage on main? How did you not run into https://github.com/open-navigation/opennav_coverage/pull/43?


Shorten the travis file; shouldn't change behavior

Going to assume this worked; will fix later if not...


Update alert to reflect pending approval

Content on the API Requested Access page to be updated to ensure it describes the difference between "you now have access" vs "credentials will be authorized once approved".


Victor VosMottor: Watch Josiyam

Victor VosMottor requests the watch of the watch_keyword Josiyam. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

Josiyam has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Josiyam has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Rejected by Cody Gray in Charcoal HQ. Reason: 'I want to make this a bit more targeted/specific with kili\Wjodhidam. Even though it has no FPs now, it might in the future.'

Rejected by Cody Gray in Charcoal HQ. Reason: 'I want to make this a bit more targeted/specific with kili\Wjodhidam. Even though it has no FPs now, it might in the future.'


keepAlive doesn't work

I'm need my session to be resumable then I tried keepAlive but it doesn't work.
My code:
$browserFactory = new BrowserFactory("google-chrome");
$browser=null;

$socketFile="tmp/socket";

if ( file_exists( $socketFile ) )
{
        print "
Reopen browser";
	$socket =  file_get_contents($socketFile);

	try
	{
		$browser = BrowserFactory::connectToBrowser( $socket, ['debugLogger' => 'php://stdout']);
		$page = $browser->createPage();
	}
	catch (Exception $e)
	{
		print "$e";
	}
}

if (!$browser)
{
	$browser = $browserFactory->createBrowser(array('headless' => true,
					'enableImages'=>false,
					'userDataDir'=>'/var/www/web/cache',
					'connectionDelay' => 0.2,
					'userAgent' => 'Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
					'keepAlive'=>true,
					'debugLogger'     => 'php://stdout'));

	file_put_contents($socketFile, $browser->getSocketUri());

	// creates a new page and navigate to an url
	$page = $browser->createPage();
}

But everytime that prints the message:
HeadlessChromium\Exception\BrowserConnectionFailed: Cannot connect to the browser, make sure it was not closed in /var/www/vendor/chrome-php/chrome/src/BrowserFactory.php:151 Stack trace: #0 /var/www/web/test.php(24): HeadlessChromium\BrowserFactory::connectToBrowser('ws://<IP_ADDRESS>:...', Array) #1 {main}
What am I missing ?

I checked with "top" and chrome is killed each time !

I tried google-chrome and chromium with the same result on two different debian servers. There must be something, should I use a specific version of chrome ?
I checked that no "kill" or "close" method are called, what can cause the chrome process to quit when php ends ?

I found my answer in this thread : https://github.com/symfony/symfony/issues/7237#issuecomment-583181010


Nice to have: Versionbot should give feedback on the changelog lines to be added in advance

It'd be nice to get feedback from versionbot before the merge, so it's clear what's about to happen, and we can review changelog entries easily (in the same way we've been manually reviewing changelog changes for missing lines/typos/whatever up until now).
Almost certainly requires a versionbot api, and closely related to #53 too. This came out of discussion here: https://github.com/resin-io-modules/resin-procbots/issues/16#issuecomment-287033036.
We could have versionbot ping once in the thread with the message it's intending to add, adding a new comment each time you push a commit with a new/different change-type message? Or edit the original PR message and add it's own footer with the current set of entries? Editing is a little weirder and presumably more complicated, but less noisy, and it'd look neat. Or could temporarily add to the changelog, but then remove on later merges, when going A -> B -> master.

Hi there, just a heads up – we’ll be moving support for free users to the community forums
this Monday, March 20. The main difference is that your questions and our developers' answers will be public instead of private, building a knowledge base for everyone.
You can take this question to the forums now, I’ll meet you there to answer it. If not, I’ll help you out here, but know that future questions should be directed to the forums.
P.S. if you’d like to continue accessing private support after the change, we can upgrade you to a paid plan and you won’t see any difference.

It'd be nice to get feedback from versionbot before the merge, so it's clear what's about to happen, and we can review changelog entries easily (in the same way we've been manually reviewing changelog changes for missing lines/typos/whatever up until now).

Almost certainly requires a versionbot api, and closely related to #53 too. This came out of discussion here: #16 (comment).

We could have versionbot ping once in the thread with the message it's intending to add, adding a new comment each time you push a commit with a new/different change-type message? Or edit the original PR message and add it's own footer with the current set of entries? Editing is a little weirder and presumably more complicated, but less noisy, and it'd look neat.

—

You are receiving this because you are subscribed to this thread.

Reply to this email directly, view it on GitHub, or mute the thread.

I'm for this, I'm not sure about editing. If you're on a very long thread it could get lost. But then, we would always 'know' that the potential changelog is at the start of the thread.

So, some extra comments here leading on from further discussion in #16
With the workflow being suggested in #16 (multiple PRs to a release branch, with the changelog only being updated when a PR is made to merge the release branch back to master) we're going to have multiple 'layers':

master branch (the only place where the version gets bumped and the changelog gets updated)
PRs against master, which consist of

one or more commits

release-branch-1, which potentially consists of:

zero, one or more already-merged commits
zero, one or more PRs against release-branch-1, which consist of:

one or more commits

The way I see it, this issue is concerned with previewing the changelog lines (which are themselves generated from the commit messages) that would be added by the PRs (either against master, or against release-branch-1). I think it might also be nice, if on release-branch-1 you could get a preview of all the aggregated changelog lines that would be added back to the master changelog, before actually creating the PR that merges release-branch-1 back to master.
Not sure I explained that very well, lets see if an example helps...

master branch
release-branch-1 (branched from master), with merged commits adding:

new feature A
new feature B
PR X against release-branch-1, with commits adding:

new feature C

PR Y against release-branch-1, with commits adding:

new feature D
new feature E

I believe this issue was opened to suggest that in PR X, VB could create a comment saying that PR X will add "new feature C", and in PR Y VB could create a comment saying that PR Y will add "new feature D & new feature E".
What I'm suggesting in this comment is that it might be nice if VB could detect that PR X is against a non-master branch, and also add a comment saying that when PR X eventually gets merged back to master, it'll add "new feature A & new feature B & new feature C" to the master changelog.
And similarly on PR Y VB could add a comment saying that when PR Y eventually gets merged back to master, it'll add "new feature A & new feature B & new feature D & new feature E" to the master changelog.
And then if PR Y gets merged before PR X, the comment in PR X would be updated to say that when PR X eventually gets merged back to master, it'll add "new feature A & new feature B & new feature D & new feature E & new feature C" to the master changelog.
(and obviously everywhere where it's previewing the new changelog-lines, it'd also preview the new version number too - and obviously these version-number previews would need to be updated when branches / PRs get rebased)
Yeah, perhaps that is a bit too complex, but it might be useful? ;-)  (especially if the release branches start getting gnarly)
Maybe it's a VersionPreviewBot rather than VersionBot ;)


Change xform node with skeleton data to SkelRoot

As referenced here: https://github.com/kcoley/gltf2usd/issues/33

Should be in the newest drop to master


[BUG] Cross Cluster Search is not returning partial result in case of skip_unavailable is true

Describe the bug
Cross Cluster Search is not returning partial result in case of skip_unavailable is true. This is happening in the case when one of the destination node is replaced with another node.
For running cross cluster search, we have to add destination cluster seed nodes in source cluster. So when cluster connection alias seed node setting is updated with new node of destination cluster. Cross cluster search(CCS) started failing even skip unavailable flag is true in source cluster setting.
Doc for cross cluster search setup.
Related component
Search
To Reproduce

Create 2 clusters using cross cluster replication plugin setup
Add following setting in source cluster "cluster.remote.remote-alias.skip_unavailable" : "true"
Add below data in destination cluster

curl -k -XPOST -u $CREDS "http://$DESTINATION/_bulk?pretty" -H 'Content-Type: application/json' -d '
{ "index": { "_index": "test-index", "_id": "1" } }
{ "description": "new ice cream", "name": "test1", "created": "2024-03-25T06:08:14Z" }
{ "index": { "_index": "test-index", "_id": "2" } }
{ "description": "new croissant", "name": "test2", "created": "2024-03-25T06:08:16Z" }
{ "index": { "_index": "test-index", "_id": "3" } }
{ "description": "new tennis shoe", "name": "test3", "created": "2024-03-25T06:08:18Z" }
{ "index": { "_index": "test-index", "_id": "4" } }
{ "description": "new hightop", "name": "test4", "created": "2024-03-25T06:08:19Z" }
'

Do a cross cluster search with following query

curl -XGET -u $CREDS "https://$SOURCE/remote-alias:test-index/_search?pretty=true" \
-H 'Content-Type: application/json' \
-d '
{
    "query": {
        "match_all": {}
    },
    "from": 1000,
    "size": 1,
    "sort": {
        "created": {
            "order": "asc"
        }
    }
}'

Above query should pass with 200 and in response we should get skipped result as 1.
Now update the seed node setting of source cluster "cluster.remote.remote-alias.seeds"
Now again search with query mentioned in step 4. This time we get the response as 400

Expected behavior
CCS request should be return 200 as response with skipped as 1.
Additional Details
Plugins
Please list all plugins currently enabled.
Screenshots
If applicable, add screenshots to help explain your problem.
Host/Environment (please complete the following information):

OS: [e.g. iOS]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

@dblock This issue is in opensearch not in replication package. skip_unavailable cluster setting flag is part of core. This setting is not getting recognized when we update seed_nodes cluster setting.
Can you please move it back to opensearch


where is the changelog?

Hi, Sorry, looked everywhere, but I could not find the change log? Do I nee to read the commits?

yeah unfortunately. we are working to get the repo in a place where we can generate them again, but at the moment the commit history is your best bet 👍


Check W3C link checker tool for improvement ideas

I recently learned about the W3C link checker, a free tool available at https://metacpan.org/release/DHM/W3C-LinkChecker-5.0.0/source/bin/checklink
From a cursory look, the feature set is quite impressive. Maybe we can integrate the missing parts into lychee.

Converting this issue to a discussion, since it doesn't track any kind of planned work but it's still valuable for future reference.


Reorganize dependencies

Some proposed changes to the geemap dependencies:

requirements.txt: this will include the core dependencies, such as earthengine-api, ipyleaflet, folium, ipyevents, etc.
requirements_extra.txt: this will include extra dependencies, such as ee_extra, gdown, geeadd, ipytree, whiteboxgui.
requirements_all.txt: this include all optional dependencies, such as geopandas, sankee, ffmpeg, etc.

As a result, installing geemap using pip will be as follows:

pip install geemap
pip install geemap[extra]
pip install geemap[all]

The goal is to reduce the number of core required dependencies, paving the way for potential adoption by Google Colab.

For now, the core dependencies look like this. I will see if I can further trim it down.  @jdbcode @KMarkert
geocoder, ipyfilechooser, ipytree pyperclip, and scooby can potentially be made optional as well. Need more investigation to make sure that removing them don't break the package.
bqplot
colour
earthengine-api>=0.1.347
eerepr>=0.0.4
folium>=0.13.0
geocoder
ipyevents
ipyfilechooser>=0.6.0
ipyleaflet>=0.17.0
ipytree
matplotlib
numpy
pandas
pyperclip
python-box
scooby

The following core dependencies are not available on Colab. If geemap were to be adopted by Colab, the following 15 dependencies will be installed.
bqplot: traittypes, jedi, bqplot
colour: colour
eerepr: eerepr
geocoder: ratelim, geocoder
ipyevents: ipyevents
ipyfilechooser: ipyfilechooser
ipyleaflet: xyzservices, ipyleaflet
ipytree: ipytree
pyperclip: pyperclip
python-box: python-box
scooby: scooby

The following dependencies have been changed from required to optional, moving them to requirements_extra.txt
ee_extra>=0.0.15
ffmpeg-python
gdown
geeadd>=0.5.1
geojson
pillow
pycrs
pyshp>=2.1.3
sankee>=0.1.0
whiteboxgui>=0.6.0

Colab already has plotly pre-installed. We can probably switch the charting backend from bqplot to plotly. The plotly FigureWidget provides similar functionality to bqplot.
https://plotly.com/python/figurewidget-app/


6.12.2 - Missing SubscriberEmail Implementations in order to pass tests at end of section

If following the section 6.12.2 verbatim, you'll end up with a partial implementation that is missing a few things. The code will compile, but we won't pass the tests as the email address is still just a String in the subscribe([...]) function.
Here's what I updated to make sure the tests passed.

(./src/domain/new_subscriber.rs): Updating email in the NewSubscriber from String to SubscriberEmail (and the necessary import)

(./src/routes/subscription.rs): Updating subscribe([...])...

Need to add a line to parse form.0.email into SubscriberEmaillet email = SubscriberEmail::parse(form.0.email)
	.map_err(|_| HttpResponse::BadRequest().finish())?;

Update new_subscriber variable to use the new SubscriberEmail valuelet new_subscriber = NewSubscriber { email, name };

Update insert_subscriber([...]) function's sqlx::query to use the new SubscriberEmail value with .as_ref()sqlx::query!(
    r#"
    INSERT INTO subscriptions (id, email, name, subscribed_at)
    VALUES ($1, $2, $3, $4)
    "#,
    Uuid::new_v4(),
    new_subscriber.email.as_ref(),
    new_subscriber.name.as_ref(),
    Utc::now()
)

I really loved the sections on AsRef and error-handling! I'm enjoying working through this book. This will definitely be one of my go-to's for recommended Rust reading.

Ignore me. All of this gets fixed in 6.14. I was running cargo test and not cargo test domain.


The frame will fall out

In any of the explosions, the frames fall to the ground. They are not restored during the explosion regeneration process.

Since the item frames are not destroyed directly by the creeper, it becomes difficult to prevent this.

I'll see if I can still prevent it.

During the explosion, the frames are blown away even further than the explosion itself. This is probably due to the damage from the blast. It damages the player's health at a certain distance, maybe this damage demolishes the frames from their places.

I don't know if this is fixable because if I deactivate damage from TNT, the itemframes pop up from blocks anyway because they are temporarily not there. In addition, it is difficult to determine and restore the killed/destroyed entities with a plugin.


Error on bad type

i added simple function to check for bad type files and display message of the file(s) name witch are not supported.
the supported type are listed in array , i don't know if this proper way because it mean that you need to list all the types you are supporting , i listed a few of them witch ware listed in other parts of the code
here screenshot

i added those changes :
make ext_map global variable , then use popup instead of using browser alert


[STORM-1409] Removes StormClientErrorHandler, since it is no longer used

+1 Nice finding.

LGTM +1


Xcode 15 iOS duplicate symbol linker error

After updating xcode 14 to 15.2 I started noticing linker issues with pytorch_lite pod. Here I tried building for my physical iPad.
I understand this might be a XCode Issue instead of it being a package issue.

I don't know what may be the issue, and since I changed nothing and pytorch didn't change anything, I think it's xcode
But I really don't know 😢

I don't know what may be the issue, and since I changed nothing and pytorch didn't change anything, I think it's xcode
But I really don't know 😢

no problem yea might be a xcode issue... is it working for you in 15.2 version?

I can't check right now, will check when I have some free time

I can't check right now, will check when I have some free time

No problem!! just figured it out.. another unrelated pod "async_zip" was causing the error (when installed with pytorch_lite) . I will be closing the issue now :)

I can't check right now, will check when I have some free time

No problem!! just figured it out.. another unrelated pod "async_zip" was causing the error (when installed with pytorch_lite) . I will be closing the issue now :)

Oh, glad you got It figured out, thanks for letting me know ❤


🐛 AVFoundationErrorDomain Code=-11803 "Cannot Record"

What's happening?
This is happening for us in production when the user tries to take the photo. Occurring in iPhone 13 ( 17.0.2 )
This is occurring randomly and not in every iPhone 13s. Sentry logs also shows that its been occurring in iPhone 12,14 Pro with iOs 16.6 and 16.5.1 being predominant
AVFoundationErrorDomain Code=-11803 "Cannot Record" UserInfo={AVErrorRecordingFailureDomainKey=3, NSLocalizedDescription=Cannot Record, NSLocalizedRecoverySuggestion=Try recording again.}

React Native : 0.67.5
react-native-vision-camera: 2.13.0
Also attached the logs found
Reproduceable Code
const camera = useRef(null);
  const devices = useCameraDevices('back');

  <Camera ref={camera} device={device} style={styles.preview} isActive photo />

Relevant log output
[native code] in construct
<EMAIL_ADDRESS>in <global> at line 16:21

<EMAIL_ADDRESS>in SyntheticError at line 17:14

[native code] in construct
node_modules/react-native-vision-camera/src/Camera.tsx in <global> at line 496:3

node_modules/react-native-vision-camera/src/CameraError.ts in <global> at line 133:5

[native code] in construct
node_modules/react-native-vision-camera/src/Camera.tsx in <global> at line 496:3

node_modules/react-native-vision-camera/src/CameraError.ts in <global> at line 151:32

node_modules/react-native-vision-camera/src/CameraError.ts in <global> at line 196:18

node_modules/react-native-vision-camera/src/Camera.tsx in IconToolbarAndroid at line 124:13

<EMAIL_ADDRESS>in <global> at line 44:17

<EMAIL_ADDRESS>in <global> at line 125:22

<EMAIL_ADDRESS>in <global> at line 44:17

<EMAIL_ADDRESS>in <global> at line 75:20

<EMAIL_ADDRESS>in <global> at line 82:11

node_modules/promise/setimmediate/core.js in minimal_1.configureScope$argument_0 at line 37:12

node_modules/promise/setimmediate/core.js in <global> at line 123:15

node_modules/react-native/Libraries/Core/Timers/JSTimers.js in <global> at line 248:18

node_modules/react-native/Libraries/Core/Timers/JSTimers.js in <global> at line 112:7

node_modules/react-native/Libraries/Core/Timers/JSTimers.js in <global> at line 166:5

node_modules/react-native/Libraries/Core/Timers/JSTimers.js in <global> at line 418:12

node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js in <global> at line 393:12

node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js in <global> at line 135:12

node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js in <global> at line 370:9

node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js in <global> at line 134:10

Camera Device
device:
devices: ["wide-angle-camera"]
hasFlash: true
hasTorch: false
id: "com.apple.avfoundation.avcapturedevice.built-in_video:1"
isMultiCam: false
maxZoom: 128.875
minZoom: 1
name: "Front Camera"
neutralZoom: 1
position: "front"
supportsDepthCapture: false
supportsFocus: false
supportsLowLightBoost: false
supportsParallelVideoProcessing: true
supportsRawCapture: false

Device
iPhone 13
VisionCamera Version
2.13.0
Can you reproduce this issue in the VisionCamera Example app?
No, I cannot reproduce the issue in the Example app
Additional information

[ ] I am using Expo
[ ] I have enabled Frame Processors (react-native-worklets-core)
[X] I have read the Troubleshooting Guide
[X] I agree to follow this project's Code of Conduct
[X] I searched for similar issues in this repository and found none.

Hi! Is there any way you could drop the native logs (symbolicated) here as well?

For Sentry: Debug Symbols (symbolicate)

Hey! Two weeks no reply, I'm closing this for now.
If you have more information, please post them here and I'll gladly re-open the issue.

As per this StackOverflow post:

Having your device restrict the camera access under "Settings > General > Restrictions" will also give you this error.

Could it be that the user disabled Camera access? In that case, useCameraPermission() would probably return "restricted". Do you check for that?

Also, searching for this error on StackOverflow could be of help.
Please let me know if you find anything so I can fix it upstream in VisionCamera!

I'm getting this on iOS on Vision 4.3.2 up to 900 times per day with about 10k daily active users. It looks like
Error Domain=AVFoundationErrorDomain Code=-11803 "Cannot Record" UserInfo={AVErrorRecordingFailureDomainKey=3, NSLocalizedDescription=Cannot Record, NSLocalizedRecoverySuggestion=Try recording again.}
I am using useCameraPermission's hasPermission and requestPermission functions.
      if (!hasCameraPermission && Platform.OS === 'ios') {
        const newPermission = await requestCameraPermission();
        if (!newPermission) {
          Toast.show({
            description: t('permissions.camera.weNeedPermissions'),
            placement: 'top',
          });
        }
      }

That's not enough info for me, and also what does "cannot record" have to do with permissions?
I'd need an issue with logs and your code snippet usage of the Camera component + startRecording

Apologies, I was referring to your comment on this issue originally:

Could it be that the user disabled Camera access? In that case, useCameraPermission() would probably return "restricted". Do you check for that?

Ah I see - well hm then I don't know, I haven't seen this before. You'd need to create an issue with logs and repro

I also faced the same @mrousavy

I have the same issue here in a simple app. And I also have seen this issue being reported at Apple Developer's forum.


Various improvements to about page

use https for m.joind.in links
Use urlFor for apps page link
Correct capitalisation for product names
Link to code of conduct
Link to Freenode's webchat system
No need for quotes around claim

Thanks, I hand-diffed and took everything plus a few other changes I made :)


[Android] rightTitle text cut issue

Using latest master. setting rightButton={{ right: 0 }} fixes the issue
https://github.com/aksonov/react-native-router-flux/blob/9796b8fe485f8e8e43b3813c84f507b5ed7ddcec/src/NavBar.js#L316

not working

+1 here

Got this issue but fixed it with {{ marginLeft: 5, marginRight: 5 }} (doesn't have to be 5, just something to balance out the marginLeft shift)


CronJob update api v1beta1 -> v1

Support kubernetes v1.25

Sorry for the long reply, the issue was fixed in https://github.com/deckhouse/k8s-image-availability-exporter/pull/68
I'm going to close this PR.


Can I customize the request header

I want to use it with the qcloud-documents  interface. I need to customize the request header. flysystem-qcloud-cos-v5  How do I add it

$disk = Storage::disk('cosv5');

// create a file
$disk->put('avatars/1', $fileContents, ['params' => [
    'ContentType' => 'image/png',
]]);

available parameters,  see https://github.com/tencentyun/cos-php-sdk-v5/blob/master/src/Qcloud/Cos/Service.php#L1191

try
$disk = Storage::disk('cosv5');

// create a file
$disk->put('avatars/1', $fileContents, ['params' => [
    'PicOperations' => '{"is_pic_info":1,"rules":[{"fileid":"test.jpg","rule":"imageView2/format/png"}]}',
]]);

Thank you very much for your help, your code can be implemented.I also have a question, how to judge whether the file has been uploaded successfully?  It seems that there is no information returned, so we can only judge by try catch


Use correct symbol for “trash cost” in card summary

The card summary currently uses the “trash ability” symbol, to represent “trash cost”.
Nisei has (in their Visual Assets) the correct symbols for both “trash ability” and “trash cost”. These exist in the Discord group as :trashability: and :trashcost:.
The card summary should display the correct symbol for each meaning.

I have implemented a fix for this in the branch ‘wip/issue/44/card-summary-trashcost-symbol’ in my personal fork repository.
The branch currently merges cleanly to ‘v1.0.x’ branch.


Retexturing of the radial menu & abilities

Radial background: https://github.com/LtxProgrammer/Changed-Minecraft-Mod/tree/master/src/main/resources/assets/changed/textures/gui/radial
Abilities: https://github.com/LtxProgrammer/Changed-Minecraft-Mod/tree/master/src/main/resources/assets/changed/textures/abilities

https://user-images.githubusercontent.com/106349281/212494038-bb54f14a-233e-43ee-99ad-34f68b3360bc.mp4

Finished with 1e86c8f03f3b81555d6ebd7ec21da1ca75549481


Name & Version inside charts are showing translation instead of text

Go to Apps & Marketplace
Click on any Chart

[ ] The Name & Version field titles says: %catalog.install.charts% & %catalog.install.version%.

Fixed


Find and setup more realistic model for fraud detection

Development in kantoniak/mflow-fraud.

Development in kantoniak/mflow-fraud.


[bug] Aeotec Smart Switch 6 - Fails to complete Interview

Version
1.0.0-alpha.2.51f715c
Build/Run method

[ ] Docker
[ ] PKG
[x] Manually built (git clone - npm install - npm run build )

zwavejs2mqtt version: 1.0.0-alpha.2.51f715c
Describe the bug
After a few hours, all my devices have reached "Complete" but
the Aeotec Smart Switch 6 still never reaches "Complete".
Note: This is a case of transitioning from OZW/zwave2mqtt to zwavejs2mqtt.
Note: The Smart Switch 6 has been operational with OZW/zwave2mqtt.
The Smart Switch 6 reports  power/energy meter updates about every 60 sec.
To Reproduce
Steps to reproduce the behavior:
(With "Log to file" set to on)

GUI Refresh Info (in my case the Smart Switch 6 is node 6).
The following zwave-js2mqtt logs:

14:22:01.691 CNTRLR   [Node 006] Beginning interview - last completed stage: None
14:22:01.692 CNTRLR   [Node 006] new node, doing a full interview...
14:22:01.693 CNTRLR » [Node 006] querying protocol info...
14:22:01.719 CNTRLR « [Node 006] received response for protocol info:
                      basic device class:    Static Controller
                      generic device class:  Binary Switch
                      specific device class: Binary Power Switch
                      is a listening device: true
                      is frequent listening: false
                      is a routing device:   true
                      is a secure device:    unknown
                      is a beaming device:   true
                      maximum baud rate:     40000 kbps
                      version:               4
14:22:01.719 CNTRLR   [Node 006] Interview stage completed: ProtocolInfo
14:22:01.720 CNTRLR » [Node 006] pinging the node...
14:22:01.859 CNTRLR « [Node 006] ping successful
14:22:01.860 CNTRLR » [Node 006] querying node info...
14:22:02.165 CNTRLR « [Node 006] node info received
                      supported CCs:
                      · Z-Wave Plus Info
                      · Binary Switch
                      · Multilevel Switch
                      · Color Switch
                      · Configuration
                      · All Switch
                      · Meter
                      · Clock
                      · Association
                      · Association Group Information
                      · Manufacturer Specific
                      · Version
                      · Firmware Update Meta Data
                      · Powerlevel
                      controlled CCs:
                      · Device Reset Locally
                      · Hail
14:22:02.199 CNTRLR   [Node 006] Interview stage completed: NodeInfo
14:22:02.204 CNTRLR   [Node 006] ManufacturerSpecificCC: doing a complete interview...
14:22:02.204 CNTRLR » [Node 006] querying manufacturer information...
14:22:02.509 CNTRLR « [Node 006] received response for manufacturer information:
                        manufacturer: AEON Labs (0x86)
                        product type: 0x0103
                        product id:   0x60
14:22:02.510 CNTRLR   [Node 006] trying to load device config
14:22:02.511 CNTRLR   [Node 006] no device config loaded
14:22:02.540 CNTRLR   [Node 006] VersionCC: doing a complete interview...
14:22:02.541 CNTRLR » [Node 006] querying node versions...
14:22:02.860 CNTRLR « [Node 006] received response for node versions:
                        library type:      Enhanced Slave (0x03)
                        protocol version:  4.5
                        firmware versions: 1.3
14:22:02.860 CNTRLR » [Node 006] querying CC versions...
14:22:02.860 CNTRLR » [Node 006]   querying the CC version for Binary Switch...
14:22:03.205 CNTRLR   [Node 006]   supports CC Binary Switch (0x25) in version 1
14:22:03.206 CNTRLR   [Node 006]   skipping query for All Switch (0x27) because max implemented vers
                      ion is 0
14:22:03.207 CNTRLR » [Node 006]   querying the CC version for Z-Wave Plus Info...
14:22:03.555 CNTRLR   [Node 006]   supports CC Z-Wave Plus Info (0x5e) in version 2
14:22:03.556 CNTRLR » [Node 006]   querying the CC version for Multilevel Switch...
14:22:03.904 CNTRLR   [Node 006]   supports CC Multilevel Switch (0x26) in version 2
14:22:03.904 CNTRLR » [Node 006]   querying the CC version for Color Switch...
14:22:04.253 CNTRLR   [Node 006]   supports CC Color Switch (0x33) in version 1
14:22:04.253 CNTRLR » [Node 006]   querying the CC version for Configuration...
14:22:04.609 CNTRLR   [Node 006]   supports CC Configuration (0x70) in version 1
14:22:04.615 CNTRLR » [Node 006]   querying the CC version for Meter...
14:22:04.956 CNTRLR   [Node 006]   supports CC Meter (0x32) in version 3
14:22:04.957 CNTRLR   [Node 006]   skipping query for Clock (0x81) because max implemented version i
                      s 1
14:22:04.957 CNTRLR » [Node 006]   querying the CC version for Association...
14:22:05.309 CNTRLR   [Node 006]   supports CC Association (0x85) in version 2
14:22:05.310 CNTRLR » [Node 006]   querying the CC version for Association Group Information...
14:22:05.655 CNTRLR   [Node 006]   supports CC Association Group Information (0x59) in version 1
14:22:05.655 CNTRLR » [Node 006]   querying the CC version for Manufacturer Specific...
14:22:06.008 CNTRLR   [Node 006]   supports CC Manufacturer Specific (0x72) in version 2
14:22:06.009 CNTRLR » [Node 006]   querying the CC version for Version...
14:22:06.357 CNTRLR   [Node 006]   supports CC Version (0x86) in version 2
14:22:06.358 CNTRLR » [Node 006]   querying the CC version for Firmware Update Meta Data...
14:22:06.717 CNTRLR   [Node 006]   supports CC Firmware Update Meta Data (0x7a) in version 2
14:22:06.718 CNTRLR   [Node 006]   skipping query for Powerlevel (0x73) because max implemented vers
                      ion is 0
14:22:06.718 CNTRLR   [Node 006]   skipping query for Device Reset Locally (0x5a) because max implem
                      ented version is 1
14:22:06.719 CNTRLR   [Node 006]   skipping query for Hail (0x82) because max implemented version is
                       1
14:22:06.720 CNTRLR   [Node 006] trying to load device config
14:22:06.738 CNTRLR   [Node 006] device config loaded
14:22:06.755 CNTRLR   [Node 006] ZWavePlusCC: doing a complete interview...
14:22:06.756 CNTRLR » [Node 006] querying Z-Wave+ information...
14:22:16.960 CNTRLR   [Node 006] Interview attempt 1/5 failed, retrying in 5000 ms...
14:22:21.961 CNTRLR   [Node 006] Beginning interview - last completed stage: NodeInfo
14:22:21.967 CNTRLR   [Node 006] ManufacturerSpecificCC: doing a partial interview...
14:22:21.968 CNTRLR   [Node 006] trying to load device config
14:22:21.970 CNTRLR   [Node 006] no device config loaded
14:22:21.996 CNTRLR   [Node 006] VersionCC: doing a partial interview...
14:22:21.997 CNTRLR   [Node 006] trying to load device config
14:22:22.011 CNTRLR   [Node 006] device config loaded
14:22:22.012 CNTRLR   [Node 006] ZWavePlusCC: doing a complete interview...
14:22:22.013 CNTRLR » [Node 006] querying Z-Wave+ information...
14:22:32.158 CNTRLR   [Node 006] Interview attempt 2/5 failed, retrying in 10000 ms...
14:22:42.160 CNTRLR   [Node 006] Beginning interview - last completed stage: NodeInfo
14:22:42.165 CNTRLR   [Node 006] ManufacturerSpecificCC: doing a partial interview...
14:22:42.166 CNTRLR   [Node 006] trying to load device config
14:22:42.167 CNTRLR   [Node 006] no device config loaded
14:22:42.191 CNTRLR   [Node 006] VersionCC: doing a partial interview...
14:22:42.192 CNTRLR   [Node 006] trying to load device config
14:22:42.203 CNTRLR   [Node 006] device config loaded
14:22:42.204 CNTRLR   [Node 006] ZWavePlusCC: doing a complete interview...
14:22:42.204 CNTRLR » [Node 006] querying Z-Wave+ information...
14:22:52.353 CNTRLR   [Node 006] Interview attempt 3/5 failed, retrying in 15000 ms...
14:23:07.354 CNTRLR   [Node 006] Beginning interview - last completed stage: NodeInfo
14:23:07.360 CNTRLR   [Node 006] ManufacturerSpecificCC: doing a partial interview...
14:23:07.361 CNTRLR   [Node 006] trying to load device config
14:23:07.362 CNTRLR   [Node 006] no device config loaded
14:23:07.386 CNTRLR   [Node 006] VersionCC: doing a partial interview...
14:23:07.387 CNTRLR   [Node 006] trying to load device config
14:23:07.403 CNTRLR   [Node 006] device config loaded
14:23:07.404 CNTRLR   [Node 006] ZWavePlusCC: doing a complete interview...
14:23:07.405 CNTRLR » [Node 006] querying Z-Wave+ information...
14:23:17.555 CNTRLR   [Node 006] Interview attempt 4/5 failed, retrying in 20000 ms...
14:23:37.556 CNTRLR   [Node 006] Beginning interview - last completed stage: NodeInfo
14:23:37.562 CNTRLR   [Node 006] ManufacturerSpecificCC: doing a partial interview...
14:23:37.564 CNTRLR   [Node 006] trying to load device config
14:23:37.565 CNTRLR   [Node 006] no device config loaded
14:23:37.587 CNTRLR   [Node 006] VersionCC: doing a partial interview...
14:23:37.588 CNTRLR   [Node 006] trying to load device config
14:23:37.599 CNTRLR   [Node 006] device config loaded
14:23:37.600 CNTRLR   [Node 006] ZWavePlusCC: doing a complete interview...
14:23:37.600 CNTRLR » [Node 006] querying Z-Wave+ information...
14:23:47.745 CNTRLR   [Node 006] Failed all interview attempts, giving up.

Weird, mine appear to be fine though I’ll rediscover them later and confirm. Can you verify what firmware version you have?

Weird, mine appear to be fine though I’ll rediscover them later and confirm. Can you verify what firmware version you have?

Managed to get the following:
2021-01-12 15:35:16.097 INFO APP: Zwave api call: refreshInfo [ 6, [length]: 1 ]
2021-01-12 15:35:16.134 INFO ZWAVE: Success zwave api call refreshInfo
2021-01-12 15:35:16.987 INFO ZWAVE: Node 6: value added: 114-0-manufacturerId => 134
2021-01-12 15:35:16.989 INFO ZWAVE: Node 6: value added: 114-0-productType => 259
2021-01-12 15:35:16.992 INFO ZWAVE: Node 6: value added: 114-0-productId => 96
2021-01-12 15:35:17.388 INFO ZWAVE: Node 6: value added: 134-0-libraryType => 3
2021-01-12 15:35:17.390 INFO ZWAVE: Node 6: value added: 134-0-protocolVersion => 4.5
2021-01-12 15:35:17.391 INFO ZWAVE: Node 6: value added: 134-0-firmwareVersions => 1.3

I'll also throw this corresponding driver log which shows something about invalid data received (and not sure it is from node 6).
I do see this from time to time, but it doesn't always show up.
15:35:17.036 CNTRLR » [Node 006] querying node versions...
15:35:17.138 DRIVER   Message with invalid data received. Dropping it:
                      0x0120000400021a98815814daa89f4d9d886c7332621905f02d91cc35a326d3509e5d
15:35:17.402 CNTRLR « [Node 006] received response for node versions:
                        library type:      Enhanced Slave (0x03)
                        protocol version:  4.5
                        firmware versions: 1.3

Managed to get the following:
2021-01-12 15:35:16.097 INFO APP: Zwave api call: refreshInfo [ 6, [length]: 1 ]
2021-01-12 15:35:16.134 INFO ZWAVE: Success zwave api call refreshInfo
2021-01-12 15:35:16.987 INFO ZWAVE: Node 6: value added: 114-0-manufacturerId => 134
2021-01-12 15:35:16.989 INFO ZWAVE: Node 6: value added: 114-0-productType => 259
2021-01-12 15:35:16.992 INFO ZWAVE: Node 6: value added: 114-0-productId => 96
2021-01-12 15:35:17.388 INFO ZWAVE: Node 6: value added: 134-0-libraryType => 3
2021-01-12 15:35:17.390 INFO ZWAVE: Node 6: value added: 134-0-protocolVersion => 4.5
2021-01-12 15:35:17.391 INFO ZWAVE: Node 6: value added: 134-0-firmwareVersions => 1.3

I'll also throw this corresponding driver log which shows something about invalid data received (and not sure it is from node 6).
I do see this from time to time, but it doesn't always show up.
15:35:17.036 CNTRLR » [Node 006] querying node versions...
15:35:17.138 DRIVER   Message with invalid data received. Dropping it:
                      0x0120000400021a98815814daa89f4d9d886c7332621905f02d91cc35a326d3509e5d
15:35:17.402 CNTRLR « [Node 006] received response for node versions:
                        library type:      Enhanced Slave (0x03)
                        protocol version:  4.5
                        firmware versions: 1.3


Expiry and Valid From dates are incorrect

The validity and expiry dates on the Token object do not match up with the displayed dates on the COVID pass.
I have tried to shift them from UTC to NZT but this also does not work, it seems they are just a date rather than datetime.
Does the MoH give these date values as unix time? If so, can the time also be preserved?
var validFrom = result.Token.ValidFrom;
var validTo = result.Token.ValidTo;

In this image, these are the times in the token, but they are back by one day.

Thanks for reporting this issue.
There were two problems here:

The time component was incorrectly being removed when converting between DateTimeOffset and DateTime for the ValidTo/ValidFrom properties.
The DateTimeKind wasn't being preserved which complicated conversion between time zones.

These issues are resolved in the 0.5.1 release.
You can use either of the following approaches to convert the UTC times represented by the token to a given timezone:
// Convert to local time zone
DateTime validToLocal = result.Token.ValidTo.ToLocalTime();
DateTimeOffset expiryLocal = result.Token.Expiry.ToLocalTime();

Debug.Assert(validToLocal == expiryLocal);

// Or converting to a specific time zone
TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById("New Zealand Standard Time");

DateTime validToSpecificTimeZone = TimeZoneInfo.ConvertTimeFromUtc(result.Token.ValidTo, timeZone);
DateTimeOffset expirySpecificTimeZone = TimeZoneInfo.ConvertTime(result.Token.Expiry, timeZone);

Debug.Assert(validToSpecificTimeZone == expirySpecificTimeZone);

Thanks for that quick update, this now gives the correct result in my application. Both dates reporting as the 20th after conversion, instead of the incorrect date of 19th.
For reference, I used the ConvertTimeFromUtc approach, and still using Token.ValidFrom and Token.ValidTo.

Just wanted to say this is working excellently after deployment and use, I am making a privacy focused verification tool, if you'd like to see your work in action :)
https://github.com/TheGuardianWolf/NzCovidPassTelegramBot
Also let me know if you'd need some help, always up to contributing upstream, but my understanding of the whole token specifics might be a bit lacking.

Really nice project! Always happy for contributions to be made :)


Fill pattern image do not show in Chrome browser, but is ok in Firefox & Safari browser.

I found that when I fill a shape with pattern image, the image do not show in Chrome browser. But it's ok in Firefox & Safari browser.
code :
        let img = new Image();
        img.src= './p.png';
        img.onload = () =>{
            var circle = new zrender.Circle({
                shape: {
                    cx: 100,
                    cy: 100,
                    r:80
                },
                style: {
                    fill: {
                        image: img
                    },
                    stroke: '#00FF00',
                },
            });
            zr.add(circle)
        };

view in Chrome:

view in Firefox:

anybody see that!

chrome version and zrender version? i try in chrome is ok

Finally Ok, may be someone  extension in my Chrome make this problem, after reinstall same version Chrome everything ok.  thanks for @llcat


Payments: redirectURL behaviour

I'm having an issue understanding the correct redirectURL behaviour for payments.
DeepLink way
Let's say I have a deepLink in my app "myApp://app/payment-confirm"

I will set KevinPaymentsConfig redirectURL to "myApp://app/payment-confirm"
I will initiate kevin bank payment with the same redirectURL.

On android:
redirectURL gets ignored and just a simple callback is called on the apps flutter code.
OK if we rely on app pinging the backend for a successful payment
On iOS
Kevin SDK hangs on last step where it says "Redirecting to..." after payment is complete. I think it because it's not valid link like "https://....".
NOT OK!!! Even if the payment was complete I can only close the dialog after which I will receive a  callback with "payment was cancelled" status
Now the other part with valid link

I will set KevinPaymentsConfig redirectURL to "localhost:3000/payment-confirm"
I will initiate kevin bank payment with the same redirectURL.

On android:
redirectURL gets ignored and just a simple callback is called on the app.
OK if we rely on app pinging the backend for a successful payment
On iOS
redirectURL gets called with correct query parameters I also see website flashing for a few miliseconds  and then the callback on flutter side is called. -
Perfect
Can we have a consistency here?
I would prefer having our backend as a redirectUrl consumer instead of deep link.
But I want kevin-flutter SDK to be responsable for calling it on Android aswell.
P.S. Ofcourse I can set redirectUrl to "https://www.google.com" then totaly ignore it and only operate from flutter callback. But I don't think that this is the prefered flow because going back to the app causes additional steps to be taken. More steps = more ways for a crashes to happen. And I think developers would feel safer if your SDK would ping redirectURL instead relying on developers to have a crash free process to notify the backend sistems...
EDIT: Added videos below

iOS with deepLink:
https://user-images.githubusercontent.com/52245569/194494111-0937af61-5bd5-452c-a9f0-ecdc27e57037.mp4
iOS with valid link:
https://user-images.githubusercontent.com/52245569/194494227-363c5d3d-c4b7-44ce-8279-04ac64af79a2.mp4
Android (works same - ignores the redirectURL both ways)
https://user-images.githubusercontent.com/52245569/194495559-8e9beb87-8c2e-4f06-9730-32df1fb5cb7d.mp4

@antons-zubkovs OK, but this way iOS will ping BE once more because as I mentioned it open it in kevinSDK as a webview blinks for few MS and goes back to the app. It's fine by us but would prefer same flow for both platforms.

@KestasVenslauskas as I mentioned above, that behaviour is not really supported and designed by us, so you will need to introduce some workarounds. You can try to set different callbackUrls for Android, but use same urls for iOS, for example.

The callbackUrl, which you provide during payment/linking initialisation on your BE side, is called after payment/linking flow is completed, having some operation's status payload

It's not called on android it's completely ignored. Where on iOS it is called because iOS always makes a call to to callbackUrls at the end of the payment.
Using different callbackUrls for initialization & mobile SDK works if we redirect back to initialization callbackUrl. But this is still a workaround. So there is no out-of-the-box trigger that Kevin would send to our BE informing about successful payment?

@antons-zubkovs
https://api-reference.kevin.eu/public/platform/v0.2#tag/Payment-Initiation-Service/operation/initiatePayment
I think we can ignore Redirect-URL as it's used on client only for redirecting back to the calling app.
What I missed is Webhook-URL which should do the work I need.

@KestasVenslauskas it's not ignored on Android, it is being intercepted. If your payment/linking flow is happening inside the kevin's WebView, then WebView listens to current URL changes, and, in case of callbackUrl (which you have set during kevin's initialisation), it prevents WebView from navigating to that URL and takes it's payload to digest and send you the result.
I believe, that Webhook-URL is indeed what you might be looking for.

@antons-zubkovs Hi again. As we are starting actual implementation of kevinPayments we face the same issue that iOS does not intercept custom schemas like kevin://... and only works http or https is this entended behaviour? As I see you workaround this issue aswell in example app. Is this mentioned somewhere in documentation?

@KestasVenslauskas hello, we went with Universal Links for iOS, because it's:

Apple suggested way
We faced some issues with custom schemes

That's way there is an option in the plugin to define different callbacks for android/iOS. You may try to handle it via custom schemes, but we personally use https schemes for iOS.
For android to use https scheme, your app has to be approved for the specific domain contained in that web intent (according to docs).

@antons-zubkovs For now we will stick to the same implementation as in the example app until we have our website ready for universal links. We didn't managed to make it work with custom schemes on iOS. Please mention this somewhere in your documentation so there will be no more confusion for other devs.


User search should support regular expressions

I could work on it this weekend if you like.

We should probably hear a few more opinions

👎 to regex search. Regexes are the worst kind of UX you could expect 😅
However, 👍 for a more flexible search. I have something in progress in #856. It's working exactly as it should but implementation is a bit meh.
I'd love some opinions on how to make it better :)

Well, what if it was implemented in a way where you definitely -want- to use regex? i.e. starting the search with / and making sure its valid; if not, just search for it like normal

User search, as in finding users in the user list? What are the use cases for regex there?
@astorije is quite right that the UX of regex is terrible for the average user. Fuzzy matching, already being worked on as stated, is much less arcane and still very useful for filtering through long lists of nicknames.

Yeah, I'm not sure why you would want regex search, tbh. Fuzzy searching should give you all the advantages, yeah?

Yeah fuzzy is all that's needed