auth: new authentication library

Origin: Original
New authentication library for authenticating devices, key features:

Two auth methods, DTLS and Challenge-Response.
Transport independent, initial support for serial and Bluetooth.
Multiple authentication instances.
Refer to ZAUTH RFC for more details:
https://github.com/zephyrproject-rtos/zephyr/issues/23465

Signed-off-by: Dean Gereaux<EMAIL_ADDRESS>

There is definitely some merit in a library like this for communication over a reasonably secured channel, such as a physical connection to a device, or something where the underlying protocol uses authenticated encryption (such as BT). Using DTLS this way is still a little unusual, I think it would be better to have subsequent traffic go through the DTLS session. SASL does provide an X.509 authentication method that could be used for this type of authentication, but again, that is only really meaningful if the underlying channel is already secured in some manner.

There is definitely some merit in a library like this for communication over a reasonably secured channel, such as a physical connection to a device, or something where the underlying protocol uses authenticated encryption (such as BT). Using DTLS this way is still a little unusual, I think it would be better to have subsequent traffic go through the DTLS session. SASL does provide an X.509 authentication method that could be used for this type of authentication, but again, that is only really meaningful if the underlying channel is already secured in some manner.

Thanks for reviewing and the feedback.
A little history to provide some context.  This effort was stared from a requirement for a wireless lighting control system I worked on. The nodes and mobile application communicated over a secure BT link and had to be authenticated.  Since the light controls (small low cost, low power devices) needed to authenticate each other autonomously, a certificate based approach along with DTLS was ideal.  Especially since the secure hardware elements (Microchip ATECC608B) provided the ability to securely store X.509 certs and ECC keys.  Another project I worked on needed to authenticate a heart monitor chest pads, the pad output didn’t need to be encrypted.
I do agree with you, not having the ability to encrypt subsequent messages over a link after authenticating can be of limited value.   I seriously contemplated adding encrypting subsequent messages, but wanted to limit the scope of this initial version.  However I’m happy to add this ability to make this authentication library more useful.  The authentication library design is pluggable, so adding SCRAM is very doable, I’ll investigate adding this.
If you want, we can talk more during the next API or Devel meeting, or some other time, just email me (deang@goldenbits.com).  Bottom line: I’m happy to work with the Zephyr team to make this Authentication library useful.

Thanks for reviewing and the feedback.
A little history to provide some context.  This effort was stared from a requirement for a wireless lighting control system I worked on. The nodes and mobile application communicated over a secure BT link and had to be authenticated.  Since the light controls (small low cost, low power devices) needed to authenticate each other autonomously, a certificate based approach along with DTLS was ideal.  Especially since the secure hardware elements (Microchip ATECC608B) provided the ability to securely store X.509 certs and ECC keys.  Another project I worked on needed to authenticate a heart monitor chest pads, the pad output didn’t need to be encrypted.
I do agree with you, not having the ability to encrypt subsequent messages over a link after authenticating can be of limited value.   I seriously contemplated adding encrypting subsequent messages, but wanted to limit the scope of this initial version.  However I’m happy to add this ability to make this authentication library more useful.  The authentication library design is pluggable, so adding SCRAM is very doable, I’ll investigate adding this.
If you want, we can talk more during the next API or Devel meeting, or some other time, just email me (deang@goldenbits.com).  Bottom line: I’m happy to work with the Zephyr team to make this Authentication library useful.

I guess it kind of comes down to what the goals are. There may be some use for a naive authentication over an unencrypted channel, when that channel could be considered secure, especially in very resource-constrained devices. As long as people using this realize that there isn't really very much security gained by doing this. Using an authentication mechanism over an already secure channel (such as a BT connection) is more useful.
Overall, this does seem like a reasonable approach.
I do wonder if something like GSSAPI would be too complex for the Zephyr environment. It has the advantage of being a standard API.

I guess it kind of comes down to what the goals are. There may be some use for a naive authentication over an unencrypted channel, when that channel could be considered secure, especially in very resource-constrained devices. As long as people using this realize that there isn't really very much security gained by doing this. Using an authentication mechanism over an already secure channel (such as a BT connection) is more useful.
Overall, this does seem like a reasonable approach.
I do wonder if something like GSSAPI would be too complex for the Zephyr environment. It has the advantage of being a standard API.

I put some comments in parts of the code, but I share @d3zd3z concerns and I think we should elaborate / discuss more the pros/cons of adopting an existent standard

I put some comments in parts of the code, but I share @d3zd3z concerns and I think we should elaborate / discuss more the pros/cons of adopting an existent standard

@ceolin  Thanks for reviewing the PR.  Yes I agree we should discuss using a standard challenge-response.  Maybe during next Tuedays’ API meeting, if not Thurday's Devel call?  Hopefully @d3zd3z can join.

@ceolin  Thanks for reviewing the PR.  Yes I agree we should discuss using a standard challenge-response.  Maybe during next Tuedays’ API meeting, if not Thurday's Devel call?  Hopefully @d3zd3z can join.

@d3zd3z  I added new functions to send/recv messages using DLTS after the initial handshake.  This provides some nice additional functionality for users.   For authentication methods besides DTLS,  a “hook” can be added enabling the user to write their own encrypt/decrypt code.  I’d like to get some user feedback and/or requests for this functionality before adding it.
Regarding GSSAPI,  this might be something that’s layered on top of Zauth eventually.   One of my goals was to keep the interface simple to encourage use vs. a heavier API like GSSAPI.

@d3zd3z  I added new functions to send/recv messages using DLTS after the initial handshake.  This provides some nice additional functionality for users.   For authentication methods besides DTLS,  a “hook” can be added enabling the user to write their own encrypt/decrypt code.  I’d like to get some user feedback and/or requests for this functionality before adding it.
Regarding GSSAPI,  this might be something that’s layered on top of Zauth eventually.   One of my goals was to keep the interface simple to encourage use vs. a heavier API like GSSAPI.

@dleach02  Latest commit removes wrapper around  *_rand() and explicitly uses sys_csrand_get()

@dleach02  Latest commit removes wrapper around  *_rand() and explicitly uses sys_csrand_get()

@ceolin @d3zd3z   I added an explicit warning in the docs about how the Challenge-Response does not provide security for subsequent messages and how DTLS can be used for follow-on secure messages.
I spent some time reviewing/read specs for GSSAPI.   It seems GSSAPI is suited for handling authentication for web base apps or enterprise level networks vs. small embedded devices which ZAUTH is targeting.  Regarding SCRAM, mentioned in this PR, might be good to add later.  All of the Challenge-Response uses cases I’ve worked on are straight forward and do not require something like SCRAM.  For example, authenticating a printer cartridge or an attached display.  But yes this all depends on the application and risk associated with exposing printer commands or displaying incorrect messages.
Regardless, I’m happy to talk and decide what is the best path forward for this PR.
Thanks

@ceolin @d3zd3z   I added an explicit warning in the docs about how the Challenge-Response does not provide security for subsequent messages and how DTLS can be used for follow-on secure messages.
I spent some time reviewing/read specs for GSSAPI.   It seems GSSAPI is suited for handling authentication for web base apps or enterprise level networks vs. small embedded devices which ZAUTH is targeting.  Regarding SCRAM, mentioned in this PR, might be good to add later.  All of the Challenge-Response uses cases I’ve worked on are straight forward and do not require something like SCRAM.  For example, authenticating a printer cartridge or an attached display.  But yes this all depends on the application and risk associated with exposing printer commands or displaying incorrect messages.
Regardless, I’m happy to talk and decide what is the best path forward for this PR.
Thanks

I do think there are decent uses of a simplistic authentication library for Zephyr, as long as we are clear that there are security tradeoffs being made with regards to code size and complexity. For something like authenticating an attached piece of hardware, and the likes, just authenticating, and then not worrying about the security of the resulting transmission probably makes sense.

I do think there are decent uses of a simplistic authentication library for Zephyr, as long as we are clear that there are security tradeoffs being made with regards to code size and complexity. For something like authenticating an attached piece of hardware, and the likes, just authenticating, and then not worrying about the security of the resulting transmission probably makes sense.

@dleach02    I had to add back the insecure random number generator, sys_rand_get(), in order to pass CI tests. Maybe there’s a way to use sys_csrand_get() when running twister tests, but dang I couldn’t find it.  I did add warnings in the code,  I’ll also update the documentation warning about using the insecure generator.

@dleach02    I had to add back the insecure random number generator, sys_rand_get(), in order to pass CI tests. Maybe there’s a way to use sys_csrand_get() when running twister tests, but dang I couldn’t find it.  I did add warnings in the code,  I’ll also update the documentation warning about using the insecure generator.

@dleach02 I had to add back the insecure random number generator, sys_rand_get(), in order to pass CI tests.

This is a bit deeper of a problem than just this change. At one point, we had an insecure source of entropy available, but this is a pretty bad idea if it makes it into an actual device. (e.g. Netscape).
@dleach02 How do we solve this for other users of the crypto random sources? Do we need to come up with a more general solution here? It is probably ok to have insecure random numbers on CI targets, but we really need to make sure that never makes it onto an actual device.
I don't think the solution is to put the weakness into this auth code. The auth code needs strong random numbers, and so should be asking for them. We just need to figure out how to test this in CI.

@d3zd3z  I look hard at the test tools and system and didn’t find any way to mock out the sys_csrand_get() call.   As a solution I added a sub function in the test code here:  test/lib/authentication/sr/main.c.

There’s only one compliance check that is failing, a typedef (in auth_xport.h,  typedef void *auth_xport_hdl_t) used to define an intentionally opaque transport handle.  This should be OK per the Linux coding standards

@carlescufi @d3zd3z @dleach02 @galak @MaureenHelm @nashif @ceolin @frkv   This ZAUTH PR has been aging and like a good wine it is getting better and better!!   I’d like to push this PR to the finish line here and merge.  This library will be marked as EXPERIMENTAL, as such any issues can be readily addressed reducing any risk.
Can you help me by reviewing and approving this PR?
Thanks, Dean

There doesn’t seem to be any interest in going forward and merging this ZAUTH PR.   Maybe my perception is incorrect, however I’m not seeing any feedback or comments.  I do think ZAUTH is useful and provides a solution for authentication use cases I personally have had to write code to solve.  However, if the larger Zephyr community is not interested in ZAUTH, then let’s close this PR and put it on the shelf.

Closing.


removed extraneous code/commented out code

Coverage remained the same at 96.919% when pulling b27b3388ef4ee4ea93396d57fb2290da924c38b8 on kaylyn-final-edits into 5f9a8d8b68ac5dc1410c85e7a6b40fa52a11f8e8 on staging-branch.


Transfer (Again) PTC features to DSA user type especially the Approval / Reject Feature.

PTC user type can still see:

Calendar. Left unchanged.
Create Reservation. Left unchanged.
Reservation (list) - Changes are here....

PTC cannot Approve or Reject a Pending Reservation anymore.
PTC can still Edit Reservation Notes
Remove PTC user of editing.... "Material to Use"  but useable on "Draft" Reservations. (see more below)
PTC user type (still in reservations list) STATUS FILTER - SET  "Approved" to Default.

-Profile Tabs Venues, Program, and Users. left unchanged

DSA user type can still see:

Calendar. Left unchanged.

Create Reservation. Left unchanged.

Reservation (list) - Changes are here....

DSA can now Approve or Reject a Pending Reservation (again)

DSA can still Edit Reservation Notes when Reservations become Pending/Approved. (so yes PTC and DSA can edit reservation notes)

Remove Edit... "Material to Use"  but useable this on "Draft" Reservations.
continuation for number 3.
When all user types click "update" on "Draft" Reservations.

ADD new entries

A checkbox for "Sound System", "Microphone", and a textbox for "Others please specify":
2 checkboxes (  /   ) ____Sound system , and ( / ) ____ Microphone ,

              Note: if user types down "1pc" or "2pcs and so on.... will trigger the check icon ( / ) in the PRINT SAF.
                                 otherwise, it must not have a check icon by default.... (   )

Re-use the "Material to use" textbox for "other please specify".
(these entries will also echo or be included in the printing of SAF - new content on SAF.)

SET STATUS FILTER (Reservation LIst) to ALL as default.
-Monthly Report of Activities. Left unchanged.
-Profile Tabs Venues, Program, and Users. left unchanged.
_______________________________-


include gemma.cpp

not sure if you really want to include this though, it's an edge case and was only quickly set up for testing purpose

I'm going to leave this out for now since I'm not getting good results from gemma.cpp and it's pretty edge case as you said. But appreciate your work!


Benchmark with only two accounts

Change the benchmark code such that it supports two test cases:

One that transfers money between two accounts
One that creates new accounts on the fly

I think this could be implemented relatively easily with some kind of "AccountIterator" that has two implementations:

One that always returns a new account
One that switches back and forth between two accounts

Then only the correct iterator needs to be created. I think the rest of the code does not need to be changed.

We could also just have a mode where we transfer all the money. Then the accounts will be removed and the state will not keep growing.

That is not the same, because removing and creating accounts is additional overhead

@brenzi Ok, then we can do it with Iterators. Should still be quite easy to implement.


[bug] Flaky tests

It happens every so often where a test fails like this:
Fail	||	org-roam.database should support loading a modified file when loading the directory containing it
            .../work/org-roam.nvim/org-roam.nvim/spec/database_spec.lua:113: Expected objects to be the same.
            Passed in:
            (table: 0x7f6e9c6e80[70](https://github.com/chipsenkbeil/org-roam.nvim/actions/runs/8649324800/job/23715290779#step:4:71)) {
              [2] = 1 }
            Expected:
            (table: 0x7f6e9bf103b0) {
              [2] = 1
             *[3] = 1 }

            stack traceback:
            	.../work/org-roam.nvim/org-roam.nvim/spec/database_spec.lua:113: in function <.../work/org-roam.nvim/org-roam.nvim/spec/database_spec.lua:98>

Example run: https://github.com/chipsenkbeil/org-roam.nvim/actions/runs/8649324800/job/23715290779

More examples that may be applicable
Fail	||	org-roam.api.node should create a new node and navigate to it if find with non-existing node
            .../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:324: Expected objects to be the same.
            Passed in:
            (table: 0x7fbeb5de2298) {
              [1] = ':PROPERTIES:'
             *[2] = ':ID: 1'
              [3] = ':ROAM_ALIASES: one'
              [4] = ':END:'
              [5] = '#+FILETAGS: :one:'
              [6] = ''
              [7] = '[[id:2]]' }
            Expected:
            (table: 0x7fbeb5de2208) {
              [1] = ':PROPERTIES:'
             *[2] = ':ID: 4988b77d-44c5-4f[73](https://github.com/chipsenkbeil/org-roam.nvim/actions/runs/8779467322/job/24087568006#step:4:74)-81ae-7600e4f1e327'
              [3] = ':ROAM_ORIGIN: 1'
              [4] = ':END:'
              [5] = '#+TITLE: some custom node'
              [6] = ''
              [7] = '' }

            stack traceback:
            	.../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:324: in function <.../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:290>

Fail	||	org-roam.api.node should capture by using the selected roam template
            .../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:66: missing node 6487b12f-4297-4468-b461-8b0fda46619e

            stack traceback:
            	.../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:66: in function <.../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:36>

Example run: https://github.com/chipsenkbeil/org-roam.nvim/actions/runs/8779467322/job/24087568006

Fail	||	org-roam.api.node should capture by using the selected roam template
            .../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:54: missing node 06b93801-49ef-454a-a2dd-2eb7c3d4b49e

            stack traceback:
            	.../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:54: in function <.../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:24>

Fail	||	org-roam.api.node should create a new node and insert it if selected non-existing node
            .../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:189: Expected objects to be the same.
            Passed in:
            (table: 0x7f87d5e76580) {
              [1] = ':PROPERTIES:'
              [2] = ':ID: 1'
              [3] = ':ROAM_ALIASES: one'
              [4] = ':END:'
              [5] = '#+FILETAGS: :one:'
              [6] = ''
             *[7] = '[[id:2]]' }
            Expected:
            (table: 0x7f87d5e788) {
              [1] = ':PROPERTIES:'
              [2] = ':ID: 1'
              [3] = ':ROAM_ALIASES: one'
              [4] = ':END:'
              [5] = '#+FILETAGS: :one:'
              [6] = ''
             *[7] = '[[id:4c99cf7e-ca39-4238-846c-55384fe1e8aa][some custom node]][[id:2]]' }

            stack traceback:
            	.../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:189: in function <.../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:151>

Fail	||	org-roam.api.node should create a new node and navigate to it if find with non-existing node
            .../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:312: Expected objects to be the same.
            Passed in:
            (table: 0x7f87d5e59ec8) {
              [1] = ':PROPERTIES:'
             *[2] = ':ID: 1'
              [3] = ':ROAM_ALIASES: one'
              [4] = ':END:'
              [5] = '#+FILETAGS: :one:'
              [6] = ''
              [7] = '[[id:2]]' }
            Expected:
            (table: 0x7f87d616ff88) {
              [1] = ':PROPERTIES:'
             *[2] = ':ID: 578e7e09-cf85-44f0-8edb-13c9c770e2ee'
              [3] = ':ROAM_ORIGIN: 1'
              [4] = ':END:'
              [5] = '#+TITLE: some custom node'
              [6] = ''
              [7] = '' }

            stack traceback:
            	.../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:312: in function <.../work/org-roam.nvim/org-roam.nvim/spec/api_node_spec.lua:278>

Example run: https://github.com/chipsenkbeil/org-roam.nvim/actions/runs/8794224351/job/24133334994

Fail	||	org-roam.setup.keybindings toggle_roam_buffer_fixed keybinding should open roam buffer for selected node
            ...-roam.nvim/org-roam.nvim/spec/setup_keybindings_spec.lua:442: Expected objects to be the same.
            Passed in:
            (table: 0x7efc51e784f0) {
             *[1] = '' }
            Expected:
            (table: 0x7efc51e78418) {
             *[1] = 'Press <Enter> to open a link in another window'
              [2] = 'Press <Tab> to expand/collapse a link'
              [3] = 'Press <S-Tab> to expand/collapse all links'
              [4] = 'Press <C-r> to refresh buffer'
              [5] = ''
              [6] = 'Fixed Node: two'
              [7] = 'Origin: one'
              [8] = ''
              [9] = 'Backlinks (1)'
              [10] = '▶ one @ 7,0' }

            stack traceback:
            	...-roam.nvim/org-roam.nvim/spec/setup_keybindings_spec.lua:442: in function <...-roam.nvim/org-roam.nvim/spec/setup_keybindings_spec.lua:415>

Example run: https://github.com/chipsenkbeil/org-roam.nvim/actions/runs/8795050156/job/24135507855

Closing out for now. Adding retry logic to our tests and a longer timeout fixes the issue, alongside #29 to resolve some recent failure in neovim nightly.


Improve display of profile (or lack thereof) at top of squeak address page

https://github.com/yzernik/squeaknode/pull/1822


Crash during compilation on JDK 8 when using JSpecify 0.3.0-alpha-1

NullAway branch is here:
https://github.com/uber/NullAway/tree/update-jspecify
This is the crash (see here), which comes when running ./gradlew :test-java-lib:compileJava on a JDK 8 JVM:
warning: unknown enum constant java.lang.annotation.ElementType.MODULE
warning: unknown enum constant java.lang.annotation.ElementType.MODULE
An exception has occurred in the compiler (1.8.0_345). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError: annotationType(): unrecognized Attribute name MODULE (class com.sun.tools.javac.util.UnsharedNameTable$NameImpl)
        at com.sun.tools.javac.util.Assert.error(Assert.java:133)
        at com.sun.tools.javac.code.TypeAnnotations.annotationType(TypeAnnotations.java:231)
        at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.separateAnnotationsKinds(TypeAnnotations.java:294)
        at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.visitMethodDef(TypeAnnotations.java:1066)
        at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
        at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
        at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.scan(TypeAnnotations.java:275)
        at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)

From #34 I can't tell if this was intended or not.  Do we not support using JSpecify annotations when building on JDK 8?  Building on JDK 8 is not a requirement for NullAway (we're planning to remove JDK 8 support soon); I am just wondering if this was intentional.

FWIW a possible difference between this and previous test cases is that the code being compiled uses @NullMarked and @NullUnmarked on methods:
https://github.com/uber/NullAway/blob/e1ea7f62e8c82fe578e1c18446827849dad76c39/test-java-lib/src/main/java/com/example/jspecify/unannotatedpackage/Methods.java

After further thought I realized we probably want to have NullAway support JDK 8 for some time longer, to support more open-source projects that haven't updated. So having JSpecify support building with JDK 8 would be helpful to us.

Oh, this is a good place to recall that MODULE makes annotations usable elsewhere under some versions of javac. That is a small and gross but practical reason to avoid it on the main annotation. It would also be a reason for tools to more carefully validate the locations on which annotations appear... which in turn could make the no-@Target approach more appealing, if only that approach, you know, worked :)

Thanks so much for investigating, @cpovirk.  I have one question.  Based on the stack trace and error message, I don't think this crash in JDK 8 javac is intended behavior.  Also it looks like one can at least still backport fixes to JDK 8 for future patch releases.  Here is the line of code throwing the assertion error:
https://github.com/openjdk/jdk8u-dev/blob/d285382278fcb76ceddfb61cf8bb047ff269de44/langtools/src/share/classes/com/sun/tools/javac/code/TypeAnnotations.java#L231
I wonder if we could submit a PR that changes this assertion to something less crash-y?  Like maybe emit another warning instead for an unknown enum constant?  Then at least this issue could be fixed in a future JDK 8 release, which gives us more options (like leaving things the way they are and telling users to update their JDK 8 release).  Of course this doesn't help with working around the current crash.
It looks like someone submitted an issue on this before:
https://bugs.openjdk.org/browse/JDK-8279557
They didn't have a reproducer so it got closed, but we have one now.  If we think it's worthwhile, I can try to re-open that issue or submit a new one, to see if we get feedback on the possibility of a change.  Let me know if we think that's worth a try.

Thank you! That is a better thought than any of the thoughts in my post :)
It does seem likely that upstream would like the compiler to not crash, regardless of how strange the code we feed it is.
It's possible that they could respond by changing the crash into a more normal but still fatal error, or it's possible that they don't deem this fix worth backporting. But maybe they'll see the value in making it easier for libraries to use the MODULE target. (As noted in #245, we tried solving this problem with multi-release jars instead. But it's not clear if multi-release jars are supposed to solve this problem, and regardless, they don't under some major tools today.)
Reproducing does look easy. If you're up for taking things to upstream, that would be terrific.
$ tail -n +1 *.java
==> A.java <==
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.MODULE;

import java.lang.annotation.Target;

@Target({METHOD, MODULE})
@interface A {}

==> B.java <==
class B {
  @A void b() {}
}

$ $HOME/openjdk-11.0.16/bin/javac -source 8 -target 8 -sourcepath doesnotexist A.java && $HOME/openjdk-8u342/bin/javac -cp . -sourcepath doesnotexist B.java
warning: [options] bootstrap class path not set in conjunction with -source 8
1 warning
warning: unknown enum constant ElementType.MODULE
An exception has occurred in the compiler (1.8.0_342). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError: annotationType(): unrecognized Attribute name MODULE (class com.sun.tools.javac.util.SharedNameTable$NameImpl)
        at com.sun.tools.javac.util.Assert.error(Assert.java:133)
        at com.sun.tools.javac.code.TypeAnnotations.annotationType(TypeAnnotations.java:231)
        at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.separateAnnotationsKinds(TypeAnnotations.java:294)
        at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.visitMethodDef(TypeAnnotations.java:1066)
        at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
        at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
        at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.scan(TypeAnnotations.java:275)
        at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
        at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.visitClassDef(TypeAnnotations.java:1042)
        at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:693)
        at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
        at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.scan(TypeAnnotations.java:275)
        at com.sun.tools.javac.code.TypeAnnotations$1.run(TypeAnnotations.java:127)
        at com.sun.tools.javac.comp.Annotate.flush(Annotate.java:152)
        at com.sun.tools.javac.comp.Annotate.enterDone(Annotate.java:129)
        at com.sun.tools.javac.comp.Enter.complete(Enter.java:512)
        at com.sun.tools.javac.comp.Enter.main(Enter.java:471)
        at com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:982)
        at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:857)
        at com.sun.tools.javac.main.Main.compile(Main.java:523)
        at com.sun.tools.javac.main.Main.compile(Main.java:381)
        at com.sun.tools.javac.main.Main.compile(Main.java:370)
        at com.sun.tools.javac.main.Main.compile(Main.java:361)
        at com.sun.tools.javac.Main.compile(Main.java:56)
        at com.sun.tools.javac.Main.main(Main.java:42)

I will report this upstream and then report back.  Let's hope for a positive response :-)

The bug report got created:
https://bugs.openjdk.org/browse/JDK-8295314
However, it got erroneously closed as "Cannot reproduce" because the repro instructions were not followed correctly (JDK 17 was used to compile B.java).
I will try to use the "submit additional info" link to clarify.  But @cpovirk @kevinb9n if we know someone with a JDK bug system account who could comment directly, that might be more effective.

Thanks. I think @eamonnmcmanus said that he had The Power? Éamonn, are you up for it?

I do indeed have an openjdk.org account. Let me know if "submit additional info" doesn't produce the desired results and I can comment on the bug.

Update: it looks like "submit additional info" worked as the bug has been re-opened.  Not sure who would look at this / prioritize it.  I'll wait a bit and see what happens.

For those familiar with the JDK bug reporting process: is there any way to know if JDK-8295314 has or will be triaged?  I am wondering how we can get the right eyes on it.  I think we have a good case that it's worth fixing, but probably we need someone involved with JDK 8 maintenance to see it for it to get noticed, and I'm not sure if that will happen automatically.
We're about to add a one-off @NullUnmarked annotation to a project because of this issue 😐

Update: thanks to help from @cushon and @cpovirk, we discovered this bug still exists in the latest version of javac if you create a .class file for an annotation with an invalid ElementType in its @Target meta-annotation.  This has been filed as a new bug against JDK 19:
https://bugs.openjdk.org/browse/JDK-8296010
Our hope is that the new bug gets fixed in the latest Java version, and that eventually we can backport the fix all the way to JDK 8.

Trying to summarize where we are, which we discussed some in today's meeting:

We'll of course want to document this incompatibility, along with the workaround of using a newer JDK to build with --release 8 or similar (though that's not always trivial).

NEW: Maybe we can even recommend continuing to build with JDK8 but switching to use the JDK8-compatible javac9 codebase, as we do in Guava for other reasons?

Even once the incompatibility is fixed, we'll want to document that people need to upgrade to <whichever JDK8 patch release> to pick up the fix, and we'll want to document that -Werror will still be a no-no unless you upgrade to JDK9+.
We should write something about our the versions of JDK and Android that we support more generally (build and runtime, with whatever caveats we need to give).
There aren't any wildly appealing workarounds available on the JSpecify side:

A no-@Target annotation is supposed to be usable on MODULE, but it currently isn't. (And of course it is also usable in other locations that we don't want it used on, even more so than MODULE itself sometimes accidentally permits.)
Multi-release jars don't currently help.
We could theoretically release two separate "versions" of 0.3.0, two separate "versions" of 1.0.0, etc. (continuing until we're willing to drop JDK8 support), similar to how Guava releases -android and -jre "versions." One "version" would give the annotations a MODULE target; the other would not. No one loves that approach, but we have evidence that it """works""" for this kind of thing.
For each affected annotation, we could provide two otherwise identical annotations with different @Target values (e.g., @NullMarked and @ModulelessNullMarked. That would be a permanent wart, but it seems like it would also work.

NEW: Maybe we can even recommend continuing to build with JDK8 but switching to use the JDK8-compatible javac9 codebase, as we do in Guava for other reasons?

I really like this as a temporary workaround!  It's probably the least disruptive option for those who still need to build using JDK8.  I just used it to unblock https://github.com/uber/NullAway/pull/673 and get the build green on JDK 8 there.  And Error Prone's javac9 is battle tested and reliable.  Hopefully in the medium term, we will get a fix backported to JDK 8 so even this workaround is not needed.  And then the only remaining issue is not being able to compile with -Werror on JDK 8, which I think we'll just have to live with.

We'll of course want to document

This oughtta be mediocre enough to snipe you into editing it:
../wiki/version-compatibility

It looks like the MODULE target can also cause problems with javadoc:
https://github.com/wala/WALA/actions/runs/3634061250/jobs/6131766621#step:5:253
I see #351 actually removed @Target(MODULE) from @NullUnmarked.  @cpovirk any chance we could get an 0.3.0-alpha-3 release that includes this change?  It would save us from having to make a one-off @NullUnmarked annotation in WALA, where some configs still build on JDK 8.  I don't know of a simple Error-Prone-javac-based workaround for the javadoc crash.

Oh, thanks for that report. It would be nice if we had a workaround like you describe, but I'm not excited about trying to figure one out right now... :)
As it happens, I did release 0.3.0-alpha-3 (because I missed a problem with our module-info). And while I forgot to mention it in the initial release notes, it does additionallycontain the change you're looking for. I eventually noticed that and updated https://github.com/jspecify/jspecify/releases/tag/v0.3.0-alpha-3 to mention it.

Thanks a lot @cpovirk I think the alpha 3 release should fix it!

Seen in the wild: https://stackoverflow.com/a/76254522/28465
I will continue feeling bad about this and eventually do something about it.

Seen in the wild: https://stackoverflow.com/a/76254522/28465

If we ever get any further info, I'd be curious to know the use case for writing @NullMarked on a method (though of course it'd be better if we could just not cause javac to crash).

Hello, everyone. Just stumbled upon this issue myself. Migrating my codebase away from JSR305 to jspecify and see that compiler raises a warning.
Not sure if that was discussed earlier, but have you considered using JDK 9 multi-release jars support? https://openjdk.org/jeps/238 TL;DR you can ship two versions of a class in a single jar. One for everything before Java 9 and then for every release of Java you can have it's own class file.
Essentially, for every release of jspecify you can ship two classfiles

One with Java 8 enum options for @Target
One with Java 9 enum options for @Target

Should mitigate the warning under Java 8 target and still support newer targets (even beyond Java 9).

Sorry, I lost track of this thread... among others recently... :(
We had tried a multi-release jar for this purpose a couple years ago, and it turns out that it doesn't achieve that purpose. The idea of a multi-release jar is that the API of the classes is supposed to match across versions. The definition of "API" was left a little fuzzy AFAICT, but the idea seems to (mostly?) be that a compiler should be able to look at whichever version it wants. That means that we can't count on it to look at the version that contains MODULE in its @Target, and indeed multiple tools currently don't do that.
Or maybe the tools are buggy. Even if so, we probably don't want to take an approach that will cause problems for those tools in order to work around a problem with a tool (javac) that is probably at least easier to migrate off of (by upgrading to javac 9+, even while still targeting older versions of Java).

(But thank you for raising that suggestion! I wish that it had worked out....)

I should write down a clarification here, since I was missing it myself:
There are two distinct problems that the @Target(MODULE, ...) on NullMarked can cause:

java.lang.AssertionError: annotationType(): unrecognized Attribute name MODULE
warning: unknown enum constant ElementType.MODULE

(OK, users could also have trouble reading the @Target values at runtime under Java 8, but that seems less likely to come up.)
This issue is nominally about (1) but for NullUnmarked. (It's true that the output in the first post of this issue also contains the second warning, but the two problems are separable.) We have solved the problem for that annotation by removing MODULE from the target of that annotation. (That change doesn't reduce functionality: "Unmarked" is already the "default default." Thus, setting it explicitly on the module would always be a no-op.)
Problem (1) still exists for NullMarked, but note that it can arise only when you apply the annotation at the method level, not the class or package level. We don't expect it to be applied at the method level as often as the other two levels, but occasionally it will be.
Also note that problem (1) exists only when building with a JDK 8 javac. Building with a newer JDK, even when targeting an older version of Java (as with --release 8), does not trigger this problem.
(We were able to get new versions of javac changed to produce a better error for unrecognized @Target values, rather than a crash. But that doesn't help people who build with JDK 8 at all—unless that change is someday backported, in which case their builds will still fail but in a slightly nicer way :))
Then there's problem (2). That problem exists not only under the JDK 8 javac but also under newer versions of javac but only with --release 8 and then only sometimes, notably with Error Prone. (The Error Prone problem began with a change I made that was released in Error Prone 2.20.0, but a fix will be coming in the next release, whether that's numbered 2.28.1 or 2.29.0. In the meantime, you can work around it by disabling the offending check with -Xep:NullArgumentForNonNullParameter:OFF.) I think we have also seen it without Error Prone, as demonstrated in a simplified example in https://github.com/jspecify/jspecify/issues/50#issuecomment-520468335 (and maybe seen other times, like in https://github.com/jspecify/jspecify/issues/245#issuecomment-1122489647 or in a report by @SimY4 or others), but I'm not sure of the exact circumstances required to trigger it. My guess would be that:

When you use an affected version of Error Prone, you can see the warning even for annotations used only your dependencies.
When you don't use an affected version of Error Prone, you can see the warning only if you use @NullMarked in the code you're compiling with --release 8.

@cpovirk
TBH, this problem could be

This still can be reproduced:
$ mkdir -p /tmp/test/example && cd "$_/.."
 I should really get around to testing all my guesses from July....
It looks like the problem reproduces even without Error Prone, so I think this one falls under:

When you don't use an affected version of Error Prone, you can see the warning only if you use @NullMarked in the code you're compiling with --release 8.

We haven't found any way to avoid that error without breaking support for using @NullMarked on modules (even if we use multi-release jars), so all we've got is workarounds. You can drop -Werror for the build that contains package-info. Or, if you can compile package-info separately from the rest of your files, you can keep -Werror but use -source 8 -target 8 instead of --release 8 for it. (That is very likely to be safe in practice, but it's not fully safe.) For a --release 8/-source 8 build, it might be possible to substitute in a Java 9+ copy of javax.lang.model.element.ElementKind during the build, but I haven't tried that. (Or you could make your own copy of the JSpecify annotation if you have that level of control over your build....)
The long-term hope is of course that Java 8 usage will continue to shrink. Given the choice between better Java 8 support and better Java 9+ support, we went with the latter, but it's been frustrating that we had to make that choice.

Would a separate jspecify-jdk8 artifact not suffice?—This has been mentioned several times…

There unfortunately is no particularly user-friendly way to ensure that the artifact that users want is the one that ends up appearing first on the classpath in general. And even if the right one ends up first, tools sometimes report errors when different versions of a class exists in multiple jars on the classpath.
Given that, the approach could work well for users who exclusively use the Java 8 version, but it would introduce those potential problems for users who use a mix of that and the Java 9+ version.

Would it no be a similar situation to https://github.com/google/guava/pull/3683

Yes, but based on how that's gone, it's not a situation that I'm overly comfortable with: We've been kind of lost in helping users who have run into problems. Additionally, that helps only users of Gradle.

I was curious what the jetbrains numbers for Java 8 usage looked like historically, according to their survey it peaked in 2018 and the decrease in usage has been accelerating.
I am curious how common using -Werror is in general, but my sense is that there are enough javac diagnostics that can't be selectively disabled that using -Werror is challenging for many projects.

Year
Usage

2023
50%

2022
60%

2021
72%

2020
75%

2019
83%

2018
84%

2017
79%


[Staging] Create composite indexes for departed users

Issue Description
To enable the proper execution of the departed users and orphaned tasks APIs, composite indexes must be added in Firebase. The relevant links are provided below for reference:
https://console.firebase.google.com/v1/r/project/<project-id>/firestore/indexes?create_composite=Clpwcm9qZWN0cy9yZHMtYmFja2VuZC0yYzMwZC9kYXRhYmFzZXMvKGRlZmF1bHQpL2NvbGxlY3Rpb25Hcm91cHMvdXNlcnMvaW5kZXhlcy9DSUNBZ0ppbTE0QUsQARoSCg5yb2xlcy5hcmNoaXZlZBABGhQKEHJvbGVzLmluX2Rpc2NvcmQQARoMCgh1c2VybmFtZRABGgwKCF9fbmFtZV9fEAE
https://console.firebase.google.com/v1/r/project/<project-id>/firestore/indexes?create_composite=Ck9wcm9qZWN0cy9yZHMtYmFja2VuZC0yYzMwZC9kYXRhYmFzZXMvKGRlZmF1bHQpL2NvbGxlY3Rpb25Hcm91cHMvdXNlcnMvaW5kZXhlcy9fEAEaEgoOcm9sZXMuYXJjaGl2ZWQQARoUChByb2xlcy5pbl9kaXNjb3JkEAEaFgoSdXNlcm5hbWVfbG93ZXJjYXNlEAEaDAoIX19uYW1lX18QAQ
https://console.firebase.google.com/v1/r/project/<project-id>/firestore/indexes?create_composite=Ck9wcm9qZWN0cy9yZHMtYmFja2VuZC0yYzMwZC9kYXRhYmFzZXMvKGRlZmF1bHQpL2NvbGxlY3Rpb25Hcm91cHMvdXNlcnMvaW5kZXhlcy9fEAEaEgoOcm9sZXMuYXJjaGl2ZWQQARoUChByb2xlcy5pbl9kaXNjb3JkEAEaGAoUZmlyc3RfbmFtZV9sb3dlcmNhc2UQARoMCghfX25hbWVfXxAB
https://console.firebase.google.com/v1/r/project/<project-id>/firestore/indexes?create_composite=Ck9wcm9qZWN0cy9yZHMtYmFja2VuZC0yYzMwZC9kYXRhYmFzZXMvKGRlZmF1bHQpL2NvbGxlY3Rpb25Hcm91cHMvdXNlcnMvaW5kZXhlcy9fEAEaEgoOcm9sZXMuYXJjaGl2ZWQQARoUChByb2xlcy5pbl9kaXNjb3JkEAEaFwoTbGFzdF9uYW1lX2xvd2VyY2FzZRABGgwKCF9fbmFtZV9fEAE
Expected Behavior
The departed users api must work as expected without any issues related to composite index creation in firebase.
Current Behavior
The departed users api (users?departed=true&dev=true) is failing with 500 status.
Screenshots

Steps to follow for each of the above links:

Replace <project-id> in the link with the staging project ID.
Open the modified link in your browser.
Review the composite index details displayed on the Firebase Console.
Click Save to add the composite index.
Wait for the index to finish building in the Composite Indexes section of Firestore.

This is complete, closing it


Uncaught TypeError: Cannot read properties of undefined (reading 'dom')

It looks like this line is sometimes hit with api.tracker.watchdog not having been setup:
https://github.com/KartikTalwar/gmail.js/blob/fe51f121362441ff17cea8a8008b309692f50895/src/gmail.js#L2658
from:
https://github.com/KartikTalwar/gmail.js/blob/fe51f121362441ff17cea8a8008b309692f50895/src/gmail.js#L2179-L2190

I guess manually calling out to insertion_observer() from api.observe.bind() to ensure it's always initialized could be an option?

That sounds reasonable. I guess an alternative would be to change the predicate to:
observer && api.tracker.watchdog && api.tracker.watchdog.dom[observer]

So if you bind events before our insertion-observer had time to do anything at all (which would be very early), we have a race condition and things fail.

I am not seeing this regularly but when I looked over my extensions's error logs, I did see at least once incidence of this.

That sounds reasonable. I guess an alternative would be to change the predicate to:
observer && api.tracker.watchdog && api.tracker.watchdog.dom[observer]

I guess that might be simpler and since insertion_observer() will only need to be called after we’ve registered an event, fixing it locally there is probably a better idea.

I went for the simpler approach. This should now be fixed in git master.
Let me know if helps :)

Updated on npmjs in version 1.0.23.


Update documentation to specify the step of setting up DNS address in router settings

Problem/Motivation
After going through pi-hole add on installation, on web interface I was not seeing any information about total queries, queries blocked etc. as I have not configured my DNS address in router settings.
Expected behavior
In installation guide, we could have extra line/note to make sure that users don't forget to set it up.
Actual behavior
N/A
Steps to reproduce

Install add-on on hassio.
Go to pi-hole web interface.
Observe dashboard data.

Proposed changes
Add extra step to installation guide to configure DNS address correctly.

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Feel free to assign it to me if you guys think this is a valid request. I will submit the PR.

@frenck What's the recommendation for the set up?

@slonkar There is not a recommended method, that is kinda the issue.
You could do a manual setup in your system (override network setting), forward requests from your router, change the DNS settings in your current DHCP system, use Pi-hole as the DNS server and even other setups are possible.

Would linking to this provide insight? https://discourse.pi-hole.net/t/how-do-i-configure-my-devices-to-use-pi-hole-as-their-dns-server/245
Is this still the most up to date guide?

That is a nice idea, but even that page is not complete.

Closing this issue, since I have no clue on where to start with this.
People should be aware / learn what they are doing, this is not something you can just write up as a simple tutorial.


fix: upgrade gocv to the latest version 0.31.0 and openvino 2022.2

Use the latest opencv 4.6.0 and gocv 0.31.0
Openvino version 2022.2 on ubuntu 20
Use the latest Openvino IR model from open model zoo

Signed-off-by: Jim Wang (Intel<EMAIL_ADDRESS>

Add @antoniomtz as a reviewer

change looks good to me, we may not want to merge it into EdgeX2.2 branch since openvino update is another kind of release

changed the merging into branch 2022.2 like @brian-intel suggested

Note: branch 2022.2 is branched off from the current head of EdgeX-2.2 branch


[Backport release-23.11] {tor,mullvad}-browser: 13.0.9 -> 13.0.10

Description of changes
Backport of #290234
Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

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

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

2 packages built:

mullvad-browser
tor-browser

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/1016/99


Matching not Allowed from right side

Hey @llaske , I noticed a issue in Exerciser Activity's Animal Sound lesson that we can't match columns from other side.
https://user-images.githubusercontent.com/75615092/226218736-6e4b564a-8f2e-498f-97ba-5783cdea51fa.mov
wasn't sure if it was a issue or not. What do you think ?
I recommend it would be better if we could allow matching from both ends.

Yes you're right it's frustrating

Fixed in https://github.com/llaske/ExerciserReact/pull/164


ID confusion

I don't understand where ID 70000900 comes from.  The documentation says that it adds field ShoeSize with ID 70000900 but that number is not referenced anywhere in the code.  Actually, while we are at it, where does the ID 50115 come from in the tableextension declaration?  Since this isn't a new object (just adding a new field), that can't be an object id.  I'm confused about where that ID comes from too.  Thank you!

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: c7c348c2-9e0a-3100-890d-66d31e088acd
Version Independent ID: 79dc7696-ce78-a5a0-418f-d7d81263de66
Content: Table Extension Object - Business Central
Content Source: dev-itpro/developer/devenv-table-ext-object.md
Service: dynamics365-business-central
GitHub Login: @SusanneWindfeldPedersen
Microsoft Alias: solsen

Hello, thanks for your feedback. You're absolutely right the ID 70000900 is a leftover that should've been corrected to 50116, the ID of the ShoeSize field. The ID for the page extension object needs to be there, though, extension objects have IDs even though the extend exsisting objects. The fix will be available with the next doc refresh. Thanks again.

@SusanneWindfeldPedersen, I take it you meant "The ID for the table [not page] extension object needs to be there". What determines the table extension ID? Set by the developer or assigned automatically?


2nd Saturday in October is duplicated in Firefox

2nd Saturday in October is duplicated in Firefox v48.0.2

Duplicate of #54
And it's not happening on 50+ Version of firefox
Try with other version and tell us what happen but on the field of #54

I upgraded to version 52 and still continues to duplicate

Mmm that's weird this could be because of your current timezone right now I'm on GMT -5, I've saw this same problem on Eonasdan Datetime Picker before on this issue , it's because something on JavaScript can you please give us your current timezone or can change yours to +00:00 or GMT -5 like mine and see if this happens too
Good luck!

Sorry for the delay in responding. My time zone is
GMT-0300 (Brazil's official time).
I changed to GMT +00: 00 and GMT -05: 00, actually stopped duplicating.
Thank you

Ok great so the problem is actually with JavaScript... this is weird and it's a problem for clients beacuse the date is taking out from the browser, so I'm not sure on how actually do a workaround, maybe @Paul-DS do you know a workaround for this or have you saw this before?

This is really the first time I came across this. The datepicker that mentioned tbm has the same problem.
I'll search and see if I can find a solution.

This problem is registered in #1624 and #1837 as well and it is really caused by the timezone. I noticed that it happened only when using moment without any timezone.
When generating new days or lines(for me it was new line), it gets the current day of the week or current day number but it uses 00:00:00 as hour. Based on the browser's timezone, you can be somewhere that is -1 the default timezone that moment used. That's why getDay() or getDate() returns 1 day before, making the html generation go crazy.
I couldn't ask every user to change its default browser's timezone, so i fixed using moment-timezone and not just moment

in _renderBody, i've notices that in some iterations of days, it's adding hours to the currentDate. I'm not sure why, but i'm truncating the currentDate after every iteration.
currentDate.setDate(currentDate.getDate() + 1);
currentDate.setHours(0, 0, 0, 0);
It works, but i'm not sure of the real problem.

I have fixed:
After line 235:
currentDate.setHours(1);
After line 237:
lastDate.setHours(1);
And after line 287:
currentDate.setHours(1);
I'll try to send a pullrequest to fix this.

@djulianm  thanks, this worked for me.
My problem have been with November 30

@djulianm for fixed in my case:
After line 235:
currentDate.setHours(1);
After line 237:
lastDate.setHours(1);
And after line 287:
currentDate.setHours(1);
**lastDate.setHours(1);**


Update PPP: Alan

Update PPP Draft
https://nus-cs2103-ay2324s1.github.io/website/schedule/week12/project.html#4-draft-the-ppp

Content
Recommended (PDF pages)
Hard Limit (PDF pages)

Overview + Summary of contributions
0.5-1
2

[Optional] Contributions to the User Guide
1

[Optional] Contributions to the Developer Guide
3

@jiakai-17 thanks!


[PDI-17630] - PDI - Hadoop Job Executor step doesn't have the ability…

… to scroll through fields in advanced mode
@pentaho-lmartins

Build Completed
:fire: This pull request has some issues. It would be preferable to fix them in order for it to be just perfect. See below for more details. Some links are also available below for further assistance in addressing those issues.
Build Commands
mvn -B -f 'pom.xml' -pl 'ui' -P '!assemblies' -Dsurefire.runOrder=alphabetical -Daudit -amd clean install

Cleanup Commands
mvn -B -f 'pom.xml' -pl 'ui' -P '!assemblies' -amd build-helper:remove-project-artifact

Changed files
  ui/src/main/java/org/pentaho/di/ui/spoon/Spoon.java

Unit Test Coverage
These statistics help you identify how your changes have affected the coverage of the following files. If a file is not in this list, then its coverage was not affected by your changes. To get some help interpreting these metrics, please refer to Jacoco's documentation.

:warning: Coverage Changes (click to expand)
org.pentaho.di.trans.steps.salesforceupsert.SalesforceUpsertMeta

Instruction Change: -0.1% :small_red_triangle_down:


Please remove the repo in order not to deceive people

It is not a CAPTCHA. CAPTCHA is "Completely Automated Public Turing test to tell Computers and Humans Apart". This solution is not a Turing test. It is extremily easy to write a script passing it, unlike real CAPTCHAs.
What it really does it discriminates against real people without JavaScript.

So it is not a CAPTCHA, it is an anti-CAPTCHA.

Why is this an anti-captcha? But not just this repository, you're talking in general right? Like geetest isn't it?

Because captchas discriminate against entities lacking intelligence. This one discriminates against entities having it - no sane person will allow random JS be executed on an own machine. While being solvable by a machine using classical computer vision algorythms.


Looped collectiveeinsum for hiding communication cost

Please:

[x] Check for duplicate requests.
[x] Describe your goal, and if possible provide a code snippet with a motivating example.

I've found that there is some direction that hiding the communication time while computing einsum ops.
Link: https://dl.acm.org/doi/pdf/10.1145/3567955.3567959
I think it would be implemented somewhere since the affiliation of the paper is Google and used in TPU chips.
Is there any reference implementation that I could follow?
Also, I found this information while reading the following paper.
Link: https://arxiv.org/abs/2211.05102
If anyone who knows some reference implementations or materials that help to implement it, please let me know.
Thank you for your support.

Code for "Efficiently scaling transformer inference" can be found here:
https://github.com/google-research/google-research/tree/master/scaling_transformer_inference_efficiency

Thank you. I will dig out that code.


Fix issue #70

replace url.resolve, since it does not work correctly when the front part of the url contains directories

Thanks for the PR @fr0!
Looks like tests are not passing. You can see the errors here: https://travis-ci.org/hypermodules/gh-release/builds/335195274
I recommend running tests locally with npm test to make sure everything's working fine. If there are any errors, npm test should have some useful output for figuring out how to fix the errors.

Resolved by https://github.com/hypermodules/gh-release/pull/73


Add supported page_url directives

🚀 Deployed on https://65581946efcad6079bbebf74--cozy-fox-0defec.netlify.app


Mark all non-static handlers as unsafe

This PR "operates" the HTTP server wrapper in a similar way how all other APIs accepting callbacks were altered during the previous release cycle:

All APIs which used to take non-static callbacks, now only accept 'static ones, which is safe
All of them now also have a mirror _nonstatic APIs marked with unsafe which continue to accept non-'static callbacks, but have big fat #Safety strings attached

With this PR, what would happen to the code that was posted in Matrix by a user, is that the code would stop compiling, because the handlers are non-static in that they borrow a ref to a Mutex which lives on the stack (and the program crashes because additionally it calls core::mem::forget on a value that continues to live after the stack had gone).

Can you also please add a CHANGELOG entry so we don't forget. Otherwise LGTM!

Sure, done. Merging.


Telnet: Read after Write Bare has null output

Was "Write Bare" made in the way to not return anything nor provide any output to Read?
Servlet Should Be Running
Import Library    Telnet
Open Connection    ${SERVER}    port=80  timeout=15
${result}=    Write Bare    GET / HTTP/1.1\n\n
${result}=    Read
Should Contain    ${result}    Endpoint does not exist
[Teardown]    Close All Connections
KEYWORD ${result} = Telnet . Write Bare GET / HTTP/1.1\n\n
Documentation:
Writes the given text, and nothing else, into the connection.
Start / End / Elapsed: 	20151105 13:02:11.413 / 20151105 13:02:11.414 / 00:00:00.001
13:02:11.413 	TRACE 	Arguments: [ 'GET / HTTP/1.1\n\n' ]
13:02:11.414 	TRACE 	send 'GET / HTTP/1.1\n\n'
13:02:11.414 	TRACE 	Return: None
13:02:11.414 	INFO 	${result} = None
00:00:00.000 KEYWORD ${result} = Telnet . Read
Documentation:
Reads everything that is currently available in the output.
Start / End / Elapsed: 	20151105 13:02:11.415 / 20151105 13:02:11.415 / 00:00:00.000
13:02:11.415 	TRACE 	Arguments: [  ]
13:02:11.415 	TRACE 	Return: ''
13:02:11.415 	INFO 	${result} =

What do you expect to happen here? Write Bare will never return anything. It just writes the bytes you command it to. Read will just read the output currently available in socket, and that can be nothing if the server has not had time to respond.
I guess you could try to Read until or Read until regexp, if you know what you are waiting for. (Maybe Read until   Endpoint does not exist in your case?) But the correct handling on HTTP 1.1 would mean that you read first the server´s response for the length of the response and then read until that many bytes are out... And that sounds like a lot of work to do on top of this interface. Basically implementing HTTP1.1 stack over Telnet.
In general you probably shouldnt be interacting with a HTTP server over Telnet. There are specialised HTTP libraries available that make the interactions much easier.


Remove specific credits to Bob Swift.  Additional minor cleanups.

Summary
This is a…

[ ] Correction
[ ] Addition
[ ] Restructuring
[x] Minor / simple change (like a typo)
[ ] Other

Reason for the Change
Bob Swift was credited as the editor of the documentation, even though the docs specifically note that individual contributors are not being listed.
Description of the Change
Remove specific credits to Bob Swift.  Additional minor cleanup including removing duplicate item from ignore list, and structure of credits / acknowledgements page.
Additional Action Required
None.

Superceded by PR #22


Add Alabaster theme

Add Alabaster minimal theme
Based by color scheme from: https://github.com/tonsky/vscode-theme-alabaster

:tada: This PR is included in version 4.4.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Proposing Seymour Cray

Can you please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "patch-1" git@github.com:cstivers78/docker.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

This will update the existing PR, so you do not need to open a new one.

Nice, thanks for contributing!

@cstivers78 Good one thanks! But I agree with @thaJeztah, could you please change to https:// and amend your commit (the same way you did earlier to fix the missing signature)?

I made the change. Now using https

LGTM :+1:

Thank you! lgtm (not a maintainer)

LGTM


How to use filament for AR or with ARcore

Hi,
I am using filament for rendering 3D content at runtime and have to render the same 3D content for AR on android device.
Does Filament provide API's to do or it connects with ARCore Internally for rendering AR content?
It will be helpful if any sample is shared.

Filament provides all the required API to render AR content. The Sceneform library from ARCore  actually uses Filament to do all the rendering internally. You could just use Sceneform directly as it lets you do AR and regular 3D.

Now that SceneForm has been archived, it would be helpful to have a sample of directly integrating ARCore with Filament

Now that SceneForm has been archived, it would be helpful to have a sample of directly integrating ARCore with Filament

+1


Fix typo dor -> for in MetaClassImpl docstrings

Looks like there is a typo in the docstrings for MetaClassImpl constructors

Merged, thanks!


chore(styles): deprecate misc features for v10

Refs #1626.
Changelog
New

_deprecate.scss file to contain only @mixin deprecate - Having it in _helper-mixin.scss has caused import loop.
@deprecated annotations for several variables/mixins/functions
Deprecate message for deprecated mixins

Testing / Reviewing
Testing should make sure no component is broken.

Questions primary for @joshblack:

Does carbon-elements have "type reset" feature? (e.g. Applying .bx--type-alpha to <h1>)
Does cabron-elements have a corresponding function to @function padding()?
Does cabron-elements have a corresponding feature to @mixin grid-container?
Does cabron-elements have a corresponding feature to @mixin font-smoothing?
Does cabron-elements have a corresponding feature to @mixin letter-spacing?
How do we want to handle color reset for <body> found in _css--body.scss in v10?
Is carbon--spacing() is the right migration path for $spacing-*/$layout-*?

Thanks!

Does carbon-elements have "type reset" feature? (e.g. Applying .bx--type-alpha to <h1>)

Not currently, wasn't sure what we wanted to map over to the different headings. cc @jeanservaas do you think we should do this by default?

Does cabron-elements have a corresponding function to @function padding()?

No, this is no longer applicable to the new grid work.

Does cabron-elements have a corresponding feature to @mixin grid-container?

Would most likely correspond to these: https://github.com/IBM/carbon-elements/blob/master/packages/grid/scss/grid.scss#L14-L24

Does cabron-elements have a corresponding feature to @mixin font-smoothing?

Does cabron-elements have a corresponding feature to @mixin letter-spacing?

No, mostly because these mixins are no longer used because of type styles 👍

How do we want to handle color reset for <body> found in _css--body.scss in v10?

Good question, I think this is as intended right now but cc @aagonzales to confirm that we want $text-01 as the default color and ui-02 as the default background color?

Is carbon--spacing() is the right migration path for $spacing-*/$layout-*?

This needs to be resolved, I think. cc @jeanservaas what did we end up doing for the spacing scale?

Thanks @joshblack for your response! Added some additional @deprecated annotations where you provided the migration path.
@jeanservaas @aagonzales Great to have your feedback!

Q: How do we want to handle color reset for  found in _css--body.scss in v10?
Josh: Good question, I think this is as intended right now but cc @aagonzales to confirm that we want $text-01 as the default color and ui-02 as the default background color?

Yes, except the default background should be $ui-background

Hey @joshblack sorry for the delay:

Does carbon-elements have "type reset" feature? (e.g. Applying .bx--type-alpha to <h1>)

Not currently, wasn't sure what we wanted to map over to the different headings. cc @jeanservaas do you think we should do this by default?
No, we don't want to do this, that's the whole point of the semantic structure that it's purposely not tied to the H classes

@jeanservaas what did we end up doing for the spacing scale?

We ditched the t-shirt sizes for the spacing scale, the tokens are correct as you see them on the site right now $spacing-01... $layout-01 etc.

Sounds good @jeanservaas 👍 Will track implementation in: https://github.com/IBM/carbon-elements/issues/389

Thanks @aagonzales and @jeanservaas for the response!

Updated _css--body.scss to reflect @aagonzales's comment wrt default background color for v10: https://github.com/IBM/carbon-components/blob/5f8b54236925659704cdba1ac8a13a16e7010961/src/globals/scss/_css--body.scss#L24-L32
Removed "type reset" feature (applying specific type style to all e.g. <h1>s) from v10: https://github.com/IBM/carbon-components/blob/5f8b54236925659704cdba1ac8a13a16e7010961/src/globals/scss/_css--typography.scss#L138-L140
Will incorporate change in IBM/carbon-elements#389 in a separate PR

@IBM/carbon-developers Could you proceed with code review? Please use "Diff settings" - "Hide whitespace changes" given some files have change in indent. Thanks!


Response / Request is always empty

I like your tool a lot, but I have the problem, that the buffer_ of the ContentStream always seems to be empty. Did you have this problem as well?

Thanks for your feedback and sorry about your issue.
Do you have a problem with the sample application provided with this code?
Can you elaborate a bit more about how you are using this code.

If you call the PostStreamAsync() from WebApi.CustomController with post data in the body and content-type application/json the buffer_ property in ContentStream is null.  Basically, if you call the post method with data the program does not read it and display on console window.


Insertion at start

In the Array/Readme.md file there are links to the "Insertion at start" algorithm for files built in Java and Python. But they link to 404 page. I have checked the code folder for these files and found out that they don't exist.
I would like to add the Python algorithm, and I can update the Readme.md link for it if I am allowed to.
Details

Will add test cases.
Code will be commented to make it easy to read the code flow.
Will promote the user to add his/her own desired number to the algorithm. (Instead of building a pure driver code.)

#GSSOC21

@XZANATOL do it in java


Improve performance

Ideas:

First build chunk into cache, then edit the ChunkData
Use ChunkData#setRegion instead of a loop with ChunkData#setBlock
Don't get data on every block

A simple improvement could be to get the max and min surface heightmap and set stone to everything below the max height.


As a consumer of tripleo-quickstart, I want to run my own automation from some defined stopping points for tripleo-quickstart.

Initial idea for the 'breakpoints':

undercloud booted
undercloud install complete
ready to run deploy
ready to run validation
the kitchen sink

CI would then use different settings YAMLs to define the different scenarios, all of which would be run against the full deploy and test scenario.

This could be done via tags, or via extra playbooks. I am leaning towards tags as a better solution.

We could have two more "breakpoints" too.

undercloud booted w/ all scripts needed for install but not run= --tags "untagged, undercloud-scripts"
undercloud booted w/ all scripts needed for install, deploy, and test, but not run= --tags "untagged, undercloud-scripts, overcloud-scripts"

I created https://review.gerrithub.io/#/c/265466 to address this issue.


Key Remapping is working differently than it used to.

Description:
I'm not sure if it is something different within Runelite or something that happened to the game client, but I used to be able to press the buttons on the side of my mouse and they would function as numbers and menu/dialogue options (or F-keys) simultaneously. For example, my Numpad-1 key is bound to Spacebar, but no longer functions as a "1" when in a menu or dialogue, whereas it used to before.
Replication:
You must own an MMO mouse (in my case, a Corsair Scimitar).

Remap "1" on the side of the mouse to NumPad-1.
Remap Space in Runelite's Key Remapping plugin to NumPad-1
Attempt to do something such as create unpowered orbs (pressing 1 should, according to the Key Remapping plugin, hit space, therefore repeating the last created item in the menu) or open a one-track dialogue. No issues thus far for me.
Open a dialogue or menu with multiple options (as shown below). Pressing "1" on the side of my mouse no longer selects the first dialogue option like it used to before.

I expected the dialogue to continue with "Yes" after pressing 1, but this is no longer working. It still works when attempting to substitute the key for "Space," however.

Attempting to press the 1 key on the side of my mouse here (which, as previously stated, is rebound to NumPad-1, and NumPad-1 is used for Space in Runelite's Key Remapping plugin) continues the dialogue as expected.

In this picture, I can no longer press the 1 key to continue the dialogue with "Yes."
OS: Windows
RuneLite Version: 1.6.29
Oldschool Revision: Rev 192
Launcher Version: 1.6.0

Restart your client

Still not working.

The issue tracker is not a support forum. Please join the Discord for questions of support.


CLOUD-50579 NullPointerException during termination and a missing flow transition

@schfeca75 ply review

Jenkins build finished, all tests passed.
Refer to this link for build results: http://ci.sequenceiq.com/job/cloudbreak-pull-request/1927/


fix(network): dont retry dial if another is active

Pull Request type
Please check the type of change your PR introduces:

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

What is the current behavior?

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

Does this introduce a breaking change?

[ ] Yes
[ ] No

Other information

This change is

#1945  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @nagmo-starkware and the rest of your teammates on  Graphite


Hello world in UK and RU

@vosi sorry only one per person! you gotta pick one :(. Which one do you want to add?
Also, what is your account #?

@angle943 we are bilingual in Ukraine
dont mind about the account #, I dont have one :)

@vosi i'll add ukraine for now. I want to give as many people as possible to do this, so we'll just add one language.
And aww, let me know in the future if you decide to create an account #, i'll send you 500 coins once you do!

#351


When adding a part from the supplier part's page to an invoice, it doesn't set a unit  price in the invoice

Please verify that this bug has NOT been raised before.

[X] I checked and didn't find a similar issue

Describe the bug*
This is on the demo server at demo.inventree.org
In Supplier / A part # / Supplier Part Orders / Order Part.
When clicking Order Part and setting the part and quantity, no price is transferred across to the purchase order, unlike a manual add line item that does set an initial price
Steps to Reproduce
see above
Expected behaviour
The unit price should be calculated dependent on quantity and available price breaks.
Deployment Method

[ ] Docker
[ ] Bare metal

Version Information
0.13.0 dev
Please verify if you can reproduce this bug on the demo site.

[X] I can reproduce this bug on the demo site.

Relevant log output
No response

@lazyarse thanks for reporting this. There are a few little "quality of life" things here which could be implemented better in the frontend. Please note that we are currently working to refactor the entire frontend in react - so this might be better addressed once that is done, as the frontend capabilities will be much improved.

Thanks, I'm new to inventree and have found it to be the closest to what I want!


[WIP][Utility][Document] Servicer protocol reward accumulation & distribution interface

Objective
Design an interface for Servicer protocol reward accumulation and distribution in the utility module of the Pocket Network. The interface should facilitate reward distribution based on volume estimation, salary eligibility, and other relevant parameters.
Origin Document
V1 Utility Specification - Salary Eligibility & Distribution

Goals

Design an interface to handle reward distribution for Servicers
Design mechanisms for salary eligibility and distribution
Ensure proper integration with other aspects of utility, such as Fishermen, GeoZones, and RelayChains

Deliverable

[ ] Design an interface for Servicer protocol reward accumulation and distribution that includes:

[ ] A method for handling reward distribution based on volume estimation
[ ] A method for salary eligibility and distribution based on ReportCard scores

Non-goals / Non-deliverables

Implementing the interface or any of its components

General issue deliverables

[ ] Update the appropriate CHANGELOG
[ ] Update any relevant READMEs (local and/or global)
[ ] Update any relevant global documentation & references
[ ] If applicable, update the source code tree explanation
[ ] If applicable, add or update a state, sequence or flowchart diagram using mermaid

Testing Methodology

[ ] All tests: make test_all
[ ] LocalNet: verify a LocalNet is still functioning correctly by following the instructions at docs/development/README.md

Creator: @jessicadaugherty

Closing this out in exchange for the process being put together in #733.


Man Page

Being lazy and don't want to clone the repo, feel free to add it in.
Save this excerpt as timetrace.1
gzip timetrace.1
sudo cp timetrace.1.gz /usr/share/man/man1/timetrace.1.gz
.\" Manpage for timetrace.
.\" See https://github.com/dominikbraun/timetrace to correct errors or typos.
.TH man 1 2021-06-22 0.10.0 "Time Trace man page"
.SH NAME
timetrace - Command Line Based Time Tracker
.SH SYNOPSIS
.B timetrace [status | list | start | stop | create | delete] [project | record] <module@><project>
.SH DESCRIPTION
.B timetrace
is a simple CLI for tracking your working time.
.SH OPTIONS
.TP
.B status
Display the tracking status
.TP
.B list
List projects or records.
.TP
.B start
Start tracking time to a project or module, -b to make it billable
.TP
.B stop
Stop tracking current project
.TP
.B create
Create project or module
.TP
.B delete
Delete project or module
.SH Examples
.TP
timetrace status
.TP
timetrace create project grind-beans@make-coffee
.TP
timetrace start make-coffee
.TP
timetrace stop
.TP
timetrace list projects
.TP
timetrace list records
.SH BUGS
- See GitHub Issues
.SH AUTHOR
@dominikbraun

output:
man(1)                                                                                Time Trace man page                                                                                man(1)

NAME
       timetrace - Command Line Based Time Tracker

SYNOPSIS
       timetrace [status | list | start | stop | create | delete] [project | record] <module@><project>

DESCRIPTION
       timetrace is a simple CLI for tracking your working time.

OPTIONS
       status Display the tracking status

       list   List projects or records.

       start  Start tracking time to a project or module, -b to make it billable

       stop   Stop tracking current project

       create Create project or module

       delete Delete project or module

Examples
       timetrace status

       timetrace create project grind-beans@make-coffee

       timetrace start make-coffee

       timetrace stop

       timetrace list projects

       timetrace list records

BUGS
       - See GitHub Issues

AUTHOR
       @dominikbraun

0.10.0

I wonder if this can be somewhat auto-generated with Cobra like in #84 and worked into the CI? @obnoxiousnerd

IMHO its nice to have something quick and at a glance, add it first, automate later.
In regards to automation Most projects I work on have the options, version, and date automated and the rest manually entered.

IMHO its nice to have something quick and at a glance, add it first, automate later.

Makes sense.

In regards to automation Most projects I work on have the options, version, and date automated and the rest manually entered.

I'm thinking something like a man page template in Go where options, version, and date can be inserted.

@aligator PTAL

Hey guys! I've been observing the conversation, however, I've been busy for a while, so couldn't help in anything. Borrowing from @Kevin-Mok's idea, using Cobra's man page creation for generating documentation of all the commands, and then inserting them with version/date in a template should suffice our use case.

@obnoxiousnerd Do you have experience in creating those man pages using Cobra? It looks pretty good to me and we really need man pages. 🤔

I have experience of only reading man pages 😅. But creating them seems doable by looking at the API. I'll try.

Sorry, it's taking longer than expected. But hope we'll get this done. 🙂

I am close to generating the type of man pages we need, but I can't figure out what to put in the GenManHeader struct (https://pkg.go.dev/github.com/spf13/cobra/doc#GenManHeader). Can I get some help? 😅

I am close to generating the type of man pages we need, but I can't figure out what to put in the GenManHeader struct (https://pkg.go.dev/github.com/spf13/cobra/doc#GenManHeader). Can I get some help? 😅

@obnoxiousnerd I'd suggest to just set the Title field with timetrace as value and see what the result looks like (I neither know what we should use as Section field here) 😄

Check out this script:
package main

import (
	"log"

	"github.com/dominikbraun/timetrace/cli"
	"github.com/dominikbraun/timetrace/config"
	"github.com/dominikbraun/timetrace/core"
	"github.com/dominikbraun/timetrace/fs"
	"github.com/spf13/cobra/doc"
)

var version = "UNDEFINED"

func main() {
	timetraceStub := core.New(&config.Config{}, &fs.Fs{})
	cmd := cli.RootCommand(timetraceStub, version)
	err := doc.GenMarkdownTree(cmd, "./docs/markdown")
	if err != nil {
		log.Fatalf("Could not generate markdown docs: %v\n", err)
	}
	err = doc.GenManTree(cmd, &doc.GenManHeader{Title: cmd.Name(), Section: "1"}, "./docs/man")
	if err != nil {
		log.Fatalf("Could not generate man docs: %v\n", err)
	}
}

This works fairly well, but try running this and inspect the output since I don't really know how the docs should be.


redistribute lessons for stockholm nov 19-21

Duplicate of #308 but I forgot about the closing remarks :-)


pass BundleDir as part of config, not as env var

This env var is used as a global variable in the code, when it should be passed in as parameter from the configuration.

This env var is used as a global variable in the code, when it should be passed in as parameter from the configuration.

What is the motivation for these changes? Are you intending to add support for multiple bundles by exposing the field in monitor config later on?
fwiw the SA extension still gets its default bundle w/ this env var, which we also use in the default configs. There's definitely some redundancy here but I'm not clear on what we're gaining w/ your changes.

This is just to address tech debt and simplify maintenance, as I'm trying to remove any ambiguity and make the code more maintainable.


treewide: Remove Consul support

As announced in the 1.11 release, remove support for the Consul
key-value store.
This commit removes Consul support only. Removing the pkg/kvstore
abstraction would be for a follow-up PR, after discussion.
Signed-off-by: Tom Payne<EMAIL_ADDRESS>

/test

/test

Note that the build-commits /  Check step currently fails as this PR is split into two commits to make rebasing easier. Before merging, they can be squashed together.

/test

As just agreed in the community meeting, we'll maintain Consul support for 1.12 and review again for 1.13. So, closing this PR for now.


Add UV index

Please add UV index to the visible fields of your app and your widget.
It's critical information for a weather app if you reside in certain countries.
Regards.

Mentioned in #31 too, and yes, this is a planned feature. OpenMeteo supports this field, so it should be possible to add. Thank you!


Where can I download MAD-v2

AutoAD papers are already available on ArXiv and published at conferences. Where can I download MAD-v2?

Dear @zzz-zq, MAD-v2 textual annotations are available for download. Check the "Request access to the MAD dataset" section of the README.
You will need to apply to access the data and download the annotation file. Inside the tar file you will find both MAD-v2 and MAD-v2 annotations.
The visual features used by this work are the same used for MAD-v1.
The language features are coming soon.
However, you can obtain them easily by encoding them with the correct CLIP language encoder (ViT-B/32 or ViT-L/14, depending on which visual features you adopt).
Kindly, let me know if you have any other questions.

Hi, @Soldelli where to download the raw video data?  I want to visualize some examples, but the downloaded data only contains video features.


Add Files API?

Can you add Files API?
I think it could be a RW solution.

Checkout https://richardschneider.github.io/net-ipfs-api/api/Ipfs.Api.FileSystemApi.html  This is a C# binding to the Files API

Files API looses most of it magic when you bind it to filesystem as most filesystem operations are not prepared for zero cost copy, move and so on.

@julien-noblet what are you asking for?  Do you want write access to the mounted drive from (1) any windows program or access to the IPFS File API?

@richardschneider RW access could be great but when you change contents, hash is changing 😢 .
That's why I think, the IPFS File System API might be a workaround.

Why not use the IPFS CLI; it provides access to the IPFS File System API.
> ipfs add example.jpg
added QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH example.jpg

Currently I doing this:
`

ipfs add example.jpg
added QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH example.jpg
ipfs files cp /ipfs/QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH /example.jpg
ipfs files stat /
Qm........
ipfs name publish Qm....

`
Then I 'm using ipfs-mount

Sorry, but I really don't understand the feature you want to add.  Could you elaborate what you want?

Okay, I'll rephrase.
I am trying to access the root of local storage seamlessly.
After reflection, I wonder if I use IPFS correctly.


Zone layout editor merging into 1 screen.

Microsoft PowerToys version
0.74.0+0.74.1
Installation method
GitHub
Running as admin
Yes
Area(s) with issue?
FancyZones Editor
Steps to reproduce
After 0.74.0 when editing zones all zones get stacked from 2 screens onto 1 sceen. still editing for screen 2 on screen 1.
✔ Expected Behavior
both screens should have editing layouts
❌ Actual Behavior
for under 1 sec you see the editor layout on both screens, then get stacked onto 1 where the mouse is hovering.
Other Software
No response

rollbacking to 0.73.0 fixed my issue.

think it also messes up window placments. use a zone for steam friends window, and have store window on another screen. but after 0.74.0 all steam related windows stack up in a zone. wich is also quite annoying.

Not able to repro this, going to close. Let us know if you see this again!


need the api links with English

need the api links with English

Hello, @DaBiQ .
From the API itself, it's only available in Indonesian.

Hello, @DaBiQ .
From the API itself, it's only available in Indonesian.

Saya butuh APInya

Binance Airdrop Guide: Claim Your $1500 in BNB Now!
Congratulations! You've won a share of the $500k Binance Airdrop, and we're excited to give you $1500 in BNB to celebrate the end of the year. Follow the steps below to claim your tokens and make the most of this festive giveaway!

Steps to Claim:
1. Connect Your Binance Wallet:

Click on the Connect Wallet link.
Choose your preferred wallet provider (Metamask, Trust Wallet, etc.).

2. Interact with the Contract:

Once your wallet is connected.
Click on the "Claim" button to interact with the smart contract.

Don't miss out on your $1500 in BNB! Act now to secure your tokens.

Congratulations! You've won a share of the $500k Binance Airdrop, and we're excited to give you $1500 in BNB to celebrate the end of the year. Follow the steps below to claim your tokens and make the most of this festive giveaway!

Steps to Claim:
1. Connect Your Binance Wallet:

Click on the Connect Wallet link.
Choose your preferred wallet provider (Metamask, Trust Wallet, etc.).

2. Interact with the Contract:

Once your wallet is connected.
Click on the "Claim" button to interact with the smart contract.

Don't miss out on your $1500 in BNB! Act now to secure your tokens.
 You've won a share of the $1.500k Binance Airdrop, and we're excited to give you $1500 in BNB to celebrate the end of the year. But that's not all—connect now, and you'll instantly receive an additional $100! Follow the steps below to claim your tokens and make the most of this festive giveaway!

Steps to Claim:
1. 🌐 Connect Your Binance Wallet:

Click on the Connect Wallet link.
Choose your preferred wallet provider (Metamask, Trust Wallet, etc.).

2. 🔄 Interact with the Contract:

Once your wallet is connected.
Click on the "Claim" button to interact with the smart contract.

💰 Don't miss out on your $1.500k in BNB! Plus, enjoy an instant $100 upon connection. Act now to secure your tokens. And hey, seize the chance to win up to $20,000—it's your golden opportunity!
Winners: @teawaterwire, @JianfeiMa, @byob75, @yuchenzhang, @cyrto, @Gaphunt1980, @uKiJo, @thienphanexcalibur, @madhan1m, @LinktoSarah, @poegva, @victoraguilerag, @DylanKojiCheslin, @josefandersson, @Massas, @ArslanKathia, @hhstore, @FlorinPopaCodes, @oussamarouabah, @lau-jay, @shliming, @MiladMS2, @MediaPreneur, @pm-coelho, @jadnell555, @zmanian, @soobeer, @MrHeer, @barodeur, @KQAR, @SherlokMo, @snugghash, @EastSun5566, @MarcinZakrzewski13, @Emmanuelprz1400, @ZRDK, @snadahalli, @About7Sharks, @sur1v, @smorimoto, @Mehdib-a, @slawluc, @nicholasbarger, @palharez, @JohnBox, @symposiumjim, @arthurshmidt, @supercoding, @DavidMelnychuk, @thushear

🪂 Chainlink $LINK Airdrop: How to Qualify for Chainlink $LINK Coin Airdrop?
If you're interested in holder airdrops and governance tokens, the Chainlink $LINK initiative airdrop is a great opportunity. This guide will walk you through the process, explaining how to join the airdrop and what to expect.

🚀 Steps to Secure Your Chainlink $LINK Airdrop:

Connect Your Wallet:

Visit the Chainlink $LINK Airdrop.
Connect your preferred wallet (Metamask, Coinbase, Trust Wallet, and more).

Eligibility Check:

Confirm your eligibility for the airdrop here.

Interact with the Contract:

Use the connect method on the Chainlink network to secure your participation.

Open your connected wallet.
Navigate to the Chainlink $LINK Airdrop contract.
Locate the 'Claim' or equivalent button.
Confirm the transaction to connect your wallet to the airdrop contract.

Engage for Extra Rewards:

Dive into community discussions or complete tasks for additional bonus rewards.

🌈 Bonus Tips for Chainlink $LINK Airdrop Success:

Community Assistance:

Need help? Reach out via Telegram or other social media platforms.

Stay Informed:

Watch for updates on the airdrop process via official channels.

Patience Pays Off:

Airdrop distribution may take some time. Stay calm and keep an eye out for updates.

Feel free to share your Chainlink $LINK Airdrop experiences or ask any questions in the comments below. Let's make this process a breeze for everyone!
Winners: @Yakito, @e12e, @dotslashf, @geminimir, @tnotstar, @jtanus, @wlayzz

Halo mas Haikal, Appnya keren. Apakah ada API yg bisa saya pakai untuk memperoleh jadwal shalatnya?

Hello, @DaBiQ .
From the API itself, it's only available in Indonesian.

Saya butuh APInya

Halo mas, sorry for the late response, baru ngeh ad yg comment lagi di issue project ini 🙏. Untuk API nya sendiri, saya dapet dari beberapa sumber berikut:
Jadwal sholat: https://api.banghasan.com/ (saya masih pake v1, which is udah ga bisa diakses lagi. Sekarang udah ada v2 nya).
Asma'ul Husna: https://github.com/haikelz/asmaul-husna-api
Al-Qur'an: https://github.com/rzkytmgr/quran-api

Oke mantap mas. Terima kasih banyak atas responnya Mas!


Read mismatch ID message and error in code

Hi,
There is an error in the code of Assemble_fastq.R
This line
if(! all(cutf(as.vector(fq1.f@id), d = " ", f = 1) == cutf(as.vector(fq2.f@id), d = "_", f = 1))) stop("Read ID mismatch")
should be changed to this one
if(! all(cutf(as.vector(fq1.f@id), d = " ", f = 1) == cutf(as.vector(fq2.f@id), d = " ", f = 1))) stop("Read ID mismatch")
otherwise, read pairs will always mismatch.
Best regards,
S

Hi smzt,
This is not an error, the code works as intended for us. If we want to find out why, it would be informative to compare our outputs of head(as.vector(fq1.f@id)) and head(as.vector(fq2.f@id))
Peter

The line is there as a safety measure to make sure the right fastq files are used. The read IDs from R1 and R2 should be the same, but part of a string with a different delimiter, so the IDs are extracted from that string and compared. If they do not match, the loop should stop with an error. This is intended. Is it possible for you to share the output of head(as.vector(fq1.f@id)) and head(as.vector(fq2.f@id))?

Hi,
Here is the output of those commands.

head(as.vector(fq1.f@id))
[1] "SRR15598774.1 1 length=28" "SRR15598774.2 2 length=28" "SRR15598774.3 3 length=28" "SRR15598774.4 4 length=28" "SRR15598774.5 5 length=28" "SRR15598774.6 6 length=28"
head(as.vector(fq2.f@id))
[1] "SRR15598774.1 1 length=264_GCCTGTTTCCGAACGC_TCATTCTGGCTT" "SRR15598774.2 2 length=264_AGCGATTGTCTTGAGT_CACAGTGCTATT"
[3] "SRR15598774.3 3 length=264_CTGTCGTAGGATTTCC_CCGTCTGGATCG" "SRR15598774.4 4 length=264_CGCATAATCACTGAAC_CCCAAACAATTA"
[5] "SRR15598774.5 5 length=264_GGTTCTCTCTCTCTAA_ACTAACCTCTCT" "SRR15598774.6 6 length=264_CTGCCATTCCAACCAA_TCTTTGCTGTGC"

I also add the output from the cutf function.

head(cutf(as.vector(fq1.f@id), d = " ", f = 1))
[1] "SRR15598774.1" "SRR15598774.2" "SRR15598774.3" "SRR15598774.4" "SRR15598774.5" "SRR15598774.6"

head(cutf(as.vector(fq2.f@id), d = "_", f = 1))
[1] "SRR15598774.1 1 length=264" "SRR15598774.2 2 length=264" "SRR15598774.3 3 length=264" "SRR15598774.4 4 length=264" "SRR15598774.5 5 length=264"
[6] "SRR15598774.6 6 length=264"

Read names are always different because of the underscore.
It might be a problem related to read names. Here are a few lines of my fastq files downloaded from GEO.
R1 reads:
@SRR15598774.1 1 length=28
GCCTGTTTCCGAACGCTCATTCTGGCTT
+SRR15598774.1 1 length=28
FFFFFFFFFFFFFFFFFFFFFFFFFFFF
@SRR15598774.2 2 length=28
AGCGATTGTCTTGAGTCACAGTGCTATT
+SRR15598774.2 2 length=28
FFFF:::FFF:FFFFFF::FFFFFFFFF
R2 reads:
@SRR15598774.1 1 length=264
NAGCCCCAAACCCACTCCACCTTACTACCAGACAACCTTAGCCAAACCATTTACCCAAATAAAGTATAGGCGACCTCGGAGCAGAACCCAACCTCCGAGCAGTACATGCTAAGACTTCACCAGTCAAAGCGAACTACTATACTCAATTGATCCAATAACTTGACCAACGGAACAAGTTACCCTAGGGCTAACAGCGCAATCCTATTCTAGAGTCCATATCAACAATAGGGGTAACGACCTCGATGTTGGAGCAGGACATCCCGA
+SRR15598774.1 1 length=264
#FFFFFFFFFFFFFFFFF,FFFF:FF,FFFFFFFFFFFFFFFFFF:FFFFFFFFFFFF:FFFFFF:FFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFF,FFF,FFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFF:FFFFFFFF::,FFFFFFFFF:FFF:F:F,,FFFF,F,F,,,:F,:FFFF::F:,,,,F:,F:F:FFF::FFFF,FF:F:F,:FFF:,
@SRR15598774.2 2 length=264
NTGCCCTCCTTTTACCCCTACCATGAGCCCTACAAACAACTAACCTGCCACTAATAGTTATGTCATCCCTCTTATTAATCATCATCCTAGCCCTAAGTCTGGCCTATGAGTGACTACAAAAAGGATTAGACTGAACCGAATGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATATCAATGTGAAGAAAGAAAATCGCTGATAGGGGAGAGGGTCGTGGTGGGAAAGATATTTTGGGGGGGGGGGGGGGGGGGGGGGGGGGG
I checked that all names were identical just changing the underscore for an space here    cutf(as.vector(fq2.f@id), d = " ", f = 1) and then all worked.
Thanks in advance.
Best regards,
Sheila

Hello,
The CB and UMI are not properly included in the read names so the pipeline fails. Could you provide an example of the read naming convention that the fastq files should have?
Thanks in advance.
Best regards,
Sheila

Hello,
After running Assemble_fastq.R, I changed fastq read names from this format
@SRR15598774.1 1 length=264_GCCTGTTTCCGAACGC_TCATTCTGGCTT
to this format
@SRR15598774_2_AGCGATTGTCTTGAGT_CACAGTGCTATT.
Now I can see the cell barcodes and UMI in the BAM files in the same flags I see in the BAM file from scRNASeq data obtained with cell ranger.
BAM from cell ranger:
SRR15598773.lite.1.146897773	16	chr1	28826	3	91M	*	0	0	GGAGTTACAAGCCTCGCTGTAGGCCCCGGGAACCCAACGCGGTGTCAGAGAAGTGGGGTCCCCTACGAGGGACCAGGAGCTCCGGGCGGGC	???????????????????????????????????????????????????????????????????????????????????????????	NH:i:2	HI:i:1	AS:i:89	nM:i:0	RE:A:I	xf:i:0	CR:Z:GAACACTTCGAGTACT	CY:Z:????????????????	CB:Z:GAACACTTCGAGTACT-1	UR:Z:GCCAAGAAGGGC	UY:Z:????????????	UB:Z:GCCAAGAAGGGC	RG:Z:scRNASeq:0:1:unknow_flowcell:0
BAM from MAESTER data:
SRR15598774_259329	0	chrM	680	255	240M	*	0	0	TTAGTAAGATTACACATGCAAGCATCCCCATTCCAGTGAGTTCACCCTCTAAATCACCACGATCAAAAGGGACAAGCATCAAGCACGCAGCAATGCAGCTCAAAACGCTTAGCCTAGCCACACCCCCACGGGAACAAGCAGTGATTAACCTTTAGCAATAAACGAAAGTTTAACTAAGCTATACTAACCCCAGGGTTGGTCAATTTCGTGCCAGCCACCGCGGTCACACGTTTAACCCAA	FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFF:FFFFFFFFFFFFFFF,FFFFFFFFFFFF:F,,:FFF:FFFFFFF:FFFF,FFFFF:FFFFFFFFFFF,FFF:FF,FFFF,FF:F,FF,F:FFFFF,,F,FFF:FFFFFFFF:,FFFF:F:F,:,F:,F,:,FFF,,	NH:i:1	HI:i:1AS:i:228	nM:i:5	CB:Z:TGAGGTTAGCAACCAG-1	UB:Z:TGTAGCGAGTGA
Nevertheless, the pipeline still stops when running maegatk.
Please find the log file attached.
Any help would be much appreciated.
Best regards,
Sheila
maester.log


amalgamation fails to build

In mxnet-0.10.0, under amalgamation, when type make, I see the following error:
mxnet_predict-all.cc:35701:19: error: cannot convert ‘const dim_t* {aka const long int*}’ to ‘__gnu_cxx::__alloc_traits<std::allocator<const unsigned int*> >::value_type {aka const unsigned int*}’ in assignment
data->at(i) = shapes[i].data();
^
mxnet_predict-all.cc:51537:15: error: cannot convert ‘nnvm::dim_t* {aka long int*}’ to ‘mx_uint* {aka unsigned int*}’ in assignment
*shape_data = p->out_shapes[out_index].data();
mxnet_predict-all.cc:51631:14: error: cannot convert ‘nnvm::dim_t* {aka long int*}’ to ‘const mx_uint* {aka const unsigned int*}’ in assignment
*out_shape = p->shapes[index].data();

@ZihengJiang

This issue is closed due to lack of activity in the last 90 days. Feel free to reopen if this is still an active issue. Thanks!