Windows AARCH64 Target

Feature
Compile the C API and produce ARM64 builds for Windows
Benefit
Will unblock this issue in the wasmtime-dotnet package
Not sure if the wheel exist for this yet; in terms of infrastructure cross compilation on Github Actions should be possible, but if necessary I’m happy to deploy some new self-hosted runners to power this feature.

This depends on #4992 -- a little bit of core runtime functionality (trap handling, unwind info generation) necessary for this OS/architecture pair. If you're willing to work on this, we'd be happy to review a PR!

This depends on #4992 -- a little bit of core runtime functionality (trap handling, unwind info generation) necessary for this OS/architecture pair. If you're willing to work on this, we'd be happy to review a PR!

Thank you for linking the relevant issue; I’ll take a look and see about submitting a PR.

I've been trying to get rustc_codegen_cranelift working with Windows ARM64, but I've run into an issue with alignment.
My work-in-progress branch is available at https://github.com/dpaoliello/wasmtime/tree/arm64wip
Current, when I run y build, a bunch of linker errors from link.exe complaining about the alignment of symbols:
std-0891cada1b439ffb.dq2m4pkr5rfjx0xrog6ne1sfh.rcgu.o : error LNK2048: relocation PAGEOFFSET_12L targeting 'memcpy' (0019EE84) is invalid for the instruction (F9400084 at RVA 000D6C84) at section 0x1 offset 0x137C, due to bad alignment of offset to target (E84); expected to be 8 bytes aligned

Import thing from that output is that memcpy is being located at 0019EE84, which is not 8 byte aligned.
I've tried setting the function alignment to 8: https://github.com/dpaoliello/wasmtime/blob/e7184160fe909864c767177de17729f876c0da60/cranelift/codegen/src/isa/aarch64/inst/mod.rs#L1184
And the symbol alignment to 8:
https://github.com/dpaoliello/wasmtime/blob/e7184160fe909864c767177de17729f876c0da60/cranelift/codegen/src/isa/mod.rs#L430
But neither seems to have fixed this - any idea what I'm doing wrong?

I think memcpy would be defined in the libc-equivalent-windows-has, which might be why changing Cranelift's function/symbol alignment didn't work? How sure are you the memcpy function itself is created by Cranelift?
If it's not created by Cranelift this might be something where we're generating the wrong relocation against memcpy perhaps? Where the one we're generating requires 8-byte alignment but we should be using something else that doesn't require 8-byte alignment?

It's not memcpy specifically, I'm also seeing a bunch of Win32 function, so it's likely any external symbol that the obj is referencing. I'm not familiar with how external symbols are represented in obj files, or how cranelift places them there, so I'll have to dig into this further when I have time.

Ok, I finally understand what's happening here.
When emitting a call, wasmtime emits it as LoadExtName then the call indirect:
https://github.com/bytecodealliance/wasmtime/blob/e56ffd77f1fb2240e163b7f840f8c4e728c98434/cranelift/codegen/src/isa/aarch64/abi.rs#L1041-L1045
LoadExtName always get lowered and the page base + page offset reloc:
https://github.com/bytecodealliance/wasmtime/blob/e56ffd77f1fb2240e163b7f840f8c4e728c98434/cranelift/codegen/src/isa/aarch64/inst/emit.rs#L3165-L3185
That type of reloc needs to be 8 byte aligned, however functions (at least on Windows, not sure about other platforms) aren't guaranteed to be 8 byte aligned, thus the linker complains.
When I look at code generated by LLVM, I see branch26 relocs being emitted for called functions, which seems to be generated by this:
https://github.com/llvm/llvm-project/blob/18ee00323f5fc22d32a74b636fcac84e697241f3/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp#L459-L478
I'm not entirely sure how to handle implementing this in wasmtime with the abstraction between abi.rs and emit.rs.

And, just to confound things, sometimes LLVM will generate a page base + page offset for a call: https://godbolt.org/z/3c7ce1vP4

Is there a relocation that doesn't need to be 8-byte aligned we could use? I'm a bit surprised by that godbolt link because
example::call_yep::h3f70d43527bee11a:
 0:     str     x30, [sp, #-16]!
 4:     adrp    x8, __imp_yep
 8:     ldr     x8, [x8, :lo12:__imp_yep]
 c:     blr     x8
10:     adrp    x8, __imp_X
14:     ldr     x8, [x8, :lo12:__imp_X]
18:     ldr     w8, [x8]
1c:     madd    w0, w8, w8, w0
20:     ldr     x30, [sp], #16
24:     ret

Here adrp falls on both an 8-byte and non-8-byte aligned boundary (0x4/0x10). How does that work if it's required to be 8-byte aligned? Or is the assembler hiding a nop instruction or something like that?
If we need these relocations to be 8-byte aligned in Cranelift it would probably look like:

Guarantee all functions are 8-byte-aligned (I think some are 4-byte-aligned right now)
When emitting this relocation if the current offset is 4-byte aligned then emit a nop to make it 8-byte aligned.

I'm mostly surprised that LLVM doesn't seem to be doing anything with nops but from what you're saying it should work?

Sorry, bit of confusion, the target of the reloc needs to be 8 byte aligned, not the reloc or consuming instruction.

Aha that makes more sense! (I should also read more carefully...)
This might be as simple as updating this value? That could perhaps have a comment for now saying only Windows so far requires 8-byte alignment but it's easier to bump all platforms to 8-byte so that's why it's unconditionally a minimum of 8 for now.

That helps: it at least means that any function in the current compilation can be the target of a reloc.
But I'm also seeing the linker complain about Win32 functions and parts of the CRT.

Oh dear sorry I'm being particularly slow at understanding this, you've already told me that historically as well...
Is this perhaps something related to dllimport or something like that? Where memcpy should be imported via dllimport and some slightly different form of relocation is something the linker handles when fixing it up? Otherwise I'll probably step aside as I'm probably out of my depth here...


minor typo fixes

Found and fixed some minor typos in the rustc-guide. Thank you.

@JOE1994 looks good, please fix what @JohnTitor have mentioned and I will merge it.


Support for going through IAM VPE endpoint

Check that the logic at https://github.com/terraform-ibm-modules/terraform-ibm-iam-account-settings/blob/afe0609e15e58e5aed854633e5a8a6e4a993942a/main.tf#L39 can work through the IAM VPE endpoint. In therory, it should, but this requires validation.

Also expose the local as a variable at https://github.com/terraform-ibm-modules/terraform-ibm-iam-account-settings/blob/f65b35bd55431a0d72e2a8a22b1a31dff3708d59/main.tf#L55

We already have an internal issue to migrate to ibm provider. Will get it worked on as a priority. This should remove the need to have to provider endpoint types here

restapi provider has been removed in https://github.com/terraform-ibm-modules/terraform-ibm-iam-account-settings/pull/214 and replaced by IBM provider. Closing this


Hang on pretty print of options in 1.15.0-rc

I just tried out the latest release candidate, and it seems to hang when pretty printing the options. I run the program and it just sits there, seemingly doing nothing.
When I comment out this line, which the stacktrace points to, the program continues as expected for me: https://github.com/github-changelog-generator/github-changelog-generator/blob/72452a1315e1126f3468069ff7d4dfbcefe71ab2/lib/github_changelog_generator/options.rb#L99
This is the stacktrace pointed out when I invoke Ctrl+C:
Using these options:
^CTraceback (most recent call last):
	12: from /usr/local/bin/github_changelog_generator:23:in `<main>'
	11: from /usr/local/bin/github_changelog_generator:23:in `load'
	10: from /usr/local/lib/ruby/gems/2.5.0/gems/github_changelog_generator-1.15.0.pre.rc/bin/github_changelog_generator:5:in `<top (required)>'
	 9: from /usr/local/lib/ruby/gems/2.5.0/gems/github_changelog_generator-1.15.0.pre.rc/bin/github_changelog_generator:5:in `new'
	 8: from /usr/local/lib/ruby/gems/2.5.0/gems/github_changelog_generator-1.15.0.pre.rc/lib/github_changelog_generator.rb:28:in `initialize'
	 7: from /usr/local/lib/ruby/gems/2.5.0/gems/github_changelog_generator-1.15.0.pre.rc/lib/github_changelog_generator/parser.rb:29:in `parse_options'
	 6: from /usr/local/lib/ruby/gems/2.5.0/gems/github_changelog_generator-1.15.0.pre.rc/lib/github_changelog_generator/options.rb:99:in `print_options'
	 5: from <internal:prelude>:149:in `pp'
	 4: from /usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/delegate.rb:85:in `method_missing'
	 3: from /usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/delegate.rb:85:in `call'
	 2: from /usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
	 1: from /usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/delegate.rb:85:in `method_missing'
/usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/delegate.rb:85:in `call': Interrupt

The version I have locally:
$ github_changelog_generator --version
Version: 1.15.0-rc

This may be a duplicate of https://github.com/github-changelog-generator/github-changelog-generator/issues/663

Please deactivated all notifications thanks
Larry w strickland
On Thu, Sep 20, 2018, 03:03 Olle Jonsson<EMAIL_ADDRESS>wrote:

Closed #668
https://github.com/github-changelog-generator/github-changelog-generator/issues/668
via a92b913
https://github.com/github-changelog-generator/github-changelog-generator/commit/a92b91336c5cb62b170abe2784916b7e998005f8
.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/github-changelog-generator/github-changelog-generator/issues/668#event-1856833112,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Ao7Bv7lI2SCj1x-hakSHk8x7rAlWuRZzks5ucz24gaJpZM4V-HeZ
.


Not able to associate consumer with a group

I was evaluating kafka-client for one of our new project. While testing I found that i cannot associate consumer with a group.
If this is not possible then how could i use kafka as queue.
Apart from that isn't there high level API available?. I could not find such. I wanted to use zookeeper instead of using kafka broker (for instance with consmer).
Thanks In Advance
programmer-pragmatic

Hi, this sounds great! Is there by any chance an example where multiple consumers are sharing the same consumer group?
many thanks,
Christoph

The consumer is pretty basic at the moment.  I was primarily focusing on the producer, and getting that working better.  There is a pull request from aNutForAJarOfTuna, which looks like he does some work implementing a higher level consumer, but I have not pulled anything in to this project yet.  Ill create a new issue for creating a higher level consumer.

Hi James,
is there a way to consume from a topic lets call it topicA, and stop the consumer after the initial read.  I am doing this on start up of my application, on start i consume topicA to get the offsetposition for my mainTopic,  how can i stop topicA after the initial read?


How to implement a security token that is passed in the URL path (not via querystring)?

I'm looking to implement security with an API key that is passed in a path variable.
FastAPI has support for API keys in a query parameter, a header or a cookie.
I have looked specifically at the query parameter option, but in all cases the API key  needs a name, which a path parameter doesn't have. It seems that query parameter will not work for a variable in the path.
I have also looked at routers and middleware, but I'm unsure if that's the way to go, if I'm not over-complicating things that way.
The bottom line is that for each call I need to look at the URL and check one of the path parameters there to match a valid API key. What would be the best way to solve that in FastAPI?

@ricosuave73 I haven't tested this, but this is what i would do:
Define the path parameter for the api key in the endpoint.
Define the Security Class something like:
class PathAPIKey(SecurityBase):
    type_ = Field(SecuritySchemeType.apiKey, alias="type")
    in_: str = Field(..., alias="in")
    name: str

class PathSecurityBase(SecurityBase):
    def __init__(
        self, auto_error: bool = True
    ):
        self.model = PathAPIKey(in="Path")
        self.auto_error = auto_error

    async def __call__(
        self, request: Request
    ) -> Optional[MyAuthorizationCredentials]:
        apikey = request.path_params['apikey']
        # Validate it here.

        if not_valid:
            if self.auto_error:
                raise HTTPException(
                    status_code=HTTP_403_FORBIDDEN, detail="Not authenticated"
                )
            else:
                return None
        return MyAuthorizationCredentials(who=what)

Make sure you add this as a dependency of the endpoint.  Because you have full access to the underlying request, you have full access to the path and can make any decisions based on that you like.
It is true that OpenAPI only defines apikeys to be query, header or cookie.  But you could set in to Path and probably the only thing that will mind is an OpenAPI Validator.  I would wager SwaggerUI would just display it.  So in the proposed solution above Imade a version of class APIKey(SecurityBase) which defines the normal APIKey security, and just let in_ take an arbitrary string and not an enum and use that for the model instead of the normal APIKey Model.

Thanks, @stevenj ,
I'm kind of confused though:

Define the path parameter for the api key in the endpoint.

Do you mean in every endpoint? Because that would kind of beat the purpose...
It would be nice if that part of the endpoint is handled somewhere centrally.

Thanks for the help here @stevenj ! 👏  🙇
If you solved the original problem, then you can close this issue @ricosuave73  ✔
Otherwise, please add a self-contained, minimal, reproducible, example that I can copy-paste to replicate what you have and to understand your intention.

Sorry for the long delay! 🙈  I wanted to personally address each issue/PR and they piled up through time, but now I'm checking each one in order.


Running script Graph_ODFB_shared_files.ps1

Hello,
All set correct for permissions, no errors while -verbose, still result is empty CSV.
Any advice on what to check, please?

A bit hard to troubleshoot without providing any details. My best bet would be that either permissions are not actually set correct, or you havent renewed the token after making permission changes.


how to upgrade qnn to <IP_ADDRESS>531 to support v79

model.layers.0.self_attn.ires_split-00_view_is QNN INT8 op
0.0ms [ ERROR ]   Tensor name InceptionV3_InceptionV3_Conv2d_1a_3x3_Conv2D_stride already exists in the graph.
[ ERROR ] QnnModel::addTensor() Creating tensor for node: model.layers.0.self_attn.k_proj.linearint8, tensorName: InceptionV3_InceptionV3_Conv2d_1a_3x3_Conv2D_stride.
[ ERROR ] QnnModel::addNode() addTensor() failed for tensor param InceptionV3_InceptionV3_Conv2d_1a_3x3_Conv2D_stride on node model.layers.0.self_attn.k_proj.linearint8.
[ ERROR ] qnnModels_[qnnModelIndex_].addNode( QNN_OPCONFIG_VERSION_1, name.c_str(), packageName.c_str(), nodeType.c_str(), paramsPtr, params.size(), inputTensorNames, inputTensorNames.size(), outputTensors.data(), outputTensors.size() ) expected MODEL_NO_ERROR, got MODEL_TENSOR_ERROR
when build htp_v79 using qnn <IP_ADDRESS>531 with latest Hexagon SDK(<IP_ADDRESS>), there is above tensor name conflict issue. How can we fix it for qnn upgrading?

Hi,
Thank you for your attention on the mllm and for providing this issue. In the earlier version of QNN 2.20, it was possible for LinearINT8 parameter names to have duplicates. However, it seems this is no longer allowed starting with version qnn 2.23.
To resolve this issue, you can reassign a unique name to InceptionV3_InceptionV3_Conv2d_1a_3x3_Conv2D_stride by renaming it according to the linear naming convention. For instance, you could rename it to something like layer.0.q_proj.InceptionV3_InceptionV3_Conv2d_1a_3x3_Conv2D_stride.
Additionally, we are currently working on updates to support htp_v79, which will include the latest versions of QNN and Hexagon SDK (<IP_ADDRESS>). Stay tuned for more updates.
Thank you for your patience and understanding. If you have any more questions or need further assistance, feel free to ask!

Thanks for your response and comments. But even we rename it with liner naming convention like layer.0.q_proj.InceptionV3_InceptionV3_Conv2d_1a_3x3_Conv2D_stride, the issue was still reproduced as below:
model.layers.0.self_attn.ires_split-00_view_is QNN INT8 op
0.0ms [ ERROR ]   Tensor name layer.0.q_proj.InceptionV3_InceptionV3_Conv2d_1a_3x3_Conv2D_stride already exists in the graph.
[ ERROR ] QnnModel::addTensor() Creating tensor for node: model.layers.0.self_attn.k_proj.linearint8, tensorName: layer.0.q_proj.InceptionV3_InceptionV3_Conv2d_1a_3x3_Conv2D_stride.
[ ERROR ] QnnModel::addNode() addTensor() failed for tensor param layer.0.q_proj.InceptionV3_InceptionV3_Conv2d_1a_3x3_Conv2D_stride on node model.layers.0.self_attn.k_proj.linearint8.
[ ERROR ] qnnModels_[qnnModelIndex_].addNode( QNN_OPCONFIG_VERSION_1, name.c_str(), packageName.c_str(), nodeType.c_str(), paramsPtr, params.size(), inputTensorNames, inputTensorNames.size(), outputTensors.data(), outputTensors.size() ) expected MODEL_NO_ERROR, got MODEL_TENSOR_ERROR


add which district info to friends list

The client doesn't have access to this information, so toolbox can't grab it :(

Oh ok just wondering since discord has info

Discord has info about your own character yeh, and maybe there might be a way of linking users in discord to their character names and then on to your friend list, but its a lot of code debt for something that would be a bit too flaky to be reliable


iOS login problem

Login failed. I'm not sure why. But left me with the back link hiding under the iOS keyboard

Sorry, can't figure out how to attach my screenshot

 - figured it out

what was it?

I figured out how to attach the login screen. back link was still hidden behind the keyboard I couldn't make go away

’something happened that we do not expected‘  when logining with google


Add FSH <-> JSON conversion to Canary

Background: https://www.npmjs.com/package/fsh-sushi
Currently there is on online resource to convert FSH files to and from JSON on the web: https://fshschool.org/FSHOnline/#/
However, Canary lacks this feature. Please add a menu item to Canary to provide the same functionality. It is important we have this within Canary, because for VRDR IG validation purposes, we want to do other post-processing in Canary such as updating the InstanceOf field and adding the component type instead of numbered components.
(copied from https://github.com/nightingaleproject/canary/issues/121)

Completed via #180


Add Ctrlz support to Pilot (discovery & agent).

This is a straight-up integration of CtrlZ to Pilot.

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: andraxylia
Assign the PR to them by writing /assign @andraxylia in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

pilot/OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@costinm,
I tried looking at envoy/v2/ads.go but couldn't figure out what you think should be changed. Let me know and I can add.
Also, I  considered using the monitoring port as the default, but wouldn't it conflict? It looks like there is a listener being initialized already on that port. I opted to do the simplest integration possible.

@ozevren: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
6d18715937d7760c2b5728a3b9cd31ac7dbb42d5
link
/test istio-unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ozevren: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-bookInfoTests-v1alpha3.sh
1ba7c2b410a49303574dc86067e84787e7461f2e
link
/test e2e-bookInfo-envoyv2-v1alpha3

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

I'll make the changes to ads ( to use the new logging ). But please remove ctlrz from agent and bootstrap.

And it should go to 0.8 I think. We'll cut another release candidate probably - it's ok if it doesn't make it in today build. It adds a lot more visibility into bad state/settings in pilot, I would like testers to have access to it.

@ozevren: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-bookInfoTests-v1alpha3.sh
1ba7c2b410a49303574dc86067e84787e7461f2e
link
/test e2e-bookInfo-envoyv2-v1alpha3

prow/istio-pilot-e2e.sh
1ba7c2b410a49303574dc86067e84787e7461f2e
link
/test istio-pilot-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

I already removed it from agent. If I remove it from bootstrap, then I won't be able to attach configz stuff easily. That taps into the cached store.
If you have a fundamental objection to keeping the code in bootstrap, I can pass a lambda (or something similar) as part of args/NewServer call to wire things up. Otherwise, it is simpler to keep ctrlz startup in bootstrap.

I can do a cherry-pick to 0.8 once this lands, btw.

I can do a cherry-pick to 0.8 once this lands, btw.

it's probably best/easier to just click edit at the top of this PR and change the base to be release-0.8 - most development should happen in that branch and will get mass merged back to master regularly (like #5590 )


Introduce parameters with spaces

This PR resolves #731, i.e. one can now pass parameters including spaces to an html function by encapsulating it in "...".
To test define
function hfun_pcheck(params)
  return """

$(join(params,"

"))

"""
end

and run in an .md file for example
{{pcheck abc "abd ref h"}}

then you get the following unnumbered list.

Thanks a lot for this, would you mind the following small bit of refactoring?
else
    # merge \"abc def\" (issue #731)
    ps = split_hfun_parameters(m.captures[2])
end

in the same file, at the end,
function split_hfun_parameters(s)
    matches = [e.match for e in eachmatch(HFUN_PARAMS_PAT, s; overlap=false)]
    return strip.(matches, '\"')
end

in src/regexes
"""
    HFUN_PARAMS_PAT

Splits the parameter string of a hfun based on whitespaces but allowing single quoted strings
with whitespace not to be split.
"""
const HFUN_PARAMS_PAT = r"([^\s\"']+)|\"([^\"]*)\""

you could then add a simple test in test/converter/html/html2.jl at the end:
# https://github.com/tlienart/Franklin.jl/issues/731
@testset "hfun strings" begin
    a = Franklin.split_hfun_parameters(strip("""
        "Hello to you" my "julia friends" and "all the others"
        """))
    @test a[1] == "Hello to you"
    @test a[2] == "my"
    @test a[3] == "julia friends"
    @test a[4] == "and"
    @test a[5] == "all the others"
end

Thanks a lot for looking into this, I think it's quite nice!

PS: quite unrelated but if you want to avoid your list looking too widely spaced because the Julia Base Markdown module adds
 in every
, an easy way is to add li > p {margin: 0} in your CSS.

Ah I was already wondering about all the wild
s apprearing. Thanks for the fix. Will add your changes in a minute (just doing a little larger test in my project – it really makes my code and especially my data much much nicer.

You can, by the way, group @testsets into @testsets (even one global one) to have reduced output when running tests. But locally all tests are running here.

You can, by the way, group @testsets into @testsets (even one global one) to have reduced output when running tests. But locally all tests are running here.

thanks yes I know but I prefer the full output :) thanks for the rest, will patch-release this


psl.1 manpage is neither shipped nor installed

tools/psl.1 is not only not installed, but it is completely missing from the dist tarball.  This can be fixed by adding the following to tools/Makefile.am:
dist_man_MANS = psl.1

Thanks. Fixed in branch 'develop'.


database: fix an unwrap() in tx_commit

It was a legit error -> the transaction doesn't have to be active when commit() is called on it, and the right behavior in that case is to return a TxTerminated error.
Fixes https://github.com/penberg/tihku/issues/59

Thanks @tpisto for reporting!


My packaged games takes a long time to load

I don't like how my uploaded game on newgrounds takes so much time to load the game, is there a way to fix this?

if you post the link we can possibly help you figure out why

Quote reply
Reference

https://www.newgrounds.com/portal/view/937495
https://www.newgrounds.com/portal/view/937499

For one you should probably not disable the progress bar so people know that it's loading...
Your project is 5MB and the packager itself takes about 1MB, so you have to wait for it to load around 6MB. That's not that unreasonable. Most of your 5MB is taken up by the two background songs which are 2MB each

If it's any help you may be able to remove some assets and then have them "Load in the background" by hosting the assets on some sort of github repository and then loading them "In the background" each time the project starts. If want you could even have them download once and then have them stored in the local storage extension, though according to the documentation the local storage is limited to 5 MB, so be careful. Just keep in mind that you're not removing loading time, just reallocating it to once the game is actually run


Using environment variables %env(...) in sentry.yaml does not work

How do you use Sentry?
Sentry SaaS (sentry.io)
SDK version
4.9.0
Steps to reproduce
We exceeded our Sentry quota after some unusually high usage, so we started investigating. Looks like it started right when we upgraded sentry/sentry-symfony from v4 to v5. We're using environment variables in our sentry.yaml file like so:
    sentry:
        tracing:
            enabled: '%env(bool:SENTRY_TRACING)%'
        options:
            traces_sample_rate: '%env(float:SENTRY_PHP_TRACES_SAMPLE_RATE)%'
            ...

The variables are in our .env file:
SENTRY_TRACING=false # or true for production
SENTRY_PHP_TRACES_SAMPLE_RATE=0 # or 0.01 for production

This didn't actually turn off tracing, which is unfortunate since we only want it turned on in production, and all of our other environments like dev/testing/staging were supposed to have it turned off.
The root cause is in src/DependencyInjection/SentryExtension.php which doesn't receive the fully compiled variables. Here's a hackish solution, with some var_dumps to understand what's going on:
    private function registerTracingConfiguration(ContainerBuilder $container, array $config): void
    {
        // Outputs "env_da73b6f612a932f0_bool_SENTRY_TRACING_57d3ad6b7e96da0e8f15dbe2298f150b"
        // When evaluated, this string is true-ish, so Sentry enables tracing.
        var_dump($config['enabled']);

        // We need to resolve any parameters first.
        // Symfony doesn't support "bool:" in this stage, so we remove it and cast it to bool manually.
        $enabled = $container->resolveEnvPlaceholders(str_replace($config['enabled'], 'env(bool:', 'env('), true);
        if (is_string($enabled)) {
            $enabled = strtolower($enabled) === 'true';
        }

        // Outputs false.
        var_dump($enabled);

        $container->setParameter('sentry.tracing.enabled', $enabled);

        if (!$enabled) {
            $container->removeDefinition(TracingRequestListener::class);
            $container->removeDefinition(TracingSubRequestListener::class);
            $container->removeDefinition(TracingConsoleListener::class);

            return;
        }

        $container->getDefinition(TracingConsoleListener::class)->replaceArgument(1, $config['console']['excluded_commands']);
    }

Same thing as a diff:
    private function registerTracingConfiguration(ContainerBuilder $container, array $config): void
    {
+        $enabled = $container->resolveEnvPlaceholders(str_replace($config['enabled'], 'env(bool:', 'env('), true);
+        if (is_string($enabled)) {
+            $enabled = strtolower($enabled) === 'true';
+        }
+
-        $container->setParameter('sentry.tracing.enabled', $config['enabled']);
+        $container->setParameter('sentry.tracing.enabled', $enabled);
+
-        if (!$this->isConfigEnabled($container, $config)) {
+        if (!$enabled) {
            $container->removeDefinition(TracingRequestListener::class);
            $container->removeDefinition(TracingSubRequestListener::class);
            $container->removeDefinition(TracingConsoleListener::class);

            return;
        }

        $container->getDefinition(TracingConsoleListener::class)->replaceArgument(1, $config['console']['excluded_commands']);
    }

The same thing should be done for registerDbalTracingConfiguration, registerTwigTracingConfiguration, registerCacheTracingConfiguration, and probably more.
Similarly, I believe that the sample rate was parsed as 1 instead of our SENTRY_PHP_TRACES_SAMPLE_RATE=0.01. Might be a duplicate of #877. Here's our usage after we upgraded to v5 on September 18:

Expected result
enabled: '%env(bool:SENTRY_TRACING)%' with SENTRY_TRACING=false should fully disable tracing.
traces_sample_rate: '%env(float:SENTRY_PHP_TRACES_SAMPLE_RATE)%' with SENTRY_PHP_TRACES_SAMPLE_RATE=0.01 should set the sample rate to 0.01.
Actual result
enabled: '%env(bool:SENTRY_TRACING)%' with SENTRY_TRACING=false sets tracing on.
traces_sample_rate: '%env(float:SENTRY_PHP_TRACES_SAMPLE_RATE)%' with SENTRY_PHP_TRACES_SAMPLE_RATE=0.01 sets tracing to 1.

That is interesting, I wouldn't have expected us to do much special handling to allow for using env variables. I'll look into this! Appreciate the detailed report!

The problem is indeed as indicated. However it seems like we are using the values "too early" (as you mentioned) because in that stage of the container compilation env vars are not properly processed as it's meant as a static build step and env vars are resolved at runtime.
We can work around this like you are proposing but that feels a bit odd to do, it is a possibility though. I was hoping maybe @ste93cry or @Jean85 might have an excellent suggestion on how to resolve this or that the proposed solution might be the best way to go here however that does feel like re-inventing the environment compilation a bit...

IIRC there's a standard solution for this kind of issues, and Symfony itself had to fix it in multiple places and multiple "standard" bundles configurations when they transitioned to using env vars, but I can't recall it. I would have to dig in the history of the Doctrine bundle or the Framework Bundle...

The "issue" is that we are using the values in the "build" (?) step of the container. Here the variables are not yet resolved (which makes sense). It looks like we might be able to reimplement parts of this ourselves but fundamentally the way we configure the services makes it impractical to use dynamic variables. I have also not been able to find a good example yet elsewhere in other bundles.


[RESOLVED] Interface eth0(): High error rate (>2 for 5m)

Problem started at 12:21:29 on 2023.08.09
Problem name: Interface eth0(): High error rate (>2 for 5m)
Host: S100-Primario
Severity: Warning
Operational data: errors in: 1, errors out: 0
Original problem ID: 35198
Event details in Zabbix: http://<IP_ADDRESS>/tr_events.php?triggerid=23483&eventid=35198

Problem has been resolved in 9m 0s at 12:30:29 on 2023.08.09
Problem name: Interface eth0(): High error rate (>2 for 5m)
Host: S100-Primario
Severity: Warning
Original problem ID: 35198


What happened to help?

There's no help link anymore. and the Discord link is broken.

There's no help link anymore. and the Discord link is broken.

Sorry for the confusion. The help page was out of date (using the old syntax) - it's been replaced by the Syntax Reference available directly from the editor (as long as you're using the graph-selector syntax)
I just found out today that Discord links expire by default. There's a pull request open with a Discord link that won't expire. Let me grab it and post it here.

@mbierman Working Discord link: https://discord.gg/wPASTQHQBf
Sorry for the confusion!

Fabulous! Might be nice to put a help link back in the menu so it isn't easily missed. Thanks again.

@afrancht Are you sure? https://discord.gg/wPASTQHQBf says it's set to never expire.

Closing this! Feel free to open another PR if there are problems with discord link.


chore(scripts): add a script for updating chart/README.md

Which issue(s) this PR fixes:

Issue #
What this PR does / why we need it:
Special notes for your reviewer:
Additional documentation or context

After merging this PR, just noticed that as this is for the head branch, can we make the image tags for our components as branch-based?
For example, for 1.7.x, longhorn-manager should be longhorn-manager:v1.7.x-head? Also, we need to check if this change might affect our QA regression testing.
cc @derekbit @longhorn/qa

The script only updates the chart/README.md. I think we should only execute this script in the CI flow to make the longhorn-images.txt and README.md consistent. The update won't affect the QA regression testing.

yeah, true. only readme.


switchNetwork from WagmiCore does not work on mobile

Link to minimal reproducible example
below
Summary
Description:
The switchNetwork function should add the network if it does not exist and switch to it. This behavior works correctly on desktops, but when using an iPhone with MetaMask installed (same behavior with trustwallet), the network is not added.
Steps to Reproduce:
Open the index.html file.

create index.html and add the following code snippet:  inside the body of
Add <script type="module" src="'web3modal.js"/> inside the head tag of index.html
create web3modal.js file and add the code below inside
host the page somewhere and open it on the mobile (iPhone).

import {
  EthereumClient,
  w3mConnectors,
  w3mProvider,
  WagmiCore,
  WagmiCoreChains,
  WagmiCoreConnectors,
} from "https://unpkg.com/@web3modal/ethereum";
import {
  EthereumClient,
  w3mConnectors,
  w3mProvider,
  WagmiCore,
  WagmiCoreChains,
  WagmiCoreConnectors,
} from "https://unpkg.com/@web3modal/ethereum";

// import UniversalProvider from "https://unpkg.com/@walletconnect/universal-provider";

import { Web3Modal } from "https://unpkg.com/@web3modal/html";

const { mainnet, polygon, polygonMumbai, avalanche, arbitrum } =
  WagmiCoreChains;
const {
  configureChains,
  createConfig,
  switchNetwork,
} = WagmiCore;

// 1. Define chains
const chains = [mainnet, polygon, polygonMumbai, avalanche, arbitrum];

const projectId = "your_project_id";

const { publicClient } = configureChains(chains, [w3mProvider({ projectId })]);
const wagmiConfig = createConfig({
  autoConnect: true,
  connectors: w3mConnectors({ projectId, version: 1, chains }),
  publicClient,
});
const ethereumClient = new EthereumClient(wagmiConfig, chains);
const web3modal = new Web3Modal(
  { projectId, walletConnectVersion: 2 },
  ethereumClient
);
web3modal.subscribeModal((newState) => {
  console.log(newState);
});
web3modal.subscribeEvents((newState) => {
  const { name } = newState;
  if (name === "ACCOUNT_CONNECTED") {
    switchNetwork({
      chainId: 80001,
    })
      .then((chain) => {
        console.log(chain);
      })
      .catch((e) => {
       console.error(addError);
      });
  }
  console.log(newState);
});

List of related npm package versions
I am using just html and vanilla javascript and importing the libraries inside the file  web3modal.js which is imported on head of index.html as script type module
import {
  EthereumClient,
  w3mConnectors,
  w3mProvider,
  WagmiCore,
  WagmiCoreChains,
  WagmiCoreConnectors,
} from "https://unpkg.com/@web3modal/ethereum";
import {
  EthereumClient,
  w3mConnectors,
  w3mProvider,
  WagmiCore,
  WagmiCoreChains,
  WagmiCoreConnectors,
} from "https://unpkg.com/@web3modal/ethereum";

// import UniversalProvider from "https://unpkg.com/@walletconnect/universal-provider";

import { Web3Modal } from "https://unpkg.com/@web3modal/html";

Posted on wagmi repo:
https://github.com/wagmi-dev/wagmi/issues/2632

Sorry for delayed response. If you use latest wagmi and web3modal packages (you might want to add explicit versioning to your cdn scripts). Calling wagmi's switch network will add new ones to the wallet, but only if they support wallet_addEthereumChain method.
I know MetaMask does, not sure about trust wallet. Also note, metamask currently has few issues around chain switching and they are working on next release to address this. If wallet does not support that switch method, it will still switch to a chain if it wass approved during connection (With WalletConnect v2 you connect to multiple chains at once) or will error.

Just to check: So web3modal itself doesn't have any method that helps to do chain switching, right? That's up to the user to implement using Ethers?

We added one
@svenvoskamp is it out yet?


anyway to have grub use the shim loader for my windows boot manager entry?

is there any way to have grub use the shim loader for my windows boot manager entry instead of the normal microsoft one on my linux dual boot

As far as HackBGRT is concerned, you can select the option to install only files (without creating a new boot entry). This installs shim as /EFI/HackBGRT/loader.efi and HackBGRT as /EFI/HackBGRT/grubx64.efi.
Then you should be able to chainload with GRUB2 like this:
menuentry "Windows with HackBGRT" {
        insmod part_gpt
        insmod chain
        set root='(hd0,gpt1)'
        chainloader /EFI/HackBGRT/loader.efi
}

Refer to GRUB and/or your OS documentation for further instructions.


Changed reply function?

Is there a new update where you changed the reply function?
I use e.message.reply(...) but I doesn't send anything. The exact same code worked 15-20 hours ago.
Also, I don't get any error message or crash and the code is being ran: I have a console.log(...) in the same block.
Sorry if I'm being too specific.

Apparently my token was automatically changed for some reason.

But updating token information didn't fix it...

Discord started to force prefixed bot tokens recently. You're probably running it on an old version of the library, automatic bot token detection was introduced 3 weeks ago in version 0.8.0.
If updating is not an option right now, in older versions (0.4.0+) you should be able to specify it manually with:
var client = new Discordie();
client.bot = true;

I started making the bot yesterday.

Thank you.
Using client.bot = true actually fixed it.
Although I think it's very strange, since it worked all fine yesterday.


Enable auto-preview for images created with makelive

See this Reddit post
I'm literally running around the house with excitement that I finally have a robust way to create Live Photos from clips of video and photos I control, from my Mac
I'm a wedding videographer who has dreamt for years of being able to turn clips of my films into live photos for my clients. your tool allows me do do so while maintaining the full resolution of the video
and its going to allow me to batch process hundreds of photos and videos at once and quickly turn them into legitimate live photos
I just have one little question,
with Live Photos taken from and iPhone, as you swipe through the photos app, you get a hint of motion indicating that each picture is a live photo
in my testing so far, this doesn’t happen with the live photos ive created through your tool, no doubt this is because the Live Photo has no way of knowing which frame of video is the hero image that has been supplied
is there a way to tell the tool that the jpeg im using is exactly the centre frame? so that I can get that hint of motion?
also so that the live photos I create can be used on iPhone lock screens with all the benefits that Live Photos have? where they transition from motion to still?
thank you a million times for this tool though. I'm truly ecstatic right now

I took a peek at some Live Photos and my guess is these two are the keys:
In the HEIC: MakerNotes:LivePhotoVideoIndex=8595185700
In the QuickTime: QuickTime:LivePhotoAuto=1
My guess is the LivePhotoVideoIndex tells Photos where in the QuickTime to start playing. I changed this to 0 and it still works but does appear to have a discontinuity (video started from beginning causing a jump in the preview). However, when I removed this tag on my phone (iOS 17.6.1) I still got the video when swiping. So need to explore more. I have no idea how to determine the correct offset which might require in depth knowledge of QuickTime format.


Remove duplicated entries from Equipment table, indices 226-250

Unclear how these were entered, since in some cases they are exact
duplicates, but in other cases the weight of the duplicate item is 1/10
that of the entry found in the SRD.

That's super weird.


[Feature Request]: New filters for searching Internship

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
The internship searching section should have a filter option to search for jobs/internships on the basis of
-Industry sector
technology
Finance
Healthcare
Marketing
Education
Others
-Role/Position:
Software Development
Data Science
Marketing
Sales
Design
Content Writing
Others
Use Case
The filter options for industry sector and role/position in the internship search section are designed to help users quickly and efficiently find internships that match their specific career interests and aspirations. e.g.
A user interested in a particular industry can filter internships based on the sector they wish to work in. For instance, a finance degree student might be specifically looking for internships in the finance sector.
Benefits
No response
Add ScreenShots
No response
Priority
High
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC'24 contributor
[X] I have starred the repository

Hii @PSS2134  can I get some more time, sorry for the delay, will complete as soon as possible


Small 2D and BRT fixes

Changes

Add notify api running calls as soon as the flow runs start
czi flow run uses async/await. Wait for prefect future results before sending it to async calls
Remove subflow for small dm conversion flow
Revert Completion/Failed to original success/error api calls on notify-api-completion
Refactor BRT flow: ; Increase cluster size for BRT workflow to be able to handle large number of inputs.
post workflow tasks uses .wait and .get_state to make sure the upstream tasks have completed (not necessarily reached a terminal state).

This PR doesn't introduce any:

[x] Binary files
[x] Temporary files, auto-generated files
[x] Secret keys
[x] Local debugging print statements
[x] Unwanted comments (e.g: # Gets user from environment for code os.environ['user'] )

This PR contains valid:

[ ] tests

Todo: Remove duplicate functions in utils.py for bf2raw_gen_zarr and zarr_build_multiscales.


Add initial docs for Audit Logs

Proposed changes
Adds initial support for audit logs docs
Unreleased project version (optional)

Related issues (optional)

Looking good. The tag appears twice on the left though (once as Audit Logs and once as AuditLogs). This seems to be because the tag is called Audit Logs but the paths have tags of AuditLogs

Can I ask what the difference between a namespace and an account is?

Discussed with @FranchommeE. Merging the PR so we can publish the Audit Log API doc today.


python310Packages.stripe: 3.0.0 -> 3.1.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python310Packages.stripe is: "Stripe Python bindings"
meta.homepage for python310Packages.stripe is: "https://github.com/stripe/stripe-python"
meta.changelog for python310Packages.stripe is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
Warning: a test defined in passthru.tests did not pass
found 3.1.0 with grep in /nix/store/57mrx1fv2vi88jzs9pw2n3xb9g173p8n-python3.10-stripe-3.1.0
found 3.1.0 in filename of file in /nix/store/57mrx1fv2vi88jzs9pw2n3xb9g173p8n-python3.10-stripe-3.1.0

Rebuild report (if merged into master) (click to expand)

12 total rebuild path(s)

6 package rebuild(s)

6 x86_64-linux rebuild(s)
6 x86_64-darwin rebuild(s)

First fifty rebuilds by attrpath
gigalixir
python310Packages.gigalixir
python310Packages.stripe
python39Packages.gigalixir
python39Packages.stripe
sourcehut.metasrht

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/57mrx1fv2vi88jzs9pw2n3xb9g173p8n-python3.10-stripe-3.1.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python310Packages.stripe https://github.com/r-ryantm/nixpkgs/archive/50bb127b0f226ac0a7e0e0dcd78161d8e7fbfbb3.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/57mrx1fv2vi88jzs9pw2n3xb9g173p8n-python3.10-stripe-3.1.0
ls -la /nix/store/57mrx1fv2vi88jzs9pw2n3xb9g173p8n-python3.10-stripe-3.1.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

5 packages built:

gigalixir (python39Packages.gigalixir)
python310Packages.gigalixir
python310Packages.stripe
python39Packages.stripe
sourcehut.metasrht

Maintainer pings

@eadwu @ju1m Maybe one of you wants to take over maintainership?

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

5 packages built:

gigalixir (python39Packages.gigalixir)
python310Packages.gigalixir
python310Packages.stripe
python39Packages.stripe
sourcehut.metasrht

@eadwu @ju1m Maybe one of you wants to take over maintainership?

@dotlambda , I think you got my handle because I've been updating sourcehut.metasrht lately, which depends upon stripe, however I'm no Pythonist, so I might only update stripe if one day it is considered too old by sourcehut.metasrht, so not on a proactive and regular basis. Sorry.

@eadwu @ju1m Maybe one of you wants to take over maintainership?

@dotlambda , I think you got my handle because I've been updating sourcehut.metasrht lately, which depends upon stripe

Indeed.

however I'm no Pythonist, so I might only update stripe if one day it is considered too old by sourcehut.metasrht, so not on a proactive and regular basis. Sorry.

You wouldn't have to keep it up to date, @r-ryantm can help with that. But it's nice to have someone who has an interest in keeping the package in a working state.

You wouldn't have to keep it up to date, @r-ryantm can help with that. But it's nice to have someone who has an interest in keeping the package in a working state.

Understood, however I'm not using the integration of Stripe into Sourcehut so far, so I cannot test it and would not notice a breakage myself.


Use barriers between all blur passes with SSAO and SSIL

Fixes: https://github.com/godotengine/godot/issues/88468
Supersedes https://github.com/godotengine/godot/pull/88548

Thanks!


adding button for dashboard deployment

we're working on a cloud service to deploy notebooks as dashboards, and this package will contain an extension to deploy them with a button.
first, become familiar with building jupyterlab extensions. Then, implement the following

add a toolbar button
clicking the button should run a Python function in the backend to check for an API key (relevant example)
if there is no API key, show a message with a text field so the user can paste it, it should also display a link so a person can sign up and get a key
if an API key is stored, then clicking the button should make a request to a server, this will return a URL (to monitor deployment progress), the URL should be visible to the user
the endpoint will also return a project-id (a string), and it should be stored in the notebook's metadata

Note that the backend services are not working yet, so implement the logic with placeholders.

@tonykploomber: there's a lot of new stuff going on in this repo, so take some time to review it and understand. feel free to ask questions

@edublancas
When you're following the tutorial and ran the command: jupyter labextension develop --overwrite .
Did you see the error from the command line?
AttributeError: module 'hatchling.build' has no attribute 'prepare_metadata_for_build_editable'

@tonykploomber how did you fix it?
I've seen this error, I think I fixed it by downgrading from node 18 to node 16

I just clone the project again and follow the tutorial again and resolve... I don't know what's the root cause about this yet

hey @tonykploomber: this is the workflow I'm thinking. let me know what you think
flowchart TD
    click[Click on deploy notebook] --> api{API key stored?}
    api -- yes --> deploy{First deployment?}
    api -- no --> enter[Ask user to enter API Key]
    deploy -- yes --> confirm[Ask user to confirm deployment] -- yes --> metadata[Get project id from API and store it in the notebook's metadata]
    confirm -- no --> abort
    deploy -- no --> finish
    metadata --> finish[Deploy notebook]
    enter --> valid{valid api key?}
    valid -- no --> valid
    valid -- yes --> deploy

I guess the assumption of this flow is the user can see a interactive table to manage his own API Keys, and choose one of them to paste in the notebook deployment?

yes, we'll deploy a dashboard (something.ploomber.io) where they'll be able to login and manage keys

How we gonna manage the notebook model in backend perspective? Will that be part of projects?

yes, the API will expose an endpoint to upload the notebook

API Key status, we need to think about what if API key has an expiration date or active status in the future, how to add to this flow, and how to design our backend. For now, we can leave it but keep flexibility for this

yes, once we add expiration date to the API keys, we'll need to show errors if the API key is expired or invalid

One important thing that you might want to start exploring is how to write data to the current notebook.
Once the user deploys for the first time, the API will return a project ID, so each new call to "deploy notebook" uses the same project, instead of creating a new one. so you need to find a way to write to the notebook's metadata and to read from it.
notebook's schema is here: https://nbformat.readthedocs.io/en/latest/format_description.html#top-level-structure
we probably want something like this:
{
  "metadata" : {
    "ploomber": {
        "project_id" : "ploomber cloud project id"
    },
    "language_info": {
        # if language_info is defined, its name field is required.
        "name" : "the programming language of the kernel",
        "version": "the version of the language",
        "codemirror_mode": "The name of the codemirror mode to use [optional]"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0,
  "cells" : [
      # list of cell dictionaries, see below
  ],
}

Not sure which is the best/simple approach here. if use typescript for this or implement it in python and trigger it via a server extension (read  below)

we also need to persist the API keys. ploomber-core already implements logic for storing API keys so I think it makes sense to re-use that logic. the way to do this is via a server extension, that allows to call python functions from the frontend via an API: https://github.com/jupyterlab/extension-examples/blob/main/server-extension/jlab_ext_example/handlers.py


C daemon does not work with APKAM atKeys

Describe the bug
Daemon unable to authenticate to atServer if using an APKAM key
Steps to reproduce

First create a new APKAM key for an atSign and confirm it works with Dart SSHNPD Daemon
Start a C daemon with normal atKey then APKAM key and see the failure to authenticate

Expected behavior
APKAM keys should work - important also with the C version of at_activate
Screenshots
root@GL-MT2500:~/.local/bin# ./sshnpd -a @ssh_1 -m @cconstab -d brune2 -k<EMAIL_ADDRESS>@cconstab,
[INFO] 2024-09-07 22:51:31.493833 | sshnpd | Starting main loop
[INFO] 2024-09-07 22:51:31.493899 | E2E TESTS | Monitor .*monitor started
[INFO] 2024-09-07 22:51:31.494022 | refresh_device_entry | Saving username entries for this device
[INFO] 2024-09-07 22:51:32.005456 | refresh_device_entry | Refreshing device info entries for this device
^C[WARN] 2024-09-07 22:51:35.374839 | exit_handler | Received signal: 0
[WARN] 2024-09-07 22:51:35.374879 | exit_handler | Received SIGINT, attempting a safe exit
[INFO] 2024-09-07 22:51:35.466035 | sshnpd | Exited main loop
root@GL-MT2500:~/.local/bin# ./sshnpd -a @ssh_1 -m @cconstab -d brune2 -k<EMAIL_ADDRESS>[ERRO] 2024-09-07 22:51:42.602545 | atclient | recv was "error:AT0401-Exception: pkam authentication failed" and did not have prefix "data:success"
root@GL-MT2500:~/.local/bin#

Smartphones

APKAM key cut with v5.6.1
C daemon (arm64musl Version : 0.1.0 bin that was given to Nate at Digi)

Were you using an atApplication when the bug was found?
No response
Additional context
This may be already fixed in 0.1.11 ?

https://github.com/atsign-foundation/at_c/issues/287
The C SDK currently does not support enrollmentId: checking in the .atKeys file
I can be assigned to this

Just opened 2 PRs
one in at_c: https://github.com/atsign-foundation/at_c/pull/400
one in noports: https://github.com/atsign-foundation/noports/pull/1328

Wow TY


zuul: enable testing with full py36-py310 range

Depends-On: https://github.com/ansible/ansible-zuul-jobs/pull/1265

recheck

recheck


Lazy loading of Stimulus controllers is different from stimulus-bridge

vite-bundle version
6.4.4
vite-plugin-symfony version
6.4.3
your OS, Symfony version, PHP version, Node version
Linux, Symfony 7.0.6, PHP 8.3.6, Node 20.11.0
Description
Hello, first off, thanks a lot for making this bundle :pray: It's incredible.
While migrating multiple apps from Webpack Encore to this bundle, I noticed that the lazy-loading of Stimulus controllers was not working the same way as when using stimulus-bridge.
The excepted behaviour was to only load controllers when they're actually used on the page. This is what was achieved using stimulus-bridge and, as the doc claims, "By default all your controllers are lazy loaded.". However, the lazy-loading of Vite still loads all the controllers, even when they're not actually used.
This isn't a problem for small apps, but for medium to large sized apps, or apps using external bundles, it can be quite troublesome to load so many controllers (and have so many http requests) on a page that would only use one or two controllers at most.
Is this the intended behaviour of this bundle ? Or am I missing something ?
How to reproduce
Add a few controllers in assets/controllers for example.
// assets/bootstrap.js
const app = startStimulusApp();

registerControllers(
  app,
  import.meta.glob('./controllers/*_(lazy)\?controller.[jt]s(x)\?')
)

Then go to a page where you don't use any controllers and inspect the network. All the controller files are still being loaded.
Possible Solution
Check the stimulus-bridge implementation.
What happens here is that controllers marked as "lazy" are not actually registered, but being proxied by a generate-lazy-controller, which checks if any lazy loaded controller is present in the application, and only then loads them.

After investigating a bit, and looking at the source code, it seems that only controllers ending with lazycontroller.* will get properly registered as "lazy". The documentation about this is very confusing and led me to think that they would all be lazy-loaded by default unless I defined eager: true in the glob options.
I ended up making a function to change the name of my controllers to satisfy this constraint, like so :
const transformImportsToLazy = (imports: Record<string, () => Promise<unknown>>) => {
  const lazyImports: Record<string, () => Promise<unknown>> = {};

  for (const [key, value] of Object.entries(imports)) {
    if (key.match(/_controller\.(ts|js)$/)) {
      lazyImports[key.replace(/_controller\.(ts|js)$/, '_lazycontroller.$1')] = value;
    } else {
      lazyImports[key] = value;
    }
  }

  return lazyImports;
};

Maybe the documentation could be updated to better explain this part ?

did you checked that comments aren't removed at building time? I had before a tsconfig which did removed them.

I @YummYume,
indeed there are some differences between the 2 implementations due to the fact that webpack uses commonjs and quickly the es modules
the glob import is lazy by default : https://vitejs.dev/guide/features#glob-import
here is the current behavior
const modules = import.meta.glob('...', { eager: true })
/*
modules === {
  "./controllers/notifier_controller.js": {
    default: <your-stimulus-controller>
  },
  // ...
}
*/
const lazyModules = import.meta.glob('...');
/*
modules === {
  "./controllers/notifier_controller.js": () => Promise.resolve({
    default: <your-stimulus-controller>
  }),
  // ...
}
*/

if you do an import with import.meta.glob('....', { eager: true }) when you call registerControllers your files are already loaded, it is too late to have lazy behavior.
So in this case, at build time, your entry point and all your controllers will be compiled into a single file.
on the other hand if you do an import with import.meta.glob('....') when you call registerControllers your files are not yet loaded.
So in this case, at build time, your entry point and all your controllers will be compiled into separate files.
However, at this time we still have not decided on the behavior to follow when calling the registerControllers function.
The behavior will be dictated by the file name suffix. if it ends with:

_controller.[jt]s(x): the function is called, the promise is resolved and we will have an operation similar to the eager behavior. The import is resolved when the script is executed
_lazycontroller.[jt]s(x): our controller is wrapped in a lazyController which will only resolve the promise when the controller is mounted the first time. The import is only resolved when a DOM element is present for the first time which requests to load the controller.

actually the doc is incorrect compared to my explanation... Before updating it can you give me your opinion. Do you achieve the desired behavior with my explanations? Do you have any suggestions? Could you explain to me in more detail in what context you use your transformImportsToLazy function described above?
// https://github.com/lhapaipai/symfony-vite-dev/blob/ef656db6eaf49d50fcdda62d131a55ec9a307724/src/vite-plugin-symfony/src/stimulus/helpers/base.ts#L49

type LazyModule<M> = () => Promise<M>;
type ImportedModule<M> = M | LazyModule<M>;
type ImportedModules<M> = Record<string, ImportedModule<M>>;

export function registerControllers(app: Application, modules: ImportedModules<ControllerModule>) {
  Object.entries(modules).forEach(([filePath, importedModule]) => {
    const { identifier, lazy } = getStimulusControllerFileInfos(filePath);
    if (!identifier) {
      throw new Error(`Invalid filePath name ${filePath}`);
    }

    if (typeof importedModule === "function") {
      // modules loaded with import.meta.glob('....', { eager: false })
      if (lazy) {
        app.register(identifier, getLazyController(importedModule));
      } else {
        importedModule().then((controllerConstructor) => {
          if (identifier && typeof controllerConstructor.default === "function") {
            app.register(identifier, controllerConstructor.default);
          }
        });
      }
    } else {
      // modules loaded with import.meta.glob('....', { eager: true })
      app.register(identifier, importedModule.default);
    }
  });
}

good afternoon

Hi @lhapaipai, thanks for such a detailed answer !
Back when we were using Webpack Encore, all our controller files ended with _controller.{ts,js}. We had to register multiple controller directories coming from different places, where most of the controllers had the magic comment /* stimulusFetch: 'lazy' */ on them.
However, sometimes, we needed some controllers to not be lazy-loaded, depending on the app. Because, for example, some controllers needed to be connected as soon as possible to listen to events, or be registered as outlets. In this case, we would manually register the controller again, but without the lazy-loading behaviour. Here's how it looked like :
import { definitionsFromContext } from '@hotwired/stimulus-webpack-helpers';
import { startStimulusApp } from '@symfony/stimulus-bridge';
import XController from './controllers/x_controller';

export const app = startStimulusApp(
  require.context('@symfony/stimulus-bridge/lazy-controller-loader!./controllers', true, /\.[jt]sx?$/),
);

app.load(
  definitionsFromContext(
    require.context('@symfony/stimulus-bridge/lazy-controller-loader!$first-alias/controllers', true, /\.[jt]sx?$/),
  ),
);

app.load(
  definitionsFromContext(
    require.context('@symfony/stimulus-bridge/lazy-controller-loader!$second-alias/controllers', true, /\.[jt]sx?$/),
  ),
);

// This controller has already been registered, but we need it non-lazy for this app
app.register('x-controller', XController);

Now, after migrating to Vite, the controllers would be lazy-loaded as you stated above, but they wouldn't be wrapped in the special lazy controller.  Here's the full implementation :
export const transformImportsToLazy = (
  imports: Record<string, () => Promise<unknown>>,
  exclude: string[] = [],
  controllerMatch = /_controller\.(ts|js)$/,
) => {
  const lazyImports: Record<string, () => Promise<unknown>> = {};

  for (const [key, value] of Object.entries(imports)) {
    if (key.match(controllerMatch) && !exclude.includes(key)) {
      lazyImports[key.replace(controllerMatch, '_lazycontroller.$1')] = value;
    } else {
      lazyImports[key] = value;
    }
  }

  return lazyImports;
};

And here's how the app looks like with Vite currently :
import { registerControllers, startStimulusApp } from 'vite-plugin-symfony/stimulus/helpers';

import { transformImportsToLazy } from './vite';

export const app = startStimulusApp();

app.debug = import.meta.env.MODE === 'development';

registerControllers(
  app,
  // @ts-expect-error - controllers are lazy loaded
  transformImportsToLazy(import.meta.glob('./controllers/**/*_(lazy)?controller.[jt]s(x)?'), [
    // This controller should not be lazy-loaded afterall, so we do not convert its name
    './controllers/x_controller.ts',
  ]),
);

registerControllers(
  app,
  // @ts-expect-error - controllers are lazy loaded
  transformImportsToLazy(import.meta.glob('$first-alias/controllers/**/*_(lazy)?controller.[jt]s(x)?')),
);

registerControllers(
  app,
  // @ts-expect-error - controllers are lazy loaded
  transformImportsToLazy(import.meta.glob('$second-alias/controllers/**/*_(lazy)?controller.[jt]s(x)?')),
);

Notice the @ts-expect-error, because the typing seems to be wrong and only accept eager imports (without a Promise).
Now, this implementation works fine, but is merely a workaround. Having to manually set the names of the controllers we do not want to have lazy loaded is also not ideal (if they change name, etc...). And excluding their name from the glob would quickly create a messy, hard to read string.
I think the solution could be one of many, but the most important would probably be to either not use the name to match "lazy" controllers, or at least give control for the logic used. It could also be convenient if controllers could directly declare their default behaviour (lazy or not) inside their file directly. It could make the migration from Webpack to Vite easier for larger apps. But I don't know how hard that would be to implement. What do you think ?

hi @YummYume,
sorry for this long time ...
I'm coming back to you because I'm looking to improve all this.
There are many new features pending for the bundle that require a major version change and so I would like to take the opportunity to include breaking changes with stimulus.
but we both agree that the implementation is not exactly beautiful.
in fact I agree with you about implementing lazy controllers directly in the files.
and there is a second thing that doesn't suit me, it's the name of the controller that is deduced from the name of the file. I find that not very portable. we can't put controllers in directories without having a long name. if the file name is too long we also have an id too long, no camelcase management...
Here are some ideas
// ./can-be-located-anywhere because he has 'stimulusControllerId'
import { Controller } from "@hotwired/stimulus";

/* stimulusFetch: 'lazy' */
/* stimulusControllerId: 'cropper' */
export default class extends Controller {
  // ...
}

// ./assets/controllers/cropper_controller.ts
import { Controller } from "@hotwired/stimulus";

// stimulusControllerId is absent the id is deducted from "cropper_controller" like before.

/* stimulusFetch: 'lazy' */
export default class extends Controller {
  // ...
}

// ./assets/controllers/cropper_controller.ts
import { Controller } from "@hotwired/stimulus";

// stimulusControllerId is absent the id is deducted from "cropper_controller" like before.
// stimulusFetch is absent the controller is loaded eagerly

export default class extends Controller {
  // ...
}

import {
  startStimulusApp,
  registerControllers,
  registerController,
} from "vite-plugin-symfony/stimulus/helpers";
const app = startStimulusApp();

/* one at a time */
// with special "?stimulus-controller" query param, fetch mode and controller id are found
import MyCustomCropper from "./where-we-want/MyCustomCropper?stimulus-controller";
registerController(app, MyCustomCropper);

/* one at a time */
// with special "?stimulus-controller" query param, fetch mode is found
// controller id is deducted from "cropper_controller.ts" filename
import MyCustomCropper from "./assets/controllers/cropper_controller.ts?stimulus-controller";
registerController(app, MyCustomCropper);

// If you don't want all this, you can of course do it basically.
// on the other hand there is no management of lazy behavior
import MyCustomCropper from "./controllers/MyCustomCropper";
app.register("cropper", MyCustomCropper);

// a mix of all of this
registerControllers(
  app,
  import.meta.glob("./where-you-want/*Controller.ts", { query: "?stimulus-controller" })
);

// or
registerControllers(
  app,
  import.meta.glob("./where-you-want/*_controller.ts", { query: "?stimulus-controller" })
);

I would like to have your feedback on these proposals.
Does the stimulusControllerId option seems interesting to you?
If so, what names should you choose for

/* stimulusControllerId: 'xxx' */ comment name
?stimulus-controller query parameter

If you have any other ideas or suggestions, please do not hesitate.
one last thing. if we do not keep the option: stimulusControllerId but only stimulusFetch. there would be an even cleaner way
import { Controller } from "@hotwired/stimulus";

export const stimulusFetch = 'lazy';

export default class extends Controller {
  // ...
}

unfortunately I haven't found a way to implement this if we keep stimulusControllerId

by the way when you were writing this code
registerControllers(
app,
// @ts-expect-error - controllers are lazy loaded
transformImportsToLazy(import.meta.glob('./controllers/**/*_(lazy)?controller.[jt]s(x)?'), [
// This controller should not be lazy-loaded afterall, so we do not convert its name
'./controllers/x_controller.ts',
]),
);

you could simplify it with this
registerControllers(
  app,
  // @ts-expect-error - controllers are lazy loaded
  transformImportsToLazy(import.meta.glob('./controllers/**/*_lazycontroller.[jt]s(x)?'))
);

Hi @lhapaipai
The import.meta syntax seems like an amazing idea to fix all these problems ! :+1:  I didn't know this was possible for each file. What would stimulusEnabled do then ? It would also be great to have in the plugin's options a preferred default value for stimulusFetch. In my experience, we sometimes have a lot of controllers that need to be eagerly loaded as soon as possible, but most of the time we only have one or two controllers that need to be eagerly loaded, the rest can just be lazy.
export default defineConfig(() => ({
  plugins: [
    symfonyPlugin({
      // ...
      stimulus: {
        // ...
        defaultFetch: 'lazy', // 'eager' or 'lazy'
      },
    }),
  ],
});

About the ?stimulus query, we would have to add it to each import then ? I think it's perfectly fine as it allows differentiating which imports are affected by the plugin, much like the esbuild Stimulus plugin (or the Bun plugin for Stimulus I made).
The only drawback would be that import.meta.glob would now require query to be set to ?stimulus and eager to be always true. Should another method be made to simplify this process as well ? Or maybe a class (like App) that would contain all these helpers would be a good idea too. I'm not sure. The types look good to me !

I @YummYume
I just finished the doc so you can have the answer to your questions about import.meta and the suffix ?stimulus here :
https://66c45d9da05dbfdb31712665--cosmic-bubblegum-aa631a.netlify.app/stimulus/reference.html
What still doesn't suit me is the variable name import.meta.stimulusControllerIdentifier which I find much too long.

there is the name identifier that we find in the type declaration of Stimulus

register(identifier: string, controllerConstructor: ControllerConstructor): void;

Symfony has defined the property name in its controllers.json file.

id is shorter, it still makes a different term.

so I hesitate between import.meta.stimulusControllerXXX with XXX as id identifier name.
all your advice is good to take..
very good idea to be able to configure the default value of stimulusFetch.
I haven't specified it yet in the doc but the suffix ?stimulus is not mandatory. If it is omitted the import.meta of the files are not taken into account and I made it so that the behavior ("eager" or "lazy") is modeled this time on import.meta.glob("...", { eager: ??? }).
I don't think I'll explain it in the doc because it's another less flexible way to achieve the same result and can add confusion, to be seen.
// lazy controllers
// identifiers generated from file name
registerControllers(
  app,
  import.meta.glob<StimulusControllerInfosImport>(
    "./controllers/*_controller.ts",
  ),
);

// eager controllers
// identifiers generated from file name
registerControllers(
  app,
  import.meta.glob<StimulusControllerInfosImport>(
    "./controllers/*_controller.ts",
    {
      eager: true,
    },
  ),
);

Seems all good to me @lhapaipai !
So if you omit ?stimulus, then it simply won't use the meta declarations from the file ?
Also, to me, identifier sounds like the best term to use. So I'd go with import.meta.stimulusIdentifier, but that's up for debate.

hi @YummYume,

So if you omit ?stimulus, then it simply won't use the meta declarations from the file ?

exactly !
I followed your advice and I am happy to announce that version 7 has been released with all the features we talked about...
lastly I've added 2 vite plugin options:

fetchMode for the default fetch mode
identifierResolutionMethod

v7 integrates some breaking changes with v6 so take the time to look at the doc on migration to update the recipe, etc...
Have a good day
feel free to close this issue if all is ok !

Awesome @lhapaipai ! It all seems very good. I'll update all our Vite projects to the new version once I'm back to work and will let you know if I encounter anything.
By the way, a quick question : if I have a Stimulus controller in a bundle that has a import.meta.stimulusFetch = 'lazy'; statement, but I need this controller in a specific project to not be lazy loaded, what's the best approach to do this ?

Import it individually (without ?stimulus) after importing all the controllers from this bundle and register it again
Import it from the controllers.json file
Create a new controller that extends from it but isn't lazy loaded

What do you think ?

My answer is personal and does not take into account the constraints of your project, so you can very well not follow it and be satisfied.

Import it individually (without ?stimulus) after importing all the controllers from this bundle and register it again

this will work, but it bothers me because you are referencing a controller where you explicitly wrote that you wanted lazy behavior. and you will do a conventional import that could make it look like an error. however a good comment will clear the doubt when other people come back to the code later

Import it from the controllers.json file

this doesn't work because at the moment you have to reference third party packages (which contain a reference to the controllers they make available via a symfony property in their package.json.
bridge.ts (source code)
this may change over time.

Create a new controller that extends from it but isn't lazy loaded

it seems good to me but maybe the other way around
I think I would create the eager version and create a second controller that extends the first and contains import.meta.stimulusFetch = 'lazy';

Hi @lhapaipai
Thanks for clarifying things ! The manual section of the docs is very useful, and I think it's the right approach to that. It's still a very rare occurrence, but it sometimes does happen, that some generic controllers shared across projects sometimes need to be eagerly loaded.
I think with this we can close this issue as it resolves most of the problems present with the previous version :+1:


PartitionKey as a property for aws-dynamodb.Table

PartitionKey should be mandatory in TableProps of aws-dynamodb.Table as it is a mandatory parameter to create a DynamoDB Table.
Error if the table is missing partition key:

[xxx] a partition key must be specified

We could add it as an optional property. The reason we allow definition of a Table without a primary key is to allow use cases where the key is defined by some other part of the code (such as a third party library for example that accepts a table and defines the primary key for it). Not 100% sure that's the best reason, but that was the rational.


Stop crashing on undefined or null properties in flow intersection

Similar to other fix for flow intersection (#1806). I am not sure if this is the correct fix but the change stops Eslint crashing.
Fixes #1770
Fixes #1631

I have added the cases from the two issues


A few SI tests for apps and pods with persistent volumes

JIRA issues: https://jira.mesosphere.com/browse/MARATHON_EE-1792

Open is still failing system.test_marathon_root.test_pod_with_persistent_volume_recovers. Permissive has 38 errors!

@jeschkies there is a known issue, which causes the test to fail. For some reason, sometimes after recovery pod tasks disappear from /v2/tasks output. I will work on it either today or on Monday. For the time being, I am adding wip label to this PR.

@ichernetsky, thanks a ton. I ran the test locally without issues. Are you tracking your efforts somewhere?

@jeschkies, yes, please refer to https://jira.mesosphere.com/browse/MARATHON-8045

@ichernetsky, thanks. I marked this JIRA as being blocked.

 It turns out that common.get_pod_tasks function fetches tasks from Mesos, not Marathon. It was complaining about missing task statuses, and I was checking Marathon's /v2/tasks, which was obviously empty, because it returns only app tasks, but I realized it too late. I just added a function call to refresh statuses to wait_for_status_network_info. I re-ran SI tests for both open and permissive clusters. Also I ran the test a few dozen times manually. All green.


[Suggestion about the site] Copy button in code snippets

I would like to have a Copy button close to code snippets on the site, like we've seen in several site out there, it's great to copy easily, especialy those great Complete Examples.

@InMatrix, a good suggestion for the new site.

Cc: @filiph it would be nice to implement this on flutter.io.

@fertolg @chalin, would this be hard?

No. This is something that had come up during early dash discussions. @fertolg: is there a standard implementation used for other sites that we could use here too?

Cc: @gspencergoog DartDoc probably can use the same implementation for copying code snippets once the website has it.

This is not hard.  "clipboard.js" is the magic package for this, and it's pretty trivial to hook up.

Issue moved to flutter/website #2397 via ZenHub


Limiting parsed page size to 1.28 million chars

We encountered a PDF (for DOI 10.1038/s41593-019-0491-3) with PyMuPDF==1.24.11 where one of the pages was parsed to about 400 million characters, of junk (mainly whitespace). This didn't actually crash us, but takes hours to index.
As this was junk, this PR moves us to discard PDF that we fail to parse to be a reasonable amount of text (1.28 million chars), which is already 10X greater than a 128k token context window (and let's ignore chars != tokens in this 10X)

Good idea! Why did you call it page limit but compare it with number of characters?

Good idea! Why did you call it page limit but compare it with number of characters?

We talked in person, it was a bad name. I renamed to page_size_limit


Fixing MDX-Checker issues

Fixing errors that come up after running the docusaurus-mdx-checker command after updating to Makersaurus v0.7.0

Isn't it 0.4.0 in this the lock file?
https://github.com/h2oai/h2o-llmstudio/blob/165629ab73e51b0a95327ed145441cf82e2be471/documentation/package-lock.json#L2275-L2276

https://github.com/h2oai/h2o-llmstudio/pull/518


METRON-132 Manage all sensors and topologies with Monit

METRON-85 Addressed bug where wait_for was waiting for a fixed 5 minutes instead of continuing when the hosts are actually ready
METRON-132 Adds Monit as a process watchdog to manage all sensors and topologies.

Monit web interface exposed at http://hostname:2812 which can be used to start, stop, check status of any of the sensors or topologies.

When monitoring is enabled (on by default) if a process dies, it will be restarted.

Monit command line tools also simplify the process of managing Metron ingestion.
For example, tired of the noise from your laptop fan when running Metron's 'single node vagrant'?  This will quiet her down.  Finally, peace and quiet!
monit stop all

Need to work on a single ingest feed?
monit start bro
monit start bro-topology

Getting cold and need some heat?  Start everything.
monit start all

Post-deployment report for Amazon-EC2 provides links to Monit's web interface.
ok: [localhost] => {
  "Success": [
      "Apache Metron deployed successfully",
      "   Metron          @ http://ec2-52-39-143-62.us-west-2.compute.amazonaws.com:5000",
      "   Ambari          @ http://ec2-52-39-4-93.us-west-2.compute.amazonaws.com:8080",
      "   Sensor Status   @ http://ec2-52-39-4-93.us-west-2.compute.amazonaws.com:2812",
      "   Topology Status @ http://ec2-52-39-130-62.us-west-2.compute.amazonaws.com:2812",
      "For additional information, see https://metron.incubator.apache.org/'"
  ]
}

Will not monitor a service that is not installed.

Closing and reopening since it seems we hit a transient test failure.  Need to trigger Travis again.

And just to be clear, this is just a stop-gap measure until this kind of functionality gets integrated into a proper Metron UI.

Just to document for future generations, this is what the PR looks like once deployed.

I like it.  +1

Based on feedback, I need to do the following:

Rename the sensors to include -sensor in their name; example snort => yaf-sensor
Rename -topology to -parser; example yaf-topology => yaf-parser
Investigate whether aggregations of functionality can be configured; example: Create a single yaf monit service that turns on/off both the yaf-sensor and the yaf-parser at the same time.
Ensure that monit does not impact performance when running on a development platform


support pnpm

Is your feature request related to a problem? Please describe.
After !1013 the repository wouldn't work anymore with pnpm
Describe the solution you'd like
Support using pnpm out of the box
Describe alternatives you've considered
N/A
Additional context
I was able to get pnpm to work by modifying a few things. However, unfortunately these changes break support for npm. I'm not sure whether there's a compatible method that supports both npm and pnpm. If there's not, maybe it's good enough to include support for package managers in the read me.

npm error code EUNSUPPORTEDPROTOCOL
npm error Unsupported URL Type "workspace:": workspace:../preload/

pnpm workspace support
First of all, the workspaces block in the root package.json isn't supported:

WARN  The "workspaces" field in package.json is not supported by pnpm. Create a "pnpm-workspace.yaml" file instead.

I created a pnpm-workspaces.yaml with the following content:
packages:
  - "packages/*"

workspaces dependencies
I had to modify the way the workspaces are included as dev or regular dependencies. Instead of the "*" value, I had to use the `"workspace:../path" notation.
E.g.: "@vite-electron-builder/main": "*" became "@vite-electron-builder/main": "workspace:./packages/main/"

I don't really understand what exactly you are suggesting. The things you described are natural incompatibilities between the two tools.
NPM expects workspace descriptions in a package.json, while PNPN expects them in a separate file.
PNPM does support a special protocol, NPN does not.
Supporting all versions of all tools is not a goal for this template. And if you want to switch one tool to another, you have to make small twiks.


Cannot display two or more variables successively when "Select-Object" used

Steps to reproduce
Try to display 2 variable successively for example :
$Adapters = Get-NetAdapter  | Select-Object Name, Status, MacAddress
$IPAddress = Get-NetIPAddress  | Select-Object InterfaceAlias, IPAddress

$Adapters
$IPAddress

or :
$printers = Get-Printer | Select-Object Name, Type, DriverName
$process = Get-Process | Select-Object ProcessName, ID, Handles

$printers
$process

Expected behavior
Must display the two variables successively, like, for the first example :
Name                       Status       MacAddress
----                       ------       ----------
Wi-Fi                      Disconnected XX-XX-XX-XX-XX-XX
Ethernet                   Up           XX-XX-XX-XX-XX-XX

InterfaceAlias               IPAddress
--------------               ---------
Ethernet                     ffff:ffff:ffff:ffff:ffff
Wi-Fi                        ffff:ffff:ffff:ffff:ffff
Ethernet                     <IP_ADDRESS>
Wi-Fi                        <IP_ADDRESS>

Actual behavior
Displays only the first variable and some spaces below it
Name                       Status       MacAddress
----                       ------       ----------
Wi-Fi                      Disconnected XX-XX-XX-XX-XX-XX
Ethernet                   Up           XX-XX-XX-XX-XX-XX

Environment data

Name                           Value
----                           -----
PSVersion                      7.0.1
PSEdition                      Core
GitCommitId                    7.0.1
OS                             Microsoft Windows 10.0.18363
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

For information, do the same with 5.1

The only workaround I currently have is to add "Out-String" and it work, like :
$Adapters | Out-String
$IPAddress | Out-String

or second workaround: out-default

This is because Select-Object generates objects of the same type always, and the formatter doesn't handle that well if you don't have something of a different type in between them, or use Out-Default as mentioned.

To add to @vexx32's comment: the short of it is that implicit Format-Table formatting locks the display columns in based on the first object's properties   This Stack Overflow answer explains the problem in more detail.
This has come up previously in a number of issues:
Closed as by-design:
#7839  (#4552 is in part about the same problem)
Open:
#7871, which proposes issuing a warning if properties are "lost".

Cases like this and the prevalence of PSCustomObject use in PS is part of why I think that the decisions made in #7839 and #4552 are missing the point. 😕

Of course we want to encourage use of similar-shaped objects in a single output stream, but I think the current behaviour is simply completely unhelpful. It does little to help you diagnose what's wrong when it does happen, and it hides information that could (and imo should) still be shown to the user.

Yeah that's true, here are the obstacles:

Getting the formatter to maybe start a new format scheme maybe continue the previous one would be a decent chunk of effort in a already complicated system.
That would require checking the properties of every single item instead of just the first of each type.  For the folks already making sure the objects they emit have the same properties this would be a huge performance hit.

While I think the best practice of similar shaped objects is a good enough reason, there are also some pretty significant technical challenges.

🤔
What if we implemented a sort of hashcode-style check for property/member collections that's based on each property's name? Then the display system can just check that.

What if we implemented a sort of hashcode-style check for property/member collections that's based on each property's name? Then the display system can just check that.

That's probably more or less how 2 would be implemented. You'd still need to do that once for every object.  Generating a hash code for a sequence of sequences (e.g. a collection of strings) is still pretty expensive.

What if we added an explicit command FLUSH-HOST?  The formatting problem affects mainly script writers, so they would need to know when the type in the output pipeline changes, which is doable IMHO.

It is known problem and it is still "by-design". This does not prohibit anyone from looking for a solution if someone wants

It is known problem and it is still "by-design". This does not prohibit anyone from looking for a solution if someone wants


Proxy authentication needs custom headers and JWT

Query/Question
Hello,
Currently, we are calling our Azure Data Lake through the Rest API, but we want to change this and leverage Azure Java SDK to call our Azure Data Lake.
We are doing a POC to check if this is possible since we're using a Proxy to reach our Datalake, but we're blocked
In the past we used to pass the Proxy information throught the headers oh the call as follows
headers = {         'Proxy-Authorization': 'Bearer ' + jwt_conn, // this is the proxy token
        "proxy_custom_parameter": "proxy_custom_parameter_value"
         "Authorization": f"Bearer {storage_token}" // Azure token     }
When we try to do that in Java code, it looks like follows :
   ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress(pro, 20003));
        HttpClient httpClient = new NettyAsyncHttpClientBuilder().proxy(proxyOptions).build();

        TokenCredential certificateCredential = new ClientCertificateCredentialBuilder()
                .tenantId(tenantId)
                .clientId(clientId)
                .pemCertificate(TEMP_FILENAME)
                .httpClient(httpClient)
                .build();

        BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
                .endpoint(proxy_url)
                .credential(certificateCredential)
                .buildClient();

In the proxyOptions, we can only put the username/password, is there a possiblity to add the JWT in the headers as we used to do ?
We need help so that we know the right configuration to use the azure Java SDK
Thank you
Setup (please complete the following information if applicable):

OS: Linux
IDE:IntelliJ
Library/Libraries: [e.g. com.azure:azure-core:1.16.0 (groupId:artifactId:version)]
azure-core--1.43.0
azure-identity--1.10.1
Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report
[ ] Query Added
[ ] Setup information Added

@alzimmermsft this old issue seems to have fallen through the cracks; can you please double check / close as appropriate

Hi @zkhezane, thanks for filing this issue. At this time the only authentications available for proxying are Basic and Digest.
I'm going to change this over to a feature request and have a discussion with the team on allowing proxy authentication to be pluggable, ex. being able to be provided from an external source such as this case for JWT authentication or NTLM authentication.

Here is a setup for Kerberos proxy server/client. Linking it here, so if needed this setup may be used to validate the adaptability of pluggable proxy contract just for testing purposes.

Here is a setup for Kerberos proxy server/client. Linking it here, so if needed this setup may be used to validate the adaptability of pluggable proxy contract just for testing purposes.
For anyone referring to the setup: Please be aware that this is just for testing purposes, and we cannot guarantee that the settings we use in the example are sufficiently secure. I'm not a specialist in details of this security protocol. Consult expert for the correct and secure use in real world scenarios. The sample is just to show a basic concept of how challenges work in Kerberos, so we can play around.

Thanks for your prompt response.
The setup you have provided above shows creation of HttpClient, however EventProcessorClient is making Websocket connection. How should we configure Kerberos Authentication to proxy in this case?

@erdeminanc, right, the setup demonstrates Apache http client, I think that’s the only http client out there with built in Kerberos proxy auth.
Here we are discussing about a Proxy interface/contract feature to enable users to implement that interface for a specific auth of their interest (Kerberos, ntlm, jwt or any other) and plug it in. So sdk delegates proxy auth negotiation responsibility to the user provided implementation (for both http and websocket initiated via http).


I getting Error In Generate API using discovery file...

Hello, I am using google discovery end point framework. I am generation file for iOS using discovery file and getting below error with no sucess...
Balkrishans-iMac:~ balkrishanyadav$ /Users/balkrishanyadav/Desktop/GTL/google-api-objectivec-client-for-rest/Source/Tools/ServiceGenerator/build/Release/ServiceGenerator /Users/balkrishanyadav/Desktop/Output/smartmovie-v1.discovery   --outputDir ~/Users/balkrishanyadav/Desktop/Output
Generation Settings:
Output Directory: ~/Users/balkrishanyadav/Desktop/Output
Discovery Root URL: https://www.googleapis.com/
Flags:

Use service name directory: NO
Remove unknown files: NO
Allow rootURL overrides: YES
Loading API File(s):
Fetching ~/Desktop/Output/smartmovie-v1.discovery
ERROR: The api description doesn't appear to be a discovery REST description
ERROR: There were one or more errors; check the full output for details.

Thanks,

Sounds like your file '/Users/balkrishanyadav/Desktop/Output/smartmovie-v1.discovery' is not a REST discovery document.  Without knowing what is looks like it is sorta hard to help trouble shoot.  How did you make that file?


Vote for release of v2.3.0

At least 3 approvals are needed from the 4 owners for tagging 47d028a52a21a2da888aa522543e99920d3f3ef7 as v2.3.0.

[ ] Sajay Antony (@sajayantony)
[x] Shiwei Zhang (@shizhMSFT)
[ ] Steve Lasker (@SteveLasker)
[ ] Sylvia Lei (@Wwwsylvia)

See the change log for more details.
Draft release note is also available (wording can be changed later).
Please respond LGTM or REJECT (with reasoning).

LGTM

LGTM

Closing as v2.3.0 has been released.


splatting a union (({Int32, Int32} | Nil)) is not yet supported

def bla(x)
  return if x < 0
  {x, x + 1}
end

def output(x, y)
  puts x
  puts y
end

if b = bla(1)
  output(*b)
end

splatting a union (({Int32, Int32} | Nil)) is not yet supported
but b is already not nil

Right, that should work.


Concurrency

Is it possible to set concurrency for each stage? If not then that would be a useful feature especially wrt io operations.

@jonathanbp first, apologies for the late reply.  The answer is yes.  Eventually the API will support concurrency.  Each operational step will be able to setup concurrency level and also have a global processing concurrency. Thanks for suggestion.


Better default camera location

https://gitlab.kitware.com/f3d/f3d/-/issues/232

FYI @Meakk

So I've been thinking about this. As a reminder, here are our current camera options:
 Camera options:
      --camera-position <X,Y,Z>
                                Camera position (default: 0)
      --camera-focal-point <X,Y,Z>
                                Camera focal point (default: 0)
      --camera-view-up <X,Y,Z>  Camera view up (default: 0)
      --camera-view-angle <angle>
                                Camera view angle (non-zero, in degrees)
      --camera-azimuth-angle <angle>
                                Camera azimuth angle (in degrees) (default:
                                0)
      --camera-elevation-angle <angle>
                                Camera elevation angle (in degrees)
                                (default: 0)

[...]
      --camera-index <index>    Select the camera to use (default: -1)

I ran into this issue when generating samples for #490, my quick and dirty solution was to move the camera absurdly far in a diagonal direction and then call resetToBounds():
camera = engine.getWindow().getCamera()
camera.setPosition(f3d.point3_t(10000,10000,10000))
camera.resetToBounds()

We could add a new option, --focal-vector corresponding to an unary vector from the focal point to the camera position, incompatible with --camera-position.

That or --camera-direction, not sure which one would be more intuitive/user-friendly, could be either as long as the documentation is clear.

We could even introduction a --camera-reset-factor option to control "how far" from the bounds we should reset to.

Would be nice too. Even better if it can be expressed in some kind of screen-space amount of padding around the model in the final render, eg. 0% padding (or 100% fill) would mean the bottom and top (or left and right depending on aspect ratios) parts of the object touch the edges of the image. However that would probably require a specific implementation of resetToBounds() using a camera-aligned bounding box of the model.


Update TypeScript d.t.s (fixes #698)

cc @macqueen @marcomorain

This change is

Reviewed 3 of 3 files at r1.
Review status: all files reviewed at latest revision, 1 unresolved discussion.

Comments from Reviewable


Add anchor variant for buttons

Description
At the moment, we are using <a> to wrap buttons, which is wrong. Besides being invalid HTML markup, it causes 2 elements to have focus.
Acceptance Criteria

[ ] Add a way to make buttons to be <a> in the UI Kit
[ ] Find all the places where we wrap buttons with <a> and change it to use the built-in support

PR in the uikit: https://github.com/ipfs-shipyard/nomios-web-uikit/pull/82


feature req: support for hyprcursor themes

hyprland has recently added their own cursor theming system, which addresses some issues with the old xcursors design. it's got some flaws (like the fact that lots of apps will still fall back to xcursors and not use hyprcursors), but it'd be nice if nwg-look would detect and apply these as well as normal xcursor ones.
not at all a high priority feature, just a neat thing to be aware of that'd be cool to have if it's not too much work.
https://github.com/hyprwm/hyprcursor
https://wiki.hyprland.org/Hypr-Ecosystem/hyprcursor/

Well, I'm not sure.


Fix failing graphql test

Before contributing, please read our contributing guidelines and code of conduct.
Overview

Fix failing graphqlmaster test.

Related Github Issue
N/A
Testing
The agent includes a suite of tests which should be used to
verify your changes don't break existing functionality. These tests will run with
Github Actions when a pull request is made. More details on running the tests locally can be found
here,
For most contributions it is strongly recommended to add additional tests which
exercise your changes.

Thank you megalinter, whatever would we do without you


Use fgets() to read a single line of a stream

It makes me sad that we are not using fgets() here somewhere. It is 10 times faster than Psr7\readline(). I know readLine() method is not a StreamInterface method...but there has to be a way to incorporate it somehow.

Why not call detach and then fgets yourself?

So many extra lines of code for something that is much simpler. No worries though. I think using guzzle for my particular project might be overkill anyway.

I'd recommend to open a discussion on https://groups.google.com/forum/#!forum/php-fig if you think PSR-7 StreamInterface is missing a good way to read lines.


Album art looks stretched

Album art on the files looks a bit vertically stretched

Well, it is not. (Unless there is a problem with how vita2d scales textures, which I don't see) The scaling basically reduces the texture's length and width by the same factor to fit in the cover art image.


Fee market parachain

[x] Crab Parachain
[x] Pangolin Parachain

I've removed @darwinia/index-common from lerna packages, since it is a symlink in node_modules, cause docker to fail


Focus trap cant find focusable element if only one focusable element

Example:
<div class="modal">
  <button>Click Me</button>
</div>

Closing as stale.