Panicked when processing: must be invertible

Describe the bug
create table t1(c varchar, n varchar, id varchar, d varchar);
create table t2(c varchar, p varchar, id varchar, d varchar);

explain create materialized view hierarchy as
select array_agg(t1.n order by path_idx) from t1
join t2
on t1.c = 'abc'
and t2.c = 'abc'
cross join unnest((case when t2.p <> '' then (string_to_array(trim(t2.p, ','), ',') || t2.d) else ARRAY[t2.d] end)) WITH ORDINALITY AS path_cols(path_val, path_idx)
where path_val = t1.id;

I am doing above after with ordinality as is supported. https://github.com/risingwavelabs/risingwave/pull/12273
The query transforms from a user query.
Please add it to the test after it is fixed, thank you
Error message/log
thread 'risingwave-main' panicked at src/frontend/src/optimizer/plan_node/logical_scan.rs:240:10:
must be invertible
stack backtrace:
   0: rust_begin_unwind
             at /rustc/62ebe3a2b177d50ec664798d731b8a8d1a9120d1/library/std/src/panicking.rs:619:5
   1: core::panicking::panic_fmt
             at /rustc/62ebe3a2b177d50ec664798d731b8a8d1a9120d1/library/core/src/panicking.rs:72:14
   2: core::panicking::panic_display
             at /rustc/62ebe3a2b177d50ec664798d731b8a8d1a9120d1/library/core/src/panicking.rs:168:5
   3: core::panicking::panic_str
             at /rustc/62ebe3a2b177d50ec664798d731b8a8d1a9120d1/library/core/src/panicking.rs:152:5
   4: core::option::expect_failed
             at /rustc/62ebe3a2b177d50ec664798d731b8a8d1a9120d1/library/core/src/option.rs:1988:5
   5: core::option::Option<T>::expect
             at /rustc/62ebe3a2b177d50ec664798d731b8a8d1a9120d1/library/core/src/option.rs:898:21
   6: risingwave_frontend::optimizer::plan_node::logical_scan::LogicalScan::predicate_pull_up
             at ./src/frontend/src/optimizer/plan_node/logical_scan.rs:235:27
   7: <risingwave_frontend::optimizer::plan_node::logical_scan::LogicalScan as risingwave_frontend::optimizer::plan_node::convert::ToStream>::to_stream
             at ./src/frontend/src/optimizer/plan_node/logical_scan.rs:526:51
   8: <risingwave_frontend::optimizer::plan_node::logical_agg::LogicalAgg as risingwave_frontend::optimizer::plan_node::convert::ToStream>::to_stream
             at ./src/frontend/src/optimizer/plan_node/logical_agg.rs:1120:28
   9: risingwave_frontend::optimizer::plan_node::convert::ToStream::to_stream_with_dist_required
             at ./src/frontend/src/optimizer/plan_node/convert.rs:57:19
  10: <risingwave_frontend::optimizer::plan_node::logical_project::LogicalProject as risingwave_frontend::optimizer::plan_node::convert::ToStream>::to_stream_with_dist_required
             at ./src/frontend/src/optimizer/plan_node/logical_project.rs:246:25
  11: <risingwave_frontend::optimizer::plan_node::logical_project::LogicalProject as risingwave_frontend::optimizer::plan_node::convert::ToStream>::to_stream
             at ./src/frontend/src/optimizer/plan_node/logical_project.rs:256:9
  12: <risingwave_frontend::optimizer::plan_node::logical_project_set::LogicalProjectSet as risingwave_frontend::optimizer::plan_node::convert::ToStream>::to_stream
             at ./src/frontend/src/optimizer/plan_node/logical_project_set.rs:394:25
  13: risingwave_frontend::optimizer::plan_node::convert::ToStream::to_stream_with_dist_required
             at ./src/frontend/src/optimizer/plan_node/convert.rs:57:19
  14: risingwave_frontend::optimizer::plan_node::logical_join::LogicalJoin::to_stream_hash_join
             at ./src/frontend/src/optimizer/plan_node/logical_join.rs:871:25
  15: <risingwave_frontend::optimizer::plan_node::logical_join::LogicalJoin as risingwave_frontend::optimizer::plan_node::convert::ToStream>::to_stream
             at ./src/frontend/src/optimizer/plan_node/logical_join.rs:1357:17
  16: risingwave_frontend::optimizer::plan_node::convert::ToStream::to_stream_with_dist_required
             at ./src/frontend/src/optimizer/plan_node/convert.rs:57:19
  17: risingwave_frontend::optimizer::plan_node::logical_join::LogicalJoin::to_stream_hash_join
             at ./src/frontend/src/optimizer/plan_node/logical_join.rs:885:24
  18: <risingwave_frontend::optimizer::plan_node::logical_join::LogicalJoin as risingwave_frontend::optimizer::plan_node::convert::ToStream>::to_stream
             at ./src/frontend/src/optimizer/plan_node/logical_join.rs:1357:17
  19: risingwave_frontend::optimizer::plan_node::convert::ToStream::to_stream_with_dist_required
             at ./src/frontend/src/optimizer/plan_node/convert.rs:57:19
  20: <risingwave_frontend::optimizer::plan_node::logical_project::LogicalProject as risingwave_frontend::optimizer::plan_node::convert::ToStream>::to_stream_with_dist_required
             at ./src/frontend/src/optimizer/plan_node/logical_project.rs:246:25
  21: <risingwave_frontend::optimizer::plan_node::logical_project::LogicalProject as risingwave_frontend::optimizer::plan_node::convert::ToStream>::to_stream
             at ./src/frontend/src/optimizer/plan_node/logical_project.rs:256:9
  22: <risingwave_frontend::optimizer::plan_node::logical_agg::LogicalAgg as risingwave_frontend::optimizer::plan_node::convert::ToStream>::to_stream
             at ./src/frontend/src/optimizer/plan_node/logical_agg.rs:1120:28
  23: risingwave_frontend::optimizer::plan_node::convert::ToStream::to_stream_with_dist_required
             at ./src/frontend/src/optimizer/plan_node/convert.rs:57:19
  24: risingwave_frontend::optimizer::PlanRoot::gen_stream_plan
             at ./src/frontend/src/optimizer/mod.rs:395:28
  25: risingwave_frontend::optimizer::PlanRoot::gen_optimized_stream_plan
             at ./src/frontend/src/optimizer/mod.rs:298:24
  26: risingwave_frontend::optimizer::PlanRoot::gen_materialize_plan
             at ./src/frontend/src/optimizer/mod.rs:513:27
  27: risingwave_frontend::handler::create_mv::gen_create_mv_plan
             at ./src/frontend/src/handler/create_mv.rs:116:9
  28: risingwave_frontend::handler::explain::do_handle_explain::{{closure}}
             at ./src/frontend/src/handler/explain.rs:121:26
  29: risingwave_frontend::handler::explain::handle_explain::{{closure}}
             at ./src/frontend/src/handler/explain.rs:250:64
  30: risingwave_frontend::handler::handle::{{closure}}
             at ./src/frontend/src/handler/mod.rs:185:82
  31: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/62ebe3a2b177d50ec664798d731b8a8d1a9120d1/library/core/src/future/future.rs:125:9
  32: <&mut F as core::future::future::Future>::poll
             at /rustc/62ebe3a2b177d50ec664798d731b8a8d1a9120d1/library/core/src/future/future.rs:113:9
  33: <tokio::time::timeout::Timeout<T> as core::future::future::Future>::poll
             at /Users/martin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.32.0/src/time/timeout.rs:202:33
  34: <risingwave_frontend::session::SessionImpl as pgwire::pg_server::Session>::run_one_query::{{closure}}
             at ./src/frontend/src/session.rs:945:88
  35: pgwire::pg_protocol::PgProtocol<S,SM>::inner_process_query_msg_one_stmt::{{closure}}
             at ./src/utils/pgwire/src/pg_protocol.rs:495:14
  36: <tracing::instrument::Instrumented<T> as core::future::future::Future>::poll
             at /Users/martin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tracing-0.1.37/src/instrument.rs:272:9
  37: pgwire::pg_protocol::PgProtocol<S,SM>::inner_process_query_msg::{{closure}}
             at ./src/utils/pgwire/src/pg_protocol.rs:477:18
  38: pgwire::pg_protocol::PgProtocol<S,SM>::process_query_msg::{{closure}}
             at ./src/utils/pgwire/src/pg_protocol.rs:435:65
  39: pgwire::pg_protocol::PgProtocol<S,SM>::do_process_inner::{{closure}}
             at ./src/utils/pgwire/src/pg_protocol.rs:271:88
  40: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::future::future::Future>::poll
             at /rustc/62ebe3a2b177d50ec664798d731b8a8d1a9120d1/library/core/src/panic/unwind_safe.rs:296:9
  41: <futures_util::future::future::catch_unwind::CatchUnwind<Fut> as core::future::future::Future>::poll::{{closure}}
             at /Users/martin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/future/future/catch_unwind.rs:36:42
  42: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/62ebe3a2b177d50ec664798d731b8a8d1a9120d1/library/core/src/panic/unwind_safe.rs:271:9
  43: std::panicking::try::do_call
             at /rustc/62ebe3a2b177d50ec664798d731b8a8d1a9120d1/library/std/src/panicking.rs:526:40
  44: ___rust_try
  45: std::panicking::try
             at /rustc/62ebe3a2b177d50ec664798d731b8a8d1a9120d1/library/std/src/panicking.rs:490:19
  46: std::panic::catch_unwind
             at /rustc/62ebe3a2b177d50ec664798d731b8a8d1a9120d1/library/std/src/panic.rs:142:14
  47: <futures_util::future::future::catch_unwind::CatchUnwind<Fut> as core::future::future::Future>::poll
             at /Users/martin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.28/src/future/future/catch_unwind.rs:36:9
  48: <tokio::task::task_local::TaskLocalFuture<T,F> as core::future::future::Future>::poll::{{closure}}
             at /Users/martin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.32.0/src/task/task_local.rs:347:31
  49: tokio::task::task_local::LocalKey<T>::scope_inner
             at /Users/martin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.32.0/src/task/task_local.rs:217:19
  50: <tokio::task::task_local::TaskLocalFuture<T,F> as core::future::future::Future>::poll
             at /Users/martin/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.32.0/src/task/task_local.rs:343:19
  51: pgwire::pg_protocol::PgProtocol<S,SM>::do_process::{{closure}}
             at ./src/utils/pgwire/src/pg_protocol.rs:192:14
  52: pgwire::pg_protocol::PgProtocol<S,SM>::process::{{closure}}
             at ./src/utils/pgwire/src/pg_protocol.rs:183:30

### To Reproduce

_No response_

### Expected behavior

_No response_

### How did you deploy RisingWave?

_No response_

### The version of RisingWave

_No response_

### Additional context

_No response_

A side question
t1.c = 'abc'
and t2.c = 'abc'

is a nested loop join both in PG and RW,
Is it difficult to make the optimizer deduce to be hash join by itself?
We can manually add t1.c = t2.c though, but considering we don't support nested loop in streaming queries, shall RW do it automatically?


Clearing search leaves leftovers

For some reason there are Script Templates hits that are leftover after clearing the search bar. They are not present when first starting the plugin:
Before search:

After search and clear:

Duplicate of #113.


f-strings are not getting unified

For the snippet like the one below, I'd expect the first and the third line to be unified to single quotes but only the first line appears in the diff.
a = "abc"
b = 'bcd'
c = f"{a}def"
d = f'{b}efg'

I have addressed this issue in a PR https://github.com/myint/unify/pull/4


Building xeus failed with Visual Studio 2019 due to implicit conversion failed

When I build xeus with Visual Studio 2019, it built failed and I got this error:
xeus\src\ee70dfa02b-e9875865ca\src\xkernel_configuration.cpp(28): error C2593: 'operator =' is ambiguous
xeus\src\ee70dfa02b-e9875865ca\src\xkernel_configuration.cpp(29): error C2593: 'operator =' is ambiguous
xeus\src\ee70dfa02b-e9875865ca\src\xkernel_configuration.cpp(38): error C2593: 'operator =' is ambiguous

This is source code in xkernel_configuration.cpp:
        std::ifstream ifs(file_name);

        nl::json doc;
        ifs >> doc;

        xconfiguration res;
        res.m_transport = doc["transport"];
        res.m_ip = doc["ip"];
        res.m_control_port = std::to_string(doc["control_port"].get<int>());
        res.m_shell_port = std::to_string(doc["shell_port"].get<int>());
        res.m_stdin_port = std::to_string(doc["stdin_port"].get<int>());
        res.m_iopub_port = std::to_string(doc["iopub_port"].get<int>());
        res.m_hb_port = std::to_string(doc["hb_port"].get<int>());
        res.m_signature_scheme = doc.value("signature_scheme", "");
        if (res.m_signature_scheme != "")
        {
            res.m_key = doc["key"];
        }
        else
        {
            res.m_key = "";
        }

The type of res.m_transport is string. When converting nl::json doc to string, it failed. I try to modify doc["transport"] to doc["transport"].get<std::string>(), it build successfully. But I don't know this change is correct or not. Who can help me to confirm it?
Thanks.

Thanks for reporting and opening a PR. This looks like a (yet another) MSVC compiler bug.
I will comment on the PR.

Hey @LilyWangL a PR to xeus core applying the same patch would be very welcome.
Would you be fine with opening one (and enabling VS 2019 in the build matrix?)

This is now fixed in 0.23.3. Closing.


iodine service: add client mode implimentation

Description
I noticed that the services.iodined.client does nothing other than throw an assert under invalid conditions. This is my attempt at adding functionality to the above.
If I did anything improperly/badly/etc, please tell me, I will do my best to fix it.
An alternative to what I have done here would be to add another option services.iodined.server = true/false. This would allow for both a client and a server on one computer, however it would break old configurations.
Tests

[x] Tested using sandboxing (nix-build --option build-use-chroot true or nix.useChroot on NixOS)
Built on platform(s)

[x] NixOS
[ ] OS X
[ ] Linux

I have tested both the client and server functionality on my computers running NixOS.
Commit Message
if client mode is set true, a service called iodine.service
is started instead of iodined.service. It restarts always every 30 secconds.

Superficially, this looks okay to me, but I know nothing about the service nor do I intend to use it.
On a related note: I find the interface somewhat ugly; changing from server to client with a single switch is odd to me, I'd prefer to have services.iodined-client and services.iodined-server as separate namespaces. Thoughts? (I think we can still merge this in the interim, though, if it works for you).

@joachifm Should I be worried about preserving backwards compatibility then? If not, then my idea would be to create services.iodined.servers and services.iodined.clients, both as lists. This is similar to how OpenVPN does the same with services.openvpn.servers. This way multiple instances can be run with their own configurations, all still configured through services.iodined.

There is a mechanism for marking options as deprecated and providing aliases. If that is insufficiently expressive, errors can be thrown instead. Either way, there's no reason to let backwards compatibility cripple improvements more than necessary, IMO. I think this is something users of this module have to discuss, these are just general remarks.

@joachifm
This is my solution:
The old configuration is 100% backwards compatible. If the old broken client option was set to false, then a warning is thrown. This is because services.iodined is renamed to services.iodine.server and all the options stay the same (except for the removed services.iodined.client boolean).
As for the new configuration, a single server may be enabled and specified with services.iodine.server and any number of client services can be spawned through servies.iodine.clients.

Okay, cool. Let's leave this opened for a while, though, to let potentially interested parties provide some feedback. Ping me if it ends up lingering for too long; if this works and makes sense to you as a consumer of the service module, then I'm fine with merging it.

Okay, no objections thus far; I think this has been waiting long enough.


Check null

Some Language Server Client null for contentChanges when SyncKind = 0.
Also signatureparams.

is there any test that can verify this?

We don't have a lot of tests around the language server stuff yet.  This looks okay.


Disabling cursor acceleration causes stuck cursor in universal control

Cursor gets stuck top left on secondary (linked) screens whenever linear mouse has disable cursor acceleration option checked. Unchecking the option fixes the issue
Tested on macOS 12.3 / iOS 15.4 betas (21E5227a , 19E5241a)

Thank you for reporting this!
I haven't tried it yet. But I'm guessing it's a bug in the beta versions of universal control, and we'll see if it's fixed in future versions.
Under the hood, disabling cursor acceleration actually updates cursor acceleration to -1. As a result, if universal control fails to handle the special value correctly, the cursor might become stuck in the upper left corner.
If so, unchecking 'Disable cursor acceleration & sensitivity' and manually setting cursor acceleration to zero could be a workaround.

For what it's worth, I ran into the same problem when using SteerMouse. The author said it's likely an Apple issue. I haven't confirmed if the final release has the same issue, though.

I just upgraded my two macs to Monterey 12.3 and I noticed that scroll direction and acceleration preferences do not transfer to the other device through Universal Control.  Even though I have Linearmouse installed on both, if I use Universal Control to move my cursor from one to the other, the scroll direction is wrong, and it's using the system scrolling acceleration whereas I use a fixed number of lines.  Maybe this is a symptom of the same problem?

@jjakucyk Thank you for your detailed information!
According to your description, neither of LinearMouse apps on your two Macs appears to have received scrolling events in Universal Control, so LinearMouse will be unable to modify these events.
I'm not sure how Universal Control is implemented; perhaps these events are lower-level and bypass the CGEventTaps, and I don't have any extra Macs to test it on right now.
This issue, I believe, is also present in similar apps. It would be helpful if someone could find a similar app that works in Universal Control.

@jjakucyk to resolve that particular issue you need to enable natural scrolling in your iPads settings by going into General > Trackpad & Mouse > Natural Scrolling

@SlateDave I'm not using an iPad it's a MacBook Pro, and I do want natural scrolling enabled for the trackpad, but not for the mouse (which is a primary feature of LinearMouse), so changing that isn't really an option.
I noticed that on the MacBook I had natural scrolling turned on (System Preferences) and reverse scrolling turned on (LinearMouse), as you would expect for my desired use case.  On the iMac however I had natural scrolling off and reverse scrolling off.  Enabling both of those on the iMac fixes the Universal Control issue, but some apps that use the mouse wheel to zoom are reversed, regardless of whether I'm using Universal Control or directly with the mouse.  This was a problem on the MacBook even before the Universal Control issue.  AutoCAD LT 2022 is one example, as is Capture One Pro 11.  I am upgrading to Capture One Pro 22 (it's really version 15) and that zooms fine.  Google Maps also works fine, so maybe AutoCAD is using a different/older API.  I just downloaded AutoCAD 2023 and it still exhibits the issue (they finally upgraded it to using the Metal graphics engine, but it's not yet a universal binary).  If it weren't for the AutoCAD zooming (I only use it on the iMac) then I could just enable natural scrolling and reverse scrolling on the iMac and be done with it.  I suspect there could be some other apps that use the mouse wheel to zoom that would be affected too though.

I'm not sure if it's stale. Need more feedback.

I had this issue on M1 iMac and M2 MacBook Air both running Sonoma 14.5 (23F79) and Linearmouse 0.9.5
I fixed it when I disabled and enabled pointer acceleration on the Air, hope this helps someone.


How to clear all app in recent apps  and uninstall app( or clear all data of app)

You mean ?
d.stop_app('example.com', clear=True)

Yes, It's stop or clear app data.
How to uninstall the app?

d.shell('pm', 'uninstall', 'com.example.demo')


Android plugin unable to find com.android.ide.common.resources.AssetSet after updating to 7.6

After updating the Android Cache Fix Plugin to use Gradle 7.6 from 7.5.1, it seems that compilation fails due to some missing Android classes. In particular, compilation is unable to find com.android.ide.common.resources.AssetSet. This can be pretty easily worked around by adding a dependency to com.android.tools:sdk-common, which contains the missing class. It also seems that removing the @CompileStatic annotation solves the problem. What isn't clear is why this would be needed on Gradle 7.6 but not Gradle 7.5.1.
Expected Behavior
Groovy compilation finds com.android.ide.common.resources.AssetSet without needing to add any new dependencies.
Current Behavior
The build fails to find com.android.ide.common.resources.AssetSet.
Context

This worked all the way up to 7.5.1 but first broke on 7.6. This slowed down upgrading the plugin to use Gradle 7.6. Adding the dependency explicitly may be a good solution, but it would be good to know why adding this explicitly is necessary with Gradle 7.6.
Steps to Reproduce

Reproducer repo: https://github.com/cdsap/Gradle7.6Issue
Notice that the compileGroovy task succeeds on the main branch (7.5.1), but fails on the gradle_7_6 branch. Additionally, the 7.6 branch can be made to work by either:

Removing the @CompileStatic annotation from the Foo class
Adding a dependency to implementation("com.android.tools:sdk-common:30.0.4")

Your Environment

Build scan URLs:
Working on 7.5.1: https://gradle.com/s/t2nvszm366m4g
Failing on 7.6: https://gradle.com/s/hzujkiawsxzli

This is a behavior change that comes through the Groovy upgrade.
See the draft PR illustrating how to reproduce the problem with Gradle 7.5.1
This is noted as a potential breaking change although you might want to open an issue on the Groovy bug tracker.
So while this is a regression, we will not downgrade Groovy again, so we are accepting it.


Rename SpaceContainer to SpaceNode

Similar naming was used in Piccolo

Fixed in https://github.com/taataa/taaspace/commit/5189dc5f1d669c0762f5b794967c50267e40e096


[AppTemplate][Minorupdate]

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

File
Status
Preview URL
Details

msteams-platform/samples/app-templates.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Issue #93 : Changes to check for docker and docker compose status on …

…the host machine
Tested on a local machine with correct docker and docker compose configuration:
`firefly-cli rakshitakaulgud$ ff start tester
Docker version 20.10.6, build 370c289
docker-compose version 1.29.1, build c34c88b2
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
reading stack config... done
this will take a few seconds longer since this is the first time you're running this stack...`
Error if docker/docker daemon isn't running on the host:
(Tested inside a plain Linux docker container )
exec: "docker": executable file not found in $PATH

Can you clean up the commit message to have a concise subject line? Probably Changes to check for docker and docker compose status is fine. No need to put "Issue #93" in the subject line, but it would be appropriate to put in the body paragraph of the commit (can also put Fixes #93 if you want it to auto-close the issue upon merge).
Thanks for this!

Can you clean up the commit message to have a concise subject line? Probably Changes to check for docker and docker compose status is fine. No need to put "Issue #93" in the subject line, but it would be appropriate to put in the body paragraph of the commit (can also put Fixes #93 if you want it to auto-close the issue upon merge).
Thanks for this!

Got it. Done.


Tracks with multiple artists aren't scrobbled with multiple artists

This is probably due to the fact (as I understand it) this plugin was branched from a lastfm plugin.  AFAIK, Lastfm doesn't support scrobbling multiple artist per track, whereas Listenbrainz does.  I've attached a screenshot from picard which shows the multiple track artists, plus the output from rescrobbled showing how the information is being successfully sent to listenbrainz and another screenshot from listenbrainz show the successful scrobble.  Let me know if you need additional information.

Jul 03 13:10:52 charon systemd[1674]: Started rescrobbled.service - An MPRIS scrobbler.
Jul 03 13:10:53 charon rescrobbled[35797]: Authenticated with ListenBrainz successfully!
Jul 03 13:10:53 charon rescrobbled[35797]: Looking for an active MPRIS player...
Jul 03 13:10:53 charon rescrobbled[35797]: Found active player Elisa
Jul 03 13:10:53 charon rescrobbled[35797]: ----
Jul 03 13:10:53 charon rescrobbled[35797]: Now playing: Farruko feat. Ñengo Flow - Cucaracha (La 167)
Jul 03 13:10:54 charon rescrobbled[35797]: Status updated on ListenBrainz successfully

Listenbrainz API does not specify format for artist name field if a track has multiple artists credited. The only requirement for now seems to be that the artist field must be a simple string. It's a bit strange since artist MBIDs are a list type, so there's no issue sending multiple MBIDs (and the plugin should do as well, as long as Jellyfin recognizes them correctly).
I didn't (and don't) want to introduce a custom format for this case. Even if I did and went with semicolon for example, it would look weird and of course it still wouldn't refect the format one would expect. So at this moment, the plugin just picks up the first artist Jellyfin has stored. Jellyfin also does not store Artist Sort Order in track metadata, so I can't fall back on that either. According to your screenshot, it seems resclobbled uses the Artist Sort Order field primarily, rather then the Artists field.
If the artist field in API specification is intended this way (it'd make sense if the artists are to be sent as the sort order string), the proper fix would be to update Jellyfin to work with the sort order tag. Then this plugin can be easily updated to use the new metadata field. Other than this, a quicker and probably easier option would be to modify the metadata locally (either in Jellyfin or in the music files directly).

Thanks for the quick reply, I really appreciate it.  Just seems odd that all the programs that I use which scrobble to Listenbrainz (qmmp, mpris-scrobbler, rescrobbled, Plex (using eavesdrop.fm), Tidal (using android Pano Scrobbler) do this with no issues.  I'll check with the Listenbrainz people and see what they say.  Something isn't adding up.

Thanks again for the quick reply.  I submitted a ticket with Listenbrainz here:
https://tickets.metabrainz.org/browse/LB-1115
They have recommendations on how to enter this information into the Musicbrainz database, so if they don't have a standardized way to scrobble this, they probably should.  https://musicbrainz.org/doc/Artist_Credits

I've just released version <IP_ADDRESS> which has the changes from #11. As this is 2.x.y.z version, it is for Jellyfin 10.8.a.b. I'll update the version for Jellyfin 10.7.a.b later.

Working perfect!  Thanks so much for doing this!

I'll close this for now as the original issue is fixed now. Feel free to reopen this if there are any updates to address, thanks.

Hello! ListenBrainz developer here.
The listen JSON submission format was intentionally open-ended, but considering this is a pretty standard use case we could formalize the format.
What we use for our Spotify importer (which provides the majority of listens in ListenBrainz at the moment) is the following:
The artist_name filed is, as you mentioned, a simple string representing all the artists on the track. I think the way you implemented that in #11 is actually a great way to go.
Furthermore, we provide an array of artist names and release artist names in track_metadata.additional_info for completion, which we are not currently using for representation on ListenBrainz (but that should come soon—we will make more metadata available on each listen)
An example:
{
    "track_metadata": {
        "artist_name": "Bad Bunny, Jowell & Randy, Ñengo Flow", // Spotify's representation of the artist string
        "release_name": "YHLQMDLG",
        "additional_info": {
            [...]
            "artist_names": [
                "Bad Bunny",
                "Jowell & Randy",
                "Ñengo Flow"
            ],
          […]
            "release_artist_name": "Bad Bunny",
            "release_artist_names": [
                "Bad Bunny"
            ],
          […]
        },
        "track_name": "Safaera",
    }
}

Does that seem reasonable to you?

Hi @MonkeyDo, thanks for the info. :)

The listen JSON submission format was intentionally open-ended, but considering this is a pretty standard use case we could formalize the format.
The artist_name filed is, as you mentioned, a simple string representing all the artists on the track. I think the way you implemented that in #11 is actually a great way to go.

Yeah, I understand this field cannot have a specific format. I think maybe just a small note in api docs would be enough - something along the lines like "despite the name of artist_name field, in case of multiple artists for a track, all artist names are expected here, preferably in a full artist credit string", maybe with an example or two.

Furthermore, we provide an array of artist names and release artist names in track_metadata.additional_info for completion, which we are not currently using for representation on ListenBrainz (but that should come soon—we will make more metadata available on each listen)
...
Does that seem reasonable to you?

I thought that these look a bit redundant at first, since an application can sumbit just the artist MBIDs and let the server do its thing with them. But then not all aplications have MusicBraiz data available to submit, so yeah, it makes sense to have these fields available as as well.
But it looks like they are not documented? At least not at https://listenbrainz.readthedocs.io/en/production/dev/json/#json-doc. Or I guess the documentation will be updated once the metadata changes you are talking about will be deployed?


Update existing web parts to SPFx 1.4

Thank you for reporting an issue or suggesting an enhancement. We appreciate your feedback - to help the team to understand your needs, please complete the below template to ensure we have the necessary details to assist you.
Category

[x] Question
[ ] Typo
[ ] Bug
[ ] Additional article idea

Hi All,
I have an existing SPFx web part that I want to update to Framework 1.4.  I see how I can use npm to update the individual modules in my project, but is that process supposed also update the framework too?
I want to use the new functionality to package the assets in my deployment.  However, I got the error when I manually added includeClientSideAssets to the package-solution.json, and did gulp build.  Error:  "Additional properties not allowed: includeClientSideAssets"
My workaround was to update the Yeoman generator for  microsoft/sharepoint, create a brand new project, and copy my code files into it.  What should I do next time so I don't have to do this? Is this possible?
Thanks~
Laura

You have to update the web part packages to the latest version. You can find the instructions here https://docs.microsoft.com/en-us/sharepoint/dev/spfx/toolchain/update-latest-packages

That documentation looks correct.  If you require additional documentation or further questions please create a new thread so we see it.


GraalVM + SortedSet not working

Bug Report

Current Behavior

Lettuce SortedSet commands not functional with GraalVM native image
// your stack trace here;

Has anyone faced similar problems?
I have a quarkus + kotlin service which uses redis cluster client with a functional to use sorted sets, recently i was able to successfully build a native image with the latest quarkus (2.5.1) and GraalVM 21.3.
All functionality works well except sorted sets, there is no exception dump or stack trace in logs.
However, when i deploy the JVM version it works fine without issue.
For the native build, i did not make any changes to the lettuce's bundled reflection.json, however, i had to add these additional arguments to application properties for graalvm builds.
--initialize-at-run-time=io.lettuce.core.resource.AddressResolverGroupProvider\,io.lettuce.core.resource.DefaultClientResources\,io.lettuce.core.resource.AddressResolverGroupProvider$DefaultDnsAddressResolverGroupWrapper\,io.netty.buffer.ByteBufUtil$HexUtil\,io.netty.buffer.PooledByteBufAllocator\,io.lettuce.core.resource.AddressResolverGroupProvider$DefaultDnsAddressResolverGroupWrapper\,io.netty.util.concurrent.GlobalEventExecutor\,io.netty.resolver.dns.DnsNameResolver\,io.netty.resolver.HostsFileEntriesResolver\,io.netty.buffer.AbstractReferenceCountedByteBuf\,io.lettuce.core.resource.DefaultClientResources\,io.lettuce.core.resource.AddressResolverGroupProvider\,io.netty.util.concurrent.ScheduledFutureTask\,io.netty.resolver.dns.DnsServerAddressStreamProviders$DefaultProviderHolder\,io.netty.buffer.ByteBufAllocator\,io.netty.buffer.ByteBufUtil

Input Code

Input Code
// your code here;

Expected behavior/code

Environment

Lettuce version(s): lettuce-core:6.1.5.RELEASE
Redis version: Bitnami Redis Cluster Helm (Redis v6.2.6)

Possible Solution

Additional context

I'm not familiar with GraalVM Native at all. Happy to include a change if you find something we can improve.

Hi @mp911de
Found the root cause, it was due to Gson().toJson unable to serialize ScoredValue for native image, the same is working with JVM.
I was able to fix the issue by adding ScoredValue and Value (below) to reflection-config.json
ScoredValue and Value has private constructors, i guess setting allDeclaredConstructors did the trick
{
"name": "io.lettuce.core.ScoredValue",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true,
"allDeclaredFields": true,
"allPublicFields": true
},
{
"name": "io.lettuce.core.Value",
"allDeclaredConstructors": true,
"allPublicConstructors": true,
"allDeclaredMethods": true,
"allPublicMethods": true,
"allDeclaredFields": true,
"allPublicFields": true
}

As this issue relates to JSON serialization (and frankly, Lettuce objects aren't intended for that as Lettuce cannot know what you're trying to do), closing as invalid.


Add details on ARC

Add all of the details on ARC headers to this page

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

ID: e47e11dd-53ab-5f62-ac6c-59dbc00eed0d
Version Independent ID: 362ad038-3b64-f342-2f8e-111635c4337d
Content: Anti-spam message headers
Content Source: microsoft-365/security/office-365-security/anti-spam-message-headers.md
Service: o365-seccomp
GitHub Login: @MSFTTracyP
Microsoft Alias: tracyp

@danmyhre :  Thank you for your query here. Please note there are many headers not listed in this document and they are internal and only used by Microsoft anti-spam team for diagnostic purposes.
This was also addressed in another same query. Please see #486 (comment)
Thanks.
@mypil FYI Please.

ARC is not internal to MSFT and that other post is talking about the X-Forefront-Antispam-Report header.

@danmyhre -  From our understanding, the issue has been resolved based on this merged commit https://github.com/MicrosoftDocs/microsoft-365-docs/commit/06e4662adaa223a3d29cef1c503d6636518d5be2.
Thank you for your contribution to make the docs better! Much appreciated!


How to use triggers? Specifically  $(window).resize();

Awesome plugin - Thank you so much! Quick question though ... I see in the trigger section you say:
 $(window).resize(); // Causes the plugin to recalculate the element offsets, then the window scroll.
                      // Good for layout changes that could cause the fixed element to move.
                      // Example: the header height increases which should cause the fixed
                      // element to fix at a greater vertical scroll position.

However, forgive me but ... I don't know how or where to implement that?
My code is:
$(document).ready(function() {
          $('#trip-tabs').scrollToFixed({
                  marginTop: $('.header').outerHeight(),
              });
        });

Where do I add  $(window).resize(); ??
Thanks in advance for your help!

You add that call anywhere dynamic changes to the layout occur that may effect the fixed element. For example, if you dynamically add a new element, or resize content inside of the fixed element, that causes the fixed element to need to respond to the change, call $(window).resize().

Well it is a responsive site. So, every time the window is resized the header height might change. And if you see by my code, I'm having my fixed tabs with a margin top equal to the header height. So ... Can you edit my code to show me how I would account for the header height changing on resize please? Thank you so much!!

If the window resizes, nothing needs to be done. The resize event is automatically picked up by the plugin. Calling $(window).resize is only needed when you add or resize content programmatically.

Interesting, because it doesn't work on resize.  See site at https://www.backroads.com/trips/BMTI. Once you scroll, the tabs stay below the header. If you resize to smaller you see a gap appear as the header becomes less tall, if you resize to tablet size you'll see the tabs disappear altogether as the header gets tall and the tabs are hidden behind it. Any advice??

Ah, the header is changing heights depending on the media query. Make marginTop a function that returns what you have in there now. The plugin is initialized with the marginTop set to initial height of the header. Making marginTop a function will cause it to re-evaluate every time the window resizes.

This:
$(document).ready(function() {
  $('#trip-tabs').scrollToFixed({
    marginTop: function() {
      return $('.header').outerHeight();
    }
  });
});

Awesome - that worked! Thank you so much for your time. :)

Glad it worked!

Ah, awesome, had a similar issue! Thanks a lot for asking @Mahnie and thanks a lot for answering @bigspotteddog ! :)
Have a wonderful day! :)


Feature: support explicit parameter bounds with implicit defaults

I have a struct, Node<T, D>, where D is phantom, and due to some changes to a type Node embeds, I now need Sync + Send + Any bounds on T to get the various *Eq and *Ord traits on Node<T,D>. This resulted in me needing to make the following change:
-#[derive_where(PartialEq, Eq, PartialOrd, Ord; T)]
+#[derive_where(PartialEq; T: PartialEq + Sync + Send + Any)]
+#[derive_where(Eq; T: Eq + Sync + Send + Any)]
+#[derive_where(PartialOrd; T: PartialOrd + Sync + Send + Any)]
+#[derive_where(Ord; T: Ord + Sync + Send + Any)]
struct Node<T, D> { ... }

Explanation: whereas before I had a single derive_where call #[derive_where(PartialEq, Eq, PartialOrd, Ord; T)], now I need a separate derive_where call for each of these traits. The reason is that once I add explicit trait bounds T: Sync + Send + Any, I also need to specify the default recursive trait bound as well, which of course is different for each trait I'm deriving.
What I'm proposing is some way to say "I'd like the default bounds for T that I'd get if I didn't give any explicit bounds, plus some explicit bounds". Suppose that underscore (_) stood for the recursive bounds, i.e. the syntax were T: _ + <extra bounds>, leading to #[derive_where(<traits to derive>; T: _ + <extra bounds>)], then the above diff would become
-#[derive_where(PartialEq, Eq, PartialOrd, Ord; T)]
+#[derive_where(PartialEq, Eq, PartialOrd, Ord; T: _ + Sync + Send + Any)]
struct Node<T, D> { ... }

instead :)
I assume this is a common problem whenever explicit bounds for the generic parameter are specified, but I'm not sure, as this is the first time I've ever needed explicit bounds (usually I'm just using derive_where to ignore phantom parameters).

Sounds reasonable, @daxpedda do you think _ would conflict with any future ideas of expanding here? Making it be the “implied” bound would be in line with what the '_ lifetime means (and to some extent _ in Generics in general).

Agreed, I think this is a nice solution to the problem!


SCB-853 Rewrite the lamda function in saga-core to support JDK 7

Coverage decreased (-0.9%) to 93.625% when pulling ce83f17b89dcdf013961f713d62dcd452aa4420e on SCB-853 into 66344e7339eaef597442594ce7fa9fc828e1ffe9 on master.


I can not push content via ssh, just return error message :"Permission denied, please try again."

Gitea version (or commit ref):
Git version:1.11.4
Operating system:Debian 10
Database (use [x]):

[ ] PostgreSQL
[x] MySQL
[ ] MSSQL
[ ] SQLite

Can you reproduce the bug at https://try.gitea.io:

[ ] Yes (provide example URL)
[x] No
[ ] Not relevant

Log gist:

Description
I use ssh to push content to gitea server,but I when I input password for gitea account, it responce "Permission denied", but my account is administraor.I don't know how to solve this problem.
My gitea installed on vmware on windows. It downloaded from https://www.turnkeylinux.org/gitea.
...
Screenshots
The log of my operation in the console is as follows use windows wsl：
leon@lijiwei:/mnt/d/temp/1/SY-1UJKMB01B$ git branch -r
origin/HEAD -> origin/master
origin/master
leon@lijiwei:/mnt/d/temp/1/SY-1UJKMB01B$ git branch

master

leon@lijiwei:/mnt/d/temp/1/SY-1UJKMB01B$ git remote -v
origin  http://<IP_ADDRESS>/gitea/SY-1UJKMB01B.git (fetch)
origin  http://<IP_ADDRESS>/gitea/SY-1UJKMB01B.git (push)
leon@lijiwei:/mnt/d/temp/1/SY-1UJKMB01B$ git push -u origin master
fatal: unable to access 'http://<IP_ADDRESS>/gitea/SY-1UJKMB01B.git/': Failed to connect to <IP_ADDRESS> port 80: Connection refused
leon@lijiwei:/mnt/d/temp/1/SY-1UJKMB01B$ ssh -v<EMAIL_ADDRESS>OpenSSH_7.6p1 Ubuntu-4ubuntu0.4, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to <IP_ADDRESS> [<IP_ADDRESS>] port 22.
debug1: Connection established.
debug1: identity file /home/leon/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /home/leon/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/leon/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/leon/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/leon/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/leon/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/leon/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/leon/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.9p1 Debian-10+deb10u2
debug1: match: OpenSSH_7.9p1 Debian-10+deb10u2 pat OpenSSH* compat 0x04000000
debug1: Authenticating to <IP_ADDRESS>:22 as 'git'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher<EMAIL_ADDRESS>MAC:  compression: none
debug1: kex: client->server cipher<EMAIL_ADDRESS>MAC:  compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:************
debug1: Host '<IP_ADDRESS>' is known and matches the ECDSA host key.
debug1: Found key in /home/leon/.ssh/known_hosts:7
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:********* /home/leon/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/leon/.ssh/id_dsa
debug1: Trying private key: /home/leon/.ssh/id_ecdsa
debug1: Trying private key: /home/leon/.ssh/id_ed25519
debug1: Next authentication method: password
<EMAIL_ADDRESS>password:
debug1: Authentications that can continue: publickey,password
Permission denied, please try again.

This does not appear to be a bug but rather a configuration issue.
Please use the forums or better the #configuration channel on discord (https://discord.gg/Gitea ) We also have an active #chinese channel.


Entered codes in Python for assignment_1

What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)
I added Python codes to check the required outputs in assignment 1.
What did you learn from the changes you have made?
I learned to create functions and tested boolean outcomes based on logical reasoning.
Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?
NA
Were there any challenges? If so, what issue(s) did you face? How did you overcome it?
I struggled with writing codes while achieving the desired outcomes. Even if my logic was correct, I made multiple errors while entering data and am planning to work on the basics of Python in more details.
How were these changes tested?
I primarily created a test file and worked there. Once I achieved the results, I made final changes in the assignment file.
A reference to a related issue in your repository (if applicable)
Checklist

[x] I can confirm that my changes are working as intended

You did a great job here!
Please go ahead and close this pull request now. Thanks!

Thank you for your feedback!


High-level color.lighten() color.darken() methods

Possibly using some sort of sigmoid function, per @svgeesus recommendation

Sass color functions lighten() and darken() vs. mix() with black and white
Sass lighten
Sass darken
These increase or decrease HSL Lightness by a fixed amount.  The amount of visible lightening and darkening also depends strongly on the hue.

Looking at that one in Lab, #036 is lab(20.75% 1.89 -34.99) so 30% darker is 20.75 * .7 = 14.525 so lab(14.525% 1.89 -34.99) which is rgb(3.32% 14.67% 28.97%)

After exploring this a bit, this is a very non-trivial problem. Removing the milestone from this (which was incorrect anyway, since Public release happened 2 years ago!)

Hey there ! Sorry to reopen this issue but as I was trying to darken some color with Tokens Studio (which is using this lib btw) I didn't get the result I was expecting.
Why is the lightness decrement only is not the solution to darken a color as sass does it ?
Just being curious here :)

Why the lightness decrement only is not the solution to darken a color as sass does it ?

All colors whose lightness is the same or equal to the decrement map to zero ie black.

Clear. Thank you 👍


Rabbitmq unsupported version format

Hello, thank you for your amazing work!
After https://github.com/jdx/mise/commit/668acc3e6431fdd6734f8a0f726d5d8a0d4ce687 asdf-rabbitmq is unusable due to some bug with version definition.
The plugin forces to set its version with 'v' prefix, like 'v3.13.0'.
Now it's impossible to use this plugin with or without prefix:
mise ~/.local/share/mise/plugins/rabbitmq/bin/install failed
ERROR: unsupported version format 3.13.0

This seems most likely because we now remove the v prefix from the version globally (regardless of the plugin).
What confuses me is that mise ls-remote rabbitmq shows non-prefixed versions. It seems for asdf plugins v prefixes are also stripped away. This would let me to believe that one would intuitively try to install via mise install<EMAIL_ADDRESS>I assume this did also not work in prior versions and one would have to guess or know to add a v prefix to install rabbitmq, correct?

quickly tried with the 2024.3.1 binary and can confirm that mise install<EMAIL_ADDRESS>works, other variants like mise install rabbitmq or mise install<EMAIL_ADDRESS>do not.

this is an issue with the plugin and seems to be problematic for asdf as well: https://github.com/w-sanches/asdf-rabbitmq/issues/4
given the plugin author seems unresponsive, I'll fork the project over to mise-plugins

Works like a charm now, thank you! ❤


Generated client: drop custom wrapper methods of generated ones for vmi struct

What this PR does
Before this PR:
We have our custom virtualMachineInstanceInterface interface with the common Get, Delete, etc... methods and the customized ones (SerialConsole....)
From https://github.com/kubevirt/kubevirt/pull/11297 the common methods implementation work as a wrapper for the generated ones, redirecting the requests to them.
After this PR:
Convert using the generated client instead of the custom one. The wrapper methods for common methods are totally replaced by the generated ones embedding the generated virtualMachineInstanceInterface interface in our one.
The changes inherited are:

Patch now uses metav1.PatchOptions{} instead of *metav1.PatchOptions{}.
List now uses metav1.ListOptions{} instead of *metav1.ListOptions{}.
Get now uses metav1.GetOptions{} instead of *metav1.GetOptions{}.
Delete now uses metav1.DeleteOptions{} instead of *metav1.DeleteOptions{}.
Create now receives metav1.CreateOptions{} too.
Update now receives metav1.UpdateOptions{} too.
Added UpdateStatus, DeleteCollection, Watch methods.

Fixes #
Why we need it and why it was done in this way
The following tradeoffs were made:
The following alternatives were considered:
Links to places where the discussion took place:
Special notes for your reviewer
For an easier review process the commits was splitter in the following manner:

Align our custom common methods' signature to the generated one in the following order:

Create - introduced CreateOptions
Get - used GetOptions instead of the pointer
List - used ListOptions instead of the pointer
Update - introduced UpdateOptions
Delete - used DeleteOptions instead of the pointer
Patch - used PatchOptions instead of the pointer

Drop the custom methods' implementation, replacing them with the embedding of the generated VirtualMachineInstanceInterface.

Checklist
This checklist is not enforcing, but it's a reminder of items that could be relevant to every PR.
Approvers are expected to review this list.

[ ] ~Design: A design document was considered and is present (link) or not required~
[x] PR: The PR description is expressive enough and will help future contributors
[x] Code: Write code that humans can understand and Keep it simple
[x] Refactor: You have left the code cleaner than you found it (Boy Scout Rule)
[x] Upgrade: Impact of this change on upgrade flows was considered and addressed if required
[ ] ~Testing: New code requires new unit tests. New features and bug fixes require at least on e2e test~
[ ] ~Documentation: A user-guide update was considered and is present (link) or not required. You want a user-guide update if it's a user facing feature / API change.~
[ ] ~Community: Announcement to kubevirt-dev was considered~

Release note

NONE

/lgtm


Fix enable-slow tests filter for xdist

Fixed --enable-slow filter option with running with xdist plugin.
Signed-off-by: Fundakowski, Lukasz<EMAIL_ADDRESS>

Issue with skipping slow tests for yaml scenarios was also fixed in PR #108 , change in this line:
https://github.com/zephyrproject-rtos/twister/blob/03ca9b51df835ceb422601cf9f3b0b49aa06ccf5/src/twister2/specification_processor.py#L280
It was added to have compatible output with Twister V1


Current AVD Device Emulator Error Solution Suggestion in Windows

Solution By BerkSartik: https://github.com/flutter/flutter/issues/160161#issuecomment-2559130216

Open the C:\Users\user.android folder.

Create an advancedFeatures.ini file.

Add the commands below to this file.

Vulkan=off
GLDirectMem=on

Do flutter clean flutter run

This is what removed the computer freezing issue in API 34. Apart from this, the emulator was closing itself in API 33, and it was completely resolved.
OR TRY WHIS SOLUTION:
The reason for this error may be that your video card driver is not up to date. (e.g. NVIDIA, Intel)
I offer this solution, taking reference from this problems: #160500 and #160161
I saw the social media posts of people experiencing this problem and wanted to benefit from my own solution.
I am using NVIDIA and I updated as follows:

Go to NVIDIA Driver Download Page: https://www.nvidia.com/en-us/drivers/

Choose your product type and model (For example):
Product Type: GeForce
Product Series: The series of your card (for example GeForce RTX 30 Series).
Product: Your card model (for example RTX 3060).
Operating System: The operating system you are using (Windows 10, 11, etc.).

Download the resulting driver and run the file.

Install Driver

After the installation is complete, restart your computer.

! If you are using intel

Go to Intel's Driver Download Page

Learn Your Processor Model:
(Click Start > Run > type dxdiag and press Enter.)
In the window that opens, go to the "System Information" tab and check the model of your processor

On the driver download page, select the "Graphics" category.

Find the graphics driver for your processor model and select the version compatible with your operating system.

Download the relevant driver and start the installation process by running the file.

After the installation is complete, restart your computer.

! If this solution solves your error, I would be happy to give you feedback.

The flutter issue tracker is for reporting bugs in flutter.
While we appreciate what you're trying to do with this issue, there are better places to keep track of this.
Given that this is not a bug in flutter, I'll be closing this.
Thank you


Initial lexer and parser for specifying Mary multi assets via the cli

This PR adds a proposed multi-asset syntax for cardano-cli. The syntax is as follows:

Ada values are defined as INT lovelace e.g 42 lovelace
Multi-Asset values can be defined as:

INT policyid.assetname e.g 42 46f192e30c5d8fcc5ccbcd9c91e430283166b3382cd25261a1601b74.yourassetname
INT policyid e.g 42 46f192e30c5d8fcc5ccbcd9c91e430283166b3382cd25261a1601b74 (No asset name specified)
policyid.assetname e.g 46f192e30c5d8fcc5ccbcd9c91e430283166b3382cd25261a1601b74.yourassetname (This will mint only one of yourassetname)

You can add or subtract multi-asset values with + and - respectively but you can only add ada values

Full example:
42 lovelace
  + 42 46f192e30c5d8fcc5ccbcd9c91e430283166b3382cd25261a1601b74.foo
  - 42 46f192e30c5d8fcc5ccbcd9c91e430283166b3382cd25261a1601b74.bar
  + 10 lovelace
  ...

Depends on #2129. Marking this PR as a draft until that's been merged.

bors merge


Saga duplicates task

When using a Saga to kick off a command that will, in turn, generate an event to finish the saga, the generated event happens twice.

I'm not sure if that's because I'm "doing it wrong", or if there's a problem in the way the sagas are run.
I created a fork (see reference below) with a unit test (CompleteCommandingSagaTests.cs) to demonstrate the problem. Specifically, in the TestCommandingSaga.cs file, I have two classes - the Saga and the Command Handler. I expect the SagaEndingEvent only once, but it happens twice.
public class TestCommandingSaga : ISaga,
        ISagaStartedBy<SagaStartingAEvent>,
        IEventHandler<SagaEndingEvent>
    {
        public Guid Id { get; protected set; }
        public bool IsCompleted { get; protected set; }
        public static string Status { get; protected set; }

        private readonly IMicroBus Bus;
        public TestCommandingSaga(IMicroBus bus)
        {
            Bus = bus;
        }

        public async Task Handle(SagaStartingAEvent @event)
        {
            Id = @event.CorrelationId;
            Status = "Started, ";
            await Bus.SendAsync(new EndSaga { CorrelationId = Id });
        }

        public async Task Handle(SagaEndingEvent @event)
        {
            Status += "Finished.";
            IsCompleted = true;
        }
    }

    public class EndSagaCommandHandler : ICommandHandler<EndSaga>
    {
        private readonly IMicroBus Bus;
        public EndSagaCommandHandler(IMicroBus bus)
        {
            Bus = bus;
        }

        public Task Handle(EndSaga command)
        {
            Bus.PublishAsync(new SagaEndingEvent { CorrelationId = command.CorrelationId });
            return Task.CompletedTask;
        }
    }

Thoughts?

Thanks for reporting the problem, I plan on looking into this.

If you would like a hand, just let me know.


'loading' setting is not cleared on error, effectively disabling the plugin

New user here.  When setting up, I believe I made a mistake setting up the plugin; it was probably that I switched the fetch setting to "advanced", but didn't supply a query, but I can't be sure.  After switching that back to "highlights only", clicking the manual sync button would only produce the message "Omnivore is already syncing", with the Omnivore page remaining completely empty.  Nothing I did would persuade the plugin to work.
After a quick check of the source code and the saved settings file, I discovered the "loading" hidden setting in the preferences was set to "true".  I closed logseq, set it to "false" manually with a text editor, and restarted, which got it to sort of work.  Unfortunately, I had made another mistake in my setup in my scramble to figure out how to get the plugin to work, and my graph reference was now wrong.  I fixed this, only for the plugin to stop working again.  Sure enough, the "loading" preference had switched back to "true".  After another close/edit/restart cycle, everything now seems to be working.
I'm sure you can imagine how frustrating this is for a new user.
My suggestion: always set the "loading" preference to "false" on startup.  I don't know logseq well enough to know if that's possible, though.

I am getting the same 'Omnivore is already syncing' message.
I have tried various permutations of 'advanced' with 'label:Sent to Logseq' to 'highlights only' ...but still get the same message.
Can you please proved a bit more information regarding your fix ?
I'm not IT savy enough to know where I can locate this 'source code' and how to update this preference to 'true'
Any help would be appreciated as I am keen to integrate this into logseq ... it looks a fantastic way of getting highlighted text and notes into my PKM.

Hey @licquia @darrenstu, I'm so sorry for the inconvenience caused.
The loading setting is created to prevent multiple concurrent sync and it is expected to switch to false whenever a sync is completed. Based on your information, I have a feeling that something happened when you changed the settings which caused the plugin to restart or start a new instance so the "old" instance is still trying to sync (loading is still true).
There is an existing problem with Logseq that if you upgrade the plugin, highly likely it will start a "duplicate" instance of the plugin which caused duplicated articles being synced. It looks like to be related to this issue. I'm still trying to figure out a solution to the problem.
@licquia's suggestion is a pretty nice hack. I will incorporate it in the next release of the plugin if I cannot solve it permanently.
cc: @jacksonh

Thanks, @sywhb!
@darrenstu, if you want to fix this yourself, you'll first need to find where your global configuration for logseq is.  I'm on Linux, and I find it under .logseq in my home directory.  This is different from the path where you load your graph.
Once you've found that, look for settings/logseq-omnivore.json, and edit that file.  You'll find a line that says something like "loading": true.  Change "true" to "false", and you should be good.  Beware of any other changes; if there's commas or quotes, leave them as they are.
If your file contains "loading": false, then you've got a different problem than what I described.

Thank Jeff,
I am now up and running. Many thanks from Down Under.
Cheers
Darren
On Wed, Mar 22, 2023 at 2:59 AM Jeff Licquia @.***>
wrote:

Thanks, @sywhb https://github.com/sywhb!
@darrenstu https://github.com/darrenstu, if you want to fix this
yourself, you'll first need to find where your global configuration for
logseq is. I'm on Linux, and I find it under .logseq in my home
directory. This is different from the path where you load your graph.
Once you've found that, look for settings/logseq-omnivore.json, and edit
that file. You'll find a line that says something like "loading": true.
Change "true" to "false", and you should be good. Beware of any other
changes; if there's commas or quotes, leave them as they are.
If your file contains "loading": false, then you've got a different
problem than what I described.
—
Reply to this email directly, view it on GitHub
https://github.com/omnivore-app/logseq-omnivore/issues/82#issuecomment-1477888246,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AW3VY2CEAUNIAO3HH3IUJPLW5GX43ANCNFSM6AAAAAAV62IZYU
.
You are receiving this because you were mentioned.Message ID:
@.***>

Thanks for this @licquia

Hi everyone,
I'm happy to announce that I have fixed the issue related to the plugin in #85. If you're experiencing this issue, please upgrade your version of the plugin to the latest version.
Thank you for your patience and understanding.


status-badge: Update documentation

new 'Do' point added to describe how to apply the no border variant.
Can we also add an example of the no border variant in a table?
Describe your changes
Include screenshots, photos or links if necessary.
Checklist
Updating existing component

[ ] Describe the changes clearly in the PR description
[ ] Read and check your code before tagging someone for review
[ ] Document the component for the website (docs/overview.mdx and docs/code.mdx at a minimum)
[ ] Create stories for Storybook
[ ] Add necessary unit tests (HTML validation, snapshots etc)
[ ] Manually test component in various modern browsers
[ ] Manually test component using a screen reader
[ ] Run yarn format to ensure code is formatted correctly
[ ] Run yarn lint in the root of the repository to ensure linting tests are passing
[ ] Run yarn test to ensure tests are passing. If required, run yarn test -u to update any generated snapshots.
[ ] Run yarn changeset to create a changeset file. Learn more about change management.

Creating new component

[ ] Describe the changes clearly in the PR description
[ ] Preconstruct entrypoint has been created
[ ] Changeset file includes a minor
[ ] Export components for docs site and Playroom (docs/components/designSystemComponents.tsx)
[ ] Add snippets to Playroom (docs/playroom/snippets.ts)
[ ] Add component to Kitchen Sink (.storybook/stories/KitchenSink.tsx)
[ ] Add pictogram to Docs (docs/components/pictograms/index.tsx)

This text is being added via #1218


Static asset revisioning?

Asset revision has become a necessary building feature and good practice in web apps, what do you think of adding gulp-rev in gulpfile.js?

Just talked to @gauntface about this again. We agree that baking in static asset re-visioning by default tends to cause more issues than it's worth. As we're trying to tackle a good baseline for beginners and intermediate devs, this feature request isn't a great fit for us.
We do appreciate the suggestion however :)

https://github.com/smysnk/gulp-rev-all saved my day :+1:


Simple support for group mailbox notifications

Awesome, thank you, how would you like to be credited? Nick, fullname, some combination of those?

"vige" would be fine :)


mise python plugin always try to compile python...

Describe the bug
When I try to use a python version, mise always try to compile python from sources even if the 'python_compile' setting is set to false
To Reproduce
mise use -g<EMAIL_ADDRESS>
> Downloading Python-3.11.9.tar.xz...
> -> https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tar.xz
> Installing Python-3.11.9...
> mise<EMAIL_ADDRESS>Running python-build
 ...

Expected behavior
python should be installed from pre-compiled binaries.
mise doctor output
version: 2024.4.0 linux-x64 (bcd3592 2024-04-02)
activated: yes
shims_on_path: no

build_info:
  Target: x86_64-unknown-linux-gnu
  Features: DEFAULT, NATIVE_TLS, OPENSSL
  Built: Tue, 2 Apr 2024 01:29:57 +0000
  Rust Version: rustc 1.77.1 (7cf61ebde 2024-03-27)
  Profile: release

shell:
  /bin/bash
  GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
  Copyright (C) 2020 Free Software Foundation, Inc.
  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

  This is free software; you are free to change and redistribute it.
  There is NO WARRANTY, to the extent permitted by law.

dirs:
  data: ~/.local/share/mise
  config: ~/.config/mise
  cache: ~/.cache/mise
  state: ~/.local/state/mise
  shims: ~/.local/share/mise/shims

config_files:
  ~/.config/mise/config.toml

plugins:
  bun     (core)
  deno    (core)
  go      (core)
  java    (core)
  node    (core)
  python  (core)
  ruby    (core)

toolset:
<EMAIL_ADDRESS>(missing)

env_vars:
  MISE_SHELL=bash

settings:
  activate_aggressive = false
  all_compile = false
  always_keep_download = false
  always_keep_install = false
  asdf_compat = false
  cargo_binstall = true
  color = true
  disable_default_shorthands = false
  disable_tools = []
  experimental = false
  go_default_packages_file = "~/.default-go-packages"
  go_download_mirror = "https://dl.google.com/go"
  go_repo = "https://github.com/golang/go"
  go_set_gopath = false
  go_set_goroot = true
  go_skip_checksum = false
  jobs = 4
  legacy_version_file = true
  legacy_version_file_disable_tools = []
  node_compile = false
  not_found_auto_install = true
  paranoid = false
  plugin_autoupdate_last_check_duration = "7d"
  python_compile = false
  python_default_packages_file = "/home/lmi/.default-python-packages"
  python_pyenv_repo = "https://github.com/pyenv/pyenv.git"
  raw = false
  trusted_config_paths = []
  quiet = false
  verbose = false
  yes = false
  ci = false
  debug = false
  trace = false
  log_level = "info"
  python_venv_auto_create = false

  [status]
  missing_tools = "if_other_versions_installed"
  show_env = false
  show_tools = false

No problems found

Additional context
On ubuntu 22.04.

are you running alpine or nixos? https://github.com/jdx/mise/blob/9138e2e6ec09a36c7791c9a6b4e5f7ab138fcb63/src/config/settings.rs#L178

are you running alpine or nixos?
https://github.com/jdx/mise/blob/9138e2e6ec09a36c7791c9a6b4e5f7ab138fcb63/src/config/settings.rs#L178

Ubuntu 22.04.4 LTS AKA jammy

Running the following rust program:
use sys_info;

fn linux_distro() -> Option<String> {
    match sys_info::linux_os_release() {
        Ok(release) => Some(release.id?),
        _ => None,
    }
}

fn main() {
    match linux_distro() {
        Some(distro) => println!("The Linux distribution is: {}", distro),
        None => println!("Could not determine the Linux distribution"),
    }
}

give:
The Linux distribution is: ubuntu

Hi,
I'm also experiencing this issue, have this nice docker one liner that reproduces the problem:
docker run -it --rm debian:12 bash -c "apt update && apt install -y git curl && curl -L --fail https://github.com/jdx/mise/releases/download/v2024.4.1/mise-v2024.4.1-linux-x64 -o mise && chmod u+x mise && ./mise use<EMAIL_ADDRESS>
Output truncated for brevity
...
Running hooks in /etc/ca-certificates/update.d...
done.
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 20.9M  100 20.9M    0     0  5681k      0  0:00:03  0:00:03 --:--:-- 8120k
Downloading Python-3.11.9.tar.gz...
-> https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz
Installing Python-3.11.9...
BUILD FAILED (Debian GNU/Linux 12 using python-build 2.4.0)
Inspect or clean up the working tree at /tmp/python-build.20240408135815.3199
Results logged to /tmp/python-build.20240408135815.3199.log
Last 10 log lines:
checking for pkg-config... no
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... "linux"
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/tmp/python-build.20240408135815.3199/Python-3.11.9':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
mise ~/.cache/mise/python/pyenv/plugins/python-build/bin/python-build failed
Downloading Python-3.11.9.tar.gz...
-> https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz
Installing Python-3.11.9...

BUILD FAILED (Debian GNU/Linux 12 using python-build 2.4.0)

Inspect or clean up the working tree at /tmp/python-build.20240408135815.3199
Results logged to /tmp/python-build.20240408135815.3199.log

Last 10 log lines:
checking for pkg-config... no
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... "linux"
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/tmp/python-build.20240408135815.3199/Python-3.11.9':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
mise ~/.cache/mise/python/pyenv/plugins/python-build/bin/python-build exited with non-zero status: exit code 1
mise Run with --verbose or MISE_VERBOSE=1 for more information

As you can see, it attempts to download the tgz and build python.
Let me know if I can provide any other information

so the reason is pretty simple, indygreg just hasn't created a release with 3.11.9 yet: https://github.com/indygreg/python-build-standalone/releases

so the reason is pretty simple, indygreg just hasn't created a release with 3.11.9 yet: https://github.com/indygreg/python-build-standalone/releases

Do you mean that I've to check which version is available on https://github.com/indygreg/python-build-standalone/releases and nerver use the command mise use<EMAIL_ADDRESS>or  mise use<EMAIL_ADDRESS>I must specify the exact version to use?

if you specify mise use<EMAIL_ADDRESS>it means to use the latest version of 3.11. If that is a version that has a precompiled binary available, the precompiled version will be used. If not, mise must compile in order to get the latest version.
Perhaps a setting could be added to use the latest precompiled version and never use compiled versions.

Perhaps a setting could be added to use the latest precompiled version and never use compiled versions.

As long as you explicitly specify that you don't want to build python, shouldn't the default be to use the latest precompiled version available? For me, an additional flag wouldn't make much difference. Furthermore, the choice to set python_compile to false is justified in my case by the desire to avoid having to install the dev libs needed to compile python.

Instead of an additional flag, wouldn't it be more interesting to simply inform the user that the latest precompiled version available is prior to the latest python release and inform him that if he wishes to obtain this version he must enable python compilation in his configuration.

I think it's more important to use the correct version than it is to always use precompiled binaries

so the reason is pretty simple, indygreg just hasn't created a release with 3.11.9 yet: https://github.com/indygreg/python-build-standalone/releases

Doh, I didn't think of that 😅
mise use<EMAIL_ADDRESS>does exactly what I expect it to do, we will pin the minor version in our repos.
Many thanks for the quick response!

I think it's more important to use the correct version than it is to always use precompiled binaries. This also matches how other languages and tools in this space behave. Precompilation is an optimization, not generally a requirement—though I'm willing to accept that being optional behavior.

It makes sense. In such a case your proposal for an additional setting could cover both needs.
BTW thank you for this great tool!

(maybe fold this into https://github.com/jdx/mise/issues/1684 ?)


Use celestia-app when starting up devnode

This PR adds code to use celestia-app instead of kvstore when compiling a dev node.
While this works for the most part, I'm curous for which scenarios this will actually get used. It makes testing more difficult, as the app relies on setting up a configured network or always fails.
Notably, it doesn't start the app's grpc server yet.

While this works for the most part, I'm curous for which scenarios this will actually get used. It makes testing more difficult, as the app relies on setting up a configured network or always fails.

By  "this" and "It" do you mean integration implemented in this PR?

By "this" and "It" do you mean integration implemented in this PR?

yeah, will running an embedded full celestia-app only be used while developing/testing, or do we intend on people being able to use a single binary to run both?

do we intend on people being able to use a single binary to run both in a real network?

Yeah, I am aiming for this. What concerns do you have about this?

Yeah, I am aiming for this. What concerns do you have about this?

I don't have any concerns, just clarifying :slightly_smiling_face:

While this PR does add the ability to embed the celestia-app instead of the kvstore, this functionality is not yet working. This is because in app is built to only function in a viable network. To achieve that, we will essentially have to a similar script to this one before we can actually start the node. #190
Per #189, we are also not yet running the celestia-app's grpc server when embedding it. We will have to do that before we can actually use the embedded app.

This is kinda blocked by #175 #189 and #190
we should hopefully have PR for #189 and #190 soon

If the devmode is going to be remove, this can be closed I assume?

Yeah I think we can close this as it'll be too intense to rebase / refactor depending on our impl of node types / removal of dev mode. cc @Wondertan

I am closing this for now but keeping it. This might be a good place to return back to


Support for "underground" or other special notes.

There are a number of nodes that are in caves below the surface or on top of tall spires. A "notes" field or at least an "underground" note would go a long way to making it easy to determine where the nodes actually are.
The enhancement with pictures of the node would also help, but might be harder to implement.

Good points !
We will take care of a way to display some details about node locations when needed.
We already have a planned feature for your second idea https://trello.com/c/FbxsxbFu
And we'll also display cave entrance and its path https://trello.com/c/4rcPdTqz
Thank you


Add compile support of new plugin/driver "vsphere-shared"

New plugin: client_plugin/shared_plugin
New driver: client_plugin/drivers/shared
To build the new plugin: make shared-all
Plugin is pushed into: [DOCKER_HUB_REPO]/vsphere-shared:[VERSION_TAG][EXTRA_TAG]
Functions in the new shared_driver are to be implemented.
There are a few layout change in drivers directory.
Common utility functions are grouped under drivers/commonUtilDriver.
The new plugin shares the same plugin_dockerbuild Makefile with original vmdk plugin.
Thus the Dockerfile and config.json are replaced by Dockerfile-template and config.json-template in order to be generic.
Testing result:
test-e2e runalways passed.
Skipped local run of test-e2e runonce due to testbed requirements not ideal, and will use CI for final check.

@shuklanirdesh82
I did some googling and found out some discussion about filename naming convention in golang:
https://stackoverflow.com/questions/25161774/what-are-conventions-for-filenames-in-go
Besides that there is special use for _test.go and _linux.go and so on, even golang's own package has _ in their filenames:
https://golang.org/src/compress/bzip2/move_to_front.go
So I guess there isn't a recommendation about not using _ in filenames.

@shuklanirdesh82
That's why I said besides :)
There are more in golang source code:
https://golang.org/src/compress/bzip2/move_to_front.go
https://github.com/golang/go/blob/master/src/compress/flate/huffman_bit_writer.go
https://github.com/golang/go/blob/master/src/archive/tar/stat_atimespec.go
https://github.com/golang/go/blob/master/src/container/heap/example_intheap_test.go

Lots of code is not compliant with standards and code style guidance, so examples do not work very well.
The golang.org says in https://blog.golang.org/package-names
 Good package names are short and clear. They are lower case, with no under_scores or mixedCaps. They are often simple nouns, such as:

    time (provides functionality for measuring and displaying time)
    list (implements a doubly linked list)
    http (provides HTTP client and server implementations)

The style of names typical of another language might not be idiomatic in a Go program. Here are two examples of names that might be good style in other languages but do not fit well in Go:

    computeServiceClient
    priority_queue

A Go package may export several types and functions. For example, a compute package could export a Client type with methods for using the service as well as functions for partitioning a compute task across several clients.

Abbreviate judiciously. Package names may be abbreviated when the abbreviation is familiar to the programmer. Widely-used packages often have compressed names:

    strconv (string conversion)
    syscall (system call)
    fmt (formatted I/O)

On the other hand, if abbreviating a package name makes it ambiguous or unclear, don't do it.

BTW, they actually advice against generic name. e.g. util :-)
So I am with @shuklanirdesh82 here, though IMO it's not a huge issue and we are not compliant in many other places already. Still, I suggest something like dockvolplugin

I don't mind if we apply this rule to vDVS code!
But please be consistent.
I saw that there is newly checked in files like:
https://github.com/vmware/docker-volume-vsphere/blob/master/tests/e2e/volume_access_test.go (the first '_' :))
https://github.com/vmware/docker-volume-vsphere/blob/master/tests/utils/esx/vim_cmd.go
https://github.com/vmware/docker-volume-vsphere/blob/master/tests/utils/dockercli/docker_mgmt.go
And of course as @msterin mentioned, we didn't follow such rule before. All files under client_plugin mainly are not compliant with this rule.
So if someone want to open an issue and adjust all the current filenames, I won't have an opinion.
But I don't think we should apply a rule suddenly and leaving filenames like
client_plugin/drivers/vmdk/vmdk_driver.go and client_plugin/drivers/shared/shareddriver.go there at the same time.
So I suggest that, if we REALLY care about the filename naming, please update the current filenames, and then apply to future PRs :)


Display emoji at the left of the status text.

This PR improves the way status and status emoji appears in the right sidebar. When the status text and emoji both are present, then the emoji is displayed at the left of the status text and when only emoji is present, then it is displayed at the right of the user name.

Fixes: #22910

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[x] Highlights technical choices and bugs encountered.
[x] Calls out remaining decisions and concerns.
[x] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[x] Responsiveness and internationalization.
[x] Strings and tooltips.
[x] End-to-end functionality of buttons, interactions and flows.
[x] Corner cases, error conditions, and easily imagined bugs.

Hey @alya @amanagr , could you take a look at this one?

The alignment doesn't seem quite right -- is the emoji to the left of the name?
What does it look like with the "show avatars" setting?

I'm less confident than previously that we want this change (we'd need to test it out), so I think this is worth working on only if you can produce a really clean, easy to review PR. Thanks!

Hey @Alya, I’ve written a clean PR description. Could you please take a look and let me know if it works for you?

OK, so why is the change not applied when there's an avatar?

It is despicted in the table in the PR description.

OK, so why is the change not applied when there's an avatar?

Ohh, I think I missed that one mistakenly.


Build error - command not found

I have just started looking at this, but if this is meant to be an out of the box demo sort of deal, it looks like the build is broken. I just did a fresh install, let workbench deploy podman for me, and forked this repo. Below are the results.
Hit:5 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64  InRelease
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package libgl1
E: Unable to locate package libglib2.0-0
E: Couldn't find any package by glob 'libglib2.0-0
   '
E: Couldn't find any package by regex 'libglib2.0-0
   '
E: Unable to locate package git
Error: building at STEP "RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y     libgl1
     libglib2.0-0
     git
     jq": while running runtime: exit status 100

System Info
Not that it really much matters since the build appears to be failing looking for some packages that don't exist in a container, but the host system is:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.4 LTS"
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

Linux linux-desktop 6.5.0-28-generic #29~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Apr  4 14:39:20 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

can we get a little more context on this?
you cloned the project in workbench and the build failed?
or did you try and build things outside of workbench?

can we get a little more context on this?

I did as this part of the tutorial instructed.

you cloned the project in workbench and the build failed?

I cloned it using the clone project button here after I created my own fork:

The build starts but this is as far as it gets:
STEP 1/32: FROM ghcr.io/huggingface/text-generation-inference:latest
STEP 2/32: WORKDIR /opt/project/build/
 Using cache 9c39d76f60b717ac3b593657d316de16beb55bfeb055e39a6106172c4ac8732a
 9c39d76f60b7
STEP 3/32: SHELL ["/bin/bash", "-c"]
 Using cache 7371ead4fd9fcd7d8f3df811832781a4be5820df4c1fcbe4231d8555d19aa430
 7371ead4fd9f
STEP 4/32: USER root
 Using cache 9e9979887cef453e1ab1466268d897eba7b1eb0f0f10a582d21c5cecf92a699e
 9e9979887cef
STEP 5/32: RUN groupadd -g 1000 workbench || true
 Using cache 751e8fd384b5c2630f74600076a3389314d7a13564617966a7eae26e5bd332e1
 751e8fd384b5
STEP 6/32: RUN useradd -u 1000 -g 1000 -rm -d /home/workbench -s /bin/bash workbench || usermod -l workbench $(getent passwd 1000 | cut -d: -f1)
 Using cache cd051d64f4101e27e5d3ced12073041d0cd4f33f3bdf2b5de42876956ab5a990
 cd051d64f410
STEP 7/32: RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y     sudo
 Using cache 9ceb08d3bd830a76029b1fdf6b608ba0b3b1f38d35af089102814d7a7fd1705d
 9ceb08d3bd83
STEP 8/32: RUN echo "workbench	ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/workbench
 Using cache de3ca639ee9bb62ed6793937ab0bfe2df9a98865a9f12c84eccdeb2bf1d74e28
 de3ca639ee9b
STEP 9/32: ENV NVWB_UID=1000
 Using cache 3412168d918a56f91825ef9259abaae936b456b45f5bc934761e5b62329641d4
 3412168d918a
STEP 10/32: ENV NVWB_GID=1000
 Using cache 01accd2e20b0978d676ddd46b71747da82175720d5d99437d35a4e03f2388953
 01accd2e20b0
STEP 11/32: ENV NVWB_USERNAME=workbench
 Using cache 7017347f865e1ea76b5c253202115200f71581d7e80c9fca286f831285e54972
 7017347f865e
STEP 12/32: USER $NVWB_USERNAME
 Using cache 9db5b79d8320b930ba3ad9220ccdfc9add4babff2c46093964715eed40b86384
 9db5b79d8320
STEP 13/32: COPY --chown=$NVWB_UID:$NVWB_GID  ["preBuild.bash", "/opt/project/build/"]
 Using cache 24863b6d2189f9f2b7b76ad08873928e27ab534c89e4ca06b18c004153f245aa
 24863b6d2189
STEP 14/32: RUN ["/bin/bash", "/opt/project/build/preBuild.bash"]
 Using cache 0c0579d653a4a8b9bab1d3e6dd421e9950858e0fc670e90c8a6c962810baa3ef
 0c0579d653a4
STEP 15/32: USER root
 Using cache 07d489c5c3c1966bcc7b548cfe6e6cbfe20e6a1f3b6cb595cf3c39ba79894a2e
 07d489c5c3c1
STEP 16/32: RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y     wget
 Using cache 6b6f7afaa6e9b8c937a559deba09288ec59b247d04cbc2bf4f2e4105372e3679
 6b6f7afaa6e9
STEP 17/32: RUN dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; wget -O- https://github.com/tianon/gosu/releases/download/1.17/gosu-${dpkgArch} | install /dev/stdin /usr/local/bin/gosu
 Using cache 4a73c61d25c23be76cc67753c00fe3a5845ca7bea0f8dfeb367bc91b3e64b861
 4a73c61d25c2
STEP 18/32: COPY  --chmod=755 ["entrypoint.sh", "/"]
 Using cache 21f0b357011345147b3c52c4f437372989b2d95db8db3de1f22aa82e36ea08c6
 21f0b3570113
STEP 19/32: ENV NVWB_BASE_ENV_ENTRYPOINT=
 Using cache a69cb83086ac33ec15b3e309f28ccd4dc1851eeff2b53e4b5b8fa90277197641
 a69cb83086ac
STEP 20/32: USER $NVWB_USERNAME
 Using cache bf604094e85375800ea71b99da88f338ac9d4f832daaa212e33153594dee490b
 bf604094e853
STEP 21/32: USER root
 Using cache 05f66823ac9214b3956ea40810a7e6b8459c1c6c0d5f796cf5c3ae6e83506b58
 05f66823ac92
STEP 22/32: RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y     libgl1
     libglib2.0-0
     git
     jq
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64  InRelease
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:4 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Hit:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Get:6 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [2037 kB]
Fetched 2266 kB in 1s (1823 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package libgl1
E: Unable to locate package libglib2.0-0
E: Couldn't find any package by glob 'libglib2.0-0
   '
E: Couldn't find any package by regex 'libglib2.0-0
   '
E: Unable to locate package git
Error: building at STEP "RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y     libgl1
     libglib2.0-0
     git
     jq": while running runtime: exit status 100

Build Failed

I went as far as firing up that container manually with:
apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y     libgl1
     libglib2.0-0
     git
     jq

that also fails. You get:
...
Setting up libgl1-mesa-dri:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...
Setting up libglx-mesa0:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...
Setting up libglx0:amd64 (1.4.0-1) ...
Setting up libgl1:amd64 (1.4.0-1) ...
Processing triggers for libc-bin (2.35-0ubuntu3.4) ...
bash: libglib2.0-0: command not found
bash: git: command not found
bash: jq: command not found

It looks ilke these are getting pulled out of the file apt.txt. I just tried ignoring the file and changing its format from this:
# apt packages to install should be listed one per line
libgl1
libglib2.0-0

#
git
jq

to this:
# apt packages to install should be listed one per line
libgl1 libglib2.0-0 git jq

and the build has progressed past step 22. I'm guessing the odd spacing is the source of the bug.

or did you try and build things outside of workbench?

No - I did everything inside the Nvidia AI Workbench UI. No command line.

It now seems to have an unrelated failure though. Full build log attached. I choose podman when prompted to choose during install because that's what most of my customers are running with K8s. A naive glance at the error makes me think the installer assumes docker will be present
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
/opt/project/build/postBuild.bash: line 23: $'\r': command not found
groupadd: 'docker-group
' is not a valid group name
usermod: group 'docker-group' does not exist
/opt/project/build/postBuild.bash: line 26: $'\r': command not found
chown: cannot access '/data': No such file or directory
Error: building at STEP "RUN /bin/bash /opt/project/build/postBuild.bash": while running runtime: exit status 1

build_failed.txt

It now seems to have an unrelated failure though. Full build log attached. I choose podman when prompted to choose during install because that's what most of my customers are running with K8s. A naive glance at the error makes me think the installer assumes docker will be present
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
/opt/project/build/postBuild.bash: line 23: $'\r': command not found
groupadd: 'docker-group
' is not a valid group name
usermod: group 'docker-group' does not exist
/opt/project/build/postBuild.bash: line 26: $'\r': command not found
chown: cannot access '/data': No such file or directory
Error: building at STEP "RUN /bin/bash /opt/project/build/postBuild.bash": while running runtime: exit status 1

build_failed.txt

If you're good with the PR I'll move this to a separate issue. I can take a look at it on Monday.
I didn't spend time looking to see if there are other dependencies assuming everything each be on its own line.

can we get a little more context on this?

I did as this part of the tutorial instructed.

you cloned the project in workbench and the build failed?

I cloned it using the clone project button here after I created my own fork:

The build starts but this is as far as it gets:
STEP 1/32: FROM ghcr.io/huggingface/text-generation-inference:latest
STEP 2/32: WORKDIR /opt/project/build/
 Using cache 9c39d76f60b717ac3b593657d316de16beb55bfeb055e39a6106172c4ac8732a
 9c39d76f60b7
STEP 3/32: SHELL ["/bin/bash", "-c"]
 Using cache 7371ead4fd9fcd7d8f3df811832781a4be5820df4c1fcbe4231d8555d19aa430
 7371ead4fd9f
STEP 4/32: USER root
 Using cache 9e9979887cef453e1ab1466268d897eba7b1eb0f0f10a582d21c5cecf92a699e
 9e9979887cef
STEP 5/32: RUN groupadd -g 1000 workbench || true
 Using cache 751e8fd384b5c2630f74600076a3389314d7a13564617966a7eae26e5bd332e1
 751e8fd384b5
STEP 6/32: RUN useradd -u 1000 -g 1000 -rm -d /home/workbench -s /bin/bash workbench || usermod -l workbench $(getent passwd 1000 | cut -d: -f1)
 Using cache cd051d64f4101e27e5d3ced12073041d0cd4f33f3bdf2b5de42876956ab5a990
 cd051d64f410
STEP 7/32: RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y     sudo
 Using cache 9ceb08d3bd830a76029b1fdf6b608ba0b3b1f38d35af089102814d7a7fd1705d
 9ceb08d3bd83
STEP 8/32: RUN echo "workbench	ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/workbench
 Using cache de3ca639ee9bb62ed6793937ab0bfe2df9a98865a9f12c84eccdeb2bf1d74e28
 de3ca639ee9b
STEP 9/32: ENV NVWB_UID=1000
 Using cache 3412168d918a56f91825ef9259abaae936b456b45f5bc934761e5b62329641d4
 3412168d918a
STEP 10/32: ENV NVWB_GID=1000
 Using cache 01accd2e20b0978d676ddd46b71747da82175720d5d99437d35a4e03f2388953
 01accd2e20b0
STEP 11/32: ENV NVWB_USERNAME=workbench
 Using cache 7017347f865e1ea76b5c253202115200f71581d7e80c9fca286f831285e54972
 7017347f865e
STEP 12/32: USER $NVWB_USERNAME
 Using cache 9db5b79d8320b930ba3ad9220ccdfc9add4babff2c46093964715eed40b86384
 9db5b79d8320
STEP 13/32: COPY --chown=$NVWB_UID:$NVWB_GID  ["preBuild.bash", "/opt/project/build/"]
 Using cache 24863b6d2189f9f2b7b76ad08873928e27ab534c89e4ca06b18c004153f245aa
 24863b6d2189
STEP 14/32: RUN ["/bin/bash", "/opt/project/build/preBuild.bash"]
 Using cache 0c0579d653a4a8b9bab1d3e6dd421e9950858e0fc670e90c8a6c962810baa3ef
 0c0579d653a4
STEP 15/32: USER root
 Using cache 07d489c5c3c1966bcc7b548cfe6e6cbfe20e6a1f3b6cb595cf3c39ba79894a2e
 07d489c5c3c1
STEP 16/32: RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y     wget
 Using cache 6b6f7afaa6e9b8c937a559deba09288ec59b247d04cbc2bf4f2e4105372e3679
 6b6f7afaa6e9
STEP 17/32: RUN dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; wget -O- https://github.com/tianon/gosu/releases/download/1.17/gosu-${dpkgArch} | install /dev/stdin /usr/local/bin/gosu
 Using cache 4a73c61d25c23be76cc67753c00fe3a5845ca7bea0f8dfeb367bc91b3e64b861
 4a73c61d25c2
STEP 18/32: COPY  --chmod=755 ["entrypoint.sh", "/"]
 Using cache 21f0b357011345147b3c52c4f437372989b2d95db8db3de1f22aa82e36ea08c6
 21f0b3570113
STEP 19/32: ENV NVWB_BASE_ENV_ENTRYPOINT=
 Using cache a69cb83086ac33ec15b3e309f28ccd4dc1851eeff2b53e4b5b8fa90277197641
 a69cb83086ac
STEP 20/32: USER $NVWB_USERNAME
 Using cache bf604094e85375800ea71b99da88f338ac9d4f832daaa212e33153594dee490b
 bf604094e853
STEP 21/32: USER root
 Using cache 05f66823ac9214b3956ea40810a7e6b8459c1c6c0d5f796cf5c3ae6e83506b58
 05f66823ac92
STEP 22/32: RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y     libgl1
     libglib2.0-0
     git
     jq
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64  InRelease
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:4 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Hit:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Get:6 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [2037 kB]
Fetched 2266 kB in 1s (1823 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package libgl1
E: Unable to locate package libglib2.0-0
E: Couldn't find any package by glob 'libglib2.0-0
   '
E: Couldn't find any package by regex 'libglib2.0-0
   '
E: Unable to locate package git
Error: building at STEP "RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y     libgl1
     libglib2.0-0
     git
     jq": while running runtime: exit status 100

Build Failed

I went as far as firing up that container manually with:
apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y     libgl1
     libglib2.0-0
     git
     jq

that also fails. You get:
...
Setting up libgl1-mesa-dri:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...
Setting up libglx-mesa0:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...
Setting up libglx0:amd64 (1.4.0-1) ...
Setting up libgl1:amd64 (1.4.0-1) ...
Processing triggers for libc-bin (2.35-0ubuntu3.4) ...
bash: libglib2.0-0: command not found
bash: git: command not found
bash: jq: command not found

It looks ilke these are getting pulled out of the file apt.txt. I just tried ignoring the file and changing its format from this:
# apt packages to install should be listed one per line
libgl1
libglib2.0-0

#
git
jq

to this:
# apt packages to install should be listed one per line
libgl1 libglib2.0-0 git jq

and the build has progressed past step 22. I'm guessing the odd spacing is the source of the bug.

or did you try and build things outside of workbench?

No - I did everything inside the Nvidia AI Workbench UI. No command line.

Confirmed that this error does not occur when the container engine is docker. I do still get:
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
/opt/project/build/postBuild.bash: line 23: $'\r': command not found
groupadd: 'docker-group
' is not a valid group name
usermod: group 'docker-group' does not exist
/opt/project/build/postBuild.bash: line 26: $'\r': command not found
chown: cannot access '/data': No such file or directory
Error: building at STEP "RUN /bin/bash /opt/project/build/postBuild.bash": while running runtime: exit status 1


Hugo extended: true does not install extended version

$ hugo version
hugo v0.110.0-e32a493b7826d02763c3b79623952e625402b168 linux/amd64 BuildDate=2023-01-17T12:16:09Z VendorInfo=gohugoio

Feature looks like this per docs.
		"ghcr.io/devcontainers/features/hugo:1": {
			"version": "latest",
			"extended": true
		},

Turns out the reason is because I used the Hugo Dev container base image.

@ElanHasson Could you explain how you fixed this? I'm having the same issue.

Sure. @aadinesarkar
I switched to node base image: https://github.com/ElanHasson/throw.nullreference.io/blob/main/.devcontainer/devcontainer.json#L6
Then use Hugo npm package: https://github.com/ElanHasson/throw.nullreference.io/blob/main/package.json#L37
Configured as such: https://github.com/ElanHasson/throw.nullreference.io/blob/main/package.hugo.json

Thanks @ElanHasson!
Is it a bug that causes the need for this workaround? I expected it to work out of the box. I ended up just changing the image to "image": "klakegg/hugo:0.107.0-ext-ubuntu"

In my case, it turned out that the universal image included Hugo's features by default, which was causing the issue. Switching to the base image resolved the problem.


Update README

This simplifies the README a bit while also adding info about MenuSheetView

@emilsjolander Please review

lgtm


Jan 28 newsletter

https://deploy-preview-640--thumbprint.netlify.com/updates/notes/2020-01-28

@tomgenoni — I've updated this. Made a tweak to the format so that it's grouped by project rather than platform. Makes more sense IMO since we want all the platforms to move together.