Provide React starter template

Are you planning on creating more of create-vitedge-app?
I can help on this one, let me know please about the plan.

https://github.com/subhendukundu/vitedge-react-template
Got an error, TypeError: Request is not a constructor

I didn't have anything in mind yet and in fact I don't have much time now, so it would be great indeed if you want to help with it.
Perhaps https://github.com/frandiox/vitessedge-template could help as inspiration for a template.

Got an error, TypeError: Request is not a constructor

How do you get that error? I tried yarn dev:ssr in your repo but it seems to work well.

Umm intersting. I was running the same. yarn dev:ssr.
Which platform you are using? Windows, Mac or Linux?
I am trying on Mac.

Mac as well, with<EMAIL_ADDRESS>and<EMAIL_ADDRESS>🤔

Super weird!
<EMAIL_ADDRESS>doesn't work. But works on<EMAIL_ADDRESS>

@frandiox How would you add private routes?
For example, https://github.com/subhendukundu/vitedge-react-template/blob/main/src/App.jsx#L35
We have a login and homepage.
I want to do something,
<AuthGate>
      <Route exact path="/">
            <Home />
       </Route>
</AuthGate>

Any recommendations?

@subhendukundu What's the recommended way in plain React? I think it should work here as well.
In Vue you would just use the Router's beforeEnter guard but I don't think React's router has that. I believe you need to wrap your page components in some extra logic that checks the route.
More or less similar to what you are doing already but perhaps the <AuthGate> should be between <Route> and <route.component />, not sure. That should give you a "middleware" to run logic before the get-page-props logic.
Is there any problem with that? 🤔

Well no, it works.
I would have done it in that way.
But I am not really happy about if(!route.name === 'login') { this part. Because for this case I have to maintain a list of unprotected routes.
For example,
const unprotectedRoutes = ['login', 'about', 'contact'];
<Switch>
    {router.routes.map((route) => {
    console.log(route);
    if(!unprotectedRoutes.includes(route.name)) {
        return (
        <Route exact key={route.path} path={route.path}>
            <route.component />
        </Route>
        );
    }
    return (
        <AuthGate>
          <Route exact key={route.path} path={route.path}>
              <route.component />
          </Route>
        </AuthGate>
    );
    })}
    <Redirect to="/" />
</Switch>

So I was wondering if there's a better way to do this or not.

@subhendukundu I see! I would probably move all that logic inside the AuthGate component itself and pass it the route as props. Then, it can check if it renders children directly or makes some auth stuff first.
Another way to do this more declarative would be exporting a const meta = { auth: true, ... } from each page and pass it to the routes (routes = [{ path, name, component, meta }]). Then, you could access this in your AuthGate component. It might be a bit challenging making it work with lazy routes, though, since you would need this meta info eagerly before loading the page component.

@subhendukundu Please tell me if you finish a React template so I can check it and add a link from Vitedge docs!

I need a few input.

What if I don't want to use .jsx but want to use .js? How do I config that?

How do I use just javascript not typescript? Import wasn't working when I was just js. Do I need to add .babelrc or something like that?

What if I don't want to use .jsx but want to use .js? How do I config that?

That's not supported in Vite out of the box: https://github.com/vitejs/vite/issues/2727 |  https://twitter.com/youyuxi/status/1362050255009816577

How do I use just javascript not typescript? Import wasn't working when I was just js. Do I need to add .babelrc or something like that?

Pure JavaScript relies on Node's native ESM support. Node cannot infer file extensions anymore so you need to provide full path with extension import x from 'path/to/file.js' or 'path/to/file/index.js'

I thought so.
So the easier fix is, keeping tsconfig.json and vite.config.ts. Then you can use them however you want to use them (javascript or typescript) :)
Cool. Then I guess we are good. Unless you want me to add few more things.

Ah, I thought you were adding AuthGate and stuff like that since you asked about it in this issue.
I guess at least it should be deployed to workers.dev and have a readme explaining about how to set it up? And make it a "template project" in GitHub options so it can be cloned from there.

Sure, I will add them. Just wanted to make sure what all you think we can add.
So this will definitely give a quick start.
I was thinking more of.

with-vitedge
with-auth-vitedge
with-nhost-vitedge

I will create a PR with these 3 examples for now. Also my whole example is open-sourced as well. So you can create a discord or github page like built-with or something.

Ah I think we don't really need more examples in this repo, just templates in different repos that people can use as 1-click starters. The examples heres are mostly for manual testing until there are proper tests.
I think a good template could have dynamic routes and i18n (like Vitessedge for Vue). And some auth-guarded routes would be 🔥
We can add links to templates in the docs or in the readme.

Sure! Coming a PR soon 👍

I was working on this and someone reached out to me as well that after deploying it, the css wouldn't load.
https://vitedge.coolbio.workers.dev/
Repo: https://github.com/subhendukundu/vitedge-react-template

@subhendukundu The Wrangler file is wrong. It is pointing to dist/ssr for the static assets instead of dist/client (bucket = "../dist/client")

Oh shoot! I changed in my other repo but forgot on this one 🥺
Thank you so much

Following this! Would love to play with it when ready @subhendukundu!


snakemake does not have default --cores value

I want to print "Hello world" using snakemake, so I have created Snakefile and executed snakemake in the directory. However got the error:
Error: you need to specify the maximum number of CPU cores to be used at the same time with --cores.
I just want to use snakemake as replacement for makefile, it really doesn't matter how many cores it uses for workflow. Would it be possible to set a default value for --cores?
Freshly installed snakemake 5.13.0 version, without any configuration. This problem does not occur with version 4.
Snakefile I used:
rule hello_world:
    shell:
        "echo Hello world"

This change was intentional. People not coming from make frequently didn't anticipate the fact that it uses 1 core by default, wondering why it does not parallelize. Hence, we decided to make the specification of cores explicit. I know that it causes additional noise for simple cases, but not for the majority. There is always the possibility to define your own default via a profile.

There is always the possibility to define your own default via a profile.

And is there a way to set a default profile, so that snakemake --cores ... doesn't just become snakemake --profile ...? This question has been asked on StackOverflow, but never got a clear answer.
It seems like the goal here is to just be able to type snakemake to build.

@albertas: My workaround for cases where I want to 'hide' Snakemake (and its complexity) from the end user is the following:
#!/usr/bin/env -S snakemake --cores 1 --quiet --snakefile
rule hello_world:
    shell:
        "echo Hello world"

If you place this in a file called hello_world and make  that executable (chmod +x hello_world) you can execute it without any additional flags (./hello_world) and get
Job counts:
        count   jobs
        1       hello_world
        1
Hello world

Note: This requires env from coreutils >= 8.30.
Also be aware that command line arguments passed to hello_world will be passed down to snakemake:
./hello_world --verbose

Job counts:
        count   jobs
        1       hello_world
        1
Resources before job selection: {'_cores': 1, '_nodes':<PHONE_NUMBER>854775807}
Ready jobs (1):
        hello_world
Selected jobs (1):
        hello_world
Resources after job selection: {'_cores': 0, '_nodes':<PHONE_NUMBER>854775806}
Hello world
unlocking
removing lock
removing lock
removed all locks

This change was intentional. People not coming from make frequently didn't anticipate the fact that it uses 1 core by default, wondering why it does not parallelize. Hence, we decided to make the specification of cores explicit. I know that it causes additional noise for simple cases, but not for the majority. There is always the possibility to define your own default via a profile.

Probably a silly remark, but why not using the number of available cores as the default value? That would remove the unwanted noise for most users, while also enabling parallelism by default.

Probably a silly remark, but why not using the number of available cores as the default value? That would remove the unwanted noise for most users, while also enabling parallelism by default.

As far as I can see, this was already implemented. There is a commit called [Default Snakemake's --cores option to "all"](https://github.com/nextstrain/cli/commit/b708a3bbf08b9f56b4e8def2a74f693edceac377) which was already merged to main branch.

It's is not very surprising. That's the expected default for many similar tools.

Current version seems to use all cores by default:
https://github.com/snakemake/snakemake/issues/3167


Bump Dependencies #1421916427

Bumps dependencies for product-is. Link : https://github.com/wso2/product-is/actions/runs/1421916427

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.jenkins-is-staging seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Generate wrapper again at raspberry pi 3b+ will get weird thing

The system image is 2019-07-10-raspbian-buster-lite.iso
The python version is  Python 3.7.3 (default, Apr  3 2019, 05:39:12)
The generate command I was using is ./other/tools/run_protoc.sh
The result I got is something like this: from . from . import geofence_pb2 as geofence__pb2, which cause a syntax error.
If I do the generation process again, I'll get something like this: from . from . from . import geofence_pb2 as geofence__pb2, which also cause the error of cause.

Hmm that's interesting... I don't think it happens to me.
This said, I just merged #114, so you should be able to use it without having to generate the code yourself: examples/geofence.py.
Note that there is a bug in mavsdk_server regarding the geofence (it does upload the geofence, but crashes at the end).
Would be awesome if you could have a look at it (maybe @coderkalyan has some insights, too).

Man, I don't know what you are talking about.
But to be honest, the best way to solve this problem is don't run this command: ./other/tools/run_protoc.sh
It's OK for just using the default py files at https://github.com/mavlink/MAVSDK-Python/tree/master/mavsdk/generated

It's OK for just using the default py files

Yes, that's mostly what I meant. Sorry for the confusion :sweat_smile:


Validator Rule: use of named types

the Body Types should be explicit defined Types and not inline declared ones

Migrated to Jira https://commercetools.atlassian.net/browse/DEVX-286


🐛 BUG: Nebula nodes cannot ping each other , however they can ping the lighthouse vpn IP

What version of nebula are you using? (nebula -version)
1.9.2
What operating system are you using?
Linux, windows,android
Describe the Bug
I have three nodes in the network.  2 nodes as client and 1 node as light house.  Lighthouse is running in public cloud.
The client nodes are running windows and android platform.
Windows node and android platform nodes is successfully connected to the lighthouse.  Light house VPN IP is reachable from both of these nodes.
Looks peer to peer tunnel is not established .  Any help on this would be appreciated.
However unfortunately, I cannot ping android node from windows node or vice-versa.
android node vpn ip : <IP_ADDRESS>
windows node vpn ip : <IP_ADDRESS>
lighthouse node vpn ip : <IP_ADDRESS>
Logs on Android node
time="2024-06-14T13:55:19Z" level=debug msg="Packet store" length=2 localIndex=2056711493 remoteIndex=0 stored=true vpnIp=<IP_ADDRESS>
time="2024-06-14T13:55:19Z" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=2056711493 localIndex=2056711493 remoteIndex=0 udpAddrs="[]" vpnIp=<IP_ADDRESS>
time="2024-06-14T13:55:20Z" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]"
window node  note public ip masked as x.x.x.x
017791302 tunnelCheck="map[method:passive state:alive]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:12:57+05:30" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=895826622 localIndex=895826622 remoteIndex=0 udpAddrs="[x.x.x.x:43159]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:12:57+05:30" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=895826622 localIndex=895826622 remoteIndex=0 udpAddrs="[x.x.x.x:43159]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:12:58+05:30" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=895826622 localIndex=895826622 remoteIndex=0 udpAddrs="[x.x.x.x:43159]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:12:58+05:30" level=debug msg="Packet store" length=2 localIndex=895826622 remoteIndex=0 stored=true vpnIp=<IP_ADDRESS>
time="2024-06-14T20:12:59+05:30" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=895826622 localIndex=895826622 remoteIndex=0 udpAddrs="[x.x.x.x:43159]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:13:00+05:30" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=895826622 localIndex=895826622 remoteIndex=0 udpAddrs="[x.x.x.x:43159]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:13:00+05:30" level=debug msg="Packet store" length=3 localIndex=895826622 remoteIndex=0 stored=true vpnIp=<IP_ADDRESS>
time="2024-06-14T20:13:01+05:30" level=info msg="Handshake timed out" durationNs=5669465500 handshake="map[stage:1 style:ix_psk0]" initiatorIndex=895826622 localIndex=895826622 remoteIndex=0 udpAddrs="[<IP_ADDRESS>:43159]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:13:01+05:30" level=debug msg="Pending hostmap hostInfo deleted" hostMap="map[indexNumber:895826622 mapTotalSize:0 remoteIndexNumber:0 vpnIp:<IP_ADDRESS>]"
Logs from affected hosts
Logs on Android node
time="2024-06-14T13:55:19Z" level=debug msg="Packet store" length=2 localIndex=2056711493 remoteIndex=0 stored=true vpnIp=<IP_ADDRESS>
time="2024-06-14T13:55:19Z" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=2056711493 localIndex=2056711493 remoteIndex=0 udpAddrs="[]" vpnIp=<IP_ADDRESS>
time="2024-06-14T13:55:20Z" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]"
window node note public ip masked as x.x.x.x
017791302 tunnelCheck="map[method:passive state:alive]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:12:57+05:30" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=895826622 localIndex=895826622 remoteIndex=0 udpAddrs="[x.x.x.x:43159]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:12:57+05:30" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=895826622 localIndex=895826622 remoteIndex=0 udpAddrs="[x.x.x.x:43159]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:12:58+05:30" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=895826622 localIndex=895826622 remoteIndex=0 udpAddrs="[x.x.x.x:43159]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:12:58+05:30" level=debug msg="Packet store" length=2 localIndex=895826622 remoteIndex=0 stored=true vpnIp=<IP_ADDRESS>
time="2024-06-14T20:12:59+05:30" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=895826622 localIndex=895826622 remoteIndex=0 udpAddrs="[x.x.x.x:43159]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:13:00+05:30" level=debug msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=895826622 localIndex=895826622 remoteIndex=0 udpAddrs="[x.x.x.x:43159]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:13:00+05:30" level=debug msg="Packet store" length=3 localIndex=895826622 remoteIndex=0 stored=true vpnIp=<IP_ADDRESS>
time="2024-06-14T20:13:01+05:30" level=info msg="Handshake timed out" durationNs=5669465500 handshake="map[stage:1 style:ix_psk0]" initiatorIndex=895826622 localIndex=895826622 remoteIndex=0 udpAddrs="[<IP_ADDRESS>:43159]" vpnIp=<IP_ADDRESS>
time="2024-06-14T20:13:01+05:30" level=debug msg="Pending hostmap hostInfo deleted" hostMap="map[indexNumber:895826622 mapTotalSize:0 remoteIndexNumber:0 vpnIp:<IP_ADDRESS>]"
Config files from affected hosts

Enabled relay on the light house and updated the config on the nodes to use the nebula ip of light house as relay.  Still nodes are unable to connect.

I think I have seen the same thing. both nodes are behind NAT. Connecting to the lighthouse worked fine for each node, but they were unable to talk to eachother.
After rebooting one of the nodes, it immediately started working, though the node will have received new IPv4 and IPv6 addresses due to the reboot.
Versions:
rebooted node: 1.6.1+dfsg-3+b4
other node: 1.9.3
punchy enabled on both nodes.

@tokudan   thanks for your response.  Let me try .  In my setup , I have android device and other one is windows 11.  Both are running with nebula version 1.9.3 .  I would have started the nebula process multiple time , not sure what reboot would make difference here.

I have dozens of hosts on my Nebula network and I encounter a similar issue once every few months or so. I don't need to reboot, just restarting the Nebula service on the problem host fixes everything.

I get a similar thing all the time.
I have a linux lighthouse on the internet and a linux server in my lan.  Which are both fixed and can always talk to each other fine.
I have a mac laptop which works perfectly when connected to the lan - it can connect to the linux server. When I pair it with my phone to use its mobile connection I have to restart nebula on the linux server to be able to connect to it.

@tokudan & @cameronbraid The other two users in this thread reported having their Lighthouse configured as a relay. There are many connectivity issues that can occur with Nebula but it is surprising to hear that they can ping the Lighthouse from two nodes, the Lighthouse is configured as a relay, and yet the nodes cannot reach each other. Can you confirm whether each of you are also using the Lighthouse as a relay in your scenarios?
 Note that in addition to am_relay: true on the Lighthouse, and use_relays: true on the nodes, you must also specify the Lighthouse as a possible relay in the nodes' config: https://nebula.defined.net/docs/config/relay/#relayrelays
To any user in this thread, sharing configs of the affected hosts (Lighthouse and both nodes) as well as logs around the event will be immensely helpful in tracking down the issue. Thanks!

@johnmaguire This is my standard config for my non-relay nodes:
relay:
  am_relay: false
  relays:
  - <IP_ADDRESS>
  - <IP_ADDRESS>
  use_relays: true

It's auto-generated so it's not an issue of missing lines.
My lighthouse looks like this:
lighthouse:
  am_lighthouse: true
  interval: 60
punchy:
  delay: 1s
  punch: true
  punch_back: true
  respond: true
relay:
  am_relay: true
  use_relays: false

I can back the above issues. I do have a lighthouse configured on Linux VPS (Debian 11, Nebula version is 1.6.1 - installed from standard debian repo), with public IPv4 which acts as a relay. And there're two nodes:

one is my Linux machine at home behind my own NAT built-in to WiFi router which is behind cgNAT of my ISP. It is running Nebula of version 1.9.3
another is my android phone with Nebula app installed, and it's definitely not having public IPv4:

App version 0.4.1-77 (sha: 7a048d8)
Nebula version: 1.8.1 (go1.20.10)
Flutter version: 3.3.5
Dart version 2.18.2

From time to time I cannot connect/ping from my phone to my Linux machine at home, but they both can connect to the lighthouse. What helps to fix this is to restart Nebula either on home machine, phone or both.
Not sure if it's some new bug related to latest version or it's just me being unlucky - my experience with Nebula is just few days and it's always been like this.

I managed to find steps to reproduce this issue:

to have my phone in the same home WiFi network as my Linux machine and have Nebula restarted on both. At this point both hosts are able to connect to each other via Nebula IP addresses

disable WiFi on my phone and let it use cellular network. Even though Nebula VPN is still shown as running, phone cannot talk to Linux machine via Nebula IP address any longer, but still can connect to Nebula Lighthouse using Nebula IP. When I attempt to connect to Linux PC, Nebula app on phone complains with "Fail to send handshake", Nebula service on Linux PC complains with "Existing relay mismatch with CreateRelayRequest"

re-establish VPN connection on phone - turn "Status" for my network off and back on in app. No result. Same messages in phone and Linux PC logs as in previous step. Phone still can connect to Lighthouse using Nebula IP, but not the Linux machine at home. Subsequent restarts of Nebula on phone don't help as well. Even with closing app.

restart Nebula service on a home Linux PC. This fixes the issue and phone can again connect to my home Linux machine.

enable WiFi on phone to allow it to connect to home WiFi network. Phone still can talk to Linux PC!

disable WiFi on phone again - and it still can connect to Linux PC. Looks like some routes has been cached at step 4 and now being reused. Not sure how long this effect lasts.

So at least one case is clear when this happens: when phone begins to roam and goes from one network (home WiFi) to another (cellular) for the very first time. What's bad is that in order to reestablish connection, I need to reboot Nebula service on a destination host I want access to - which can be tricky when you're away with your phone :)

@johnmaguire more logs for you. I think I have a different issue than what the others are facing since mine is about losing connection.
Problem host:
level=info msg="send CreateRelayRequest" initiatorRelayIndex=2208677988 relayFrom=<IP_ADDRESS> relayTo=<IP_ADDRESS> responderRelayIndex=0 vpnIp=<IP_ADDRESS>
level=info msg=handleCreateRelayResponse initiatorRelayIndex=2208677988 relayFrom=<IP_ADDRESS> relayTo=<IP_ADDRESS> responderRelayIndex=1035013250 vpnIp=<IP_ADDRESS>
level=info msg="Handshake message sent" cached=true handshake="map[stage:2 style:ix_psk0]" relay=<IP_ADDRESS> vpnIp=<IP_ADDRESS>
level=info msg="Handshake message received" certName=nginx fingerprint=... handshake="map[stage:1 style:ix_psk0]" initiatorIndex=697670109 issuer=... remoteIndex=0 responderIndex=0 udpAddr="<nil>" vpnIp=<IP_ADDRESS>
level=info msg="Handshake message sent" cached=true handshake="map[stage:2 style:ix_psk0]" relay=<IP_ADDRESS> vpnIp=<IP_ADDRESS>
level=info msg="Handshake message received" certName=nginx fingerprint=... handshake="map[stage:1 style:ix_psk0]" initiatorIndex=697670109 issuer=... remoteIndex=0 responderIndex=0 udpAddr="<nil>" vpnIp=<IP_ADDRESS>
level=info msg="Handshake message sent" cached=true handshake="map[stage:2 style:ix_psk0]" relay=<IP_ADDRESS> vpnIp=<IP_ADDRESS>
level=info msg="Handshake message received" certName=nginx fingerprint=... handshake="map[stage:1 style:ix_psk0]" initiatorIndex=697670109 issuer=... remoteIndex=0 responderIndex=0 udpAddr="<nil>" vpnIp=<IP_ADDRESS>
level=info msg="Handshake message sent" certName=nginx fingerprint=... handshake="map[stage:2 style:ix_psk0]" initiatorIndex=697670109 issuer=... relay=<IP_ADDRESS> remoteIndex=0 responderIndex=65839047 vpnIp=<IP_ADDRESS>
level=info msg="Taking new handshake" certName=nginx localIndex=1535021440 remoteIndex=1412676492 vpnIp=<IP_ADDRESS>
level=info msg="Handshake message received" certName=nginx fingerprint=... handshake="map[stage:1 style:ix_psk0]" initiatorIndex=697670109 issuer=... remoteIndex=0 responderIndex=0 udpAddr="<nil>" vpnIp=<IP_ADDRESS>
level=info msg="send CreateRelayResponse" initiatorRelayIndex=197443235 relayFrom=<IP_ADDRESS> relayTo=<IP_ADDRESS> responderRelayIndex=1993822362 vpnIp=<IP_ADDRESS>
level=info msg=handleCreateRelayRequest initiatorRelayIndex=197443235 relayFrom=<IP_ADDRESS> relayTo=<IP_ADDRESS> vpnIp=<IP_ADDRESS>
level=info msg="send CreateRelayResponse" initiatorRelayIndex=197443235 relayFrom=<IP_ADDRESS> relayTo=<IP_ADDRESS> responderRelayIndex=1993822362 vpnIp=<IP_ADDRESS>
level=info msg=handleCreateRelayRequest initiatorRelayIndex=197443235 relayFrom=<IP_ADDRESS> relayTo=<IP_ADDRESS> vpnIp=<IP_ADDRESS>
level=info msg="Handshake message received" certName=nginx durationNs=123336364 fingerprint=... handshake="map[stage:2 style:ix_psk0]" initiatorIndex=1526267344 issuer=... remoteIndex=1526267344 responderIndex=2242841832 sentCachedPackets=0 udpAddr="<nil>" vpnIp=<IP_ADDRESS>
level=info msg="Send handshake via relay" localIndex=1526267344 relay=<IP_ADDRESS> remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="Send handshake via relay" localIndex=1526267344 relay=<IP_ADDRESS> remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="Send handshake via relay" localIndex=1526267344 relay=<IP_ADDRESS> remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="Send handshake via relay" localIndex=1526267344 relay=<IP_ADDRESS> remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="Attempt to relay through hosts" localIndex=1526267344 relays="[<IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>]" remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=1526267344 localIndex=1526267344 remoteIndex=0 udpAddrs="[]" vpnIp=<IP_ADDRESS>
level=info msg="Re-handshaking with remote" reason="local certificate is not current" vpnIp=<IP_ADDRESS>
level=info msg="send CreateRelayRequest" initiatorRelayIndex=3421498576 relayFrom=<IP_ADDRESS> relayTo=<IP_ADDRESS> responderRelayIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="Tunnel status" certName=nginx localIndex=1535021440 remoteIndex=1412676492 tunnelCheck="map[method:active state:dead]" vpnIp=<IP_ADDRESS>
level=info msg="Tunnel status" certName=nginx localIndex=65839047 remoteIndex=697670109 tunnelCheck="map[method:active state:dead]" vpnIp=<IP_ADDRESS>
level=info msg="sendNoMetrics failed to find HostInfo" certName=nginx error="unable to find host with relay" localIndex=1526267344 relay=<IP_ADDRESS> remoteIndex=2242841832 vpnIp=<IP_ADDRESS>
level=info msg="Handshake message sent" cached=true handshake="map[stage:2 style:ix_psk0]" relay=<IP_ADDRESS> vpnIp=<IP_ADDRESS>
level=info msg="Handshake message received" certName=nginx fingerprint=... handshake="map[stage:1 style:ix_psk0]" initiatorIndex=2270976162 issuer=... remoteIndex=0 responderIndex=0 udpAddr="<nil>" vpnIp=<IP_ADDRESS>
level=info msg="Handshake message sent" cached=true handshake="map[stage:2 style:ix_psk0]" relay=<IP_ADDRESS> vpnIp=<IP_ADDRESS>
level=info msg="Handshake message received" certName=nginx fingerprint=... handshake="map[stage:1 style:ix_psk0]" initiatorIndex=2270976162 issuer=... remoteIndex=0 responderIndex=0 udpAddr="<nil>" vpnIp=<IP_ADDRESS>
level=info msg="Handshake message sent" cached=true handshake="map[stage:2 style:ix_psk0]" relay=<IP_ADDRESS> vpnIp=<IP_ADDRESS>
["Handshake message received" and "Handshake message sent" repeats forever]

Working host:
level=info msg="Tunnel status" certName=archive localIndex=2226883942 remoteIndex=1620137054 tunnelCheck="map[method:active state:dead]" vpnIp=<IP_ADDRESS>
level=info msg="Handshake message sent" handshake="map[stage:1 style:ix_psk0]" initiatorIndex=3427860552 localIndex=3427860552 remoteIndex=0 udpAddrs="[...]" vpnIp=<IP_ADDRESS>
level=info msg="Attempt to relay through hosts" localIndex=3427860552 relays="[<IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>]" remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="send CreateRelayRequest" initiatorRelayIndex=2388030379 relay=<IP_ADDRESS> relayFrom=<IP_ADDRESS> relayTo=<IP_ADDRESS>
level=info msg="Send handshake via relay" localIndex=3427860552 relay=<IP_ADDRESS> remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="Re-send CreateRelay request" localIndex=3427860552 relay=<IP_ADDRESS> remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="send CreateRelayRequest" initiatorRelayIndex=2388030379 relay=<IP_ADDRESS> relayFrom=<IP_ADDRESS> relayTo=<IP_ADDRESS>
level=info msg="Send handshake via relay" localIndex=3427860552 relay=<IP_ADDRESS> remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg=handleCreateRelayResponse initiatorRelayIndex=2388030379 relayFrom=<IP_ADDRESS> relayTo=<IP_ADDRESS> responderRelayIndex=3272475814 vpnIp=<IP_ADDRESS>
level=info msg="Attempt to relay through hosts" localIndex=3427860552 relays="[<IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>]" remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="Send handshake via relay" localIndex=3427860552 relay=<IP_ADDRESS> remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="Send handshake via relay" localIndex=3427860552 relay=<IP_ADDRESS> remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="Send handshake via relay" localIndex=3427860552 relay=<IP_ADDRESS> remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="Send handshake via relay" localIndex=3427860552 relay=<IP_ADDRESS> remoteIndex=0 vpnIp=<IP_ADDRESS>
level=info msg="Attempt to relay through hosts" localIndex=3427860552 relays="[<IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>]" remoteIndex=0 vpnIp=<IP_ADDRESS>
["Send handshake via relay" line repeats]
level=info msg="Handshake timed out" durationNs=6824371247 handshake="map[stage:1 style:ix_psk0]" initiatorIndex=1271254101 localIndex=1271254101 remoteIndex=0 udpAddrs="[...]" vpnIp=<IP_ADDRESS>
["Send handshake via relay" process restarts]

@Cyberes One log line that jumps out to me is this one:
level=info msg="sendNoMetrics failed to find HostInfo" certName=nginx error="unable to find host with relay" localIndex=1526267344 relay=<IP_ADDRESS> remoteIndex=2242841832 vpnIp=<IP_ADDRESS>

This is similar but different from another type of log we've seen a bit lately, on relays:
Nov 11 16:10:12 linux.dsrgthyz.com nebula[1147]: time="2024-11-11T16:10:12Z" level=info msg="Failed to find target host info by ip" certName=android error="unable to find host with relay" localIndex=2672096877 relayTo=<IP_ADDRESS> remoteIndex=442491203 vpnIp=<IP_ADDRESS>
Nov 11 16:10:13 linux.dsrgthyz.com nebula[1147]: time="2024-11-11T16:10:13Z" level=info msg="Failed to find target host info by ip" certName=android error="unable to find host with relay" localIndex=2672096877 relayTo=<IP_ADDRESS> remoteIndex=442491203 vpnIp=<IP_ADDRESS>
Nov 11 16:10:14 linux.dsrgthyz.com nebula[1147]: time="2024-11-11T16:10:14Z" level=info msg="Failed to find target host info by ip" certName=android error="unable to find host with relay" localIndex=2672096877 relayTo=<IP_ADDRESS> remoteIndex=442491203 vpnIp=<IP_ADDRESS>

Are you able to check your Lighthouse logs and see if you're seeing this message as well? I encourage anyone else in this ticket experiencing issues to check for this issue. This bug is being fixed in #1270.

@Cyberes "unable to find host with relay" will appear on relay hosts (I expect your Lighthouses are configured to act as relays.) This log message is indicative of the problem in #1270 which occurs when the "responder" node loses connection to the relay. I'm sharing this to try to determine if the connectivity issues you shared earlier in the thread are related to this issue. Next time you experience a connectivity loss you could check for this log line.

Should I continue to post in this issue or is there somewhere else more appropriate?


Fix for FileNotFoundError when mercurial or git is not installed

Exception occurs when mercurial or git is not installed, subprocess.CalledProcessError exception is not raised by the subprocess.check_output() command.  [WinError 2] The system cannot find the file specified exception is raised instead.
Django Version: 4.0.5
Python Version: 3.9.13
Steps to reproduce
Mercurial or git is not installed
Add django_cachekiller to your INSTALLED_APPS in your settings.py
Then use the cdnstatic tag in the template
Exception
FileNotFoundError at /
[WinError 2] The system cannot find the file specified
Request Method:	GET
Request URL:	http://localhost:8000/
Django Version:	4.0.5
Exception Type:	FileNotFoundError
Exception Value:
[WinError 2] The system cannot find the file specified
Exception Location:	D:\Python39\lib\subprocess.py, line 1420, in _execute_child
Python Executable:	D:\Python39\python.exe
Python Version:	3.9.13
Template error:
39 :
File "D:\Python39\lib\site-packages\django_cachekiller\templatetags\cdnstaticfiles.py", line 92, in render
qs = 'tag=' + refcache.get_ref()
File "D:\Python39\lib\site-packages\django_cachekiller\templatetags\cdnstaticfiles.py", line 69, in get_ref
ref = self.get_hg_tip()
File "D:\Python39\lib\site-packages\django_cachekiller\templatetags\cdnstaticfiles.py", line 53, in get_hg_tip
ref = self._run_cmd(['hg', 'heads', '--template', '"{node}"'])
File "D:\Python39\lib\site-packages\django_cachekiller\templatetags\cdnstaticfiles.py", line 26, in _run_cmd
return subprocess.check_output(cmd, stderr=subprocess.STDOUT)
File "D:\Python39\lib\subprocess.py", line 424, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "D:\Python39\lib\subprocess.py", line 505, in run
with Popen(*popenargs, **kwargs) as process:
File "D:\Python39\lib\subprocess.py", line 951, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "D:\Python39\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
Exception Type: FileNotFoundError at /
Exception Value: [WinError 2] The system cannot find the file specified

Good catch, thanks!

Your PR is in the new v0.8.2 release. Thanks.


[web-sdk] Add tests for initialization/shutdown

The web-sdk implements initialization and shutdown as per this spec PR and this OFEP.
We've implemented the tests equivalent to the server SDK here, but because the init/shutdown features don't exist in the server yet, we need to implement them in the web SDK.
Primarily, we want to cover the init/shutdown logic in the setProvider method, and in the close method.
DoD:

test(s) that assert shutdown is called on the old provider when a new one is set
test(s) that assert initialize is called on the new provider
test(s) that assert shutdown is called on the provider when the close() method on the API is called
tests are numbered/named in accordance with spec PR

starting this :)


Basketball mode ends when wrong character is input and after displaying "BASKETBALL"

A commit where I added command line arguments and changed the flags for the gamemodes broke the basketball mode.

This issue is now fixed


unsupport jdk11?

when i use mvn smart-doc:html:
then
Fatal error compiling: Invalid target release: 11

@dbj-dxy
smart-doc is compiled and released based on jdk 1.8. There is also no use of deprecated APIs. Can run in jdk 1.8+ environment，Check if it is caused by other codes.


Testcases for choas_experiment handler

Inside the /chaos_experiment/ at location choascenter/graphql/server/pkg, the handler.go file does not have any testcases.

Hey @SohamRatnaparkhi can work on this is this issue open

@sohamRatnaparkhi please let me know if you are working gon it

I am working on this issue currently.


Some fix and improment

Change jicson to load from string instead of writing to a file.
Improve network request time
Add validations for removing last month

Thanks for creating this great application! It is very useful. I forked it and changed it to meet my needs. If I have time, I can do some improvements to the tool. The first step should be making it more general so that it is easy to onboard and modify for each one's own needs.

Gotcha, I did the same, modify to my needs. I also have a habit of tracking my day. I had some old data too, just in different format. I update my old data to fit this tool. It works great! Again, thanks for creating this and open source it!


cSpell hangs and high cpu usage

Sometimes this extension hangs by showing a clock icon in the status bar instead of the usual information. The tooltip in the clock icon is cSpell waiting.... When it enters this state the extension stops working and a vscode process uses 100% of a cpu core. The only solution is to reload the vscode window.
Sorry but I do not have a way to reproduce it yet. I'll try to give you some more information. I'm using vscode with the python extension at the moment, but I do not know if it is limited to this case, since I've haven't found a way to reproduce it. Also this started to happen after the update to v1+ (I do not remember if the v1.0.0 had this problem)
It may be similar to #77 but in my case reloading the vscode window or closing it ends the cSpell process that uses the cpu.

Some other information.
Clicking on the clock icon on the status bar gives an error notification with Unable to open 'Spell Checker Info': Cannot read property 'document' of undefined.

Thank you.
This sounds like some sort of race condition.  I'll see if I can reproduce it.
Cheers,
Jason

Yes I'm using a windows 10 machine.
Thank you jason.
Let me know if I can be of any more help

If it can be useful, it seems to be connected with python, since in the last few days I've been using typescript and it the issue did not represent itself.
Is before I still have not found a way to reproduce it, so it may just be by chance.
Hope it helps

Thank you I had a similar issue when editing Python.  It went away when I disabled to extension.  I wonder if the extension is opening hidden documents (some extensions do, I had to add special code to prevent spell checking those documents).

I would like to fix this. But I need to consistent way to reproduce it.
I know this can be very frustrating for those of you that this is happening to. Please bear with me, I use VS Code and the spell checker everyday. I am not seeing this issue.
If you are seeing this issue consistently, please work with me to find a way to reproduce it. We will need to do a bit of sleuthing.
Questions:

What extensions do you have installed? This is important to know, because this issue is most likely caused by the interaction between multiple extensions.
What language are you using? Better yet, if you can point me to a github repo that I can clone, this would be ideal.
When does it happen? On VS Code startup? Only after a while? etc.
What OS and version are you using? If you are supper advanced, a vagrant box!

Please realize I don't have a lot of time to work on this.

Sadly (or luckily) it's been a while since I haven't had any other instance of this happening that I remember.
At the moment I'm mainly working with Typescript, while when I encountered this issue I was using python. So I think it's probable that the issue is linked to that.
Regarding your questions

When I was having this issue I had streetsidesoftware.code-spell-checker, joelday.docthis, donjayamanne.python, eg2.tslint. Only the python extension should be active on a python file though
Python, but I could not find any way to reproduce reliably
I've had this happen both shortly after vscode startup than after some time (hours). Could not find a reason why.
Windows 10 preview. I do not remember which version.

Since at the moment neither me nor you can reproduce it, we could leave it on hold for the moment. Just a thought: I use two groups, one left and one right, so it may be linked somehow to this https://github.com/Jason-Rev/vscode-spell-checker/issues/88
Thanks for your time.

@Jason3S I haven't noticed this problem lately, so I'll close this issue. If the problem reappears I'll reopen it (or create a new issue).
Thanks for the effort you put into this extension.

Thank you.


Use relative install paths for plugin shared libraries

🦟 Bug fix
Summary
Fixes an error when building https://github.com/gazebo-release/gz_physics_vendor/ in the ROS buildfarm.
Similar to https://github.com/gazebosim/gz-tools/pull/137
Checklist

[ ] Signed all commits for DCO
[ ] Added tests
[ ] Updated documentation (as needed)
[ ] Updated migration guide (as needed)
[ ] Consider updating Python bindings (if the library has them)
[ ] codecheck passed (See contributing)
[ ] All tests passed (See test coverage)
[ ] While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge and edit the commit message to match the pull request summary while retaining Signed-off-by messages.

Note that GZ_PHYSICS_ENGINE_INSTALL_DIR is used in many places (see https://github.com/search?q=repo%3Agazebosim%2Fgz-physics GZ_PHYSICS_ENGINE_INSTALL_DIR &type=code), and I am not sure if all those uses work fine with GZ_PHYSICS_ENGINE_INSTALL_DIR being a non-absolute path (in particular see https://github.com/gazebosim/gz-physics/blob/4e400e0e12c3444c432d7c03f6e66f9fa4c82d4f/include/gz/physics/config.hh.in#L31, that even if deprecated is a public macro). Perhaps it could make sense to change only the places where DESTINATION argument of install to use GZ_PHYSICS_ENGINE_RELATIVE_INSTALL_DIR instead of GZ_PHYSICS_ENGINE_INSTALL_DIR ?

Note that GZ_PHYSICS_ENGINE_INSTALL_DIR is used in many places (see https://github.com/search?q=repo%3Agazebosim%2Fgz-physics GZ_PHYSICS_ENGINE_INSTALL_DIR &type=code), and I am not sure if all those uses work fine with GZ_PHYSICS_ENGINE_INSTALL_DIR being a non-absolute path (in particular see
https://github.com/gazebosim/gz-physics/blob/4e400e0e12c3444c432d7c03f6e66f9fa4c82d4f/include/gz/physics/config.hh.in#L31
, that even if deprecated is a public macro). Perhaps it could make sense to change only the places where DESTINATION argument of install to use GZ_PHYSICS_ENGINE_RELATIVE_INSTALL_DIR instead of GZ_PHYSICS_ENGINE_INSTALL_DIR ?

Good catch. I've used GZ_PHYSICS_ENGINE_RELATIVE_INSTALL_DIR in https://github.com/gazebosim/gz-physics/pull/616/commits/a141a083f5eac6b2b9d575d2bfd4e780ddf2c75a.


galen: 2.3.0 -> 2.3.6

Semi-automatic update. These checks were performed:

built on NixOS
ran /nix/store/sp59abnhzpg7zdn66207wizb57dy4fxx-galen-2.3.6/bin/galen -h got 0 exit code
ran /nix/store/sp59abnhzpg7zdn66207wizb57dy4fxx-galen-2.3.6/bin/galen --help got 0 exit code
ran /nix/store/sp59abnhzpg7zdn66207wizb57dy4fxx-galen-2.3.6/bin/galen help got 0 exit code
ran /nix/store/sp59abnhzpg7zdn66207wizb57dy4fxx-galen-2.3.6/bin/galen -v and found version 2.3.6
ran /nix/store/sp59abnhzpg7zdn66207wizb57dy4fxx-galen-2.3.6/bin/galen --version and found version 2.3.6
ran /nix/store/sp59abnhzpg7zdn66207wizb57dy4fxx-galen-2.3.6/bin/galen version and found version 2.3.6
found 2.3.6 in filename of file in /nix/store/sp59abnhzpg7zdn66207wizb57dy4fxx-galen-2.3.6

@GrahamcOfBorg build galen

Success on x86_64-darwin (full log)
Partial log (click to expand)
configuring
no configure script, doing nothing
building
installing
post-installation fixup
strip is /nix/store/4sdh09gmvl15cy0zb6i7mbvxh5syz206-cctools-binutils-darwin/bin/strip
stripping (with command strip and flags -S) in /nix/store/khlkh25zfdy5r9f1s6g9id46zciw678c-galen-2.3.6/bin
patching script interpreter paths in /nix/store/khlkh25zfdy5r9f1s6g9id46zciw678c-galen-2.3.6
/nix/store/khlkh25zfdy5r9f1s6g9id46zciw678c-galen-2.3.6/bin/galen: interpreter directive changed from "/bin/bash" to "/nix/store/pkjmwq7sqrvjg7cjiph6hq0khsmfl6p8-bash-4.4-p12/bin/bash"
/nix/store/khlkh25zfdy5r9f1s6g9id46zciw678c-galen-2.3.6

Failure on aarch64-linux (full log)
Partial log (click to expand)
Package ‘oraclejre-8u161’ in /var/lib/gc-of-borg/nix-test-rs-3/repo/38dca4e3aa6bca43ea96d2fcc04e8229/builder/grahamc-aarch64-community-3/pkgs/development/compilers/oraclejdk/jdk-linux-base.nix:71 has an unfree license (‘unfree’), refusing to evaluate.

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnfree = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnfree = true; }
to ~/.config/nixpkgs/config.nix.

Success on x86_64-linux (full log)
Partial log (click to expand)
building
installing
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/sp59abnhzpg7zdn66207wizb57dy4fxx-galen-2.3.6
strip is /nix/store/b0zlxla7dmy1iwc3g459rjznx59797xy-binutils-2.28.1/bin/strip
stripping (with command strip and flags -S) in /nix/store/sp59abnhzpg7zdn66207wizb57dy4fxx-galen-2.3.6/bin
patching script interpreter paths in /nix/store/sp59abnhzpg7zdn66207wizb57dy4fxx-galen-2.3.6
/nix/store/sp59abnhzpg7zdn66207wizb57dy4fxx-galen-2.3.6/bin/galen: interpreter directive changed from "/bin/bash" to "/nix/store/zqh3l3lyw32q1ayb15bnvg9f24j5v2p0-bash-4.4-p12/bin/bash"
checking for references to /tmp/nix-build-galen-2.3.6.drv-0 in /nix/store/sp59abnhzpg7zdn66207wizb57dy4fxx-galen-2.3.6...
/nix/store/sp59abnhzpg7zdn66207wizb57dy4fxx-galen-2.3.6


Docs Github icon should link to snakemake Github rather than the Sphinx theme's github

I wanted to propose an edit to a snakemake docs page, and so I clicked on the Github icon at the bottom right (many themes have a link to "edit this page" in the docs.
I was very surprised to end up on the Github of an unrelated project, it took me a second to realize that I ended up on the Github page of the sphinx theme.
I'm not sure how easy it is to overwrite the link, I'll also open an issue on the sphinx theme Github.
Would be nice if there was a link somewhere to "edit this page" in any case.
The Github icon I mean is at the bottom right. The sphinx theme is already linked to in the footer at the bottom left:

Adding an "Edit this page" link might be configurable already, see: https://github.com/pradyunsg/lutra/issues/9

@johanneskoester the maintainer of the theme used by snakemake docs says "This theme is not ready for reuse yet, please don't try using it for now." 🙃
https://github.com/pradyunsg/lutra/issues/63#issuecomment-1896324826


Add markdown highlight?

It will be very useful when writing markdown

Hi @Austaras!
Sorry for the delay.
Sure, I'll work on that within the next few days.


[SPARK-14691] [SQL] Simplify and Unify Error Generation for Unsupported Alter Table DDL

What changes were proposed in this pull request?
So far, we are capturing each unsupported Alter Table in separate visit functions. They should be unified and issue the same ParseException instead.
This PR is to refactor the existing implementation and make error message consistent for Alter Table DDL.
How was this patch tested?
Updated the existing test cases and also added new test cases to ensure all the unsupported statements are covered.

test this please

test this please

Test build #56073 has started for PR 12459 at commit 07a0779.

Test build #56073 has finished for PR 12459 at commit 07a0779.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/56073/
Test PASSed.

Merged build finished. Test PASSed.

cc @andrewor14 @yhuai It is ready for review. Thanks!

ping @hvanhovell : )

@gatorsmile could you rebase?
LGTM pendins Rebase/Jenkins

@hvanhovell Done. : ) Thanks!

Test build #56846 has started for PR 12459 at commit dc62c38.

Test build #56846 has finished for PR 12459 at commit dc62c38.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/56846/
Test PASSed.

Merging to master. Thanks!


Use finalised data models as root model

By default, the Mdm-Explorer should only return finalised data models when setting a root data model. This will require a change to the rootDataModel function in controllers/uk/ac/ox/softeng/maurodatamapper/plugins/explorer/ExplorerController.groovy, so that when it calls pathService.findResourceByPathFromRootClass it passes in a parameters that is set to "finalised=true".
In addition to this, we should parse the root model configuration value to extract any parameters that may have been set. This will give us more flexibility if required when setting the root data model, such as overriding the "finalised only" rule when developing. e.g:
explorer.config.root_data_model_path = fo:OUH Data Warehouse|dm:modules?finalised=false would disable the default behaviour of only returning finalised dataModels.

This work has already been merged. Closing issue.


Zeroconf not working as expected

When enabling zero-conf , the behaviour should be the payment would be set as paid once funds are on the mempool. That is not happening!

Why is this reported on watchonly repo and not on satspay?

ahhh wrong repo!


fix import on bitset test case

not a bit deal, part of https://github.com/LastOliveGames/becsy/commit/032672dfbd4e09553bc19dbc5e388374a6a78a4b

Oops, thanks!


[WIP] Add Cirrus setup and CI scripts.

This is a DRAFT PR that sets up some simple continuous integration scripts and Cirrus.

Nevermind, looks like there already are GitHub workflows.  I'll convert this to set up scripts that the workflows run.


Fix Hibernate entity listeners support

According to this issue, ApplicationContextaware should now be supported in native 11 final
https://github.com/spring-projects-experimental/spring-native/issues/949
At least in Combination with EntityListeners, i still can get it working, there is still a Nullpointer when
calling .getBean().
Demo Project:
https://github.com/goafabric/person-service/tree/native-11-github
Class:
AuditJPAListener
Bound by a Typehint in Application.class (also see #1370)

The provided link is broken, could you please provide an up to date way to reproduce this issue (as minimal as possible)?

@sdeleuze
yes sure ... removed this link a couple of days ago, as i thought it would not be needed
recreated the link, stripped what i could stripped and upgraded to 0.11.2,
when build with the profile "docker-image-native" it should break inside the AuditJPAListener
https://github.com/goafabric/person-service/tree/native-11-github

I managed to reproduce in the data-jpa sample where if I implemented ApplicationContextAware in AuditingListener, the setApplicationContext() callback is indeed never invoked while it is on regular beans.
The problem is native specific since when running java -DspringAot=true -jar target/data-jpa-0.0.1-SNAPSHOT.jar the callback is invoked properly.
The stacktrace on the JVM with AOT mode enabled is the following:
setApplicationContext:42, AuditingListener (app.main.model)
invokeAwareInterfaces:128, ApplicationContextAwareProcessor (org.springframework.context.support)
postProcessBeforeInitialization:102, ApplicationContextAwareProcessor (org.springframework.context.support)
applyBeanPostProcessorsBeforeInitialization:440, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
initializeBean:1796, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
doCreateBean:620, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
createBean:542, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
createBean:378, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
createBean:147, SpringBeanContainer (org.springframework.orm.hibernate5)
getBean:105, SpringBeanContainer (org.springframework.orm.hibernate5)
getBean:61, ManagedBeanRegistryImpl (org.hibernate.resource.beans.internal)
createCallback:39, ListenerCallback$Definition (org.hibernate.jpa.event.internal)
buildCallbacks:89, CallbacksFactory (org.hibernate.jpa.event.internal)
buildCallbackRegistry:69, CallbacksFactory (org.hibernate.jpa.event.internal)
<init>:46, EventEngine (org.hibernate.event.spi)
<init>:218, SessionFactoryImpl (org.hibernate.internal)
build:471, SessionFactoryBuilderImpl (org.hibernate.boot.internal)
build:1498, EntityManagerFactoryBuilderImpl (org.hibernate.jpa.boot.internal)
createContainerEntityManagerFactory:58, SpringHibernateJpaPersistenceProvider (org.springframework.orm.jpa.vendor)
createNativeEntityManagerFactory:365, LocalContainerEntityManagerFactoryBean (org.springframework.orm.jpa)
buildNativeEntityManagerFactory:409, AbstractEntityManagerFactoryBean (org.springframework.orm.jpa)
afterPropertiesSet:396, AbstractEntityManagerFactoryBean (org.springframework.orm.jpa)
afterPropertiesSet:341, LocalContainerEntityManagerFactoryBean (org.springframework.orm.jpa)
invokeInitMethods:1863, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
initializeBean:1800, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
doCreateBean:620, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
createBean:542, AbstractAutowireCapableBeanFactory (org.springframework.beans.factory.support)
lambda$doGetBean$0:335, AbstractBeanFactory (org.springframework.beans.factory.support)
getObject:-1, 461160828 (org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$537)
getSingleton:234, DefaultSingletonBeanRegistry (org.springframework.beans.factory.support)
doGetBean:333, AbstractBeanFactory (org.springframework.beans.factory.support)
getBean:208, AbstractBeanFactory (org.springframework.beans.factory.support)
getBean:1154, AbstractApplicationContext (org.springframework.context.support)
finishBeanFactoryInitialization:908, AbstractApplicationContext (org.springframework.context.support)
refresh:583, AbstractApplicationContext (org.springframework.context.support)
refresh:145, ServletWebServerApplicationContext (org.springframework.boot.web.servlet.context)
refresh:732, SpringApplication (org.springframework.boot)
refreshContext:414, SpringApplication (org.springframework.boot)
run:302, SpringApplication (org.springframework.boot)
run:1303, SpringApplication (org.springframework.boot)
run:1292, SpringApplication (org.springframework.boot)
main:81, SampleApplication (app.main)

Since the problem is native specific, I tried to add @TypeHint(types = ApplicationContextAware.class) in case that could be a reflection issue, but no success.
AbstractAutowireCapableBeanFactory seems to be in charge of calling this callback via applyBeanPostProcessorsBeforeInitialization() and the list of BeanPostProcessor stored in its beanPostProcessors field where there is a ApplicationContextAwareProcessor.
@snicoll Any idea what could break that on native?

It seems to me that the root issue is here is that auditing listeners are not recognized on native, likely due to missing reflection entries:
✘-INT ~/workspace/spring-native/samples/data-jpa [main ↑·4|✚ 2⚑ 10]
12:52 $ target/data-jpa | grep AuditingListener
^C
✘-INT ~/workspace/spring-native/samples/data-jpa [main ↑·4|✚ 2⚑ 10]
12:53 $ java -DspringAot=true -jar target/data-jpa-0.0.1-SNAPSHOT-exec.jar | grep AuditingListener
2022-02-18 12:53:50.580  INFO 63352 --- [           main] app.main.model.AuditingListener          : Operation performed on Foo[id=0, value='Hello']
2022-02-18 12:53:50.603  INFO 63352 --- [           main] app.main.model.AuditingListener          : Operation performed on Foo[id=1, value='Hello']

@christophstrobl In  data-jpa sample, could you please modifiy verify.sh to make sure we check that logs contain Operation performed messages created by AuditingListener and fix related hints?

When listeners are detected correctly, worth to check that the intial issue (NPE in ApplicationContextAware on `AuditingListener) is fixed as well before closing that issue.

FYI this issue also happens on 0.10.x. I move it to the backlog in order to reflect the fact this should be addressed as part of Spring Boot 3.

@sdeleuze
just wanted to report back, that this is now magically working, without any changes
the major only difference i can found between the last defunct build and the now working build is
that graalvm 22.1 with a new paketo version is beeing used, instead of 22.0 .. which happens automagically
So i can only asume that the change is related to this ...maybe you want to verify with your tests
I only have to get the not directly related "BeanPropertySqlParameterSource" working
But besides this, if you can also verify that it's working now, i think you can close the issue ...
Would only be nice to know what has changed
thx


[Error] Cannot find module 'ts-import-plugin' with 1.6.4

Here is my webpack code
const tsImportPluginFactory = require('ts-import-plugin');

{
  test: /\.tsx?$/,
  loader: 'ts-loader',
  options: {
    getCustomTransformers: () => ({
      before: [
        tsImportPluginFactory([
          {
            libraryName: 'antd',
            libraryDirectory: 'lib',
            style: true,
          },
          {
            libraryName: 'antd-mobile',
            libraryDirectory: 'lib',
            style: true,
          },
        ]),
      ],
    }),
  },
},

when i update to latest version, build failed, and i found the package doesn't have a default index.js file.

Sorry, 1.6.4 missing the index.js file in published files. I depracated this version now.
Please upgrade to 1.6.5 and have a try.

thx


Dynamic Configuration, Template Editing

I am currently working on a Medusa store and one feature I am building out is in-admin email template editing. I've gotten pretty far with my implementation and am at the point now where a user can create templates, edit them, they are synced to postmark, and properly persisted in the database.
The issue I am having is that this plugin cannot be configured dynamically.
I am hoping to essentially allow users to build the templates for the supported events live in their browsers.
If any collaborators on this project were interested, I'd love to get this all figured out then contribute a PR to add template building to the plugin.
Let me know if there is any interest in this line of work.

@thoward27 awesome idea! I really like to help with this.
We could create a new entity to save all the settings and add an extra settings page to edit them.
At the moment we're working on a lightspeed plugin who also does this.

@breakerh I have a PR in progress to start this line of work. The first step I want to take is allowing dynamic configuration of the events object. Unfortunately, I am having a hell of a time getting the medusa-config.js file to import a function I have defined.
If you have any advice I will gladly take it.
My current function definition is

import { IsNull, Not } from "typeorm";
import { dataSource } from "@medusajs/medusa/dist/loaders/database";
import EmailTemplate from "../models/email-template";

export async function getTemplateMappings() {
    const templateRepo = dataSource.getRepository(EmailTemplate);
    const templates = await templateRepo.find({ where: { notification_event: Not(IsNull()) } });
    const mappings = {};
    templates.forEach((template) => {
        const [group, action] = template.notification_event.split(".", 2);
        if (!mappings[group]) {
            mappings[group] = {};
        }
        mappings[group][action] = template;
    });
}

I've tried this style, and the CommonJS style, neither have worked for me.
The imports I have tried have been some variation of
const getTemplateMappings = require("./src/utils/get-template-mappings");

But I have had no luck.
Worst case I think I need to expand the scope of my first PR to include the entity definition. That would allow me to shift the event function into the plugin and setup something like
...
events: "dynamic"

But, I don't like that approach as it would lead to a much larger initial PR....

@thoward27 I could be wrong but why making it this hard?
If we create a simple settings page and save settings to a separate entity all problems are solved, right?
You can collect these settings and don't need to handle any workarounds for the plugin options?

@breakerh this approach sounds good, I even think I can embed the settings into the email template editing flow, if I'm careful. But, for the life of me, I am having a very hard time getting a page to render from the current plugin.
I defined this page
// src/admin/routes/email-templates/page.jsx
import { useAdminCustomQuery } from "medusa-react"
import { Envelope } from "@medusajs/icons"

const EmailTemplates = () => {
    const { data, isLoading } = useAdminCustomQuery(
        "/admin/email-templates",
        ["email-templates"],
        {}
    )

    return (

Email Templates

                Create New Template

            {isLoading && Loading...}
            {data?.templates && !data.templates.length && (
                No Email Templates Found
            )}
            {data?.templates && data.templates?.length > 0 && (

                    {data.templates.map((template) => (

                                <h2 className="text-xl font-bold" id={`template-name-${template.alias}`}>{template.name}

                                <a href={`email-templates/edit/${template.alias}`} aria-labelledby={`template-name-${template.alias}`} className="mt-2 inline-block px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-700">Edit Template

Created: {new Date(template.created_at).toLocaleDateString()}

Last Updated: {new Date(template.updated_at).toLocaleDateString()}

                    ))}

            )}

    )
}

export const config = {
    link: {
        label: "Email Templates",
        icon: Envelope,
    },
}

export default EmailTemplates

I updated the babel config to compile the JSX page
{
  "plugins": [
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-transform-instanceof",
    "@babel/plugin-transform-classes"
  ],
  "presets": ["@babel/preset-env", "@babel/preset-react"],
  "env": {
    "test": {
      "plugins": ["@babel/plugin-transform-runtime"]
    }
  }
}

And, I confirmed the page itself is being generated, I get admin/routes/email-templates/page.js in the root dir after building.
Apologies if I am missing something here, I am a backend dev and sometimes the configuration for FE tooling gets me turned around.
Since this is my first time making a medusa plugin, I am leaning on medusa-plugin-ultimate for inspiration on how to create the pages, since their admin page does show up.

Actually, I think I've got it. Needed to add a call to medusa-admin bundle. That seems to have done the trick for me.

Since this is my first time making a medusa plugin, I am leaning on medusa-plugin-ultimate for inspiration on how to create the pages, since their admin page does show up.

You know that there's quite decent and extensive documentation from MedusaJS itself, right?
https://docs.medusajs.com/

@breakerh yes, I have been referencing the docs a bunch, I find it really helps to see examples though, as they can help me cross bridges. I'm a backend/devops engineer by trade, so a good portion of the tooling here is new for me.


where is rednet50.pth

OSError: /path/to/rednet50.pth is not a checkpoint file

### Could you provide the weights of the RedNet-50 and RedNet-101? Best Regards


Add app Screenshots to Readme

Add app Screenshots to Readme.md
@championswimmer I have created a new directory and moved the screenshots there.
Cheers.

Typo in the folder name :P
On 09-Mar-2016 9:29 pm, "Harshit Dwivedi"<EMAIL_ADDRESS>wrote:

Add app Screenshots to Readme.md
You can view, comment on, or merge this pull request online at:
https://github.com/fossasia/open-event-android/pull/246
Commit Summary

Add app screenshots
Add Screenshots

File Changes

M README.md
https://github.com/fossasia/open-event-android/pull/246/files#diff-0
(4)
A screensots/ss1.PNG
https://github.com/fossasia/open-event-android/pull/246/files#diff-1
(0)
A screensots/ss2.PNG
https://github.com/fossasia/open-event-android/pull/246/files#diff-2
(0)
A screensots/ss3.PNG
https://github.com/fossasia/open-event-android/pull/246/files#diff-3
(0)
A screensots/ss4.PNG
https://github.com/fossasia/open-event-android/pull/246/files#diff-4
(0)

Patch Links:

https://github.com/fossasia/open-event-android/pull/246.patch
https://github.com/fossasia/open-event-android/pull/246.diff

—
Reply to this email directly or view it on GitHub
https://github.com/fossasia/open-event-android/pull/246.

@championswimmer Yeah noticed that and added 2 more commits to fix it.
I guess that I need to stop relying on auto correct. :p

@the-dagger You need to squash the commits and remove the merge commit. Then this shall be go to merge


[PowerOCR] Doesn't correctly recognize small text

Microsoft PowerToys version
Pre release 0.62.0
Running as admin

[ ] Yes

Area(s) with issue?
General
Steps to reproduce

Launch PowerOCR
Try to capture text from desktop icons

✔ Expected Behavior
The text is recognized.
❌ Actual Behavior
The text is not recognized and you get to try again.
Other Software
No response

I think I figured out one part of the problem. This only occurs if the text is small and the selected area is tight i.e. the selected area is only slightly larger than the text's bounding box.

I think I figured out one part of the problem. This only occurs if the text is small and the selected area is tight i.e. the selected area is only slightly larger than the text's bounding box.

I had the same problem on testing.

This appears to be fixed! Let us know if you're still seeing this issue :)


bug: module 'which-key' not found (Lazy.nvim) after registering maps

Did you check docs and existing issues?

[X] I have read all the which-key.nvim docs
[X] I have searched the existing issues of which-key.nvim
[X] I have searched the existing issues of plugins related to this issue

Neovim version (nvim -v)
NVIM v0.9.4 Build type: Release LuaJIT 2.1.1700008891
Operating system/version
MacOS 11.5
Describe the bug
Which Key works fine until i try to register anything, from anywhere.
This will completely stop any plugins from loading and throw the error (full path abbreviated):
Error detected while processing init.lua:
Error while calling lua chunk lua/config/which-key.lua:1 module 'which-key' not found
(Listing all searched files)
stack traceback:
        [C]: in function 'require'
       lua/config/which-key.lua:1: in main chunk
        [C]: in function 'require'
        lua/config/init.lua:19: in main chunk
        [C]: in function 'require'
        init.lua:1: in main chunk

Steps To Reproduce
See under Repro
Expected Behavior
Not throw the error and break any plugins
Repro
Using lazy.nvim i have following relevant files (truncated for legibility)
lua/config/keymaps.lua: `require("config/which-key")`
lua/config/which-key.lua: `local wk = require("which-key")
-- As an example, we will create the following mappings:
--  * <leader>ff find files
--  * <leader>fr show recent files
--  * <leader>fb Foobar
-- we'll document:
--  * <leader>fn new file
--  * <leader>fe edit file
-- and hide <leader>1

wk.register({
  f = {
    name = "file", -- optional group name
    f = { "<cmd>Telescope find_files<cr>", "Find File" }, -- create a binding with label
    r = { "<cmd>Telescope oldfiles<cr>", "Open Recent File", noremap=false, buffer = 123 }, -- additional options for creating the keymap
    n = { "New File" }, -- just a label. don't create any mapping
    e = "Edit File", -- same as above
    ["1"] = "which_key_ignore",  -- special label to hide it in the popup
    b = { function() print("bar") end, "Foobar" } -- you can also pass functions!
  },
}, { prefix = "<leader>" })` (the example from this git)
lua/plugins/which-key.lua: `local wk = require("which-key")
-- As an example, we will create the following mappings:
--  * <leader>ff find files
--  * <leader>fr show recent files
--  * <leader>fb Foobar
-- we'll document:
--  * <leader>fn new file
--  * <leader>fe edit file
-- and hide <leader>1

wk.register({
  f = {
    name = "file", -- optional group name
    f = { "<cmd>Telescope find_files<cr>", "Find File" }, -- create a binding with label
    r = { "<cmd>Telescope oldfiles<cr>", "Open Recent File", noremap=false, buffer = 123 }, -- additional options for creating the keymap
    n = { "New File" }, -- just a label. don't create any mapping
    e = "Edit File", -- same as above
    ["1"] = "which_key_ignore",  -- special label to hide it in the popup
    b = { function() print("bar") end, "Foobar" } -- you can also pass functions!
  },
}, { prefix = "<leader>" })`

Renaming which-key.nvim.lua to which-key.lua helped in my case


Option for passing remote url encoded?

Hey, I know the docs say it isn't supported (https://github.com/willnorris/imageproxy#remote-url) and advise against using query strings in upstream image source urls.

We use imageproxy in order to fetch/resize/cache client images on the fly.
We can't generally tell our clients to change the URL scheme they use for loading images and often on e-commerce sites images are retrieved via query string as opposed to fixed/static-hosting type paths.
We have a CDN sitting in front of an nginx origin server which hosts imageproxy.  On the CDN we turn off caching of unique query strings in order to avoid caching the same static file over and over due to random query string parameters.

the cdn essentially ignores these query parameters on the remote url since the remote url is passed unencoded and so the CDN serves the same image for many different query strings (incorrect in this case).

The simple/clean thing would be to URL encode the upstream/source image url before appending it to our imageproxy url.  This isn't supported today unfortunately.  Perhaps there is a good reason?
This could be done either with a config switch ("always decode 1x") or by having imageproxy just check the url parameter and decode up to 2 times or until substring http:// or https:// is found at index 0 of the url param.  The advantage of the config switch is not changing current behaviour for existing users and potentially letting users avoid the decoding performance penalty if they don't need it.  The non-config/implicit behaviour is interesting because it shouldn't decode unless it doesn't find http:// or https:// at the beginning of the remote url param...in which case I guess imageproxy would error anyway.
Not sure if there are compelling reasons why passing the upstream url encoded isn't supported (since this is documented as the way it works), but hopefully you will consider the change.
Meanwhile I'm trying to just do the url decoding on the nginx side before passing to imageproxy...however this doesn't appear trivial because decoded nginx vars (like $uri$is_args$args are "normalized" which isn't just url decoding...also things like condensing two slashes to one (so https://... becomes https:/... in the $uri var, even when passed to nginx encoded in the first place...and of course imageproxy doesn't like that either (invalid request URL: malformed URL)

Yeah, I'm totally supportive of adding that.  I suspect the performance hit would be negligible, and we might be able to come up with some clever shortcuts to keep the common case faster (e.g. check if raw string before decoding starts with "http", in which case try to use it as-is, etc)

keep the common case faster

Well if the param isn't encoded, we shouldn't decode it as that may decode encoded params within the url and break things.
So the only real performance penalty is the check to see if the url param starts with http:// or https://, not sure the performance hit for regex or substring matching in go.
Pseudocode...
if (param doesn't start with http)
    // definitely not a url, don't bother trying to decode.  error.
while (param doesn't start with 'http://' or 'https://') {
    // if we have tried more than x times to decode, error.
    param = urlDecodeOnce(param);
}
return param

My opinion is that for these special-case url decoding algorithms where we expect a parameter to contain a URL, it is best to check for http:// or https:// at the beginning of the string before attempting to decode.  The :// will be encoded if the parameter is url encoded and so it gives us an easy indicator of whether this is a url and whether it needs decoding.
It is easy to support urls that have been double/triple/etc encoded as well by iterating the decode (up to a limit) and checking to see if we are done before each iteration (we don't want to over-decode because we may decode encoded parameters in the url that will then break the URL).
Checking for just http (or http: or http% or https: or https%) at the beginning of the string can also give a shortcut (to error) if the param doesn't look like a URL...so we don't bother trying to decode.
My go isn't great but I can look into creating a pull request for this at some point if that is interesting for you.

Howdy.  I started looking at what would be involved to make this change.
I was wondering if you could clarify which direction you want to go with DefaultBaseUrl as allowing relative URLs as well as allowing options to be optional seems to add a fair bit of complexity to parsing the URI.
DefaultBaseUrl is documented, so I think it needs to stay because people might be using it.
https://github.com/willnorris/imageproxy#default-base-url
However the relative URL case doesn't appear to be covered in data_test.go.
https://github.com/willnorris/imageproxy/blob/52f43605432ae6ef5ac9578289fcf555ee4f32e4/data_test.go#L114
The comment on NewRequest says url must be absolute
https://github.com/willnorris/imageproxy/blob/7e21abe7d109f3e963b166b449f94f08386150e0/data.go#L323
...but the code currently implements the relative url case
https://github.com/willnorris/imageproxy/blob/7e21abe7d109f3e963b166b449f94f08386150e0/data.go#L355
The only reason this is a problem is because of the following:

options are optional so valid urls can look like:

http://example.com/imageproxy/OPTIONS/http...
http://example.com/imageproxy//http...
http://example.com/imageproxy/http...

url can be relative (ie starting with a /)

http://example.com/imageproxy/OPTIONS//remote/path
http://example.com/imageproxy///remote/path
http://example.com/imageproxy//remote/path

imageproxy parameters are slash separated instead of using some other delimiter that would make the user's intent more obvious (example of what url patterns would look like with semicolon separated params)

http://example.com/imageproxy/OPTIONS;http...
http://example.com/imageproxy/;http...
http://example.com/imageproxy/http...
http://example.com/imageproxy/OPTIONS;/remote/path
http://example.com/imageproxy/;/remote/path
http://example.com/imageproxy//remote/path

this one still might be a problem with slash collapse but could add a special case since this is the only time we would have sequential slashes

If options weren't optional (maybe x as no-op option to avoid the sequential slash problem?) then could just parse to the next slash and then depending on whether we get another slash (relative) or http (absolute) or something else (error) we know how to handle it.
For instance the comment on NewRequest (data.go) says both of the following are valid.
// 	http://localhost//http://example.com/image.jpg
// 	http://localhost/http://example.com/image.jpg

Both of those omit the options however the first one could in some cases be intended as a relative url...ie I might have set a DefaultBaseUrl  := "http://someotherproxy.com/nexturl" and want you to request an image from: http://someotherproxy.com/nexturl/http://example.com/image.jpg.  Perhaps that ambiguity is resolved by always assuming the UPSTREAM url is relative if DefaultBaseUrl is set (ie you can't do both absolute and relative UPSTREAM urls with the same imageproxy daemon config).
I could definitely imagine a case where you want to run all your upstream urls through an additional imageproxy that does some other type of transform (e.g. background replacement) so you might pass absolute URLs to imageproxy but also set DefaultBaseUrl to the additional proxy base url. Not saying this needs to be supported by imageproxy (easy enough to build a 3 URL compound on the client-side)...just saying someone might try it.
This
https://github.com/willnorris/imageproxy/blob/7e21abe7d109f3e963b166b449f94f08386150e0/data.go#L360
is confusing as well because the user doesn't need to provide an absolute remote url...baseURL.ResolveReference(req.URL) just needs to be absolute.
Lots of ways to fix that ambiguity (use different parameter delimiters, require options, etc)...but all of the changes would likely break someone's in-use pattern.  I would argue that if imageproxy wants to accept relative url paths (e.g. /path/to/image in combination with DefaultBaseUrl) that maybe slash-delimited parameters is not the best approach due to the double-slash problem (imageproxy will often be running behind nginx or something else which may collapse double slashes).
So it would be great to get your thoughts on this.  On one hand don't want to break anyone that upgrades imageproxy's currently functioning url patterns.  On the other hand it looks like adding in support for encoded url parameters may add even more edge cases that don't behave as people expect.  It would be nice not to have to rely on trying to decode the remains of the path as a URL to detect whether we are looking at the url parameter yet or not.
First way to solve this
Just stick with the existing logic which depends on whether or not parseUrl returns an error and/or absolute url.
Enhance parseUrl (more compute complexity) which is run twice in the case when options are provided.
Accept the performance hit because maybe it doesn't matter relative to fetching images off disk
Second way to reason this out would be the following:

strip leading slash from path

https://github.com/willnorris/imageproxy/blob/7e21abe7d109f3e963b166b449f94f08386150e0/data.go#L337

if next character is slash

implies no options provided
strip the slash from path
two sequential slashes case - potential problem with some webservers
example: http://localhost/imageproxy//UPSTREAM_URL

else

options present. parse options up to next slash
remove options following slash from path
example: http://localhost/imageproxy/OPTIONS/UPSTREAM_URL

if remaining path (lowercase) starts with "http"

implies absolute url.
run through url decode logic until we get http:// or https:// or give up or error

else if remaining path starts with /

implies relative path
combine with DefaultBaseUrl or error
this is also a two sequential slash case - potential problem with some webservers

http://localhost/imageproxy///relative/path/to/file
http://localhost/imageproxy/OPTIONS//relative/path/to/file

else if remaining path starts with something else

could guess this is a multi-slash problem and try using as relative path (prepend slash before appending to DefaultBaseUrl

The impact of this approach is that it requires the slashes to be there: http://localhost/imageproxy/UPSTREAM_URL would no longer work and this is currently a supported case.  Also any webservers in front of imageproxy that are collapsing multiple sequential slashes before passing the request to imageproxy will cause problems.
A third way
would be to check if DefaultBaseUrl is set and if so, use the current codepath and do not support encoded upstream URLs.  If DefaultBaseUrl not set, implies we shouldn't get any relative URLs, only absolute.  So we can use presence of http as an indicator that we found URL (since http is not a valid start to valid options).

If DefaultBaseUrl not set

strip all leading slashes from path
if remaining path starts with (lowercase) http

implies no options

if options

parse options up to next / and remove options and / from path

if !options || remaining path starts with lowercase http

do url decode logic (see previous case) and try to get image

else error, no url provided.

Else

use current code path
relative remote urls supported
encoded upstream urls not supported

Third way...break current apis
I'm not particularly happy with either of the above options as it seems like they are maybe going in the wrong direction in terms of making behaviour more predictable and robust.
Personally I would prefer less flexibility in how the user's build imageproxy requests (e.g. excluding options) in favor of more predictable behaviour.
The "try to url decode" and if it errors indicates options are present...doesn't really give me a good feeling as the common case (options) has an extra url decode running.  Granted this probably takes no time relative to fetching an image from disk (let alone remote server)...still.
One way would be to no longer allow options to be optional (e.g. always have pattern imageproxy/x/UPSTREAM and then UPSTREAM either starts with / or http).
Another would be to change the delimiter to make it more obvious where parameter boundaries start/end.  Doubleclick/Google uses ; as a parameter delimiter for many URLs especially in cases where urls are passed in urls and not guaranteed to be encoded (problems with dropped query string parameters, etc).  Yahoo used , for years.
Any of these options are likely to break someone who upgrades imageproxy without updating their generated URL formats.
Sorry for writing so much.  What do you think about how to approach this?

Hi @willnorris, happy new year!
As I didn't get any feedback from you in terms of preference on how to approach this I went ahead and did an implementation for option 4.
Happy for feedback if you want to go another way.  I'm not a golang guy so I happy for feedback on that front as well if I missed something.
I didn't bother to open a pull request because I'm not sure what your feeling is on the various approaches outlines above.

Hi @willnorris, happy new year!
As I didn't get any feedback from you in terms of preference on how to approach this I went ahead and did an implementation for option 4.
Happy for feedback if you want to go another way.  I'm not a golang guy so I happy for feedback on that front as well if I missed something.
I didn't bother to open a pull request because I'm not sure what your feeling is on the various approaches outlines above.

Another benefit to supporting url encoding....
The README says:

In order to optimize caching, it is recommended that URLs not contain query strings.

This is due to how webservers/browsers deal with caching when query string is present.
With encoded remote URL support:

if the remote image url contains a query string to retrieve the correct image
if imageproxy has image caching enabled (or webserver in front of imageproxy or CDN in front of webserver in front of imageproxy)
if the remote image url (with query string) is passed to imageproxy encoded...

...then the end-user browser and webserver can optimize caching between them more easily because there will be no query string present on the imageproxy requests (encoded as part of remote url).
So if we can support URL Encoding, then we can update the README to just advise users to url encode remote urls that contain query strings to optimize caching (rather than avoiding them altogether).

Another benefit to supporting url encoding....
The README says:

In order to optimize caching, it is recommended that URLs not contain query strings.

This is due to how webservers/browsers deal with caching when query string is present.
With encoded remote URL support:

if the remote image url contains a query string to retrieve the correct image
if imageproxy has image caching enabled (or webserver in front of imageproxy or CDN in front of webserver in front of imageproxy)
if the remote image url (with query string) is passed to imageproxy encoded...

...then the end-user browser and webserver can optimize caching between them more easily because there will be no query string present on the imageproxy requests (encoded as part of remote url).
So if we can support URL Encoding, then we can update the README to just advise users to url encode remote urls that contain query strings to optimize caching (rather than avoiding them altogether).

Hey @willnorris let me know if I can do anything to make this easier for you time-wise.  I know I wrote a lot of ideas for discussion earlier.  As I have implemented a proposed change, you can ignore the earlier thoughts.
The TLDR of the change I made is:

Options parameter is no longer optional.  You can pass //http... or /x/http... or /0x0/http...  but not /http....
URL encoding of remote urls is now supported (but still optional).
Added more test cases.

Before this change the code would attempt to URL-parse the first param and if that failed then assumed there were options present.  That meant in the common case (options and url present) both the options and url would be attempted to be URL parsed in the logic.  Now we expect parseable options to always be the first parameter.
The fact options were optional was not documented in the README, only in the code...so hoping this isn't a big breaking change for most users.  The fix is just to add an empty/no-op option (// or /x/ or /0x0/).
If you are open to this approach, let me know and I will open a pull request.  Thanks!

I went ahead an opened a PR for this (maybe that is better for you than looking at my fork)...and squeaky wheel gets the grease as they say.  ;)


[Scaffolding] Improve PWA support

Addition of a manifest.json file
Addition of logo, favicon and robots.txt files
Addition of a few extra tags in index.html -> <head>

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

You'll have to change the commit message
git commit --amend

change message to "feat(create): add web app manifest"

This will require a change to building-rollup as well to copy over manifest.json and favicons/imges and stuff as well. We'll have to use rollup-plugin-copy for that, and make sure it runs during the buildStart hook. E.g. something like:
    copy({
        hook: 'buildStart',
        targets: [
          { src: 'path/to/manifest.json', dest: 'dist/' },
        ]
      }),

Im not sure if that technically would be a breaking change 🤔

@thepassle, yes that was my worry, but this could be actually a good thing to add rollup-plugin-copy. Indeed the directory tree of a newly created app could contain a public and an assets folder, these folder could automatically be copied to the dist final folder on build time so that every images, fonts and assets would be copied without any extra tweaking from devs.
What do you think of this?

@thepassle if we don't already copy, how is that a breaking change?

@thepassle if we don't already copy, how is that a breaking change?

I wonder what happens if a user uses our config, extended it to use the copy plugin, and then we add the copy plugin

hmmm yeah I'm not sure what you'd get with multiple copy instances

How about adding a an array/JSON object bar to the base config so that if a user want to add/override the rollup-copy-plugin it can be done.

@thepassle and @bennypowers what did you decided regarding this pending PR?


[Bug] Unusual steps required to run unit tests sans pytest

Expected behavior
TVM unit-test scripts can be directly invoked in a simple manner.  E.g.:
python3 "${TVM_HOME}/tests/python/contrib/test_hexagon/test_2d_physical_buffers.py"
Actual behavior
Some scripts fail when invoked in this manner.  For example:
$ python3.8 tests/python/contrib/test_hexagon/test_2d_physical_buffers.py
Traceback (most recent call last):
  File "tests/python/contrib/test_hexagon/test_2d_physical_buffers.py", line 33, in <module>
    from .infrastructure import allocate_hexagon_array
ImportError: attempted relative import with no known parent package

At least for this particular script, there are two ways to successfully run it:

What TVM CI does:
python3 -m pytest "${TVM_HOME}/tests/python/contrib/test_hexagon/test_2d_physical_buffers.py"

Alternatively:
PYTHONPATH="${TVM_HOME}/tests/python:${PYTHONPATH}" python3 -m contrib.test_hexagon.test_2d_physical_buffers

I think this arises when a test script has both of these features:

It uses relative-import statements, typically to import other Python code from the same directory.  E.g., from . import benchmark_utils
It adheres to the (new?) TVM convention in which unit-test scripts end with the following code:if __name__ == "__main__":
 tvm.testing.main()

rather than the more common:if __name__ == "__main__":
 sys.exit(pytest.main(sys.argv))

Environment
Ubuntu 18.04, Python 3.8, TVM commit d0650bad66d0ff89a01347537021bc442a98c223 .
Steps to reproduce
See above.

CC: @hpanda-naut


Cut new tag

I'm not sure what happened, but it's now impossible to add this module as a dependency to other projects because of a checksum mismatch.
$ go get<EMAIL_ADDRESS>
go: downloading github.com/pavlo-v-chernykh/keystore-go/v4 v4.4.0
go<EMAIL_ADDRESS>verifying module: checksum mismatch
        downloaded: h1:fBO1dUIpQgrrZ7gXJsvDhpNYsfxCuPr6NNtGHiv8FYo=
        sum.golang.org: h1:y9azNmMzvkNBPyczpNRwaV4bm0U6e7Oyrj7gi2/SNFI=

SECURITY ERROR
This download does NOT match the one reported by the checksum server.
The bits may have been replaced on the origin server, or an attacker may
have intercepted the download attempt.

For more information, see 'go help module-auth'.

Maybe I'm missing something? I have seen this happening in other projects when the git history got rewritten after a tag was already published.
I believe cutting a new tag will solve this, although I'm not sure if we also need a new commit, given that v4.4.0 is already pointing to the last commit.
How to reproduce:
mkdir test-keystore-dep
cd test-keystore-dep
go mod init test-keystore-dep
go get<EMAIL_ADDRESS>
Thanks a lot! 🙂

@g-gaston hi. Cannot reproduce the issue on my side. Nevertheless, I cut a new tag v4.4.1. I hope it will help. Have a productive day 😊

Thanks so much!


workflow: migrate from probot/stale to GitHub Actions

Which issue(s) this PR fixes:
Additional fixes for #3159
What this PR does / why we need it:
It seems that probot/stale does not work as we want recently.
There are some unresolved issues about unavailability.
ref.

https://github.com/probot/stale/issues/261
https://github.com/probot/stale/issues/278
https://github.com/probot/stale/issues/286
https://github.com/probot/stale/issues/300
https://github.com/probot/stale/issues/306
https://github.com/probot/stale/issues/307
https://github.com/probot/stale/issues/308

Docs Changes:
No need to change.
Release Note:
No need to change.

I'm waiting for a while whether probot/stale works.

@repeatedly
Is there any blocker about this PR?


nextpnr doesn't need -nocarry in synth script

nextpnr has stable carry support now, no need to include the -nocarry any more.
Also, looks like the VPR synth script runs ABC twice which may give better results than arachne or nextpnr's scripts which only run ABC once. This should probably be using synth_ice40 -vpr instead.

Good to know. Maybe ideally we'd have a global carry flag that would default to true so there is still an option to compare.
re: VPR, I was told there was possibly some issue with "synth_ice40 -vpr". I mostly followed what symbilflow-arch-defs was doing and was unclear if the issue had been resolved. I'll try this out soon and see if I run into any snags.
I agree that it would be best to have an apples-to-apples comparison. However, if we think running abc multiple times possibly gives better performance, we should also have an issue to explore this.

FYI - https://github.com/SymbiFlow/fpga-tool-perf/issues/8

Fixed 8, default is now to carry


Display LoD2 data in FE

Description
Depends on
#161

Acceptance criteria

Display 3d LoD2 model
Keeping performance in mind

Definition of done (DoD)

Added only after week 5
The same for all features
Here goes the project specific part

DoD general criteria

Feature has been fully implemented
Feature has been merged into the mainline
All acceptance criteria were met
Product owner approved features
All tests are passing
Developers agreed to release

Performance wise, displaying lod2 data in FE is not feasible. See #78


fix(proxy-chat): handle undefined emote properties to prevent crashes

Got proxy-chat.js:63 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'name') today. It broke the script, so I came up with a potential fix.
Resolved a TypeError occurring when the emote object from the 7TV API contains undefined or unexpected properties.

Added checks to ensure emote and its nested properties (name, data.host.files) are defined before accessing them.
Implemented fallback logic to avoid crashes caused by incomplete emote data.
Included error logging for invalid or malformed emote objects to aid debugging.

Hi, thanks for the contribution! Could you please give me name of the channel that causes the issue for you? I'd like to check the API response and why it doesn't have required fields.

I encountered it on zackrawrr channel

Thanks! Seems that emote doesn't have files at all
"host": {
    "url": "",
    "files": []
}

I'll merge this PR but will add some changes and format the code properly.
Again, thanks for the contribution! I'll release the fix today

FYI both Chrome and Firefox updates are released


Blog post: Long-term Support for Nostr Developers

To be reviewed.
Build preview:

/blog/nostr-lts-long-term-support-for-nostr-developers

Social preview:

Header image looks dope.
No issues found.
All the links work and point to the right place.
Article is straight forward about our intentions as an Org for this nostr fund.

@Arvin21M Man you're fast ;)


Is multiple values / datasources confirmed working?

Hi,
First: Awesome work getting a native entry-point for CollectD!
I'm trying to connect my collectd setup to my InfluxDB test environment, and things seems to be working somewhat.  Anyway, let me know if you need more info and I'll be happy to provide you with it.

influxdb v0.8.8 handles multiple values correctly and v0.9.0 stores everything as tags.


python3Packages.mrsqm: init at 0.0.4

Description of changes
Adding one of the requirements needed for https://github.com/NixOS/nixpkgs/issues/247089 . I want to separate mindsdb requirements initialization into separate PRs bacause adding it to nixpkgs requires more than 15 new packages. I believe this way it would be easier to review.

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 255532 on x86_64-linux:
2 packages built:
python310Packages.mrsqm python311Packages.mrsqm

@GrahamcOfBorg build python310Packages.mrsqm python311Packages.mrsqm

@GrahamcOfBorg build python310Packages.mrsqm python311Packages.mrsqm

@GrahamcOfBorg build python310Packages.mrsqm python311Packages.mrsqm

There was some unexpected error in previous build, reruning

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

2 packages failed to build:

python310Packages.mrsqm
python310Packages.mrsqm.dist

2 packages built:

python311Packages.mrsqm
python311Packages.mrsqm.dist

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

4 packages built:

python310Packages.mrsqm
python310Packages.mrsqm.dist
python311Packages.mrsqm
python311Packages.mrsqm.dist


Changed all references to pulsar-edit.com

Correct version of this one: https://github.com/atom/settings-view/pull/1220

We're on .dev now.

This was merged hours before that decision was finalized, and the discussion had barely come up.... At least with this one we can find-replace all the references unlike before.

This was merged hours before that decision was finalized, and the discussion had barely come up.... At least with this one we can find-replace all the references unlike before.

Like simple pulsar-edit.com to pulsar-edit.dev. I'll make a PR after my short vscode.dev experience...


Send captions of "document" attachments to Whatsapp rooms

Describe the bug
Captions of "document" attachments are not send to Whatsapp rooms. Only the file attachment is sent.
To Reproduce
Send a file containing both a video and text to a Telegram room that is bridged with a WA room
Expected behavior
Both text and video should appear in the Whatsapp room
Screenshots/debug logs
If applicable, add screenshots to help explain your problem.
Use logs from running matterbridge -debug if possible.
Environment (please complete the following information):

OS: linux

Matterbridge version:  1.25.3-dev

If self compiled: output of git rev-parse HEAD While I have built my matterbridge myself per these instructions, I cannot find any relevant git repository from my system.

Additional context
Image captions are sent just fine.
This file apparently has specific code to handle captions for "image" messages, but not for "document" messages.

https://github.com/42wim/matterbridge/pull/1652 A similar issue was fixed last year but for Discord instead of Whatsapp.

Fixed by your own PR :)