Trigger from One Zoom Level to Another

I'd like to be able to start with, say a zoom level of 1280x720 (150%, based on a 1920x1080 screen), then instead of having to first toggle back up to 1920x180, before I can then use the separate hotkey for zooming to 960x540 (200%), then only being able to use THAT key to toggle to 100% (1920x1080).
Perhaps being able to assign a hotkey that simply toggles zoom, regardless of which level currently zoomed into.
Then a 2nd key that let's you toggle between different zoom levels. (I have seen other hotkeys behave such that if you assign the same keystroke for multiple actions, repeatedly pressing that hotkey switches from one to the other to the other.)

I think that this "zooming in steps" functionality is a good idea, but a bit beyond my scope for now. I might revisit it in the future though.


update go-git v4 api

Codecov Report

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

@@           Coverage Diff           @@
##           master     #119   +/-   ##
=======================================
  Coverage   85.23%   85.23%
=======================================
  Files          11       11
  Lines         325      325
=======================================
  Hits          277      277
  Misses         42       42
  Partials        6        6

Impacted Files
Coverage Δ

objects.go
77.14% <ø> (ø)
:white_check_mark:

database.go
100% <ø> (ø)
:white_check_mark:

blobs.go
77.14% <ø> (ø)
:white_check_mark:

commits.go
82.97% <ø> (ø)
:white_check_mark:

references.go
82.22% <ø> (ø)
:white_check_mark:

tree_entries.go
83.33% <ø> (ø)
:white_check_mark:

tags.go
82.22% <ø> (ø)
:white_check_mark:

Continue to review full report at Codecov.

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


making form taller

for mobile, and also to make them to go along with other buttons
I realize that some browsers(firefox, ie) put 'submit query' as default value unless you put value inside of input, putting them now

There was not enough space for new padded space ( that's why it didn't look like center aligned) gave more spacing


Move MessageCertificate to pkg/protocol/handshake

This is just a start. Looking to get reviewer sign-off before doing
more.
Relates to #333

Sorry for how big this PR is :( I don't see any other way to do it. What do you think of the package structure/layout/naming conventions?
If you are happy with this what is best for reviewing? Would you like more small commits, or one large commit?

Sorry for how big this PR is :( I don't see any other way to do it. What do you think of the package structure/layout/naming conventions?
If you are happy with this what is best for reviewing? Would you like more small commits, or one large commit?

For me it is OK when it is large commit if you just move the code.

For me it is OK when it is large commit if you just move the code.

Thanks @jkralik! I will just go full steam ahead on this.
I think in ~week you will be able to be back on master. Satisfying the interface will be the easy part, just so much to export to make it possible O_O

Thanks @jkralik! I will just go full steam ahead on this.
I think in ~week you will be able to be back on master. Satisfying the interface will be the easy part, just so much to export to make it possible O_O

@jkralik @daenney If you have 10 minutes would you mind looking through pkg and making sure the naming/organization choices I made were sane? https://github.com/pion/dtls/tree/master/pkg
The PR itself was just massive so I don't have much hope of review. I made no public API/Code changes so the impact should be 0!

@jkralik @daenney If you have 10 minutes would you mind looking through pkg and making sure the naming/organization choices I made were sane? https://github.com/pion/dtls/tree/master/pkg
The PR itself was just massive so I don't have much hope of review. I made no public API/Code changes so the impact should be 0!


Added integration tests for token info and token revocation

This should help prevent regresion tests
Fixed up some comments in the validate file
Added more validte to the integration tests

Probably need to test the revocation of a refresh token as well. I only see access tokens being checked.


(PUP-6087) Error when a capability mapping is redefined.

Before this commit redefining a capability mapping added both mappings to
the capability list. When producing and consuming resources only the
first mapping would be used. Now trying to add the second mapping
results in a ParseError.
In addition we previously evaluated mappings twice. Once before
evaluating main and a second time after evaluating applications. The
capability mappings were not properly cleared after the first
evaluation. As a consequence capability mappings were added twice. It
seems better if we only only evaluate them once so that they are
available for producing resources at a consistent place in compilation.

Waiting for CLA signature by @adreyer
@adreyer - We require a Contributor License Agreement (CLA) for people who contribute to Puppet, but we have an easy click-through license with instructions, which is available at https://cla.puppet.com/
Note: if your contribution is trivial and you think it may be exempt from the CLA, please post a short reply to this comment with details. http://docs.puppet.com/community/trivial_patch_exemption.html

CLA signed by all contributors.

:+1:

It wasn't clear what the process was to get it merged or whether it was safe to go in because of current releases...

However, somewhere along the line between when this PR went up and today, it now doesn't pass specs. So reverted in #5289. Sigh.
So @adreyer or @nicklewis, when you get a chance take another look.


Pluggable thread pool

This is a feature that io.js will need in the near future.  I'm going to self-assign but if someone else wants to work on it, please comment.
Goal: add a hook that lets the libuv user override the built-in thread pool.  I think it'll look something like this:
struct uv_threadpool_work;  /* Opaque structure. */
typedef int (*uv_threadpool_add_cb)(struct uv_threadpool_work* work);
typedef int (*uv_threadpool_cancel_cb)(struct uv_threadpool_work* work);
/* cancel_cb == NULL means calls to uv_cancel() always fail with UV_EBUSY. */
void uv_threadpool_set_callbacks(uv_threadpool_add_cb add_cb,
                                 uv_threadpool_cancel_cb cancel_cb);
/* User calls this when work is complete. Should probably be safe to call from any thread. */
void uv_threadpool_complete(struct uv_threadpool_work* work);

Maybe we want to extend the callbacks with a second argument for passing options, either as flags or, if we want to be extensible, a struct:
enum uv_threadpool_options_version {
  UV_THREADPOOL_OPTIONS_V1
/* Enum for symbolic debugging, #define for feature detection. */
#define UV_THREADPOOL_OPTIONS_V1 UV_THREADPOOL_OPTIONS_V1
};

struct uv_threadpool_options_v1 {
  int priority;  /* Just an example. */
};

struct uv_threadpool_options {
  enum uv_threadpool_options_version version;
  union {
    struct uv_threadpool_options_v1 v1;
    /* Extend with v2, v3, etc. when the need arises. */
  } u;
};

Goal: add a hook that lets the libuv user override the built-in thread pool.

Do you want thos v1.x? Are you still onboard with making something along the lines of https://github.com/libuv/leps/pull/4 for the future++?

I think this feature request covers most of libuv/leps#4:

configurable thread pool size

different thread pools for different tasks (not outlined above but could be signaled through options, like the priority)

uv_queue_work() as a convenience function can stay

But it doesn't cover the main point, which is to make the threadpool usage explicit. The user would need to specify on which thread pool to run a given fs operation, for example. And uv_queue_work would morth into taking a threadpool handle argument.
I think both our goals can be achieved if we build an "abstract executor" thing, which the threadpool handle and the custom executor (your proposal) implement. The threadpool handle would be basically an executor with some predefined callbacks, while if you build a custom execurtor, you canset them yourself, just like in your proposal.
Now, my proposal cannot be made for v1.x (breaks API), but yours can (right?) so we can go with it and make the threadpool a handle later on.
WDYT?

But it doesn't cover the main point, which is to make the threadpool usage explicit.

Right, that's certainly true. :-)

And uv_queue_work would morth into taking a threadpool handle argument.

morth == morph?

Now, my proposal cannot be made for v1.x (breaks API), but yours can (right?) so we can go with it and make the threadpool a handle later on.

Correct, and sounds reasonable.

morth == morph?

Yeah.

Correct, and sounds reasonable.

Kewl, looks like we're on the same page then :-)

#319 just proposes a simple change to the threadpools to allow more flexibility. I actually just need another pool with maybe configurable number of threads (to avoid exhaustion of threads if using two different families of work queue clients at the same time).

In the project I'm working on, I have my own thread pool and run libuv's fs ops in blocking mode (NULL callback). It would be nice to have an option to simply disable libuv's thread pool at compile time, and let the user do their own wrapping.
I'd also like to note that if the thread pool can be guaranteed to only be used from a single main thread, it can be implemented without locking. This guarantee currently isn't supported by libuv because you can have multiple run loops on different threads, but I doubt most projects actually take advantage of that. Last I checked libuv's thread pool uses a condition lock, which (at least theoretically) is slower than necessary and can block the main thread.

In the project I'm working on, I have my own thread pool and run libuv's fs ops in blocking mode (NULL callback). It would be nice to have an option to simply disable libuv's thread pool at compile time, and let the user do their own wrapping.

Do you have any API suggestion? Running blocking fs operations in a thread is actually not safe, because the request is added to the loop active requests queue, which is not thread-safe.
Ben has another PR (#382) where a runtime setting would disable the threadpool, would that work for you?

I'd also like to note that if the thread pool can be guaranteed to only be used from a single main thread, it can be implemented without locking. This guarantee currently isn't supported by libuv because you can have multiple run loops on different threads, but I doubt most projects actually take advantage of that.

Any project which uses more than one loop and runs dns or fs operations already takes advantage of it, we cannot make any assumptions...

Last I checked libuv's thread pool uses a condition lock, which (at least theoretically) is slower than necessary and can block the main thread.

The condition lock is just used to signal workers when work was added to the work queue iff it was empty. In practice I've never seen any issue with this approach, do you have any references I could check?

Thanks for the quick response!

Do you have any API suggestion?

Well, I'm thinking of a compile time flag, like ./configure --disable-threadpool or something. However, this isn't really that big of a deal to me.
More importantly, last I checked uv_getaddrinfo doesn't work in non-blocking mode (with NULL callback). Currently I need to use the libuv thread pool in order to run that one function. I can open a separate issue for this if necessary.

Running blocking fs operations in a thread is actually not safe, because the request is added to the loop active requests queue, which is not thread-safe.

I create a separate uv run loop for each worker thread. But in blocking mode there is no reason to interact with the run loop at all, is there?

Any project which uses more than one loop and runs dns or fs operations already takes advantage of it, we cannot make any assumptions...

But a custom run loop can be tailored to the application at hand. And even for applications that use the thread pool from multiple main threads, it would be possible to create multiple thread pools and then avoid further coordination.
Regarding performance: close to a year ago, I wrote a custom VFS (file system wrapper) for SQLite that sat on top of libuv and allowed all of SQLite to run in non-blocking mode. However the performance (without caching) was roughly a factor of 5 slowdown. The overhead for going back and forth to the thread pool for every little read and write made it unworkable. So anything that can be done to speed up the thread pool helps. But for heavy disk workloads, applications either need to use real threads or native AIO (on platforms that support it, only Windows?), not thread pools.

Well, I'm thinking of a compile time flag, like ./configure --disable-threadpool or something. However, this isn't really that big of a deal to me.

I don't like the idea of disabling features at compile time, then we'd need to add a way to know if it has been done, and so on. A runtime setting should do.

More importantly, last I checked uv_getaddrinfo doesn't work in non-blocking mode (with NULL callback). Currently I need to use the libuv thread pool in order to run that one function. I can open a separate issue for this if necessary.

Not anymore! :-) https://github.com/libuv/libuv/commit/f2bb8d394c06d06ee45e884600466321455751b6

I create a separate uv run loop for each worker thread. But in blocking mode there is no reason to interact with the run loop at all, is there?

No, there isn't. I think we should be able to fix this without much trouble, can you please open an issue?

But for heavy disk workloads, applications either need to use real threads or native AIO (on platforms that support it, only Windows?), not thread pools.

The story with AIO is not pretty, alas: http://blog.libtorrent.org/2012/10/asynchronous-disk-io/ and things don't seem to have improved much, AFAIK.

I can't think of a situation where I'd want the thread pool to grow or shrink at runtime. It's better to just set a generous fixed size IMHO. Maybe there is a use case where it would be handy though.

On another PR I suggested that we have both a minimum number of threads and a maximum one, so setting them to the same value should achieve exactly that.
PS: We have a number of open issues / PRs about different threadpool related work, I plan to create a "meta issue" next week aggregating all of them so we (and everyone who wants to) have a better picture.

I don't like the idea of disabling features at compile time, then we'd need to add a way to know if it has been done, and so on. A runtime setting should do.

It can already be disabled at runtime by using putenv("UV_THREADPOOL_SIZE=0"), can't it? I don't think anything more complicated is necessary, and there isn't much advantage anyway.

https://github.com/libuv/libuv/commit/f2bb8d394c06d06ee45e884600466321455751b6

Great news, thanks.

No, there isn't. I think we should be able to fix this without much trouble, can you please open an issue?

I created an issue, #469.

The story with AIO is not pretty, alas: http://blog.libtorrent.org/2012/10/asynchronous-disk-io/ and things don't seem to have improved much, AFAIK.

Yeah, I know. I use an approach I call "big workers" where I switch to the thread pool to do I/O and then stay there as long as possible before switching back. This divides the context switch overhead by the number of operations performed. However async network I/O can't be done from the thread pool (since it would be blocked by file I/O) so at least one context switch per "chunk" is necessary.
Non-blocking and blocking mix like oil and water, and unfortunately thread pools don't help as much as one would like.

On another PR I suggested that we have both a minimum number of threads and a maximum one, so setting them to the same value should achieve exactly that.

I would just set the number of threads to whatever maximum you were going to use, and let the idle threads stay idle. That said I think libuv's current default of 4 threads is too low for many workloads, even on machines with 4 cores or less. It's better to have >1 thread per core so that the kernel scheduler can make better decisions. My application defaults to 16 threads although 8 might be a better default for libuv.

different thread pools for different tasks

Some further thoughts on this. What about being able to balance the two. So if we have 4 threads and tell the threadpool to use 2 for FS operations and 2 for other work queued by the user and when needed being able to change this balance
uv_threadpool_set_balance(2, 2);
uv_threadpool_set_balance(1, 3);

Another thing i would love to see is a threadpool that uses a priority queue. This allows me to built a consumer / listener pattern on top of the threadpool in which certain tasks have higer execution priority than others.
An example, a blocking serial device read cannot be set to block for less then 1 millisecond  (VTIME set to 1 and VMIN set to 0). If we have multiple events waiting to be executed, it would be great the be able to prioritize them so fast work can be executed before the potential slow work. Most of the work triggered by my events are processed in under 100 microsecond so having them executed before the FS work can give the whole program a more responsive feeling.

I'm reasonably familiar with the libuv and Node codebases and I think this is an interesting potential project.
I see that there has been a lot of discussion on this topic.
Some questions:

Is anyone working on a PR?
Is there an agreed-upon design somewhere?

@davisjam

No.

The approach I outlined in the first comment.  It's flexible enough to cover the use cases mentioned in this and other issues, and can be added without breaking backwards compatibility.

@bnoordhuis Thank you.
What's the work process for new libuv featuresl ike this? Should I work on an LEP as a first step?

The LEP-first approach hasn't quite worked out, IMO.  I'd just start with a minimal pull request as a conversation starter.

Any update about a new LEP or a person working on it ?

@claam See discussion in #1726. I'm not working on it at the moment, currently juggling an internship and another research project.

I am now working on this again.

Since my goal is for this to get into Node...should I target v1.x (ABI compatibility, if this is possible) or v2 (go wild)?

Your call. We are going to want to get v2 out the door in the coming months so that we don't end up on the hook supporting v1 until Node 12 goes EOL. That said, I wouldn't go too wild if it's going to make upgrading to v2 a huge pain for users.

In #1726 I've proposed what I think is a v1.x-compatible implementation.


Add separator between review comments

Now only distinguished by avatar. Should probably use the same separation style as comments in an issue / PR.

Bug Report Dump (Auto-generated)

Version 1.15.0<PHONE_NUMBER>)
Device: iPhone X (iOS 11.2)
TestFlight: true

I was trying to keep the thread UI consistent with PR review threads on GitHub.com. The separator isn’t there so it’s more clear that it’s a continuous conversation. Different threads get separators, a diff hunk, and file.
I’ll enable separators and see how it looks.
Sent with GitHawk

That's a good point; on web you have this vertical line, but we can't have that unless we inset the text to the right... which due to size constraints I wouldn't do 😛

Problem Solved :trollface:

so beautiful

Gonna say its too busy

I actually think it looks nice with the blue headers where it's "you" -- could we do a very faint grey for anybody but "you"?
@rnystrom 🤔

The blue headers are already there; the gray horizontal lines aren't.

@BasThomas Yea I know! I'm suggesting we don't have the lines, but have a light grey background on all other users 😄


API: embedded object's property of reference type return actual DB id in the API response

So "service" object has embedded launchConfig property of "container" type. If the embedded object has properties that are ref to the other cattle object - dataVolumesFrom/registryCredentialId in my case - their ids in the response object are listed as actual DB ids in the API response: 22 instead of 1c22 as an example

When we activate services with images from private registry - quay.io which requires credentials, registryCredentialId stored in rancher.yml:
testp1:
scale: 1
registryCredentialId: 15
In this case , we do not expect the DB ids to be exposed.

should be fixed as a part of v2 API

@sangeethah I tried reproducing the issue for registryCredentialId , but I see that the Id is obfuscated and not a D ID anymore. Please reopen if you happen to see this again.
{
"id": "1i125",
"type": "container",
"links": { … },
"actions": { … },
"name": "testregistry_Q4_1",
"state": "running",
"accountId": "1a5",
"build": null,
"capAdd": [ ],
"capDrop": [ ],
"command": null,
"cpuSet": null,
"cpuShares": null,
"createIndex": 1,
"created": "2016-03-09T18:20:25Z",
"createdTS":<PHONE_NUMBER>000,
"dataVolumeMounts": { },
"dataVolumes": [ ],
"dataVolumesFrom": [ ],
"dataVolumesFromLaunchConfigs": [ ],
"deploymentUnitUuid": "2b5b75fb-469f-489f-9c20-8acc69912a73",
"description": null,
"devices": [ ],
"dns": [ … ],
"dnsSearch": [ 2 items … ],
"domainName": null,
"entryPoint": null,
"environment": null,
"expose": null,
"externalId": "2c7488629ac5991782b02cdc18ca554168a3bc0ab870411e8dd42abc7cbe1635",
"extraHosts": null,
"firstRunning": "2016-03-09T18:20:56Z",
"firstRunningTS":<PHONE_NUMBER>000,
"healthCheck": null,
"healthState": null,
"hostname": null,
"imageUuid": "docker:quay.io/sangeetha/test1",
"kind": "container",
"labels": { … },
"logConfig": null,
"lxcConf": null,
"memory": null,
"memorySwap": null,
"nativeContainer": false,
"networkContainerId": null,
"networkMode": "managed",
"pidMode": null,
"ports": [ ],
"primaryIpAddress": "<IP_ADDRESS>",
"privileged": false,
"publishAllPorts": false,
"readOnly": false,
"registryCredentialId": "1c68",
....
}

This is how to reproduce this:

Run integration test: test_activate_single_service from test_svc_discovery.py
Change the account_id to 5 for the services and environment the test creates in the DB
In API, list the service and check the dataVolumesFrom
It exposes the container's Db Id

"dataVolumesFrom": [
5,
],

@alena1108 mentioned this is not critical and will be fixed along with v2 API. Hence punting it to future.

Looks like we have to fix it for GA as it affects rancher-compose/UI
https://github.com/rancher/rancher/issues/3970

Great, so what is the eta?

GA is expected for end of March. :)

Great. Thank-you. Will monitor this issue.

Tested with latest build from master:
Now we do not see ids being used directly in dataVolumesFrom/requestedHostId/registryCredentialId
"dataVolumesFrom": [
"1i1659",
],

"registryCredentialId": "1c155",

"requestedHostId": "1h4",

The bug still happens when an embedded type is list. So if Object 1 has a field []Object2 (list), and Object2 references Object3, Object's 3 id is not obfuscated.

@alena1108 can you give me an example of this?  which API?  I'll fix it as I'm working in this area already.

@ibuildthecloud it used to be actually for the serviceId field under balancerService.portRules[] (before I removed the type). You can get it by rebasing to this commit of the lb refactor PR:
https://github.com/rancher/cattle/pull/1798/commits/ef9bcd03d98e9e64549a43ef3e8cc88f9f617b65

@deniseschannon is there any progress with that ? You closed #3951 as duplicate of #3929, than #3929 in favor of this :-) but it's still issue


Added a gmsh template for 2D spherical, conforming, quad meshes

There are examples of  how to make non-conforming, mixed, or tri/tet-only spherical meshes in various locations, but I didn't see any examples of ways to make a conforming quad-only spherical mesh, so I thought I might share this.

Thanks for sharing this @varchasgopalaswamy.
We usually host supplementary meshes like this in the data repo: https://github.com/mfem/data.
Do you mind moving this PR there?
We appreciate the contribution 👍
Tzanio

@tzanio Done! https://github.com/mfem/data/pull/6

Thank you @varchasgopalaswamy !


Add polygon zkevm and zkevmTestnet to punk-wallet ui

Include polygon zkevm and zkevm testnet to punk-wallet.
I also noted that the uris for mumbai are incorrect and thought it would be appropriate for mumbai to sit under polygon.
Implementation:
mumbai updates

move mumbai below polygon
update mumbai urls

Punk-Wallet Chain List (add zkevm)

...
polygon
mumbai
zkevm
zkevmTestnet
...

colors
-zkevm is purple (#800080)
-zkevm testnet  is medium purple (#9370DB)
demo

zkevm-punk-wallet.surge.sh
0xb622e7e197E86c1Ad17cc9B9464Ef32c3c6FfBD7 - contract deployed on goerli

repo
zkevm-punk-wallet
commits

update mumbai uris
add polygon zkevm and zkevm to ui; move mumbai under polygon

questions

should the changes for mumbai and the addition of zkevm be different prs?

getting a page not found error when selecting an existing wallet - and this in the url - https://zkevm-punk-wallet.surge.sh/pk#metaPrivateKey_backup1682051861965


Pm mb 13307

Jira ticket for this change
Summary
Is there anything you would like reviewers to give additional scrutiny?
this article explains more about the approach used.
Setup to Run Your Code

💻 You will need to use three separate terminals to test this locally.
Terminal 1
Start the Storybook locally.
make storybook

Terminal 2
Start the UI locally.
make client_run

Terminal 3
Start the Go server locally.
make server_run

Additional steps

Access the
Login as a

Verification Steps for Author
These are to be checked by the author.

[ ] Tested in the Experimental environment (for changes to containers, app startup, or connection to data stores)
[ ] Request review from a member of a different team.
[ ] Have the Jira acceptance criteria been met for this change?

Verification Steps for Reviewers
These are to be checked by a reviewer.

Frontend

[ ] User facing changes have been reviewed by design.
[ ] There are no aXe warnings for UI.
[ ] This works in Supported Browsers and their phone views (Chrome, Firefox, IE, Edge).
[ ] There are no new console errors in the browser devtools
[ ] There are no new console errors in the test output
[ ] If this PR adds a new component to Storybook, it ensures the component is fully responsive, OR if it is intentionally not, a wrapping div using the officeApp class or custom min-width styling is used to hide any states the would not be visible to the user.

Backend

[ ] Code follows the guidelines for Logging
[ ] The requirements listed in Querying the Database Safely have been satisfied.

Database
Any new migrations/schema changes:

[ ] Follows our guidelines for Zero-Downtime Deploys
[ ] Have been communicated to #g-database
[ ] Secure migrations have been tested following the instructions in our docs

Screenshots

Warnings

:warning:
This PR does not include changes to unit tests, even though it affects app code.

:warning:
Please add the JIRA issue key to the PR title (e.g. MB-123)

  Generated by :no_entry_sign: dangerJS against f2319a82d237df4742a2d2d658780d7ba2ca30ab

If that's separate work, cool, I'll approve, but wanted to call it out.

Great catch James! I think that's part of this ticket and will find a fix for

https://office-milmove-pr-9042.mymove.sandbox.truss.coffee/sign-in

@scarequotes I just pushed a fix. It can be re-reviewed here: https://office-milmove-pr-9042.mymove.sandbox.truss.coffee/sign-in

@felipe-lee thanks, from what @pmohal shared in sync it sounds like this information is already stored in the H&AL which is okay for mvp


Update README.md

Hey guys, Congrats on the public release!
I have noticed that there are some mistakes in the readme about our best Libri Transformer system config and number. This PR is to have a quick update to them!

It isn't context net anymore ? :O


Security Concern: Use of a potentially vulnerable package.

There seems to be an indirect usage of a vulnerable version of Babel/Traverse package (version<EMAIL_ADDRESS>that can potentially lead to an arbitrary code execution during compilation.
The code is introduced through the following package chain:
<EMAIL_ADDRESS>›<EMAIL_ADDRESS>›<EMAIL_ADDRESS>›<EMAIL_ADDRESS>›<EMAIL_ADDRESS>Specifically, the explicit import of<EMAIL_ADDRESS>dependency in this file and is responsible for an indirect import of the compromised package<EMAIL_ADDRESS>Source:
Link to the vulnerability documentation.
Recommendation:
Consider overriding the babel dependency to a patched version introduced through "<EMAIL_ADDRESS>@8.0.0-alpha.4".
The most upvoted answer in this post has a decent explanation on how to do so, in case it is needed.

As an FYI, this is only pulled in as a dev dependency: https://github.com/SpecterOps/BloodHound/blob/9dd595987b8166403cca8d07b23bb6ee9fa036b4/cmd/ui/package.json#L80

Resolved as of Version 5.8.1


posix: linker: Wrap rodata and rwdata in sections.

zephyr_linker_sources states that RODATA and RWDATA
included will be wrapped in an outer section, so
add these sections for the posix arch too.

Signed-off-by: Pete Johanson<EMAIL_ADDRESS>

@petejohanson what is the problem you are trying to solve?

@petejohanson what is the problem you are trying to solve?
(it looks to me like the lines for #include <snippets-rom-start.ld>, #include <snippets-rodata.ld>, #include <snippets-rwdata.ld> & #include <snippets-noinit.ld> should not have been merged..)

I'm working on an app that is calling:
zephyr_linker_sources(RODATA include/linker/zmk-events.ld)

And the content of that file looks like:
__event_type_start = .; \
        	KEEP(*(".event_type")); \
        	__event_type_end = .; \

        	__event_subscriptions_start = .; \
        	KEEP(*(".event_subscription")); \
        	__event_subscriptions_end = .; \

This works when building for ARM, because there the linker.ld looks like:
    SECTION_PROLOGUE(_RODATA_SECTION_NAME,,)
→       {
→       *(.rodata)
→       *(".rodata.*")
→       *(.gnu.linkonce.r.*)

/* Located in generated directory. This file is populated by the
 * zephyr_linker_sources() Cmake function.
 */
#include <snippets-rodata.ld>

And it includes the section prologue.
If I try the same thing with native_posix board with the same custom LD script, I get syntax errors, because there's no section prolog there.
Shouldn't this work for both platforms?

Shouldn't this work for both platforms?

As you found out, it is clearly broken.
Anyhow, this PR is not correct because it is moving read only sections after .data (which is in the RW side). But there is no need to move the sections the default linker script is placing already (note that the POSIX arch linker script is an addition to the default ld script, unlike in other platforms)
I'm guessing for your purpose, we just need to define whatever section around those scripts.
Does this work for you? https://github.com/aescolar/zephyr/tree/native_linker_fix
(Trying to be a bit neater I also moved a couple of things around, so other sections which are normally expected to be read only sections are indeed read only)
diff --git a/include/arch/posix/linker.ld b/include/arch/posix/linker.ld
index 8221f8b805..ac47543220 100644
--- a/include/arch/posix/linker.ld
+++ b/include/arch/posix/linker.ld
@@ -22,22 +22,37 @@
 SECTIONS
  {

+  romstart.snippet :
+  {
     /* Located in generated directory. This file is populated by the
      * zephyr_linker_sources() Cmake function.
      */
     #include <snippets-rom-start.ld>
+  }

   #include <linker/common-rom.ld>

+  rodata.snippet :
+  {
     /* Located in generated directory. This file is populated by the
      * zephyr_linker_sources() Cmake function.
      */
     #include <snippets-rodata.ld>
+  }
+
+} INSERT AFTER .rodata;

+
+SECTIONS
+ {
+
+  data.snippet :
+  {
     /* Located in generated directory.This file is populated by the
      * zephyr_linker_sources() Cmake function.
      */
     #include <snippets-rwdata.ld>
+  }

   #include <linker/common-ram.ld>

@@ -50,10 +65,13 @@ SECTIONS

   __data_ram_end = .;

+  noinit.snippet :
+  {
     /* Located in generated directory.This file is populated by the
      * zephyr_linker_sources() Cmake function.
      */
     #include <snippets-noinit.ld>
+  }

   /* Located in generated directory. This file is populated by the
    * zephyr_linker_sources() Cmake function.

@aescolar Yes, that does the job as well. Thanks!

@petejohanson would you like to take that commit into this PR?
(maybe updating the section names to use SECTION_DATA_PROLOGUE(_DATA_SECTION_NAME,,)
so romstart.snippet => SECTION_DATA_PROLOGUE(romstart.snippet,,) )

@aescolar Yes, I will update this PR along those lines.

@aescolar Updated.


link outdated

the link like “http://jozefg.bitbucket.org/posts/2015-03-24-pcf.html” in your article and blog is outdated
you may change the bitbucket.org to bitbucket.io to fixed it

Thank you. this has been resolved by including the explanation.


[FEATURE] v4/sync/etcd - add username/password options

Is your feature request related to a problem? Please describe.
Currently, the v4/sync/etcd plugin does not allow passing in a username/password for RBAC authentication with etcd, either embedded in the endpoint URL or as separate custom options.
Describe the solution you'd like
The etcd client library expects the username/password for RBAC authentication passed in the config, which is being defined here:
https://github.com/go-micro/plugins/blob/0ed40ba1aacebe0d38d871a6272f78125bf68dbc/v4/sync/etcd/etcd.go#L174-L177
Currently, the username / password are not being defined here, and embedding the username/password into the endpoint URL does not cause the etcd client to parse them out and use them for RBAC auth.
As such, the username/password could be parsed out of the sync.Nodes sync option, which isn't super ideal, or new etcd-specific credential options could be created and stored/retrieved from the option context.
Additional context
N/A

https://github.com/go-micro/plugins/blob/9711876631bf43de2a4da21a37bbb7353f846ae2/v4/registry/etcd/options.go#L20-L27
Hope this can be helpful.

Yep yep, thanks!
I was hoping to use that same code once the Context option was added to the sync interface, for consistency :)


Flatpak package for Linux

Following @wetneb comment:  Would be great to offer/build Linux installer on a Flatpak package. Afterward could be offered on Flathub, so the installation process end up being just flatpak install flathub org.openrefine (flatpak install openrefine will probably work too).
Offering a .deb seems to break Debian's rules. Nonetheless, hopefully sooner o later (probably later) will be available on Debian repos.
Edit: Requested on Flathub.

@mbugni mentioned here he created this repo and successfully build a flatpak, but didn’t find a way to stop the server.

I just created a repository which could host such configuration files:
https://github.com/OpenRefine/containers.
Therefore, migrating this issue there.


Creating 2 commands to activate zoom tool and also to move between di…

Description

Create missing command for setZoomTool
Implement the command function for updateViewportDisplaySet that will be used to move (nexty/previous) into current loaded displaySets

Closes #1095

Looks like when I click length and activate the tool and then press Z, the icon changes and the tool is activated but it's not selected in the toolbar, is length instead. Maybe we should try to activate the tool in the toolbar as well?
Besides that, it works. Left some small comments.


1.0.0-rc1

Are we good with that?

Once we merge it, I gonna publish new version to npm.

This looks fine, I think we're good to go (and if we're not, lucky it's a prerelease!).
I've been poking around in my terminal, hopefully the release script will work better this time and here are some special options to use this time around:
npm run release -- --dry-run --prerelease rc will let you test the process and check the changelog has the right stuff in it, etc. When you're happy you can use: npm run release -- --prerelease rc and it should be tagged 1.0.0-rc.0

@aberezkin could you push the changes that the release script should have made to the changelog and package?

Hmm, looks like something went wrong because my local repo is up to date with the remote.

@UncleDave the changelog is saved in CHANGELOG.md, though

You can't push?

I have nothing to push.

The CHANGELOG.md on the master branch has everything it should have. I think I should have ran release script on development branch.

No you should have run the release script on master after the merge (as I assume you have done)
What does your git status show?

On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

release script has the git push command

Wait, so you have the 1.0.0 changes in your local changelog, but it says there are no changes? I can see that the script pushed the tags but there should be a commit aswell.

Hold up, no it is there, I think I've been looking at development the whole time.


HDDS-11934. Split compat suite to old/new

What changes were proposed in this pull request?
xcompat test is now one of the longest, due to increasing coverage.  This change splits it into two suites based on cluster version: compat-new for cluster running current code, and compat-old for testing current client with various old cluster versions.
https://issues.apache.org/jira/browse/HDDS-11934
How was this patch tested?
CI:

test-old.sh: https://github.com/adoroszlai/ozone/actions/runs/12327584447/job/34409960056
test-new.sh: https://github.com/adoroszlai/ozone/actions/runs/12327584447/job/34409959998
compatibility Robot tests: https://github.com/adoroszlai/ozone/actions/runs/12327584447/job/34409960208#step:6:24

Thanks @hemantk-12 for the review.


Updates 29/08.

^ bigfanofit, iris, mineball, minecalc, yttr
(Should) fix the yttr cleaving issue
Fixes the mineball invincibility issue.

Myriad Bows, World in a Jar, Biome Blending Sodium Fix (souper)
^ Bigfan/Matchmaker,


Organizing the Stuff [enhancement]

Houston NaN create a problem! Nwo we have lots of colored itens on our character and we cannot see how colored thei beutifful icons are! My suggestion is take a look on this module and see the ppossibility to make integration from our part or something like that.  Paper Doll module.

As you know, the character sheet we currently have does not have the space to display icons.
The problem is that we don't know where equipment goes.   There is no indicator from GCA/GCS as to where each piece of equipment goes (at least, not at the moment).
But this would be a cool enhancement... if we could figure out where stuff belongs.


eBPF support

Hey there,
I love this project, and after seeing the benefits of eBPF versus perf from this blog:
http://www.brendangregg.com/blog/2016-01-20/ebpf-offcpu-flame-graph.html
I wanted to get eBPF working with flamescope too. I took a look and if I'm not mistaken, the format between perf and eBPF are quite different. Is there any way to use eBPF here?
Thanks,
Anthony

@brendangregg the output of the current bcc tool is folded, correct? If that's the case, we can't really use it here because of the time dimension. bpftrace?


Hub shuts down suddenly when golang example is executed.

What is the bug?
I am trying to implement this example to create a Golang farcaster bot (here my code) but it kills my own hub.
How can it be reproduced? (optional)
Hub logs:
 {"level":30,"time":1708519891926,"pid":1,"hostname":"d07795f7c1bb","component":"Hub","eventId":405752594116608,"fid":332370,"type":"LINK_ADD","submittedMessage":{"timestamp":1708517273000,"hash":"0xde0a612e77868ef18852f0ea68ef1a6e1f257e72","fid":332370,"type":5},"source":"gossip","msg":"submitMessage success"}
hubble-hubble-1   | {"level":40,"time":1708519891956,"pid":1,"hostname":"d07795f7c1bb","component":"Hub","submittedMessage":{"timestamp":1708458779000,"hash":"0x2b6a3710a4f7ed676db7c6d384a4480075d5bbb3","fid":244128,"type":1},"source":"sync","errCode":"bad_request.prunable","source":"sync","msg":"submitMessage error: message would be pruned"}
hubble-hubble-1   | {"level":30,"time":1708519891956,"pid":1,"hostname":"d07795f7c1bb","component":"HttpAPIServer","msg":"Stopped http API server"}
hubble-hubble-1   | {"level":30,"time":1708519891956,"pid":1,"hostname":"d07795f7c1bb","component":"rpcServer","msg":"Force shutdown succeeded"}
hubble-hubble-1   | {"level":30,"time":1708519891958,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891958,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891958,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891958,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891958,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891958,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891958,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891958,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891958,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891958,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891958,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891958,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891958,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519891959,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":50,"time":1708519891966,"pid":1,"hostname":"d07795f7c1bb","component":"GossipNodeWorker","err":{"type":"Error","message":"The operation was aborted","stack":"CodeError: The operation was aborted\n    at DefaultDialer.createDialTarget (file:///home/node/app/node_modules/libp2p/dist/src/connection-manager/dialer/index.js:118:31)\n    at async DefaultDialer.dial (file:///home/node/app/node_modules/libp2p/dist/src/connection-manager/dialer/index.js:81:16)\n    at async DefaultConnectionManager.openConnection (file:///home/node/app/node_modules/libp2p/dist/src/connection-manager/index.js:310:32)\n    at async Libp2pNode.dial (file:///home/node/app/node_modules/libp2p/dist/src/libp2p.js:261:16)\n    at async LibP2PNode.connectAddress (file:///home/node/app/apps/hubble/build/network/p2p/gossipNodeWorker.js:214:26)\n    at async MessagePort.<anonymous> (file:///home/node/app/apps/hubble/build/network/p2p/gossipNodeWorker.js:458:28)"},"msg":"Failed to connect to peer at address: /dns/elen.hubs.neynar.com/tcp/2282"}
hubble-hubble-1   | {"level":50,"time":1708519891966,"pid":1,"hostname":"d07795f7c1bb","component":"GossipNodeWorker","err":{"type":"Error","message":"The operation was aborted","stack":"CodeError: The operation was aborted\n    at DefaultDialer.createDialTarget (file:///home/node/app/node_modules/libp2p/dist/src/connection-manager/dialer/index.js:118:31)\n    at async DefaultDialer.dial (file:///home/node/app/node_modules/libp2p/dist/src/connection-manager/dialer/index.js:81:16)\n    at async DefaultConnectionManager.openConnection (file:///home/node/app/node_modules/libp2p/dist/src/connection-manager/index.js:310:32)\n    at async Libp2pNode.dial (file:///home/node/app/node_modules/libp2p/dist/src/libp2p.js:261:16)\n    at async LibP2PNode.connectAddress (file:///home/node/app/apps/hubble/build/network/p2p/gossipNodeWorker.js:214:26)\n    at async MessagePort.<anonymous> (file:///home/node/app/apps/hubble/build/network/p2p/gossipNodeWorker.js:458:28)"},"msg":"Failed to connect to peer at address: /dns/tari.hubs.neynar.com/tcp/2282"}
hubble-hubble-1   | {"level":50,"time":1708519891966,"pid":1,"hostname":"d07795f7c1bb","component":"GossipNodeWorker","err":{"type":"Error","message":"The operation was aborted","stack":"CodeError: The operation was aborted\n    at DefaultDialer.createDialTarget (file:///home/node/app/node_modules/libp2p/dist/src/connection-manager/dialer/index.js:118:31)\n    at async DefaultDialer.dial (file:///home/node/app/node_modules/libp2p/dist/src/connection-manager/dialer/index.js:81:16)\n    at async DefaultConnectionManager.openConnection (file:///home/node/app/node_modules/libp2p/dist/src/connection-manager/index.js:310:32)\n    at async Libp2pNode.dial (file:///home/node/app/node_modules/libp2p/dist/src/libp2p.js:261:16)\n    at async LibP2PNode.connectAddress (file:///home/node/app/apps/hubble/build/network/p2p/gossipNodeWorker.js:214:26)\n    at async MessagePort.<anonymous> (file:///home/node/app/apps/hubble/build/network/p2p/gossipNodeWorker.js:458:28)"},"msg":"Failed to connect to peer at address: /ip4/<IP_ADDRESS>/tcp/42086"}
hubble-hubble-1   | {"level":50,"time":1708519891967,"pid":1,"hostname":"d07795f7c1bb","component":"GossipNode","peerIdStr":"12D3KooWBPXFPS656B76tCmbbX6PB4vunmQcd8F38MZjkR88ofBx","addr":"/ip4/<IP_ADDRESS>/tcp/42086","error":{"errCode":"unavailable","presentable":false,"name":"HubError"},"msg":"Failed to connect to peer from DB"}
hubble-hubble-1   | {"level":30,"time":1708519892007,"pid":1,"hostname":"d07795f7c1bb","component":"GossipNode","identity":"12D3KooWAJNSPjYG31YEWeszqzRmd5u6tAMQUuFDfoKSrBMnh6hp","msg":"Stopped libp2p..."}
hubble-hubble-1   | {"level":30,"time":1708519892198,"pid":1,"hostname":"d07795f7c1bb","component":"SyncMerkleTrieWorker","numDbUpdates":41967,"force":true,"msg":"Trie committed pending DB updates"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   |  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   0% | Starting Hubble | 0/30 | ETA:  0s
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","msg":"Interrupting sync"}
hubble-hubble-1   | {"level":30,"time":1708519892539,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","syncResult":{"total":5,"successCount":5,"deferredCount":0,"errCount":49},"msg":"Perform sync: Sync Complete"}
hubble-hubble-1   | {"level":30,"time":1708519892540,"pid":1,"hostname":"d07795f7c1bb","component":"SyncEngine","peerId":"12D3KooWFBk1zFVEeMk4YwUssPC2KSEyU714pikPX6b5yrb7aYnY","result":{"total":5,"successCount":5,"deferredCount":0,"errCount":49},"timeTakenMs":19506,"msg":"Diffsync: complete"}
hubble-hubble-1   | {"level":30,"time":1708519892700,"pid":1,"hostname":"d07795f7c1bb","component":"SyncMerkleTrieWorker","msg":"MerkleTrieImpl: stopping"}
hubble-hubble-1   | {"level":30,"time":1708519892767,"pid":1,"hostname":"d07795f7c1bb","component":"WatchContractEvent","key":"StorageRegistry","msg":"Stopped watching contract events"}
hubble-hubble-1   | {"level":30,"time":1708519892768,"pid":1,"hostname":"d07795f7c1bb","component":"WatchContractEvent","key":"IdRegistryV2","msg":"Stopped watching contract events"}
hubble-hubble-1   | {"level":30,"time":1708519892768,"pid":1,"hostname":"d07795f7c1bb","component":"WatchContractEvent","key":"KeyRegistryV2","msg":"Stopped watching contract events"}
hubble-hubble-1   | {"level":30,"time":1708519892768,"pid":1,"hostname":"d07795f7c1bb","component":"WatchBlockNumber","msg":"Stopped watching block numbers"}
hubble-hubble-1   | {"level":30,"time":1708519892769,"pid":1,"hostname":"d07795f7c1bb","component":"Engine","msg":"stopping engine"}
hubble-hubble-1   | {"level":30,"time":1708519892777,"pid":1,"hostname":"d07795f7c1bb","component":"Engine","msg":"validation worker thread terminated"}
hubble-hubble-1   | {"level":30,"time":1708519892777,"pid":1,"hostname":"d07795f7c1bb","component":"Engine","msg":"engine stopped"}
hubble-hubble-1   | {"level":30,"time":1708519892798,"pid":1,"hostname":"d07795f7c1bb","component":"Hub","msg":"Hubble stopped, exiting normally"}
hubble-hubble-1   | {"level":30,"time":1708519892798,"pid":1,"hostname":"d07795f7c1bb","msg":"Hub stopped gracefully"}

Could you please grep the logs for "shutting down hub" and post it? I fixed a potential cause in 1.10.2, so please try upgrading and let me know if it still happens.

Yes the 1.10.2 fixes the crash, but the go example still does not work... I am trying to create a bot for farcaster.vote and I cannot figure out how to sign the vote to be submitted...

@lucasmenendez the go example signs the message data bytes with the ed25519 key at this location, I believe this is an error and should actually sign the truncated 160-bit (20 byte) blake3 hash as part of this spec
At least, this was the issue I had when developing and testing against the grpc endpoints, and the only way I was able to submit a message to a hub successfully. I'm assuming it's a similar issue

Ah good catch. That is a bug, the example should indeed be signing just the hash. Will fix.

Thanks so much! Its working! https://github.com/vocdoni/votebot/blob/7319a95295520e675091176d81f553f81e601182/api/hub/hub.go#L187


add token count for Gemini models

Hello,
thanks for creating this!
It looks super interesting.
With Gemini having 1 million tokens available. And the possibility to get 2 million soon, it will be amazing to see the amount of tokens for them.
https://ai.google.dev/gemini-api/docs/get-started/tutorial?lang=web#count-tokens
Thanks in advance for considering!
Greetings from Franconia (Germany)

Counting tokens for Gemini models requires an API call, they do not have their tokenizer open-sourced / locally usable like tiktoken from OpenAI. This would require the user to configure their API key and the like adding more complexity.
The token counter in code2prompt is intended to be an indicator of how long the rendered prompt is, this should be enough to gauge the possibility of usage for any LLM models/tokenizers. Closing this feature request, for now, will reconsider for the next release candidates.


Properly map shader language texture hints to sampler hints in GLES3 renderer

Fixes: https://github.com/godotengine/godot/issues/70664
Looks like my old mapping didn't quite work as it turned the "default" settings to "nearest" and "repeat disabled". Instead I have replaced it with a LUT that should be more clear and actually respects the proper defaults. If a new shader type is added we may need to make a LUT per shader type as the defaults can be different for each shader type. Right now the only shader type that is different is the fog shader, since fog shaders aren't available in GLES3 we can get by with a single LUT.

Thanks!


Memoize for a duration based on the memoized item

Context
Following discussion at https://github.com/smallrye/smallrye-mutiny/discussions/909.
Right now, memoize can be configured to expire based on a BooleanSupplier. To invalidate memoized item based on its value, a solution is to used a shared AtomicBoolean with a throw/retry mechanism when the boolean become true. See https://github.com/smallrye/smallrye-mutiny/discussions/909#discussioncomment-2720237.
Another drawback is that failure cannot be skipped or memoized differently
Description
It would more convenient to be able to pass a BiFunction that takes the item and the failure and return a boolean to until().
Uni.createFrom().item(new AccessTokenResponse())
    .memoize().until((item, failure) -> failure != null || item.isExpired())

Additional details
Some shortcuts could help like
Uni.createFrom().item(new AccessTokenResponse())
    .memoize().notFailure().until(item -> item.isExpired())
    .memoize().notFailure().atLeast(item -> item.getExpiresIn())

Just yesterday I wrote this memoizing operator which is used like: uni.plug(UniMemoizeItemOp.untilItemExpires(getItemExpiry)
public class UniMemoizeItemOp<T> extends AbstractUni<T> {

	private final Uni<T> upstream;
	private final Function<T, Duration> transform;

	private Duration duration;
	private volatile long startTime = -1;

	private UniMemoizeItemOp(Uni<T> upstream, Function<T, Duration> transform) {
		this.upstream = new UniMemoizeOp<>(upstream, this::checkExpiry);
		this.transform = transform;
	}

	/**
	 * Memoize the Uni item until the item's expiry
	 *
	 * @param transform determine the expiry duration from the item
	 */
	public static <T> Function<Uni<T>, Uni<T>> untilItemExpires(Function<T, Duration> transform) {
		return upstream -> new UniMemoizeItemOp<>(upstream, transform);
	}

	@Override
	public void subscribe(UniSubscriber<? super T> subscriber) {
		AbstractUni.subscribe(upstream, new UniOperatorProcessor<T, T>(subscriber) {

			@Override
			public void onItem(T item) {
				duration = transform.apply(item);
				super.onItem(item);
			}

		});
	}

	/**
	 * This is an almost-clone of the anonymous class in {@link io.smallrye.mutiny.groups.UniMemoize#atLeast(Duration)}
	 * because it's not exposed in a reusable way
	 */
	private boolean checkExpiry() {
		long now = System.nanoTime();
		if (startTime == -1) {
			startTime = now;
		}

		/* This is the only difference to the "base" class's method */
		if (duration == null) {
			/* Wait until there's a duration */
			return false;
		}

		// Avoid arithmetic overflow when retrieving the nanos of the FOREVER duration
		if (duration == ChronoUnit.FOREVER.getDuration()) {
			startTime = now;
			return false;
		}

		boolean invalidates = (now - startTime) > duration.toNanos();
		if (invalidates) {
			startTime = now;
		}
		return invalidates;
	}

}

I've not yet verified whether there's any data races between onItem and checkExpiry. A duration getter for failure handling also need to be added.


My Readers complain about Cloudflare

A reader that tried to open a link to odysee stated:

It seems that I gotta give control to Cloudflare in order to see that video though. Do you have another way to check it out?

I recommended him to use the LBRY Desktop app. It's true that Odysee tries to load proprietary Cloudflare JavaScript when running. Is it necessary? It gives a bad first impression to people in the Free World.

Well.. Their complaint has to do with using Cloud-flare at all. Since if they block the Cloud-Flare JS the site refuses to work properly.


Add LOINC description fields on add/edit device page

FRONTEND PULL REQUEST
Related Issue
Solves #7179
Changes Proposed

Update diseaseForm and diseaseInformation components so that they both read from and write to the testPerformedLoincLongName and testOrderedLoincLongName attributes as defined in our Device Type Disease Table.
Update the getDeviceTypeList qraphGL querry to return testPerformedLoincLongName and testOrderedLoincLongName.
Add input options to the edit device page for the user to update the loinc long names with.

Testing

This code is live on dev2. To test, go to the add/edit device page and verify that the fields for both of the long names are there. Update the values with new values and verify that they persist on refresh and/or in metabase.

Screenshots
Worked with @kenieh and settled on a red "Delete disease" button rather than the red trash can in its own row by itself

⚠ Please don't review yet as I'm cleaning up the styles as per Bobby's request! :)

@mehansen @mpbrown @fzhao99 -- this is now ready for review!

Will merge this tomorrow!


About test result on SemanticKITTI

Hello,
Thanks for your great work!
I want to ask some questions about how the test result on SemanticKITTI dataset.
I use the code following to predict the label of test set. And I use TTA like your provided function validation_tta. I get result of 68.5 on the validation set, but the result has a big gap on the test set. By the way, I use the checkpoint provide in this repository.
So could you please give some advice about how to improve the results on test set. Thanks a lot!
def test_tta(test_loader, model, criterion):
    if main_process():
        logger.info('>>>>>>>>>> Start Evaluation on test set >>>>>>>>>>')

    batch_time = AverageMeter()
    data_time = AverageMeter()

    with open('util/semantic-kitti.yaml', 'r') as stream:
        semkittiyaml = yaml.safe_load(stream)
    learning_map_inv = semkittiyaml['learning_map_inv']

    torch.cuda.empty_cache()

    loss_name = args.loss_name

    model.eval()
    end = time.time()
    for i, batch_data_list in enumerate(test_loader):

        data_time.update(time.time() - end)

        with torch.no_grad():
            output = 0.0
            for batch_data in batch_data_list:

                (coord, xyz, feat, target, offset, inds_reconstruct, file) = batch_data
                inds_reconstruct = inds_reconstruct.cuda(non_blocking=True)

                offset_ = offset.clone()
                offset_[1:] = offset_[1:] - offset_[:-1]
                batch = torch.cat([torch.tensor([ii]*o) for ii,o in enumerate(offset_)], 0).long()

                coord = torch.cat([batch.unsqueeze(-1), coord], -1)
                spatial_shape = np.clip((coord.max(0)[0][1:] + 1).numpy(), 128, None)

                coord, xyz, feat, target, offset = coord.cuda(non_blocking=True), xyz.cuda(non_blocking=True), feat.cuda(non_blocking=True), target.cuda(non_blocking=True), offset.cuda(non_blocking=True)
                batch = batch.cuda(non_blocking=True)

                sinput = spconv.SparseConvTensor(feat, coord.int(), spatial_shape, args.batch_size)

                assert batch.shape[0] == feat.shape[0]

                output_i = model(sinput, xyz, batch)
                output_i = F.softmax(output_i[inds_reconstruct, :], -1)

                output = output + output_i
            output = output / len(batch_data_list)

        output = output.max(1)[1]
        n = coord.size(0)

        batch_time.update(time.time() - end)
        end = time.time()
        if (i + 1) % args.print_freq == 0 and main_process():
            logger.info('Test: [{}/{}] '
                        'Data {data_time.val:.3f} ({data_time.avg:.3f}) '
                        'Batch {batch_time.val:.3f} ({batch_time.avg:.3f}) '.format(i + 1, len(test_loader),
                                                          data_time=data_time,
                                                          batch_time=batch_time))
        output = output.cpu().numpy().reshape(-1)
        output += 1  # transfer from [0, 18] to [1, 19]
        output = np.vectorize(learning_map_inv.__getitem__)(output).astype(np.uint32)
        predict_path = file.split('/sequences/', 1)[1]
        # print(predict_path)
        predict_path = 'test_predict_val/' + 'sequences/' +\
                        predict_path.replace('velodyne', 'labels').replace('labels',
                            'predictions')[:-3] + 'label'
        if os.path.exists(predict_path[:-13]):
            assert output.shape == target.cpu().numpy().shape
            output.tofile(predict_path)
        else:
            os.makedirs(predict_path[:-13])
            assert output.shape == target.cpu().numpy().shape
            output.tofile(predict_path)
    logger.info('<<<<<<<<<<<<<<<<< End Evaluation <<<<<<<<<<<<<<<<<')

    return

Hope for your early reply! Thanks again!

Thanks for your interest in our work. For the result on test benchmark, please refer to Here.

@fengjiang5 Could you please share the environment that you used, I mean the version of the dependencies?
I tried to create a dockerfile using all the versions stated in the readme but I am still getting different errors while running the train.py.
Thank you so much.

Hi, I have uploaded the requirements.txt file. Hope this can help you.

@fengjiang5 Could you please share the environment that you used, I mean the version of the dependencies? I tried to create a dockerfile using all the versions stated in the readme but I am still getting different errors while running the train.py. Thank you so much.

Great thanks, I will try and let you know.

Great thanks, I will try and let you know.
Hello, I just follow the installation pipeline from README.md.
If you have any error, you can copy and paste them here.

Hi, I have uploaded the requirements.txt file. Hope this can help you.

@fengjiang5 Could you please share the environment that you used, I mean the version of the dependencies? I tried to create a dockerfile using all the versions stated in the readme but I am still getting different errors while running the train.py. Thank you so much.

Hello, I just follow the installation pipeline from README.md.
If you have any error, you can copy and paste them here.
I wiil try my best to help you.

Thanks for your interest in our work. For the result on test benchmark, please refer to Here.

It is so hard to add test trick... 😭

I still haven't succeeded to make the code run.
I am using this docker file to create the env:
FROM nvidia/cuda:11.1.1-devel-ubuntu20.04

# Set Debian frontend to non interactive
ARG DEBIAN_FRONTEND=noninteractive

# Start from clean distro with proper Timezone
RUN apt-get update && apt-get dist-upgrade -y && apt-get autoremove \
    && apt-get install -y --no-install-recommends tzdata \
    && ln -fs /usr/share/zoneinfo/Europe/Paris /etc/localtime \
    && dpkg-reconfigure --frontend noninteractive tzdata

# General packages needed by the other build steps
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils debconf-utils bash lsb-release
RUN apt-get update && apt-get install -y --no-install-recommends git openssh-client ca-certificates gnupg curl wget file

# Python Python and python extensions
RUN apt-get update && apt-get install -y --no-install-recommends \
    gcc \
    ninja-build \
    python3-dev \
    python3-matplotlib \
    python3-numpy \
    python3-packaging \
    python3-pandas \
    python3-pip \
    python3-tk \
    python3-venv \
    sshfs \
    tcpreplay

# Set bash the default shell
SHELL ["/bin/bash", "-c"]

RUN pip3 install numpy
RUN pip3 install -U scikit-learn
RUN pip3 install configparser pandas tqdm
RUN pip3 install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html
RUN pip3 install torch-scatter==2.0.9
RUN pip3 install torch-geometric==1.7.2
RUN pip3 install spconv-cu111==2.1.21
RUN pip3 install torch-sparse==0.6.12 cumm-cu111==0.2.8 torch-cluster==1.6.0
RUN pip3 install tensorboard==2.9.1 timm==0.5.4 termcolor==1.1.0 tensorboardX==2.5.1
RUN pip3 install google-auth==2.8.0 google-auth-oauthlib==0.4.6 google-pasta==0.2.0
RUN pip3 install PyYAML==6.0
RUN pip3 install scipy==1.7.3
RUN pip3 install pccm==0.3.4
RUN pip3 install ccimport==0.3.7

the I installed the sptr using

root@1a836b32a4e6:/home# python3 train.py --config config/semantic_kitti/semantic_kitti_unet32_spherical_transformer.yaml
Traceback (most recent call last):
File "train.py", line 902, in
main()
File "train.py", line 92, in main
main_worker(args.train_gpu, args.ngpus_per_node, args)
File "train.py", line 107, in main_worker
from model.unet_spherical_transformer import Semantic as Model
File "/home/model/unet_spherical_transformer.py", line 11, in
from model.spherical_transformer import SphereFormer
File "/home/model/spherical_transformer.py", line 7, in
from third_party.SparseTransformer.sptr import to_3d_numpy, SparseTrTensor, sparse_self_attention, get_indices_params
File "/home/third_party/SparseTransformer/sptr/init.py", line 2, in
from .utils import *
File "/home/third_party/SparseTransformer/sptr/utils.py", line 5, in
from torch_geometric.nn import voxel_grid
File "/usr/local/lib/python3.8/dist-packages/torch_geometric/init.py", line 5, in
import torch_geometric.data
File "/usr/local/lib/python3.8/dist-packages/torch_geometric/data/init.py", line 1, in
from .data import Data
File "/usr/local/lib/python3.8/dist-packages/torch_geometric/data/data.py", line 8, in
from torch_sparse import coalesce, SparseTensor
File "/usr/local/lib/python3.8/dist-packages/torch_sparse/init.py", line 15, in
torch.ops.load_library(importlib.machinery.PathFinder().find_spec(
AttributeError: 'NoneType' object has no attribute 'origin'

Hi @fatemechangizian. I got a similar error and could solve it by installing torch_scatter and torch_sparse by specifying the cuda version like below:
pip install torch_scatter==2.0.8 -f https://data.pyg.org/whl/torch-1.8.0+cu111.html
pip install torch_sparse==0.6.12 -f https://data.pyg.org/whl/torch-1.8.0+cu111.html
pip install torch_geometric==1.7.2 -f https://data.pyg.org/whl/torch-1.8.0+cu111.html
pip install torch_cluster==1.5.9 -f https://data.pyg.org/whl/torch-1.8.0+cu111.html

I also had to downgrade the version of torch_scatter from 2.0.9 to 2.0.8 since cu111 doesn't have the binaries for 2.0.9.
Hope that helps.

I used gcc 8.3 for the compilation of SparseTransformer since I was getting some errors with gcc > 10. Another thing which is weird is that you need to import torch_sparse before sptr_cuda, otherwise it throws an error.

Adding --recursive didn't resolve the issue. Here is the error
 > [24/24] RUN git clone https://github.com/dvlab-research/SphereFormer.git --recursive &&     cd SphereFormer/third_party/SparseTransformer &&     python3 setup.py install:
#0 0.313 Cloning into 'SphereFormer'...
#0 6.941 No CUDA runtime is found, using CUDA_HOME='/usr/local/cuda'
#0 6.941 running install
#0 6.990 running bdist_egg
#0 6.990 running egg_info
#0 6.990 creating sptr.egg-info
#0 6.990 writing sptr.egg-info/PKG-INFO
#0 6.990 writing dependency_links to sptr.egg-info/dependency_links.txt
#0 6.990 writing top-level names to sptr.egg-info/top_level.txt
#0 6.991 writing manifest file 'sptr.egg-info/SOURCES.txt'
#0 7.021 reading manifest file 'sptr.egg-info/SOURCES.txt'
#0 7.022 writing manifest file 'sptr.egg-info/SOURCES.txt'
#0 7.022 installing library code to build/bdist.linux-x86_64/egg
#0 7.022 running install_lib
#0 7.022 running build_ext
#0 7.039 building 'sptr_cuda' extension
#0 7.039 creating /SphereFormer/third_party/SparseTransformer/build
#0 7.039 creating /SphereFormer/third_party/SparseTransformer/build/temp.linux-x86_64-3.8
#0 7.039 creating /SphereFormer/third_party/SparseTransformer/build/temp.linux-x86_64-3.8/src
#0 7.039 creating /SphereFormer/third_party/SparseTransformer/build/temp.linux-x86_64-3.8/src/sptr
#0 7.040 creating /SphereFormer/third_party/SparseTransformer/build/temp.linux-x86_64-3.8/src/sptr/attention
#0 7.040 creating /SphereFormer/third_party/SparseTransformer/build/temp.linux-x86_64-3.8/src/sptr/precompute
#0 7.040 creating /SphereFormer/third_party/SparseTransformer/build/temp.linux-x86_64-3.8/src/sptr/rpe
#0 7.041 Traceback (most recent call last):
#0 7.041   File "setup.py", line 12, in <module>
#0 7.041     setup(
#0 7.041   File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 144, in setup
#0 7.041     return distutils.core.setup(**attrs)
#0 7.041   File "/usr/lib/python3.8/distutils/core.py", line 148, in setup
#0 7.041     dist.run_commands()
#0 7.041   File "/usr/lib/python3.8/distutils/dist.py", line 966, in run_commands
#0 7.041     self.run_command(cmd)
#0 7.041   File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
#0 7.041     cmd_obj.run()
#0 7.041   File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 67, in run
#0 7.041     self.do_egg_install()
#0 7.041   File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 109, in do_egg_install
#0 7.041     self.run_command('bdist_egg')
#0 7.041   File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
#0 7.041     self.distribution.run_command(command)
#0 7.041   File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
#0 7.041     cmd_obj.run()
#0 7.041   File "/usr/lib/python3/dist-packages/setuptools/command/bdist_egg.py", line 172, in run
#0 7.041     cmd = self.call_command('install_lib', warn_dir=0)
#0 7.041   File "/usr/lib/python3/dist-packages/setuptools/command/bdist_egg.py", line 158, in call_command
#0 7.041     self.run_command(cmdname)
#0 7.041   File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
#0 7.041     self.distribution.run_command(command)
#0 7.041   File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
#0 7.041     cmd_obj.run()
#0 7.041   File "/usr/lib/python3/dist-packages/setuptools/command/install_lib.py", line 23, in run
#0 7.041     self.build()
#0 7.041   File "/usr/lib/python3.8/distutils/command/install_lib.py", line 109, in build
#0 7.041     self.run_command('build_ext')
#0 7.041   File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
#0 7.041     self.distribution.run_command(command)
#0 7.041   File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
#0 7.041     cmd_obj.run()
#0 7.041   File "/usr/lib/python3/dist-packages/setuptools/command/build_ext.py", line 87, in run
#0 7.041     _build_ext.run(self)
#0 7.041   File "/usr/lib/python3.8/distutils/command/build_ext.py", line 340, in run
#0 7.041     self.build_extensions()
#0 7.041   File "/usr/local/lib/python3.8/dist-packages/torch/utils/cpp_extension.py", line 708, in build_extensions
#0 7.041     build_ext.build_extensions(self)
#0 7.041   File "/usr/lib/python3.8/distutils/command/build_ext.py", line 449, in build_extensions
#0 7.041     self._build_extensions_serial()
#0 7.041   File "/usr/lib/python3.8/distutils/command/build_ext.py", line 474, in _build_extensions_serial
#0 7.041     self.build_extension(ext)
#0 7.041   File "/usr/lib/python3/dist-packages/setuptools/command/build_ext.py", line 208, in build_extension
#0 7.041     _build_ext.build_extension(self, ext)
#0 7.041   File "/usr/lib/python3.8/distutils/command/build_ext.py", line 528, in build_extension
#0 7.041     objects = self.compiler.compile(sources,
#0 7.041   File "/usr/local/lib/python3.8/dist-packages/torch/utils/cpp_extension.py", line 524, in unix_wrap_ninja_compile
#0 7.041     cuda_post_cflags = unix_cuda_flags(cuda_post_cflags)
#0 7.041   File "/usr/local/lib/python3.8/dist-packages/torch/utils/cpp_extension.py", line 423, in unix_cuda_flags
#0 7.041     cflags + _get_cuda_arch_flags(cflags))
#0 7.041   File "/usr/local/lib/python3.8/dist-packages/torch/utils/cpp_extension.py", line 1561, in _get_cuda_arch_flags
#0 7.041     arch_list[-1] += '+PTX'
#0 7.041 IndexError: list index out of range

I think you need to install cuda from source, as well. Pytorch comes with its own cuda runtime libraries but that's not enough for the compilation of SparseTransformer. You should be able to run nvcc to compile it.

I managed to build the docker by adding DOCKER_BUILDKIT=0 docker build -t ....

Hello,
Thanks for your great work! I want to ask some questions about how the test result on SemanticKITTI dataset. I use the code following to predict the label of test set. And I use TTA like your provided function validation_tta. I get result of 68.5 on the validation set, but the result has a big gap on the test set. By the way, I use the checkpoint provide in this repository. So could you please give some advice about how to improve the results on test set. Thanks a lot!
def test_tta(test_loader, model, criterion):
    if main_process():
        logger.info('>>>>>>>>>> Start Evaluation on test set >>>>>>>>>>')

    batch_time = AverageMeter()
    data_time = AverageMeter()

    with open('util/semantic-kitti.yaml', 'r') as stream:
        semkittiyaml = yaml.safe_load(stream)
    learning_map_inv = semkittiyaml['learning_map_inv']

    torch.cuda.empty_cache()

    loss_name = args.loss_name

    model.eval()
    end = time.time()
    for i, batch_data_list in enumerate(test_loader):

        data_time.update(time.time() - end)

        with torch.no_grad():
            output = 0.0
            for batch_data in batch_data_list:

                (coord, xyz, feat, target, offset, inds_reconstruct, file) = batch_data
                inds_reconstruct = inds_reconstruct.cuda(non_blocking=True)

                offset_ = offset.clone()
                offset_[1:] = offset_[1:] - offset_[:-1]
                batch = torch.cat([torch.tensor([ii]*o) for ii,o in enumerate(offset_)], 0).long()

                coord = torch.cat([batch.unsqueeze(-1), coord], -1)
                spatial_shape = np.clip((coord.max(0)[0][1:] + 1).numpy(), 128, None)

                coord, xyz, feat, target, offset = coord.cuda(non_blocking=True), xyz.cuda(non_blocking=True), feat.cuda(non_blocking=True), target.cuda(non_blocking=True), offset.cuda(non_blocking=True)
                batch = batch.cuda(non_blocking=True)

                sinput = spconv.SparseConvTensor(feat, coord.int(), spatial_shape, args.batch_size)

                assert batch.shape[0] == feat.shape[0]

                output_i = model(sinput, xyz, batch)
                output_i = F.softmax(output_i[inds_reconstruct, :], -1)

                output = output + output_i
            output = output / len(batch_data_list)

        output = output.max(1)[1]
        n = coord.size(0)

        batch_time.update(time.time() - end)
        end = time.time()
        if (i + 1) % args.print_freq == 0 and main_process():
            logger.info('Test: [{}/{}] '
                        'Data {data_time.val:.3f} ({data_time.avg:.3f}) '
                        'Batch {batch_time.val:.3f} ({batch_time.avg:.3f}) '.format(i + 1, len(test_loader),
                                                          data_time=data_time,
                                                          batch_time=batch_time))
        output = output.cpu().numpy().reshape(-1)
        output += 1  # transfer from [0, 18] to [1, 19]
        output = np.vectorize(learning_map_inv.__getitem__)(output).astype(np.uint32)
        predict_path = file.split('/sequences/', 1)[1]
        # print(predict_path)
        predict_path = 'test_predict_val/' + 'sequences/' +\
                        predict_path.replace('velodyne', 'labels').replace('labels',
                            'predictions')[:-3] + 'label'
        if os.path.exists(predict_path[:-13]):
            assert output.shape == target.cpu().numpy().shape
            output.tofile(predict_path)
        else:
            os.makedirs(predict_path[:-13])
            assert output.shape == target.cpu().numpy().shape
            output.tofile(predict_path)
    logger.info('<<<<<<<<<<<<<<<<< End Evaluation <<<<<<<<<<<<<<<<<')

    return

Hello, can you provide more detailed code about semantickitti's test set to make predictions and save the prediction results? I used part of the code you provided now, but encountered the following problems：

Thanks a lot!


/partners page implementation

Asana link: https://app.asana.com/0/1193069161928913/1202001699843261/f
Screenshot:

@mrfinch can you pls review this pr again? There's been some commits pushed since your last review.


Damage preview shows damage with modifier even when it would not apply due to involving no dice rolls

Create item that deals 1 damage.
Preview formula on actor sheet shows 1+ mod, but the eventual roll is just 1 as it should be.

There's an explicit rule for this in the 2024 PHB but I can't find an equivalent in the 2014 PHB. Do you know where it is? Or does the behaviour here need to depend on the rule setting? The preview should of course match what is rolled regardless.

Best I could find was a JC tweet.
https://x.com/JeremyECrawford/status/780902953536266241
Putting this behind the rule setting would probably be ideal then. I guess the alternative would be to use the ruleset set on each monster, but that wouldn't cover player characters.


Come up with a better way to do bridge_model_end_yr

In doc/load-models.R. Currently it is manually done, and a huge pain to get right

Can't we just use the end year of the data file in the loaded model?
find_end_yr <- function(model_list) {
  model_list[["dat"]][["end_yr"]]
}
purrr::map(bridge_models, find_end_yr)

NOTE the above code was not tested it is just what I am thinking 🤔 will work in my head.

I know I tried that and there was some reason it wouldn't work, but I will start there. Thanks :)


How to port code in legacy nuget package to  this package TypeConversion.

Hello:
I want to port an old C# class library to target .NET 5.0 for Windows 10.
The old class library used TypeConvert nuget version 2.1.6, but when I install this nuget package, I got warning for the TypeConvert nuget package is legacy.  As I don’t want to use the legacy package, but I don’t quite understand how to use other nuget package or use C# built-in library like:
Convert.ChangeType Method from System.Runtime.dll.
Let me know if I can use this package TypeConversion (version 3.0.1) to replace TypeConvert package version 2.1.6 to replace the following C# code.
	internal static T? GetNullable<T>(string? id)
		where T : JsObject
	{
		if (id == null) { return null; }

		var (constructor, @ref) =
			objRefs.GetOrAdd(id, _ => throw new ObjectDisposedException(id));

		if (!@ref.TryGetTarget(out var obj))
		{
			obj = constructor(id);
			@ref.SetTarget(obj);
		}

		return (T) TypeConvert.Convert
		(
			value: obj,
			toType: typeof(T)
		);
	}

Thanks,

Hi @zydjohnHotmail !
Yes, I recently completely redesigned the package. Now, instead of the globally accessible and static type TypeConvert, there is an interface ITypeConversionProvider that can be injected into DI of you application:
using using deniszykov.TypeConversion;

private static IHostBuilder CreateHostBuilder(string[] args) =>
	Host.CreateDefaultBuilder(args)
		.ConfigureServices((context, services) =>
		{
			services.AddSingleton<ITypeConversionProvider, TypeConversionProvider>();
                        // also you could configure it
                        services.Configure<TypeConversionProviderConfiguration>(options => {});
		});

And used from any injectable context:
using using deniszykov.TypeConversion;

public static class MyController
{
    public MyController(ITypeConversionProvider conversionProvider)
    {
        object value = 1;
        var nullableIntValue = conversionProvider.Convert<object, int?>(value);
    }
}

Or you can just expose it as static member:
public static TypeConvert {
    public static readonly Default = new TypeConversionProvider();
}

This approach is not recommended because it impede testing and increases code cohesion.

Hello:
Actually, the code I wanted to port was not from me, it was from other's, and the code was rather complicated, I don't understand it very well. But I tried on your code: I created one C# console app, add nuget package, and copy and paste your code, it didn't get compiled.
I got some errors like:
CS0710	Static classes cannot have instance constructors
For the following lines of code:
public MyController(ITypeConversionProvider conversionProvider)
{
object value = 1;
var nullableIntValue = conversionProvider.Convert<object, int?>(value);
}
The code which used your old package seems to be easier to understand:
Convert object from one type to another type.
But using your new package, I am totally lost which is the old type, and which is the new type.
As the space here is rather limited, how I can send you more code? which I need to use your old package, it may help you understand the original type better, as the code was not from myself.
Thanks,

Ok, then you could use static class approach:
	public static class TypeConvert
	{
		public static TypeConversionProvider Default = new TypeConversionProvider();

		public static ToType Convert<FromType, ToType>(FromType value, string format = null, IFormatProvider formatProvider = null)
		{
			return Default.Convert<FromType, ToType>(value, format, formatProvider);
		}
		public static bool TryConvert<FromType, ToType>(FromType value, out ToType result, string format = null, IFormatProvider formatProvider = null)
		{
			return Default.TryConvert<FromType, ToType>(value, out result, format, formatProvider);
		}
		public static string ToString<FromType>(FromType value, string format = null, IFormatProvider formatProvider = null)
		{
			return Default.ConvertToString(value, format, formatProvider);
		}
		public static object Convert(object value, Type toType, string format = null, IFormatProvider formatProvider = null)
		{
			return Default.Convert(value?.GetType() ?? typeof(object), toType, value, format, formatProvider);
		}
		public static bool TryConvert(ref object value, Type toType, string format = null, IFormatProvider formatProvider = null)
		{
			return Default.TryConvert(value?.GetType() ?? typeof(object), toType, value, out value, format, formatProvider);
		}
		public static string ToString(object value, string format = null, IFormatProvider formatProvider = null)
		{
			return Default.ConvertToString(value, format, formatProvider);
		}
	}

or continue to use old package. It is not broken or something, just obsolete.

Hi,
Thanks for your reply, it will take some time to understand your code, and understand the code I want to port.  But the type which has to be converted seems to be rather complicated.
I will spend time to understand it better before I ask more questions.


[Ziro] Volume bar out of line

The volume bar goes out of line when another device is playing.

I've checked and I think this is related to this PR #916 . @harbassan can we possibly remove the older version part?

if you're sure that that specific line is causing it (test it with and without that line), then if you open a pr I'll approve it.


fix: attach and detach DMN overview properly

I wasn't using the API correctly and attached the DRD viewer directly instead of attaching the dmn-js container. 🤦🏻 We don't have tests for this at the moment. 😞 I'd still like to include this fix in v5.2.

Closes #3048

We should also fix this in the Cloud DMN modeler, same issue is still present there

Good catch. I didn't even know we have the same file twice. 🤣


Compile README.md w/ documentary

documentary is a documentation pre-processor which allows to embed examples and fork them to include the output in the README. It's much better than copying and pasting by hand, because it will also make visible when an example does not actually work, or hasn't been updated (e.g., the --remove option in the CLI in this PR).
I hope you like it and it'd be great if this package could be one of the first 3-rd party software which uses it!

Thanks very much for putting the effort into your PR, and for the interest in csv-parser. Unfortunately we're going to have to pass on this - it just introduces too much complexity (separate files, an additional dev dependency, script, build step) for too little benefit. While documentary looks like it's better suited towards projects with large READMEs, the README for csv-parser is pretty lean.

OK thanks. The advantages are clear though:

You'll be sure that examples are always working (e.g., the main example in the PR was not working correctly as there were spaces between commas -- it might confuse less experienced developers).
This is the most important one -- there is so much saved time in copying and pasting examples programs.
File splitting -- you don't have to always scroll for ages find the relevant part in the README file
You get more quality control as well because when running the documentation scripts, there will be a problem if something isn't working right).

I'm can't insist on you making use of it, but it's so handy I'm sure that 1 build script is worth it. There's 8 very small dependencies, whereas you've already got ava with babel which has thousands of deps. Sometimes I'm reluctant to try new stuff as well but then I give it a go and it turns out to be brilliant. up to u. cheers


How to create a new encrypted note in a specific folder?

In some circumstances, I need to create a new note in a specific folder, like /Diary/ , /Management/ , etc.
I could do this when creating ordinary notes using QuickAdd. For example, click a quickadd command, select a folder in the prompt, then a note is created. But I didn't find a way to do the same when creating an encrypted note.
Someone knows any solutions? thanks.

Currently, we can only create an encrypted note under default note creation folder.
If we could create an encrypted file under the path that is provided by user, that would be very useful feature.
And we could ask the folder via a prompt.
By the way, I am using Templatr plugin, I can create files according to a specific template if the file is created under certain folder.
So it would be nice to use similar logic with Melt encrypt too, if we could create notes as encrypted automatically if they are under certain folder.

+1 some basic template/default options would be nice. A related (aesthetic) request would be to support .enc or a similar shorthand extension in addition to .encrypted. It is easy to modify the compiled JS to do this already, but it makes updates a bit of a pain.

from v2.3.6 you can right click a folder to create a note within it.


Remove ensureSynchronizedWithTimeout as it does not work

Description
Behind the scenes, ensureSynchronizedWithTimeout works exactly like ensureSynchronized, so it can be removed.

@andre4i please double check if this change can be done in main, as this changes the API


Add changelog and release

Goes along with https://github.com/spruceid/didkit/pull/49.
The package versions are not updated, as they were already at 0.1.0, but we can tag the commit added here as v0.1.0.
Edit: to ensure correspondence with the initial DIDKit release blog post, I recommend not rebasing or rewriting the commits in this PR during merge.

Tagged https://github.com/spruceid/ssi/releases/tag/v0.1.0


We found some opportunities to use the diamond operator in the source code. We changed the source code and hope you are interested in this kind of change.

Thank you for that PR.
It's also kind of you to  pull request  to the dev branch first and then we would merge it into the master branch.

@cymcsg Thanks for your clarification. I will close this pull request and then send a new one in the dev branch.


Fixing the multiple render issue

Codecov Report

Merging #98 (972d4bc) into master (726acd9) will increase coverage by 0.03%.
The diff coverage is 10.49%.

:exclamation: Current head 972d4bc differs from pull request most recent head 327ceec. Consider uploading reports for the commit 327ceec to get more accurate results

@@            Coverage Diff             @@
##           master      #98      +/-   ##
==========================================
+ Coverage   79.76%   79.79%   +0.03%
==========================================
  Files         114      114
  Lines       10704    10712       +8
  Branches     1115     1116       +1
==========================================
+ Hits         8538     8548      +10
+ Misses       2166     2164       -2

Flag
Coverage Δ

unittests
79.79% <10.49%> (+0.03%)
:arrow_up:

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

Impacted Files
Coverage Δ

packages/lib/components/common/theme-provider.tsx
11.47% <3.97%> (+2.08%)
:arrow_up:

packages/lib/components/sidebar/sidebar.tsx
84.51% <100.00%> (+0.62%)
:arrow_up:

Continue to review full report at Codecov.

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


NT Widget builder refactor

I think that the ntWidgetBuilder class needs a refactor rewrite, it is quite messy to add new widgets, might do that by myself via PR
Maybe beng able to do
register(FooNTWidget, FooNTWidgetModel, ... additional settings) to register new widgets would be better than adding manually to all of the maps and passing the methods

Im creating this via PR


FileNotFoundError: [Errno 2] No such file or directory: '/home/username/wplay/logs/wplay.log'

username@MY-PC:~/whatsapp-play$ wplay
> Traceback (most recent call last):
>   File "/home/username/.local/bin/wplay", line 6, in <module>
>     from wplay.__main__ import main
>   File "/home/username/.local/lib/python3.7/site-packages/wplay/__main__.py", line 10, in <module>
>     from wplay import online_tracker
>   File "/home/username/.local/lib/python3.7/site-packages/wplay/online_tracker.py", line 5, in <module>
>     from wplay.utils import browser_config
>   File "/home/username/.local/lib/python3.7/site-packages/wplay/utils/browser_config.py", line 39, in <module>
>     __logger = Logger(Path(__file__).name)
>   File "/home/username/.local/lib/python3.7/site-packages/wplay/utils/Logger.py", line 16, in __init__
>     file_handler = logging.FileHandler(logs_path/'wplay.log')
>   File "/usr/lib/python3.7/logging/__init__.py", line 1087, in __init__
>     StreamHandler.__init__(self, self._open())
>   File "/usr/lib/python3.7/logging/__init__.py", line 1116, in _open
>     return open(self.baseFilename, self.mode, encoding=self.encoding)
> FileNotFoundError: [Errno 2] No such file or directory: '/home/username/wplay/logs/wplay.log'

If Someone Knows the Solution to this Error Please Help.
Thanks!

@ahmed-gelemli You need to install python3.6.1+ version

@rpotter12  he is using python 3.7

@rpotter12 he is using python 3.7

Yes, I am using Python 3.7 but same issue

@ahmed-gelemli you can create this file manually: '/home/username/wplay/logs/wplay.log'.
I will verify why the file wasn't created automatically.

@ahmed-gelemli  bug fixed, wait for @rpotter12 to merge the PR.

@rpotter12 he is using python 3.7

Ahhh....I have commented on this issue by mistakenly.


Incorrect Behavior in Slice Comparison for Translated Haxe Code

Description
When translating Go code involving comparing two slices, go2hx incorrectly translates the comparison. In Go, comparing two slices with == should result in a runtime panic, as slices are uncomparable types. However, in the translated Haxe code, go2hx evaluates the comparison as false without throwing an error, which leads to unexpected behavior.
Steps to Reproduce

Source Go code:
package main

import "fmt"

func main() {
    var a interface{} = []int{1, 2, 3}
    var b interface{} = []int{1, 2, 3}
    fmt.Println(a == b) // This should panic in Go as slice comparison is illegal
}

Run the Go code:

Expected Behavior: The Go code builds successfully but throws a runtime panic when executed, due to an attempt to compare uncomparable types (slices).

Translated Haxe code bygo2hx:
package _internal;
function main():Void {
    var _a:stdgo.AnyInterface = stdgo.Go.toInterface((new stdgo.Slice<stdgo.GoInt>(3, 3, ...[(1 : stdgo.GoInt), (2 : stdgo.GoInt), (3 : stdgo.GoInt)]).__setNumber32__() : stdgo.Slice<stdgo.GoInt>));
    var _b:stdgo.AnyInterface = stdgo.Go.toInterface((new stdgo.Slice<stdgo.GoInt>(3, 3, ...[(1 : stdgo.GoInt), (2 : stdgo.GoInt), (3 : stdgo.GoInt)]).__setNumber32__() : stdgo.Slice<stdgo.GoInt>));
    stdgo._internal.fmt.Fmt_println.println(stdgo.Go.toInterface(_a == (_b)));
}

Run the Haxe code inside golibs directory in Haxe interpreter using this haxe --main _internal.Runner -lib go2hx --interp

Unexpected Behavior: The Haxe code outputs false instead of throwing a runtime error.

Expected Behavior
The translated Haxe code should throw an error or emulate Go's runtime panic when comparing uncomparable types, such as slices, rather than returning false.
Additional Information

Go Version: go1.23.0
go2hx Version: commit 29d31384b7036a6469091f7339360722df2f3086 (HEAD -> master, origin/master, origin/HEAD)
Haxe Version: 4.3.6

This discrepancy could lead to incorrect assumptions in code that relies on Go's runtime behavior for uncomparable types. Implementing a similar runtime check in Haxe to mimic Go’s handling of slice comparisons would help ensure consistent behavior between Go and Haxe.

Well spotted @Yeaseen !

These 3 types (map,slice,func) hould now cause a runtime panic in the same manner as go

Thanks for your great effort, @PXshadow. I tried the latest git version of go2hx, which mimics the Go behavior to handle incomparable types within interfaces.

No problem, and thank you @Yeaseen for your hard work finding problems and testing the compiler. It is equally valuable work!