question: No Token Found for Discord auth, confused about config

I'm trying to setup multiple subdomains with Discord auth using caddy-security on a debian 11 system.

I read over this page and many others in the docs several times before attempting this. I was excited to see the correct discord app appear.
My Problem -
When I login and click authorize it just endlessly redirects me to the discord auth page. On caddy I see the following error without debug mode on:
 http.handlers.authentication    auth provider returned error    {"provider": "authorizer", "error": "user authorization failed: src_ip=<IP_ADDRESS>, src_conn_ip=<IP_ADDRESS>, reason: no token found"}

I also just added debug mode to my Caddyfile and retrieved these extra assoicated logs
DEBUG security        token validation error  {"session_id": "", "request_id": "b2f8de29-b439-4725-b264-68c63ce192d2", "error": "no token found"}
DEBUG security        redirecting unauthorized user   {"session_id": "", "request_id": "b2f8de29-b439-4725-b264-68c63ce192d2", "method": "location"}
ERROR  http.handlers.authentication    auth provider returned error    {"provider": "authorizer", "error": "user authorization failed: src_ip=<IP_ADDRESS>, src_conn_ip=<IP_ADDRESS>, reason: no token found"}
DEBUG http.log.error  not authenticated
{"request": { "remote_ip": "<IP_ADDRESS>", "remote_port": "123456", "client_ip": "<IP_ADDRESS>", "proto": "HTTP/2.0", "method": "GET",
"host": "second.domain.com",
"uri": "/?code=ABC123abcABCabc123123",
 "headers":

 {"Upgrade-Insecure-Requests": ["1"], "Sec-Fetch-User": ["?1"], "Sec-Fetch-Dest": ["document"], "Cookie": [], "Sec-Ch-Ua": ["\"Google Chrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\""], "User-Agent": ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"],
 "Referer": ["https://discord.com/"], "Sec-Ch-Ua-Platform": ["\"Windows\""],
 "Accept": ["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"], "Accept-Language": ["en-US,en;q=0.9"], "Sec-Ch-Ua-Mobile": ["?0"], "Sec-Fetch-Site": ["cross-site"], "Sec-Fetch-Mode": ["navigate"], "Accept-Encoding": ["gzip, deflate, br"]},
 "tls": {"resumed": false, "version": 772, "cipher_suite": 4567, "proto": "h2", "server_name": "second.domain.com"}},
"duration": 0.001434217,
 "status": 401, "err_id": "mx2dk3rqp",
"err_trace": "caddyauth.Authentication.ServeHTTP (caddyauth.go:89)"}

Here is my Caddyfile. I plan to have multiple authorization policies
        email<EMAIL_ADDRESS>
        order authenticate before respond
        order authorize before basicauth

        security {
                oauth identity provider discord {
                        realm discord
                        driver discord
                        client_id CLIENTID
                        client_secret CLIENTSECRET
                        scopes identify guilds
                        user_group_filters 101010101
                }
                authentication portal discordportal {
                        crypto default token lifetime 3600
                        crypto key sign-verify CLIENTSECRET
                        enable identity provider discord
                        cookie domain *domain.com

                        ui {
                                links {
                                        "My Identity" "/whoami" icon "las la-user"
                                }
                        }

                        transform user { # admin
                                match sub discord.com/101010101/1111111
                                action add role authp/admin
                        }
                        transform user {
                                match sub discord.com/101010101/222222222
                                action add role authp/superuser
                        }
                        transform user {
                                match sub discord.com/101010101/333333333
                                action add role authp/poweruser
                        }
                        transform user
                                match sub discord.com/101010101/4444444444
                                action add role authp/user
                        }
                }
                authorization policy firstpolicy {
                        set auth url https://discord.com/api/oauth2/authorize?client_id=CLIENTID&redirect_uri=https%3A%2F%2Ffirst.domain.com&response_type=code&scope=identify%20guilds
                        crypto key verify CLIENTSECRET
                        allow roles authp/admin authp/superuser authp/poweruser authp/user
                        validate bearer header
                        inject headers with claims
                }
                authorization policy secondpolicy {
                        set auth url https://discord.com/api/oauth2/authorize?client_id=CLIENTID&redirect_uri=https%3A%2F%2Fsecond.domain.com&response_type=code&scope=identify%20guilds
                        crypto key verify CLIENTSECRET
                        allow roles authp/admin authp/superuser authp/poweruser
                        validate bearer header
                        inject headers with claims
                }
        }
}

https://first.domain.com {
        tls<EMAIL_ADDRESS>        authenticate with discordportal
        authorize with firstpolicy
        reverse_proxy <IP_ADDRESS>:8096
}
https://second.domain.com {
        tls<EMAIL_ADDRESS>        authenticate with discordportal
        authorize with secondpolicy
        reverse_proxy <IP_ADDRESS>:1234
}

My primary questions are:

Should I be using the discord auth app's CLIENTSECRET for the crypto key verify-sign values in the policy?
Is this infinite redirect loop for clicking "Authorize" on the discord auth page because of incorrect config? How can I make sure the token can be found and resolve the error?

Also

Does my Caddyfile look correct? I tried my best to compare to google/github/gitlab/generic
Is there anyone with an example Discord config that they would be willing to redact and share?

Thanks in advance!

Should I be using the discord auth app's CLIENTSECRET for the crypto key verify-sign values in the policy?

@michael94ellis , no. The crypto key verify-sign related to the token issues by the plugin.

Is this infinite redirect loop for clicking "Authorize" on the discord auth page because of incorrect config? How can I make sure the token can be found and resolve the error?

Fix your authorization.

Does my Caddyfile look correct? I tried my best to compare to google/github/gitlab/generic

It does not.
https://second.domain.com {
        tls<EMAIL_ADDRESS>        authenticate with discordportal
        authorize with secondpolicy
        reverse_proxy <IP_ADDRESS>:1234
}

I think you misunderstood how caddy routing works.
See configs here: https://github.com/authp/authp.github.io/tree/main/assets/conf/oauth
You probably need something like this:
https://second.domain.com {
        tls<EMAIL_ADDRESS>
	route /auth/* {
		authenticate with discordportal

          authorize with secondpolicy
        reverse_proxy <IP_ADDRESS>:1234
}

	route /auth/* {
		authorize with mypolicy
		uri strip_prefix /prometheus
		reverse_proxy http://<IP_ADDRESS>:9080
	}

This one is wrong too.
                authorization policy firstpolicy {
                        set auth url https://discord.com/api/oauth2/authorize?client_id=CLIENTID&redirect_uri=https%3A%2F%2Ffirst.domain.com&response_type=code&scope=identify%20guilds
                        crypto key verify CLIENTSECRET
                        allow roles authp/admin authp/superuser authp/poweruser authp/user
                        validate bearer header
                        inject headers with claims
                }

The URL here refers to the plugin's authentication URL.

Thank you very much, those corrections were very helpful! I've progressed to a new error which I have been fiddling with for the past few hours. I've pasted in the result of incorporating your feedback below for reference.
Unfortunately I am unable to retrieve the roles and properly transform the user as per the Discord Guild/Server roles. I tried using the string value of the role and the id as well. I also attempted to intercept and decode the JWT where I found no role information.
I then returned to investigating in the docs. I tried adding the scope guilds.members.read according to Discord Oauth2 Docs. I then looked further into where the request is made from caddy-security and noticed that there seems to be a url difference from caddy security's request url "discord.com/%s/members", guildID compared to the path in the Discord Oauth2 docs<EMAIL_ADDRESS>To be honest, I'm in over my head. Do you think my user transform is wrong?
{
        email<EMAIL_ADDRESS>
        order authenticate before respond
        order authorize before basicauth

        security {
                oauth identity provider discord {
                        realm discord
                        driver discord
                        client_id {$DISCORDCLIENTID}
                        client_secret {$DISCORDSECRET}
                        scopes identify guilds
                        user_group_filters {$MYGUILDID}
                }
                authentication portal discordportal {
                        crypto default token lifetime 3600
                        crypto key sign-verify {env.JWT_SHARED_KEY}
                        enable identity provider discord
                        cookie domain *.domain.com

                        transform user {
                                match realm discord
                                match role discord.com/{$MYGUILDID}/{$ADMINROLEID}
                                action add role authp/admin
                        }
                        transform user {
                                match sub discord.com/{$MYGUILDID}/{$MEMBERROLEID}
                                action add role authp/user
                        }
                }
                authorization policy firstpolicy {
                        set auth url https://first.domain.com/auth/
                        crypto key verify {env.JWT_SHARED_KEY}
                        allow roles authp/admin authp/user
                        validate bearer header
                        inject headers with claims
                }
        }
}
https://first.domain.com {
        tls<EMAIL_ADDRESS>        route /auth/* {
                authenticate with discordportal
        }
        route {
                authorize with firstpolicy
                respond "Hello World"
        }
}

@michael94ellis , what happens when you have only the below transform? Do you get authenticated? Can you browse to the portal?
                        transform user {
                                match realm discord
                                action add role authp/user
                        }

Also, remove the following:
                        user_group_filters {$MYGUILDID}

Please connect to me over the linkedin. Let's schedule google meet and troubleshoot together.

I did attempt using the following transform alongside 1 or 3 of the other transforms I want to use. This did in fact work, and I believe I could verify the users guild as well.
               transform user {
                                match realm discord
                                action add role authp/user
               }

I also tried a few combinations for matching roles. I think the debug logs included an unsigned copy of my JWT in some response which when decoded had no roles, but it did have the appropriate list of guilds.
As for scheduling a debug session, that would be awesome. I will do that

@michael94ellis, I am looking to add testimonial sections to https://authcrunch.com. Could you please write one and send it to me at<EMAIL_ADDRESS>


Refactor InsertUpdateToDb.php

remove extra else keyword
extracts a method for duplicated code

Thank you for submitting this pull request! I have reviewed the changes, and I like the first part of the code that has been modified.
However, I have some concerns about the second change where the repeated code has been refactored into a function. While I appreciate the effort to modularize the code, I think it has decreased the readability of the code. In my opinion, the code was already clear and concise without this change, and the benefit of refactoring such a small number of lines is questionable.
Could you please consider reverting this change and keeping the code as it was?

done


Java API usage: how to parse a single article ?

Hi,
Initially posted here idio/json-wikipedia#43, but should have started here as it is the main repo :)
I'm trying to parse single wikipedia xml file. Like the mercedes.xml in the test of this repo. Following the code in the test section I tried something like:
import it.cnr.isti.hpc.wikipedia.article.Article
import it.cnr.isti.hpc.wikipedia.parser.ArticleParser

val parser = new ArticleParser("en")
val testXml = IOUtils.getFileAsUTF8String("./mercedes.xml")
val testArticle = new Article()
parser.parse(testArticle, testXml)

But the result is strange. Many properties are blank, like title, wikiTitle, ... and paragraphs / clean text are also wrongly parsed. I guess I'm doing something wrong ^^ If you could show some usage of the API to process a single article in xml it would be very great :)
Thanks,
Thomas

closing because of the discussion in idio/json-wikipedia#43


net40 fixed compilation

Hi, xoofx.
I fixed compilation

Sorry @andrewst I forgot to commit one file yesterday that was making the compilation failing 😅


Ensure all drivers have a valid default size and reject size 0

@vladimirvivien commented on Thu Aug 18 2016
Currently the following will work (but backend will reject request).
$>rexray volume create --volumename="somename"

Most storage backend require a size when creating a volume, the CLI probably should do the same.

@akutz commented on Thu Aug 18 2016
Hi @vladimirvivien,
I would normally agree except REX-Ray and libStorage both understand and support the concept of a default size. That's why the lack of the flag is not rejected.

@vladimirvivien commented on Thu Aug 18 2016
@akutz
I thought that was the case as well, but I just redid this test against the latest rexray without the size param and it failed.  This is using the scaleio driver.  The driver got size=0.  Should this be a bug against libStorage ?
$> rexray volume create --volumename="vol-test-rexray" -l debug
...
RRO[0001] error creating volume                         IOPS=0 availabilityZone= host=unix:///var/run/libstorage/282555454.sock inner=problem getting response: Wrong command parameters. You can check that you are using the correct parameters, by consulting the help for the command. instanceID=scaleio=0720519500000000 provider=scaleIO route=volumeCreate server=puzzle-pixie-sr service=scaleio size=0 task=0 time=1471482712815 tls=false txCR=1471482712 txID=995a32b1-9ec2-41c2-708d-a461f2b3ec2a volumeName=vol-test-rexray volumeType=default

@akutz commented on Thu Aug 18 2016
I don't know. Please re-execute using all available logging. Use the tip of REX-Ray and execute the command using the embedded mode with REXRAY_DEBUG=true prefixed on the command line. This enables all available debug logging. It will show what is being sent and consumed between the libStorage client and server.
The config value is registered with a default value of 16. I didn't write this code, and I want to refactor it anyway so that it is no longer registered as some randomly-GB value. We should support size suffixes to indicate MB or GB, etc.
My initial thought is the bug could be in REX-Ray. If the size flag is not provided, the value parsed from it is 0.

@akutz commented on Thu Aug 18 2016
And that's what is happening. The size field in REX-Ray is an int64, so if the value is not provided it will always be zero. We could make this a pointer to an integer so it can be nil. However, I didn't write any of this code. The config value should not be a string when this value is an integer. We should make the CLI value a string and parse it as a size with allowed suffixes. If the string is empty, the CLI flag not set, we simply don't pass the value to libStorage instead of providing a value of 0 as we are doing now.

@codenrhoden commented on Mon Feb 27 2017
Would a reasonable approach for this be to make sure that each storage driver has a default size value, built into the driver (and overridable via config).  The linux integration driver has a default size of 16GB, but if you don't go through the integration driver, a size 0 volume request can appear at the driver.  Some drivers reject this outright, some drivers defer to a default size, and yet still more (ahem, rbd gladly pass this to the backend storage).
I think having a per-driver default size might be a good idea. Several providers have minimums that must be met as well.

@akutz commented on Mon Feb 27 2017
Hi @codenrhoden,
Hmmm. Maybe... Remember that REX-Ray is a client, libStorage is the API. The client, IMO, should not be important to the API to this extent. The integration driver is also client side an not at all required. For example, the client @vladimirvivien created for K8 doesn't use it.
I like your suggestion, but here's a spin on it. Just as the integration driver has defaults, perhaps what we need to introduce are defaults for the API's request parameters that a driver can elect to also override. For example:
libstorage:
  server:
    api:
      volumes:
        create:
          size: 10GB
  services:
    ebs-00:
      driver: ebs
    ebs-01:
      driver: ebs
      libstorage:
        server:
          api:
            volumes:
              create:
                size: 15GB

When the driver code requests the property libstorage.server.api.volumes.create.size when responding to a request issued to the ebs-00 service, the result will be 10GB. However, if a request is sent to the ebs-01, the property libstorage.server.api.volumes.create.size has a value of 15GB.
These values would be defaults and only used if a request omits a property. I imagine this would be implemented at the server's router level instead of by individual drivers since, if implemented at the router level, the drivers don't have to duplicate code. It would be fairly trivial to do so in volume_routes.go, with some changes similar to the following:
func (r *router) volumeCreate(
	ctx types.Context,
	w http.ResponseWriter,
	req *http.Request,
	store types.Store) error {

	service := context.MustService(ctx)

	run := func(
		ctx types.Context,
		svc types.StorageService) (interface{}, error) {

		opts := &types.VolumeCreateOpts{
			AvailabilityZone: store.GetStringPtr("availabilityZone"),
			IOPS:             store.GetInt64Ptr("iops"),
			Size:             store.GetInt64Ptr("size"),
			Type:             store.GetStringPtr("type"),
			Encrypted:        store.GetBoolPtr("encrypted"),
			EncryptionKey:    store.GetStringPtr("encryptionKey"),
			Opts:             store,
		}

		serviceConfig := r.config.Scope(
			fmt.Sprintf("libstorage.server.services.%s", service.Name())

		if opts.Size == nil {
			i := serviceConfig.GetInt(
				"libstorage.server.api.volumes.create.size")
			opts.Size = &i
		}

		v, err := svc.Driver().VolumeCreate(ctx, store.GetString("name"), opts)

@akutz Reading back through this, I think perhaps I can split this into several separate issues. See if you agree:
(1) Each storage driver should have a realistic for their storage provider minimum size, and reject creates that are less than that. At least one driver will create size 0 volumes right now (my fault, it's RBD). If a backend doesn't have a minimum size, it should be 1GB since we only take size in GB (for now). That's the work I would like to accomplish with this issue. I want to fix the RBD driver (and any others I find) that push a create to the backend that zero-sized or less than we know the backend will take (GCE has a 10GB minimum, for example).
(2) Introduce API-level defaults for the size request parameters. This would allow an administrator to set different default create sizes per service, and is outlined in your comment.
(3) Update the REX-Ray CLI to use an int64 pointer (*int64) for holding the size param, such that if the param is not provided on the CLI, it is initialized to nil rather than 0. In addition, the integration driver's default size option should be an int, rather than a string as it is today. If I'm not mistaken, item 2 in this list depends on 3, because we need the size param to be nil when not set.
If you agree, I will write up issues for 2 and 3, and target the content of (1) for the upcoming release.

Hi @codenrhoden,
The only issue I have with server-side defaults is, after considering them at length, I realized we have to implement them only for POST operations, not PUT as we don't want update operations that lack values to assume those missing values should be substituted with defaults. Additionally, for the CLI, I would like the size param to be a *string and for us to smartly parse sizes, similar to this example.
I'd like to change the default unit for the API to bytes as it should never have been GB with which to begin. However, as you've pointed out, that would break backwards compatibility. Therefore I'd like to introduce a configurable option that lets a person specify the default unit, and have that config property default to GB.
Thoughts?

@akutz. Makes sense. So, it sounds like I can take your feedback, and write up new issues for (2) and (3) slightly differently. Do you have any opposition to (1), though? I can start that immediately.
Oh, and just for fun...  where do you stand on GB vs GiB (Giga vs Gibi)?  It's something I've tried to transition to, clearly labeling things as MiB, GiB, etc when we are doing power of two. I bring it up because if we are going to parse sizes based on suffixes, I want to document clearly that "G" means 1024 "M", etc...

G or M by themselves always means base 2 IMO, thus G==GiB or 2^30 MiB. But honestly, I've also always used GB to mean base 2 as well and pretend that GB to mean 10^9 bytes doesn't exist and yell and curse HDD manufacturers loudly while I do.
--
-a

On Mar 28, 2017, at 5:14 PM, Travis Rhoden<EMAIL_ADDRESS>wrote:
@akutz. Makes sense. So, it sounds like I can take your feedback, and write up new issues for (2) and (3) slightly differently. Do you have any opposition to (1), though? I can start that immediately.
Oh, and just for fun... where do you stand on GB vs GiB (Giga vs Gibi)? It's something I've tried to transition to, clearly labeling things as MiB, GiB, etc when we are doing power of two. I bring it up because if we are going to parse sizes based on suffixes, I want to document clearly that "G" means 1024 "M", etc...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

@akutz One more question -- I was going to write up something to change the linux integration driver size option from a string to an int, but if we do add smart size parsing, I think we'd want to keep it as a string such that you can config a default size of 16G. So I'm inclined to leave that alone. What do you think?

Well, I'm fine with the CLI being a string, but I kind of feel everything under the covers should be byte size (int64). That's problematic due to backwards-compat. Basically, my opinion is that if you're writing against code or an API you should use bytes. If you're using the CLI it can present more user friendly input options. The integration driver is client side and I'm not worried about backwards compat there, so I'd say change that to int64 for bytes. Thoughts?

If you have a good feel for how to work that out, I totally believe you. :) I think I captured all the various pieces in issues, but I haven't written one for the integration driver. My concern there is that if someone happened to change the default value (from 16 to 10, for example), suddenly they would start trying to create 10 byte volumes instead of 10G volumes. But I think that would be covered by your backwards-compatibility flag that treats incoming value as GB insteaed of bytes.
So I think we are good here.


Switch github event for CI

Fixes CI in #56. version-metadata doesn't work with on: push for newly created branches.


SM-686: Send location every Configurable X seconds, as low as 1/sec

added LocationFrequencySecs setting

@mateuszpohl , could you please take a look? I want to ensure this won't break the Macaron config on 0.9.1.

I've tested protobuf encoded file with this field included in current Macaron FW - no issues.
One question though: shouldn't this new field have some default value? Like e.g. min_voltage_obd_loggers (13.3V)?
Thanks for testing,
I think the default should be 0.
The reason behind it is that we want to send locations so frequently only for some particular customers, in case if location_frequency_secs == 0, the location data will be sent as before(every 20 sec) with all the other payload. @JamesReate any thoughts?

I would have the default be 20 seconds, (what we currently do).

if set to 0, it could mean to use the device default, although some could interpret it to not send location at all 🤷


Ignore 3rd party libraries with a Filter

Hi,
I already asked this question on Stackoverflow  but didn't get an appropriate answer.
My solutions uses 3rd party components that are exposing Web API endpoints. I have no control about this library so my question is how to set up a filter to ignore this library. I don't want to include this in any doc.
Currently the following exception is thrown:
NotSupportedException: Ambiguous HTTP method for action - DevExpress.AspNetCore.Reporting.QueryBuilder.QueryBuilderController.Invoke (DevExpress.AspNetCore.Reporting.v18.2). Actions require an explicit HttpMethod binding for Swagger 2.0
Edit: I already tried to use an OperationFilter but was unsuccessful because Apply doesn't get called for the 3rd party lib.
Thanks
Sven

You can configure a custom “DocInclusionPredicate” (see readme) to filter out ApiDescriptions for actions in a given namespace

Thank you,
I got it working.
Regards
Sven


Where do LDP-NR subject triples go?

Given:

Single-subject rule -- RDF graphs must have a single subject, corresponding to the resource URI (hashURIs are allowed)

where are triples about LDP-NRs housed?

My interpretation of Link: <some-ldp-nr>; rel="describes" is that any triples on the LDP-RS (as a consequence of the Link header) describe the LDP-NR. Absent that Link header, those triples would only be describing the LDP-RS itself.

The question is, what is the subject of those triples? If the LDP-RS, then they clearly do not describe the LDP-NR. If the LDP-NR, they violate the rule quoted above.

No, the subject is the LDP-RS, and as described above, via the Link header, they (by definition) also describe the LDP-NR.

That is nonsensical to me. You are saying that a triple of the form:
<foo> hasWidth 3567^^uom:pixels .

secretly means:
<bar> hasWidth 3567^^uom:pixels .

because of an HTTP header elsewhere in the world? How on earth can that be interpreted as RDF?

fine, add an owl:sameAs triple in there. The other approach: making the subject of the LDP-RS be the LDP-NR is nonsensical to me.

An owl:sameAs triple?! How can (say) an image be the same thing as an RDF graph?

Then we just disagree on this. But unless this actually violates the LDP or Fedora specs, I'll keep this approach.

I think it violates RDF itself, but I'm not going to berate you about it. I'm increasingly convinced that the single-subject rule and the notion of standoff description cannot be reconciled directly. A new approach must be found.

Another approach would be to use hashURIs. I would need to think a bit more about the implications of that, but you could, for instance, have the LDP-NR at http://example.org/resource and the LDP-RS at http://example.org/resource#description. You'd then use Accept headers to request the different representations.

Yes, this is where I think we're going to have to go. I need to think about that plays out with multiple descriptions.

Yes, this is where I think we're going to have to go. I need to think about that plays out with multiple descriptions.

You could use an opaque hashURI (which is what I'd use anyway). This would allow multiple descriptions. The server response would contain all such descriptions, since the HTTP spec mandates that a server ignores any URL fragment in a request, but the data would be available for any client processing.

Also there is the question of how you describe an RDF resource. @barmintor is interested in that, I think, and @no-reply frequently raised it as a use case from DPLA. I am interested in that case because a lot of bioinformatics work can be expressed in RDF.

Named graphs?

By "opaque" do you imply "server-generated" (to avoid collisions)?
I think what we're playing with is the following move: we've been treating description/described-by purely as a relationship. We might instead think of description as a particular kind of representation.

Maybe named graphs. I'm frightened by the thought, but maybe we want the resource retrieved at an URI to be, not a graph, but a dataset (in the full RDF sense of that term).

yes, by opaque, I mean server-generated. And the way I've been designing trellis is that, internally, a LDP-NR and the describing LDP-RS is actually a single (internal) resource with different representations (and also different URIs -- though hashURIs may make that considerably easier).

I'm reading the relevant bits and I can't see why you couldn't return a dataset for an LDP-RS (instead of a simple graph).

That may, in fact, be the best path forward.

Well, as said above and discussed elsewhere, the question really is whether to commit to an epistemology in which description is a form of representation. If you do that, you open up all this other stuff about hash-URIs and datasets. If you don't, (I believe) you have to face the fact that the single-subject rule is fundamentally in conflict with description-as-relationship, and you find some least-worst way to deal with that.

Closing this, as it seems we have a path forward with the use of hashURIs and RDF datasets.


Typescript version

It would be nice to have a typescript version on a separated branch

I've added Typescript examples into the src-typescript folder


Level 300: Testing for Resiliency of EC2, RDS, and AZ

Team,
While trying to run the CloudFormation template for the Level 300: Testing for Resiliency of EC2, RDS, and AZ Well Architected Lab, I encountered errors and the stack would then rolllback. I tried this in 3 occasions deploying in a single region and multi-region, but same error.   Attached please find the screenshot for the error message which appears to be related to the runtime version of Python.
Thank you, all !
C

L

Before the initial stage to deploy the CloudFormation Stack, a new message I've never seen before shows up.  We are unable to move forward until this is acknowledged.

"The template has changed ..."


This site Can't be reached. I am using Xampp also.

Problem encountered on https://dotnet.microsoft.com/learn/aspnet/hello-world-tutorial/run
Operating System: windows
Provide details about the problem you're experiencing. Include your operating system version, exact error message, code sample, and anything else that is relevant.

@abhi9696shek is this happening when you're trying to run the example? Does any error messages show up in the console?


Use latest tag for Docker image

Someone mentioned this project on a Reddit thread the other week, and I noticed there wasn't an Unraid template for it, so I made one (should be available on the Unraid Community Apps store within a few hours). To make maintaining the template easier, can you please use the latest tag for the latest version of each Docker container you make (in addition to the usual explicit version number), so that users only have to target latest rather than needing to know the version number.

Came here for this, please add the latest tag.  Only zerealfu/fass:0.1.0 works currently.

Thanks for pointing out @ghzgod - added latest tag to github actions and is now available on dockerhub.


Try optimizing invsqrt with Fast Inverse Square Root

Doesn't compile, missing x2 declaration? Fails Cl build. Please compile and test before submitting PR.

@aolofsson sorry about that. I'm using travis as a debugger as I can't access my board right now.


The word "Register" is obscured on a Hudl

From Mary: "I use a Hudl2 and the word "Register" is hidden behind the Pycon UK graphic at the top centre of the web page."

I've managed to replicate this between window widths 940px & 969px. It looks like the width breakpoints need changing so we use the alternative/mobile version once we hit 969px. I need to test this on mobile so will push a fix [hopefully] tomorrow.
Anyone else who gets to this first, please feel free to pick it up.


[Refactor] Update currentUser to user

Follow up to https://github.com/artsy/reaction/pull/1188

merge on green


UI part of in-browser verification added

"In browser" => "In-browser"
Make "In-browser" the first tab
Glitch if screen height is low:

Currently we're using the latest func compiler coming from func-js. Instead of using the default, we should construct a new FuncCompiler according to its version.

We should add support for func 0.2.0 and 0.3.0. We'll achieve that by installing them explicitly using NPM package aliases. (see: https://www.npmjs.com/package/@ton-community/func-js-bin?activeTab=versions)

We use the compiler func version as in the proof. If it's not available, we write it clearly to the user in the popup ("func [x.y.z] is not available for in-browser verification")

Note that the code should be planned to support many future versions, which means:

Maintain some kind of configuration dictionary or list that can be easily extended
Only load the module (use dynamic import) when it's actually required, (otherwise when we reach 10 versions+, loading all WASM modules for them probably would be a performance/memory issue)

check all cases on mobile (error too)


Revert "Revert "Remove Composer self-updating from .travis.yml""

Reverts thephpleague/skeleton#107

😅


feat(frontend): Add Create subscription in frontend

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
In this pr,
We added subscription to the rw_subscriptions rw_relation and rw_relation_info.
We support the parse, build_plan and execution of the statements
CREATE SUBSCRIPTION s1 FROM aaa WITH (retention = '1D') ;
DROP SUBSCRIPTION xxx;
ALTER SUBSCRIPTION x1 RENAME TO x2 ;
ALTER SUBSCRIPTION x1 OWNER TO user1;
ALTER SUBSCRIPTION x1 SET SCHEMA test_schema;
ALTER SUBSCRIPTION x1 SET PARALLELISM = 4;
SHOW SUBSCRIPTIONS;
SHOW CREATE SUBSCRIPTION subscription1;

And in this pr, We have only added tests for SUBSCRIPTION ddl, the specific result tests will be added in the next pr
related #14316

Checklist

[ ] I have written necessary rustdoc comments
[ ] I have added necessary unit tests and integration tests
[ ] I have added test labels as necessary. See details.
[ ] I have added fuzzing tests or opened an issue to track them. (Optional, recommended for new SQL features #7934).
[ ] My PR contains breaking changes. (If it deprecates some features, please create a tracking issue to remove them in the future).
[ ] All checks passed in ./risedev check (or alias, ./risedev c)
[ ] My PR changes performance-critical code. (Please run macro/micro-benchmarks and show the results.)

[ ] My PR contains critical fixes that are necessary to be merged into the latest release. (Please check out the details)

Documentation

[ ] My PR needs documentation updates. (Please use the Release note section below to summarize the impact on users)

Release note
If this PR includes changes that directly affect users or other significant modifications relevant to the community, kindly draft a release note to provide a concise summary of these changes. Please prioritize highlighting the impact these changes will have on users.

I am a bit concerned with a 2.3K LoC PR with zero test :(
Is it possible to split it into smaller PRs and add some tests (at least e2e tests).

I have added ci, including alter, and simple create, drop statements, (ci for correctness testing will be added with the cursor implementation)

I am a bit concerned with a 2.3K LoC PR with zero test :(
Is it possible to split it into smaller PRs and add some tests (at least e2e tests).

+1 for splitting the PR.
The current PR can be split into at least 2 PRs. One for meta part only, which involves adding new metadata model and new meta node rpc, and one for frontend part that handles the SQL and call the meta node rpc.

I am a bit concerned with a 2.3K LoC PR with zero test :(
Is it possible to split it into smaller PRs and add some tests (at least e2e tests).

+1 for splitting the PR.
The current PR can be split into at least 2 PRs. One for meta part only, which involves adding new metadata model and new meta node rpc, and one for frontend part that handles the SQL and call the meta node rpc. The PRs can be further split if a single PR has more than 1K LOC.

okk,  I split it
meta part is in https://github.com/risingwavelabs/risingwave/pull/15371

After spilit out the meta code. the pr is left with only the frontend code which is slightly more than 1k in addition to the tests, the pr can continue to be reviewed

Left a comment in the previous PR. Might be fixed by the way in this PR.
https://github.com/risingwavelabs/risingwave/pull/15371#discussion_r1512182710

Could you please test drop cascade for a table if it is used by a subscription?
create table t (..);
create subscription sub from t;
drop table t cascade;

test it, drop table t cascade; will drop sub;

Could you please test drop cascade for a table if it is used by a subscription?
create table t (..);
create subscription sub from t;
drop table t cascade;

test it, drop table t cascade; will drop sub;

I see, no wonder I couldn't find the relevant code in this PR, because it is supported in a previous PR.


Update encoder.py

This is needed to support callable objects as documented here:  https://docs.djangoproject.com/en/2.1/ref/models/fields/#django.db.models.Field.default

Hi @rschutt. jsonfield has undergone a rewrite (jsonfield2 merged back in master), and this change has effectively been reverted.
I've opened #239 to ensure that callable defaults are supported, but it would be helpful if you could verify whether this is still an issue with jsonfield 3.0
Thanks!

Hi @rschutt. I've added a test that verifies that callable defaults are supported. Thanks for the report!


Throwing NotPermitted error when try to call startNotifications

Hello guys
I had try to call startNotifications and got this error:
DBusError: Write not permitted
    at _methodReturnHandlers.<computed> (/home/ricardo/Documentos/testes/scannerBlue/node_modules/dbus-next/lib/bus.js:339:27)
    at handleMessage (/home/ricardo/Documentos/testes/scannerBlue/node_modules/dbus-next/lib/bus.js:98:11)
    at EventEmitter.<anonymous> (/home/ricardo/Documentos/testes/scannerBlue/node_modules/dbus-next/lib/bus.js:147:9)
    at EventEmitter.emit (events.js:314:20)
    at /home/ricardo/Documentos/testes/scannerBlue/node_modules/dbus-next/lib/connection.js:112:14
    at Socket.<anonymous> (/home/ricardo/Documentos/testes/scannerBlue/node_modules/dbus-next/lib/message.js:63:9)
    at Socket.emit (events.js:314:20)
    at emitReadable_ (_stream_readable.js:567:12)
    at processTicksAndRejections (internal/process/task_queues.js:79:21) {
  type: 'org.bluez.Error.NotPermitted',
  text: 'Write not permitted',
  reply: Message {
    type: 3,
    _sent: false,
    _serial: 5364,
    path: undefined,
    interface: undefined,
    member: undefined,
    errorName: 'org.bluez.Error.NotPermitted',
    replySerial: 171,
    destination: ':1.401',
    sender: ':1.5',
    signature: 's',
    body: [ 'Write not permitted' ],
    flags: 1
  }
}

I'm using ubuntu 20.04, mi band 4 and node-ble 1.2.0.
Trying to get Heart Rate Measure.
This is the code I had use:
        await device.connect();
        const rssi = await device.getRSSI();
        const gattServer = await device.gatt();
        const service = await gattServer.getPrimaryService('0000180d-0000-1000-8000-00805f9b34fb');
        const characteristic = await service.getCharacteristic('00002a37-0000-1000-8000-00805f9b34fb');
        const flags = await characteristic.getFlags();
        characteristic.on('valuechanged', buffer => {
          console.log(buffer);
          device.disconnect();
        });

        await characteristic.startNotifications();

Can anyone tells me why it is throwing this error ?

Same here, anybody?

This seems something related with the device that you're using. Closing for now, feel free to create a new issue attaching some steps to reproduce it.

I'm facing this issue now. May I know what is the root cause of it?


Garmin Smartwatches

Full and short name of product
Garmin Smartwatches
Does this product have LTS versions? What are the intervals between each LTS version?
No
What is the website for the product and for its version information?
None yet.
Additional context
Garmin feedback form:
https://www.garmin.com/en-US/forms/ideas/

I looked around on the Garmin website, and found nothing except the guidance to use the Garmin Connect/Express apps on PC/Mobile to download updates.
Found a bunch of discussion on reddit, but without any reliable source I don't see how we can document this at all.
Maybe if someone were to figure out the Garmin apps and see if the list of products/updates can be documented programmatically.

Garmin's security policy says "In general, we provide security updates to fix confirmed vulnerabilities in our consumer products a minimum of 2 years from when the product is first offered for sale." However, we should probably contact them for more information.


Match tvos

Does match support tvOS right now? If it does, how do I create the provisioning profile with tvOS instead of iOS?

Hey @chshapiro, unfortunately not all tools support tvOS yet 😢


StrictMode: A resource was acquired at attached stack trace but never released

RSBlur creates 4 Objects(2 Allocation, RenderScript and ScriptIntrinsicBlur) but it only destroys the RenderScript. This causes the resources to stick around and never get released.
I will try to find the time to make a PR.
Tested on a Nexus 6

I try to use RenderScript,and I know somthing about it now, I hope it can help you, RSBlur creates 4 Objects(2 Allocation, RenderScript and ScriptIntrinsicBlur) ,RenderScript  only have one in a application,because class RenderScript have a static ArrayList<>  to save RenderScript‘s  Object, the Object is not released when you call destroy() ,they just call native function like c or  c++, and you do not need to destroy the Object ,however ,you can call  releaseAllContexts() to clear the List which save RenderScrit's Object  if you want to destroy all RenderScript.  then,Allocation,ScriptIntrinsicBlur,all they is used as Local variables  ,their Object  will be destroy by GC, and you should call destroy to use jni's function like RenderScript.


add latest build action

Signed-off-by: pixiake<EMAIL_ADDRESS>
What type of PR is this?
/kind cleanup

What this PR does / why we need it:
add latest build action
Which issue(s) this PR fixes:

Fixes #
Special notes for reviewers:

Please check the following list before waiting reviewers:

[ ] Already committed the CRD files to the Helm Chart if you created some new CRDs
[ ] Already added the permission for the new API
[ ] Already added the RBAC markers for the new controllers

Does this PR introduce a user-facing change??

none

/lgtm
/approve


HTTPUpgradeError.notAnUpgrade(200) on iOS 15. Very hard and unstable connection

I have different groups in my App, and every group has its own chat room.
And I faced strange problem, when I move between groups chats, and many times connect and disconnect from WebSocket, I receive errors like in the added screenshots.
Because of that, messages that are in chat are not visible in maybe half of the attempts.
Please, any help or ideas...kindly
Environment:

OS/Version: [e.g. iOS/15]
Xcode version [13]
Starscream Version [4.0.4]

my connectSocket and  didReceive methods:
`
private func connectSocket() {
    let url = RESTClient.socketURL
    var request = URLRequest(url: url)
    var headers: [String: String] = [:]

    if let token = SessionManager.shared.user?.authentication_token {
        headers["X-API-TOKEN"] = token
        headers["X-API-EMAIL"] = SessionManager.shared.user?.email
    }
    request.allHTTPHeaderFields = headers
    socket = WebSocket(request: request)
    keepConnectionAlive = true
    socket?.delegate = self
    socket?.connect()

}
`
`
func didReceive(event: WebSocketEvent, client: WebSocket) {
    switch event {
    case .connected(let headers):
        isConnected = true
        initialLoad()
        subscribeSocketRoom()
        print("websocket is connected: \(headers)")
    case .disconnected(let reason, let code):
        isConnected = false
        print("websocket is disconnected: \(reason) with code: \(code)")
        if keepConnectionAlive && reachability.connection != .unavailable {
            self.socket?.connect()
        }
    case .text(let string):
        //parse message
        if let strData = string.data(using: String.Encoding.utf8, allowLossyConversion: false) {
            do {
                let json = try JSONSerialization.jsonObject(with: strData, options: .allowFragments)
                if let dict = json as? NSDictionary {
                    if let _ = dict["identifier"], let messageWrap = dict["message"] as? [String : AnyObject], let messageDict = messageWrap["message"] as? [String : AnyObject] {
                        if let message = Comment(dictionary: messageDict) {
                            markAsRead { (success) in
                                self.commentRecieved(message)
                            }
                        }
                    }
                }
            } catch let error as NSError {
                print(error)
            }
        }
    case .binary(let data):
        print("Received data: \(data.count)")
    case .ping(_):
        break
    case .pong(_):
        break
    case .viabilityChanged(_):
        break
    case .reconnectSuggested(_):
        break
    case .cancelled:
        isConnected = false
    case .error(let error):
        print("WebSocket recieved an error: \(String(describing: error))")
        isConnected = false
        if keepConnectionAlive && reachability.connection != .unavailable {
            self.socket?.connect()
        }
    }
}`

This part was added recently, in order to fix issue at least somehow...
if keepConnectionAlive && reachability.connection != .unavailable {                 self.socket?.connect()  }

I'm facing the same issue.
@MihailMatyatsko did you find any solution for this?

I'm having the same issue.

I may be experiencing a slightly different issue, but sometimes my websocket will get into a broken state and will never reconnect to the server.
I fixed it in a similar way:
switch event {

  ...

  case .error(let error):
      isConnected = false
      print("[error] Starscream: \(error.debugDescription)")
      switch(error) {
      case .some(HTTPUpgradeError.notAnUpgrade(200)):
           print("[debug] Starscream: Forcing disconnect and reconnect..")
           self.socket?.forceDisconnect()
           self.socket = nil
           self.openWebsocket()
       default:
           break
       }
   }
}

@maddiebaka  Can you give an example openWebsocket function?
my code is not working to reconnect (when switching from background to foreground)
my openWebSocket function :
let urlString = "wss://(Const.CLUSTER_ID)(Util.qrCode)&id=(Util.connectionToken)"
print(urlString)
if let url = URL(string: urlString) {
var request = URLRequest(url: url)
request.timeoutInterval = 5
request.addValue("test", forHTTPHeaderField: "Origin")
request.addValue("test, forHTTPHeaderField: "Host")
                self.socket = WebSocket(request: request)
                self.socket.delegate = self
                self.socket.connect()
            }


Status update

This PR updates the status of a book project and an iOS tutorial.

I think this looks good—feel free to merge when ready
:shipit:


RBAC roles error while joining Kubernetes cluster to the Federation

Hi guys,
I am running one Federation cluster and one Kubernetes cluster (version 1.12.1) on two different Ubuntu 16.04 machines. The federation cluster (host cluster) is on the network <IP_ADDRESS>/24 and the second cluster is on <IP_ADDRESS>/23. I am unable to join the second cluster from host cluster using the command:
kubefed join cloud-cluster --host-cluster-context=kubernetes-admin-host --cluster-context=kubernetes-admin-cloud
The following error appears:
error: Couldn't get clientset to create RBAC roles in the host cluster: Get https://<IP_ADDRESS>:6443/api: dial tcp <IP_ADDRESS>:6443: i/o timeout
However, RBAC authorization is already enabled in api-server of both the clusters. Does anyone experience this type of error? If yes, please tell me how did you resolve it. To my understanding, I was thinking that it could be because of two different networks and there is a firewall in between them. Looking forward to your solutions.
Thanks

The error there is an i/o timeout. It's possible that because of a connection failure, the federation plane was simply unable to resolve that the appropriate RBAC roles already exist on the target cluster. My first thought would be to confirm that all security settings allow for communication (in both directions) over the specified port.


Community Detection with Louvain Algorithm

Hi,
I couldn't find a Pregel implementation of the Louvain algorithm for community detection in ArangoDB. Are there any plans to implement it?

Much needed? I agree


Initial sleep on Retry-After

If the initial response to an LRO contains a Retry-After header, sleep
for the specified duration before beginning to poll.
Thank you for your contribution to Go-AutoRest! We will triage and review it as soon as we can.
As part of submitting, please make sure you can make the following assertions:

[ ] I've tested my changes, adding unit tests if applicable.
[ ] I've added Apache 2.0 Headers to the top of any new source files.
[ ] I'm submitting this PR to the dev branch, except in the case of urgent bug fixes warranting their own release.
[ ] If I'm targeting master, I've updated CHANGELOG.md to address the changes I'm making.

Fixes https://github.com/Azure/go-autorest/issues/538


Fix wrong article count in user page tab

Reports

https://feedback.matters.town/bug-reports/p/7f1204

Move issue to here


Proposal default > ini > env > cmd

it would be nice to extend current behaviour to ini file > env variables > cmdline (usually in this order) like many Go programs do, and also many modern containerizable application
for example if I would have
cliche variables
commandLineParams().getOpt (myoption: 12)

myproject.ini file with
myoption=22

env set with
MYPROJECT_MYOPTION=32

cmdline with
--myoption=42

At runtime I'd get
echo myoption
# 42

due to default > ini > env > cmd order
Basically given existing variables block, it can be re-used to read ini file and environment variables (using custom prefix) and finally set the variable according to a certain order

Maybe somehow integrate https://juancarlospaco.github.io/nodejs/nodejs/jsdotenv#typeminussafe-dotenv-for-nim-optimized-for-javascript

Fixed, using useEnvVars=true should try to read from env vars, you may need to import std/envvars.

static default :arrow_right: env var :arrow_right: command line


feat: add support to use custom labels

In a scenario where we have several apps using the same Prometheus instance, one way to identify each app is using a custom label, without changing the naming of the metrics.
Feel free to review!
ps: Thanks for the plugin is amazing, nice job!

Yeah great addition and code looks fine.
I'll try and merge it tonight or tomorrow morning and create a new version!

Thanks, it's a great plugin, and I'm happy to contribute.
If you don't mind, could you add the hacktoberfest-accepted label?

New version is on npm ready for use ;)


Add timeouts to curl when building the hive image

Some Hive artifacts may be slow to download, so make sure curl never gets stuck indefinitely.

It's failing. Can we set some more generous timeout? 30 minutes ? (1800 s)

It failed at 83%. I bumped it to 1800s (30 minutes) and added a comment explaining why we choose this value.


Testing guide example runs no tests

Hi,
I've tried the advanced angular testing with the quickstart example. Unfortunately executing pub run angular_test outputs:
The pub serve output is at /tmp/angular_test_pub_serve_output.log.
Run with --verbose to get this output in the console instead.
pub serve test --port=0
Pub "serve" started on http://localhost:46447
Finished compilation. Running tests...
pub run test --pub-serve=46447
No tests ran.
Shutting down...
`pub serve` was not terminated

Executing with `--verbose`` results in:
pub serve test --port=0
Loading source assets...
Loading angular2, angular2/transform/reflection_remover, test/pub_serve and dart_to_js_script_rewriter transformers...
Pub "serve" started on http://localhost:34653
Serving angular_app test on http://localhost:34653
Finished compilation. Running tests...
pub run test --pub-serve=34653
No tests ran.
Shutting down...
`pub serve` was not terminated

any clues, what's wrong?

As of the latest version of angular_test you have to specify a platform manually:
$ angular_test --test-arg=--platform=dartium

Usage: https://github.com/dart-lang/angular/tree/master/angular_test
I'll try to get the docs updated. /cc @kwalrath and @chalin

I haven't updated the Testing page because there is already a PR over it with more significant changes (https://github.com/dart-lang/site-webdev/pull/673). I'll discuss with @kwalrath about how to best move forward with this.

This issue was moved to dart-lang/site-webdev#792

Duplicate of https://github.com/dart-lang/site-webdev/issues/792.


fix: Use dropRole to delete role

Fixes #22
I found out that in order to delete a document from the system.roles collection, the user needs to be given explicit permission for the collection. The admin user might not have those privileges on custom databases.
However, we can instead use dropRole on the database embedded in the stateId to delete the role.

@krtk6160  thank for the contribution version 1.4.0 published


σj Parameter Usage

I am writing to seek clarification on the implementation of the σj parameter as described in your paper. The paper mentions that σj is used to adapt the multiplication of K (key) and Q (query) matrices and suggests that this adaptation occurs for each wavelength.

However, upon reviewing the code, I noticed that the implementation uses 1 and 2 heads for the respective calculations
https://github.com/caiyuanhao1998/MST-plus-plus/blob/179a9a2d8521bc8ebbfa2557071b2c717f141013/train_code/architecture/MST_Plus_Plus.py#L101
https://github.com/caiyuanhao1998/MST-plus-plus/blob/179a9a2d8521bc8ebbfa2557071b2c717f141013/train_code/architecture/MST_Plus_Plus.py#L130
and the σj is the same for all wavelengths in a head
I am trying to reconcile the implementation details with the description provided in the paper, and any additional insight you could provide would be greatly appreciated.

Hi, thanks for your interest. Please note that $\sigma_j$ in the paper is constant and the $\sigma$ in the code is a head-dimension vector. It means that for each channel (wavelength), we use a different $\sigma$.
If you find our repo helpful, please help us star it. Thanks.

Hi, thanks for your interest. Please note that σj in the paper is a constant and the σ in the code is a head-dimension vector. It means that for each channel (wavelength), we use a different σj.
If you find our repo helpful, please help us star it. Thanks.

Okey. However, that would be the case if "heads" were equal to the number of channels, which isn't the case in the code since 1 and 2 heads are used respectively for each SAB, not?


Animations not working

Hey Marco,
I tried to run the example airplane1.ply but discovered that i do not get an animated plot but rather only the last frame. In other words, the plot-window is only opening for the last frame whenever plot.interactive is called.
I am running the code in pycharm with anaconda environment on mac os (arm processor).
Any tips how i can make this work?
Thanks a lot!
Paul

Hi Paul, Yes this is a problem with OSX.. you need to make a call to plt.interactive() the press q:
...
# Setup the scene
plt = Plotter(axes=1, interactive=False)
plt.show(world).interactive() ###############

for t in np.arange(0, 3.2, 0.02):

    plane.pos(9*t-15, 2-t, sin(3-t)).rotate_x(0+t) # make up some movement

    plt.show(world, plane, __doc__, viewup="z")
    if plt.escaped:
        break  # if ESC button is hit during the loop

Thanks, this works for me!
Is it possible to code input q? so i dont need interaction from user?

I think I managed to find a better solution, check out the dev version and look at
https://github.com/marcomusy/vedo/blob/master/examples/simulations/airplane1.py
https://github.com/marcomusy/vedo/blob/master/examples/simulations/airplane12py

I installed dev version and verified in code that I am indeed using dev version via
vedo.version._version # evaluates to "2022.4.2.dev3"

But the behavior is still the same as before (plot window only opens when animation is done or rather when call to interactive() happens)

Yes, sorry I just disabled it.. I need to understand better how this can work (it does ok in OSX but not in ubuntu)...

no problem, let me know if you figured it out, i am happy to test it

I had a same issue with macos - arm processor.
If you add
        else:
            self.process_events()

to https://github.com/marcomusy/vedo/blob/0f3688a04571c9d890bb53135502bc3dbabd7682/vedo/plotter.py#L3138 if-block, examples (airplane1, airplane2, tunnelling1, epicycles, gas, org_maps2d, ...) run properly for me. Would this have any unexpected side-effects @marcomusy?

Hi @j042 - yes it seems to work fine on OSX system but not on linux.
In fact you don't to change the source code, just add in
https://github.com/marcomusy/vedo/blob/master/examples/simulations/airplane1.py
...
    plt.show(world, airplane, __doc__, viewup="z", resetcam=False)
    plt.process_events()

Hi @j042 - yes it seems to work fine on OSX system but not on linux. In fact you don't to change the source code, just add in https://github.com/marcomusy/vedo/blob/master/examples/simulations/airplane1.py
...
    plt.show(world, airplane, __doc__, viewup="z", resetcam=False)
    plt.process_events()

This works for me on OSx, thanks :)


can usefetch return the raw response of request so we  can pass data and cookies to client when SSR?

Describe the feature
in some case, we want to pass cookies and data of one request from server to client when SSR, but now we can only use usefetch to pass data to client, and can only use $fetch to pass cookies to client(refer to this: https://codesandbox.io/s/summer-cdn-1yx8s?file=/app.vue).  so can usefetch return the raw response of request so that we can pass cookie to client manually?
maybe there is some function that can do that, please show me if there is one.
Additional information

[x] Would you be willing to help implement this feature?
[x] Could this feature be implemented as a module?

Final checks

[X] Read the contribution guide.
[X] Check existing discussions and issues.

Noting here that we'll likely refactor internally to use $fetch.raw, but we won't expose headers by default as it will add to the payload when most people won't need it. Moreover, it might be a security issue so it's better if people opt in manually.
If you need this, you can use $fetch.raw within useAsyncData like this:
const { data } = await useAsyncData(async () => {
  const res = await $fetch.raw('/my/url')
  // access res.headers, and res._data
  // return whatever makes sense
  return {
    foo: 'bar'
  }
}


Repos are hidden until logout => login

Component
server
Describe the bug
The list of repositories is not updated, when one is added by other another user.
You either have to logout and login again, or go directly to the new repository.
Logging in is a bit slow, maybe because of this repository list updating, so if that is caused by checking which repos to show in the list, then that cannot be done on each refresh without speeding it up.
Maybe a button for manual refresh of the list is enough.
Reproduction steps

Log in to Woodpecker as user A
Log in to Woodpecker as user B in another browser session
As user B, add a Github repository to Woodpecker (/repos/add), it must be a repo that user A also has access to.
Refresh the Woodpecker overview of repositories (/repos) as user A

The newly added repo will not be on the list of activated repos.
Expected
The new added repo should be shown.
System Info
{"source":"https://github.com/woodpecker-ci/woodpecker","version":"next-aeb7bcb26a"}

Additional context
Github Forge
https://github.com/woodpecker-ci/woodpecker/blob/80a237c6f19500ba91bbca673f268dfbff7d95f5/server/api/login.go#L169
Validations

[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Checked that the bug isn't fixed in the next version already [https://woodpecker-ci.org/faq#which-version-of-woodpecker-should-i-use]
[X] Check that this is a concrete bug. For Q&A join our Discord Chat Server or the Matrix room.

Could you add the steps you followed in detail in order to reproduce this?

It is probably because of this list of cached permissions
https://github.com/woodpecker-ci/woodpecker/blob/80a237c6f19500ba91bbca673f268dfbff7d95f5/server/api/login.go#L169

Also related to https://github.com/woodpecker-ci/woodpecker/issues/2502


Add some spacing on the "About" view

On my phone there is no space between the text and the edge of the screen. I would be nice to have the usual 5 to 20px left and right. Might be a good issue for a new contributor. Do we have a tag for that?

I quite like for-beginners or entry-level
I think it's a great idea to create this tag - help get us some more contributors. We should then add the project to lists like Awesome-for-beginners or up-for-grabs

Good idea! Done :) Please feel free attach this tag to any other issues that you guys feel would suit, too.

Contributors who are still relatively new to the codebase should feel free to grab these issues, right?

Sure, I think anyone should feel free to tackle any  open issue that they wish to. From my point of view, the beginners tag will make it easier for a newbie to find an easy task when he arrives, but I don't think we should "reserve" issues solely for that occasion. Besides, new issues pop up all the time anyway. :)

@misaochan "for beginners" sounds rather exclusive indeed.
Some might feel bad implementing a task marked "for beginners", it feels a bit like stealing cotton candy from a kid at Disneyland.
To avoid this, how about maybe renaming the tag "beginner friendly"?
By the way, creating this tag was a great idea I think :-)

Haha good point, done!


adding new accounts

Note

Adding new accounts
Consistent naming and removing default .com from json files.
Improving error handling by notifying user of sort order issues, easier to tell which site is out of order
Building docs
Adding<EMAIL_ADDRESS>so it's consistent across developer env during builds.

I'll do my best to review this tomorrow. At a glance, things look mostly fine.

Sounds good. Made changes as requested. Let me know if missed anything.

@artivilla After discussion with the jdm-contrib team, we've opted not to go forward with the addition of a formal Code of Conduct or modifications to remove ".com" from site names. Besides that, I've reorganized your changes into more distinct commits; in the future, it would be more helpful to separate distinct changes into separate PRs to be reviewed and merged as they are accepted.
With all that said, we sincerely appreciate your contribution. Thank you for the work you've put in here! 😊


Addded congruency of triangle calculator

Issue Id you have worked upon -
#276
Briefly explain your program logic -
Two triangles are congruent if their corresponding sides are equal. My code inputs the sides of two triangles and checks all possible combinations of congruent sides to see if they are congruent or not.
Screenshots(Attach 2 screenshots of your own input and output) -

By raising this PR I affirm that -

[x] My code follows the guidelines of this project.

[x] I have performed a self-review of my own code.

[x] I have commented my code.

[x] My code gives the correct output.

[x] I affirm that I strictly follow contributing guidelines and code of conduct.

@the-dg04,
The condition you have used only checks for SSS axiom and that belongs to similar triangle and not congruent triangle.


v-hero Layout Transition Not Working as Expected When Removing Items in a List

Hey I’m trying to use the v-hero directive from hero-motion to create smooth layout transitions when items in a list are removed. However, the items immediately jump to their new positions instead of transitioning smoothly. Is there a way to make it work?
<template>

        {{ item.id }}

</template>

I have created a demo of this on stackblitz -> here
The transition animation doesn't work because hero-motion only captures the current element information when the element is created or deleted, but deleting an element from a list does not trigger this behavior for other elements.
Currently, I'm updating the entire DOM manually using a variable in this demo, but this is not a scalable solution.
And here is the main logic:

<template>
  <HeroProvider as="main" class="w-screen h-dvh bg-white">

        {{ item.id }}

  </HeroProvider>
</template>

In the future, I plan to either expose a method for manual position updates or introduce a global attribute to manage interactions with other elements. I need to ponder this further.
Anyway thanks for exposing this issue.


Vite support

Which @angular/* package(s) are relevant/related to the feature request?
No response
Description
When will angular finally have vite support? I just don't see this topic dicussed eneugh. We want vite support.
Proposed solution
/
Alternatives considered
/

Duplicate of https://github.com/angular/angular-cli/issues/23771


ExtDataDriver test case for sparse input/output broken in IO server.

I had merged develop into my ExtData refactor branch and ran my usual tests with ExtDataDriver.x where I found one was failing. I then checked and found the plain develop branch was also failing. This test exercises the case when the input or output grid is so coarse that is can not be decomposed in such a way that every processor has a DE. This test has worked in the past. It is now failing in the pfio server when History tries to write (this is using the simple server, no server on separate nodes) like so:
libMAPL.pfio.so    00002AAAB873AE1C  pfio_abstractdata         455  AbstractDataReference.F90
libMAPL.pfio.so    00002AAAB8474CCD  pfio_simplesocket         124  SimpleSocket.F90
libMAPL.pfio.so    00002AAAB85DF8A6  pfio_clientthread         338  ClientThread.F90
libMAPL.pfio.so    00002AAAB860C9E9  pfio_clientmanage         291  ClientManager.F90
libMAPL.base.so    00002AAAB6BFA89F  mapl_newcfiomod_m         807  MAPL_newCFIO.F90
libMAPL.base.so    00002AAAB6BD5076  mapl_newcfiomod_m         372  MAPL_newCFIO.F90
libMAPL.history.s  00002AAAB52F1EFF  mapl_historygridc        3527  MAPL_HistoryGridComp.F90

Now when History writes and make the collective_stage_data call, not every processor has any data to send. In that case I allocate an array of size zero of the appropriate shape and pass that to collective_stage_data on those mpi processes that have no data. This has just worked in the past everytime I remember running this test.
To test copy these files somewhere:
/gpfsm/dnb31/bmauer/ExtData_Test_Framework/test_cases/case12
Then from that location run:
mpirun -np 216 install_location/bin/ExtDataDriver.x
Note I usually just run this on fewer physical cores and oversubscribe as the sizes of the grid is tiny and even oversubscribing doesn't take it long, just seconds.
What seems to be going on is that there is a point where it copies the datareference passed from the application to a new datareference. It creates a fortran pointer for the datareference that was passed by the application. In addition the SimpleSock gets a visitor_handle and copies the pass in data reference to the data_reference in the visitor handle where this is failing. Something must have changed where now something that was not a null pointer is now a null pointer in the visitor handle (maybe something was being allocated size 0 and now is not?) Or we were just lucky this cases working? I don't know.

I'm going back in time, trying to see what version of MAPL broke this.

My guess would be recent changes by Matt, Weiyuan, and myself to improve NAG portability.  There were subtle issues with treatment of 0-sized arrays that probably caused the problem.   (@weiyuan-jiang if so, then please try to add another unit test that guards against this.)

Got it. In the module LocalMemReference.F90 there is a routine "allocate".
In 2.5 it looks like this:
   subroutine allocate(this, rc)
      class (LocalMemReference), intent(inout) :: this
      integer, optional, intent(out) :: rc
      integer(kind=INT64) :: n_words
      integer(kind=INT64) :: n
      integer :: status

      n = product(int(this%shape,INT64))
      n_words = n * word_size(this%type_kind)
      allocate(this%i_ptr(n_words), stat=status)
      _VERIFY(status)
      this%base_address = c_loc(this%i_ptr)
      _RETURN(_SUCCESS)
   end subroutine allocate

where as in 2.6 it looks like this:
   subroutine allocate(this, rc)
      class (LocalMemReference), intent(inout) :: this
      integer, optional, intent(out) :: rc
      integer(kind=INT64) :: n_words
      integer(kind=INT64) :: n
      integer :: status

      n = product(int(this%shape,INT64))
      n_words = n * word_size(this%type_kind)
      allocate(this%i_ptr(n_words), stat=status)
      _VERIFY(status)
      if (n > 0) then
         this%base_address = c_loc(this%i_ptr)
      else
         this%base_address =  C_NULL_PTR
      endif
      _RETURN(_SUCCESS)
   end subroutine allocate

Reverting that fixes the test. Does this have implications for NAG?

Probably not the best fix, but as a hotfix it lets us move forward.
I think the "right" fix should be upstream where the C_NULL_PTR is consumed.     Something there is apparently distinguishing between a pointer to a 0-sized array and a C_NULL_PTR and should now check first if it is C_NULL_PTR.  @weiyuan-jiang probably knows where this is.  (Possibly in multiple places, unfortunately.)
If we can find the right fix quickly, it is probably worth doing now.  Otherwise, do the kludge and keep the issue open for the longer term fix.

@weiyuan-jiang I can reproduce on 6 cores if I hack History so it doesn't let MAPL pick a distribution for the output grid but just uses 1x6 if that helps to debug.

I have noticed this problem. In my new branch, I changed back to the original one https://github.com/GEOS-ESM/MAPL/blob/f5615cfce6a0e4e256418460f9aec5f855520fcf/pfio/LocalMemReference.F90#L365-L373
Tom told me we can use __NAG_COMPILER_BUILD.  It seems working

OK - that is an acceptable solution.   I'm still curious how the Intel compiler was not able to use C_NULL_PTR when this%base_address is consumed at the later stage.

This seems to have been fixed in develop so closing the issue

Closing, fixed


tensor flow session?

I keep running into errors with tensorflow: it seems like they have deprecated tf.Session() that is still used somewhere in this package. Could  you specify the tensorflow version in requirement? Thanks!
Best,
Chenling

OnClass has upgraded its tf version to 2.0 now


 Use the filter argument to control this behavior.
    zin.extract(member=item, path=temp_folder)

tests/test_corrupted_files.py: 7 warnings
tests/test_libmat2.py: 24 warnings
  /build/source/libmat2/archive.py:206: DeprecationWarning: Python 3.14 will, by default, filter extracted tar archives and reject files or modify their metadata. Use the filter argument to control this behavior.
    zin.extract(member=item, path=temp_folder)

tests/test_libmat2.py::TestCleaningArchives::test_tar
  /build/source/tests/test_libmat2.py:689: DeprecationWarning: Python 3.14 will, by default, filter extracted tar archives and reject files or modify their metadata. Use the filter argument to control this behavior.
    zout.extractall(path=tmp_dir)

tests/test_libmat2.py::TestCleaningArchives::test_tarbz2
  /build/source/tests/test_libmat2.py:759: DeprecationWarning: Python 3.14 will, by default, filter extracted tar archives and reject files or modify their metadata. Use the filter argument to control this behavior.
    zout.extractall(path=tmp_dir)

tests/test_libmat2.py::TestCleaningArchives::test_targz
  /build/source/tests/test_libmat2.py:724: DeprecationWarning: Python 3.14 will, by default, filter extracted tar archives and reject files or modify their metadata. Use the filter argument to control this behavior.
    zout.extractall(path=tmp_dir)

tests/test_libmat2.py::TestCleaningArchives::test_tarxz
  /build/source/tests/test_libmat2.py:794: DeprecationWarning: Python 3.14 will, by default, filter extracted tar archives and reject files or modify their metadata. Use the filter argument to control this behavior.
    zout.extractall(path=tmp_dir)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED tests/test_lightweight_cleaning.py::TestLightWeightCleaning::test_all - libmat2.pdf.cairo.MemoryError: out of memory
===== 1 failed, 119 passed, 1 deselected, 70 warnings in 95.03s (0:01:35) ======
error: builder for '/nix/store/3vq0p95id7r190i6fwk5zp4zjh2vb7ll-python3.12-mat2-0.13.4.drv' failed with exit code 1
error: 1 dependencies of derivation '/nix/store/16d6hcxbbkpib3wbpxjf54wn0b8r25wp-metadata-cleaner-2.5.6.drv' failed to build
error: 1 dependencies of derivation '/nix/store/a1kf7ihd21cmfpf6bczvi15l94y27bjk-system-path.drv' failed to build
error: 1 dependencies of derivation '/nix/store/4v73rqq0h9mzhpqhmgd68jmpzz00lnlj-nixos-system-Bitscoper-WorkStation-24.11pre692963.a3c0b3b21515.drv' failed to build

Additional context
Occurs when doing sudo nixos-rebuild switch --upgrade-all on NixOS unstable.
Notify maintainers
@dotlambda
Metadata
[bitscoper@Bitscoper-WorkStation:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 6.10.9-zen1, NixOS, 24.11 (Vicuna), 24.11pre690827.5633bcff0c61`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.18.8`
 - channels(root): `"nixos"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

duplicate


Transactions are showing twice, same nonce, same fee, same tx hash... one confirmed, one pending

Not yet sure how this is happening but I have seen at least 5 cases like this with seemingly duplicate transactions. The ones with nonce 1, 2, 3 are calling the same function/making the same transfer, with the same fee and nonce twice. That shouldn't be possible and I am not sure how this is happening.
Since the transaction hashes are the same... perhaps they are not even different instances. an API issue? if they were RBF'ed transactions I would expect them to have different fees yet same nonce.

Is this an API issue?

Per the screenshot, should this get filed in the explorer repo instead or is it also showing in the wallet?

Users are seeing this in the wallet or dapp, didn't have screenshots of that yet so I added the explorer view instead. I will double check with users as it pops up again.

If it's showing up in both, I'd suspect an API issue and that we transfer this issue there for diagnosis


For easier use in the browser, add simple guard against undefined process global

When using browserslist with webpack and targeting the browser, users need to add
new webpack.DefinePlugin({ 'process.env': {} }),

to their webpack config in addition to more idiomatic DefinePlugin uses (e.g. new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify('production') })).
This PR adds a very simple typeof test on the process global with a default value to avoid the need for that extra unintuitive bit of config.

Thanks. Released in 2.10.1.


PyDFP unexpected exiting code when import

Before submitting the issue

[X] I have checked for Compatibility issues
[X] I have searched among the existing issues
[X] I am using a Python virtual environment

Description of the bug
unexpected exiting code after import ansys.dpf
print("1")
from ansys.dpf import core as dpf
print("2")    # code exited.
Steps To Reproduce
as indicated in the code.
It can print 1 and cannot print 2.
Which Operating System causes the issue?
Windows
Which DPF/Ansys version are you using?
Ansys 2021 R2
Which Python version causes the issue?
3.12
Installed packages
ansys-dpf-core           0.13.0
cachetools               5.5.0
certifi                  2024.7.4
charset-normalizer       3.3.2
colorama                 0.4.6
contourpy                1.3.0
cycler                   0.12.1
fonttools                4.53.1
google-api-core          2.19.2
google-api-python-client 2.142.0
google-auth              2.34.0
google-auth-httplib2     0.2.0
googleapis-common-protos 1.65.0
grpcio                   1.66.0
httplib2                 0.22.0
idna                     3.8
importlib_metadata       8.4.0
kiwisolver               1.4.5
matplotlib               3.9.2
numpy                    1.26.4
packaging                24.1
pillow                   10.4.0
pip                      22.0.4
platformdirs             4.2.2
pooch                    1.8.2
proto-plus               1.24.0
protobuf                 5.27.4
psutil                   6.0.0
pyasn1                   0.6.0
pyasn1_modules           0.4.0
pyparsing                3.1.4
python-dateutil          2.9.0.post0
pyvista                  0.44.1
requests                 2.32.3
rsa                      4.9
scipy                    1.14.1
scooby                   0.10.0
setuptools               58.1.0
six                      1.16.0
tqdm                     4.66.5
typing_extensions        4.12.2
uritemplate              4.1.1

Hello @hycghana,
The issue is that ansys-dpf-core 0.13.0 si too recent for Ansys 2021 R2.
As per this compatibility table, the latest possible version of ansys-dpf-core one can use with Ansys 2021 R2 is ansys-dpf-core==0.9.0.
As shown in the installation documentation here, you can install it with:
pip install ansys-grpc-dpf<0.4.0; pip install ansys-dpf-core<0.10.0

Closing this issue as answered. Please reopen it if you still experience the issue.


async ?

Would it be possible to make this lib async using CURL multi ?
This lib might be of help https://github.com/ericmuyser/php-class-curl/blob/master/src/curl.php but there is still a need to run a ->update() in a while loop to gather returns... Which is faked async imo.
Any insight ?
Thanks !

I hadn't thought about it. What do you think the API for that might look like?
One thing to keep in mind is that every request will be wrapped in a transaction on the server side. So doing something like saving two nodes and then attaching them in a relationship might be difficult to do this way:
// This happens async
$nodeA->save(function () { ... });
// This happens async
$nodeB->save(function () { ... });
// If either of the first two calls don't return before this one, Bad Things will occur
$nodeA->relateTo($nodeB, 'FOO')->save(function (){ ... });

What problem are you trying to solve? If it's the case of too many server calls, perhaps batches are the way to go? Maybe we could make batches requests (where all the operations occur in the same transaction) async, but not the rest of the library?
I'm interested to hear any thoughts and ideas you have about this.


New Contribution

Contributor: thinhquylat
SSH Public key: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMc/pxjcp8dR+LnDH18n4wsVDKlsrJ3zoTcRlQ0dKdXk
Attestation: [any form of attestation for contribution (e.g., signature) - Optional]

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMc/pxjcp8dR+LnDH18n4wsVDKlsrJ3zoTcRlQ0dKdXk

I'm here.
I'm ready to contribute


Refactor Dependency structure

add git submodules in /vendor/ and change respective include dirs
While I'm at it, change from glfw/glfw to TheCherno/glfw to allow later use of custom title bars and use with Walnut

Had to settle for just including manual downloads in the /vendor/ directory, using the cloned submodules themselves results in all of the test cases being compiled, which don't pass, in GLM's case. Also, Cherno's fork of GLFW doesn't include a version of glfw3.lib for vs2022, which I need.


Windows 10, Screenshot (Win+ Print Screen) shortcut > Num0 mapping done, but it is not working, when i press Num0. I have turned On Admin priv. as always. Please help.

Microsoft PowerToys version
0.37
Running as admin

[X] Yes

Area(s) with issue?
Keyboard Manager
Steps to reproduce

✔ Expected Behavior
I expected to get screenshot by pressing Num0 key
❌ Actual Behavior
No screenshot taken by pressing Num0 key.
Other Software
No response

I know it's not fixing your issue: Windows 10 settings has a switch to open screen snip when pressing the print button.
It's a lifechanger for me 😉

You mapped the shortcut the wrong way around.

@lavaground did swapping them correct it?


feat: filter tests and support verbosity for debugging

Closes #209 and #210
What's introduced
Featurevisor tests can be now run with some additional options in CLI:
$ featurevisor test
$ featurevisor test --keyPattern="myFeatureKey|mySegmentKey"
$ featurevisor test --keyPattern="myFeatureKey|mySegmentKey" --assertionPattern="assertion description"
$ featurevisor test --verbose

If you are using featurevisor test as an npm script like:
// package.json

{
  "scripts": {
    "test": "featurevisor test"
  }
}

Then do:
$ npm test -- --keyPattern="myKeyHere"

See docs: https://featurevisor.com/docs/testing/#cli-options


CLI needs more support for client credential work flows

Command
When we authenticate using client credentials, using a client with the cloud_controller.admin authority, we're unable to create orgs as expected.
# What I'd like to do:
cf auth client_id client_secret --client-credentials
cf create-org myorg
cf target -o myorg
cf create-space myspace

What occurred
[2018-07-11 19:03:15.74 (UTC)]> cf create-org SMOKE-1-ORG-601c8de8f6100d85
Creating org SMOKE-1-ORG-601c8de8f6100d85 as ...
OK

Assigning role OrgManager to user  in org SMOKE-1-ORG-601c8de8f6100d85 ...
FAILED
Failed assigning org role to user: Server error, status code: 404, error code: 20003, message: The user could not be found:

What you expected to occur
I expected CF CLI to have exit status 0 after creating the org. Assigning the OrgManager role is unexpected.
CLI Version
cf version 6.37.0+a40009753.2018-05-25
CC API Endpoint Version
2.115.0
CF Trace
nah
Platform & Shell Details
nah
Any other relevant information
We need this to make progress on this security-related feature narrative. I'm working on this with @jhamon from UAA team.

Thanks @staylor14, the CF CLI will need to refactor create-org before we can dig into this bug. I've put this story in the icebox until the refactor is done.

Note this the create-org bug was fixed in CLI v6.39.0. However we are leaving this issue open for since we have not implemented the same fix for create-space.

This issue has been resolved for the create-org and create-space commands in cf V6.40.0.
If anyone happens to stumble upon other commands that do not work with --client-credentials, please file additional issues. Thanks everyone!


added rumble manager and demo

Implement #191

Feel free to be brutal. I'd rather have it right.
Also, I did not implement rumbling across the functions of the toolkit (didn't know whether that should be in here or later) just in the demo.

@Malcolmnixon wants me to create a sort of "Rumble Player" to that can find the rumble manager, and provide a means to add rumble to any function/gun/etc

After more discussion with @Malcolmnixon I will be making the rumble manager a singleton which "XRToolRumbleFeature"s added to the hands will ensure exist. This Singleton will be easier to access from scripts that want to make rumbling happen.

I had forgotten how primitive haptics are implemented in Godot 3 :)
At first glance I think I get the idea behind this and it seems a good approach, I'll have to find some more time to actually experiment with it.
This is the kind of enhancement that could use more detail in the OP to explain what is being added and how its supposed to be used from a user point of view (i.e. someone making a game).

Quick discussion in XR meeting about this as we'd like to move forward with this PR. Need to get input from more XR tool users what they are expecting out of rumble and whether this is a solution they agree with.
Would love everyones feedback.
@lunarcloud would you mind rebasing this so that the merge issues are resolved so people can test?

Superceded by #557


If switch to View Only Mode with Fragment Selection you cannot change or select another selection mode

Steps to Reproduce

Open Ketcher in normal mode.
Use the Selection Tool and choose the "Fragment selection".
Switch to "View Only" mode. ketcher.editor.options({ viewOnlyMode: true })

Actual behavior
In "View Only" mode, the "Fragment selection" option becomes unusable, and it's impossible to switch to other selection modes.
Additionally, if "Lasso" selection was chosen before switching to "View Only," it behaves like "Rectangle" selection in that mode.
Expected behavior
The user should be able to continue selecting fragments or switch between different selection modes, or all selection options should be blocked except Rectangle selection.
Proposed Solution: Block all selection modes except "Rectangle" and automatically switch to "Rectangle" selection when transitioning into "View Only" mode.
Screenshots
https://github.com/user-attachments/assets/08b1db85-899d-481b-b641-0ab1e794f0d5
https://github.com/user-attachments/assets/3aee26a2-8ffe-4c32-8650-5ed5a2117da2
Desktop:

OS: Windows 11
Browser Chrome
Version 128.0.6613.120 (Official Build) (64-bit)

Ketcher version
[Version 2.25.0-rc.4]
Indigo version
[Version 1.24.0-rc.3]
Bug found during testing: https://github.com/epam/ketcher/issues/4965

Pre-tested on Nightly. Bug fixed.
https://github.com/user-attachments/assets/bc9abd96-bdd8-4081-9504-d9cbd94a626f
Desktop:

OS: Windows 11
Browser Chrome
Version 128.0.6613.120 (Official Build) (64-bit)

Ketcher version
[Version 2.26.0-rc.1]
Indigo version
[Version 1.25.0-rc.1]

Tested. Bug fixed.
https://github.com/user-attachments/assets/8dd2e26a-4ebd-4a1e-ac79-96fe65987cf4
Desktop:

OS: Windows 11
Browser Chrome
Version 128.0.6613.120 (Official Build) (64-bit)

Ketcher version
[Version 2.26.0-rc.2]
Indigo version
[Version 1.25.0-rc.2]


Please tell me how to use the nougat_api interface, what parameters it accepts, and how it can receive requests from other servers?

Please tell me how to use the nougat_api interface, what parameters it accepts, and how it can receive requests from other servers?

Good point, I will add instructions in the README. You can also get the correct documentation if you visit
http://localhost:8503/docs

added instructions in the readme


Vite JS PostCSS plugin build bug

Describe the bug
Hi.
I'm using 11ty to build a static site with the Slinkity Plugin which uses viteJS as the bundler and dev server.
Using the PostCSS plugin preset-env, it simply allows modern CSS syntax to be used and then converts it to normal css the browser can understand.
The problem is it takes 2 builds (npm start and then to save a SCSS file) for the plugin to start processing the CSS and correctly transpile the modern CSS to normal CSS and then apply it.
On production builds the output is also the same, and therefore media queries fail to work (example), and or any CSS thats meant to processed by PostCSS Preset Env.
Example
@custom-media --from-bp2 (width > 36.375rem);

span {
  color: blue;
  @media (--from-bp2) {
    color: red;
  }
}

/** Expected **/
span { color: blue }
@media (min-width: 36.376rem) {
  span { color: red }
}

/** Actual on first build/development build **/
span {
  color: blue;
}
@media (--from-bp2) { /** Does not work. **/
  span {
    color: red;
  }
}

Expected behaviour
PostCSS Plugins should work and process the SCSS/CSS on the first try in development mode. In Production, I would expect all CSS files to be processed and work with all that the PostCSS plugins should apply.
Additional context
I've found that someone else has discovered this problem on the ViteJS discussion board.
Also:
Why is it so godamn hard to report a bug. ... Jumps through hoops.
Reproduction
goaway
Steps to reproduce

Setup Slinkity
npm install postcss-preset-env
Copy above postcss.config.js
Add some SCSS which contains modern css methods/properties
Run npm start

System Info
Chrome. MacOS

Used Package Manager
npm
Logs
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to vuejs/core instead.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

Is this issue Slinkity specific? It would be great if you can provide a repro with Vite only if it's a bug here.

Also: Why is it so godamn hard to report a bug. ... Jumps through hoops.
Reproduction
goaway

Repros help us to investigate bugs quicker, otherwise it's also as hard for us to understand the core issue.

@bluwy Hi there, thanks for your response. I was bit busy when creating the issue and couldn't commit to creating a detailed reproduction example.
I have since tried to put minimal repo on stackblitz, but it just takes a little too long to do. I kept hitting issues with npm, and build errors so I've left it for the time being. (link)
It shouldn't be an issue with Slinkity, as the bug seems to be happening as part of vite js dev server process. It just fails to process the plugin (Preset-Env) and polyfill the CSS on the first build during a development build. This also occurs for production builds (which obviously only builds the once).
So simply all that needs doing is to get a basic vitejs build running and add the PostCSS Preset Env plugin, and check the output on first development build and the production build.
I've got a postcss.config.js with:
module.exports = () => {
    return {
        plugins: [
            require('autoprefixer')(),
            require('postcss-preset-env')({
                stage: 1,
                features: {
                    'logical-properties-and-values': false,
                    'prefers-color-scheme-query': false,
                    'gap-properties': false,
                    'custom-properties': false,
                    'custom-media-queries': {
			preserve: false,
		    },
                    'place-properties': false,
                    'not-pseudo-class': false,
                    'focus-visible-pseudo-class': false,
                    'focus-within-pseudo-class': false,
                    'color-functional-notation': false,
                },
            }),
        ],
    };
};

Okay, I just found my issue.  Sorry to have wasted your time! @bluwy

That's the wonders of repros! Thanks for taking the time to making a minimal repro and providing updates. You've saved time on my end too 🙂


[KARAF-4803] Turn off Karaf configuration persistence manager

Still discussed in the corresponding Jira.

R: @jbonofre

retest this please

retest this please


Plotting of Compliance: Force arrow in wrong direction.

Either my understanding of physics of wrong, or the force along the x-direction is wrongly visualized.
I would expect the image below is optimal if the horizontal force is pointing in the other direction.

Thanks for reporting this issue.
There seems to be a bug in the plotting of EITHER the horizontal force or the vertical one.
If I remember correctly a negative y-force should point upward.
Its (probably) solved by removing the negative sign from the following line:
https://github.com/AJJLagerweij/topopt/blob/1ad20e0bf961301ebca7a07205d02a51b7827196/src_Compliance/plotting.py#L132-L133
I can have a look at it this Saturday and update the git.
Regards,
Bram

Thank you.
The solution looks reasonable by changing the sign in
https://github.com/AJJLagerweij/topopt/blob/1ad20e0bf961301ebca7a07205d02a51b7827196/src_Compliance/plotting.py#L124-L125
All the best.

Hello Gillhofer,
I see why your solution would solve the problem.
I want to verify that it is working, for this purpose I've been trying to recreate the problem.
I was not able to do so yet.
I've plotted the displacement fields of the cantilever beam example.

In both cases the load direction seems to coincide with the displacement direction.
But I agree that the plot you obtained is incorrect, could you share your load class?
Regards,
Bram

It is not exactly the same but very similar. The result of the optimization process looks sane if I change the sign like discribed above.
``
class Issue1_Load(Load):
def __init__(self, nelx, nely, young, Emin, poisson):
    super().__init__(nelx, nely, young, Emin, poisson)

def force(self):
    """
    The force vector containts a load in negative y direction at the top
    left corner.

    Returns
    -------
    f : 1-D array length covering all degrees of freedom
        A -1 is placed at the index of the y direction of the top left node.
    """
    f = super().force().reshape([self.nelx + 1, self.nely + 1, 2])
    f[70, 30, 0] = -1
    f[10,10,1] = -1.0
    return f.reshape(-1)

def nodeid_from_coords(self, x, y):
    # first id is the node id for the fixdos in x, second for y.
    return [x * (self.nelx + 1) * self.dim + self.dim * y,
            x * (self.nelx + 1) * 2 + 2 * y + 1]

def fixdofs(self):
    """
    The boundary conditions of the half mbb-beam fix the x displacments of
    all the nodes at the outer left side and the y displacement of the
    bottom right element.

    Returns
    -------
    fix : 1-D list
        List with all the numbers of fixed degrees of freedom.
    """

    return [node for i in range(0, self.nelx) for node in self.nodeid_from_coords(i, self.nelx)]


add loaders to functions

add a progress bar that uses the output of the progress callback.

https://codepen.io/DZuz14/pen/oqeMpY?editors=0010

add a progress bar that uses the progress callback


Mario eval is slow

Hi @jcwleo,
Your implementation is amazing. I was currently searching for a simple but powerful implementation, I modified it a bit and train it with SuperMarioBros. However, when I want to eval my agent (using eval.py), the framerate is very slow.
Do you know why?
Thanks,
Have a nice day,

@simoninithomas
Hello. I catched issue. you can modify config of use_cuda on eval.py.


Make some test helpers for pallets (MSA mostly)

Problem
There is a lot of copy-paste code that could be abstracted into helper functions, particularly in the msa pallet.  We already have a good start with test_public and test_origin_signed, and create_account.
It would make the code more readable, easier to maintain and easier for writing new tests if we could find a good abstraction for some of the keypair, account, MSA creation and any other things that are repeated in numerous (4+ ?) places.  Also see if current tests can use existing test functions.
Details
There are several places in the Msa pallet tests where we generate two key pairs, set an account variable to the public key of one of them, and use that to call Msa::create_account, like this test. 3 of them begin with "it_throws_error".
Tests like these might be good to convert to a Table Test pattern, useful for concisely defining and running several very similar tests.  Define a test case struct with one or two setup parameters, and an expected result parameter, declare a vec with your cases in it, then iterate over each and call the same code with different parameters.   Here is a simple example (note the use of generics):
struct TestCase<T> {
	schema: Vec<u8>,
	expected: T,
}

#[test]
fn test_require_validated_schema_size_errors() {
  new_test_ext().execute_with(|| {
    let test_cases: [TestCase<Error<Test>>; 3] = [
      TestCase { schema: vec![], expected: Error::TooShortSchema },
      TestCase { schema: Vec::from("foo".as_bytes()), expected: Error::TooShortSchema },
      TestCase {
        schema:
      Vec::from("foo,bar,bazz,way,wayway,foo,bar,bazz,thisiswaywaywaywaytoolong".as_bytes()),
        expected: Error::TooLongSchema,
      },
    ];
    for tc in test_cases {
      let err = AnnouncementPallet::require_validated_schema(tc.schema).unwrap_err();
        assert_eq!(tc.expected, err)
    }
  })
}

Other tests may not be similar enough to work with a Table Test pattern, but it's possible this type of code in the tests could be encapsulated into a function by itself, depending on where any of these variables are reused:
    let (key_pair, _) = sr25519::Pair::generate();
    let (key_pair_2, _) = sr25519::Pair::generate();

    let account = key_pair.public();
    let (new_msa_id, _) = Msa::create_account(account.into(), EMPTY_FUNCTION).unwrap();

    let new_key = key_pair_2.public();

Hi @shannonwells, this is an interesting task. Can an outsider work this?

Please go ahead, thank you!

Can you show me an example of the repeated code?

@allanperlee yes I've updated the description, hope it helps. Please feel free to ask for more clarification.  Also if you have a better/different ideas that's great, we're looking for improved readability and more concise, reusable code in the tests.  My suggestion is to stick with the Msa pallet for now.  Thank you!

@shannonwells I just compiled the repository correctly after struggling with the dependencies. Sorry about the delay!